Ir para conteúdo
  • 0

(resolvido) remover speed de criatura e depois retornar


nbb147

Pergunta

E ai galera, esses dias eu estava tentando fazer um script que o pessoal procura muito que é o famoso sistema de saga, que consiste no seguinte, o player só pode atacar e ser atacado por uma devida criatura se possuir certa storage caso contrario a criatura não ira se mover, bom, consegui fazer quase tudo em lua, só que existe um pequeno problema, que é o seguinte, esse problema está na parte que retorna a speed da criatura, a speed não retorna, tudo funciona corretamente exceto essa parte, peça a ajuda de vocês e agradeço desde já, script:

local name, storage = 'fire devil', 11112local sto = 800000local speedchange = 0function onAttack(cid, target)if isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) < 0 thensetPlayerStorageValue(cid, sto, getCreatureSpeed(cid))doChangeSpeed(cid, -getCreatureSpeed(cid))doChangeSpeed(cid, speedchange)return falseendif isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) > 1 then -- O ERRO PERTENCE A ESSA PARTEdoChangeSpeed(cid, -getCreatureSpeed(cid))local oldspeed = getPlayerStorageValue(cid, sto) == -1 and getCreatureBaseSpeed(cid) or getPlayerStorageValue(cid, sto)doChangeSpeed(cid, oldspeed)return false -- O PROBLEMA ESTA AQUIendreturn trueendfunction onCombat(cid, target)if isPlayer(cid) and getCreatureStorage(cid, storage) < 0 and isMonster(target) and getCreatureName(target):lower() == name thendoPlayerSendCancel(cid, 'You cannot attack this monster.')return falseend if isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) < 0 thenreturn falseendreturn trueendfunction onKill(cid, target, lastHit)if isMonster(target) and getCreatureName(target):lower() == name and isPlayer(cid) and getCreatureStorage(cid, storage) > 0 thendoCreatureSetStorage(cid, storage, -1)endreturn trueend

 

Editado por nbb147
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Sim. Eu preciso saber qual o valor que ele recebe.

Ainda estou querendo saber desse retornar nada, getstore tem que retornar algum valor.

Link para o comentário
Compartilhar em outros sites

  • 0

ops, observação essa explicação que dei foi sobre a sto que ganha na missão e não a que muda a velocidade, pelo que parece ela retorna -1 pelo teste em que você pediu pra fazer ; O

isso ta muito confuso

Link para o comentário
Compartilhar em outros sites

  • 0

Ora se voce marcou outro valor na chave, nao deveria retornar -1, deveria retornar o valor marcado.

Verifique se nao tem algo errado.

Link para o comentário
Compartilhar em outros sites

  • 0

testei com o personagem que pertence a storage 11112 e olha o que deu o.O

 

[02/08/2016 12:53:34] 11112 > 299

 

e o personagem que não possui essa storage não aparece nada.

 

 

 

testei a outra storage(800000) e o personagem que possui a storage 11112 deu nisso:

 

[02/08/2016 12:58:15] 800000 > -1

 

eu desloguei e entrei no que não tinha a storage 11112 testei e em seguida entrei no outro que possui, e veio isso:

 

[02/08/2016 12:59:39] 800000 > 300

 

repeti o processo deslogando e logando no char de novo e a sto foi para 299:

 

[02/08/2016 13:02:33] 800000 > 299

 

repeti novamente o processo e mudou novamente:

 

 [02/08/2016 13:03:18] 800000 > 599

 

no caso mudou, como assim? tem algo errado quando adc a velocidade e à tira, "olokomeu naum to entendendu" kkkk

 

 

 

e o personagem que não possui a storage 11112, simplesmente não apareceu nada.

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Hoje a noite, quando eu chegar em casa, eu vou por esse seu sistema em meu servidor de teste e vou analisa-lo por completo e tentarei resolver esse problema.

Possivelmente amanha eu te dou um paecer sobre o mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0

Testei em meu servidor e esta funcionando.

Citar

local name, storage = 'fire devil', 11112 

function onAttack(cid, target) 
   if(isMonster(cid) and getCreatureName(cid):lower() == name)then 
      if(isPlayer(target) and getCreatureStorage(target, storage) < 0)then 
         doCreatureSetNoMove(cid, true) -- deixa o monstro imovel. 
         return false 
      elseif(isPlayer(target) and getCreatureStorage(target, storage) > 0)then 
         doCreatureSetNoMove(cid, false) 
      end 
   end 
   return true 
end 

function onCombat(cid, target) 
   if isPlayer(cid) and getCreatureStorage(cid, storage) < 0 and isMonster(target) and getCreatureName(target):lower() == name then 
      return false 
   elseif isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) < 0 then 
      return false 
   end 
   return true 
end 

function onKill(cid, target, lastHit) 
   if isMonster(target) and getCreatureName(target):lower() == name and isPlayer(cid) and getCreatureStorage(cid, storage) > 0 then 
      doCreatureSetStorage(cid, storage, -1) 
   end 
   return true 
end 
 

 

Obs: se o monstro nao ficar parado usando a funcao setnomove, use a funcao changespeed para deixa-lo parado.

Link para o comentário
Compartilhar em outros sites

  • 0

o monstro não ficou parado nem com setnomove e nem com speedchange, quando alterei coloquei como speedchange fiz igual o setnomove colocando o (cid, true) e tal, nossa ai funcionou e aqui não, o que pode ser isso?

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...