| 
 Dados deletados ao reiniciar o servidor - Ryzen_ -  16/03/2024
 
 Em alguns momentos quando reinicio meu servidor, algum player acaba voltando com sua conta tendo o dinheiro, level, cargo, emprego e skins deletadas. Estou utilizando DOF2 para realizar o salvamento, mas simplesmente não consigo encontrar o que pode estar causando isso (Obs.: a parte de salvamento foi feita por um colega da equipe que também codifica na GM). De começo eu notei que estava faltando a função DOF2_SaveFile() ao final da SaveAccount(playerid), mas mesmo após a inserir, continua acontecendo o mesmo problema. Não é sempre que acontece, geralmente é quando eu reinicio o servidor várias vezes enquanto estou adicionando novas funcionalidades, daí em uma delas, ao voltar para o game ele acaba dando uma mensagem de crash ou fechando do nada, e quando volto estou setado com a skin do CJ e caindo no limbo. Se alguém puder me ajudar com isso, ficarei grato! Caso precisem de mais informações, basta me perguntar.
 
 SaveAccount:
 
 Código PHP: stock SaveAccount(playerid) {format(File, sizeof(File), PASTA_CONTAS, GetPlayerNameEx(playerid));
 
 DOF2_SetInt(File, "Level", PlayerInfo[playerid][pLevel]);
 DOF2_SetInt(File, "EXP", PlayerInfo[playerid][pExp]);
 DOF2_SetInt(File, "Admin", PlayerInfo[playerid][pAdmin]);
 DOF2_SetInt(File, "Dinheiro", PlayerInfo[playerid][pGrana]);
 DOF2_SetInt(File, "Skin", PlayerInfo[playerid][pSkin]);
 DOF2_SetInt(File, "Sexo", PlayerInfo[playerid][pSexo]);
 DOF2_SetInt(File, "Fome", PlayerInfo[playerid][pFome]);
 DOF2_SetInt(File, "Sede", PlayerInfo[playerid][pSede]);
 DOF2_SetInt(File, "Sono", PlayerInfo[playerid][pSono]);
 DOF2_SetInt(File, "Emprego", PlayerInfo[playerid][pEmprego]);
 DOF2_SetInt(File, "CategoriaEmprego", PlayerInfo[playerid][pEmpregoCategoria]);
 DOF2_SetInt(File, "NivelProcurado", PlayerInfo[playerid][pWantedLevel]);
 DOF2_SetInt(File, "TempoPreso", PlayerInfo[playerid][pTempoPreso]);
 DOF2_SetBool(File, "Preso", PlayerInfo[playerid][pPreso]);
 DOF2_SetBool(File, "Mutado", PlayerInfo[playerid][pMutado]);
 DOF2_SetInt(File, "TempoMutado", PlayerInfo[playerid][pTempoMutado]);
 
 DOF2_SetBool(File, "Contrato", PlayerInfo[playerid][pContrato]);
 DOF2_SetInt(File, "ValorContrato", PlayerInfo[playerid][pValorContrato]);
 
 DOF2_SetInt(File, "Organizacao", PlayerInfo[playerid][pOrganizacao]);
 DOF2_SetInt(File, "Cargo", PlayerInfo[playerid][pCargo]);
 
 new day, month, year;
 getdate(year, month, day);
 format(STRX, 128, "%02d/%02d/%04d", day, month, year);
 DOF2_SetString(File, "UltimoLogin", STRX);
 
 new Float:X, Float:Y, Float:Z, intid;
 GetPlayerPos(playerid, X, Y, Z);
 intid = GetPlayerInterior(playerid);
 
 PlayerInfo[playerid][pPosX] = X;
 PlayerInfo[playerid][pPosY] = Y;
 PlayerInfo[playerid][pPosZ] = Z;
 PlayerInfo[playerid][pInterior] = intid;
 
 DOF2_SetFloat(File, "PosX", PlayerInfo[playerid][pPosX]);
 DOF2_SetFloat(File, "PosY", PlayerInfo[playerid][pPosY]);
 DOF2_SetFloat(File, "PosZ", PlayerInfo[playerid][pPosZ]);
 DOF2_SetInt(File, "Interior", PlayerInfo[playerid][pInterior]);
 DOF2_SaveFile();
 
 return 1;
 }
 
OnPlayerDisconnect:
 
 Código PHP: public OnPlayerDisconnect(playerid, reason) {SaveAccount(playerid);
 
 if(GetPVarInt(playerid, "Fardado")) {
 DeletePVar(playerid, "Fardado");
 SetPlayerSkin(playerid, GetPVarInt(playerid, "PreviousSkin"));
 DeletePVar(playerid, "PreviousSkin");
 }
 
 if(GetPVarInt(playerid, "Alugou")) {
 DestroyVehicle(GetPVarInt(playerid, "AlugadoID"));
 
 DestroyDynamic3DTextLabel(TrashTruckInfo[GetPVarInt(playerid, "AlugadoID")][tLabel]);
 TrashTruckInfo[GetPVarInt(playerid, "AlugadoID")][tLabel] = Text3D:INVALID_3DTEXT_ID;
 
 DeletePVar(playerid, "AlugadoID");
 DeletePVar(playerid, "Alugou");
 }
 
 if(GetPVarInt(playerid, "criouv")) {
 DeletePVar(playerid, "criouv");
 
 if(GetPVarInt(playerid, "cvehid") != INVALID_VEHICLE_ID) DestroyVehicle(GetPVarInt(playerid, "cvehid"));
 
 DeletePVar(playerid, "cvehid");
 }
 
 if(PlayerInfo[playerid][pPreso]) {
 DOF2_SetInt(FormatAccFile(playerid), "TempoPreso", PlayerInfo[playerid][pTempoPreso]);
 KillTimer(TimerPrisao[playerid]);
 }
 
 // Timers
 KillTimer(ClockTimer[playerid]);
 KillTimer(TimerHunger[playerid]);
 KillTimer(TimerSono[playerid]);
 KillTimer(TimerSede[playerid]);
 KillTimer(TimerCar[playerid]);
 KillTimer(TimerExpirarLogin[playerid]);
 KillTimer(TimerAbastecer[playerid]);
 KillTimer(TimerProcurado[playerid]);
 
 DeletePVar(playerid, "Abastecendo");
 HideGlobalGasolinaText(playerid);
 HidePlayerGasolinaText(playerid);
 
 if(HotelInfo[playerid][hInHotel]) {
 SetPlayerInterior(playerid, 0);
 SetPlayerPos(playerid, 332.0835,-1515.6294,35.8672);
 SetPlayerVirtualWorld(playerid, 0);
 
 HotelInfo[playerid][hInHotel] = false;
 HotelInfo[playerid][hVWorld] = 0;
 }
 
 
 // Reset
 PlayerInfo[playerid][pRcon] = false;
 PlayerInfo[playerid][pAFK] = false;
 
 if(GetPVarInt(playerid, "Algemado")) {
 SendClientMessageToAllEx(Verde, "| INFO | %s saiu algemado e portanto foi punido automaticamente", GetPlayerNameEx(playerid));
 
 GivePlayerWanted(playerid, GetPlayerWanted(playerid) * 2);
 GivePlayerLevel(playerid, -3);
 GivePlayerCash(playerid, -15000);
 }
 
 if(PlayerInfo[playerid][pPegouEmprego]) {
 RemovePlayerMapIcon(playerid, 1);
 PlayerInfo[playerid][pPegouEmprego] = false;
 DeletePVar(playerid, "EmpregoID");
 }
 
 if (GetPVarInt(playerid, "Called")) {
 CallStarted[playerid] = false;
 InCall[playerid] = false;
 DeletePVar(playerid, "Called");
 }
 return 1;
 }
 
Caso sirva de algo, aqui está a mensagem de crash:
 
 Código: SA-MP 0.3.7-R5Exception At Address: 0x0460D9D1
 Base: 0x04570000
 
 Registers:
 EAX: 0x00000045    EBX: 0xFFFFFFFF    ECX: 0x00000040    EDX: 0x00619000
 ESI: 0x49F764FF    EDI: 0x00000003    EBP: 0x0177F688    ESP: 0x0177F618
 EFLAGS: 0x00010206
 
 Stack:
 +0000: 0x0421EB08   0x007F99B0   0x045E4836   0x007F99B0
 +0010: 0x007F99C7   0x041312C0   0x007FB1C3   0x0421EB08
 +0020: 0x00060E7E   0x00000000   0x01974178   0x041BE8B4
 +0030: 0x007EE388   0x0421EB08   0x00060E7E   0x00000000
 +0040: 0x0177F708   0x0074526A   0x041BE8B4   0x00060E7E
 +0050: 0x00000000   0x0053EC06   0x041BE8B4   0x041BE8B4
 +0060: 0x44700000   0x44070000   0x5F82FC50   0x00000001
 +0070: 0x0177F6D0   0x5F82B8E9   0x0177F6DC   0x0198D120
 +0080: 0x5F888A9C   0x01974178   0x00060E7E   0x00000000
 +0090: 0x0177F6C0   0x7548E74B   0x00000113   0x00000001
 +00A0: 0x00000000   0x0177F698   0x0177F698   0x0177F6F4
 +00B0: 0x5F883B40   0x00000001   0x0177F6E4   0x5F82FC02
 +00C0: 0x0198D134   0x00000001   0x0177F888   0x0177F700
 +00D0: 0x5F82E267   0x0177F708   0x0177F888   0x0177F868
 +00E0: 0x5F883B58   0x00000000   0x0177F874   0x5F830246
 +00F0: 0x5F8889A4   0x01974178   0x00060E7E   0xDCBAABCD
 +0100: 0x00000000   0x0177F868   0x5F883D85   0xFFFFFFFF
 +0110: 0x0177F874   0x00000000   0x0177F888   0x0000001A
 +0120: 0x00000001   0x00000000   0x00000000   0x003B7000
 +0130: 0x00000001   0xA8A5E770   0x00000000   0x77698850
 +0140: 0x00000001   0x00000000   0x00000000   0x00000070
 +0150: 0x00000000   0x00760994   0x00000000   0x0177F74C
 +0160: 0x02262DD0   0x0177F7D8   0x75475A70   0xDC9FFB14
 +0170: 0xFFFFFFFE   0x0177F7C8   0x7546D6DF   0x0233F9F0
 +0180: 0x776767AC   0x7546D6F7   0x0177F7B0   0x00000018
 +0190: 0x00000000   0x0177F8F8   0x00000000   0x00000000
 +01A0: 0x00000000   0x00000000   0x00000000   0x00000000
 +01B0: 0x0177F850   0x77678D6D   0x0177F7E4   0x00000020
 +01C0: 0x0177F980   0x7FFE8000   0x0000AA64   0x77661532
 +01D0: 0x0177F840   0x0177F844   0x00000000   0xFFFFFFFF
 +01E0: 0x72D5AE20   0x77698850   0x00000000   0x7546C70F
 +01F0: 0x0177F8F8   0x00000000   0x00000000   0x00000000
 +0200: 0x6576CE2C   0x0177F894   0x77661220   0xFFFFFFFF
 +0210: 0x0177F844   0x7766133A   0x5F8889A4   0x01974178
 +0220: 0x00000000   0x00000001   0xA8A58664   0x0000014C
 +0230: 0x9FBFDFA1   0x00B1750F   0x00192FD4   0x00000000
 +0240: 0x01974178   0x01973930   0x7FFE8000   0x546C6148
 +0250: 0x0177F980   0x5F883CEC   0x00000000   0x0177F880
 +0260: 0x5F83013C   0x0177F888   0x754D78F0   0x0053ECC2
 +0270: 0x00000001   0x00619B71   0x0000001A   0x00000001
 
 SCM Op: 0x248, lDbg: 0 LastRendObj: 3276
 
 Game Version: US 1.0
 
 State Information: Ped Context: 0
 
 RE: Dados deletados ao reiniciar o servidor - White_Blue -  16/03/2024
 
 Se possível, também mande a callback OnGameModeExit. Não entendi por que você enviou o crash report, já que você disse que isso só acontece quando o servidor é reiniciado.
 
 
 RE: Dados deletados ao reiniciar o servidor - Ryzen_ -  16/03/2024
 
 
  (16/03/2024 08:17)White_Blue Escreveu:  Se possível, também mande a callback OnGameModeExit. Não entendi por que você enviou o crash report, já que você disse que isso só acontece quando o servidor é reiniciado. Achei que poderia servir de algo.
 
 OnGameModeExit()
 
 Código PHP: public OnGameModeExit() {foreach(new i: Player) {
 if(IsPlayerConnected(i)) {
 SaveAccount(i);
 }
 }
 
 DOF2_Exit();
 print("Servidor reiniciado");
 return 1;
 }
 
 
 RE: Dados deletados ao reiniciar o servidor - Notknown -  16/03/2024
 
 
  (16/03/2024 02:35)Ryzen_ Escreveu:  Em alguns momentos quando reinicio meu servidor, algum player acaba voltando com sua conta tendo o dinheiro, level, cargo, emprego e skins deletadas. Estou utilizando DOF2 para realizar o salvamento, mas simplesmente não consigo encontrar o que pode estar causando isso (Obs.: a parte de salvamento foi feita por um colega da equipe que também codifica na GM). De começo eu notei que estava faltando a função DOF2_SaveFile() ao final da SaveAccount(playerid), mas mesmo após a inserir, continua acontecendo o mesmo problema. Não é sempre que acontece, geralmente é quando eu reinicio o servidor várias vezes enquanto estou adicionando novas funcionalidades, daí em uma delas, ao voltar para o game ele acaba dando uma mensagem de crash ou fechando do nada, e quando volto estou setado com a skin do CJ e caindo no limbo. Se alguém puder me ajudar com isso, ficarei grato! Caso precisem de mais informações, basta me perguntar.
 SaveAccount:
 
 Código PHP: stock SaveAccount(playerid) {format(File, sizeof(File), PASTA_CONTAS, GetPlayerNameEx(playerid));
 
 DOF2_SetInt(File, "Level", PlayerInfo[playerid][pLevel]);
 DOF2_SetInt(File, "EXP", PlayerInfo[playerid][pExp]);
 DOF2_SetInt(File, "Admin", PlayerInfo[playerid][pAdmin]);
 DOF2_SetInt(File, "Dinheiro", PlayerInfo[playerid][pGrana]);
 DOF2_SetInt(File, "Skin", PlayerInfo[playerid][pSkin]);
 DOF2_SetInt(File, "Sexo", PlayerInfo[playerid][pSexo]);
 DOF2_SetInt(File, "Fome", PlayerInfo[playerid][pFome]);
 DOF2_SetInt(File, "Sede", PlayerInfo[playerid][pSede]);
 DOF2_SetInt(File, "Sono", PlayerInfo[playerid][pSono]);
 DOF2_SetInt(File, "Emprego", PlayerInfo[playerid][pEmprego]);
 DOF2_SetInt(File, "CategoriaEmprego", PlayerInfo[playerid][pEmpregoCategoria]);
 DOF2_SetInt(File, "NivelProcurado", PlayerInfo[playerid][pWantedLevel]);
 DOF2_SetInt(File, "TempoPreso", PlayerInfo[playerid][pTempoPreso]);
 DOF2_SetBool(File, "Preso", PlayerInfo[playerid][pPreso]);
 DOF2_SetBool(File, "Mutado", PlayerInfo[playerid][pMutado]);
 DOF2_SetInt(File, "TempoMutado", PlayerInfo[playerid][pTempoMutado]);
 
 DOF2_SetBool(File, "Contrato", PlayerInfo[playerid][pContrato]);
 DOF2_SetInt(File, "ValorContrato", PlayerInfo[playerid][pValorContrato]);
 
 DOF2_SetInt(File, "Organizacao", PlayerInfo[playerid][pOrganizacao]);
 DOF2_SetInt(File, "Cargo", PlayerInfo[playerid][pCargo]);
 
 new day, month, year;
 getdate(year, month, day);
 format(STRX, 128, "%02d/%02d/%04d", day, month, year);
 DOF2_SetString(File, "UltimoLogin", STRX);
 
 new Float:X, Float:Y, Float:Z, intid;
 GetPlayerPos(playerid, X, Y, Z);
 intid = GetPlayerInterior(playerid);
 
 PlayerInfo[playerid][pPosX] = X;
 PlayerInfo[playerid][pPosY] = Y;
 PlayerInfo[playerid][pPosZ] = Z;
 PlayerInfo[playerid][pInterior] = intid;
 
 DOF2_SetFloat(File, "PosX", PlayerInfo[playerid][pPosX]);
 DOF2_SetFloat(File, "PosY", PlayerInfo[playerid][pPosY]);
 DOF2_SetFloat(File, "PosZ", PlayerInfo[playerid][pPosZ]);
 DOF2_SetInt(File, "Interior", PlayerInfo[playerid][pInterior]);
 DOF2_SaveFile();
 
 return 1;
 }
 
OnPlayerDisconnect:
 
 Código PHP: public OnPlayerDisconnect(playerid, reason) {SaveAccount(playerid);
 
 if(GetPVarInt(playerid, "Fardado")) {
 DeletePVar(playerid, "Fardado");
 SetPlayerSkin(playerid, GetPVarInt(playerid, "PreviousSkin"));
 DeletePVar(playerid, "PreviousSkin");
 }
 
 if(GetPVarInt(playerid, "Alugou")) {
 DestroyVehicle(GetPVarInt(playerid, "AlugadoID"));
 
 DestroyDynamic3DTextLabel(TrashTruckInfo[GetPVarInt(playerid, "AlugadoID")][tLabel]);
 TrashTruckInfo[GetPVarInt(playerid, "AlugadoID")][tLabel] = Text3D:INVALID_3DTEXT_ID;
 
 DeletePVar(playerid, "AlugadoID");
 DeletePVar(playerid, "Alugou");
 }
 
 if(GetPVarInt(playerid, "criouv")) {
 DeletePVar(playerid, "criouv");
 
 if(GetPVarInt(playerid, "cvehid") != INVALID_VEHICLE_ID) DestroyVehicle(GetPVarInt(playerid, "cvehid"));
 
 DeletePVar(playerid, "cvehid");
 }
 
 if(PlayerInfo[playerid][pPreso]) {
 DOF2_SetInt(FormatAccFile(playerid), "TempoPreso", PlayerInfo[playerid][pTempoPreso]);
 KillTimer(TimerPrisao[playerid]);
 }
 
 // Timers
 KillTimer(ClockTimer[playerid]);
 KillTimer(TimerHunger[playerid]);
 KillTimer(TimerSono[playerid]);
 KillTimer(TimerSede[playerid]);
 KillTimer(TimerCar[playerid]);
 KillTimer(TimerExpirarLogin[playerid]);
 KillTimer(TimerAbastecer[playerid]);
 KillTimer(TimerProcurado[playerid]);
 
 DeletePVar(playerid, "Abastecendo");
 HideGlobalGasolinaText(playerid);
 HidePlayerGasolinaText(playerid);
 
 if(HotelInfo[playerid][hInHotel]) {
 SetPlayerInterior(playerid, 0);
 SetPlayerPos(playerid, 332.0835,-1515.6294,35.8672);
 SetPlayerVirtualWorld(playerid, 0);
 
 HotelInfo[playerid][hInHotel] = false;
 HotelInfo[playerid][hVWorld] = 0;
 }
 
 
 // Reset
 PlayerInfo[playerid][pRcon] = false;
 PlayerInfo[playerid][pAFK] = false;
 
 if(GetPVarInt(playerid, "Algemado")) {
 SendClientMessageToAllEx(Verde, "| INFO | %s saiu algemado e portanto foi punido automaticamente", GetPlayerNameEx(playerid));
 
 GivePlayerWanted(playerid, GetPlayerWanted(playerid) * 2);
 GivePlayerLevel(playerid, -3);
 GivePlayerCash(playerid, -15000);
 }
 
 if(PlayerInfo[playerid][pPegouEmprego]) {
 RemovePlayerMapIcon(playerid, 1);
 PlayerInfo[playerid][pPegouEmprego] = false;
 DeletePVar(playerid, "EmpregoID");
 }
 
 if (GetPVarInt(playerid, "Called")) {
 CallStarted[playerid] = false;
 InCall[playerid] = false;
 DeletePVar(playerid, "Called");
 }
 return 1;
 }
 
Caso sirva de algo, aqui está a mensagem de crash:
 
 Código: SA-MP 0.3.7-R5Exception At Address: 0x0460D9D1
 Base: 0x04570000
 
 Registers:
 EAX: 0x00000045    EBX: 0xFFFFFFFF    ECX: 0x00000040    EDX: 0x00619000
 ESI: 0x49F764FF    EDI: 0x00000003    EBP: 0x0177F688    ESP: 0x0177F618
 EFLAGS: 0x00010206
 
 Stack:
 +0000: 0x0421EB08   0x007F99B0   0x045E4836   0x007F99B0
 +0010: 0x007F99C7   0x041312C0   0x007FB1C3   0x0421EB08
 +0020: 0x00060E7E   0x00000000   0x01974178   0x041BE8B4
 +0030: 0x007EE388   0x0421EB08   0x00060E7E   0x00000000
 +0040: 0x0177F708   0x0074526A   0x041BE8B4   0x00060E7E
 +0050: 0x00000000   0x0053EC06   0x041BE8B4   0x041BE8B4
 +0060: 0x44700000   0x44070000   0x5F82FC50   0x00000001
 +0070: 0x0177F6D0   0x5F82B8E9   0x0177F6DC   0x0198D120
 +0080: 0x5F888A9C   0x01974178   0x00060E7E   0x00000000
 +0090: 0x0177F6C0   0x7548E74B   0x00000113   0x00000001
 +00A0: 0x00000000   0x0177F698   0x0177F698   0x0177F6F4
 +00B0: 0x5F883B40   0x00000001   0x0177F6E4   0x5F82FC02
 +00C0: 0x0198D134   0x00000001   0x0177F888   0x0177F700
 +00D0: 0x5F82E267   0x0177F708   0x0177F888   0x0177F868
 +00E0: 0x5F883B58   0x00000000   0x0177F874   0x5F830246
 +00F0: 0x5F8889A4   0x01974178   0x00060E7E   0xDCBAABCD
 +0100: 0x00000000   0x0177F868   0x5F883D85   0xFFFFFFFF
 +0110: 0x0177F874   0x00000000   0x0177F888   0x0000001A
 +0120: 0x00000001   0x00000000   0x00000000   0x003B7000
 +0130: 0x00000001   0xA8A5E770   0x00000000   0x77698850
 +0140: 0x00000001   0x00000000   0x00000000   0x00000070
 +0150: 0x00000000   0x00760994   0x00000000   0x0177F74C
 +0160: 0x02262DD0   0x0177F7D8   0x75475A70   0xDC9FFB14
 +0170: 0xFFFFFFFE   0x0177F7C8   0x7546D6DF   0x0233F9F0
 +0180: 0x776767AC   0x7546D6F7   0x0177F7B0   0x00000018
 +0190: 0x00000000   0x0177F8F8   0x00000000   0x00000000
 +01A0: 0x00000000   0x00000000   0x00000000   0x00000000
 +01B0: 0x0177F850   0x77678D6D   0x0177F7E4   0x00000020
 +01C0: 0x0177F980   0x7FFE8000   0x0000AA64   0x77661532
 +01D0: 0x0177F840   0x0177F844   0x00000000   0xFFFFFFFF
 +01E0: 0x72D5AE20   0x77698850   0x00000000   0x7546C70F
 +01F0: 0x0177F8F8   0x00000000   0x00000000   0x00000000
 +0200: 0x6576CE2C   0x0177F894   0x77661220   0xFFFFFFFF
 +0210: 0x0177F844   0x7766133A   0x5F8889A4   0x01974178
 +0220: 0x00000000   0x00000001   0xA8A58664   0x0000014C
 +0230: 0x9FBFDFA1   0x00B1750F   0x00192FD4   0x00000000
 +0240: 0x01974178   0x01973930   0x7FFE8000   0x546C6148
 +0250: 0x0177F980   0x5F883CEC   0x00000000   0x0177F880
 +0260: 0x5F83013C   0x0177F888   0x754D78F0   0x0053ECC2
 +0270: 0x00000001   0x00619B71   0x0000001A   0x00000001
 
 SCM Op: 0x248, lDbg: 0 LastRendObj: 3276
 
 Game Version: US 1.0
 
 State Information: Ped Context: 0
 O problema me parece aqui
 
 "PASTA_CONTAS" ele não está achando o arquivo do player para salvar, você apenas informou a pasta de onde é para salvar os dados.Código: format(File, sizeof(File), PASTA_CONTAS, GetPlayerNameEx(playerid));
 acho que o certo séria assim.
 
 
 
 
 Código: format(File, sizeof(File), PASTA_CONTAS/%s.txt (ou .ini), GetPlayerNameEx(playerid));
O erro também pode ser como você estaria fechando o samp server, recomendo criar uma função para sempre estar salvando os dados dos players e ir testando para saber se realmente seria isso.
 
 em OnGameModeExit() tente isto
 
 
 Código:     for(new i = 0; i < MAX_PLAYERS; i++){
 if(!IsPlayerConnected(i)) SaveAccount(i);
 print("Verifica se os dados estão salvando");
 
 }
 
 RE: Dados deletados ao reiniciar o servidor - White_Blue -  16/03/2024
 
 
  (16/03/2024 19:56)Notknown Escreveu:   (16/03/2024 02:35)Ryzen_ Escreveu:  Em alguns momentos quando reinicio meu servidor, algum player acaba voltando com sua conta tendo o dinheiro, level, cargo, emprego e skins deletadas. Estou utilizando DOF2 para realizar o salvamento, mas simplesmente não consigo encontrar o que pode estar causando isso (Obs.: a parte de salvamento foi feita por um colega da equipe que também codifica na GM). De começo eu notei que estava faltando a função DOF2_SaveFile() ao final da SaveAccount(playerid), mas mesmo após a inserir, continua acontecendo o mesmo problema. Não é sempre que acontece, geralmente é quando eu reinicio o servidor várias vezes enquanto estou adicionando novas funcionalidades, daí em uma delas, ao voltar para o game ele acaba dando uma mensagem de crash ou fechando do nada, e quando volto estou setado com a skin do CJ e caindo no limbo. Se alguém puder me ajudar com isso, ficarei grato! Caso precisem de mais informações, basta me perguntar.
 SaveAccount:
 
 Código PHP: stock SaveAccount(playerid) {format(File, sizeof(File), PASTA_CONTAS, GetPlayerNameEx(playerid));
 
 DOF2_SetInt(File, "Level", PlayerInfo[playerid][pLevel]);
 DOF2_SetInt(File, "EXP", PlayerInfo[playerid][pExp]);
 DOF2_SetInt(File, "Admin", PlayerInfo[playerid][pAdmin]);
 DOF2_SetInt(File, "Dinheiro", PlayerInfo[playerid][pGrana]);
 DOF2_SetInt(File, "Skin", PlayerInfo[playerid][pSkin]);
 DOF2_SetInt(File, "Sexo", PlayerInfo[playerid][pSexo]);
 DOF2_SetInt(File, "Fome", PlayerInfo[playerid][pFome]);
 DOF2_SetInt(File, "Sede", PlayerInfo[playerid][pSede]);
 DOF2_SetInt(File, "Sono", PlayerInfo[playerid][pSono]);
 DOF2_SetInt(File, "Emprego", PlayerInfo[playerid][pEmprego]);
 DOF2_SetInt(File, "CategoriaEmprego", PlayerInfo[playerid][pEmpregoCategoria]);
 DOF2_SetInt(File, "NivelProcurado", PlayerInfo[playerid][pWantedLevel]);
 DOF2_SetInt(File, "TempoPreso", PlayerInfo[playerid][pTempoPreso]);
 DOF2_SetBool(File, "Preso", PlayerInfo[playerid][pPreso]);
 DOF2_SetBool(File, "Mutado", PlayerInfo[playerid][pMutado]);
 DOF2_SetInt(File, "TempoMutado", PlayerInfo[playerid][pTempoMutado]);
 
 DOF2_SetBool(File, "Contrato", PlayerInfo[playerid][pContrato]);
 DOF2_SetInt(File, "ValorContrato", PlayerInfo[playerid][pValorContrato]);
 
 DOF2_SetInt(File, "Organizacao", PlayerInfo[playerid][pOrganizacao]);
 DOF2_SetInt(File, "Cargo", PlayerInfo[playerid][pCargo]);
 
 new day, month, year;
 getdate(year, month, day);
 format(STRX, 128, "%02d/%02d/%04d", day, month, year);
 DOF2_SetString(File, "UltimoLogin", STRX);
 
 new Float:X, Float:Y, Float:Z, intid;
 GetPlayerPos(playerid, X, Y, Z);
 intid = GetPlayerInterior(playerid);
 
 PlayerInfo[playerid][pPosX] = X;
 PlayerInfo[playerid][pPosY] = Y;
 PlayerInfo[playerid][pPosZ] = Z;
 PlayerInfo[playerid][pInterior] = intid;
 
 DOF2_SetFloat(File, "PosX", PlayerInfo[playerid][pPosX]);
 DOF2_SetFloat(File, "PosY", PlayerInfo[playerid][pPosY]);
 DOF2_SetFloat(File, "PosZ", PlayerInfo[playerid][pPosZ]);
 DOF2_SetInt(File, "Interior", PlayerInfo[playerid][pInterior]);
 DOF2_SaveFile();
 
 return 1;
 }
 
OnPlayerDisconnect:
 
 Código PHP: public OnPlayerDisconnect(playerid, reason) {SaveAccount(playerid);
 
 if(GetPVarInt(playerid, "Fardado")) {
 DeletePVar(playerid, "Fardado");
 SetPlayerSkin(playerid, GetPVarInt(playerid, "PreviousSkin"));
 DeletePVar(playerid, "PreviousSkin");
 }
 
 if(GetPVarInt(playerid, "Alugou")) {
 DestroyVehicle(GetPVarInt(playerid, "AlugadoID"));
 
 DestroyDynamic3DTextLabel(TrashTruckInfo[GetPVarInt(playerid, "AlugadoID")][tLabel]);
 TrashTruckInfo[GetPVarInt(playerid, "AlugadoID")][tLabel] = Text3D:INVALID_3DTEXT_ID;
 
 DeletePVar(playerid, "AlugadoID");
 DeletePVar(playerid, "Alugou");
 }
 
 if(GetPVarInt(playerid, "criouv")) {
 DeletePVar(playerid, "criouv");
 
 if(GetPVarInt(playerid, "cvehid") != INVALID_VEHICLE_ID) DestroyVehicle(GetPVarInt(playerid, "cvehid"));
 
 DeletePVar(playerid, "cvehid");
 }
 
 if(PlayerInfo[playerid][pPreso]) {
 DOF2_SetInt(FormatAccFile(playerid), "TempoPreso", PlayerInfo[playerid][pTempoPreso]);
 KillTimer(TimerPrisao[playerid]);
 }
 
 // Timers
 KillTimer(ClockTimer[playerid]);
 KillTimer(TimerHunger[playerid]);
 KillTimer(TimerSono[playerid]);
 KillTimer(TimerSede[playerid]);
 KillTimer(TimerCar[playerid]);
 KillTimer(TimerExpirarLogin[playerid]);
 KillTimer(TimerAbastecer[playerid]);
 KillTimer(TimerProcurado[playerid]);
 
 DeletePVar(playerid, "Abastecendo");
 HideGlobalGasolinaText(playerid);
 HidePlayerGasolinaText(playerid);
 
 if(HotelInfo[playerid][hInHotel]) {
 SetPlayerInterior(playerid, 0);
 SetPlayerPos(playerid, 332.0835,-1515.6294,35.8672);
 SetPlayerVirtualWorld(playerid, 0);
 
 HotelInfo[playerid][hInHotel] = false;
 HotelInfo[playerid][hVWorld] = 0;
 }
 
 
 // Reset
 PlayerInfo[playerid][pRcon] = false;
 PlayerInfo[playerid][pAFK] = false;
 
 if(GetPVarInt(playerid, "Algemado")) {
 SendClientMessageToAllEx(Verde, "| INFO | %s saiu algemado e portanto foi punido automaticamente", GetPlayerNameEx(playerid));
 
 GivePlayerWanted(playerid, GetPlayerWanted(playerid) * 2);
 GivePlayerLevel(playerid, -3);
 GivePlayerCash(playerid, -15000);
 }
 
 if(PlayerInfo[playerid][pPegouEmprego]) {
 RemovePlayerMapIcon(playerid, 1);
 PlayerInfo[playerid][pPegouEmprego] = false;
 DeletePVar(playerid, "EmpregoID");
 }
 
 if (GetPVarInt(playerid, "Called")) {
 CallStarted[playerid] = false;
 InCall[playerid] = false;
 DeletePVar(playerid, "Called");
 }
 return 1;
 }
 
Caso sirva de algo, aqui está a mensagem de crash:
 
 Código: SA-MP 0.3.7-R5Exception At Address: 0x0460D9D1
 Base: 0x04570000
 
 Registers:
 EAX: 0x00000045    EBX: 0xFFFFFFFF    ECX: 0x00000040    EDX: 0x00619000
 ESI: 0x49F764FF    EDI: 0x00000003    EBP: 0x0177F688    ESP: 0x0177F618
 EFLAGS: 0x00010206
 
 Stack:
 +0000: 0x0421EB08   0x007F99B0   0x045E4836   0x007F99B0
 +0010: 0x007F99C7   0x041312C0   0x007FB1C3   0x0421EB08
 +0020: 0x00060E7E   0x00000000   0x01974178   0x041BE8B4
 +0030: 0x007EE388   0x0421EB08   0x00060E7E   0x00000000
 +0040: 0x0177F708   0x0074526A   0x041BE8B4   0x00060E7E
 +0050: 0x00000000   0x0053EC06   0x041BE8B4   0x041BE8B4
 +0060: 0x44700000   0x44070000   0x5F82FC50   0x00000001
 +0070: 0x0177F6D0   0x5F82B8E9   0x0177F6DC   0x0198D120
 +0080: 0x5F888A9C   0x01974178   0x00060E7E   0x00000000
 +0090: 0x0177F6C0   0x7548E74B   0x00000113   0x00000001
 +00A0: 0x00000000   0x0177F698   0x0177F698   0x0177F6F4
 +00B0: 0x5F883B40   0x00000001   0x0177F6E4   0x5F82FC02
 +00C0: 0x0198D134   0x00000001   0x0177F888   0x0177F700
 +00D0: 0x5F82E267   0x0177F708   0x0177F888   0x0177F868
 +00E0: 0x5F883B58   0x00000000   0x0177F874   0x5F830246
 +00F0: 0x5F8889A4   0x01974178   0x00060E7E   0xDCBAABCD
 +0100: 0x00000000   0x0177F868   0x5F883D85   0xFFFFFFFF
 +0110: 0x0177F874   0x00000000   0x0177F888   0x0000001A
 +0120: 0x00000001   0x00000000   0x00000000   0x003B7000
 +0130: 0x00000001   0xA8A5E770   0x00000000   0x77698850
 +0140: 0x00000001   0x00000000   0x00000000   0x00000070
 +0150: 0x00000000   0x00760994   0x00000000   0x0177F74C
 +0160: 0x02262DD0   0x0177F7D8   0x75475A70   0xDC9FFB14
 +0170: 0xFFFFFFFE   0x0177F7C8   0x7546D6DF   0x0233F9F0
 +0180: 0x776767AC   0x7546D6F7   0x0177F7B0   0x00000018
 +0190: 0x00000000   0x0177F8F8   0x00000000   0x00000000
 +01A0: 0x00000000   0x00000000   0x00000000   0x00000000
 +01B0: 0x0177F850   0x77678D6D   0x0177F7E4   0x00000020
 +01C0: 0x0177F980   0x7FFE8000   0x0000AA64   0x77661532
 +01D0: 0x0177F840   0x0177F844   0x00000000   0xFFFFFFFF
 +01E0: 0x72D5AE20   0x77698850   0x00000000   0x7546C70F
 +01F0: 0x0177F8F8   0x00000000   0x00000000   0x00000000
 +0200: 0x6576CE2C   0x0177F894   0x77661220   0xFFFFFFFF
 +0210: 0x0177F844   0x7766133A   0x5F8889A4   0x01974178
 +0220: 0x00000000   0x00000001   0xA8A58664   0x0000014C
 +0230: 0x9FBFDFA1   0x00B1750F   0x00192FD4   0x00000000
 +0240: 0x01974178   0x01973930   0x7FFE8000   0x546C6148
 +0250: 0x0177F980   0x5F883CEC   0x00000000   0x0177F880
 +0260: 0x5F83013C   0x0177F888   0x754D78F0   0x0053ECC2
 +0270: 0x00000001   0x00619B71   0x0000001A   0x00000001
 
 SCM Op: 0x248, lDbg: 0 LastRendObj: 3276
 
 Game Version: US 1.0
 
 State Information: Ped Context: 0
 O problema me parece aqui
 
 "PASTA_CONTAS" ele não está achando o arquivo do player para salvar, você apenas informou a pasta de onde é para salvar os dados.Código: format(File, sizeof(File), PASTA_CONTAS, GetPlayerNameEx(playerid));
 acho que o certo séria assim.
 
 
 
 
 Código: format(File, sizeof(File), PASTA_CONTAS/%s.txt (ou .ini), GetPlayerNameEx(playerid));
O erro também pode ser como você estaria fechando o samp server, recomendo criar uma função para sempre estar salvando os dados dos players e ir testando para saber se realmente seria isso.
 
 em OnGameModeExit() tente isto
 
 
 Código:     for(new i = 0; i < MAX_PLAYERS; i++){
 if(!IsPlayerConnected(i)) SaveAccount(i);
 print("Verifica se os dados estão salvando");
 
 }
 Não, o format está correto. "PASTA_CONTAS" provavelmente é um macro cujo valor é o caminho da pasta. Creio que o DOF2 é muito lento e às vezes falha em salvar os dados ou os corrompe.
 
 P.S.: Também não faz sentido verificar se o jogador não está conectado para salvar e trocar o foreach por for.
 
 
 RE: Dados deletados ao reiniciar o servidor - Maycon_Felipe -  17/03/2024
 
 O melhor a se fazer é verificar se o player estava jogando dentro do SaveAccount..
 Só isso já vai evitar que dados limpos sejam salvos que é o que deve tá acontecendo,
 vc reinicia o sv na tela de login ou desloga e ele salva com dados limpos..
 
 
 Código: stock SaveAccount(playerid) {if(!PlayerInfo[playerid][pJogando]) return 1;
 }
Quando ele logar, seta para 1 ou true a variavel PlayerInfo[playerid][pJogando]..
 
 
 RE: Dados deletados ao reiniciar o servidor - Ryzen_ -  17/03/2024
 
 
  (16/03/2024 20:39)White_Blue Escreveu:   (16/03/2024 19:56)Notknown Escreveu:   (16/03/2024 02:35)Ryzen_ Escreveu:  Em alguns momentos quando reinicio meu servidor, algum player acaba voltando com sua conta tendo o dinheiro, level, cargo, emprego e skins deletadas. Estou utilizando DOF2 para realizar o salvamento, mas simplesmente não consigo encontrar o que pode estar causando isso (Obs.: a parte de salvamento foi feita por um colega da equipe que também codifica na GM). De começo eu notei que estava faltando a função DOF2_SaveFile() ao final da SaveAccount(playerid), mas mesmo após a inserir, continua acontecendo o mesmo problema. Não é sempre que acontece, geralmente é quando eu reinicio o servidor várias vezes enquanto estou adicionando novas funcionalidades, daí em uma delas, ao voltar para o game ele acaba dando uma mensagem de crash ou fechando do nada, e quando volto estou setado com a skin do CJ e caindo no limbo. Se alguém puder me ajudar com isso, ficarei grato! Caso precisem de mais informações, basta me perguntar.
 SaveAccount:
 
 Código PHP: stock SaveAccount(playerid) {format(File, sizeof(File), PASTA_CONTAS, GetPlayerNameEx(playerid));
 
 DOF2_SetInt(File, "Level", PlayerInfo[playerid][pLevel]);
 DOF2_SetInt(File, "EXP", PlayerInfo[playerid][pExp]);
 DOF2_SetInt(File, "Admin", PlayerInfo[playerid][pAdmin]);
 DOF2_SetInt(File, "Dinheiro", PlayerInfo[playerid][pGrana]);
 DOF2_SetInt(File, "Skin", PlayerInfo[playerid][pSkin]);
 DOF2_SetInt(File, "Sexo", PlayerInfo[playerid][pSexo]);
 DOF2_SetInt(File, "Fome", PlayerInfo[playerid][pFome]);
 DOF2_SetInt(File, "Sede", PlayerInfo[playerid][pSede]);
 DOF2_SetInt(File, "Sono", PlayerInfo[playerid][pSono]);
 DOF2_SetInt(File, "Emprego", PlayerInfo[playerid][pEmprego]);
 DOF2_SetInt(File, "CategoriaEmprego", PlayerInfo[playerid][pEmpregoCategoria]);
 DOF2_SetInt(File, "NivelProcurado", PlayerInfo[playerid][pWantedLevel]);
 DOF2_SetInt(File, "TempoPreso", PlayerInfo[playerid][pTempoPreso]);
 DOF2_SetBool(File, "Preso", PlayerInfo[playerid][pPreso]);
 DOF2_SetBool(File, "Mutado", PlayerInfo[playerid][pMutado]);
 DOF2_SetInt(File, "TempoMutado", PlayerInfo[playerid][pTempoMutado]);
 
 DOF2_SetBool(File, "Contrato", PlayerInfo[playerid][pContrato]);
 DOF2_SetInt(File, "ValorContrato", PlayerInfo[playerid][pValorContrato]);
 
 DOF2_SetInt(File, "Organizacao", PlayerInfo[playerid][pOrganizacao]);
 DOF2_SetInt(File, "Cargo", PlayerInfo[playerid][pCargo]);
 
 new day, month, year;
 getdate(year, month, day);
 format(STRX, 128, "%02d/%02d/%04d", day, month, year);
 DOF2_SetString(File, "UltimoLogin", STRX);
 
 new Float:X, Float:Y, Float:Z, intid;
 GetPlayerPos(playerid, X, Y, Z);
 intid = GetPlayerInterior(playerid);
 
 PlayerInfo[playerid][pPosX] = X;
 PlayerInfo[playerid][pPosY] = Y;
 PlayerInfo[playerid][pPosZ] = Z;
 PlayerInfo[playerid][pInterior] = intid;
 
 DOF2_SetFloat(File, "PosX", PlayerInfo[playerid][pPosX]);
 DOF2_SetFloat(File, "PosY", PlayerInfo[playerid][pPosY]);
 DOF2_SetFloat(File, "PosZ", PlayerInfo[playerid][pPosZ]);
 DOF2_SetInt(File, "Interior", PlayerInfo[playerid][pInterior]);
 DOF2_SaveFile();
 
 return 1;
 }
 
OnPlayerDisconnect:
 
 Código PHP: public OnPlayerDisconnect(playerid, reason) {SaveAccount(playerid);
 
 if(GetPVarInt(playerid, "Fardado")) {
 DeletePVar(playerid, "Fardado");
 SetPlayerSkin(playerid, GetPVarInt(playerid, "PreviousSkin"));
 DeletePVar(playerid, "PreviousSkin");
 }
 
 if(GetPVarInt(playerid, "Alugou")) {
 DestroyVehicle(GetPVarInt(playerid, "AlugadoID"));
 
 DestroyDynamic3DTextLabel(TrashTruckInfo[GetPVarInt(playerid, "AlugadoID")][tLabel]);
 TrashTruckInfo[GetPVarInt(playerid, "AlugadoID")][tLabel] = Text3D:INVALID_3DTEXT_ID;
 
 DeletePVar(playerid, "AlugadoID");
 DeletePVar(playerid, "Alugou");
 }
 
 if(GetPVarInt(playerid, "criouv")) {
 DeletePVar(playerid, "criouv");
 
 if(GetPVarInt(playerid, "cvehid") != INVALID_VEHICLE_ID) DestroyVehicle(GetPVarInt(playerid, "cvehid"));
 
 DeletePVar(playerid, "cvehid");
 }
 
 if(PlayerInfo[playerid][pPreso]) {
 DOF2_SetInt(FormatAccFile(playerid), "TempoPreso", PlayerInfo[playerid][pTempoPreso]);
 KillTimer(TimerPrisao[playerid]);
 }
 
 // Timers
 KillTimer(ClockTimer[playerid]);
 KillTimer(TimerHunger[playerid]);
 KillTimer(TimerSono[playerid]);
 KillTimer(TimerSede[playerid]);
 KillTimer(TimerCar[playerid]);
 KillTimer(TimerExpirarLogin[playerid]);
 KillTimer(TimerAbastecer[playerid]);
 KillTimer(TimerProcurado[playerid]);
 
 DeletePVar(playerid, "Abastecendo");
 HideGlobalGasolinaText(playerid);
 HidePlayerGasolinaText(playerid);
 
 if(HotelInfo[playerid][hInHotel]) {
 SetPlayerInterior(playerid, 0);
 SetPlayerPos(playerid, 332.0835,-1515.6294,35.8672);
 SetPlayerVirtualWorld(playerid, 0);
 
 HotelInfo[playerid][hInHotel] = false;
 HotelInfo[playerid][hVWorld] = 0;
 }
 
 
 // Reset
 PlayerInfo[playerid][pRcon] = false;
 PlayerInfo[playerid][pAFK] = false;
 
 if(GetPVarInt(playerid, "Algemado")) {
 SendClientMessageToAllEx(Verde, "| INFO | %s saiu algemado e portanto foi punido automaticamente", GetPlayerNameEx(playerid));
 
 GivePlayerWanted(playerid, GetPlayerWanted(playerid) * 2);
 GivePlayerLevel(playerid, -3);
 GivePlayerCash(playerid, -15000);
 }
 
 if(PlayerInfo[playerid][pPegouEmprego]) {
 RemovePlayerMapIcon(playerid, 1);
 PlayerInfo[playerid][pPegouEmprego] = false;
 DeletePVar(playerid, "EmpregoID");
 }
 
 if (GetPVarInt(playerid, "Called")) {
 CallStarted[playerid] = false;
 InCall[playerid] = false;
 DeletePVar(playerid, "Called");
 }
 return 1;
 }
 
Caso sirva de algo, aqui está a mensagem de crash:
 
 Código: SA-MP 0.3.7-R5Exception At Address: 0x0460D9D1
 Base: 0x04570000
 
 Registers:
 EAX: 0x00000045    EBX: 0xFFFFFFFF    ECX: 0x00000040    EDX: 0x00619000
 ESI: 0x49F764FF    EDI: 0x00000003    EBP: 0x0177F688    ESP: 0x0177F618
 EFLAGS: 0x00010206
 
 Stack:
 +0000: 0x0421EB08   0x007F99B0   0x045E4836   0x007F99B0
 +0010: 0x007F99C7   0x041312C0   0x007FB1C3   0x0421EB08
 +0020: 0x00060E7E   0x00000000   0x01974178   0x041BE8B4
 +0030: 0x007EE388   0x0421EB08   0x00060E7E   0x00000000
 +0040: 0x0177F708   0x0074526A   0x041BE8B4   0x00060E7E
 +0050: 0x00000000   0x0053EC06   0x041BE8B4   0x041BE8B4
 +0060: 0x44700000   0x44070000   0x5F82FC50   0x00000001
 +0070: 0x0177F6D0   0x5F82B8E9   0x0177F6DC   0x0198D120
 +0080: 0x5F888A9C   0x01974178   0x00060E7E   0x00000000
 +0090: 0x0177F6C0   0x7548E74B   0x00000113   0x00000001
 +00A0: 0x00000000   0x0177F698   0x0177F698   0x0177F6F4
 +00B0: 0x5F883B40   0x00000001   0x0177F6E4   0x5F82FC02
 +00C0: 0x0198D134   0x00000001   0x0177F888   0x0177F700
 +00D0: 0x5F82E267   0x0177F708   0x0177F888   0x0177F868
 +00E0: 0x5F883B58   0x00000000   0x0177F874   0x5F830246
 +00F0: 0x5F8889A4   0x01974178   0x00060E7E   0xDCBAABCD
 +0100: 0x00000000   0x0177F868   0x5F883D85   0xFFFFFFFF
 +0110: 0x0177F874   0x00000000   0x0177F888   0x0000001A
 +0120: 0x00000001   0x00000000   0x00000000   0x003B7000
 +0130: 0x00000001   0xA8A5E770   0x00000000   0x77698850
 +0140: 0x00000001   0x00000000   0x00000000   0x00000070
 +0150: 0x00000000   0x00760994   0x00000000   0x0177F74C
 +0160: 0x02262DD0   0x0177F7D8   0x75475A70   0xDC9FFB14
 +0170: 0xFFFFFFFE   0x0177F7C8   0x7546D6DF   0x0233F9F0
 +0180: 0x776767AC   0x7546D6F7   0x0177F7B0   0x00000018
 +0190: 0x00000000   0x0177F8F8   0x00000000   0x00000000
 +01A0: 0x00000000   0x00000000   0x00000000   0x00000000
 +01B0: 0x0177F850   0x77678D6D   0x0177F7E4   0x00000020
 +01C0: 0x0177F980   0x7FFE8000   0x0000AA64   0x77661532
 +01D0: 0x0177F840   0x0177F844   0x00000000   0xFFFFFFFF
 +01E0: 0x72D5AE20   0x77698850   0x00000000   0x7546C70F
 +01F0: 0x0177F8F8   0x00000000   0x00000000   0x00000000
 +0200: 0x6576CE2C   0x0177F894   0x77661220   0xFFFFFFFF
 +0210: 0x0177F844   0x7766133A   0x5F8889A4   0x01974178
 +0220: 0x00000000   0x00000001   0xA8A58664   0x0000014C
 +0230: 0x9FBFDFA1   0x00B1750F   0x00192FD4   0x00000000
 +0240: 0x01974178   0x01973930   0x7FFE8000   0x546C6148
 +0250: 0x0177F980   0x5F883CEC   0x00000000   0x0177F880
 +0260: 0x5F83013C   0x0177F888   0x754D78F0   0x0053ECC2
 +0270: 0x00000001   0x00619B71   0x0000001A   0x00000001
 
 SCM Op: 0x248, lDbg: 0 LastRendObj: 3276
 
 Game Version: US 1.0
 
 State Information: Ped Context: 0
 O problema me parece aqui
 
 "PASTA_CONTAS" ele não está achando o arquivo do player para salvar, você apenas informou a pasta de onde é para salvar os dados.Código: format(File, sizeof(File), PASTA_CONTAS, GetPlayerNameEx(playerid));
 acho que o certo séria assim.
 
 
 
 
 Código: format(File, sizeof(File), PASTA_CONTAS/%s.txt (ou .ini), GetPlayerNameEx(playerid));
O erro também pode ser como você estaria fechando o samp server, recomendo criar uma função para sempre estar salvando os dados dos players e ir testando para saber se realmente seria isso.
 
 em OnGameModeExit() tente isto
 
 
 Código:     for(new i = 0; i < MAX_PLAYERS; i++){
 if(!IsPlayerConnected(i)) SaveAccount(i);
 print("Verifica se os dados estão salvando");
 
 }
 Não, o format está correto. "PASTA_CONTAS" provavelmente é um macro cujo valor é o caminho da pasta. Creio que o DOF2 é muito lento e às vezes falha em salvar os dados ou os corrompe.
 
 P.S.: Também não faz sentido verificar se o jogador não está conectado para salvar e trocar o foreach por for.
 
 Sim, isso mesmo, ela é uma macro. Creio que o problema possa ser algo referente ao DOF2 msm, já que sempre salva tudo certinho, e o problema só ocorre quando eu reinicio o server (Não sempre, mas do nada dá isso). O ruim é que é meio complicado eu precisar reiniciar pra atualizar, e algum jogador simplesmente voltar com sua conta resetada.
 
 
 
 |