Postado Janeiro 26, 2022 3 anos Estava procurando um script e achei o script do usuario @KotZletY no tópico linkado abaixo E ao tentar adicionar em uma magia do meu servidor, ela da erro, ela diz que realmente precisa do item e quando você coloca, ele não funciona. segue a spell testada: script.lua function onGetFormulaValues(cid, level, maglevel) local levelTotal = level local min = (levelTotal * 4) / 5 + (maglevel * 25) / 2 local max = (levelTotal * 5) / 5 + (maglevel * 27) / 2 return -min, -max end local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 33) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local function onCastSpell1(parameters) if not isPlayer(parameters.cid) then return true end doCombat(parameters.cid, parameters.combat1, parameters.var) end function onCastSpell(cid, var) local parameters = {cid = cid, var = var, combat1 = combat1} for k = 1, 10 do addEvent(function() if isCreature(cid) then addEvent(onCastSpell1, 1, parameters) end end, 1 + ((k-1) * 300)) end return true end spells.xml <instant name="Super Hell Granade" words="super hell granade" needtarget="1" direction="1" lvl="200" maglv="60" mana="7000" soul="0" exhaustion="1000" prem="0" enabled="1" event="script" value="super hell granade.lua"><vocation id="0"/> <vocation id="235"/> <vocation id="240"/> <vocation id="241"/> <vocation id="477"/> </instant> Gostaria que me explicassem exatamente o que fizeram no script, para que eu possa aprender! ♥ @Vodkart @So volto tarde Editado Janeiro 26, 2022 3 anos por jholzera (veja o histórico de edições)
Postado Janeiro 27, 2022 3 anos Precisa fazer a verificação se o jogador possui tal item, para isso, basta utilizar a função getPlayerItemCount(cid, itemid) function onGetFormulaValues(cid, level, maglevel) local levelTotal = level local min = (levelTotal * 4) / 5 + (maglevel * 25) / 2 local max = (levelTotal * 5) / 5 + (maglevel * 27) / 2 return -min, -max end local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 33) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local function onCastSpell1(parameters) if not isPlayer(parameters.cid) then return true end doCombat(parameters.cid, parameters.combat1, parameters.var) end local config = { requiredItem = {itemid = 2675, count = 1} -- Coloque o id do item necessário em: 'itemid = aqui', e a quantidade necessária do item em: 'count = aqui' } function onCastSpell(cid, var) local parameters = {cid = cid, var = var, combat1 = combat1} local itemName = getItemNameById(config.requiredItem.itemid) if getPlayerItemCount(cid, config.requiredItem.itemid) < config.requiredItem.count then if config.requiredItem.count == 1 then doPlayerSendCancel(cid, string.format("You need %d %s to use this spell.", config.requiredItem.count, itemName)) else doPlayerSendCancel(cid, string.format("You need %d %ss to use this spell.", config.requiredItem.count, itemName)) end return end for k = 1, 10 do addEvent(function() if isCreature(cid) then addEvent(onCastSpell1, 1, parameters) end end, 1 + ((k-1) * 300)) end return true end
Postado Janeiro 27, 2022 3 anos Autor @Kyle Bellini O sript funcionou perfeitamente, mas estou com duvidas, tentei adicionar nesse script abaixo, mas da erro nas funções anteriores, conseguiria adicionar e me explicar detalhadamente a onde você adicionou a função e a onde finalizou elas? function onCastSpell(cid, var) ppos = getPlayerPosition(cid) if isPlayer(cid) then if getPlayerMana(cid) > 10 then doPlayerAddSpentMana(cid, getPlayerMana(cid)) doPlayerAddMana(cid,-getPlayerMana(cid)) doSendMagicEffect(ppos,58) return true end end end alterações que fiz e os erros na distro [Error - LuaInterface::loadFile] data/spells/scripts/power down.lua:23: 'end' expected (to close 'function' at line 1) near '<eof>' [Error - Event::checkScript] Cannot load script (data/spells/scripts/power down.lua) data/spells/scripts/power down.lua:23: 'end' expected (to close 'function' at line 1) near '<eof>' >>> Loading custommonsters.xml ... (done). >>> Loading customspells.xml ... (done). >>> Loading firstitems.xml ... (done). >>> Loading guildWarSystem.xml ... (done). >>> Loading highscorebook.xml ... (done). >>> Loading Ultimate Survival.xml ... (done). >>> (0) mods were disabled. [Error - LuaInterface::loadFile] data/spells/scripts/power down.lua:23: 'end' expected (to close 'function' at line 12) near '<eof>' [Error - Event::checkScript] Cannot load script (data/spells/scripts/power down.lua) data/spells/scripts/power down.lua:23: 'end' expected (to close 'function' at line 12) near '<eof>' >>> Loading custommonsters.xml ... (done). >>> Loading customspells.xml ... (done). >>> Loading firstitems.xml ... (done). >>> Loading guildWarSystem.xml ... (done). >>> Loading highscorebook.xml ... (done). >>> Loading Ultimate Survival.xml ... (done). >>> (0) mods were disabled. [Error - LuaInterface::loadFile] data/spells/scripts/power down.lua:9: 'end' expected (to close 'if' at line 4) near 'function' [Error - Event::checkScript] Cannot load script (data/spells/scripts/power down.lua) data/spells/scripts/power down.lua:9: 'end' expected (to close 'if' at line 4) near 'function' Editado Janeiro 27, 2022 3 anos por jholzera (veja o histórico de edições)
Postado Janeiro 27, 2022 3 anos Envia aqui quais foram as alterações que você fez, que fica melhor de explicar/ver o que errou no script
Postado Janeiro 27, 2022 3 anos Autor Em 27/01/2022 em 19:34, Kyle Bellini disse: Envia aqui quais foram as alterações que você fez, que fica melhor de explicar/ver o que errou no script foi apesar instrudução do código, alguns testes foram: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, 30000) setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 10) setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, 25) setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, 25) setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, 25) setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, 25) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, 25) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setCombatCondition(combat, condition) local config = { requiredItem = {itemid = 2675, count = 1} -- Coloque o id do item necessário em: 'itemid = aqui', e a quantidade necessária do item em: 'count = aqui' } function onCastSpell(cid, var) local parameters = {cid = cid, var = var, combat1 = combat1} local itemName = getItemNameById(config.requiredItem.itemid) if getPlayerItemCount(cid, config.requiredItem.itemid) < config.requiredItem.count then if config.requiredItem.count == 1 then doPlayerSendCancel(cid, string.format("You need %d %s to use this spell.", config.requiredItem.count, itemName)) else doPlayerSendCancel(cid, string.format("You need %d %ss to use this spell.", config.requiredItem.count, itemName)) end return end function onCastSpell(cid, var) if exhaustion.check(cid, 13101) == TRUE then doPlayerSendCancel(cid, "Podera usar novamente dentro de 30 segundos.") doSendMagicEffect(getCreaturePosition(cid), 2) return false end for k = 1, 100 do addEvent(function() if isCreature(cid) then local pos1 = {x = getPlayerPosition(cid).x + 0, y = getPlayerPosition(cid).y + 0, z = getPlayerPosition(cid).z} doSendMagicEffect(pos1, 112) end end, 1 + ((k-1) * 300)) end exhaustion.set(cid, 13101, 30.0) return doCombat(cid, combat, var) end provavelmente estrou introduzindo a função no local errado ou não fechando as funções com os ends, consegue me explicar de forma detalhada de como introduzir a função sem estragar o que está ativo? consegue me explicar quais ends e return devem ser utilizados para fechar as funções? Editado Janeiro 28, 2022 3 anos por What Member (veja o histórico de edições)
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.