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 ficava, eu tbm não entendi, funcionou no seu e no meu n ;s

tipo no seu servidor ficou como? quando chegava um personagem com a storage ele corria atrás e quando chegava um sem storage ele paralizava? ocorria tudo normalmente?

Link para o comentário
Compartilhar em outros sites

  • 0

Essas duas funcoes no meu servidor nao funcionam com monstros, apenas em players.

Mas como voce tinha dito anteriormente, que a funçao speedchange funcionava em monstros, entao pedi para ser feita apenas a mudança da funcao que postei -caso nao funcione- para a funcao speedchange que funciona em seu servidor.

 

 

Meu servidor é um tfs 0.3.6

Link para o comentário
Compartilhar em outros sites

  • 0

perdão por demorar tanto a dar uma resposta, deixa pra lá isso, pelo visto não rola fazer essa parada, talvez um dia eu consiga de uma outra maneira, muito obrigado por insistir tanto em ajudar e por transmitir conhecimento, rep+ 

Link para o comentário
Compartilhar em outros sites

  • 0

@nbb147

Eu estava tentando implementar esse sistema em meu ot e fiquei pu** por nao conseguir manter o monstro parado, entao percebi que a função speedchange modifica a velocidade acescentando valores positivo ou negativamente.

 

Entao consegui fazer com que o monstro fique parado.

Citar

local name, storage = 'dragon lord', 11112 

function onAttack(cid, target) 
   if(isMonster(cid) and getCreatureName(cid):lower() == name)then 
      if(isPlayer(target) and getCreatureStorage(target, storage) < 0)then 
         doChangeSpeed(cid, -getCreatureSpeed(cid)) 
         return false 
      elseif(isPlayer(target) and getCreatureStorage(target, storage) > 0)then 
         if(getCreatureBaseSpeed(cid) > getCreatureSpeed(cid))then 
            doChangeSpeed(cid,getCreatureBaseSpeed(cid)) 
         end 
      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 
 

 

Link para o comentário
Compartilhar em outros sites

  • 0

sim cara a velocidade ficava negativa quando o char ñ tinha a sto, e quando o char tinha a sto a velocidade ficava positiva, dois meses depois entro aqui e vejo isso, realmente deu certo ehue valeu, rep+   sz

Link para o comentário
Compartilhar em outros sites

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