Giovany Mito Posted July 12, 2019 Share 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) Link to comment
DNL291 Posted July 13, 2019 Share 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 Link to comment
Giovany Mito Posted July 13, 2019 Author Share 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 Link to comment
DNL291 Posted July 13, 2019 Share 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 ? Link to comment
Giovany Mito Posted July 17, 2019 Author Share 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 ? Link to comment
carlos eduardo Posted July 17, 2019 Share 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 Link to comment
Other Languages Moderators androksi Posted July 17, 2019 Other Languages Moderators Share 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 Link to comment
Giovany Mito Posted July 17, 2019 Author Share 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 Link to comment
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