SA-MP Forums Archive
[Plugin] CrashDetect - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Plugin Development (https://sampforum.blast.hk/forumdisplay.php?fid=18)
+--- Thread: [Plugin] CrashDetect (/showthread.php?tid=262796)

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15


Re: crashdetect plugin v4.10 - KyPaITaTKa - 26.04.2013

Hey, explain me somebody what does this error mean, please? It's appear so often, but i can't correct it.

Quote:

[24/04/2013 16:55:04] [debug] Run time error 5: "Invalid memory access"
[24/04/2013 16:55:04] [debug] AMX backtrace:
[24/04/2013 16:55:04] [debug] #0 000b6dcc in public OnDialogResponse () from sa-csV10.amx
[24/04/2013 16:55:29] [debug] Run time error 5: "Invalid memory access"
[24/04/2013 16:55:29] [debug] AMX backtrace:
[24/04/2013 16:55:29] [debug] #0 000b6dcc in public OnDialogResponse () from sa-csV10.amx

And what i should do? Will be very gratefull for your answer..


Re: crashdetect plugin v4.10 - cekow - 26.04.2013

hello samp family
crash problem in my server's
I'm opening my server, but it turns off automatically
How do I solve this problem
Thank you in advance

CRASH DETECT LOG:

[22:54:49] [debug] Server crashed while executing cahithomesw.amx
[22:54:49] [debug] AMX backtrace:
[22:54:49] [debug] # 0 native fread () [004057a0] from samp-server.exe
[22:54:49] [debug] # 1 in 00185cb0?? () From cahithomesw.amx
[22:54:49] [debug] # 2 00135e08 in public Itter_OnGameModeInit () from cahithomesw.amx
[22:54:49] [debug] # 3 native CallLocalFunction () [00472260] from samp-server.exe
[22:54:49] [debug] # 4 000006d8 in public OnGameModeInit () from cahithomesw.amx
[22:54:49] [debug] System backtrace:
[22:54:49] [debug] # 0 004925c0 in?? () From C: \ Documents and Settings \ Charlie \ Desktop \ 209 \ 2 \ samp-server.exe


Re: crashdetect plugin v4.10 - xeeZ - 03.05.2013

I've recompiled the latest Linux binary so now it should run on older Linux boxes. If you got a "version `GLIBCXX_3.4.15` not found" error, please redownload.


Re: crashdetect plugin v4.10 - IstuntmanI - 03.05.2013

Could you make crashdetect to don't crash on computers with processors without SSE2 instructions ? (like on profiler)


Re: crashdetect plugin v4.10 - MyNinja - 28.06.2013

Quote:
Originally Posted by Kreatyve
Посмотреть сообщение
Yes.
What was the last code you added before the RT error 6 occurred?


Re: crashdetect plugin v4.10 - Kreatyve - 28.06.2013

Код:
stock GetServerIP() {
	new IP[42];
	
	if(Server[KI94_sIsConnected]) {
		format(IP, 42, "%s", Server[KI94_sIP]);
	}
	return IP:
}

stock GetServerPort() {
	new Port = 9999;
	
	if(Server[KI94_sIsConnected]) {
		Port = Server[KI94_sPort];
	}
	return Port:
}



Re: crashdetect plugin v4.10 - Konstantinos - 18.07.2013

I use the version 4.11.2 for Linux (CentOS) and I noticed that the plugin failed to load.

pawn Код:
// server_log.txt
[15:39:53]  Loading plugin: crashdetect.so
[15:39:53]   Failed (/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by plugins/crashdetect.so))
How can I fix it?

EDIT: Nevermind, I fixed it by following exactly what was written in this post (http://forum.sa-mp.com/showpost.php?...75&postcount=7). I had tried again but it didn't work, I did something wrong before I guess.


Re: crashdetect plugin v4.10 - Dark Killer - 02.08.2013

[09:44:32] [debug] Server crashed while executing LV.amx
[09:44:32] [debug] AMX backtrace:
[09:44:32] [debug] #0 native fclose () [0809a900] from samp03svr-port_5072
[09:44:32] [debug] #1 00001cec in ?? () from LV.amx
[09:44:32] [debug] #2 00003714 in ?? () from LV.amx
[09:44:32] [debug] #3 000bde14 in public OnDialogResponse () from LV.amx
[09:44:32] [debug] System backtrace:
[09:44:33] [debug] #0 b7416f41 in _ZN10StackTraceC1EPv () from plugins/crashdetect.so
[09:44:33] [debug] #1 b740d41f in _ZN11crashdetect20PrintSystemBacktraceEPv () from plugins/crashdetect.so
[09:44:33] [debug] #2 b740b963 in _ZN11crashdetect15SystemExceptionEPv () from plugins/crashdetect.so
[09:44:33] [debug] #3 b74163c1 in ?? () from plugins/crashdetect.so
[09:44:33] [debug] #4 b77c3600 in ?? ()
[09:44:33] [debug] #5 b757af57 in fclose () from /lib32/libc.so.6
[09:44:33] [debug] #6 0809a914 in ?? () from ./samp03svr-port_5072
[09:44:33] [debug] #7 08093c94 in ?? () from ./samp03svr-port_5072
[09:44:33] [debug] #8 b740c5a2 in _ZN11crashdetect13DoAmxCallbackEiPiS0_ () from plugins/crashdetect.so
[09:44:33] [debug] #9 b741465e in ?? () from plugins/crashdetect.so
[09:44:33] [debug] #10 b741b926 in amx_Exec () from plugins/crashdetect.so
[09:44:33] [debug] #11 b740c622 in _ZN11crashdetect9DoAmxExecEPii () from plugins/crashdetect.so
[09:44:33] [debug] #12 b7414699 in ?? () from plugins/crashdetect.so
[09:44:33] [debug] #13 080ae33f in ?? () from ./samp03svr-port_5072
[09:44:33] [debug] #14 080b97da in ?? () from ./samp03svr-port_5072
[09:44:33] [debug] #15 08071ae8 in ?? () from ./samp03svr-port_5072
[09:44:33] [debug] #16 08071be2 in ?? () from ./samp03svr-port_5072
[09:44:33] [debug] #17 0807ba00 in ?? () from ./samp03svr-port_5072
[09:44:33] [debug] #18 080b59ad in ?? () from ./samp03svr-port_5072
[09:44:33] [debug] #19 080b5b42 in ?? () from ./samp03svr-port_5072
[09:44:33] [debug] #20 080b1453 in ?? () from ./samp03svr-port_5072
[09:44:33] [debug] #21 b7535ca6 in __libc_start_main () from /lib32/libc.so.6
[09:44:33] [debug] #22 0804b521 in ?? () from ./samp03svr-port_5072


Re: crashdetect plugin v4.10 - xeeZ - 02.08.2013

https://sampwiki.blast.hk/wiki/Fclose

Quote:

Important Note: The file handle must be valid, and must point to a file successfully opened by fopen.




Re: crashdetect plugin v4.10 - Dister_Robi - 02.08.2013

Код:
[21:26:57] [debug] Server crashed while executing ATRP.amx
[21:26:57] [debug] AMX backtrace:
[21:26:57] [debug] #0 native fread () [004057a0] from samp-server.exe
[21:26:57] [debug] #1 00265188 in ?? () from ATRP.amx
[21:26:57] [debug] #2 00540a9c in public ServerHeartbeat () from ATRP.amx
[21:26:57] [debug] System backtrace:
[21:26:57] [debug] #0 00492860 in ?? () from C:\Documents and Settings\Administrator\Desktop\VN-PAC (AT-RP)\VN-PAC (AT-RP)\samp-server.exe
[21:26:57] [debug] #1 00492e90 in ?? () from C:\Documents and Settings\Administrator\Desktop\VN-PAC (AT-RP)\VN-PAC (AT-RP)\samp-server.exe
Код:
task ServerHeartbeat[1000]() {
    if(++AdminWarning == 15) {
		for(new z = 0; z < MAX_REPORTS; z++)
		{
			if(Reports[z][BeingUsed] == 1)
			{
				if(Reports[z][ReportPriority] == 1 || Reports[z][ReportPriority] == 2)
				{
					ABroadCast(COLOR_LIGHTRED,"A priority report is pending.", 2, true);
					break;
				}
			}
		}
		AdminWarning = 0;
	}

    static string[128];
	foreach(Player, i)
	{
		if(playerTabbed[i] == 0) {
			switch(PlayerInfo[i][pLevel]) {
				case 0 .. 2: PlayerInfo[i][pPayCheck] += 1;
				case 3 .. 4: PlayerInfo[i][pPayCheck] += 2;
				case 5 .. 6: PlayerInfo[i][pPayCheck] += 3;
				case 7 .. 8: PlayerInfo[i][pPayCheck] += 4;
				case 9 .. 10: PlayerInfo[i][pPayCheck] += 5;
				case 11 .. 12: PlayerInfo[i][pPayCheck] += 6;
				case 13 .. 14: PlayerInfo[i][pPayCheck] += 7;
				case 15 .. 16: PlayerInfo[i][pPayCheck] += 8;
				case 17 .. 18: PlayerInfo[i][pPayCheck] += 9;
				case 19 .. 20: PlayerInfo[i][pPayCheck] += 10;
				default: PlayerInfo[i][pPayCheck] += 11;
			}
			if(++PlayerInfo[i][pConnectSeconds] >= 3600) {
				PayDay(i);
			}
		}
        if (DangDieuTra[i] != 0)
	    {
			if (DieuTraLimit[i] > 1)
			{
			    DieuTraLimit[i]--;
			    if (IsPlayerInRangeOfPoint(i, 2.0, GetPVarFloat(i, "pDieuTraX"), GetPVarFloat(i, "pDieuTraY"), GetPVarFloat(i, "pDieuTraZ")))
				{

				    DieuTraCountDown[i]--;
				    if (DieuTraCountDown[i] > 0)
				    {
						format(string, sizeof(string), "Thoi gian con lai~n~~y~%d", DieuTraCountDown[i]);
				    	GameTextForPlayer(i, string, 900, 6);
				    }
					else if (DieuTraCountDown[i] == 0) //thanh cong
					{
				    	new killer = GetKillerID[DieuTraVictim[i]];
				    	if (killer == INVALID_PLAYER_ID)
						{
						    SendClientMessage(i, COLOR_WHITE, "Thu pham khong ton tai (da thoat)");
						    DieuTraVictim[i] = INVALID_PLAYER_ID;
		    				DangDieuTra[i] = 0;
		    				DieuTraCountDown[i] = 0;
		    				DieuTraLimit[i] = 0;
						}
						else
						{
							format(string, sizeof(string), "Hung thu co so CMND la %d", killer);
							SendClientMessage(i, COLOR_LIGHTBLUE, "***** Dieu tra thanh cong *****");
					    	SendClientMessage(i, COLOR_LIGHTGREEN, string);
					    	SendClientMessage(killer, COLOR_LIGHTRED, "Canh sat da tim ra ban la thu pham trong vu giet nguoi");
					    	SetPlayerWantedLevel(killer, GetPlayerWantedLevel(killer) + 1);
	    					PlayerInfo[killer][pCrimes]++;
							AddCrime(i, killer, "Giet nguoi");
					    	PlayerInfo[killer][pWantedLevel]++;
					    	format(string, sizeof(string), "** DISPATCH: Nhan vien %s da tim ra %s la thu pham cua 1 vu giet nguoi", GetPlayerNameEx(i), GetPlayerNameEx(killer));
					    	foreach (new p: Player)
					    	{
					    	    if (IsACop(p))
					    	    {
					    	        SendClientMessage(p, COLOR_DBLUE, string);
					    	        SendClientMessage(p, COLOR_LIGHTBLUE, "Hay kiem tra danh sach truy na.");
								}
					    	}
	    					DangDieuTra[i] = 0;
	    					DieuTraVictim[i] = INVALID_PLAYER_ID;
			    			DangDieuTra[i] = 0;
			    			DieuTraCountDown[i] = 0;
			    			DieuTraLimit[i] = 0;
		    			}
					}
				}
			}
			else if (DieuTraLimit[i] == 1 && DangDieuTra[i] == 1)
			{
			    SendClientMessage(i, COLOR_GREY, "Ban da that bai trong viec tim kiem thu pham");
			    DangDieuTra[i] = 0;
			}
		}
		/*if (GetPVarInt(i, "MailTime") > 0)
			SetPVarInt(i, "MailTime", GetPVarInt(i, "MailTime") - 1);
		else
			DeletePVar(i, "MailTime");*/

		if(PlayerInfo[i][pJudgeJailType] != 0 && PlayerInfo[i][pJudgeJailTime] > 0 && !PlayerInfo[i][pBeingSentenced]) PlayerInfo[i][pJudgeJailTime]--;
		if(PlayerInfo[i][pJudgeJailTime] <= 0 && PlayerInfo[i][pJudgeJailType] != 0) PlayerInfo[i][pJudgeJailType] = 0;
		if(PlayerInfo[i][pJailTime] > 0 && --PlayerInfo[i][pJailTime] <= 0) {
			if(strfind(PlayerInfo[i][pPrisonReason], "[IC]", true) != -1 || strfind(PlayerInfo[i][pPrisonReason], "[ISOLATE]", true) != -1) {
	   			SetPlayerInterior(i, 0);
				PlayerInfo[i][pInt] = 0;
				SetPlayerVirtualWorld(i, 0);
				PlayerInfo[i][pVW] = 0;
				SetPlayerPos(i, 1745.5969, 396.6139, 19.0345);
			}
			else {
			 	SetPlayerInterior(i, 0);
				PlayerInfo[i][pInt] = 0;
				SetPlayerVirtualWorld(i, 0);
				PlayerInfo[i][pVW] = 0;
	    		SetPlayerPos(i, 1544.5059,-1675.5673,13.5585);
			}
			PlayerInfo[i][pJailTime] = 0;
			PhoneOnline[i] = 0;
			SendClientMessageEx(i, COLOR_GRAD1,"   Ban da hoan thanh het nghia vu.");
			GameTextForPlayer(i, "~g~Tu do~n~~w~Hay co gang la mot cong dan tot", 5000, 1);
			ClearCrimes(i);
			strcpy(PlayerInfo[i][pPrisonReason], "None", 128);
			SetPlayerToTeamColor(i);
		}

		if(CommandSpamTimes[i] != 0)
		{
			CommandSpamTimes[i]--;
		}
		if(TextSpamTimes[i] != 0)
		{
			TextSpamTimes[i]--;
		}
		if(UsedFind[i] >= 1) --UsedFind[i];
		if(PlayerInfo[i][pMechTime] > 0) PlayerInfo[i][pMechTime]--;
		if(PlayerInfo[i][pLawyerTime] > 0) PlayerInfo[i][pLawyerTime]--;
		if(PlayerInfo[i][pDrugsTime] > 0) PlayerInfo[i][pDrugsTime]--;
		if(PlayerInfo[i][pRMuted] == 2) {
			PlayerInfo[i][pRMutedTime]--;
			if(PlayerInfo[i][pRMutedTime] <= 0) {
				PlayerInfo[i][pRMuted] = 0;
			}
		}
		if(PlayerInfo[i][pVMuted] == 2) {
			PlayerInfo[i][pVMutedTime]--;
			if(PlayerInfo[i][pVMutedTime] <= 0) {
				PlayerInfo[i][pVMuted] = 0;
			}
		}

		if(GetPVarType(i, "hFind"))
		{
		    new Float:X, Float:Y, Float:Z, pID = GetPVarInt(i, "hFind");
		    if(IsPlayerConnected(pID))
		    {
			    GetPlayerPos(pID, X, Y, Z);
			    SetPlayerCheckpoint(i, X, Y, Z, 4.0);
			}
		}

		if(WantLawyer[i] >= 1)
		{
			CallLawyer[i] = 111;
			if(WantLawyer[i] == 1)
			{
				SendClientMessageEx(i, COLOR_LIGHTRED, "Ban co muon mot luat su? (Go 'yes' hoac 'no')");
			}
			WantLawyer[i] ++;
			if(WantLawyer[i] == 8)
			{
				SendClientMessageEx(i, COLOR_LIGHTRED, "Ban co muon mot luat su? (Go 'yes' hoac 'no')");
			}
			if(WantLawyer[i] == 15)
			{
				SendClientMessageEx(i, COLOR_LIGHTRED, "Ban co muon mot luat su? (Go 'yes' hoac 'no')");
			}
			if(WantLawyer[i] == 20)
			{
				SendClientMessageEx(i, COLOR_LIGHTRED, "Khong co luat su nao lam nhiem vu! Thoi gian o tu bat dau.");
				WantLawyer[i] = 0;
				CallLawyer[i] = 0;
			}
		}
		if(PlayerDrunk[i] >= 5)
		{
			PlayerDrunkTime[i] += 1;
			if(PlayerDrunkTime[i] == 8)
			{
				PlayerDrunkTime[i] = 0;

				if(IsPlayerInAnyVehicle(i))
				{
					if(GetPlayerState(i) == 2)
					{
						new Float:angle;
						GetPlayerFacingAngle(i, angle);
						SetVehicleZAngle(GetPlayerVehicleID(i), angle + random(10) - 5);
					}
				}
				else
				{
					ApplyAnimation(i,"PED", "WALK_DRUNK",4.0,0,1,0,0,0);
				}
			}
		}
		if(PlayerStoned[i] >= 3)
		{
			PlayerStoned[i] += 1;
			SetPlayerDrunkLevel(i, 40000);
			if(PlayerStoned[i] == 50)
			{
				PlayerStoned[i] = 0;
				SetPlayerDrunkLevel(i, 0);
				SendClientMessageEx(i, COLOR_GRAD1, " You are no longer stoned!");
			}
		}
		if(PlayerInfo[i][pSexTime] > 0)
		{
			if(PlayerInfo[i][pSexTime] <= 0)
			{
				PlayerInfo[i][pSexTime] = 0;
			}
			else
			{
				PlayerInfo[i][pSexTime] -= 1;
			}
		}
		if(PlayerInfo[i][pLawyerFreeTime] > 0)
		{
			if(PlayerInfo[i][pLawyerFreeTime] <= 0)
			{
				PlayerInfo[i][pLawyerFreeTime] = 0;
			}
			else
			{
				PlayerInfo[i][pLawyerFreeTime] -= 1;
			}
		}
		if(BoxWaitTime[i] > 0)
		{
			if(BoxWaitTime[i] >= BoxDelay)
			{
				BoxDelay = 0;
				BoxWaitTime[i] = 0;
				PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
				GameTextForPlayer(i, "~g~Match Started", 5000, 1);
				TogglePlayerControllable(i, 1);
				RoundStarted = 1;
			}
			else
			{
				format(string, sizeof(string), "%d", BoxDelay - BoxWaitTime[i]);
				GameTextForPlayer(i, string, 1500, 6);
				BoxWaitTime[i] += 1;
			}
		}
		if(RoundStarted > 0)
		{
			if(PlayerBoxing[i] > 0)
			{
				new trigger = 0;
				new Lost = 0;
				new Float:angle;
				new Float:health;
				GetPlayerHealth(i, health);
				if(health < 12)
				{
					if(i == Boxer1) { Lost = 1; trigger = 1; }
					else if(i == Boxer2) { Lost = 2; trigger = 1; }
				}
				if(health < 28) { GetPlayerFacingAngle(i, angle); SetPlayerFacingAngle(i, angle + 85); }
				if(trigger)
				{
					new winner[MAX_PLAYER_NAME];
					new loser[MAX_PLAYER_NAME];
					new titel[MAX_PLAYER_NAME];
					if(Lost == 1)
					{
						if(IsPlayerConnected(Boxer1) && IsPlayerConnected(Boxer2))
						{
							if(IsPlayerInRangeOfPoint(Boxer1,25.0,768.48, -73.66, 1000.57) || IsPlayerInRangeOfPoint(Boxer2,25.0,768.48, -73.66, 1000.57))
							{
								SetPlayerPos(Boxer1, 768.48, -73.66, 1000.57); SetPlayerPos(Boxer2, 768.48, -73.66, 1000.57);
								SetPlayerInterior(Boxer1, 7); SetPlayerInterior(Boxer2, 7);
								GetPlayerName(Boxer1, loser, sizeof(loser));
								GetPlayerName(Boxer2, winner, sizeof(winner));
								SetPlayerWeapons(Boxer1);
								SetPlayerWeapons(Boxer2);
								if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer1][pLoses] += 1; }
								if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer2][pWins] += 1; }
								if(TBoxer != INVALID_PLAYER_ID)
								{
									if(IsPlayerConnected(TBoxer))
									{
										if(TBoxer != Boxer2)
										{
											if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12)
											{
												TBoxer = Boxer2;
												GetPlayerName(TBoxer, titel, sizeof(titel));
												new nstring[MAX_PLAYER_NAME];
												format(nstring, sizeof(nstring), "%s", titel);
												strmid(Titel[TitelName], nstring, 0, strlen(nstring), 255);
												Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
												Titel[TitelLoses] = PlayerInfo[TBoxer][pLoses];
												Misc_Save();
												format(string, sizeof(string), "Tin tuc Boxing: %s has Won the fight against Champion %s and is now the new Boxing Champion.",  titel, loser);
												ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
											}
											else
											{
												SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You would have been the Champion if you had the Boxer Job!");
											}
										}
										else
										{
											GetPlayerName(TBoxer, titel, sizeof(titel));
											format(string, sizeof(string), "Tin tuc Boxing: Giai vo dich Boxing %s has Won the fight against %s.",  titel, loser);
											ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
											Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
											Titel[TitelLoses] = PlayerInfo[Boxer2][pLoses];
											Misc_Save();
										}
									}
								}//TBoxer
								format(string, sizeof(string), "* You have Lost the Fight against %s.", winner);
								SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, string);
								GameTextForPlayer(Boxer1, "~r~You lost", 3500, 1);
								format(string, sizeof(string), "* You have Won the Fight against %s.", loser);
								SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, string);
								GameTextForPlayer(Boxer2, "~r~You won", 3500, 1);
								if(GetPlayerHealth(Boxer1, health) < 20)
								{
									SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
									SetPlayerHealth(Boxer1, 30.0);
								}
								else
								{
									SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
									SetPlayerHealth(Boxer1, 50.0);
								}
								if(GetPlayerHealth(Boxer2, health) < 20)
								{
									SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
									SetPlayerHealth(Boxer2, 30.0);
								}
								else
								{
									SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
									SetPlayerHealth(Boxer2, 50.0);
								}
								GameTextForPlayer(Boxer1, "~g~Match Over", 5000, 1); GameTextForPlayer(Boxer2, "~g~Match Over", 5000, 1);
								if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12) { PlayerInfo[Boxer2][pBoxSkill] += 1; }
								PlayerBoxing[Boxer1] = 0;
								PlayerBoxing[Boxer2] = 0;
							}
							SetPlayerPos(Boxer1, 765.8433,3.2924,1000.7186); SetPlayerPos(Boxer2, 765.8433,3.2924,1000.7186);
							SetPlayerInterior(Boxer1, 5); SetPlayerInterior(Boxer2, 5);
							GetPlayerName(Boxer1, loser, sizeof(loser));
							GetPlayerName(Boxer2, winner, sizeof(winner));
							SetPlayerWeapons(Boxer1);
							SetPlayerWeapons(Boxer2);
							if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer1][pLoses] += 1; }
							if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12) { PlayerInfo[Boxer2][pWins] += 1; }
							if(TBoxer != INVALID_PLAYER_ID)
							{
								if(IsPlayerConnected(TBoxer))
								{
									if(TBoxer != Boxer2)
									{
										if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12)
										{
											TBoxer = Boxer2;
											GetPlayerName(TBoxer, titel, sizeof(titel));
											new nstring[MAX_PLAYER_NAME];
											format(nstring, sizeof(nstring), "%s", titel);
											strmid(Titel[TitelName], nstring, 0, strlen(nstring), 255);
											Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
											Titel[TitelLoses] = PlayerInfo[TBoxer][pLoses];
											Misc_Save();
											format(string, sizeof(string), "Tin tuc Boxing: %s has Won the fight against Champion %s and is now the new Boxing Champion.",  titel, loser);
											ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
										}
										else
										{
											SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You would have been the Champion if you had the Boxer Job!");
										}
									}
									else
									{
										GetPlayerName(TBoxer, titel, sizeof(titel));
										format(string, sizeof(string), "Tin tuc Boxing: Giai vo dich Boxing %s has Won the fight against %s.",  titel, loser);
										ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
										Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
										Titel[TitelLoses] = PlayerInfo[Boxer2][pLoses];
										Misc_Save();
									}
								}
							}//TBoxer
							format(string, sizeof(string), "* You have Lost the Fight against %s.", winner);
							SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, string);
							GameTextForPlayer(Boxer1, "~r~You lost", 3500, 1);
							format(string, sizeof(string), "* You have Won the Fight against %s.", loser);
							SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, string);
							GameTextForPlayer(Boxer2, "~r~You won", 3500, 1);
							if(GetPlayerHealth(Boxer1, health) < 20)
							{
								SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
								SetPlayerHealth(Boxer1, 30.0);
							}
							else
							{
								SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
								SetPlayerHealth(Boxer1, 50.0);
							}
							if(GetPlayerHealth(Boxer2, health) < 20)
							{
								SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
								SetPlayerHealth(Boxer2, 30.0);
							}
							else
							{
								SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
								SetPlayerHealth(Boxer2, 50.0);
							}
							GameTextForPlayer(Boxer1, "~g~Match Over", 5000, 1); GameTextForPlayer(Boxer2, "~g~Match Over", 5000, 1);
							if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12) { PlayerInfo[Boxer2][pBoxSkill] += 1; }
							PlayerBoxing[Boxer1] = 0;
							PlayerBoxing[Boxer2] = 0;
						}
					}
					else if(Lost == 2)
					{
						if(IsPlayerConnected(Boxer1) && IsPlayerConnected(Boxer2))
						{
							if(IsPlayerInRangeOfPoint(Boxer1,25.0,768.48, -73.66, 1000.57) || IsPlayerInRangeOfPoint(Boxer2,25.0, 768.48, -73.66, 1000.57))
							{
								SetPlayerPos(Boxer1, 768.48, -73.66, 1000.57); SetPlayerPos(Boxer2, 768.48, -73.66, 1000.57);
								SetPlayerInterior(Boxer1, 7); SetPlayerInterior(Boxer2, 7);
								GetPlayerName(Boxer1, winner, sizeof(winner));
								GetPlayerName(Boxer2, loser, sizeof(loser));
								if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12) { PlayerInfo[Boxer2][pLoses] += 1; }
								if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer1][pWins] += 1; }
								if(TBoxer != INVALID_PLAYER_ID)
								{
									if(IsPlayerConnected(TBoxer))
									{
										if(TBoxer != Boxer1)
										{
											if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12)
											{
												TBoxer = Boxer1;
												GetPlayerName(TBoxer, titel, sizeof(titel));
												new nstring[MAX_PLAYER_NAME];
												format(nstring, sizeof(nstring), "%s", titel);
												strmid(Titel[TitelName], nstring, 0, strlen(nstring), 255);
												Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
												Titel[TitelLoses] = PlayerInfo[TBoxer][pLoses];
												Misc_Save();
												format(string, sizeof(string), "Tin tuc Boxing: %s has Won the fight against Champion %s and is now the new Boxing Champion.",  titel, loser);
												ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
											}
											else
											{
												SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You would have been the Champion if you had the Boxer Job!");
											}
										}
										else
										{
											GetPlayerName(TBoxer, titel, sizeof(titel));
											format(string, sizeof(string), "Tin tuc Boxing: Giai vo dich Boxing %s has Won the fight against %s.",  titel, loser);
											ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
											Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
											Titel[TitelLoses] = PlayerInfo[Boxer1][pLoses];
											Misc_Save();
										}
									}
								}//TBoxer
								format(string, sizeof(string), "* You have Lost the Fight against %s.", winner);
								SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, string);
								GameTextForPlayer(Boxer2, "~r~You lost", 3500, 1);
								format(string, sizeof(string), "* You have Won the Fight against %s.", loser);
								SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, string);
								GameTextForPlayer(Boxer1, "~g~You won", 3500, 1);
								if(GetPlayerHealth(Boxer1, health) < 20)
								{
									SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
									SetPlayerHealth(Boxer1, 30.0);
								}
								else
								{
									SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
									SetPlayerHealth(Boxer1, 50.0);
								}
								if(GetPlayerHealth(Boxer2, health) < 20)
								{
									SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
									SetPlayerHealth(Boxer2, 30.0);
								}
								else
								{
									SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
									SetPlayerHealth(Boxer2, 50.0);
								}
								GameTextForPlayer(Boxer1, "~g~Match Over", 5000, 1); GameTextForPlayer(Boxer2, "~g~Match Over", 5000, 1);
								if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer1][pBoxSkill] += 1; }
								PlayerBoxing[Boxer1] = 0;
								PlayerBoxing[Boxer2] = 0;
							}
							SetPlayerPos(Boxer1, 768.48, -73.66, 1000.57); SetPlayerPos(Boxer2, 768.48, -73.66, 1000.57);
							SetPlayerInterior(Boxer1, 7); SetPlayerInterior(Boxer2, 7);
							GetPlayerName(Boxer1, winner, sizeof(winner));
							GetPlayerName(Boxer2, loser, sizeof(loser));
							if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12) { PlayerInfo[Boxer2][pLoses] += 1; }
							if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer1][pWins] += 1; }
							if(TBoxer != INVALID_PLAYER_ID)
							{
								if(IsPlayerConnected(TBoxer))
								{
									if(TBoxer != Boxer1)
									{
										if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12)
										{
											TBoxer = Boxer1;
											GetPlayerName(TBoxer, titel, sizeof(titel));
											new nstring[MAX_PLAYER_NAME];
											format(nstring, sizeof(nstring), "%s", titel);
											strmid(Titel[TitelName], nstring, 0, strlen(nstring), 255);
											Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
											Titel[TitelLoses] = PlayerInfo[TBoxer][pLoses];
											Misc_Save();
											format(string, sizeof(string), "Tin tuc Boxing: %s has Won the fight against Champion %s and is now the new Boxing Champion.",  titel, loser);
											ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
										}
										else
										{
											SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You would have been the Champion if you had the Boxer Job!");
										}
									}
									else
									{
										GetPlayerName(TBoxer, titel, sizeof(titel));
										format(string, sizeof(string), "Tin tuc Boxing: Giai vo dich Boxing %s has Won the fight against %s.",  titel, loser);
										ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
										Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
										Titel[TitelLoses] = PlayerInfo[Boxer1][pLoses];
										Misc_Save();
									}
								}
							}//TBoxer
							format(string, sizeof(string), "* You have Lost the Fight against %s.", winner);
							SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, string);
							GameTextForPlayer(Boxer2, "~r~You lost", 3500, 1);
							format(string, sizeof(string), "* You have Won the Fight against %s.", loser);
							SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, string);
							GameTextForPlayer(Boxer1, "~g~You won", 3500, 1);
							if(GetPlayerHealth(Boxer1, health) < 20)
							{
								SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
								SetPlayerHealth(Boxer1, 30.0);
							}
							else
							{
								SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
								SetPlayerHealth(Boxer1, 50.0);
							}
							if(GetPlayerHealth(Boxer2, health) < 20)
							{
								SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
								SetPlayerHealth(Boxer2, 30.0);
							}
							else
							{
								SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
								SetPlayerHealth(Boxer2, 50.0);
							}
							GameTextForPlayer(Boxer1, "~g~Match Over", 5000, 1); GameTextForPlayer(Boxer2, "~g~Match Over", 5000, 1);
							if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer1][pBoxSkill] += 1; }
							PlayerBoxing[Boxer1] = 0;
							PlayerBoxing[Boxer2] = 0;
						}
					}
					InRing = 0;
					RoundStarted = 0;
					Boxer1 = INVALID_PLAYER_ID;
					Boxer2 = INVALID_PLAYER_ID;
					TBoxer = INVALID_PLAYER_ID;
					trigger = 0;
				}
			}
		}
		if(FindTime[i] >= 1)
		{
			if(FindTime[i] == FindTimePoints[i]) {
				FindTime[i] = 0;
				FindTimePoints[i] = 0;
				SetPlayerToTeamColor(FindingPlayer[i]);
				FindingPlayer[i] = -1;
				PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
				GameTextForPlayer(i, "~r~RedMarker gone", 2500, 1);
			}
			else
			{
				format(string, sizeof(string), "%d", FindTimePoints[i] - FindTime[i]);
				GameTextForPlayer(i, string, 1500, 6);
				FindTime[i] += 1;
			}
		}
		if(CalledCops[i] >= 1)
		{
			if(CopsCallTime[i] < 1) { CopsCallTime[i] = 0; HidePlayerBeaconForCops(i); CalledCops[i] = 0; }
			else
			{
				CopsCallTime[i]--;
			}
		}
		if(CalledMedics[i] >= 1)
		{
			if(MedicsCallTime[i] < 1) { MedicsCallTime[i] = 0; HidePlayerBeaconForMedics(i); CalledMedics[i] = 0; }
			else
			{
				MedicsCallTime[i]--;
			}
		}
		if(NewbieTimer[i] > 0)
		{
			NewbieTimer[i]--;
		}
		if(OutTimer[i] > 0)
		{
			OutTimer[i]--;
		}
		if(HlKickTimer[i] > 0)
		{
			HlKickTimer[i]--;
		}
		if(HelperTimer[i] > 0)
		{
			HelperTimer[i]--;
		}
		if(JustReported[i] > 0)
		{
			JustReported[i]--;
		}
		if(TaxiCallTime[i] > 0)
		{
			if(TaxiAccepted[i] != INVALID_PLAYER_ID)
			{
				if(IsPlayerConnected(TaxiAccepted[i]))
				{
					new Float:X,Float:Y,Float:Z;
					GetPlayerPos(TaxiAccepted[i], X, Y, Z);
					SetPlayerCheckpoint(i, X, Y, Z, 5);
				}
			}
		}
		if(EMSCallTime[i] > 0)
		{
			if(EMSAccepted[i] != INVALID_PLAYER_ID)
			{
				if(IsPlayerConnected(EMSAccepted[i]))
				{
					new Float:X,Float:Y,Float:Z;
					GetPlayerPos(EMSAccepted[i], X, Y, Z);
					new zone[MAX_ZONE_NAME];
					Get3DZone(X, Y, Z, zone, sizeof(zone));
					format(string, sizeof(string), "Your patient is located in %s.", zone);
					SetPlayerCheckpoint(i, X, Y, Z, 5);
				}
			}
		}

		if(BusCallTime[i] > 0)
		{
			if(BusAccepted[i] != INVALID_PLAYER_ID)
			{
				if(IsPlayerConnected(BusAccepted[i]))
				{
					new Float:X,Float:Y,Float:Z;
					GetPlayerPos(BusAccepted[i], X, Y, Z);
					SetPlayerCheckpoint(i, X, Y, Z, 5);
				}
			}
		}
		if(MedicCallTime[i] > 0)
		{
			if(MedicCallTime[i] == 45) { MedicCallTime[i] = 0; DisablePlayerCheckpoint(i); PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); GameTextForPlayer(i, "~r~RedMarker gone", 2500, 1); }
			else
			{
				format(string, sizeof(string), "%d", 45 - MedicCallTime[i]);
				new Float:X,Float:Y,Float:Z;
				GetPlayerPos(MedicAccepted[i], X, Y, Z);
				SetPlayerCheckpoint(i, X, Y, Z, 5);
				GameTextForPlayer(i, string, 1500, 6);
				MedicCallTime[i] += 1;
			}
		}
		if(MechanicCallTime[i] > 0)
		{
			if(MechanicCallTime[i] == 30) { MechanicCallTime[i] = 0; DisablePlayerCheckpoint(i); PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); GameTextForPlayer(i, "~r~RedMarker gone", 2500, 1); }
			else
			{
				format(string, sizeof(string), "%d", 30 - MechanicCallTime[i]);
				GameTextForPlayer(i, string, 1500, 6);
				MechanicCallTime[i] += 1;
			}
		}
		if(TowCallTime[i] > 0)
		{
			if(TowCallTime[i] == 30) { TowCallTime[i] = 0; DisablePlayerCheckpoint(i); PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); GameTextForPlayer(i, "~r~RedMarker gone", 2500, 1); }
			else
			{
				format(string, sizeof(string), "%d", 30 - TowCallTime[i]);
				GameTextForPlayer(i, string, 1500, 6);
				TowCallTime[i] += 1;
			}
		}
		if(PlayerCuffed[i] == 1)
		{
			if(PlayerCuffedTime[i] <= 0)
			{
				//Frozen[i] = 0;
    			DeletePVar(i, "IsFrozen");
				TogglePlayerControllable(i, 1);
				PlayerCuffed[i] = 0;
				DeletePVar(i, "PlayerCuffed");
				PlayerCuffedTime[i] = 0;
				ClearAnimations(i);
				new Float:X, Float:Y, Float:Z;
				GetPlayerPos(i, X, Y, Z);
				SetPlayerPos(i, X, Y, Z);
			}
			else
			{
				PlayerCuffedTime[i] -= 1;
			}
		}
		if(PlayerCuffed[i] == 2)
		{
			if(PlayerCuffedTime[i] <= 0)
			{
				new Float:X, Float:Y, Float:Z;
				GetPlayerPos(i, X, Y, Z);
				new copinrange;
				foreach(Player, j)
				{
					if(IsPlayerInRangeOfPoint(j, 30, X, Y, Z) && IsACop(j))
					{
						copinrange = 1;
					}
				}

				if(copinrange == 0)
				{
					//Frozen[i] = 0;
					DeletePVar(i, "IsFrozen");
					GameTextForPlayer(i, "~r~Ban da pha vo cong tay!Ban duoc tu do", 2500, 3);
					TogglePlayerControllable(i, 1);
					PlayerCuffed[i] = 0;
					DeletePVar(i, "PlayerCuffed");
					PlayerCuffedTime[i] = 0;
				}
				else
				{
					PlayerCuffedTime[i] = 60;
				}
			}
			else
			{
				PlayerCuffedTime[i] -= 1;
			}
		}
	}
}



Re: crashdetect plugin v4.10 - Dister_Robi - 02.08.2013

Код:
[21:26:57] [debug] Server crashed while executing ATRP.amx
[21:26:57] [debug] AMX backtrace:
[21:26:57] [debug] #0 native fread () [004057a0] from samp-server.exe
[21:26:57] [debug] #1 00265188 in ?? () from ATRP.amx
[21:26:57] [debug] #2 00540a9c in public ServerHeartbeat () from ATRP.amx
[21:26:57] [debug] System backtrace:
[21:26:57] [debug] #0 00492860 in ?? () from C:\Documents and Settings\Administrator\Desktop\VN-PAC (AT-RP)\VN-PAC (AT-RP)\samp-server.exe
[21:26:57] [debug] #1 00492e90 in ?? () from C:\Documents and Settings\Administrator\Desktop\VN-PAC (AT-RP)\VN-PAC (AT-RP)\samp-server.exe
Код:
task ServerHeartbeat[1000]() {
    if(++AdminWarning == 15) {
		for(new z = 0; z < MAX_REPORTS; z++)
		{
			if(Reports[z][BeingUsed] == 1)
			{
				if(Reports[z][ReportPriority] == 1 || Reports[z][ReportPriority] == 2)
				{
					ABroadCast(COLOR_LIGHTRED,"A priority report is pending.", 2, true);
					break;
				}
			}
		}
		AdminWarning = 0;
	}

    static string[128];
	foreach(Player, i)
	{
		if(playerTabbed[i] == 0) {
			switch(PlayerInfo[i][pLevel]) {
				case 0 .. 2: PlayerInfo[i][pPayCheck] += 1;
				case 3 .. 4: PlayerInfo[i][pPayCheck] += 2;
				case 5 .. 6: PlayerInfo[i][pPayCheck] += 3;
				case 7 .. 8: PlayerInfo[i][pPayCheck] += 4;
				case 9 .. 10: PlayerInfo[i][pPayCheck] += 5;
				case 11 .. 12: PlayerInfo[i][pPayCheck] += 6;
				case 13 .. 14: PlayerInfo[i][pPayCheck] += 7;
				case 15 .. 16: PlayerInfo[i][pPayCheck] += 8;
				case 17 .. 18: PlayerInfo[i][pPayCheck] += 9;
				case 19 .. 20: PlayerInfo[i][pPayCheck] += 10;
				default: PlayerInfo[i][pPayCheck] += 11;
			}
			if(++PlayerInfo[i][pConnectSeconds] >= 3600) {
				PayDay(i);
			}
		}
        if (DangDieuTra[i] != 0)
	    {
			if (DieuTraLimit[i] > 1)
			{
			    DieuTraLimit[i]--;
			    if (IsPlayerInRangeOfPoint(i, 2.0, GetPVarFloat(i, "pDieuTraX"), GetPVarFloat(i, "pDieuTraY"), GetPVarFloat(i, "pDieuTraZ")))
				{

				    DieuTraCountDown[i]--;
				    if (DieuTraCountDown[i] > 0)
				    {
						format(string, sizeof(string), "Thoi gian con lai~n~~y~%d", DieuTraCountDown[i]);
				    	GameTextForPlayer(i, string, 900, 6);
				    }
					else if (DieuTraCountDown[i] == 0) //thanh cong
					{
				    	new killer = GetKillerID[DieuTraVictim[i]];
				    	if (killer == INVALID_PLAYER_ID)
						{
						    SendClientMessage(i, COLOR_WHITE, "Thu pham khong ton tai (da thoat)");
						    DieuTraVictim[i] = INVALID_PLAYER_ID;
		    				DangDieuTra[i] = 0;
		    				DieuTraCountDown[i] = 0;
		    				DieuTraLimit[i] = 0;
						}
						else
						{
							format(string, sizeof(string), "Hung thu co so CMND la %d", killer);
							SendClientMessage(i, COLOR_LIGHTBLUE, "***** Dieu tra thanh cong *****");
					    	SendClientMessage(i, COLOR_LIGHTGREEN, string);
					    	SendClientMessage(killer, COLOR_LIGHTRED, "Canh sat da tim ra ban la thu pham trong vu giet nguoi");
					    	SetPlayerWantedLevel(killer, GetPlayerWantedLevel(killer) + 1);
	    					PlayerInfo[killer][pCrimes]++;
							AddCrime(i, killer, "Giet nguoi");
					    	PlayerInfo[killer][pWantedLevel]++;
					    	format(string, sizeof(string), "** DISPATCH: Nhan vien %s da tim ra %s la thu pham cua 1 vu giet nguoi", GetPlayerNameEx(i), GetPlayerNameEx(killer));
					    	foreach (new p: Player)
					    	{
					    	    if (IsACop(p))
					    	    {
					    	        SendClientMessage(p, COLOR_DBLUE, string);
					    	        SendClientMessage(p, COLOR_LIGHTBLUE, "Hay kiem tra danh sach truy na.");
								}
					    	}
	    					DangDieuTra[i] = 0;
	    					DieuTraVictim[i] = INVALID_PLAYER_ID;
			    			DangDieuTra[i] = 0;
			    			DieuTraCountDown[i] = 0;
			    			DieuTraLimit[i] = 0;
		    			}
					}
				}
			}
			else if (DieuTraLimit[i] == 1 && DangDieuTra[i] == 1)
			{
			    SendClientMessage(i, COLOR_GREY, "Ban da that bai trong viec tim kiem thu pham");
			    DangDieuTra[i] = 0;
			}
		}
		/*if (GetPVarInt(i, "MailTime") > 0)
			SetPVarInt(i, "MailTime", GetPVarInt(i, "MailTime") - 1);
		else
			DeletePVar(i, "MailTime");*/

		if(PlayerInfo[i][pJudgeJailType] != 0 && PlayerInfo[i][pJudgeJailTime] > 0 && !PlayerInfo[i][pBeingSentenced]) PlayerInfo[i][pJudgeJailTime]--;
		if(PlayerInfo[i][pJudgeJailTime] <= 0 && PlayerInfo[i][pJudgeJailType] != 0) PlayerInfo[i][pJudgeJailType] = 0;
		if(PlayerInfo[i][pJailTime] > 0 && --PlayerInfo[i][pJailTime] <= 0) {
			if(strfind(PlayerInfo[i][pPrisonReason], "[IC]", true) != -1 || strfind(PlayerInfo[i][pPrisonReason], "[ISOLATE]", true) != -1) {
	   			SetPlayerInterior(i, 0);
				PlayerInfo[i][pInt] = 0;
				SetPlayerVirtualWorld(i, 0);
				PlayerInfo[i][pVW] = 0;
				SetPlayerPos(i, 1745.5969, 396.6139, 19.0345);
			}
			else {
			 	SetPlayerInterior(i, 0);
				PlayerInfo[i][pInt] = 0;
				SetPlayerVirtualWorld(i, 0);
				PlayerInfo[i][pVW] = 0;
	    		SetPlayerPos(i, 1544.5059,-1675.5673,13.5585);
			}
			PlayerInfo[i][pJailTime] = 0;
			PhoneOnline[i] = 0;
			SendClientMessageEx(i, COLOR_GRAD1,"   Ban da hoan thanh het nghia vu.");
			GameTextForPlayer(i, "~g~Tu do~n~~w~Hay co gang la mot cong dan tot", 5000, 1);
			ClearCrimes(i);
			strcpy(PlayerInfo[i][pPrisonReason], "None", 128);
			SetPlayerToTeamColor(i);
		}

		if(CommandSpamTimes[i] != 0)
		{
			CommandSpamTimes[i]--;
		}
		if(TextSpamTimes[i] != 0)
		{
			TextSpamTimes[i]--;
		}
		if(UsedFind[i] >= 1) --UsedFind[i];
		if(PlayerInfo[i][pMechTime] > 0) PlayerInfo[i][pMechTime]--;
		if(PlayerInfo[i][pLawyerTime] > 0) PlayerInfo[i][pLawyerTime]--;
		if(PlayerInfo[i][pDrugsTime] > 0) PlayerInfo[i][pDrugsTime]--;
		if(PlayerInfo[i][pRMuted] == 2) {
			PlayerInfo[i][pRMutedTime]--;
			if(PlayerInfo[i][pRMutedTime] <= 0) {
				PlayerInfo[i][pRMuted] = 0;
			}
		}
		if(PlayerInfo[i][pVMuted] == 2) {
			PlayerInfo[i][pVMutedTime]--;
			if(PlayerInfo[i][pVMutedTime] <= 0) {
				PlayerInfo[i][pVMuted] = 0;
			}
		}

		if(GetPVarType(i, "hFind"))
		{
		    new Float:X, Float:Y, Float:Z, pID = GetPVarInt(i, "hFind");
		    if(IsPlayerConnected(pID))
		    {
			    GetPlayerPos(pID, X, Y, Z);
			    SetPlayerCheckpoint(i, X, Y, Z, 4.0);
			}
		}

		if(WantLawyer[i] >= 1)
		{
			CallLawyer[i] = 111;
			if(WantLawyer[i] == 1)
			{
				SendClientMessageEx(i, COLOR_LIGHTRED, "Ban co muon mot luat su? (Go 'yes' hoac 'no')");
			}
			WantLawyer[i] ++;
			if(WantLawyer[i] == 8)
			{
				SendClientMessageEx(i, COLOR_LIGHTRED, "Ban co muon mot luat su? (Go 'yes' hoac 'no')");
			}
			if(WantLawyer[i] == 15)
			{
				SendClientMessageEx(i, COLOR_LIGHTRED, "Ban co muon mot luat su? (Go 'yes' hoac 'no')");
			}
			if(WantLawyer[i] == 20)
			{
				SendClientMessageEx(i, COLOR_LIGHTRED, "Khong co luat su nao lam nhiem vu! Thoi gian o tu bat dau.");
				WantLawyer[i] = 0;
				CallLawyer[i] = 0;
			}
		}
		if(PlayerDrunk[i] >= 5)
		{
			PlayerDrunkTime[i] += 1;
			if(PlayerDrunkTime[i] == 8)
			{
				PlayerDrunkTime[i] = 0;

				if(IsPlayerInAnyVehicle(i))
				{
					if(GetPlayerState(i) == 2)
					{
						new Float:angle;
						GetPlayerFacingAngle(i, angle);
						SetVehicleZAngle(GetPlayerVehicleID(i), angle + random(10) - 5);
					}
				}
				else
				{
					ApplyAnimation(i,"PED", "WALK_DRUNK",4.0,0,1,0,0,0);
				}
			}
		}
		if(PlayerStoned[i] >= 3)
		{
			PlayerStoned[i] += 1;
			SetPlayerDrunkLevel(i, 40000);
			if(PlayerStoned[i] == 50)
			{
				PlayerStoned[i] = 0;
				SetPlayerDrunkLevel(i, 0);
				SendClientMessageEx(i, COLOR_GRAD1, " You are no longer stoned!");
			}
		}
		if(PlayerInfo[i][pSexTime] > 0)
		{
			if(PlayerInfo[i][pSexTime] <= 0)
			{
				PlayerInfo[i][pSexTime] = 0;
			}
			else
			{
				PlayerInfo[i][pSexTime] -= 1;
			}
		}
		if(PlayerInfo[i][pLawyerFreeTime] > 0)
		{
			if(PlayerInfo[i][pLawyerFreeTime] <= 0)
			{
				PlayerInfo[i][pLawyerFreeTime] = 0;
			}
			else
			{
				PlayerInfo[i][pLawyerFreeTime] -= 1;
			}
		}
		if(BoxWaitTime[i] > 0)
		{
			if(BoxWaitTime[i] >= BoxDelay)
			{
				BoxDelay = 0;
				BoxWaitTime[i] = 0;
				PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
				GameTextForPlayer(i, "~g~Match Started", 5000, 1);
				TogglePlayerControllable(i, 1);
				RoundStarted = 1;
			}
			else
			{
				format(string, sizeof(string), "%d", BoxDelay - BoxWaitTime[i]);
				GameTextForPlayer(i, string, 1500, 6);
				BoxWaitTime[i] += 1;
			}
		}
		if(RoundStarted > 0)
		{
			if(PlayerBoxing[i] > 0)
			{
				new trigger = 0;
				new Lost = 0;
				new Float:angle;
				new Float:health;
				GetPlayerHealth(i, health);
				if(health < 12)
				{
					if(i == Boxer1) { Lost = 1; trigger = 1; }
					else if(i == Boxer2) { Lost = 2; trigger = 1; }
				}
				if(health < 28) { GetPlayerFacingAngle(i, angle); SetPlayerFacingAngle(i, angle + 85); }
				if(trigger)
				{
					new winner[MAX_PLAYER_NAME];
					new loser[MAX_PLAYER_NAME];
					new titel[MAX_PLAYER_NAME];
					if(Lost == 1)
					{
						if(IsPlayerConnected(Boxer1) && IsPlayerConnected(Boxer2))
						{
							if(IsPlayerInRangeOfPoint(Boxer1,25.0,768.48, -73.66, 1000.57) || IsPlayerInRangeOfPoint(Boxer2,25.0,768.48, -73.66, 1000.57))
							{
								SetPlayerPos(Boxer1, 768.48, -73.66, 1000.57); SetPlayerPos(Boxer2, 768.48, -73.66, 1000.57);
								SetPlayerInterior(Boxer1, 7); SetPlayerInterior(Boxer2, 7);
								GetPlayerName(Boxer1, loser, sizeof(loser));
								GetPlayerName(Boxer2, winner, sizeof(winner));
								SetPlayerWeapons(Boxer1);
								SetPlayerWeapons(Boxer2);
								if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer1][pLoses] += 1; }
								if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer2][pWins] += 1; }
								if(TBoxer != INVALID_PLAYER_ID)
								{
									if(IsPlayerConnected(TBoxer))
									{
										if(TBoxer != Boxer2)
										{
											if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12)
											{
												TBoxer = Boxer2;
												GetPlayerName(TBoxer, titel, sizeof(titel));
												new nstring[MAX_PLAYER_NAME];
												format(nstring, sizeof(nstring), "%s", titel);
												strmid(Titel[TitelName], nstring, 0, strlen(nstring), 255);
												Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
												Titel[TitelLoses] = PlayerInfo[TBoxer][pLoses];
												Misc_Save();
												format(string, sizeof(string), "Tin tuc Boxing: %s has Won the fight against Champion %s and is now the new Boxing Champion.",  titel, loser);
												ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
											}
											else
											{
												SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You would have been the Champion if you had the Boxer Job!");
											}
										}
										else
										{
											GetPlayerName(TBoxer, titel, sizeof(titel));
											format(string, sizeof(string), "Tin tuc Boxing: Giai vo dich Boxing %s has Won the fight against %s.",  titel, loser);
											ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
											Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
											Titel[TitelLoses] = PlayerInfo[Boxer2][pLoses];
											Misc_Save();
										}
									}
								}//TBoxer
								format(string, sizeof(string), "* You have Lost the Fight against %s.", winner);
								SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, string);
								GameTextForPlayer(Boxer1, "~r~You lost", 3500, 1);
								format(string, sizeof(string), "* You have Won the Fight against %s.", loser);
								SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, string);
								GameTextForPlayer(Boxer2, "~r~You won", 3500, 1);
								if(GetPlayerHealth(Boxer1, health) < 20)
								{
									SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
									SetPlayerHealth(Boxer1, 30.0);
								}
								else
								{
									SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
									SetPlayerHealth(Boxer1, 50.0);
								}
								if(GetPlayerHealth(Boxer2, health) < 20)
								{
									SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
									SetPlayerHealth(Boxer2, 30.0);
								}
								else
								{
									SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
									SetPlayerHealth(Boxer2, 50.0);
								}
								GameTextForPlayer(Boxer1, "~g~Match Over", 5000, 1); GameTextForPlayer(Boxer2, "~g~Match Over", 5000, 1);
								if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12) { PlayerInfo[Boxer2][pBoxSkill] += 1; }
								PlayerBoxing[Boxer1] = 0;
								PlayerBoxing[Boxer2] = 0;
							}
							SetPlayerPos(Boxer1, 765.8433,3.2924,1000.7186); SetPlayerPos(Boxer2, 765.8433,3.2924,1000.7186);
							SetPlayerInterior(Boxer1, 5); SetPlayerInterior(Boxer2, 5);
							GetPlayerName(Boxer1, loser, sizeof(loser));
							GetPlayerName(Boxer2, winner, sizeof(winner));
							SetPlayerWeapons(Boxer1);
							SetPlayerWeapons(Boxer2);
							if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer1][pLoses] += 1; }
							if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12) { PlayerInfo[Boxer2][pWins] += 1; }
							if(TBoxer != INVALID_PLAYER_ID)
							{
								if(IsPlayerConnected(TBoxer))
								{
									if(TBoxer != Boxer2)
									{
										if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12)
										{
											TBoxer = Boxer2;
											GetPlayerName(TBoxer, titel, sizeof(titel));
											new nstring[MAX_PLAYER_NAME];
											format(nstring, sizeof(nstring), "%s", titel);
											strmid(Titel[TitelName], nstring, 0, strlen(nstring), 255);
											Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
											Titel[TitelLoses] = PlayerInfo[TBoxer][pLoses];
											Misc_Save();
											format(string, sizeof(string), "Tin tuc Boxing: %s has Won the fight against Champion %s and is now the new Boxing Champion.",  titel, loser);
											ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
										}
										else
										{
											SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You would have been the Champion if you had the Boxer Job!");
										}
									}
									else
									{
										GetPlayerName(TBoxer, titel, sizeof(titel));
										format(string, sizeof(string), "Tin tuc Boxing: Giai vo dich Boxing %s has Won the fight against %s.",  titel, loser);
										ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
										Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
										Titel[TitelLoses] = PlayerInfo[Boxer2][pLoses];
										Misc_Save();
									}
								}
							}//TBoxer
							format(string, sizeof(string), "* You have Lost the Fight against %s.", winner);
							SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, string);
							GameTextForPlayer(Boxer1, "~r~You lost", 3500, 1);
							format(string, sizeof(string), "* You have Won the Fight against %s.", loser);
							SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, string);
							GameTextForPlayer(Boxer2, "~r~You won", 3500, 1);
							if(GetPlayerHealth(Boxer1, health) < 20)
							{
								SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
								SetPlayerHealth(Boxer1, 30.0);
							}
							else
							{
								SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
								SetPlayerHealth(Boxer1, 50.0);
							}
							if(GetPlayerHealth(Boxer2, health) < 20)
							{
								SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
								SetPlayerHealth(Boxer2, 30.0);
							}
							else
							{
								SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
								SetPlayerHealth(Boxer2, 50.0);
							}
							GameTextForPlayer(Boxer1, "~g~Match Over", 5000, 1); GameTextForPlayer(Boxer2, "~g~Match Over", 5000, 1);
							if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12) { PlayerInfo[Boxer2][pBoxSkill] += 1; }
							PlayerBoxing[Boxer1] = 0;
							PlayerBoxing[Boxer2] = 0;
						}
					}
					else if(Lost == 2)
					{
						if(IsPlayerConnected(Boxer1) && IsPlayerConnected(Boxer2))
						{
							if(IsPlayerInRangeOfPoint(Boxer1,25.0,768.48, -73.66, 1000.57) || IsPlayerInRangeOfPoint(Boxer2,25.0, 768.48, -73.66, 1000.57))
							{
								SetPlayerPos(Boxer1, 768.48, -73.66, 1000.57); SetPlayerPos(Boxer2, 768.48, -73.66, 1000.57);
								SetPlayerInterior(Boxer1, 7); SetPlayerInterior(Boxer2, 7);
								GetPlayerName(Boxer1, winner, sizeof(winner));
								GetPlayerName(Boxer2, loser, sizeof(loser));
								if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12) { PlayerInfo[Boxer2][pLoses] += 1; }
								if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer1][pWins] += 1; }
								if(TBoxer != INVALID_PLAYER_ID)
								{
									if(IsPlayerConnected(TBoxer))
									{
										if(TBoxer != Boxer1)
										{
											if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12)
											{
												TBoxer = Boxer1;
												GetPlayerName(TBoxer, titel, sizeof(titel));
												new nstring[MAX_PLAYER_NAME];
												format(nstring, sizeof(nstring), "%s", titel);
												strmid(Titel[TitelName], nstring, 0, strlen(nstring), 255);
												Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
												Titel[TitelLoses] = PlayerInfo[TBoxer][pLoses];
												Misc_Save();
												format(string, sizeof(string), "Tin tuc Boxing: %s has Won the fight against Champion %s and is now the new Boxing Champion.",  titel, loser);
												ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
											}
											else
											{
												SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You would have been the Champion if you had the Boxer Job!");
											}
										}
										else
										{
											GetPlayerName(TBoxer, titel, sizeof(titel));
											format(string, sizeof(string), "Tin tuc Boxing: Giai vo dich Boxing %s has Won the fight against %s.",  titel, loser);
											ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
											Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
											Titel[TitelLoses] = PlayerInfo[Boxer1][pLoses];
											Misc_Save();
										}
									}
								}//TBoxer
								format(string, sizeof(string), "* You have Lost the Fight against %s.", winner);
								SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, string);
								GameTextForPlayer(Boxer2, "~r~You lost", 3500, 1);
								format(string, sizeof(string), "* You have Won the Fight against %s.", loser);
								SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, string);
								GameTextForPlayer(Boxer1, "~g~You won", 3500, 1);
								if(GetPlayerHealth(Boxer1, health) < 20)
								{
									SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
									SetPlayerHealth(Boxer1, 30.0);
								}
								else
								{
									SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
									SetPlayerHealth(Boxer1, 50.0);
								}
								if(GetPlayerHealth(Boxer2, health) < 20)
								{
									SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
									SetPlayerHealth(Boxer2, 30.0);
								}
								else
								{
									SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
									SetPlayerHealth(Boxer2, 50.0);
								}
								GameTextForPlayer(Boxer1, "~g~Match Over", 5000, 1); GameTextForPlayer(Boxer2, "~g~Match Over", 5000, 1);
								if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer1][pBoxSkill] += 1; }
								PlayerBoxing[Boxer1] = 0;
								PlayerBoxing[Boxer2] = 0;
							}
							SetPlayerPos(Boxer1, 768.48, -73.66, 1000.57); SetPlayerPos(Boxer2, 768.48, -73.66, 1000.57);
							SetPlayerInterior(Boxer1, 7); SetPlayerInterior(Boxer2, 7);
							GetPlayerName(Boxer1, winner, sizeof(winner));
							GetPlayerName(Boxer2, loser, sizeof(loser));
							if(PlayerInfo[Boxer2][pJob] == 12 || PlayerInfo[Boxer2][pJob2] == 12) { PlayerInfo[Boxer2][pLoses] += 1; }
							if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer1][pWins] += 1; }
							if(TBoxer != INVALID_PLAYER_ID)
							{
								if(IsPlayerConnected(TBoxer))
								{
									if(TBoxer != Boxer1)
									{
										if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12)
										{
											TBoxer = Boxer1;
											GetPlayerName(TBoxer, titel, sizeof(titel));
											new nstring[MAX_PLAYER_NAME];
											format(nstring, sizeof(nstring), "%s", titel);
											strmid(Titel[TitelName], nstring, 0, strlen(nstring), 255);
											Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
											Titel[TitelLoses] = PlayerInfo[TBoxer][pLoses];
											Misc_Save();
											format(string, sizeof(string), "Tin tuc Boxing: %s has Won the fight against Champion %s and is now the new Boxing Champion.",  titel, loser);
											ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
										}
										else
										{
											SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You would have been the Champion if you had the Boxer Job!");
										}
									}
									else
									{
										GetPlayerName(TBoxer, titel, sizeof(titel));
										format(string, sizeof(string), "Tin tuc Boxing: Giai vo dich Boxing %s has Won the fight against %s.",  titel, loser);
										ProxDetector(30.0, Boxer1, string, COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
										Titel[TitelWins] = PlayerInfo[TBoxer][pWins];
										Titel[TitelLoses] = PlayerInfo[Boxer1][pLoses];
										Misc_Save();
									}
								}
							}//TBoxer
							format(string, sizeof(string), "* You have Lost the Fight against %s.", winner);
							SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, string);
							GameTextForPlayer(Boxer2, "~r~You lost", 3500, 1);
							format(string, sizeof(string), "* You have Won the Fight against %s.", loser);
							SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, string);
							GameTextForPlayer(Boxer1, "~g~You won", 3500, 1);
							if(GetPlayerHealth(Boxer1, health) < 20)
							{
								SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
								SetPlayerHealth(Boxer1, 30.0);
							}
							else
							{
								SendClientMessageEx(Boxer1, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
								SetPlayerHealth(Boxer1, 50.0);
							}
							if(GetPlayerHealth(Boxer2, health) < 20)
							{
								SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel exhausted from the Fight, go eat somewhere.");
								SetPlayerHealth(Boxer2, 30.0);
							}
							else
							{
								SendClientMessageEx(Boxer2, COLOR_LIGHTBLUE, "* You feel perfect, even after the Fight.");
								SetPlayerHealth(Boxer2, 50.0);
							}
							GameTextForPlayer(Boxer1, "~g~Match Over", 5000, 1); GameTextForPlayer(Boxer2, "~g~Match Over", 5000, 1);
							if(PlayerInfo[Boxer1][pJob] == 12 || PlayerInfo[Boxer1][pJob2] == 12) { PlayerInfo[Boxer1][pBoxSkill] += 1; }
							PlayerBoxing[Boxer1] = 0;
							PlayerBoxing[Boxer2] = 0;
						}
					}
					InRing = 0;
					RoundStarted = 0;
					Boxer1 = INVALID_PLAYER_ID;
					Boxer2 = INVALID_PLAYER_ID;
					TBoxer = INVALID_PLAYER_ID;
					trigger = 0;
				}
			}
		}
		if(FindTime[i] >= 1)
		{
			if(FindTime[i] == FindTimePoints[i]) {
				FindTime[i] = 0;
				FindTimePoints[i] = 0;
				SetPlayerToTeamColor(FindingPlayer[i]);
				FindingPlayer[i] = -1;
				PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
				GameTextForPlayer(i, "~r~RedMarker gone", 2500, 1);
			}
			else
			{
				format(string, sizeof(string), "%d", FindTimePoints[i] - FindTime[i]);
				GameTextForPlayer(i, string, 1500, 6);
				FindTime[i] += 1;
			}
		}
		if(CalledCops[i] >= 1)
		{
			if(CopsCallTime[i] < 1) { CopsCallTime[i] = 0; HidePlayerBeaconForCops(i); CalledCops[i] = 0; }
			else
			{
				CopsCallTime[i]--;
			}
		}
		if(CalledMedics[i] >= 1)
		{
			if(MedicsCallTime[i] < 1) { MedicsCallTime[i] = 0; HidePlayerBeaconForMedics(i); CalledMedics[i] = 0; }
			else
			{
				MedicsCallTime[i]--;
			}
		}
		if(NewbieTimer[i] > 0)
		{
			NewbieTimer[i]--;
		}
		if(OutTimer[i] > 0)
		{
			OutTimer[i]--;
		}
		if(HlKickTimer[i] > 0)
		{
			HlKickTimer[i]--;
		}
		if(HelperTimer[i] > 0)
		{
			HelperTimer[i]--;
		}
		if(JustReported[i] > 0)
		{
			JustReported[i]--;
		}
		if(TaxiCallTime[i] > 0)
		{
			if(TaxiAccepted[i] != INVALID_PLAYER_ID)
			{
				if(IsPlayerConnected(TaxiAccepted[i]))
				{
					new Float:X,Float:Y,Float:Z;
					GetPlayerPos(TaxiAccepted[i], X, Y, Z);
					SetPlayerCheckpoint(i, X, Y, Z, 5);
				}
			}
		}
		if(EMSCallTime[i] > 0)
		{
			if(EMSAccepted[i] != INVALID_PLAYER_ID)
			{
				if(IsPlayerConnected(EMSAccepted[i]))
				{
					new Float:X,Float:Y,Float:Z;
					GetPlayerPos(EMSAccepted[i], X, Y, Z);
					new zone[MAX_ZONE_NAME];
					Get3DZone(X, Y, Z, zone, sizeof(zone));
					format(string, sizeof(string), "Your patient is located in %s.", zone);
					SetPlayerCheckpoint(i, X, Y, Z, 5);
				}
			}
		}

		if(BusCallTime[i] > 0)
		{
			if(BusAccepted[i] != INVALID_PLAYER_ID)
			{
				if(IsPlayerConnected(BusAccepted[i]))
				{
					new Float:X,Float:Y,Float:Z;
					GetPlayerPos(BusAccepted[i], X, Y, Z);
					SetPlayerCheckpoint(i, X, Y, Z, 5);
				}
			}
		}
		if(MedicCallTime[i] > 0)
		{
			if(MedicCallTime[i] == 45) { MedicCallTime[i] = 0; DisablePlayerCheckpoint(i); PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); GameTextForPlayer(i, "~r~RedMarker gone", 2500, 1); }
			else
			{
				format(string, sizeof(string), "%d", 45 - MedicCallTime[i]);
				new Float:X,Float:Y,Float:Z;
				GetPlayerPos(MedicAccepted[i], X, Y, Z);
				SetPlayerCheckpoint(i, X, Y, Z, 5);
				GameTextForPlayer(i, string, 1500, 6);
				MedicCallTime[i] += 1;
			}
		}
		if(MechanicCallTime[i] > 0)
		{
			if(MechanicCallTime[i] == 30) { MechanicCallTime[i] = 0; DisablePlayerCheckpoint(i); PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); GameTextForPlayer(i, "~r~RedMarker gone", 2500, 1); }
			else
			{
				format(string, sizeof(string), "%d", 30 - MechanicCallTime[i]);
				GameTextForPlayer(i, string, 1500, 6);
				MechanicCallTime[i] += 1;
			}
		}
		if(TowCallTime[i] > 0)
		{
			if(TowCallTime[i] == 30) { TowCallTime[i] = 0; DisablePlayerCheckpoint(i); PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); GameTextForPlayer(i, "~r~RedMarker gone", 2500, 1); }
			else
			{
				format(string, sizeof(string), "%d", 30 - TowCallTime[i]);
				GameTextForPlayer(i, string, 1500, 6);
				TowCallTime[i] += 1;
			}
		}
		if(PlayerCuffed[i] == 1)
		{
			if(PlayerCuffedTime[i] <= 0)
			{
				//Frozen[i] = 0;
    			DeletePVar(i, "IsFrozen");
				TogglePlayerControllable(i, 1);
				PlayerCuffed[i] = 0;
				DeletePVar(i, "PlayerCuffed");
				PlayerCuffedTime[i] = 0;
				ClearAnimations(i);
				new Float:X, Float:Y, Float:Z;
				GetPlayerPos(i, X, Y, Z);
				SetPlayerPos(i, X, Y, Z);
			}
			else
			{
				PlayerCuffedTime[i] -= 1;
			}
		}
		if(PlayerCuffed[i] == 2)
		{
			if(PlayerCuffedTime[i] <= 0)
			{
				new Float:X, Float:Y, Float:Z;
				GetPlayerPos(i, X, Y, Z);
				new copinrange;
				foreach(Player, j)
				{
					if(IsPlayerInRangeOfPoint(j, 30, X, Y, Z) && IsACop(j))
					{
						copinrange = 1;
					}
				}

				if(copinrange == 0)
				{
					//Frozen[i] = 0;
					DeletePVar(i, "IsFrozen");
					GameTextForPlayer(i, "~r~Ban da pha vo cong tay!Ban duoc tu do", 2500, 3);
					TogglePlayerControllable(i, 1);
					PlayerCuffed[i] = 0;
					DeletePVar(i, "PlayerCuffed");
					PlayerCuffedTime[i] = 0;
				}
				else
				{
					PlayerCuffedTime[i] = 60;
				}
			}
			else
			{
				PlayerCuffedTime[i] -= 1;
			}
		}
	}
}



Re: crashdetect plugin v4.10 - JernejL - 19.08.2013

xeeZ: this plugin has become of very good use since it's existence and has helped me solve many issues and stabilise my script greatly, but i am still wishing if you can somehow manage to add stack trace generator native so we could generate stack traces not only when a amx exception happens.

I have a complex script with complex internal states and some of my super rare script issues are such a pain in the ass to debug without a call stack, if you could add something like amx_generate_callstack(string[], strlen) that would help solve a lot of remaining problems.


Re: crashdetect plugin v4.10 - Slice - 19.08.2013

Quote:
Originally Posted by JernejL
Посмотреть сообщение
xeeZ: this plugin has become of very good use since it's existence and has helped me solve many issues and stabilise my script greatly, but i am still wishing if you can somehow manage to add stack trace generator native so we could generate stack traces not only when a amx exception happens.

I have a complex script with complex internal states and some of my super rare script issues are such a pain in the ass to debug without a call stack, if you could add something like amx_generate_callstack(string[], strlen) that would help solve a lot of remaining problems.
You could use stack_trace.inc for that. Furthermore, you could get the function names in the stacktrace using something like this.


Re: crashdetect plugin v4.10 - JernejL - 19.08.2013

That's useful, but still not as good as what crashdetect does, crashdetect includes parameters, line numbers and everything else.


Re: CrashDetect 4.13 - ikey07 - 13.01.2014

Also shouldn't it be forward OnRuntimeError(code, &bool: suppress); ?

you have public OnRuntimeError(code, &bool: suppress); in the include


Re: CrashDetect 4.13 - CKA3KuH - 15.01.2014

Quote:

[15/01/2014 22:00:51] Loading plugin: crashdetect.so
[15/01/2014 22:00:51] CrashDetect v4.10 is OK.
[15/01/2014 22:00:51] Loaded.

v4.10 change this!


AW: CrashDetect 4.13 - Mellnik - 17.01.2014

Код:
Failed (/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by plugins/crashdetect.so))
How to properly fix this on CentOS?

Edit:
Fixed by compiling it myself:
1. cmake . (or cmake28 .)
2. make
3. done. .so will be in /plugin folder


Re: CrashDetect 4.13 - PowerPC603 - 17.01.2014

I installed this and I always get an Windows error when I shutdown my server.

I downloaded the package and put "crashdetect.dll" and "crashdetect.pdb" inside my plugins folder.
I also put the "crashdetect.inc" inside my "pawno/include" folder.

I also added the -d3 compiler option to "pawn.cfg" file, which I created in pawno folder.

I recompiled my support filterscript and started the server.
The server runs fine, but when I close the server console using CTRL+C, I get an error from windows:

"There is no disc in the drive. Place a valid medium in station "\Device\Harddisk1\DR1".

I never got this error before. It showed up after adding the plugin to my server.cfg file.


Re: CrashDetect 4.13 - xeeZ - 18.01.2014

Quote:
Originally Posted by PowerPC603
Посмотреть сообщение
...
Which version of Windows are you using?


Re: CrashDetect 4.13 - PowerPC603 - 20.01.2014

Windows 7 Home Premium 64-bit.