Ir para conteúdo
  • 0

resetando timer quando morre ou desloga.


brendoonh

Pergunta

Boa noite,

 

Alguém com conhecimento poderia me ajudar neste script?
O script tem uma pequena "falha" quando o jogador morre ou desloga o tempo é resetado. 

Nesse sistema a cada 1h online o jogador recebe 1ppoint. Unico problema vem sendo esse citado acima.

Não tenho conhecimento , mas acredito que possa ser o arquivo do globalevents, irei deixa-lo abaixo para caso alguem consiga me ajudar.

points/globalevents

 

Spoiler
--[[
P Points System by LsM.

###### © 2011

Version : v1.0

]]--

 

local config = {

p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora )

p_points = 1 -- Quantidade de pontos recebida a cada "p_time"

}

 

local function givePoints(cid, quant)

if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then

doPlayerSendTextMessage(cid, 19, "Parabéns, você recebeu ".. config.p_points .." p-point. Agora você tem ".. config.p_points + getPoints(cid) .." p-points na sua conta. Seu tempo foi zerado, proximo p-points daqui 2 horas.")

doPlayerAddPoints(cid, quant)

doCreatureSetStorage(cid, 1219, 0)

doCreatureSetStorage(cid, 1219, os.time())

end

return true

end

 

function onThink(interval)

for i, v in pairs(getPlayersOnline()) do

givePoints(v, config.p_points)

end

return true

end



Caso alguém consiga me da uma força..

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

3 respostass a esta questão

Posts Recomendados

  • 0

Isso ocorre porque após os pontos serem atribuídos ao player, a maneira para controlar o tempo de atribuir novamente, é através de uma storage, que é uma "armazenamento temporário e virtual". E como todas as criaturas do jogo como Player, Monster e NPC são endereços de memória, toda vez que um player desloga ou morre, o cid (creature ID) é alterado, porque aquele endereço de memória foi perdido, e foi criado um novo quando ele logou novamente. E a storage é atribuída à um CID.

 

Há algumas maneiras de contornar isso. Acredito que uma maneira simples é criar uma tabela no banco de dados.

 

Tem alguma tabela de points no seu servidor?

Link para o comentário
Compartilhar em outros sites

  • 0

Pesquisei o sistema, e ele é pra funcionar assim mesmo, porque existe uma função de zerar os pontos ao deslogar:

 

function  onLogout(cid)
  doCreatureSetStorage(cid, 1219, 0) 
return true 

 

poste o código inteiro ou remova um código parecido com esse.

Link para o comentário
Compartilhar em outros sites

  • 0
Postado (editado)
Em 17/02/2025 em 14:54, Caronte disse:

Pesquisei o sistema, e ele é pra funcionar assim mesmo, porque existe uma função de zerar os pontos ao deslogar:

 

function  onLogout(cid)
  doCreatureSetStorage(cid, 1219, 0) 
return true 

 

poste o código inteiro ou remova um código parecido com esse.


points/creatureevents
 

--[[
P Points System by LsM.

###### © 2011

Version : v1.0

]]--

 

function onLogin(cid)

doCreatureSetStorage(cid, 1219, os.time())

return true

end

 

function onLogout(cid)

doCreatureSetStorage(cid, 1219, 0)

return true

end


Aqui tem a parte que voce citou @Caronte
Como ficaria o codigo? pq tentei de uma forma aqui e deu problema rsrsrs


 

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

×
×
  • Criar Novo...