Ir para conteúdo
  • Cadastre-se

Posts Recomendados

  • 2 months later...
  • Respostas 44
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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"?> <m

  Em 07/10/2011 em 02:06, Aluccard disse:

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

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}

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

Sem mais,

Aluccard.

Edit:

Hidden Content

    Give reaction to this post to see the hidden content.

 

Expand   Mostrar mais  

Bom demais o scripts, mas gostaria que explicasse direitinho como funciona para adicionar o "Reflet" nos itens, pois não entendi.. abç

Venha para a evolução do mapa HEROSERV -- Versão 8.60 -

Faça parte dessa família: http://kaiakserv.com

 

Link para o post
Compartilhar em outros sites
  • 2 months later...

Esse sistema não pode ser adicionado direto, sem precisar de ser adicionado após ou durante ( quest )? Pois o sistema próprio dos ots acabam fazendo com que aconteça um "crash".

Link para o post
Compartilhar em outros sites
  • 8 months later...

Seria perfeito se tivesse uma função onUse, ai tipo colocaria uma stone ex: "Reflect Stone" e usaria ela nos itens, seria perfeito. Caso algum scripter queira ajudar nós meros noobs haha !

Venha para a evolução do mapa HEROSERV -- Versão 8.60 -

Faça parte dessa família: http://kaiakserv.com

 

Link para o post
Compartilhar em outros sites
  • 6 months later...

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Estatísticas dos Fóruns

    96846
    Tópicos
    519602
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo