PashaBiceps Posted March 31, 2019 Share Posted March 31, 2019 Olá gente, eu acabei o meu script o que está acontecendo é que o jogador perde tudo quando o resource reinicia ou quando o jogador reloga. Como eu posso salvar algo desse tipo? playerCoca[player] = 0; playerBalde[player] = 0; playerTraficante[player] = 0; Obrigado desde já Link to comment
Jonas^ Posted March 31, 2019 Share Posted March 31, 2019 Funções: SetAccountData GetAccountData Eventos: OnResourceStop OnResourceStart OnPlayerLogin OnPlayerQuit OnPlayerLogout -- OBS: Só deve usar se você possuí o /logout ativo no seu servidor, caso contrário não é necessário. Link to comment
PashaBiceps Posted April 1, 2019 Author Share Posted April 1, 2019 18 hours ago, Jonas^ said: Funções: SetAccountData GetAccountData Eventos: OnResourceStop OnResourceStart OnPlayerLogin OnPlayerQuit OnPlayerLogout -- OBS: Só deve usar se você possuí o /logout ativo no seu servidor, caso contrário não é necessário. Não consegui por a salvar, dá este erro. Obrigado pela ajuda attempt to call upvalue 'playerTraficante' (a table value) function onPlayerQuit ( ) local playeraccount = getPlayerAccount ( source ) if ( playeraccount ) and not isGuestAccount ( playeraccount ) then local trabalhotr = playerTraficante ( source ) local ax = playerAx ( source ) local coca = playerCoca ( source ) local bagulho = playerBagulho ( source ) local IngAx1 = playerIngAx1 ( source ) local IngAx2 = playerIngAx2 ( source ) local IngCoca1 = playerIngCoca1 ( source ) local IngCoca2 = playerIngCoca2 ( source ) local IngCoca3 = playerIngCoca3 ( source ) local sementes = playerSementes ( source ) setAccountData ( playeraccount, "trabalhotr", trabalhotr ) setAccountData ( playeraccount, "droga.ax", ax ) setAccountData ( playeraccount, "droga.coca", coca ) setAccountData ( playeraccount, "droga.maconha", bagulho ) setAccountData ( playeraccount, "droga.ingax1", IngAx1 ) setAccountData ( playeraccount, "droga.ingax2", IngAx2 ) setAccountData ( playeraccount, "droga.ingcoca1", IngCoca1 ) setAccountData ( playeraccount, "droga.ingcoca2", IngCoca2 ) setAccountData ( playeraccount, "droga.ingcoca3", IngCoca3 ) setAccountData ( playeraccount, "droga.sementes", sementes ) end end function onPlayerLogin (_, playeraccount ) if ( playeraccount ) then local trabalhotr = getAccountData ( playeraccount, "trabalhotr" ) local ax = getAccountData ( playeraccount, "droga.ax" ) local coca = getAccountData ( playeraccount, "droga.coca" ) local bagulho = getAccountData ( playeraccount, "droga.maconha" ) local IngAx1 = getAccountData ( playeraccount, "droga.ingax1" ) local IngAx2 = getAccountData ( playeraccount, "droga.ingax2" ) local IngCoca1 = getAccountData ( playeraccount, "droga.ingcoca1" ) local IngCoca2 = getAccountData ( playeraccount, "droga.ingcoca2" ) local IngCoca3 = getAccountData ( playeraccount, "droga.ingcoca3" ) local sementes = getAccountData ( playeraccount, "droga.sementes" ) if ( trabalhotr ) then setAccountData ( source, trabalhotr ) end if ( ax ) then setAccountData ( source, ax ) end if ( coca ) then setAccountData ( source, coca ) end if ( bagulho ) then setAccountData ( source, bagulho ) end if ( IngAx1 ) then setAccountData ( source, IngAx1 ) end if ( IngAx2 ) then setAccountData ( source, IngAx2 ) end if ( IngCoca1 ) then setAccountData ( source, IngCoca1 ) end if ( IngCoca2 ) then setAccountData ( source, IngCoca2 ) end if ( IngCoca3 ) then setAccountData ( source, IngCoca3 ) end if ( sementes ) then setAccountData ( source, sementes ) end end end addEventHandler ( "onResourceStop", getRootElement ( ), onPlayerQuit ) addEventHandler ( "onResourceStart", getRootElement ( ), onPlayerLogin ) addEventHandler ( "onPlayerQuit", getRootElement ( ), onPlayerQuit ) addEventHandler ( "onPlayerLogin", getRootElement ( ), onPlayerLogin ) Link to comment
Other Languages Moderators Lord Henry Posted April 3, 2019 Other Languages Moderators Share Posted April 3, 2019 Na sua linha 4. playerTraficante não faz sentido. Onde ele foi declarado? 1 Link to comment
PashaBiceps Posted April 4, 2019 Author Share Posted April 4, 2019 (edited) On 03/04/2019 at 15:15, Lord Henry said: Na sua linha 4. playerTraficante não faz sentido. Onde ele foi declarado? Antes de mais obrigado pela resposta Bom, eu por meu erro estava chamando uma tabela, sendo não possível fazê-lo. Troquei esta local que estava chamando a tabela local trabalhotr = playerTraficante ( source ) Por esta local que chama a Data local trabalhotr = playerTraficante[source] Mas ainda não está salvando essa data, está dando outro erro nessa linha ( Linha 2 ) local playeraccount = getPlayerAccount ( source ) ERRO >> Bad argument @ 'getPlayerAccount' [Expected player or console at argument 1, got resource] Salvamento ( como ele está agora ) function onPlayerQuit ( ) local playeraccount = getPlayerAccount ( source ) if ( playeraccount ) and not isGuestAccount ( playeraccount ) then local trabalhotr = playerTraficante[source] local ax = playerAx[source] local coca = playerCoca[source] local bagulho = playerBagulho[source] local IngAx1 = playerIngAx1[source] local IngAx2 = playerIngAx2 [source] local IngCoca1 = playerIngCoca1 [source] local IngCoca2 = playerIngCoca2 [source] local IngCoca3 = playerIngCoca3 [source] local sementes = playerSementes [source] setAccountData ( playeraccount, "trabalhotr", trabalhotr ) setAccountData ( playeraccount, "droga.ax", ax ) setAccountData ( playeraccount, "droga.coca", coca ) setAccountData ( playeraccount, "droga.maconha", bagulho ) setAccountData ( playeraccount, "droga.ingax1", IngAx1 ) setAccountData ( playeraccount, "droga.ingax2", IngAx2 ) setAccountData ( playeraccount, "droga.ingcoca1", IngCoca1 ) setAccountData ( playeraccount, "droga.ingcoca2", IngCoca2 ) setAccountData ( playeraccount, "droga.ingcoca3", IngCoca3 ) setAccountData ( playeraccount, "droga.sementes", sementes ) end end function onPlayerLogin (_, playeraccount ) if ( playeraccount ) then local trabalhotr = getAccountData ( playeraccount, "trabalhotr" ) local ax = getAccountData ( playeraccount, "droga.ax" ) local coca = getAccountData ( playeraccount, "droga.coca" ) local bagulho = getAccountData ( playeraccount, "droga.maconha" ) local IngAx1 = getAccountData ( playeraccount, "droga.ingax1" ) local IngAx2 = getAccountData ( playeraccount, "droga.ingax2" ) local IngCoca1 = getAccountData ( playeraccount, "droga.ingcoca1" ) local IngCoca2 = getAccountData ( playeraccount, "droga.ingcoca2" ) local IngCoca3 = getAccountData ( playeraccount, "droga.ingcoca3" ) local sementes = getAccountData ( playeraccount, "droga.sementes" ) if ( trabalhotr ) then setAccountData ( source, trabalhotr ) end if ( ax ) then setAccountData ( source, ax ) end if ( coca ) then setAccountData ( source, coca ) end if ( bagulho ) then setAccountData ( source, bagulho ) end if ( IngAx1 ) then setAccountData ( source, IngAx1 ) end if ( IngAx2 ) then setAccountData ( source, IngAx2 ) end if ( IngCoca1 ) then setAccountData ( source, IngCoca1 ) end if ( IngCoca2 ) then setAccountData ( source, IngCoca2 ) end if ( IngCoca3 ) then setAccountData ( source, IngCoca3 ) end if ( sementes ) then setAccountData ( source, sementes ) end end end addEventHandler ( "onResourceStop", getRootElement ( ), onPlayerQuit ) addEventHandler ( "onResourceStart", getRootElement ( ), onPlayerLogin ) addEventHandler ( "onPlayerQuit", getRootElement ( ), onPlayerQuit ) addEventHandler ( "onPlayerLogin", getRootElement ( ), onPlayerLogin ) Edited April 4, 2019 by GodKraken Link to comment
DNL291 Posted April 6, 2019 Share Posted April 6, 2019 Tente: function onPlayerQuitOrResStop ( ) if eventName == "onResourceStop" then for _, player in ipairs(getElementsByType("player")) do savePlayerData( player ) end return end savePlayerData( source ) end function onPlayerLogin (_, playeraccount ) if eventName == "onResourceStart" then for _, player in ipairs(getElementsByType("player")) do loadPlayerData( p ) end return end loadPlayerData( source ) end function savePlayerData( p ) local playeraccount = getPlayerAccount ( p ) if ( playeraccount ) and not isGuestAccount ( playeraccount ) then local trabalhotr = playerTraficante[p] or "n/a" local ax = playerAx[p] or false local coca = playerCoca[p] or false local bagulho = playerBagulho[p] or false local IngAx1 = playerIngAx1[p] or false local IngAx2 = playerIngAx2 [p] or false local IngCoca1 = playerIngCoca1 [p] or false local IngCoca2 = playerIngCoca2 [p] or false local IngCoca3 = playerIngCoca3 [p] or false local sementes = playerSementes [p] or false setAccountData ( playeraccount, "trabalhotr", trabalhotr ) setAccountData ( playeraccount, "droga.ax", ax ) setAccountData ( playeraccount, "droga.coca", coca ) setAccountData ( playeraccount, "droga.maconha", bagulho ) setAccountData ( playeraccount, "droga.ingax1", IngAx1 ) setAccountData ( playeraccount, "droga.ingax2", IngAx2 ) setAccountData ( playeraccount, "droga.ingcoca1", IngCoca1 ) setAccountData ( playeraccount, "droga.ingcoca2", IngCoca2 ) setAccountData ( playeraccount, "droga.ingcoca3", IngCoca3 ) setAccountData ( playeraccount, "droga.sementes", sementes ) end end function loadPlayerData( p ) local playeraccount = getPlayerAccount ( p ) if ( playeraccount ) and not isGuestAccount ( playeraccount ) then local trabalhotr = getAccountData ( playeraccount, "trabalhotr" ) or false local ax = getAccountData ( playeraccount, "droga.ax" ) or false local coca = getAccountData ( playeraccount, "droga.coca" ) or false local bagulho = getAccountData ( playeraccount, "droga.maconha" ) or false local IngAx1 = getAccountData ( playeraccount, "droga.ingax1" ) or false local IngAx2 = getAccountData ( playeraccount, "droga.ingax2" ) or false local IngCoca1 = getAccountData ( playeraccount, "droga.ingcoca1" ) or false local IngCoca2 = getAccountData ( playeraccount, "droga.ingcoca2" ) or false local IngCoca3 = getAccountData ( playeraccount, "droga.ingcoca3" ) or false local sementes = getAccountData ( playeraccount, "droga.sementes" ) or false if ( trabalhotr ) then setElementData( p, "trabalhotr", trabalhotr ) end if ( ax ) then setElementData ( p, "droga.ax", ax ) end if ( coca ) then setElementData ( p, "droga.coca", coca ) end if ( bagulho ) then setElementData ( p, "droga.maconha", bagulho ) end if ( IngAx1 ) then setElementData ( p, "droga.ingax1", IngAx1 ) end if ( IngAx2 ) then setElementData ( p, "droga.ingax2", IngAx2 ) end if ( IngCoca1 ) then setElementData ( p, "droga.ingcoca1", IngCoca1 ) end if ( IngCoca2 ) then setElementData ( p, "droga.ingcoca2", IngCoca2 ) end if ( IngCoca3 ) then setElementData ( p, "droga.ingcoca3", IngCoca3 ) end if ( sementes ) then setElementData ( p, "droga.sementes", sementes ) end end end addEventHandler ( "onResourceStop", resourceRoot, onPlayerQuitOrResStop ) addEventHandler ( "onResourceStart", resourceRoot, onPlayerLogin ) addEventHandler ( "onPlayerQuit", getRootElement ( ), onPlayerQuitOrResStop ) addEventHandler ( "onPlayerLogin", getRootElement ( ), onPlayerLogin ) 1 Link to comment
PashaBiceps Posted April 9, 2019 Author Share Posted April 9, 2019 On 06/04/2019 at 19:11, DNL291 said: Tente: function onPlayerQuitOrResStop ( ) if eventName == "onResourceStop" then for _, player in ipairs(getElementsByType("player")) do savePlayerData( player ) end return end savePlayerData( source ) end function onPlayerLogin (_, playeraccount ) if eventName == "onResourceStart" then for _, player in ipairs(getElementsByType("player")) do loadPlayerData( p ) end return end loadPlayerData( source ) end function savePlayerData( p ) local playeraccount = getPlayerAccount ( p ) if ( playeraccount ) and not isGuestAccount ( playeraccount ) then local trabalhotr = playerTraficante[p] or "n/a" local ax = playerAx[p] or false local coca = playerCoca[p] or false local bagulho = playerBagulho[p] or false local IngAx1 = playerIngAx1[p] or false local IngAx2 = playerIngAx2 [p] or false local IngCoca1 = playerIngCoca1 [p] or false local IngCoca2 = playerIngCoca2 [p] or false local IngCoca3 = playerIngCoca3 [p] or false local sementes = playerSementes [p] or false setAccountData ( playeraccount, "trabalhotr", trabalhotr ) setAccountData ( playeraccount, "droga.ax", ax ) setAccountData ( playeraccount, "droga.coca", coca ) setAccountData ( playeraccount, "droga.maconha", bagulho ) setAccountData ( playeraccount, "droga.ingax1", IngAx1 ) setAccountData ( playeraccount, "droga.ingax2", IngAx2 ) setAccountData ( playeraccount, "droga.ingcoca1", IngCoca1 ) setAccountData ( playeraccount, "droga.ingcoca2", IngCoca2 ) setAccountData ( playeraccount, "droga.ingcoca3", IngCoca3 ) setAccountData ( playeraccount, "droga.sementes", sementes ) end end function loadPlayerData( p ) local playeraccount = getPlayerAccount ( p ) if ( playeraccount ) and not isGuestAccount ( playeraccount ) then local trabalhotr = getAccountData ( playeraccount, "trabalhotr" ) or false local ax = getAccountData ( playeraccount, "droga.ax" ) or false local coca = getAccountData ( playeraccount, "droga.coca" ) or false local bagulho = getAccountData ( playeraccount, "droga.maconha" ) or false local IngAx1 = getAccountData ( playeraccount, "droga.ingax1" ) or false local IngAx2 = getAccountData ( playeraccount, "droga.ingax2" ) or false local IngCoca1 = getAccountData ( playeraccount, "droga.ingcoca1" ) or false local IngCoca2 = getAccountData ( playeraccount, "droga.ingcoca2" ) or false local IngCoca3 = getAccountData ( playeraccount, "droga.ingcoca3" ) or false local sementes = getAccountData ( playeraccount, "droga.sementes" ) or false if ( trabalhotr ) then setElementData( p, "trabalhotr", trabalhotr ) end if ( ax ) then setElementData ( p, "droga.ax", ax ) end if ( coca ) then setElementData ( p, "droga.coca", coca ) end if ( bagulho ) then setElementData ( p, "droga.maconha", bagulho ) end if ( IngAx1 ) then setElementData ( p, "droga.ingax1", IngAx1 ) end if ( IngAx2 ) then setElementData ( p, "droga.ingax2", IngAx2 ) end if ( IngCoca1 ) then setElementData ( p, "droga.ingcoca1", IngCoca1 ) end if ( IngCoca2 ) then setElementData ( p, "droga.ingcoca2", IngCoca2 ) end if ( IngCoca3 ) then setElementData ( p, "droga.ingcoca3", IngCoca3 ) end if ( sementes ) then setElementData ( p, "droga.sementes", sementes ) end end end addEventHandler ( "onResourceStop", resourceRoot, onPlayerQuitOrResStop ) addEventHandler ( "onResourceStart", resourceRoot, onPlayerLogin ) addEventHandler ( "onPlayerQuit", getRootElement ( ), onPlayerQuitOrResStop ) addEventHandler ( "onPlayerLogin", getRootElement ( ), onPlayerLogin ) Bom, ainda não salvou, talvez porque eu não esteja adicionando a data corretamente. Eu uso isso para atribuir o bagulho no fim do trabalho por exemplo. playerAx[player] = playerAx[player] + 500; Não terei de adicionar à data de um modo diferente? Obrigado pela resposta anterior Link to comment
DNL291 Posted April 9, 2019 Share Posted April 9, 2019 Deve funcionar assim. Mas lembre-se de usar o comando /debugscript 3 sempre que testar o código. A propósito, eu corrigi um erro que havia no meu código, na função onPlayerLogin (linha 12) substitua : loadPlayerData( p ) Com loadPlayerData( player ) Indexe as tabelas corretamente, com um elemento do jogador válido para evitar erros no salvamento. Te recomendo usar outputs com os valores existentes no código ao testar o script no server. 1 Link to comment
PashaBiceps Posted April 10, 2019 Author Share Posted April 10, 2019 10 hours ago, DNL291 said: Deve funcionar assim. Mas lembre-se de usar o comando /debugscript 3 sempre que testar o código. A propósito, eu corrigi um erro que havia no meu código, na função onPlayerLogin (linha 12) substitua : loadPlayerData( p ) Com loadPlayerData( player ) Indexe as tabelas corretamente, com um elemento do jogador válido para evitar erros no salvamento. Te recomendo usar outputs com os valores existentes no código ao testar o script no server. No debugscript não dá qualquer erro. Porém apenas a data "trabalhotr" apareceu na base de dados. O resto não está salvando. Link to comment
DNL291 Posted April 12, 2019 Share Posted April 12, 2019 Mostre o seu código completo. Pode ser que tenha algo errado com essas tabelas. 1 Link to comment
PashaBiceps Posted April 12, 2019 Author Share Posted April 12, 2019 7 hours ago, DNL291 said: Mostre o seu código completo. Pode ser que tenha algo errado com essas tabelas. Resolvido! Alterei a atribuição da data de todo script disto playerAx[player] = playerAx[player] + 500; para isto setElementData(source,"droga.ax",getElementData(source,"droga.ax")+500) 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