Player nasce na prisão sem estar preso realmente. - fear -  09/01/2022
 
 
boa tarde. estou com um problema que tem hora que o player não foi preso por ninguem ele vai logar e diz que ele esta preso porém ele spawna normalmente.. ai o player reloga e nasce na cadeia como se tivesse sido preso mas não foi.. 
 
segue todo o codigo de prisão tanto por policial como por admin 
 
Código PHP:     if(IsPlayerJailed(playerid) || IsPlayerInChainAdmin(playerid))     {
          static commandsAllowed[][11] = {             "/admins",             "/ranking",             "/afks",             "/presoscmd"         }, i;
          for(i = 0; i < sizeof(commandsAllowed); i++)         {
              if(!isnull(cmdtext) && (strfind(cmdtext, commandsAllowed[i][0], true) != -1))             return true;         }
          SendClientMessage(playerid, COLOR_RED, TEXT_PLAYER_JAILED_CANT_USE_CMD);         return false;     }     else if(IsPlayerPoliceTarget(playerid))     {
          static commandsForbidden[][15] = {             "/v",             "/car",             "/Aerolv",             "/Aerols",             "/Aerosf",             "/Lv",             "/Sf",             "/Ls",             "/Oficina",             "/Mappack",             "/Bigear",             "/Drift2",             "/Drift3",             "/Drift4",             "/Drift5",             "/Drift6",             "/Drift7",             "/Drift8",             "/Drift9",             "/Drift10",             "/DriftCity",             "/Twin",             "/Twin2",             "/Chilliad",             "/Stunt",             "/Circuito",             "/Chilliad",             "/Parkour",             "/Parkour2",             "/Parkour3",             "/Nrgparkour1",             "/Nrgparkour2",             "/Drop1",             "/Drop2",             "/Drag",             "/Praia",             "/Rdograu",             "/ir",             "/goto",             "/Mundo",             "/Jetpack",             "/Skin",             "/Veh",             "/Lvap",             "/Sfap",             "/Lspa",             "/Mp",             "/Kill",             "/Cg",             "/larmas",             "/Eagle",             "/DM",             "/Area51",             "/Favela",             "/Favela2",             "/Favela3",             "/Favelasf",             "/Afk",             "/Mundo",             "/cr",             "/irp",             "/r",             "/sp",             "/s",             "/arenapvp"         }, i;
          for(i = 0; i < sizeof(commandsForbidden); i++)         {
              if(!isnull(cmdtext) && (strfind(cmdtext, commandsForbidden[i][0], true) != -1))             {
                  SendClientMessage(playerid, COLOR_RED, TEXT_PLAYER_TARGET_CANT_USE_CMD);                 return false;             }         }         return true;     }
      return true; } 
 
  
ONPLAYERCONNECT 
 
Código PHP: ResetPlayerChainAdmin(playerid); ResetPlayerJail(playerid);
      if(playerConnectedNow[playerid])     {
          playerConnectedNow[playerid] = false;
          SetTimerEx("LoadPlayerChainAdmin", 300, false, "i", playerid);
          GetPlayerPos(playerid, playerAFKCheck[playerid][E_PLAYER_AFK_POS][0], playerAFKCheck[playerid][E_PLAYER_AFK_POS][1], playerAFKCheck[playerid][E_PLAYER_AFK_POS][2]);
          SetTimerEx("CheckPlayerAfk", CHECK_PLAYER_AFK_TIME, true, "i", playerid);
          SetTimerEx("CheckPlayerWeaponHack", 700, false, "i", playerid);         checkPlayerNameTimer[playerid] = SetTimerEx("CheckPlayerNameAltered", 1000, true, "i", playerid);
          ContaPlayer[playerid][Score] = GetPlayerScore(playerid);                  if(MundoDM[playerid])         {
              new weapons[13][2], i;
              for (i = 0; i <= 12; i++)             GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
              ResetPlayerWeapons(playerid);
              for(i = 0; i <= 12; i++)             {
                  if(weapons[i][0] == 46 || weapons[i][0] == 43)                 GivePlayerWeapon(playerid, weapons[i][0], weapons[i][1]);             }         }     } 
 
  
SISTEMA DE CADEIA ADMIN 
Código PHP: IsPlayerInChainAdmin(playerid)         return playerChainAdmin[playerid][E_PLAYER_IN_CHAIN];
          static PutPlayerInChainAdmin(playerid, time)         {             time = gettime() + time;//(60 * time);
              playerChainAdmin[playerid][E_PLAYER_IN_CHAIN] = true;             playerChainAdmin[playerid][E_PLAYER_CHAIN_TIME] = time;
              SetPlayerWantedLevel(playerid, 0);
              if(IsPlayerCuffed(playerid))             UnshacklePlayer(playerid, REASON_NONE);
              if(IsPlayerArrasted(playerid))             ChangePlayerArrestedState(playerid, GetPlayerArrastedMe(playerid), REASON_ADMIN);
              if(IsPlayerApproached(playerid))             ChangePlayerApproachedState(playerid, GetPlayerApproachedMe(playerid), REASON_ADMIN);
              TogglePlayerControllable(playerid, true);
              SetPlayerTeam(playerid, TEAM_JAIL);             SetPlayerClass(playerid, PLAYER_CLASS_CIVIL);
              SetPlayerVirtualWorld(playerid, 6666);             SetPlayerInterior(playerid, 6);             ResetPlayerWeapons(playerid);             SetPlayerPos(playerid, prisionPosition[0], prisionPosition[1], prisionPosition[2]);             SetPlayerFacingAngle(playerid, prisionPosition[3]);             SetPlayerHealth(playerid, 99999);             SetCameraBehindPlayer(playerid);
              SetTimerEx("ShowPlayerPrisionTime", 900, false, "iii", playerid, time, 1);
          }
          static RemovePlayerFromChainAdmin(playerid)         {             SetPlayerClass(playerid, PLAYER_CLASS_CIVIL);
              SetPlayerInterior(playerid, 0);
              ResetPlayerChainAdmin(playerid);
              SavePlayerChainAdmin(playerid);
              SpawnPlayer(playerid);
              SetPlayerHealth(playerid, 100.0);
              GameTextForPlayer(playerid, "Livre", 1, 3);         }
          ResetPlayerChainAdmin(playerid)         {             playerChainAdmin[playerid][E_PLAYER_IN_CHAIN] = false;             playerChainAdmin[playerid][E_PLAYER_CHAIN_TIME] = 0;         }
 
 
 
          call:LoadPlayerChainAdmin(playerid)         {             if(!IsPlayerConnected(playerid))             return;
              if(dir_exists(DIRECTORY_CHAIN_ADMIN))             {
                  new file[9 + MAX_PLAYER_NAME + 1];
                  format(file, sizeof(file), PLAYER_FILE_CHAIN_ADMIN_CFG, Nome(playerid));
                  if(DOF2_FileExists(file))                 {
                      playerChainAdmin[playerid][E_PLAYER_IN_CHAIN] = DOF2_GetBool(file, "inChainAdmin");                     playerChainAdmin[playerid][E_PLAYER_CHAIN_TIME] = DOF2_GetInt(file, "chainTime");/* + gettime();*/
                      if(playerChainAdmin[playerid][E_PLAYER_IN_CHAIN] && playerChainAdmin[playerid][E_PLAYER_CHAIN_TIME] > 0)                     {
                          SendClientMessage(playerid, COLOR_YELLOW, TEXT_PLAYER_JAIL_INCOMPLETE);                         PutPlayerInChainAdmin(playerid, playerChainAdmin[playerid][E_PLAYER_CHAIN_TIME]);                     }                     else                     {
                          ResetPlayerChainAdmin(playerid);                         DOF2_RemoveFile(file);                         DOF2_SaveFile();                     }                 }             }         }
          static SavePlayerChainAdmin(playerid)         {             new file[9 + MAX_PLAYER_NAME + 1];
              format(file, sizeof(file), PLAYER_FILE_CHAIN_ADMIN_CFG, Nome(playerid));
              if(!(playerChainAdmin[playerid][E_PLAYER_IN_CHAIN] && GetPlayerChainAdminTime(playerid) > 0))             {
                  if(DOF2_FileExists(file))                 {
                      DOF2_RemoveFile(file);                     DOF2_SaveFile();                 }
                  return;             }
              if(!DOF2_FileExists(file))             DOF2_CreateFile(file);
              DOF2_SetBool(file, "inChainAdmin", playerChainAdmin[playerid][E_PLAYER_IN_CHAIN]);             DOF2_SetInt(file, "chainTime", GetPlayerChainAdminTime(playerid));             DOF2_SaveFile();         }
          static GetPlayerChainAdminTime(playerid)         {             new time = gettime();             return (playerChainAdmin[playerid][E_PLAYER_CHAIN_TIME] < time) ? (0) : (playerChainAdmin[playerid][E_PLAYER_CHAIN_TIME] - time);         } 
 
  
SISTEMA DE CADEIA POLICIAL 
Código PHP: call:ShowPlayerPrisionTime(playerid, timeArrested, type)//0 - Jail | 1 - Chain Admin {     if(!IsPlayerConnected(playerid))     return;
      if(!type)     {                  if(!playerJail[playerid][E_PLAYER_JAILED])         return;     }     else     {                  if(!IsPlayerInChainAdmin(playerid))         return;     }
      if(gettime() >= timeArrested)     {                  SetPlayerTeam(playerid, GetTeamOfPlayer(playerid));
          SetPlayerInterior(playerid,0);
          SetPlayerWorld(playerid, 0);
          SpawnPlayer(playerid);         ResetPlayerJail(playerid);         ResetPlayerChainAdmin(playerid);         SavePlayerJail(playerid);
          GameTextForPlayer(playerid, "", 1, 3);         return;     }     new time[16 + 12 + 1];
      format(time, sizeof(time), TEXT_TIME_PRISION, TimeConvert(timeArrested));     GameTextForPlayer(playerid, time, 1300, 3);
      SetTimerEx("ShowPlayerPrisionTime", 900, false, "iii", playerid, timeArrested, type); }
  call:LoadPlayerJail(playerid) {     if(!IsPlayerConnected(playerid))     return;
      if(dir_exists(DIRECTORY_JAIL))     {                  new file[9 + MAX_PLAYER_NAME + 1];
          format(file, sizeof(file), PLAYER_FILE_JAIL_CFG, GetNameOfPlayer(playerid));
          if(DOF2_FileExists(file))         {                          playerJail[playerid][E_PLAYER_JAILED] = DOF2_GetBool(file, "jailed");             playerJail[playerid][E_PLAYER_JAIL_TIME] = DOF2_GetInt(file, "jailTime") + gettime();
              if(playerJail[playerid][E_PLAYER_JAILED] && playerJail[playerid][E_PLAYER_JAIL_TIME] > 0)             {                                  SendClientMessage(playerid, COLOR_YELLOW, TEXT_PLAYER_JAIL_INCOMPLETE);                 PutPlayerInPrision(playerid, -1, -1);                 return;             }             else             {                                  ResetPlayerJail(playerid);                 DOF2_RemoveFile(file);                 DOF2_SaveFile();             }         }     }     CheckPlayerState(playerid); } 
 
  
O SISTEMA DE CADEIA POLICIAL ESTA EM INCLUDE E O SISTEMA DE PRISÃO ADM ESTA NO GAMEMODE.. MAS OS DOIS ESTÃO VERIFICANDO CERTO PELO QUE EU OLHEI.. ALGUEM PODE ME AJUDAR A DESCOBRIR PORQUE DESSE BUG INTERMITENTE.
 
 
 
 |