[Plugin] CrashDetect

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..
Reply

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
Reply

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.
Reply

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

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

Код:
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:
}
Reply

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.
Reply

[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
Reply

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.

Reply

Код:
[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;
			}
		}
	}
}
Reply

Код:
[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;
			}
		}
	}
}
Reply

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.
Reply

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.
Reply

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

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

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

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!
Reply

Код:
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
Reply

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.
Reply

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

Windows 7 Home Premium 64-bit.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)