Potion de double exp.


Primeiramente vamos ver oque o script tem de diferente dos outros:
Se voce sair com o efeito da exp potion o tempo da potion continuara passando, se voce logar antes que ele acabe voce ainda vai poder aproveitar um pouco da double exp.

Voce pode escolher varias opçoes, como escolher se só premium accounts podem usar o item, quanta mana vai gasta, se vai remover quando usar e etc...

AGORA O SCRIPT SÓ ESTA DISPONIVEL EM MOD:




Vá na pasta mods e adicione um arquivo.xml com o nome de ExpPotion.xml e coloque o seguinte código;

Código:
<?xml version="1.0" encoding="UTF-8"?>
<modname="AdvancedExpPotionSystem"enabled="yes"author="MatheusMkalo"forum="XTibia.com">

<!-- Configs and Functions -->
<configname="PotionExpConfigs"><![CDATA[

------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE
configs = {
time = 1, ---- TIME IN MINUTES
needpa = TRUE,
needlvl = {TRUE, level = 50},
costmana = {TRUE, mana = 300},
addrate = 20, -- Exp que vai adicionar em %
removeonuse = TRUE
}

function getTime(s)
    local n = math.floor(s / 60)
    s = s - (60 * n)
    return n, s
end

CreatureEventChecker = function(event, ...) -- Colex
    if isCreature(arg[1]) then
        event(unpack(arg))
    end
end

creatureEvent = function(event, delay, ...) -- Colex
    addEvent(CreatureEventChecker, delay, event, unpack(arg))
end

function getPlayerExtraExpRate(cid) -- By MatheusMkalo
    return (getPlayerRates(cid)[8]-1)*100
end
]]></config>

<!-- exppotion.lua -->
<actionitemid="7440"event="script"><![CDATA[
domodlib('PotionExpConfigs')
if getPlayerStorageValue(cid, 62164) >= 1 then
    return doPlayerSendCancel(cid, "You are already taking effect from this item.")
end

if configs.needpa and not isPremium(cid) then
    return doPlayerSendCancel(cid, "You need to be a premmium account to use this item.")
end

if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then
    return doPlayerSendCancel(cid, "You need to be level " .. configs.needlvl.level .. " to use this item.")
end

if configs.costmana[1] then
if getCreatureMana(cid) < configs.costmana.mana then
    return doPlayerSendCancel(cid, "You need " .. configs.costmana.mana .. " mana to use this item.")
else
doCreatureAddMana(cid, -configs.costmana.mana)
end
end

if configs.removeonuse then
    doRemoveItem(item.uid, 1)
end
 
for i = configs.time*60, 1, -1 do
local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
if #a < 4 then
a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
end
if i == configs.time*60 then
creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "The effect of the exp potion end.")
end
creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "The effect of the exp potion will end in "..a..".")
end

doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
doPlayerSendTextMessage(cid, 22, "Agora voce ira receber mais exp por matar os mosntros.")
setPlayerStorageValue(cid, 62164, os.time())
creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0)
return TRUE
]]></action>

<creaturescripttype="login"name="ExpPotion"event="script"><![CDATA[
domodlib('PotionExpConfigs')
local time = configs.time 
    if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then
       doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
       creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
       creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0)

       for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do
       local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
       if #a < 4 then
       a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
       end
       if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then
       creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "The effect of the exp potion end.")
       end
       creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "The effect of the exp potion will end in "..a..".")
       end
    end
return TRUE
]]></creaturescript>

</mod>
Tudo pronto, exp potion funcionando!

O ID da potion usada no script foi: 7440 (Mastermind Potion)

Para usa-lo voce precisa tirar a linha no actions.xml da potion porque se nao vai bugar.

Para trocar o id da potion é só mudar essa linha:

Código:
<actionitemid="7440"event="script"><![CDATA[
Creditos: MatheusMkalo
Fonte: xtibia



Preview: