[Resolvido] resetando timer quando morre ou desloga.

brendoonh
em Resolvidos

brendoonh

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 04/01/14Posts: 318

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..

Yan Oliveira

Yan18
avatar
Moderador
Moderador

INFOS

Grupo: ModeradorRegistrado: 05/06/12Posts: 2221Gênero: Masculino

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?

Caronte

Ex-Moderador de Scripting
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 25/09/10Posts: 1341Gênero: Masculino

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.

brendoonh

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 04/01/14Posts: 318
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


 

Caronte

Ex-Moderador de Scripting
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 25/09/10Posts: 1341Gênero: Masculino
Em 18/02/2025 em 19:56, brendoonh disse:


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


 

 

Você pode comentar esses dois  --doCreatureSetStorage (para caso você mude de ideia e queira reverter) ou remover esse código todo de login e logout e remover o script do xml que vai funcionar do jeito que você quer, aí zerar você ou cria um talkaction ou zera na mão no banco de dados. 

brendoonh

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 04/01/14Posts: 318
23 horas atrás, Caronte disse:

 

Você pode comentar esses dois  --doCreatureSetStorage (para caso você mude de ideia e queira reverter) ou remover esse código todo de login e logout e remover o script do xml que vai funcionar do jeito que você quer, aí zerar você ou cria um talkaction ou zera na mão no banco de dados. 

Funcionou! BRIGADÃOOOOOOOO @Caronte




consegue ajudar neste?

 

Yan Oliveira

Yan18
avatar
Moderador
Moderador

INFOS

Grupo: ModeradorRegistrado: 05/06/12Posts: 2221Gênero: Masculino
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.