Todo ocurre al desconectarse, asi que me imagino el problema debe venir de OnPlayerDisconnect.
Код:
public OnPlayerDisconnect(playerid, reason)
{
lastcommand[playerid] = 0;
TextDrawDestroy(Veloz4[playerid]);
TextDrawDestroy(TutorialUno[playerid]);
TextDrawDestroy(TutorialDos[playerid]);
if(Logueado[playerid])
{
if(EnPaintBall[playerid] == 1)
{
new string[72];
EnPB--;
format(string, sizeof(string), "%s abandono el estadio.", Jugador(playerid));
SendPaintballArenaMessage(COLOR_YELLOW, string);
}
if(Aceptollamada[playerid] == 1)
{
Llamando[playerid] = 0;
Llamando[Llamaalusuario[playerid]] = 0;
Aceptollamada[Llamaalusuario[playerid]] = false;
SendClientMessage(Llamaalusuario[playerid],COLOR_GRAD2,"Te colgaron la llamada.");
Llamaalusuario[playerid] = 0;
Aceptollamada[playerid] = false;
}
if(Rescate[playerid] >= 0 && PidioRescate[playerid] == 1)
{
SendClientMessage(Rescate[playerid],COLOR_WHITE,"El que solicito el rescate se desconecto.");
RemovePlayerMapIcon(Rescate[playerid], 99);
Rescate[Rescate[playerid]] = -1;
}
if(Rescate[playerid] >= 0 && PidioRescate[playerid] == 0)
{
SendClientMessage(Rescate[playerid],COLOR_WHITE,"El doctor que venia a por ti se desconecto.");
Rescate[Rescate[playerid]] = -1;
}
if(Informacion[playerid][LlaveUnoAuto] != NOEXISTE)
{
GuardarAutosYa(Informacion[playerid][LlaveUnoAuto]);
}
if(Informacion[playerid][LlaveDosAuto] != NOEXISTE)
{
GuardarAutosYa(Informacion[playerid][LlaveDosAuto]);
}
GuardarInfo(playerid); //////////////Este
Logueado[playerid] = false;
}
return 1;
}
Код:
GuardarInfo(playerid)
{
if(IsPlayerConnected(playerid))
{
if(Logueado[playerid])
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
if(INI_Exist(playername))
{
new PlayerFile[ 13 + MAX_PLAYER_NAME + 1];
format( PlayerFile , sizeof PlayerFile, ARCHIVO_L, playername);
new INI:File = INI_Open(PlayerFile);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid, X, Y, Z);
new Float:health;
GetPlayerHealth(playerid,health);
new Float:chaleco;
GetPlayerArmour(playerid,chaleco);
new Float:angulo;
GetPlayerFacingAngle(playerid, angulo);
INI_SetTag(File,"datos");
INI_WriteString(File,"Contraseсa",Informacion[playerid][pKey]);
INI_WriteString(File,"Nivel",Informacion[playerid][pNivel]);
INI_WriteString(File,"Admin",Informacion[playerid][pAdmin]);
INI_WriteString(File,"Faccion",Informacion[playerid][pFaccion]);
INI_WriteString(File,"Helper",Informacion[playerid][pHelper]);
INI_WriteString(File,"ConnectedTime",Informacion[playerid][pConnectedTime);
INI_WriteString(File,"Registered",Informacion[playerid][pRegistered]);
INI_WriteString(File,"Sexo",Informacion[playerid][pSexo]);
INI_WriteString(File,"Aсo",Informacion[playerid][pAсo]);
INI_WriteString(File,"Originen",Informacion[playerid][pOriginen]);
INI_WriteString(File,"Walk",Informacion[playerid][pWalk]);
INI_WriteString(File,"Respeto",Informacion[playerid][pRespeto]);
INI_WriteString(File,"Moneda",Informacion[playerid][pMoneda]);
INI_WriteString(File,"Banco",Informacion[playerid][pBanco]);
INI_WriteString(File,"Cheques",Informacion[playerid][pCheques]);
INI_WriteString(File,"Kills",Informacion[playerid][pKills]);
INI_WriteString(File,"Muertes",Informacion[playerid][pMuertes]);
INI_WriteString(File,"Arrestado",Informacion[playerid][pArrestado]);
for( new m = 0; m < 13; m++ )
{
new mStr[24];
format(mStr,sizeof(mStr), "Arma%d", m);
INI_WriteInt(File,mStr, Informacion[playerid][pArmas][m]);
}
for( new m = 0; m < 13; m++ )
{
new mStr[24];
format(mStr,sizeof(mStr), "ArmaPB%d", m);
INI_WriteInt(File,mStr, Informacion[playerid][pArmasPB][m]);
}
INI_WriteFloat(File,"Vida",health);
INI_WriteFloat(File,"Chaleco",chaleco);
INI_WriteFloat(File,"Pos_x",X);
INI_WriteFloat(File,"Pos_y",Y);
INI_WriteFloat(File,"Pos_z",Z);
INI_WriteFloat(File,"SPos_r",angulo);
INI_Close(File);
}
}
}
return 1;
}