22.09.2016, 16:33
Quote:
If you don't save when player disconnect so it's not by saved. So you have when closing gamemode each time kick player, let save stats. Or save all stats for player in some timer
|
Код:
public OnPlayerDisconnect(playerid, reason) { if(TakingLicenses[playerid] == 1) { if(TakingLicensesType[playerid] == 1) { PlayerInfo[playerid][pDrivingLicenseB] = 0; DisablePlayerCheckpointEx(playerid, 2); TakingLicenses[playerid] = 1; TakingLicensesType[playerid] = 0; TakingLicenses[playerid] = 0; DestroyVehicle(TakingLicensesVehicle[playerid]); TakingLicensesStage[playerid] = 0; DisableRemoteVehicleCollisions(playerid, 0); } } foreach(new x : Player) { if(SpectatingID[x] == playerid && SpectatingState[x] != 0) { TogglePlayerSpectating(x, 0); SpectatingState[x] = 0; SpectatingID[x] = INVALID_PLAYER_ID; SpectatingPlace[x] = -1; SetPlayerPos(x, SpectatePos[x][0], SpectatePos[x][1], SpectatePos[x][2]); SetPlayerInterior(x, SpecIntID[x]); SCM(x, COLOR_GRAD2, "* The spectating has been stopped. (Quit)"); } } if(ServerRestarting == 1) { if(PlayerInfo[playerid][pLogged] == 1) { if(GetPlayerInterior(playerid) == 0) { PlayerInfo[playerid][pCrashed] = 1; GetPlayerPos(playerid, PlayerInfo[playerid][pMarkX], PlayerInfo[playerid][pMarkY], PlayerInfo[playerid][pMarkZ]); } } } else { new szDisconnectReason[3][] = { "Timeout/Crash", "Quit", "Kick/Ban" }; if(PlayerInfo[playerid][pLogged] == 1) { new strglobal[856]; if(reason == 0 && GetPlayerInterior(playerid) == 0) { PlayerInfo[playerid][pCrashed] = 1; GetPlayerPos(playerid, PlayerInfo[playerid][pMarkX], PlayerInfo[playerid][pMarkY], PlayerInfo[playerid][pMarkZ]); } format(strglobal, sizeof(strglobal), "* %s disconnected from server. (%s) ", GetName(playerid), szDisconnectReason[reason]); SendNearMessage(5.0, playerid, strglobal, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); } } if(ActiveReport[playerid] == 1) { new strglobal[856]; new toplayerid; if(ReportDuty[playerid] == 1) { toplayerid = ReportAdminID[playerid]; } if(ReportDuty[playerid] == 2) { toplayerid = ReportPlayerID[playerid]; } ActiveReport[toplayerid] = 0, ActiveReport[playerid] = 0; ReportDuty[playerid] = 0, ReportDuty[toplayerid] = 0; format(strglobal, sizeof(strglobal),"* %s stopped this report session (Quit).", GetName(playerid)); SCM(playerid, COLOR_YELLOW2, strglobal); SCM(toplayerid, COLOR_YELLOW2, strglobal); ReportPlayerID[playerid] = INVALID_PLAYER_ID; ReportPlayerID[toplayerid] = INVALID_PLAYER_ID; ReportAdminID[playerid] = INVALID_PLAYER_ID; ReportAdminID[toplayerid] = INVALID_PLAYER_ID; } if(Registering[playerid] == 1) { new query[256]; format(query, sizeof(query), "DELETE from Accounts where ID = %d", PlayerInfo[playerid][pID]); mysql_query(mysql, query, false); } if(PlayerInfo[playerid][pLogged] == 1) { OnAccountSave(playerid); } return 1; }