Ir para conteúdo

Featured Replies

Postado

 

O script que da double xp ao clicar no item está com um erro pois quando acaba o tempo da double exp e o char esta off ao logar novamente e usar o item dnv da double exp ele diz que já esta double, mesmo já tendo acabado o tempo da double e a xp tiver normal não da mais para usar o item. Estou bateno cabeça aqui para resolver e talvez aqui tenha uma alma excelente para aajudar <3 obrigado pela atenção galera, vou acompanhar toda hora aqui pra responder rapido quem decidir me ajudar obrigado dnv de vdd

 

Aqui esta o script em 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 = 2, ---- TIME IN MINUTES 1440 = 24h metade = 720
needpa = FALSE,
needlvl = {FALSE, level = 8},
costmana = {FALSE, mana = 0},
addrate = 100, -- 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="5785" event="script"><![CDATA[
domodlib('PotionExpConfigs')
if getPlayerStorageValue(cid, 62164) >= 1 then
    return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "EXP is ALREADY DOUBLED. Please WAIT to use the ITEM Double Exp again.")
end
if configs.needpa and not isPremium(cid) then
    return doPlayerSendCancel(cid, "Need Premium Account")
end
if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then
    return doPlayerSendCancel(cid, "Voce precisa ser " .. configs.needlvl.level .. " para usar.")
end
if configs.costmana[1] then
if getCreatureMana(cid) < configs.costmana.mana then
    return doPlayerSendCancel(cid, "Voce precisar ter " .. configs.costmana.mana .. " de mana.")
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(doPlayerSendChannelMessage, configs.time*60*1000, cid, AuthorName, "[DOUBLE EXP] Expirou. Adquira mais em nosso SITE...", TALKTYPE_CHANNEL_O, 5)
end
creatureEvent (doPlayerSendChannelMessage,(configs.time*60-i)*1000, cid, AuthorName, "[DOUBLE EXP] Tempo para expirar: "..a.."", TALKTYPE_CHANNEL_O, 5)
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, 25, "DOUBLE EXP ATIVA POR 12 HORAS.")
setPlayerStorageValue(cid, 62164, os.time())
creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0)
return TRUE
]]></action>
<creaturescript type="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(doPlayerSendChannelMessage, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, AuthorName, "[DOUBLE EXP] Expirou. Adquira mais em nosso SITE...", TALKTYPE_CHANNEL_O, 5)
  end
  creatureEvent(doPlayerSendChannelMessage, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, AuthorName, "[DOUBLE EXP] Tempo para expirar: "..a.."", TALKTYPE_CHANNEL_O, 5)
  end
 
    end
return TRUE
]]></creaturescript>
</mod>

 

Teria que remover a storage né, alguem sabe como seria o código pra adicionar no escript pra derrubar a coluna na database?

 

EDIT - 

Ou também o tempo podia parar quando estivesse off

 

TFS 0.4 

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

  • 4 weeks later...
  • Respostas 16
  • Visualizações 847
  • Created
  • Última resposta

Top Posters In This Topic

Postado

Veja se isso resolve o problema

 

Troque:

 

creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0)
return TRUE

 

Por:

 

addEvent(setPlayerStorageValue(cid, 62164, 0), configs.time *60*1000)
return TRUE

 

  • 2 weeks later...
Postado


Não resolveu, agora sempre que utiliza o item ele da esse erro: @Imperius

 

Spoiler

 

[Error - Action Interface]
function onUse(cid, item, fromPosition, itemEx, toPosition)
domodlib('PotionExpConfigs')
if getPlayerStorageValue(cid, 62164) >= 1 then
    return doPlayerSendCancel(cid, "Voce ja ta sob o efeito efeito da Exp Potion.")
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 Potion.")
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 Potion")
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, "O Efeito da Exp Potion acabou.")
end
creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito da Exp Potion 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 mais 20% de EXP por Matar Monstros.")
setPlayerStorageValue(cid, 62164, os.time())
addEvent(setPlayerStorageValue(cid, 62164, 0), configs.time *60*1000)
return TRUE

end:onUse
Description:
(LuaInterface::luaAddEvent) Callback parameter should be a function

 


 

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

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

 

 

 

  • 532144234_Logo_NTO_BLOOD_Finish_HIM_By_Antonio_Luckas(3).png.fd58d1af125a7e82ccdd751637e9ca93.png
Postado

tenta colocar um onLogin
 

function onLogin(cid)
	setPlayerStorageValue(cid, 62164, 0)
return true


que quando o player logar, vai resetar a storage
caso queira que a storage não saia mesmo deslogando, e só acabe quando o player realmente tiver fora do time de 60 mins, precisa colocar a storage como os.time

@King Laker

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo