Giovany Mito Posted July 12, 2019 Posted July 12, 2019 Olá, Estou com problemas com um sistema de level. Ele esta funcionando normalmente, a cada uma hora ele sobe um level, mais quando reinicio o servidor os level reseta parece volta do 0 Olhei o DB e la esta o level, parece q a resource nao puxa o level de volta quando reinicia o servidor Server function upLevel() local players = getElementsByType("player") local get_players = {} for i = 1, #players do local player = players[i] local player_acc = getPlayerAccount(player) if player and player_acc and not isGuestAccount(player_acc) then local minutes = getElementData(player, "minutes") if not minutes then setElementData(player, "minutes", 1) else setElementData(player, "minutes", minutes + 1) end if getElementData(player, "minutes") > 59 then local level = getElementData(player, "Level") or 0 local bonus = math.random(25, 950) local interest = math.random(25, 150) local value = bonus - interest setElementData(player, "minutes", 0) setElementData(player, "Level", level + 1) --outputChatBox("#FFFFFF[ #FAAC58FW-LEVEL #FFFFFF]", player, 255, 255, 255, true) -- outputChatBox ("# FAAC58 ** # FFFFFFVocê ganhou Mais Um # FAAC58 nível", jogador ,255,255,255,verdade) -- outputChatBox ("# FAAC58 ** # FFFFFFPagamento: R $ # 00FF00"..valor, player ,255,255,255,true) outputChatBox ("#FFFFFF [ #FAAC58FW-LEVEL #FFFFFF]", player, 255, 255, 255, true ) outputChatBox ("#FAAC58 ** #FFFFFFVocê ganhou Mais um #FAAC58Nivel", player, 255, 255, 255, true ) outputChatBox ("#FAAC58 ** #FFFFFFPagamento: R$ #00FF00"..value, player, 255, 255, 255, true ) givePlayerMoney(player, value) table.insert(get_players, player) end end end triggerClientEvent(get_players, "blipuplevel", resourceRoot) end setTimer(upLevel, 60000, 0) function setLevelLogin () local account = getPlayerAccount(source) if ( account ) then local Level = (getAccountData(account,"Level") or 0) local minutes = (getAccountData(account,"minutes") or 0) setElementData(source,"Level",Level) setElementData(source,"minutes",minutes) end end addEventHandler("onPlayerLogin",getRootElement(),setLevelLogin) function setLevelJoin () setElementData(source,"Level",0) setElementData(source,"minutes",0) end addEventHandler("onPlayerJoin",getRootElement(),setLevelJoin) function setLevelQuit () local account = getPlayerAccount(source) if ( account ) then local minutes = (getElementData(source,"minutes") or 0) local Level = (getElementData(source,"Level") or 0) setAccountData(account,"minutes",minutes) setAccountData(account,"Level",Level) end end addEventHandler("onPlayerQuit",getRootElement(),setLevelQuit) Client local sx,sy = guiGetScreenSize() local px,py = 1366,768 local x,y = (sx/px),(sy/py) function drawLevel () local levelProgress = (getElementData(localPlayer,"minutes") or 0) dxDrawRectangle(x*803, y*743, x*160/58*levelProgress, y*19, tocolor(0, 0, 0, 130), false) dxDrawRectangle(x*800, y*740, x*170, y*25, tocolor(0, 0, 0, 120), false) dxDrawText("LEVEL: "..(getElementData(localPlayer,"Level") or 0), x*854, y*746, x*10, y*10, tocolor(255, 255, 255, 255), x*0.9, "default", "left", "top", false, false, false, false, false) end addEventHandler("onClientRender",getRootElement(),drawLevel) function blipuplevel() local sound = playSound("som/blip.mp3") setSoundVolume(sound, 1.0) end addEvent("blipuplevel", true) addEventHandler("blipuplevel", resourceRoot, blipuplevel)
DNL291 Posted July 13, 2019 Posted July 13, 2019 Olhando o código não achei erros, porém, está salvando só no "onPlayerQuit" e para salvar quando desligar o servidor ou quando parar o resource você vai precisar de: onResourceStop/getElementsByType("player")/getPlayerAccount/isGuestAccount/getAccountData/setAccountData Please do not PM me with scripting related question nor support, use the forums instead.
Giovany Mito Posted July 13, 2019 Author Posted July 13, 2019 Quando eu paro a resource e dou start novamente volta o level normal... Só me ocorre esse problema ao reiniciar o servidor
DNL291 Posted July 13, 2019 Posted July 13, 2019 Hm, então esse código aí está incompleto porque o onResourceStop tá faltando. Quando desliga o servidor vai forçar o desligamento de todos resources, ou seja, o "onResourceStop" deveria ter funcionado do mesmo jeito. Você está desligando o console com ctrl + c ? Please do not PM me with scripting related question nor support, use the forums instead.
Giovany Mito Posted July 17, 2019 Author Posted July 17, 2019 Desligo na hospedagem, TcAdmin On 13/07/2019 at 17:09, DNL291 said: Hm, então esse código aí está incompleto porque o onResourceStop tá faltando. Quando desliga o servidor vai forçar o desligamento de todos resources, ou seja, o "onResourceStop" deveria ter funcionado do mesmo jeito. Você está desligando o console com ctrl + c ?
carlos eduardo Posted July 17, 2019 Posted July 17, 2019 (edited) Não lembro, mas que eu me lembe setar no "setElementData" ele só salva enquanto o player esta logado, ao reiniciar perde a data do element OBS:Não tenho certeza edit: Voce está setando os dados no element na linha 19 e 20, e quando o player loga voce ta tentando puxar o AccountData do player na linha 39 e 40 Edited July 17, 2019 by carlos eduardo
androksi Posted July 17, 2019 Posted July 17, 2019 (edited) Troque isto: function setLevelLogin () local account = getPlayerAccount(source) if ( account ) then local Level = (getAccountData(account,"Level") or 0) local minutes = (getAccountData(account,"minutes") or 0) setElementData(source,"Level",Level) setElementData(source,"minutes",minutes) end end addEventHandler("onPlayerLogin",getRootElement(),setLevelLogin) Por isto: function setLevelLogin (_, account) local Level = (getAccountData(account,"Level") or 0) local minutes = (getAccountData(account,"minutes") or 0) setElementData(source,"Level",Level) setElementData(source,"minutes",minutes) end addEventHandler("onPlayerLogin",getRootElement(),setLevelLogin) O primeiro argumento da sua função getAccountData está incorreto. O evento onPlayerLogin já fornece a conta do jogador, não é necessário usar getPlayerAccount. Aliás, esta função não retorna a conta, e sim o objeto dela, no caso o jogador responsável. Se você quer obter a conta do jogador, use getAccount. Edited July 17, 2019 by asrzkj 1 Hello, world. Tutorial sobre interação de BOTs do Discord com o seu servidor - Visitar (Brazilian Portuguese) Tutorial sobre tabelas - Visitar (Brazilian Portuguese) Tutorial sobre banco de dados - Visitar (Brazilian Portuguese)
Giovany Mito Posted July 17, 2019 Author Posted July 17, 2019 1 hour ago, carlos eduardo said: Não lembro, mas que eu me lembe setar no "setElementData" ele só salva enquanto o player esta logado, ao reiniciar perde a data do element OBS:Não tenho certeza edit: Voce está setando os dados no element na linha 19 e 20, e quando o player loga voce ta tentando puxar o AccountData do player na linha 39 e 40 Eu reinicio o a resource volta normalmente, eu saiu do servidor e entro de novo e volta normalmente, o problema eu eu desligar o servidor e liga de novo 1 hour ago, asrzkj said: Troque isto: function setLevelLogin () local account = getPlayerAccount(source) if ( account ) then local Level = (getAccountData(account,"Level") or 0) local minutes = (getAccountData(account,"minutes") or 0) setElementData(source,"Level",Level) setElementData(source,"minutes",minutes) end end addEventHandler("onPlayerLogin",getRootElement(),setLevelLogin) Por isto: function setLevelLogin (_, account) local Level = (getAccountData(account,"Level") or 0) local minutes = (getAccountData(account,"minutes") or 0) setElementData(source,"Level",Level) setElementData(source,"minutes",minutes) end addEventHandler("onPlayerLogin",getRootElement(),setLevelLogin) O primeiro argumento da sua função getAccountData está incorreto. O evento onPlayerLogin já fornece a conta do jogador, não é necessário usar getPlayerAccount. Aliás, esta função não retorna a conta, e sim o objeto dela, no caso o jogador responsável. Se você quer obter a conta do jogador, use getAccount. [2019-07-17 18:17:29] SCRIPT ERROR: [FW]Score/Arc_s.Lua:36: '(' expected near '�' [2019-07-17 18:17:29] ERROR: Loading script failed: [FW]Score/Arc_s.Lua:36: '(' expected near '�' no caso essa linha function setLevelLogin (_, account) 5 minutes ago, giovanymito said: Eu reinicio o a resource volta normalmente, eu saiu do servidor e entro de novo e volta normalmente, o problema eu eu desligar o servidor e liga de novo [2019-07-17 18:17:29] SCRIPT ERROR: [FW]Score/Arc_s.Lua:36: '(' expected near '�' [2019-07-17 18:17:29] ERROR: Loading script failed: [FW]Score/Arc_s.Lua:36: '(' expected near '�' no caso essa linha function setLevelLogin (_, account) Escrevi novamente a linha agora deu Certo Obrigado 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now