Tem que checar se o player está offline e tratar essa "excessão" na função "endExpRate()", não? Vamos supor que na hora de chamar essa função ele esteja offline, ele continuará tendo a exp dobrada.
Tentarei ajudar mais:
crie mais duas funções nesse script, onLogout e onLogin.
Em onLogout você salvará o tempo restante e em onLogin você irá checar, pela storage, se o player ainda possui a experiência dobrada e adicionará um novo evento.
Espero ter ajudado.





info
Grupo: Campones
Registrado: 13/11/11
Posts: 84
Reputação: +1
Gênero: Masculino
Char no Tibia: Nosifero
Amigos to usando esse certo script meu servidor, ele funciona bem para alguns player porem para outros ele fala que está sendo usado, não estou conseguindo arrumar, o script seria para double exp....
local config = {
rate = 2, -- 4x More Experience
time = 1, -- Hours of Exp Time
storage = 21123
}
local function endExpRate(cid)
if isPlayer(cid) == TRUE then
doPlayerSetRate(cid, SKILL__LEVEL, 1) -- config.lua rate
setPlayerStorageValue(cid, config.storage, -1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Your extra experience time has ended.")
end
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
if(getPlayerStorageValue(cid, config.storage) < 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your extra experience rate is now: " .. config.rate .. ". It will last for ".. config.time .." hours.")
doPlayerSetRate(cid, SKILL__LEVEL, config.rate)
setPlayerStorageValue(cid, config.storage, os.time() + config.time * 3600)
addEvent(endExpRate, config.time * 3600 * 1000, cid)
doRemoveItem(item.uid, 1)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You still have extra experience time left.")
end
return TRUE
end
Nãos ei por o script em lua nesses fórum ehehehhe