Postado Março 15, 2020 5 anos TFS 0.3.6 Estou tentando fazer com que uma spell tenha mais de 1 hit local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_HITCOLOR, COLOR_TEAL) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 263) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 104) function onGetFormulaValues(cid, level, maglevel) min = -((level*12) + (maglevel*60)) max = -((level*12) + (maglevel*60)) return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end tentei usar o addevent de outra spell mas sem sucesso: for k = 1, 10 do addEvent(function() if isCreature(cid) then addEvent(onCastSpell1, 1, parameters) end end, 1 + ((k-1) * 225)) end Segue a spell de exemplo com vários hits Spoiler local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_PINK) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 29) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 65) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -35.0, 0, -35.5, 0) local function onCastSpell1(parameters) 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) * 225)) end return true end
Postado Março 15, 2020 5 anos Solução Eu tentei assim e funcionou aqui com a mesma versão do TFS. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_HITCOLOR, COLOR_TEAL) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 263) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 104) arr1 = { {3} } local area1 = createCombatArea(arr1) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat, parameters.var) end function onGetFormulaValues(cid, level, maglevel) min = -((level*12) + (maglevel*60)) max = -((level*12) + (maglevel*60)) return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 1000, parameters) -- tempo em segundos para castar a proximo Hit 1000 = 1sg addEvent(onCastSpell1, 2000, parameters) -- se voce quiser mais Hits você copia essa parte e cola em baixo addEvent(onCastSpell1, 200, parameters) -- e se voce quiser Hits mais rápidos é só diminuir ao seu gosto xD eu recomendo colocar interval de 200 - 300 segundos para aparecer o Hit no monstro ou criatura return doCombat(cid, combat, var) end Editado Março 15, 2020 5 anos por ASSAFSAF (veja o histórico de edições)
Postado Março 15, 2020 5 anos Autor Muito obrigado, funcionou perfeitamente da forma como eu queria. Só não entendi o por quê de sairem 4 hits mesmo só tendo 3 eventos setados, mas de forma alguma isso é um problema.
Postado Março 15, 2020 5 anos @narutomaniacos, é essa parte que tá dando o hit "desconhecido": return doCombat(cid, combat, var) se quiser que dê apenas os hits por addEvent, troque por return true ? ➥ Regras | Seções OTServ | Seções BOT
Postado Março 22, 2020 5 anos Autor Muito obrigado, fiz inclusive alterações no script para o effect ir na coordenada certa. tópico resolvido Citar local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 62) function rk1(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y+1, z=getThingPosition(getCreatureTarget(cid)).z} doSendMagicEffect(position1, 36) end end local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat, parameters.var) end function onGetFormulaValues(cid, level, maglevel) min = -((level*11) + (maglevel*49)) max = -((level*12) + (maglevel*51)) return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 0, parameters) addEvent(onCastSpell1, 300, parameters) -- tempo em segundos para castar a proximo Hit 1000 = 1sg addEvent(onCastSpell1, 600, parameters) -- se voce quiser mais Hits você copia essa parte e cola em baixo addEvent(onCastSpell1, 900, parameters) -- e se voce quiser Hits mais rápidos é só diminuir ao seu gosto xD eu recomendo colocar interval de 200 - 300 segundos para aparecer o Hit no monstro ou criatura addEvent(onCastSpell1, 1200, parameters) addEvent(onCastSpell1, 1500, parameters) addEvent(onCastSpell1, 1800, parameters) addEvent(onCastSpell1, 2100, parameters) addEvent(onCastSpell1, 2400, parameters) addEvent(onCastSpell1, 2700, parameters) for i = 1, 10 do addEvent(function() if isCreature(cid) then addEvent(rk1,1,cid) end end, 1 + ((i-1) * 300)) end return true end
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.