Douglasga03 0 Postado Outubro 30 Share Postado Outubro 30 Preciso fazer uma magia que ao ser usada faz com que a spear que o player estiver usando ricocheteie em mais dois alvos. Pode ser um script de arma ou uma magia que da essa propriedade. Link para o comentário Compartilhar em outros sites More sharing options...
0 El Rusher 37 Postado Outubro 31 Share Postado Outubro 31 local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) -- Tipo de dano físico para simular spear combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) -- Efeito visual combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SPEAR) -- Animação da spear arremessada -- Configurações de ricochete local bounceCount = 2 -- Número de ricochetes local bounceRange = 5 -- Alcance de cada ricochete function onCastSpell(creature, var) local target = creature:getTarget() -- Obtém o alvo principal if not target or target:getHealth() <= 0 then creature:sendCancelMessage("Você precisa de um alvo válido para essa magia!") return false end -- Confirma que o jogador está usando uma spear local weapon = creature:getSlotItem(CONST_SLOT_LEFT) if not weapon or weapon:getType():getName():lower() ~= "spear" then creature:sendCancelMessage("Você precisa estar usando uma spear para lançar esta magia.") return false end -- Aplica dano no alvo principal combat:execute(creature, var) -- Função para encontrar alvos adicionais para o ricochete local function getNearbyTarget(currentTarget, excludeList) local spectators = Game.getSpectators(currentTarget:getPosition(), false, true, bounceRange, bounceRange, bounceRange, bounceRange) for _, spectator in ipairs(spectators) do if spectator:isMonster() and spectator ~= currentTarget and not excludeList[spectator:getId()] then return spectator end end return nil end -- Aplica ricochete nos alvos próximos local ricochetTarget = target local excludeList = {[target:getId()] = true} for i = 1, bounceCount do ricochetTarget = getNearbyTarget(ricochetTarget, excludeList) if not ricochetTarget then break end -- Para o ricochete se não houver alvo próximo -- Atualiza a variável de alvo para o próximo ricochete local bounceVar = Position(ricochetTarget:getPosition()) combat:execute(creature, Variant(bounceVar)) -- Adiciona o alvo à lista de excluídos para não ser alvo novamente excludeList[ricochetTarget:getId()] = true end return true end Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglasga03 0 Postado ontem às 20:57 Autor Share Postado ontem às 20:57 Em 31/10/2024 em 10:08, El Rusher disse: local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) -- Tipo de dano físico para simular spear combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) -- Efeito visual combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SPEAR) -- Animação da spear arremessada -- Configurações de ricochete local bounceCount = 2 -- Número de ricochetes local bounceRange = 5 -- Alcance de cada ricochete function onCastSpell(creature, var) local target = creature:getTarget() -- Obtém o alvo principal if not target or target:getHealth() <= 0 then creature:sendCancelMessage("Você precisa de um alvo válido para essa magia!") return false end -- Confirma que o jogador está usando uma spear local weapon = creature:getSlotItem(CONST_SLOT_LEFT) if not weapon or weapon:getType():getName():lower() ~= "spear" then creature:sendCancelMessage("Você precisa estar usando uma spear para lançar esta magia.") return false end -- Aplica dano no alvo principal combat:execute(creature, var) -- Função para encontrar alvos adicionais para o ricochete local function getNearbyTarget(currentTarget, excludeList) local spectators = Game.getSpectators(currentTarget:getPosition(), false, true, bounceRange, bounceRange, bounceRange, bounceRange) for _, spectator in ipairs(spectators) do if spectator:isMonster() and spectator ~= currentTarget and not excludeList[spectator:getId()] then return spectator end end return nil end -- Aplica ricochete nos alvos próximos local ricochetTarget = target local excludeList = {[target:getId()] = true} for i = 1, bounceCount do ricochetTarget = getNearbyTarget(ricochetTarget, excludeList) if not ricochetTarget then break end -- Para o ricochete se não houver alvo próximo -- Atualiza a variável de alvo para o próximo ricochete local bounceVar = Position(ricochetTarget:getPosition()) combat:execute(creature, Variant(bounceVar)) -- Adiciona o alvo à lista de excluídos para não ser alvo novamente excludeList[ricochetTarget:getId()] = true end return true end Esse script foi testado? Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Douglasga03 0
Preciso fazer uma magia que ao ser usada faz com que a spear que o player estiver usando ricocheteie em mais dois alvos. Pode ser um script de arma ou uma magia que da essa propriedade.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados