Postado Fevereiro 1, 2019 6 anos Bom dia!! Possuo um otserv TFS 0.4 distro: 8.6 Baiak Coloquei um script de potion xp que funciona por 2 horas. Da tudo certo. Porém, se deslogar ele perde o efeito , alem de ter de esperar 2h pra usar novamente. Imagino que preciso criar um script ou colocar algo no login.lua. Só não sei como fazer. Alguém pode me ajudar por favor ? Eu reputo . Muito obrigado mesmo. Código em actions.xml : function onUse(cid, item, frompos, item2, topos) local pausa = 120*60*120000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "Você aumentou 50% na sua Experiencia por 2 Horas" -- Texto que irá receber ao usar a potion. textofinal = "Acabou o potion de Experiencia." -- Texto que irá receber quando o efeito da potion acabar. local exp = 1.5 -- O quanto que você quer que dobre sua experiencia, por exemplo 2 é 2x as rates do seu server. expfinal = 1 --Não mude, isso é para a experiencia voltar ao normal. local limitedeuso = 49015 local tempo = 120*60*1000 -- 1000 = 1s então 1000 vezes 60 vezes 30 = 30 minutos local textofinal1 = "Você já esta sob efeito da pot de experiência espere o efeito acabar." local seuitem = 7440 -- seu item que dará double exp local efeito1 = 13 -- efeito que ficara com o char por meia hora local efeito2 = 35 -- efeito que acontecera no momento que usar a pot --fim da parte configuravel não mecha se nao tiver conhecimento de scripting local timeEffect = 1801 -- tempo em segundos que o efeito vai apareceer no player, 31 = 30 segundos. sempre coloque 1 segundo a mais. function effect() if isPlayer(cid) then local pos = getCreaturePosition(cid) doSendMagicEffect(pos, efeito1) end end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid,exp) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 1800) doPlayerSendTextMessage(cid,22,texto) addEvent(potion,pausa,cid) a = 1 while a ~= timeEffect do addEvent(effect, a * 1000) a = a + 1 end elseif item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) then doPlayerSendTextMessage(cid,22,textofinal1) end return true end function potion(cid) doPlayerSetExperienceRate(cid,expfinal) doPlayerSendTextMessage(cid,22,textofinal) end
Postado Fevereiro 1, 2019 6 anos Bom, você disse que não sabe COMO fazer, então estou supondo que tenha conhecimento de mexer no script, correto? A função que você irá utilizar é onLogin (que pode ser no login.lua), mas recomendo utilizar no mesmo script. Verifique ao player logar, se o (valor do storage - os.time()) for maior do que 0, pois se for, quer dizer que ainda há tempo para o player com extraxp, com isso você usa o addEvent com a função de encerrar o bônus de xp que é dada pela mesma fórmula: valor do storage - os.time(), no qual irá retornar em SEGUNDOS, porém, o addEvent trabalha com mili, ou seja, valor do storage - os.time() * 1000 No script tá uma zona, cara, recomendo procurar outro... Esse while aí vai matar o teu servidor, temos a função onThink para creatures também. Feliz daquele que ensina o que sabe, e aprende o que ensina.
Postado Fevereiro 1, 2019 6 anos Autor Obrigado. Resolvido. Utilizei o Mod exp scroll invés deste script.
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.