Ir para conteúdo

Featured Replies

Postado

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

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.

 

               

star-wars-animated-gif-23.gif

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