Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado
  • Este é um post popular.

Olá Tibia King's!

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%]
<?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>
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}

Creio que não esqueci de nada. Qualquer dúvida é só postar!

Sem mais,

Aluccard.

Edit:

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
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

Editado por Aluccard (veja o histórico de edições)

The life is hard: No projects for a while.

 

adfly.350x19.1.png

  • Respostas 44
  • Visualizações 13.5k
  • Created
  • Última resposta

Top Posters In This Topic

Postado
  • Autor
  Em 07/10/2011 em 02:10, Augusto disse:

Po, gostei muito do sistema, bem criativo.

Olá augusto!

Resolvi fazer esse script atraves da ideia do macnowfhael, usuario aqui do forum. Depois da idéia dele só coloquei no "papel".

Obrigado,

Aluccard.

Editado por Aluccard (veja o histórico de edições)

The life is hard: No projects for a while.

 

adfly.350x19.1.png

Postado

Num seria a mesma coisa do alguns armors, legs, que tem "attack +3", "holy -50", ?

É bem parecido, porém eu gostei desse :D

Atenciosamente,
Gustavo Luiz .

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo