Pesquisar na Comunidade
Mostrando resultados para as tags ''reflect system''.
Encontrado 1 registro
-
Reflect System "0.1" 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[i]).uid > 1 then if getItemReflectPercent(getPlayerSlotItem(cid, slotPos[i]).uid) then reflectPercent = reflectPercent + getItemReflectPercent(getPlayerSlotItem(cid, slotPos[i]).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} Créditos: MrCatra Aluccard Obrigado,MrCatra