Ir para conteúdo
  • Cadastre-se

(Resolvido)exp potion script com erro no time e pedido


Ir para solução Resolvido por thelifeofpbion,

Posts Recomendados

Era para ser 30 minutos, mas esta sendo 16 hrs quando uso.

1 script action, ao clicar no item, recebe mensagens aleatorias como pop up a cada vez que ele clica, um total de 20 msg.

 

local config = {
    rate = 2, -- Rate que vai ficar o Scroll.
    time = 30, -- Tempo dado pelo Scroll. 
    storage = 20011
} 

local function endExpRate(cid)
    if not isPlayer(cid) then
        return
    end

    doPlayerSetRate(cid, SKILL__LEVEL, 6.0)
    setPlayerStorageValue(cid, config.storage, -1)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Your extra experience time has ended.")
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local timeLeft = getPlayerStorageValue(cid, 20011)
    if timeLeft > os.time() then
        local timeTable = os.date('*t', timeLeft - (os.time() + 3600))
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, string.format("You still have %d %s %d %s %d %s left of extra experience.", timeTable.hour, timeTable.hour > 1 and "hours" or "hour", timeTable.min, timeTable.min > 1 and "minutes" or "minute", timeTable.sec, timeTable.sec > 1 and "seconds" or "second"))
        return true
    end

    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, string.format("Your extra experience rate is now: %d. It will last for %d hours.", config.rate, config.time))
    doPlayerSetRate(cid, SKILL__LEVEL, config.rate)
    setPlayerStorageValue(cid, config.storage, os.time() + config.time * 60 * 1000)
    addEvent(endExpRate, config.time * 60 * 1000, cid)
    doRemoveItem(item.uid, 1)
    return true
end

 

Editado por jNo (veja o histórico de edições)

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites
  • Solução

Beleza, apaga tudo que tem do seu exp potion e usa esse.

esta 100% e tem o creaturescript para desbugar caso o char logue... (praticamente todos exp bug tinha esse bug de logar)

mods/

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com">
<!-- Configs and Functions -->
<config name="PotionExpConfigs"><![CDATA[
------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE
configs = {
time = 30, ---- TIME IN MINUTES
needpa = TRUE,
needlvl = {FALSE, level = 50},
costmana = {true, mana = 300},
addrate = 200, -- 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 -->
<action itemid="2008" event="script"><![CDATA[
domodlib('PotionExpConfigs')
if getPlayerStorageValue(cid, 49016) >= 1 then
    return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da EXP POTION 3X.")
end
if configs.needpa and not isPremium(cid) then
    return doPlayerSendCancel(cid, "Voce Precisar ser Premium Para Usar")
end
if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then
    return doPlayerSendCancel(cid, "Voce Precisa ser " .. configs.needlvl.level .. " Para usar a EXP POTION 3X.")
end
if configs.costmana[1] then
if getCreatureMana(cid) < configs.costmana.mana then
    return doPlayerSendCancel(cid, "Voce Precisar ter " .. configs.costmana.mana .. " de Mana Para usar a EXP POTION 3X")
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, "Efeito Final da EXP POTION 3X.")
end
creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da EXP POTION 3X vai acabar em "..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 Esta Recebendo 3x EXP !.")
setPlayerStorageValue(cid, 49016, os.time())
creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 49016, 0)
return TRUE
]]></action>
<creaturescript type="login" name="ExpPotion" event="script"><![CDATA[
domodlib('PotionExpConfigs')
local time = configs.time
    if os.time()-getPlayerStorageValue(cid, 49016) < time *60 then
  doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
  creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 49016))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
  creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 49016))) * 1000 , cid, 49016, 0)
  for i = (time*60-(os.time()-getPlayerStorageValue(cid, 49016))), 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, 49016))) then
  creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 49016)))*1000, cid, "O Efeito da EXP POTION 3X Termina em.")
  end
  creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 49016)))-i)*1000, cid, "O Efeito da EXP POTION 3X Termina em "..a..".")
  end
    end
return TRUE
]]></creaturescript>
</mod>

 

creaturescripts/perderefeito

Spoiler

function onLogout(cid)

local stor = 49016
local expfinal = 1
if getPlayerStorageValue(cid, stor) >= 1 then
setPlayerStorageValue(cid, stor, 0)
doPlayerSetExperienceRate(cid,expfinal)
else
end
return true
end

 

    creaturescripts/perderefeito.xml

Spoiler

<event type="logout" name="perderefeito" event="script" value="perderefeito.lua"/>

 

creaturescripts/login.lua

Spoiler

registerCreatureEvent(cid, "perdereifeto")

 

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites
6 horas atrás, pablobion disse:

Beleza, apaga tudo que tem do seu exp potion e usa esse.

esta 100% e tem o creaturescript para desbugar caso o char logue... (praticamente todos exp bug tinha esse bug de logar)

mods/

  Ocultar conteúdo

<?xml version="1.0" encoding="UTF-8"?>
<mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com">
<!-- Configs and Functions -->
<config name="PotionExpConfigs"><![CDATA[
------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE
configs = {
time = 30, ---- TIME IN MINUTES
needpa = TRUE,
needlvl = {FALSE, level = 50},
costmana = {true, mana = 300},
addrate = 200, -- 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 -->
<action itemid="2008" event="script"><![CDATA[
domodlib('PotionExpConfigs')
if getPlayerStorageValue(cid, 49016) >= 1 then
    return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da EXP POTION 3X.")
end
if configs.needpa and not isPremium(cid) then
    return doPlayerSendCancel(cid, "Voce Precisar ser Premium Para Usar")
end
if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then
    return doPlayerSendCancel(cid, "Voce Precisa ser " .. configs.needlvl.level .. " Para usar a EXP POTION 3X.")
end
if configs.costmana[1] then
if getCreatureMana(cid) < configs.costmana.mana then
    return doPlayerSendCancel(cid, "Voce Precisar ter " .. configs.costmana.mana .. " de Mana Para usar a EXP POTION 3X")
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, "Efeito Final da EXP POTION 3X.")
end
creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da EXP POTION 3X vai acabar em "..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 Esta Recebendo 3x EXP !.")
setPlayerStorageValue(cid, 49016, os.time())
creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 49016, 0)
return TRUE
]]></action>
<creaturescript type="login" name="ExpPotion" event="script"><![CDATA[
domodlib('PotionExpConfigs')
local time = configs.time
    if os.time()-getPlayerStorageValue(cid, 49016) < time *60 then
  doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
  creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 49016))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
  creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 49016))) * 1000 , cid, 49016, 0)
  for i = (time*60-(os.time()-getPlayerStorageValue(cid, 49016))), 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, 49016))) then
  creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 49016)))*1000, cid, "O Efeito da EXP POTION 3X Termina em.")
  end
  creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 49016)))-i)*1000, cid, "O Efeito da EXP POTION 3X Termina em "..a..".")
  end
    end
return TRUE
]]></creaturescript>
</mod>

 

creaturescripts/perderefeito

  Ocultar conteúdo

function onLogout(cid)

local stor = 49016
local expfinal = 1
if getPlayerStorageValue(cid, stor) >= 1 then
setPlayerStorageValue(cid, stor, 0)
doPlayerSetExperienceRate(cid,expfinal)
else
end
return true
end

 

    creaturescripts/perderefeito.xml

  Ocultar conteúdo

<event type="logout" name="perderefeito" event="script" value="perderefeito.lua"/>

 

creaturescripts/login.lua

  Ocultar conteúdo

registerCreatureEvent(cid, "perdereifeto")

 

 

Simplesmente obrigada <3, reputadíssimo 

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites
11 horas atrás, jNo disse:

 

Simplesmente obrigada <3, reputadíssimo 

 De nada cara :D, marca como melhor reposta para ficar melhor para achar...

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo