Introdução
Este script consiste em defender uma porcentagem dos ataques recebidos de acordo com o dodge level.
Exemplo: Suponhamos que o player tenha Dodge Skill 100 e a porcentagem de defesa esteja configurado para defender 50%, o player terá 30% de chance de defender 50% dos ataques recebidos.
Instalação
O conteúdo da lib serve para o Dodge e Critical System, se você já fez este procedimento no outro script simplesmente ignore e vá para o próximo passo.
Em data/lib/core/core.lua adicione o seguinte conteúdo em qualquer parte:
dofile('data/lib/core/dclib.lua')Ainda em data/lib/core/core crie um arquivo chamado dclib.lua com o seguinte conteúdo:
-- Configuração DODGE = { STORAGE = 48900, -- player storage do sistema LEVEL_MAX = 100, -- máximo de dodge level que o player pode alcançar PERCENT = 0.5 -- porcentagem que irá defender o ataque [padrão 50% = 0.5] } CRITICAL = { STORAGE = 48901, -- player storage do sistema LEVEL_MAX = 100, -- máximo de critical level que o player pode alcançar PERCENT = 0.5 -- porcentagem que irá aumentar o ataque [padrão 50% = 0.5] } function Player.getDodgeLevel(self) return self:getStorageValue(DODGE.STORAGE) end function Player.setDodgeLevel(self, value) return self:setStorageValue(DODGE.STORAGE, value) end function Player.getCriticalLevel(self) return self:getStorageValue(CRITICAL.STORAGE) end function Player.setCriticalLevel(self, value) return self:setStorageValue(CRITICAL.STORAGE, value) end
Agora em data/actions/actions.xml adicione a seguinte tag:
<action itemid="18413" script="other/dodge.lua"/>Depois em data/actions/scripts/other crie um arquivo chamado dodge.lua com o seguinte conteúdo:
function onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getDodgeLevel() < DODGE.LEVEL_MAX then item:remove(1) player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) player:setDodgeLevel(player:getDodgeLevel() + 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você aumentou sua skill de dodge para [" .. player:getDodgeLevel() .. "/" .. DODGE.LEVEL_MAX .. "].") elseif player:getDodgeLevel() >= DODGE.LEVEL_MAX then player:sendTextMessage(MESSAGE_STATUS_WARNING, "Você alcancou o máximo de seu DODGE Skill.\nParabéns!!!!") return false end return true end
Pronto, já configuramos o item para atribuir o Dodge Skill, vamos configurar a parte dos ataques recebidos.
Vá em data/creaturescripts/creaturescripts.xml e adicione a seguinte tag:
<event type="healthchange" name="DodgeSystem" script="dodgeSystem.lua"/>Agora em data/creaturescripts/scripts crie um arquivo chamado dodgeSystem.lua com o seguinte conteúdo:
function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) if not isPlayer(creature) then return false end if (creature:getDodgeLevel() * 3) >= math.random (0, 1000) and isCreature(attacker) then if isInArray({ORIGIN_MELEE, ORIGIN_RANGED, ORIGIN_SPELL}, origin) and primaryType ~= COMBAT_HEALING then primaryDamage = primaryDamage - math.ceil(primaryDamage * DODGE.PERCENT) creature:say("DODGE!", TALKTYPE_MONSTER_SAY) creature:getPosition():sendMagicEffect(CONST_ME_BLOCKHIT) end end return primaryDamage, primaryType, secondaryDamage, secondaryType end
Ainda em data/creaturescripts/scripts abra o arquivo login.lua e
Antes de:
return trueAdicione:
player:registerEvent("DodgeSystem") -- Dodge System if player:getDodgeLevel() == -1 then player:setDodgeLevel(0) endO sistema está finalizado, agora vamos criar as talkactions para que os players acompanhem seu skill.
Em data/talkactions/talkactions.xml adicione a tag:
<talkaction words="!dodge" script="dodge.lua"/>E para finalizar, em data/talkactions/scripts crie um arquivo chamado dodge.lua com o seguinte conteúdo:
function onSay(player, words, param) local skill = player:getDodgeLevel() local message = "DODGE SYSTEM\nO sistema consiste em defender % dos ataques recebidos.\n\nPor Exemplo:\nCada pedra utilizada atribui 0,3% a mais de chance.\nCom 10 pedras, voce tera 3% de chance de defender 50% dos ataques recebidos.\nCom 100 pedras (maximo), voce tera 30% de chance de defender 50% dos ataques recebidos.\nCada pedra que voce usar, sua skill de dodge aumenta em 1 ponto.\n\nPara obter a pedra, voce pode comprar no NPC Hyperion, localizado no templo.\nOu atraves de nosso WebShop.\n------------------\nDodge Skill: [" .. skill .. "/100]" doPlayerPopupFYI(player, message) end
Bom é isso ai!