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?





info
Grupo: Visconde
Registrado: 04/01/14
Posts: 320
Reputação: +15
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
--[[ 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 endCaso alguém consiga me da uma força..
Editado Fevereiro 16 por brendoonh
ortografia