Jump to content

Exp Ring (Anel De Experiencia)


Recommended Posts

Tópico atualizado.

Como o nome diz, é um anél que aumenta a experiência de sua caçada' (configurável)
\o/
Vamos lá...

1º Passo

Abra o arquivo "Items.xml" (pasta Data / Items)
Com o editor de sua preferência, use o comando de busca (geralmente "Ctrl + F") e digite a ID "7697".
Vai achar o item "signet ring" que estará assim: (na maioria dos OTServ's)


<item id="7697" article="a" name="signet ring">
		<attribute key="weight" value="80" />
		<attribute key="slotType" value="ring" />
	</item>

Substitua isso por:


<item id="7697" article="a" name="experience ring">
		<attribute key="weight" value="500" />
		<attribute key="description" value="Este anel lhe da 2x mais experiencia (ativo)." />
		<attribute key="slotType" value="ring" />
		<attribute key="duration" value="4320" />
		<attribute key="decayTo" value="0" />
		<attribute key="showduration" value="1" />
		<attribute key="transformDeEquipTo" value="7708" />
</item>

Logo em seguida, procure pela ID "7708".
Encontrará o item "ring" que estará assim: (na maioria dos OTServ's)

<item id="7708" article="a" name="ring">
		<attribute key="weight" value="40" />
		<attribute key="slotType" value="ring" />
</item>

Substitua isso por:


<item id="7708" article="a" name="ring experience">
		<attribute key="weight" value="500" />
		<attribute key="slotType" value="ring" />
		<attribute key="stopduration" value="1" />
		<attribute key="showduration" value="1" />
		<attribute key="transformEquipTo" value="7697" />
</item>

Pronto, em Items.xml não mexeremos mais.



2º Passo


Abra o arquivo "Movements.xml" (pasta Data / Movements)
Adicione as tags abaixo:


<movevent type="Equip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/>
<movevent type="DeEquip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/>
<movevent type="Equip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/>
<movevent type="DeEquip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/>

Pronto, em "movements.xml" é só.



3º Passo
Aqui, temos duas opções...
O Exp Ring Tradicional é para server com Experiência fixa, ou seja, a EXP é sempre a mesma..
Já o Exp Ring por Stages é para server que a Experiência varia de acordo com o level do player.
Clique no Spoiler referente ao seu server.

EXP RING Tradicional:

Abra a pasta (Data / Movements / Scripts) e crie um arquivo com o nome "exp_ring.lua" (pode copiar um arquivo existente e renomeá-lo).
Após fazer isto, abra este arquivo (exp_ring.lua) e cole o código abaixo dentro.
Obs: se tiver algo escrito do arquivo, apague-o e deixe somente o código abaixo.


function onEquip(cid, item, slot)
doTransformItem(item.uid, 7697, 1)
doPlayerSendTextMessage(cid, 22, 'Agora ganha 2x mais experiencia!')
doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*0.2)



return TRUE
end

function onDeEquip(cid, item, slot)
doTransformItem(item.uid, 7708, 1)
doPlayerSendTextMessage(cid, 22, 'Experiencia extra cancelada.')
doPlayerSetExperienceRate(cid, 1)


return TRUE
end

 



EXP RING por Stages:

Abra a pasta (Data / Movements / Scripts) e crie um arquivo com o nome "exp_ring.lua" (pode copiar um arquivo existente e renomeá-lo).
Após fazer isto, abra este arquivo (exp_ring.lua) e cole o código abaixo dentro.
Obs: se tiver algo escrito do arquivo, apague-o e deixe somente o código abaixo.

function onEquip(cid, item, slot)

local rate = {}

if getPlayerLevel(cid) <= 200 then
rate = 1.3
elseif getPlayerLevel(cid) > 200 and getPlayerLevel(cid) <= 280 then
rate = 1.15
elseif getPlayerLevel(cid) > 280 then
rate = 1.05
end

doTransformItem(item.uid, 7697, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia foi aumentada em "..((rate - 1)*100).." %.")
doPlayerSetExperienceRate(cid, rate)
return TRUE
end

function onDeEquip(cid, item, slot)
doTransformItem(item.uid, 7708, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia esta de volta ao normal.")
doPlayerSetExperienceRate(cid, 1.0)
return TRUE
end

Salve-o e feche o arquivo.



Para aprender configurar a rate do Script clique no spoiler abaixo:

Eu não testei, mas creio que onde está:


doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*2)

Azul: É o valor em vezes que aumentará a experiência. Ex:
Onde está o "2" no código, você pode substituir por quantas vezes que que seja a multiplicação da EXP' (2 é igual a 2x mais Exp)...
Ou pode por em porcentagens usando como está abaixo:
1.5 = 50%
1.2 = 20%

E assim sucessivamente.

 




Sei que vão pedir, então segue abaixo "Experience Ring Recarregável"

Se quer um Anel de Experiencia Recarregável (como soft boots), clique no Spoiler abaixo.


1º Passo

Abra o arquivo "Items.xml" (pasta Data / Items)
Com o editor de sua preferência, use o comando de busca (geralmente "Ctrl + F") e digite a ID "7697".
Vai achar o item "signet ring" que estará assim: (na maioria dos OTServ's)


<item id="7697" article="a" name="signet ring">
		<attribute key="weight" value="80" />
		<attribute key="slotType" value="ring" />
</item>

Substitua isso por:


<item id="7697" article="a" name="experience ring">
		<attribute key="weight" value="500" />
		<attribute key="description" value="Este anel lhe da 2x mais experiencia (ativo)." />
		<attribute key="slotType" value="ring" />
		<attribute key="duration" value="4320" />
		<attribute key="decayTo" value="2122" />
		<attribute key="showduration" value="1" />
		<attribute key="transformDeEquipTo" value="7708" />
</item>

OBS: Eu usei o Item "Elven Brooch" (ID 2122) pois estava sem tempo para procurar um item para por no lugar, ou seja, quando acabar o anél ele transformará no "Elven Brooch".


Agora procure pela ID "7708".
Encontrará o item "ring" que estará assim: (na maioria dos OTServ's)


<item id="7708" article="a" name="ring">
		<attribute key="weight" value="40" />
		<attribute key="slotType" value="ring" />
</item>

Substitua isso por:


<item id="7708" article="a" name="ring experience">
		<attribute key="weight" value="500" />
		<attribute key="slotType" value="ring" />
		<attribute key="stopduration" value="1" />
		<attribute key="showduration" value="1" />
		<attribute key="transformEquipTo" value="7697" />
</item>

Procure também pela ID "2122".
Achará o item "Elven Brooch".
Provavelmente achará o item abaixo:

<item id="2122" article="an" name="elven brooch">
		<attribute key="weight" value="100" />
</item>

Substitua isso por:


<item id="2122" article="a" name="broken experience ring">
		<attribute key="weight" value="100" />
		<attribute key="slotType" value="ring" />
</item>

Pronto, em Items.xml não mexeremos mais.



2º Passo

Abra o arquivo "Movements.xml" (pasta Data / Movements)
Adicione as tags abaixo:


<movevent type="Equip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/>
<movevent type="DeEquip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/>
<movevent type="Equip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/>
<movevent type="DeEquip" itemid="7708" slot="ring" event="script" value="exp_ring.lua/">

Pronto, em "movements.xml" é só.



3º Passo

Abra a pasta (Data / Movements / Scripts) e crie um arquivo com o nome "exp_ring.lua" (pode copiar um arquivo existente e renomeá-lo).
Após fazer isto, abra este arquivo (exp_ring.lua) e cole o código abaixo dentro.
Obs: se tiver algo escrito do arquivo, apague-o e deixe somente o código abaixo.


function onEquip(cid, item, slot)
doTransformItem(item.uid, 7697, 1)
doPlayerSendTextMessage(cid, 22, 'Agora ganha 2x mais experiencia!')
doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*0.2)



return TRUE
end

function onDeEquip(cid, item, slot)
doTransformItem(item.uid, 7708, 1)
doPlayerSendTextMessage(cid, 22, 'Experiencia extra cancelada.')
doPlayerSetExperienceRate(cid, 1)


return TRUE
end

 



4º Passo

Abra a pasta (Data / NPC ) e crie um arquivo com o nome "Joalheiro.xml" (pode copiar um arquivo existente e renomeá-lo).
Após fazer isto, abra este arquivo (Joalheiro.xml) e cole o código abaixo dentro.
Obs: se tiver algo escrito do arquivo, apague-o e deixe somente o código abaixo.

<!--?xml version="1.0" encoding="UTF-8"?-->
<npc name="Joalheiro" script="data/npc/scripts/Sell/ring_repair.lua" walkinterval="2000" floorchange="0">
	<health now="100" max="100">
	<look type="128" head="40" body="37" legs="116" feet="95" addons="0">
	<parameters>
		<parameter key="message_greet" value="Just great, another ... 'customer'. Hello, |PLAYERNAME|. If you want to trade, let's get it over with.">
		<parameter key="message_farewell" value="That's music in my ears.">
		<parameter key="message_walkaway" value="Yeah, get lost.">
		<parameter key="message_onsendtrade" value="Yeah, buy something.">
		<parameter key="module_shop" value="1">
</parameters>
</npc>

Salve e feche.

Agora vá na pasta ( Data / NPC / Scripts / Sell ) e crie um arquivo com o nome "ring_repair.lua" (pode copiar um arquivo existente e renomeá-lo).
Após fazer isto, abra este arquivo (ring_repair.lua) e cole o código abaixo dentro.
Obs: se tiver algo escrito do arquivo, apague-o e deixe somente o código abaixo.


local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)				npcHandler:onCreatureAppear(cid)			end
function onCreatureDisappear(cid)			npcHandler:onCreatureDisappear(cid)			end
function onCreatureSay(cid, type, msg)			npcHandler:onCreatureSay(cid, type, msg)		end
function onThink()					npcHandler:onThink()					end

function creatureSayCallback(cid, type, msg)
	if(not npcHandler:isFocused(cid)) then
		return false
	end

	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

	if(msgcontains(msg, 'ring') or msgcontains(msg, 'experience')) then
		selfSay('Do you want to repair your experience ring for 50000 gold coins?', cid)
		talkState[talkUser] = 1
	elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
		if(getPlayerItemCount(cid, 2122) >= 1) then
			if(doPlayerRemoveMoney(cid, 50000) == TRUE) then
				doPlayerRemoveItem(cid, 2122, 1)
				doPlayerAddItem(cid, 7697)
				selfSay('Here you are.', cid)
			else
				selfSay('Sorry, you don\'t have enough gold.', cid)
			end
		else
			selfSay('Sorry, you don\'t have the item.', cid)
		end
		talkState[talkUser] = 0
	elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then
		talkState[talkUser] = 0
		selfSay('Ok then.', cid)

	return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Salve e feche.


Configurações do NPC:
Recolhe: "broken experience ring"
Custo: "50k"
Devolte: "Brand-New Experience Ring"

5º Passo

Agora vá no Map Editor e adicione seu novo NPC em seu Mapa.





É, acho que é isso...
Qualquer coisa postem aqui para resolvermos juntos.

Eu editei o Script, criei o NPC e criei o Tutorial.
Créditos pelo tutorial: AdrianoSwaTT
Créditos pelo Exp Ring Stages: Vodkart
Créditos pelo Script: OTLand

Abraços, espero que seja útil'

Edited by Adriano Swatt
Link to comment
Share on other sites

Isto tinha no PBOT, era bem legal, almentava 10% da EXP.

Parabéns cara.

 

De tanto que vejo comentário sobre esse "PBOT" eu nem manjo o que é... acredito ser um OTServ, mas nunca joguei ele.

:D

 

@@@ Sobre o comentário

 

Muito obrigado cara, é gratificante saber que estão gostando do meu trabalho post.

 

 

Abraços :smile_positivo:

 

Muito Bom VLW ja botei no meu ot 100% pegando TY

REP+

 

Opaah, faça bom aproveito e valeu por comentar!

 

 

Abraços :thumbsupsmiley2:

Link to comment
Share on other sites

Parabéns

ótimo Tutorial bem explicado e detalhado.

 

Obrigado por contribuir ao Xtibia

 

 

Obrigado pelo elogio...

Procuro sempre deixar meus tutoriais o mais explicado e detalhado possível para ajudar / facilitar para os que estão iniciando.

 

 

@@@ EDITED - FOR ALLS

 

Triste é você ver o tanto de gente que passou pelo tópico, e talves até usou o Script, e nem deixa um comentário.

 

Isso que é o pior...mas fazer o que né?!

 

 

 

Abraços a todos aí! :smile_positivo:

Edited by Gonorreia
Link to comment
Share on other sites

Nossa, muito bom. Isso sim vale a pena ser vendido em reais os ots ^^]

 

Obrigado por postar aqui :D

 

Valeu ae por comentar...

 

Obrigado também pelo elogio.

 

Abraços :smile_positivo:

Edited by Gonorreia
Link to comment
Share on other sites

Ótimo Tutorial, já estou colocando no meu servidor, concerteza vai me servir muito, esse tipo de item é bom para ser usado em servidores sérios, com itens para comprar em sites, etc. porém quem joga free e não quer pagar vai ficar meio triste. ;/

 

Continue trazendo mais tutoriais ao xTibia.

Aprovado PAAAAFBbkCaoWgrMmJJ2g1Ez4phiy4q-iHbZoA_s5PzZR6nDqrAgEbsrgpFwJ00AEeblwWdqeLfweTg6p4-aFoJcxuAAm1T1UIRqv8Rt0SEwupqxsngSAJmmdHC7.jpg

PAAAAPNuAFsCiAlOZDlZiArJ4ingQU0erHYu3SGZ_WAEMOHPFpPpZNnr7yu0b1g2s0IWi1QRoIUWd2PKfp2B79aRz_sAm1T1UJkulc7MnfAfLkSo5fA8g7kSEnMS.jpg

 

REP+ add.png

 

Até Logo

Link to comment
Share on other sites

Muito loco já esta tudo pronto para colocar so falta dar reload.

Mas antes de reiniciar o servidor poderia me responder se algum dos 2 rings dropam de monstros? Pois queria que fosse um anel de eventos!

 

@@@ XxSauvadurxX

Certamente que não dropa de bichos e nem é vendido em NPC's.

Abraços :smile_positivo:

 

 

@@@ Ystifler

Obrigado por comentar. :smile_positivo:

 

 

@@@ Conectado

Obrigado por comentar... e sim, vou continuar trazendo conteúdo para o Xtibia sim, sempre que possível. :smile_positivo:

 

 

@@@ Danielziak

Valeu pelo comentário, faça bom aproveito do Script.

Valeu pelo REP+ também! :smile_positivo:

 

 

@@@ Kratooos

Valeu por comentar aí...

Como tive comentários acima, além de que testei, está funcionando sim, espero que funcione pra você também..

Valeu pelo REP+ ! :smile_positivo:

 

Lembre-se, qualquer coisa poste aqui para solucionarmos seu problema..

 

Abraços :smile_positivo:

 

 

@@@ ALL FORUM

 

Façam bom aproveito do Script aí galera!

 

 

Abraços a todos :smile_positivo:

Edited by Gonorreia
Link to comment
Share on other sites

1º kra parabens ja tinha 1 tempo que eu keria esse ring

2º muito bem divido!

3º PbOT (Private Brasil Open Tibia) foi um ot sever que fez muito sucesso porem acabou se perdendo apos a separação da equipe e as denuncias player com equipes editados, o PbOT tinha magias inovadoras vocaçoes balanseadas e itens diferentes ( o famoso Xp Ring quera comprado em forma de doaçao) hj existem alguns ots com mapa PbOT (ja que o mesmo tinha um mapa proprio) porem o mais forte era o NewPbOT(agora ja nao mais tao por causa da instabilidade do site e do servidor) bom e isso que eu sei mesmo pq joguei tanto o pbot quando o new =).

Abrass. adorei o ring ^-0

Link to comment
Share on other sites

×
×
  • Create New...