---------------------------- SALVAR
function onPlayerQuitOrResStop (prevAcc, _)
if eventName == "onResourceStop" then
for i, player in ipairs(getElementsByType("player")) do
savePlayerData (player)
end
elseif eventName == "onPlayerQuit" then
savePlayerData (source)
elseif eventName == "onPlayerLogout" then -- Neste caso, só é possível salvar na conta que o jogador estava logado por meio do parâmetro de função. Se usar getPlayerAccount agora, vai retornar conta Guest.
savePlayerData (source, prevAcc)
end
end
addEventHandler ("onResourceStop", resourceRoot, onPlayerQuitOrResStop)
addEventHandler ("onPlayerQuit", getRootElement(), onPlayerQuitOrResStop)
addEventHandler ("onPlayerLogout", getRootElement(), onPlayerQuitOrResStop)
function loadMyData (_, currAcc)
if eventName == "onResourceStart" then -- Foi esperto usar isso para aproveitar a mesma função para eventos diferentes.
for i, player in ipairs(getElementsByType("player")) do
loadPlayerData (player)
end
elseif eventName == "onPlayerLogin" then
loadPlayerData (source, currAcc)
end
end
addEventHandler ("onResourceStart", resourceRoot, loadMyData) -- Não se usa nome de função igual nome de evento, por isso troquei.
addEventHandler ("onPlayerLogin", getRootElement(), loadMyData) -- Recomenda-se colocar os eventos logo após as funções que eles vão ativar, para facilitar a leitura.
function savePlayerData (p, acc)
local playeraccount = false -- Cria a variável local.
if acc then
playeraccount = acc -- playerAccount = conta que o jogador ESTAVA logado. Esta variável ainda é local, aqui apenas foi atribuido valor a ela.
else
playeraccount = getPlayerAccount (p)
end
if (playeraccount) and not isGuestAccount (playeraccount) then
--local trabalhotr = playerTraficante[p] or "n/a"
local ax = playerAx[p]
local coca = playerCoca[p]
local bagulho = playerBagulho[p]
local IngAx1 = playerIngAx1[p]
local IngAx2 = playerIngAx2 [p]
local IngCoca1 = playerIngCoca1 [p]
local IngCoca2 = playerIngCoca2 [p]
local IngCoca3 = playerIngCoca3 [p]
local sementes = playerSementes [p]
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, acc)
local playeraccount = false
if acc then
playeraccount = acc
else
playeraccount = getPlayerAccount (p)
end
if (playeraccount) and not isGuestAccount (playeraccount) then
local ax = getAccountData (playeraccount, "droga.ax") -- Não precisa do 'or false' pois a função getAccountData já retornará false caso a data não exista.
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 (ax) then setElementData (p, "droga.ax", ax) end -- Passa todas as accountDatas para elementData (isso pesa bastante no servidor, tenha certeza do que está fazendo.)
if (coca) then setElementData (p, "droga.coca", coca) end -- Está correto em manter datas parecidas com um índice separado pelo ponto.
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
Não testado.
Se tiver erros, mostre o /debugscript 3