Ir para conteúdo
  • 0

Como colocar um "exausted" na storage?


XxPaaulinhoOxX

Pergunta

Então galera eu queria colocar uma especie de delay em certa parte de um script meu .

Uu tentei fazer trocando a storage, e fazendo um addEvent que trocasse a storage denovo para o valor inicial . Porém se o player deslogar antes do addEvent não troca, ficando com a storage que eu não quero .

 

por exemplo:

 

setPlayerStorageValue(cid, 12345, 1)
addEvent(setPlayerStorageValue, 60 * 1000, (cid, 12345, -1))

 

Se ele deslogar antes dos 60 segundos ele permaneceria com a storage 12345 com valor 1. Queria saber se tem algum outro jeito de colocar um exausted? ou uma forma de se o player deslogar o tempo continuar correndo? ou pausar esses tempo e recomeçar daonde parou quando o player logar?

Editado por XxPaaulinhoOxX
Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

Mesmo se ele der logout, ficara com o exhauti. E para checar o tempo que resta você usa a estrutura seguinte:

local tsm = {
  storage = 2338,
  time = function()return exhaustion.get(cid, storage)end,
}	
  if tsm.time(cid, tsm.storage) < 10 then
	 print("SmiX é lindo")
  end	

 

Acima acontece o seguinte; se o tempo da storage for menor que 10 segundo ele manda printar, uma verdade, "SmiX é lindo".

Link para o comentário
Compartilhar em outros sites

  • 0

AHH ! Então se eu entendi ..

 

local time = function()return exhaustion.get(cid, 12345)end,
setPlayerStorageValue(cid, 12345, 1)
exhaustion.set(cid, 12345, 60 * 1000)
print(“Faltam”..time..”segundos.”)
if time <= 0 then
setPlayerStorageValue(cid, 12345, -1)
end

 

depois de passado os 60 segundos então o meu storage 12345 voltaria para valor -1 né?

e o exhaustion.get retorna o valor em segundos ?

Link para o comentário
Compartilhar em outros sites

  • 0

setPlayerStorageValue(cid, 12345, 1) --n precisa disso
exhaustion.set(cid, 12345, 60 * 1000) --tem q ser em SEGs no caso soh 60

 

quando acaba ele n volta ela pra -1.. ela continua com o os.time()+60

Link para o comentário
Compartilhar em outros sites

  • 0

local time = function()return exhaustion.get(cid, 12345)end
exhaustion.set(cid, 12345, 60)
if time <= 0 then
setPlayerStorageValue(cid, 12345, -1)
else
print(“Faltam”..time..”segundos.”)
end

 

assim, quando a variavel time retornasse 0 iria entrar em ação a função setPlayerStorageValue ? trocando meu storage para o valor de -1? Senão apenas mandaria printar o tempo restante não .. ?

Link para o comentário
Compartilhar em outros sites

  • 0

sim esta correto.. mas se o player n tiver online vai da erro '--' mas fazendo esse tpw de verificaçao, n tem problema da variavel ficar diferente de -1

Link para o comentário
Compartilhar em outros sites

  • 0

se ele não estiver online então não vai setar a storage para -1?? porque oque eu preciso é realmente isso, quando acabasse o tempo que a storage tomasse o valor que EU DETERMINAR independente de ele estar online ou offline tendeo ?

 

Daria certo eu criar uma function onLogin?(e no caso onde eu colocaria ela? creaturescripts?) que verificasse se o player está com tal storage e se o exhaustion.get daquele storage já chegou ao fim ?

 

tipo assim:

 

function onLogin(cid)
local time = function() return exhaustion.get(cid, 12345) end
if getPlayerStorageValue(12345, 1) then
if time <= 0 then
setPlayerStorageValue(cid, 12345, 1)
else
print("Ainda faltam "..time.." segundos.")
end
else
return FALSE
end
end

 

sim é muita pergunta ;S

obrigado pela paciência x)

Editado por XxPaaulinhoOxX
Link para o comentário
Compartilhar em outros sites

  • 0

Não intendi muito bem, mais eu fiz da seguinte forma: Se o player estiver com a storage "12345" no valor 1 o script passara para a próxima checagem e mostrara ao player quanto tempo ele tem de exhaustion.

 

function onLogin(cid)
 if getPlayerStorageValue(cid, 12345) == 1 then
   local x = exhaustion.get(cid, 12346)
    if not x then
       x = 0
    end
       if x > 0 then
          doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The exhaustion is in "..x.." seconds.")
       end
 end
end     

Link para o comentário
Compartilhar em outros sites

  • 0

Ue porque se lanço uma varivel x.

E depois seto o valor 0.

 

function onLogin(cid)
if getPlayerStorageValue(cid, 12345) == 1 then
local x = exhaustion.get(cid, 12346)
if x then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The exhaustion is in "..x.." seconds.")
end
end
return false
end	  

Editado por caotic
Link para o comentário
Compartilhar em outros sites

  • 0

Porque o player não começa com o exhaustion, então lancei o "if not x then" para ele começar com o exhaustiom no valor 0, só esqueci o "exhaustion.set"...

 

function onLogin(cid)
 if getPlayerStorageValue(cid, 12345) == 1 then
local x = exhaustion.get(cid, 12346) or 0
	exhaustion.set(cid, 12346, 60)
	if x > 0 then
	   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The exhaustion is in "..x.." seconds.")
	end
 end
end

Editado por SmiX
Link para o comentário
Compartilhar em outros sites

  • 0

Porque o player não começa com o exhaustion, então lancei o "if not x then" para ele começar com o exhaustiom no valor 0, só esqueci o "exhaustion.set"...

 

function onLogin(cid)
 if getPlayerStorageValue(cid, 12345) == 1 then
local x = exhaustion.get(cid, 12346) or 0
	exhaustion.set(cid, 12346, 60)
	if x > 0 then
	   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The exhaustion is in "..x.." seconds.")
	end
 end
end

 

Mas se você vai setar o valor da exhaust como 60 depois, então pra quê isso?

local x = exhaustion.get(cid, 12346) or 0

 

@Topic

 

A propósito, usar onLogin e return false não é muito boa ideia, vai impedir o player de fazer login. O que seria melhor fazer é usar onLogout.

 

function onLogout(cid)
if getPlayerStorageValue(cid, 12345) == 1 then
	if exhaustion.get(cid, 12346) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The exhaustion is in "..exhaustion.get(cid, 12346).." seconds.") return false
	end
end
return true
end

 

A propósito, o player pode fazer logout com a exhaustion que não vai dar erro se ela acabar com ele offline. Usei um sistema parecido com esse no Vampire System, em que se o player não se alimentar depois de x horas ele evolui o nível de vampirismo, e se o player estiver offline quando esse tempo acabar, quando ele logar o script termina de ser executado.

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...