Ir para conteúdo
  • 0

Ajuda Com Reflect System


sickk

Pergunta

Olá,

preciso de ajuda com o Reflect System feito pelo Aluccard

Gostaria de saber como usa-lo, já adicionei o reflectsystem.xml na pasta mods do servidor e depois disso como ativo pra refletir ne tal item ?? To precisando muito dele porque no meu servidor com o attribute de reflectpercentall ta bugando!! toda vez que o dano é feito pelo mapa o servidor trava.

Obrigado

 

Reflect System by Aluccard

 

 

 

Reflect System[0.1]

 

Função

 

 

Ao ser obtido um item que possua o atributo Reflect o player será capaz de refletir danos Fisicos e Mágicos ao mesmo tempo. A idéia geral desse script é bem simples mesmo. Quando o player receber um damage de uma criatura (monstro ou player) esse attack será refletido em uma certa porcentagem.

 

Exemplo:

 

22:46 You see a golden amulet. It weighs 8.30 oz. [Reflect: 80%]

 

Obs¹: Os items pode ser acumulativo. Ou seja, se o amuleto der 10% de reflect e o ring der 35%. O player possuirá um Reflect = 45%.

 

 

[MOD]reflectSystem.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<mod name="Reflect System" version="0.1" author="Aluccard" contact="" enabled="yes">

<description>

Script que funciona para refletir danos para as creatures que o atacar.

</description>

 

<event type="login" name="regReflectDamage" event="script"><![CDATA[

function onLogin(cid)

registerCreatureEvent(cid,"ReflectDamage")

return true

end

]]></event>

 

<event type="statschange" name="ReflectDamage" event="script"><![CDATA[

 

local slotPos = {CONST_SLOT_NECKLACE, CONST_SLOT_FEET, CONST_SLOT_RING}

 

function onStatsChange(cid, attacker, type, combat, value)

local reflectPercent = 0

local dmg = value

local playerPos = getCreaturePosition(cid)

local attackerPos = getCreaturePosition(attacker)

 

for i = 1, #slotPos do

if getPlayerSlotItem(cid, slotPos).uid > 1 then

if getItemReflectPercent(getPlayerSlotItem(cid, slotPos).uid) then

reflectPercent = reflectPercent + getItemReflectPercent(getPlayerSlotItem(cid, slotPos).uid)

end

end

end

 

if reflectPercent > 0 then

dmg = math.ceil(-value*((100-reflectPercent)/100))

if (dmg < 0) then

doCreatureAddHealth(cid, dmg)

doSendAnimatedText(playerPos, -dmg, COLOR_RED)

doSendMagicEffect(playerPos, 0)

else

doSendMagicEffect(playerPos, 3)

end

 

dmg = math.ceil(-value*(reflectPercent/100))

if (dmg < 0) then

doCreatureAddHealth(attacker, dmg)

doSendAnimatedText(attackerPos, -dmg, COLOR_RED)

doSendDistanceShoot(playerPos, attackerPos, CONST_ANI_SMALLHOLY)

end

else

return true

end

end]]></event>

</mod>

 

 

Obs²: O código está meio enferrujado, mas funciona. Como podes ver o sistema está na versão 0.1 e irá ser atualizada com o tempo.

 

 

ReflectLib.lua

 

function getItemReflectPercent(itemuid)

return getItemAttribute(itemuid, "reflectPercent")

end

function doPlayerAddReflectedItem(cid, itemid, percent)

local item = doPlayerAddItem(cid, itemid)

doItemSetAttribute(item, "description", "[Reflect: "..percent.."%]")

doItemSetAttribute(item, "reflectPercent", percent)

end

 

 

Obs³: Para adicionarmos novos items com o atributo Reflect usamos o comando doPlayerAddReflectedItem(cid,itemid,percent).

 

{itemid = id do item escolhido / percent = porcentagem do reflect}

 

Editado por sickk
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...