Postado Agosto 26, 2017 7 anos Boa madrugada galera... Bom estou utilizando um sistema aqui do TK , que dar ppoints a partir do tempo online, o que estou com problemas? 1 - Uma Função no sistema de mostrar o tempo q falta para o player receber o ppoint. 2 - Outra coisa que estou com problema no script, quando o player morre, reloga ou quando reinicia o server o tempo está zerando... Queria que o tempo voltasse a partir de onde ele parou quando logasse novamente. Alguém que conheça o suficiente poderia me ajudar? Fico grato desde já!!! Espero que alguem possa me ajudar. Valeu!!! Creaturescript Spoiler --[[ P Points System by LsM. OTServ Brasil © 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 Talkactions Spoiler function onSay(cid, words, param, channel) local getP = getPoints(cid) doPlayerPopupFYI(cid, "Você Possui ".. getP .." Ppoints.") return true end Globalevents Spoiler --[[ P Points System by LsM. OTServ Brasil © 2011 Version : v1.0 ]]-- local config = { p_time = 7200, -- 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 .." ppoint. Agora você tem ".. config.p_points + getPoints(cid) .." ppoints na sua conta. O tempo foi resetado. Proximo ppoint em 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 Link do sistema: Spoiler up PF
Postado Agosto 26, 2017 7 anos Solução No creaturescripts: Spoiler function onLogin(cid) local query = db.getResult("SELECT (`lastlogout`-`lastlogin`) as ONtime FROM `players` WHERE `name` = '" .. getPlayerName(cid) .. "';") if getPlayerStorageValue(cid, 1219) == -1 then setPlayerStorageValue(cid, 1219, 0) return true end local addtime = query:getDataInt("ONtime") setPlayerStorageValue(cid, 1219, getPlayerStorageValue(cid, 1219) + tonumber(addtime)) return true end E retire a tag <event type="logout" name="PlayerResetPointsTimer" event="script" value="points.lua"/> do creaturescripts.xml. No globalevents: Spoiler local config = { p_time = 7200, -- Tempo em segundos para receber os pontos( 3600 = 1hora ) p_points = 1 -- Quantidade de pontos recebida a cada "p_time" } function givePoints(cid, quant) local onTime = getPlayerStorageValue(cid, 1219) if onTime >= config.p_time then local rest = onTime%config.p_time local add = ((onTime-rest)/config.p_time)*quant doPlayerAddPoints(cid, add) local text = "Você " .. (rest == 0 and "não possui" or "ainda possui") .. " " .. (rest == 0 and "" or rest) .. " segundos online." doPlayerSendTextMessage(cid, 19, "Parabéns, você recebeu " .. add .. " ppoint" .. (add > 1 and "s" or "")..". Agora você tem " .. add + getPoints(cid) .. " ppoints na sua conta. ".. text .." Próximo ppoint em " .. (config.p_time/3600) .. " horas.") setPlayerStorageValue(cid, 1219, rest) end return true end function onThink(interval) for _, pid in ipairs(getPlayersOnline()) do givePoints(pid, config.p_points) end return true end No talkactions: Spoiler local config = { p_time = 7200, -- Tempo em segundos para receber os pontos( 3600 = 1hora ) p_points = 1 -- Quantidade de pontos recebida a cada "p_time" } function onSay(cid, words, param, channel) local onTime = getPlayerStorageValue(cid, 1219) local rest = onTime%config.p_time local tempo = config.p_time - rest local add = tonumber(((onTime-rest)/config.p_time)*config.p_points) local text = "" if add > 0 then text = "Você ganhará " .. add .. " ppoint " .. (add > 1 and "s" or "").."." end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Faltam " .. tempo .. " segundos online para ganhar mais um ppoint." .. text) doPlayerPopupFYI(cid, "Você possui " .. getPoints(cid) .. " Ppoints.") return true end Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Agosto 26, 2017 7 anos Autor Devo substituir todos os arquivos né? Como sou leigo, vou te fazer uma pergunta tosca, retirando a tag do creatureevents, como vai ativar o script?
Postado Agosto 26, 2017 7 anos Você vai substituir esses que você mandou aqui. Você tem que retirar a tag que o eventype = "logout" e deixar a tag que o eventype = "login" que você tinha adicionado antes quando configurando o sistema. Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Agosto 26, 2017 7 anos Autor 9 minutos atrás, Dwarfer disse: Você vai substituir esses que você mandou aqui. Você tem que retirar a tag que o eventype = "logout" e deixar a tag que o eventype = "login" que você tinha adicionado antes quando configurando o sistema. Quando dei reload 16:01 Parabéns, você recebeu 208857 ppoints. Agora você tem 417716 ppoints na sua conta. Você ainda possui 2139 segundos online. Próximo ppoint em 2 horas. Pelo que parece, vai aparecer em segundos? Não poderia ser por exemplo, Faltam 1 hora 30 minutos e 20 segundos ? Recebi 208857 qnd dei reload, algo deu errado, eu tinha somente 2 ppoints no adm, ai foi pra 417716 kkkk
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.