Ir para conteúdo

Featured Replies

Postado

Bom dia, estou criando um OT a partir de uma database bem limpa. 

 

Ao começar a usar scripts para a criação de spells, ja tive um problema com essa spell:

 

Spoiler

local cura = getPlayerMagLevel(cid)
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)
setHealingFormula(combat, COMBAT_FORMULA_DAMAGE, cura, 0, cura, 0)

function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end

 

O erro que aparece na distro é esse: 

 

Citar

[Error - Spell Interface]

data/spells/scripts/healing/light healing.lua

Description:

<luaGetPlayerMagLevel> Player not found

 

Imaginei que a causa do erro fosse a ausencia da função no 050 - functions.lua, entretanto, ao substituir o arquivo pelo mesmo, só q de uma datapack que eu ja tinha usado a função getPlayerMagLevel sem problemas, o erro persistiu.

 

Conto com a ajuda de vocês

 

 

 

Edit: Tentei mudar a função getPlayerMagLevel por getPlayerlevel, e o erro na distro foi:

Citar

[Error - Spell Interface]

data/spells/scripts/healing/light healing.lua

Description:

<internalGetPlayerInfo> Player not found when requested info #3

 

Editado por Hoad (veja o histórico de edições)

Postado

Vamos ler a descrição do erro e tentar entender oque ela significa:
 

Description:

<luaGetPlayerMagLevel> Player not found


ao usar a função getPlayerMagLevel ele não encontrou o player que vc tá tentando fazer a checagem. Ok, mas por que isso ocorre?
Bom, você colocou lá em cima:

local cura = getPlayerMagLevel(cid)

Mas oque é esse cid aí? De onde ele vem?

Parece que achamos o problema... vc tá tentando puxar o ml de algo que não está definido ainda.
"Mas Lobo, cid é o player que executa a spell, certo?"
SIM, mas só dentro do escopo da spell.


Acompanhe:

 

Spoiler

-- local cura = getPlayerMagLevel(cid) -- isso daqui não existe.
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)
setHealingFormula(combat, COMBAT_FORMULA_DAMAGE, cura, 0, cura, 0)


--- escopo da spell
function onCastSpell(cid, var) -- a partir daqui vc pode usar o cid pois ele é um dos parametros
    return doCombat(cid, combat, var)
 --- aqui vc não pode mais usar o cid
end

 

Pra você fazer uma spell que recupera dependendo do ml vc precisa fazer um callback nessa spell.. segue esse tutorial aqui

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado
  • Autor

Obrigado por responder.

Então, depois de ler e pesquisar mais um pouco sobre, refiz a spell e assim ficou:

 

Citar

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)

function onGetFormulaValues(cid, level, maglevel)
    min = (level * 1 + maglevel * 1)
    max = (level * 1 + maglevel * 1) + 10
return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, “onGetFormulaValues”)

function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end

 

 

E agora foi certinho <3<3 

Obrigado mais uma vez NW C:

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo