PashaBiceps Posted March 31, 2019 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á
Jonas^ Posted March 31, 2019 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.
PashaBiceps Posted April 1, 2019 Author 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 )
Moderators Lord Henry Posted April 3, 2019 Moderators Posted April 3, 2019 Na sua linha 4. playerTraficante não faz sentido. Onde ele foi declarado? 1 Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanks! Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment Discord Oficial do MTA: https://mtasa.com/discord Blacklist e Whitelist de Scripters: Planilha Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.
PashaBiceps Posted April 4, 2019 Author 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
DNL291 Posted April 6, 2019 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 Please do not PM me with scripting related question nor support, use the forums instead.
PashaBiceps Posted April 9, 2019 Author 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
DNL291 Posted April 9, 2019 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 Please do not PM me with scripting related question nor support, use the forums instead.
PashaBiceps Posted April 10, 2019 Author 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.
DNL291 Posted April 12, 2019 Posted April 12, 2019 Mostre o seu código completo. Pode ser que tenha algo errado com essas tabelas. 1 Please do not PM me with scripting related question nor support, use the forums instead.
PashaBiceps Posted April 12, 2019 Author 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
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