Ir para conteúdo
  • 0

Função Que Executa Ao Atacar.


othereality

Pergunta

Eu queria fazer uma magia que executasse quando o player da um hit no inimigo.

Por exemplo o exori mort, o player usa a magia e o próximo hit dele vai dar um dano extra igual ao dano que seria o exori mort.

É exatamente igual as outras magias mas ao envés de executar quando o player fala a magia ia ser no próximo ataque do player.

 

Será que é possível fazer isso?

Agradeço quem poder me ajudar.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

eu tentei com onAttack(cid, target)

eu tentei fazer tipo uma passiva, sempre que o player desse um ataque dava um dano extra em holy, mas não deu mto certo, ele não espera atacar msm é só estar com o target no bixo que o efeito já vai.

 

e com function onCombat(cid, target) eu não tentei..

 

to tentando ajeitar a do onAttack, e vou tentar fazer com onCombat aqui agora.

Link para o comentário
Compartilhar em outros sites

  • 0

eu tentei fazer tipo uma passiva, sempre que o player desse um ataque dava um dano extra em holy, mas não deu mto certo, ele não espera atacar msm é só estar com o target no bixo que o efeito já vai.

 

então só usar 'onStatsChange' velho rs

Link para o comentário
Compartilhar em outros sites

  • 0

Da uma olhada eu levei anos pra fazer essa porcaria funcionar:

 

 

function onAttack(cid, target)
       local i = 1
       local damageMin = (getPlayerLevel(cid) * 2)
       local damageMax = (getPlayerLevel(cid) * 3)

       function doAttack()
               if (getPlayerStorageValue(cid, 23194) == 1) then
                       doTargetCombatHealth(cid, target, COMBAT_HOLYDAMAGE, -damageMin, -damageMax, CONST_ME_HOLYDAMAGE)
               end
               exhaustion.set(cid, 23195, 1)
       end

 if exhaustion.check(cid, 23195) == FALSE then
 addEvent(doAttack, 50, 1)
       end
       return true
end

 

"Eu fiz" esse creaturescript e lá na spell eu só adc ao player a storage, só que esse é infinito, não tem tempo de duração. O efeito para, quando o player usa uma outra magia que tira o storage e adc um que vai executar outro creaturescript que cura ao envés de dar um dano extra a cada hit.

 

Só que o efeito ta executando quando eu seleciono o target e não quando eu dou o hit mesmo.

 

Se falou pra usar "onStatsChange", mas eu não sei como ele funciona '-'

Link para o comentário
Compartilhar em outros sites

  • 0

+ou- isso

 

function onStatsChange(cid, attacker, type, combat, value)
local damageMin = (getPlayerLevel(cid) * 2)
local damageMax = (getPlayerLevel(cid) * 3)
if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then    
if getPlayerStorageValue(cid, 23194) == 1 then
doTargetCombatHealth(cid, attacker, COMBAT_HOLYDAMAGE, -damageMin, -damageMax, CONST_ME_HOLYDAMAGE)
end
return true
end
return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

Ahhh saquei! perfeito.

Obrigado.

 

EDIT:

 

Eu tentei usar exatamente como vc fez vodkart, mas não deu nenhum erro nem funcionou.. não sei o que pode ser.. :(

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

  • 0

Consegui(com a ajuda do vodkart e do Eskylo). Pra quem estiver querendo ta ai:

 

 



function onStatsChange(cid, attacker, type, combat, value)
   if type == STATSCHANGE_HEALTHLOSS then
           if isPlayer(attacker) then
                   if getPlayerStorageValue(attacker, 23194) > 0 then
                             setPlayerStorageValue(attacker, 23194, 0)
                             local damageMin = (getPlayerLevel(attacker) * 2)
                             local damageMax = (getPlayerLevel(attacker) * 3)
                             doTargetCombatHealth(attacker, cid, COMBAT_HOLYDAMAGE, -damageMin, -damageMax, CONST_ME_HOLYDAMAGE)
                             setPlayerStorageValue(attacker, 23194, 1)
                   end
           end
   end
return 1
end

function onCombat(cid, target)
   if isPlayer(cid) then
       registerCreatureEvent(target, "healthLevel7")
   end
return 1
end

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

  • 0

tinha que registra no onCombat, tinha esquecido de te avisar rsrsrsrs, desculpa.

 

Mas que bom que sua dúvida tenha sido retirada e obrigado por compartilhar seu script com os demais usuários

 

vlw

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...