Ir para conteúdo
  • 0

(resolvido) Falar ao conjurar magia


diarmaint

Pergunta

Galera, meu servidor não fala o nome da magia quando uso ela, ele não pega o instant name do spells.xml..

estava observando que dentro de uma magia aqui, tenho uma função que aparece uma frase quando fala a magia,

 

 


function hats(cid)
if getPlayerLookDir(cid) == 1 then   
                
doCombat(cid, combat1, numberToVariant(cid))
doCombat(cid, combat10, numberToVariant(cid))
doCombat(cid, combat100, numberToVariant(cid))
doPlayerSay(cid, 'teste1', TALKTYPE_ORANGE_1) 

elseif getPlayerLookDir(cid) == 2 then   
               
         doCombat(cid, combat4, numberToVariant(cid))
doCombat(cid, combat40, numberToVariant(cid))
doCombat(cid, combat400, numberToVariant(cid))
doPlayerSay(cid, 'teste2!', TALKTYPE_ORANGE_1) 

elseif getPlayerLookDir(cid) == 3 then   
                 
         doCombat(cid, combat2, numberToVariant(cid))
doCombat(cid, combat20, numberToVariant(cid))
doCombat(cid, combat200, numberToVariant(cid))
doPlayerSay(cid, 'teste3!', TALKTYPE_ORANGE_1) 

elseif getPlayerLookDir(cid) == 0 then   
                 
         doCombat(cid, combat3, numberToVariant(cid))
doCombat(cid, combat30, numberToVariant(cid))
doCombat(cid, combat300, numberToVariant(cid))
  doPlayerSay(cid, 'teste3!', TALKTYPE_ORANGE_1) 
      end
end
 

 

porém essa função só tem em magia wave, e nela pra cada lado dá pra configurar uma fala diferente, quero colocar isso em poder que seja target

então tentei colocar parte dela depois do ultimo onCastSpell

ficando assim

 

function onCastSpell(cid, var)
doPlayerSay(cid, 'teste1!', TALKTYPE_ORANGE_1) 
local waittime = 7 -- Tempo de exhaustion
local storage = 115818
if exhaustion.check(cid, storage) then
doPlayerSendTextMessage(cid, 23, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")
return false
end

até aí dá certo, quando uso a magia ele fala  "teste1!" só que a magia em exhaust continua falando se eu apertar o botão pra soltar ela, tem como colocar essa função pra que o personagem só fale "teste1" quando eu realmente solte a magia?

 

EDIT------

Acho que consegui aqui galera, depois de muitas tentativas,

Antes do ultimo function onCastSpell(cid, var)

Eu adicionei um novo evento só com a função da fala

 function dmark(cid)   doPlayerSay(cid, 'fala...!', TALKTYPE_ORANGE_1)          end

e antes do ultimo 

return true OU return doCombat

addEvent(dmark,0,cid)

Exemplo de spell target.

 

 



local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 131)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 6)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -5.5, 0, -5.6, 0)

local condition = createConditionObject(CONDITION_PARALYZE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 3000)
setConditionParam(condition, CONDITION_PARAM_SPEED, -200)
setConditionFormula(condition, -1.9, 0, -1.9, 0)
setCombatCondition(combat, condition)

 

 function dmark(cid)
   doPlayerSay(cid, 'Dynamic Marking!', TALKTYPE_ORANGE_1) 
      end

 

 function onCastSpell(cid, var)
 local waittime = 3 -- Tempo de exhaustion
local storage = 115824
if exhaustion.check(cid, storage) then
doPlayerSendTextMessage(cid, 23, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")
return false
end


 exhaustion.set(cid, storage, waittime)
     addEvent(dmark,0,cid)
return doCombat(cid, combat, var)

end

 

Não sei se é a forma mais certa de fazer (Se alguém souber uma maneira mais fácil de fazer isso ajuda aí) isso, não ta dando nenhum problema na distro, tirando o trabalho que é adicionar cada event diferente em cada spell se não a fala se repete.

 

 

 

 

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

4 respostass a esta questão

Posts Recomendados

  • 0
function onCastSpell(cid, var)  local waittime = 7 -- Tempo de exhaustion  local storage = 115818  if exhaustion.check(cid, storage) then  	doPlayerSendTextMessage(cid, 23, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")  return true  end  doPlayerSay(cid, 'Tsuuga!', TALKTYPE_ORANGE_1)return true end

Tenta usar assim

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

  • 0
2 horas atrás, diarmaint disse:

Galera, meu servidor não fala o nome da magia quando uso ela, ele não pega o instant name do spells.xml..

estava observando que dentro de uma magia aqui, tenho uma função que aparece uma frase quando fala a magia,

  Mostrar conteúdo oculto

 

 

function hats(cid)

if getPlayerLookDir(cid) == 1 then   

                

doCombat(cid, combat1, numberToVariant(cid))

doCombat(cid, combat10, numberToVariant(cid))

doCombat(cid, combat100, numberToVariant(cid))

doPlayerSay(cid, 'teste1', TALKTYPE_ORANGE_1) 

 

elseif getPlayerLookDir(cid) == 2 then   

               

         doCombat(cid, combat4, numberToVariant(cid))

doCombat(cid, combat40, numberToVariant(cid))

doCombat(cid, combat400, numberToVariant(cid))

doPlayerSay(cid, 'teste2!', TALKTYPE_ORANGE_1) 

 

elseif getPlayerLookDir(cid) == 3 then   

                 

         doCombat(cid, combat2, numberToVariant(cid))

doCombat(cid, combat20, numberToVariant(cid))

doCombat(cid, combat200, numberToVariant(cid))

doPlayerSay(cid, 'teste3!', TALKTYPE_ORANGE_1) 

 

elseif getPlayerLookDir(cid) == 0 then   

                 

         doCombat(cid, combat3, numberToVariant(cid))

doCombat(cid, combat30, numberToVariant(cid))

doCombat(cid, combat300, numberToVariant(cid))

  doPlayerSay(cid, 'teste3!', TALKTYPE_ORANGE_1) 

      end

end

 

 

porém essa função só tem em magia wave, e nela pra cada lado dá pra configurar uma fala diferente, quero colocar isso em poder que seja target

então tentei colocar parte dela depois do ultimo onCastSpell

ficando assim

  Ocultar conteúdo

 

até aí dá certo, quando uso a magia ele fala  "teste1!" só que a magia em exhaust continua falando se eu apertar o botão pra soltar ela, tem como colocar essa função pra que o personagem só fale "teste1" quando eu realmente solte a magia?

 

 

tente assim

function onCastSpell(cid, var)doPlayerSay(cid, 'Tsuuga!', TALKTYPE_ORANGE_1) local waittime = 7 -- Tempo de exhaustionlocal storage = 115818if exhaustion.check(cid, storage) thendoPlayerSendTextMessage(cid, 23, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")return trueend

 

Link para o comentário
Compartilhar em outros sites

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