Postado Fevereiro 4, 2017 8 anos Distro: The OTX Server Version: (2.52 - 1557) - Codename: (Necron) - 8.60 Então galera, estou tendo problema com essa spell. estou querendo que ela retorne um valor aleatório entre 20 e 70, mas todas as tentativas que fiz utilizando o math.random foram sem sucessos, sempre retornava um valor fixo, vou postar a spell completa, com um valor fixo mesmo. A spell funciona assim, o monstro lança um attack que reduz o ml do player em x%. Spoiler local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS,10000) setConditionParam(condition,CONDITION_PARAM_STAT_MAGICLEVELPERCENT, 30) setCombatCondition(combat, condition) local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_SUBID, 2) setConditionParam(exhaust, CONDITION_PARAM_TICKS, 10000) setCombatCondition(combat, exhaust) local area = createCombatArea(AREA_CIRCLE2X2) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end enfim, tentei criar uma variavel e atribuir com um math.random(20,70) e dps utilizar a variavel no lugar do 30 e sempre retornou um valor fixo. #2 - Outro problema que estou tendo com essa spell é o seguinte, se o target está sob o efeito da mesma, e ele utiliza utito tempo, ou utito tempo san o efeito que causava a redução do ml é cancelado, e o personagem ganha o bonus normal da spell (blood rage / sharpshooter) . essa parte local exhaust, foi uma das minhas tentativas para tentar por um exaust nas magias de suporte, preferível se bloquiasse apenas utito tempo e utito tempo san. OBS: ja testei com a linha setConditionParam(condition, CONDITION_PARAM_BUFF, true), mas a única diferença foi que informava no inventário, que o personagem estava com BUFF, mas o mesmo pode ser "sobreposto" . OBS²: Se a spell sair com um valor aleatório ja está bom, é um começo ! Editado Fevereiro 4, 2017 8 anos por Nandozeraah (veja o histórico de edições)
Postado Fevereiro 4, 2017 8 anos Solução Da uma testada aí local combats, conditions = {}, {} for i=20,70 do combats[i] = createCombatObject() setCombatParam(combats[i], COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT) setCombatParam(combats[i], COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) end for i=20,70 do conditions[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditions[i], CONDITION_PARAM_TICKS,10000) setConditionParam(conditions[i],CONDITION_PARAM_STAT_MAGICLEVELPERCENT, i) setCombatCondition(combats[i], conditions[i]) end local area = createCombatArea(AREA_CIRCLE2X2) setCombatArea(combats[i], area) function onCastSpell(cid, var) local random = math.random(20,70) return doCombat(cid, combats[random], var) end
Postado Fevereiro 4, 2017 8 anos Autor Muito obrigado @Zanrix, funcionou. único detalhe é que o efeito de área não saiu, ela foi direta ao target. Mas mesmo assim, obrigado ! @EDIT > [4/2/2017 18:38:27] (LuaInterface::luaSetCombatArea) Combat not found não estava sendo possível setar a área do attack, então trouxe o LOCAL AREA para o 1° end e funcionou. agora a spell sai com a área desejada. local combats, conditions = {}, {} local area = createCombatArea(AREA_CIRCLE2X2) for i=20,70 do combats[i] = createCombatObject() setCombatParam(combats[i], COMBAT_PARAM_EFFECT,CONST_ME_ENERGYHIT) setCombatParam(combats[i], COMBAT_PARAM_DISTANCEEFFECT,CONST_ANI_ENERGY) setCombatArea(combats[i], area) end for i=20,70 do conditions[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditions[i], CONDITION_PARAM_TICKS,10000) setConditionParam(conditions[i],CONDITION_PARAM_STAT_MAGICLEVELPERCENT, i) setCombatCondition(combats[i], conditions[i]) end function onCastSpell(cid, var) local random = math.random(20,70) return doCombat(cid, combats[random], var) end Editado Fevereiro 4, 2017 8 anos por Nandozeraah (veja o histórico de edições)
Postado Fevereiro 4, 2017 8 anos 4 horas atrás, Zanrix disse: Da uma testada aí local combats, conditions = {}, {} for i=20,70 do combats[i] = createCombatObject() setCombatParam(combats[i], COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT) setCombatParam(combats[i], COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) end for i=20,70 do conditions[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditions[i], CONDITION_PARAM_TICKS,10000) setConditionParam(conditions[i],CONDITION_PARAM_STAT_MAGICLEVELPERCENT, i) setCombatCondition(combats[i], conditions[i]) end local area = createCombatArea(AREA_CIRCLE2X2) setCombatArea(combats[i], area) function onCastSpell(cid, var) local random = math.random(20,70) return doCombat(cid, combats[random], var) end Ainda acho que um math.random() seria melhor, não? Um loop como este, não vejo como boa ideia... Me corrija se estiver errado. @This life is filled with hurt When happiness doesn't work Trust me and take my hand When the lights go out you will understand
Postado Fevereiro 4, 2017 8 anos Autor @ login12, não posso discutir sobre a performance do códico, importante que funcionou... Por acaso vocês sabem, se seria possível verificar por lua, se o personagem esta sobre o efeito de buff ? pois andei pensando e acho que é a maneira mais fácil para as magias (blood rage \ sharpshooter) não sobressairem nesta spell acima seria algo do tipo: IFNOT BUFF THEN código [Blood Rage / Sharpshooter] 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.