Unknown Crash issue
#3

This my Code in OnPlayerDC

Код:
public OnPlayerDisconnect(playerid, reason)
{
	// Destroy TD
	// Player disconnected - is there any "special" reason?
	if(!isempty(PlayerInfo(playerid, DisconnectReason)))
	{
		SendClientMessageFormatted(INVALID_PLAYER_ID, COLOR_SILVER_SAND, "%s(%d) has left the server! "HTML_LYNCH"(%s)", PlayerInfo(playerid, UserName), playerid, PlayerInfo(playerid, DisconnectReason));

		DCC_SendChannelMessage(Server[CurrentChannel], sprintf("`PART` %s(%d) has left the server! (%s)",\
			ReturnPlayerName(playerid), playerid, PlayerInfo(playerid, DisconnectReason))); 
	}
	// There's no "special" reason - show SA-MP's default ones
	else
	{
		new disconnecttmp[32];

		switch(reason)
		{
			case 0: disconnecttmp = "timed out/crashed";
			case 1: disconnecttmp = "quit the game";
			case 2: disconnecttmp = "kicked/banned";

		}   
		SendClientMessageFormatted(INVALID_PLAYER_ID, COLOR_SILVER_SAND, "%s(%d) has left the server! "HTML_LYNCH"(%s)", PlayerInfo(playerid, UserName), playerid, disconnecttmp);

		DCC_SendChannelMessage(Server[CurrentChannel], sprintf("`PART` %s(%d) has left the server! (%d/"#MAX_PLAYERS")",\
			PlayerInfo(playerid, UserName), playerid, (Iter_Count(Player) - 1)));           
	}

	SendDeathMessage(INVALID_PLAYER_ID, playerid, 201);

	if(PlayerInfo(playerid, ID) != -1 && PlayerInfo(playerid, LoggedIn))
	{
		// Save player data and then reset it

		SavePlayerData(playerid, true);
		ResetPlayerData(playerid);

		foreach(new player_id : Player)
		{
			if(PlayerInfo(player_id, LastPM) == playerid)
			{
				// Invalidate last pm sent ID to those who sent a PM to this player
				PlayerInfo(player_id, LastPM) = INVALID_PLAYER_ID;
			}
			
		}
	}

	// Hide all turfs to aplayer on disconnect
	foreach(new i : Turf)
	{
		GangZoneHideForPlayer(playerid, i);
	}


	static pCount = 0;
	foreach(new i : Player)
	{
		pCount++;

		if(PlayerInfo(i, IsPlayerSpectating) && PlayerInfo(i, PlayerSpectating) == playerid)
		{
			spectateoff(i);
		} 
	}

	if((pCount <= Server[MinimumPlayers]) && Server[PendingUpdate])
	{
		SetTimerEx("RestartServer", 7000, false, "");
		GameTextForAll("Automatic Server Restart in~n~7 seconds", 6000, 3);
	}


	if(DuelInfo[playerid][InDuel] && DuelInfo[DuelInfo[playerid][Opponent]][InDuel] &&  DuelInfo[playerid][DuelSlot] == DuelInfo[DuelInfo[playerid][Opponent]][DuelSlot])
	{
		new tmp[500];
		switch(reason)
		{
		   case 0: format(tmp, sizeof(tmp), ""HTML_MONZA"[DUEL] "HTML_SHAKESPEARE"%s"HTML_MADISON" has timed-out during a duel. "HTML_SHAKESPEARE"%s"HTML_MADISON" has won this match!", PlayerInfo(playerid, UserName), ReturnPlayerName(DuelInfo[playerid][Opponent]));
		   case 1: format(tmp, sizeof(tmp), ""HTML_MONZA"[DUEL] "HTML_SHAKESPEARE"%s"HTML_MADISON" has left the server during a duel. "HTML_SHAKESPEARE"%s"HTML_MADISON" has won this match!", PlayerInfo(playerid, UserName), ReturnPlayerName(DuelInfo[playerid][Opponent]));
		   case 2: format(tmp, sizeof(tmp), ""HTML_MONZA"[DUEL] "HTML_SHAKESPEARE"%s"HTML_MADISON" has been kicked out from the server during a duel. "HTML_SHAKESPEARE"%s"HTML_MADISON" has won this match!", PlayerInfo(playerid, UserName), ReturnPlayerName(DuelInfo[playerid][Opponent]));
		}
		GivePlayerMoneyEx(DuelInfo[playerid][Opponent], DuelInfo[playerid][Bet]*2);
		StopDuelEx(DuelInfo[DuelInfo[playerid][Opponent]][DuelSlot], playerid, DuelInfo[playerid][Opponent]);
		SendClientMessageToAll(-1, tmp);
	}
	

	foreach(new turf_id : Turf)
	{
		DestroyDynamicMapIcon(PlayerMapIcon[playerid][turf_id]);
	}

	DestroyPlayerProgressBar(playerid, PlayerInfo(playerid, ActorHealth));

	TextDraw::DestroyPlayerTD(playerid);
	TextDraw::Destroy******TextDraws(playerid);
	TextDraw::DeleteGameTD(playerid);
	return true;
}
Reply


Messages In This Thread
Unknown Crash issue - by Jeffy892 - 22.07.2017, 05:44
Re: Unknown Crash issue - by blackgangs - 22.07.2017, 05:48
Re: Unknown Crash issue - by Jeffy892 - 22.07.2017, 05:52

Forum Jump:


Users browsing this thread: 2 Guest(s)