Ir para conteúdo

Ring De Double Exp


xFkyx

Posts Recomendados

Olá Xtibianos,

 

hoje percebi que não há um ring que da Double Exp ou mais/menos se você quiser.

Então let's go ;D

 

Primeiramente vá em data>moveevents>script e crie um arquivo double_exp.lua e ponha isso:

local config = {
rate = 2, -- quanto de exp ele vai ganhar(porcentagem) ex: 1.5 = + 50%
item1 = 555,  -- qual o item que vai virar
item2 = 666   -- item original
}
function onEquip(cid, item, slot)
doTransformItem(item.uid, item1, 1)
doPlayerSendTextMessage(cid, "Agora você tem 2x mais de experiencia!")
doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*rate)
return TRUE
end
function onDeEquip(cid, item, slot)
doTransformItem(item.uid, item2, 1)
doPlayerSetExperienceRate(cid, 1)
return TRUE
end

 

 

Se quiser com stages aqui está:

 

function onEquip(cid, item, slot)
local item1 = 12345 -- id do anel antes de por no slot
local item2 = 12345 -- id do anel depois de por no slot
local rate = {}
if getPlayerLevel(cid) <= 200 then
rate = 1.3
elseif getPlayerLevel(cid) > 200 and getPlayerLevel(cid) <= 300 then
rate = 1.15
elseif getPlayerLevel(cid) > 300 and getPlayerLevel(cid) <= 500 then
rate = 1.05
elseif getPlayerLevel(cid) > 500 then
rate = 1.03
end
doTransformItem(item.uid, item2, 1)
doPlayerSendTextMessage(cid, 22, "Agora seu ganho de experiencia está "..((rate - 1)*100).." a mais %.")
doPlayerSetExperienceRate(cid, rate)
return TRUE
end
function onDeEquip(cid, item, slot)
doTransformItem(item.uid, item1, 1)
doPlayerSendTextMessage(cid, 22, "Sua experiencia esta de volta ao normal.")
doPlayerSetExperienceRate(cid, 1.0)
return TRUE
end

 

 

 

 

Depois vá em data>moveevents>moveevents.xml e ponha isso:

<movevent type="Equip" itemid="item id do ring original do script" slot="ring" event="script" value="double_exp.lua">
<movevent type="DeEquip" itemid="item id do ring original do script" slot="ring" event="script" value="double_exp.lua">

 

Em seguida vá em data>item>item.xml e procure o id do ring que você escolheu pra ser quando estiver equipado e substitua por isso: (exemplo)

<item id="7697" article="a" name="experience ring">  -- item id="id do item" name="nome"
			<attribute key="weight" value="500">
			<attribute key="description" value="This ring give you double exp (on).">
			<attribute key="slotType" value="ring">
			<attribute key="duration" value="30"> -- tempo de duração(segundos)
			<attribute key="showduration" value="1">
			<attribute key="transformDeEquipTo" value="7708"> -- quando tirar do slot de ring vai transformar nesse id
</item>

Depois vá em data>item>item.xml e procure o id do ring que você escolheu pra ser quando não estiver equipado e substitua por isso: (exemplo)

<item id="7708" article="a" name="experience ring"> -- id do itemque vai ficar quando não estiver equipado
			<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"> -- id do que você escolheu no outro script que vai transformar quando esquipar
</item>

 

Espero que gostem,

anteciosamente xFykx.

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

ah não me enganei,eu achei que era alguma parte do set,ring eu já fiz um também até tem um parecido na área de tutoriais,fiz antigamente kk

mas mesmo assim,a maioria dos servidores vendem este tipo de items,muito bom

abraços

Link para o comentário
Compartilhar em outros sites

sabe o que eu estava pensando... É o seguinte, que dá para fazer através do onKill e usando stages!

Na hora que você fosse matar o monstro iria checar se no slot tem o anel com ID "XY",caso tivesse ele faria a conta de quanto o jogador ganha ao matar um montro,por exemplo eu no level 300 mato um demon e ganho 6000 de xp,com o anel me dando 50% eu ganharia os 6000 + 3000 de exp, dando um total de 9000!

 

está ai:

 


function onKill(cid, target)
local ringID = 2123
if isPlayer(cid) and isMonster(target) then
if getPlayerSlotItem(cid, CONST_SLOT_RING).itemid == ringID then
local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier)
local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2)
doPlayerAddExperience(cid, count)
addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60))
end
else
return TRUE
end
return TRUE
end

 

configurado para dar 50% de bonus xp

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...
×
×
  • Criar Novo...