..


Hoje, venho vos trazer o script/mod, Experience Scroll:
Créditos: TomCrusher
» Como funciona??
Voce tem um item, e ao clicar nele, ele sumira, e a experiencia bonus será ativa. A experiencia Bonus terá uma duração de 24horas (Configuravel), e a experiencia normal dele será multiplicada em 2x (Configuravel).
» Duvidas provaveis que surgirão:
E se eu logar com a exp ativa?
- Se você logar, o contador não vai parar, e ao voltar, o jogador recebera um aviso, dizendo que a experiencia bonus ainda está ativa.
Vamos la:
Na pasta Mods do seu OT, crie um arquivo chamado 'expscroll.xml' e dentro cole isto:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Experience Stages Scroll" version="1.0" enabled="yes">
<action itemid="9004" event="script" value="expstagescroll.lua"/>
<creatureevent type="think" name="ExpStage" event="script" value="expscroll.lua"/>
<creatureevent type="login" name="ExpStageLogin" event="script" value="expscroll.lua"/>
</mod>
- Em Vermelho é o item que será o exp scroll, que no caso o ItemID é 9004.
Depois, na pasta mods/scripts do seu ot (caso não tenha a pasta scripts dentro da sua pasta mods, é só criar normalmente como se foce uma pasta normal.) Dentro da pasta scripts crie um arquivo chamado 'expscroll.lua' e dentro coloque isso:
local config = {
rate = 2,
storage = 1000,
expstorage = 1100,
register = 1200,
time = 14400,
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerStorageValue(cid, config.storage) <= 0 then
local rates = getPlayerRates(cid)
setPlayerStorageValue(cid, config.expstorage, rates[sKILL__LEVEL])
setPlayerStorageValue(cid, config.register, 1)
itemEx=itemid == 9004
doCreatureSay(cid, "Sua experiencia extra esta ativa! Agora sua xp está multiplicada em " .. config.rate .. "x.", TALKTYPE_ORANGE_1, true, cid)
setPlayerStorageValue(cid, config.storage, os.time()+config.time)
doPlayerSetExperienceRate(cid, rates[sKILL__LEVEL]+config.rate)
doRemoveItem(item.uid,1)
registerCreatureEvent(cid, "ExpStage")
else
doCreatureSay(cid, "Voce ja usou um Experience Scroll, espere ele expirar pra que possa usar outro.", TALKTYPE_ORANGE_1, true, cid)
end
return true
end
function onThink(cid, interval)
if getPlayerStorageValue(cid, config.register) == 1 then
if getPlayerStorageValue(cid, config.storage) <= os.time() then
doCreatureSay(cid, "Sua experiencia bonus se expirou.", TALKTYPE_ORANGE_1, true, cid)
setPlayerStorageValue(cid, config.storage, 0)
setPlayerStorageValue(cid, config.register, 0)
local oldexp = getPlayerStorageValue(cid, config.expstorage)
doPlayerSetExperienceRate(cid, oldexp)
unregisterCreatureEvent(cid, "ExpStage")
end
end
return true
end
function onLogin(cid)
if getPlayerStorageValue(cid, config.register) == 1 then
registerCreatureEvent(cid, "ExpStage")
local rates = getPlayerRates(cid)
doCreatureSay(cid, "Sua experiencia bonus ainda está ativa, e esta multiplicada por " .. config.rate .. "x.", TALKTYPE_ORANGE_1, true, cid)
if getPlayerStorageValue(cid, config.storage) > os.time() then
local oldexp = getPlayerStorageValue(cid, config.expstorage)
doPlayerSetExperienceRate(cid, oldexp+config.rate)
end
end
return true
end
» Explicação:
[•] "Rate = 2" -- Isso é em quantas vezes a experiencia dele será multiplicada + 1. No caso se a exp dele for 200x, a exp vai pra 600x, por exemplo, se ele ganha 120 exp matando um bixo, ele vai passar a ganhar 360 exp...
[•] "time = 14400" -- Esse é o tempo que o exp scroll vai ficar ativo, no caso 24horas.
[•] São as frases que apareçerão in-game.
» Opicional:
Bom, creio que em muitos ots pode acontecer de quando o player der look no item apareçer isso:
You see an item of type 9004, please report it to gamemaster.
Ou então pode apareçer um nome de um iten nada aver...
É simples:
Vai na pasta data/items/items.xml
E dentro do items.xml clique ctrl+f e procure por 9004, se encontrar alguma coisa, apague a linha, e/ou substitua por essa linha aqui (caso não encontre nada, é só adicionar estas linhas no items.xml:
<item id="9004" article="a" name="exp scroll">
<attribute key="weight" value="50" />
</item>
É isso... Gostou? REP ++!