1
[Tutorial] Dodge System Version Sevu Jue Mar 16, 2017 10:31 am
Invitado

Invitado
Primero que nada crearemos la dodge stone:
Agregaremos esto a data/actions/actions.xml
- Código:
<action itemid="8298" script="dodge stone.lua" />
Luego crearemos un script vacio en data/actions/scripts/ llamado dodge system.lua
Donde van a pegar lo siguiente:
- Código:
local configuracion = {
dodge_chance = 100, -- default 100% ( recomendado 100% ) probabilidad de que no falle
dodge_limite = 100, -- default 100% ( recomendado 100% ) 100 = 50
dodge_storage = 25250 -- default 25250
}
local function storageMenor(self)
local current = 0
if self:getStorageValue(configuracion.dodge_storage) < 0 then
self:setStorageValue(configuracion.dodge_storage, 0)
end
current = self:getStorageValue(configuracion.dodge_storage)
return current
end
function onUse(player, item, fromPos, target, toPos, isHotkey)
if not target:isPlayer() then
player:sendCancelMessage('Este objeto solo puede ser usado por personajes.')
player:getPosition():sendMagicEffect(CONST_ME_POFF)
return false
else
if (math.random(100) <= configuracion.dodge_chance) then
local dodge_current = target:getStorageValue(configuracion.dodge_storage)
if dodge_current < configuracion.dodge_limite then
dodge_current = (storageMenor(target) + 1)
target:setStorageValue(configuracion.dodge_storage, dodge_current)
target:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Has mejorado el Dodge Skill [ ' .. dodge_current .. ' / ' .. configuracion.dodge_limite .. ' ]')
target:getPosition():sendMagicEffect(CONST_ME_FIREWORK_RED)
else
player:sendCancelMessage('Este personaje ya tiene el Dodge Skill al maximo [ ' .. configuracion.dodge_limite .. ' ]')
target:getPosition():sendMagicEffect(CONST_ME_POFF)
end else
player:sendCancelMessage('Ha fallado la mejora del Skill.')
target:getPosition():sendMagicEffect(CONST_ME_POFF)
end end
return true
end
Listo guardan los cambios y ahora vamos a data/creaturescripts/creaturescripts.xml y pegamos lo siguiente:
- Código:
<event type="healthchange" name="DodgeSystem" script="dodge system.lua" />
Ahora vamos a data/creaturescripts/scripts/ y creamos un script vacio llamado dodge system.lua
Y pegamos lo siguiente dentro de el:
- Código:
-- SRH Momentum (Sevu)
local configuracion = {
proteccion = 0, -- deafault 0% to 1% ( recomendado 0 )
dodge_chance = 0, -- default chance 0% to 100% ( recomendado 0 )
dodge_storage = 25250, -- default storage 25250 ( recomendado cualquiera no repetido )
dodge_say = 'DODGE!', -- default 'DODGE!' recomendado ( 'DODGE!' )
dodge_effect = CONST_ME_POFF
}
function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
if creature:isPlayer() then
if primaryDamage > 0 then
local chance = (configuracion.dodge_chance + (creature:getStorageValue(configuracion.dodge_storage) / 2))
if chance < 0 then chance = 0 end
if (math.random(100) < chance) then
primaryDamage = (primaryDamage * configuracion.proteccion)
creature:say(configuracion.dodge_say, TALKTYPE_MONSTER_SAY)
creature:getPosition():sendMagicEffect(configuracion.dodge_effect)
end end end
return primaryDamage, primaryType, secondaryDamage, secondaryType
end
Ahora por ultimo pero no menos importante: Vamos a data/creaturescripts/login.lua y pegaremos esto:
- Código:
player:registerEvent("DodgeSystem")
Bueno chicos eso seria todo, si notan algo extraño en el script me lo hacen saber en los comentarios o si creen que algo le falta tambien, dejare unas imagenes sobre como se ve funcionando.
![[Tutorial] Dodge System Version Sevu Ighkb4](https://2img.net/h/oi63.tinypic.com/ighkb4.jpg)