Ir para conteúdo
  • Cadastre-se

Obter nome da magia utilizada no onCastSpell


Posts Recomendados

Olá amigos, boa noite!

Estou com uma pequena duvida, gostaria de saber se tem como eu obter o nome da magia que acabou de ser utilizada na função onCastSpell, no caso no script da propria spell. Vou tentar explicar melhor:
 

--Esse é o script da magia intense healing.
--O que eu preciso é basicamente que ela retorne o nome da magia que acabou de ser usado, ou seja o nome intense healing.
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 5, 6)

--local nome

function onCastSpell(cid, var)
--nome = função que retorna o nome dessa habilidade.
    return doCombat(cid, combat, var)
--doCreatureSay(cid, "Voce usou "..nome.."!")
--O output seria: Você usou Intense Healing!
end

Consegui ser claro? Existe algum modo de fazer isso sem editar as sources? Não teria problemas ele me retornar a palavra de conjuração da spell no caso(exura gran). Pra mim tanto faz.
Muito obrigado!
Abraços.

Link para o post
Compartilhar em outros sites

Não entendi muito bem...

Quando o player usa um spell, ele já fala normalmente... Saindo no default ou só em laranja, em cima do char, dependendo de como configurou seu server.
O que mais você quer?

Link para o post
Compartilhar em outros sites

Não entendi muito bem...

Quando o player usa um spell, ele já fala normalmente... Saindo no default ou só em laranja, em cima do char, dependendo de como configurou seu server.

O que mais você quer?

Olá,

Eu entendo. Eu quero ter acesso ao nome daquela Spell no script para desenvolver um sistema usando isso, o exemplo que dei foi generico. Não é para essa finalidade.

Obrigado pela atenção.

Abraços.

Link para o post
Compartilhar em outros sites
  • Moderador

Você quer que apareça pra todos os players ou só pra quem usou?

 

 

 


Acho que agora entendi o que você quer... é uma função que já te fale o nome do spell sem você precisar escrever manualmente o nome em cada um... é isso?

Se for, não existe...

Link para o post
Compartilhar em outros sites

Olá.
Certo, acho que vocês não estão entendendo o que eu quero. Eu sei que todos os players verão a mensagem que eu soltei uma magia. Mas a ideia não é essa. O que eu quero é OBTER o nome dessa magia atras do script dessa mesma magia.
Eu não quero exibir o nome da magia para o player por que isso ja acontece, eu quero ter o nome da magia DISPONÍVEL para eu utilizar no script.
Exemplo:
O player soltar uma magia mandar para todos que o player usou aquela magia(Broadcast). Mas sem ser predefinido o nome da magia.
Consegui explicar? 
Obrigado.

Link para o post
Compartilhar em outros sites

Olá.

Certo, acho que vocês não estão entendendo o que eu quero. Eu sei que todos os players verão a mensagem que eu soltei uma magia. Mas a ideia não é essa. O que eu quero é OBTER o nome dessa magia atras do script dessa mesma magia.

Eu não quero exibir o nome da magia para o player por que isso ja acontece, eu quero ter o nome da magia DISPONÍVEL para eu utilizar no script.

Exemplo:

O player soltar uma magia mandar para todos que o player usou aquela magia(Broadcast). Mas sem ser predefinido o nome da magia.

Consegui explicar? 

Obrigado.

Você dizer logo a sua ideia fica mais fácil... não precisa ficar escondendo o jogo! 

Como eu disse, não existe uma function que faça isso, então você vai ter que entrar em cada spell, criar uma variavel com o nome dela e depois usar como quiser... com um broadcast ou creaturesay... como quiser.

Outra opção seria criar constantes, exemplo:

SPELLNAME_EXURA = "Light Healing"

SPELLNAME_EXURA_GRAN = "Intense Healing"

Link para o post
Compartilhar em outros sites

Você dizer logo a sua ideia fica mais fácil... não precisa ficar escondendo o jogo! 

Como eu disse, não existe uma function que faça isso, então você vai ter que entrar em cada spell, criar uma variavel com o nome dela e depois usar como quiser... com um broadcast ou creaturesay... como quiser.

Outra opção seria criar constantes, exemplo:

SPELLNAME_EXURA = "Light Healing"

SPELLNAME_EXURA_GRAN = "Intense Healing"

Olá,

A ideia é justamente essa. Ao usar uma magia mandar o broadcast para todos. Porem só seriam de magias especificas, que estariam em uma table global. Ao usar uma magia, seria verificado se o nome da magia utilizada estaria nessa table, se sim, seria mandado o broadcast. Sei que tem como fazer esse script da forma como falou, fazendo pré-configurado. Porem eu estou fazendo isso para testar e aprender se há essa possibilidade ou não.

A ideia é: Obter o nome da magia que acabou de ser utilizada usando apenas os parâmetros que a função onCastSpell me da.

Não é passado nenhum paramento nessa função que diga alguma informação sobre a spell?

Obrigado, abraços.

Link para o post
Compartilhar em outros sites

Eu acho que não existe parâmetro não, mas você pode tentar usar words e name no onCastSpell...

tipo assim:

 

onCastSpell(cid, var, words, name)

 

e depois mandar o broadcast desses parametros pra ver se sai alguma coisa... mas não acredito que vá funcionar.

 

Outra ideia seria um código pra tentar ler o nome do arquivo.lua... tipo do exura, é light healing.lua... 
Mas também não sei se dá pra fazer isso em linguagem lua... tenta aí uma dessas opções.

Link para o post
Compartilhar em outros sites

Eu acho que não existe parâmetro não, mas você pode tentar usar words e name no onCastSpell...

tipo assim:

 

onCastSpell(cid, var, words, name)

 

e depois mandar o broadcast desses parametros pra ver se sai alguma coisa... mas não acredito que vá funcionar.

 

Outra ideia seria um código pra tentar ler o nome do arquivo.lua... tipo do exura, é light healing.lua... 

Mas também não sei se dá pra fazer isso em linguagem lua... tenta aí uma dessas opções.

Olá,

A minha função não retorna esses dois parâmetros. Verifiquei junto as sources também que o retorno somente é: (cid e var). Quais as informações contidas nesse parâmetro var? Saberia me informar? Alguma outra ideia de como obter o nome da spells?

Obrigado.

Link para o post
Compartilhar em outros sites
  • Moderador

Da pra fazer o seu personagem falar Intense Healing quando castar exura gran, isso vale para todas as magia castar o nome da spell verdadeira.

Va no seu config.lua e procure por.

 
spellNameInsteadOfWords = false
emoteSpells = false

troque por

spellNameInsteadOfWords = true
emoteSpells = true
Editado por Mago Math (veja o histórico de edições)

function onLove()
if getPlayerTrueLove(girlfriend) then
doPlayerBeHappy(cid, true)
doRemoveVirginity(cid, true)
else
doSendCancel(cid,"you do not know how good it feels to be loved")
end end

;)

 

Link para o post
Compartilhar em outros sites

O parametro, em alguns spells, é o que voce escreve depois da palavra de conjurar, por exemplo, exura sio "fulano... no var vem as informações sobre o fulano...

Link para o post
Compartilhar em outros sites

Da pra fazer o seu personagem falar Intense Healing quando castar exura gran, isso vale para todas as magia castar o nome da spell verdadeira.

Va no seu config.lua e procure por.

 

spellNameInsteadOfWords = false
emoteSpells = false

troque por

spellNameInsteadOfWords = true
emoteSpells = true
Olá,

Não é isso que eu desejo. Eu quero ter o nome da spell no script! Essa de exibir foi só um exemplo.

O parametro, em alguns spells, é o que voce escreve depois da palavra de conjurar, por exemplo, exura sio "fulano... no var vem as informações sobre o fulano...

Oi,

Entendi, então não teria essa informação que eu queria... Verei a possibilidade de incluir nas sources já que PARECE que não tem... Obrigado.

Link para o post
Compartilhar em outros sites

Mano, tem uma função que pode ser útil pra você...

getPlayerInstantSpellInfo(cid, i)

onde o i seria o número do spell, começando do 1...

 

Se você conseguir o número de cada spell (deve ser pela ordem que ele aparece no spells.xml), acho que você consegue exibir o nome fazendo assim...

 

spell = getPlayerInstantSpellInfo(cid, i)  -- Substituindo o i pelo número do spell.

 

Isso vai criar um array com várias informações sobre aquele spell...

Aí é só dar um CreatureSay com o que você quer:  spell.name, spell.words,  spell.level,  spell.mana... etc

 

no spell.name é exatamente o nome do spell...

 

Espero que funcione.

Abs

Link para o post
Compartilhar em outros sites

Mano, tem uma função que pode ser útil pra você...

getPlayerInstantSpellInfo(cid, i)

onde o i seria o número do spell, começando do 1...

 

Se você conseguir o número de cada spell (deve ser pela ordem que ele aparece no spells.xml), acho que você consegue exibir o nome fazendo assim...

 

spell = getPlayerInstantSpellInfo(cid, i)  -- Substituindo o i pelo número do spell.

 

Isso vai criar um array com várias informações sobre aquele spell...

Aí é só dar um CreatureSay com o que você quer:  spell.name, spell.words,  spell.level,  spell.mana... etc

 

no spell.name é exatamente o nome do spell...

 

Espero que funcione.

Abs

Olá,

Excelente, mas ainda assim ficaria sem saber como obter o numero daquela spell que foi passada. No onCastSpell não retorna nenhuma informação sobre a spell, ai fica MUITO dificil. Acredito que deverei modificar essa função nas sources para funcionar como o parametro WORDS da função onSay das Talkactions.

Obrigado,

Abraços.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo