Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Розыск преступников

F[a]ust

Умник
Идея немного взята с тринити.
Когда игроку кидают звезды или уже есть звезды, то полиция может объявить его в розыск командой /ch id, после этого ему на экране высветится сообщение, что его пытается задержать полиция и после закрытия диалога пойдет отсчет 15 секунд в течении которых он может сам сдаться и его отвезут в кпз или же он проигнорирует и будет скрываться. После 15 секунд начнет отсчет 2 минут в течении которых игрок не может выйти из игры и если выйдет, то сразу сядет и если он смог скрываться 2 минуты, то начнется отсчет 20 секунд, в течении которых он может выйти из игры и уже появится на спавне/отеле и тд. Но он все равно остается в розыске и если он попадет в радиус видимости полиции, то у него опять пойдет отсчет 2 минут и напишет, что он попал в поле зрения полиции и полицейскому напишет, что обнаружен преступник. Так же у полиции есть команда /find которая работает на игроков, которые в розыске и показывает стрелкой их местонахождение. Если игрока убивают во время погони, то он садится.

Я использовал для тестов GF мод.

Ко всем new добавляем

PHP:
new FindObject[MAX_PLAYERS char];
new PlayerText:TextdrawTimer[MAX_PLAYERS char];
new Text:TextdrawFlasher[6];
new Text:TextdrawSearch[3];
new bool:flasher;
new bool:search[MAX_PLAYERS char];
К enum pInfo добавляем

PHP:
pSearch
В Public OnPlayerSpawn

PHP:
TextdrawTimer[playerid] = CreatePlayerTextDraw(playerid, 284.666656, 50.933288, "00:00");
	PlayerTextDrawLetterSize(playerid, TextdrawTimer[playerid], 0.356999, 1.637333);
	PlayerTextDrawAlignment(playerid, TextdrawTimer[playerid], 1);
	PlayerTextDrawColor(playerid, TextdrawTimer[playerid], -1);
	PlayerTextDrawSetShadow(playerid, TextdrawTimer[playerid], 0);
	PlayerTextDrawSetOutline(playerid, TextdrawTimer[playerid], 1);
	PlayerTextDrawBackgroundColor(playerid, TextdrawTimer[playerid], 51);
	PlayerTextDrawFont(playerid, TextdrawTimer[playerid], 2);
	PlayerTextDrawSetProportional(playerid, TextdrawTimer[playerid], 1);
В OnGameModeInit

PHP:
TextdrawFlasher[0] = TextDrawCreate(383.666687, 6.344436, "usebox");
	TextDrawLetterSize(TextdrawFlasher[0], 0.000000, 1.931069);
	TextDrawTextSize(TextdrawFlasher[0], 229.000000, 0.000000);
	TextDrawAlignment(TextdrawFlasher[0], 1);
	TextDrawColor(TextdrawFlasher[0], 0);
	TextDrawUseBox(TextdrawFlasher[0], true);
	TextDrawBoxColor(TextdrawFlasher[0], 102);
	TextDrawSetShadow(TextdrawFlasher[0], 0);
	TextDrawSetOutline(TextdrawFlasher[0], 0);
	TextDrawFont(TextdrawFlasher[0], 0);

	TextdrawFlasher[1] = TextDrawCreate(311.000000, 26.5, "usebox");
	TextDrawLetterSize(TextdrawFlasher[1], 0.000000, -2.575103);
	TextDrawTextSize(TextdrawFlasher[1], 303.333312, 0.000000);
	TextDrawAlignment(TextdrawFlasher[1], 1);
	TextDrawColor(TextdrawFlasher[1], 0);
	TextDrawUseBox(TextdrawFlasher[1], true);
	TextDrawBoxColor(TextdrawFlasher[1], 102);
	TextDrawSetShadow(TextdrawFlasher[1], 0);
	TextDrawSetOutline(TextdrawFlasher[1], 0);
	TextDrawFont(TextdrawFlasher[1], 0);


	TextdrawFlasher[2] = TextDrawCreate(311.000000, 8.833343, "usebox");
	TextDrawLetterSize(TextdrawFlasher[2], 0.000000, 1.342591);
	TextDrawTextSize(TextdrawFlasher[2], 378.666656, 0.000000);
	TextDrawAlignment(TextdrawFlasher[2], 1);
	TextDrawColor(TextdrawFlasher[2], 0);
	TextDrawUseBox(TextdrawFlasher[2], true);
	TextDrawBoxColor(TextdrawFlasher[2], 65535);
	TextDrawSetShadow(TextdrawFlasher[2], 0);
	TextDrawSetOutline(TextdrawFlasher[2], 0);
	TextDrawFont(TextdrawFlasher[2], 0);

	TextdrawFlasher[3] = TextDrawCreate(306.000091, 8.585189, "usebox");
	TextDrawLetterSize(TextdrawFlasher[3], 0.000000, 1.355347);
	TextDrawTextSize(TextdrawFlasher[3], 231.000030, 0.000000);
	TextDrawAlignment(TextdrawFlasher[3], 1);
	TextDrawColor(TextdrawFlasher[3], 0);
	TextDrawUseBox(TextdrawFlasher[3], true);
	TextDrawBoxColor(TextdrawFlasher[3], -16776961);
	TextDrawSetShadow(TextdrawFlasher[3], 0);
	TextDrawSetOutline(TextdrawFlasher[3], 0);
	TextDrawFont(TextdrawFlasher[3], 0);

	TextdrawFlasher[4] = TextDrawCreate(273.333282, 25.585174, "surrender!");
	TextDrawLetterSize(TextdrawFlasher[4], 0.270000, 1.546074);
	TextDrawAlignment(TextdrawFlasher[4], 1);
	TextDrawColor(TextdrawFlasher[4], -1);
	TextDrawSetShadow(TextdrawFlasher[4], 0);
	TextDrawSetOutline(TextdrawFlasher[4], 1);
	TextDrawFont(TextdrawFlasher[4], 2);
	TextDrawBackgroundColor(TextdrawFlasher[4], 51);
	TextDrawSetProportional(TextdrawFlasher[4], 1);

TextdrawSearch[0] = TextDrawCreate(325.333251, 1.085165, "usebox");
	TextDrawLetterSize(TextdrawSearch[0], 0.000000, 49.881671);
	TextDrawTextSize(TextdrawSearch[0], 313.666748, 0.000000);
	TextDrawAlignment(TextdrawSearch[0], 1);
	TextDrawColor(TextdrawSearch[0], 0);
	TextDrawUseBox(TextdrawSearch[0], true);
	TextDrawBoxColor(TextdrawSearch[0], 102);
	TextDrawSetShadow(TextdrawSearch[0], 0);
	TextDrawSetOutline(TextdrawSearch[0], 0);
	TextDrawFont(TextdrawSearch[0], 0);

	TextdrawSearch[1] = TextDrawCreate(641.333374, 1.500000, "usebox");
	TextDrawLetterSize(TextdrawSearch[1], 0.000000, 49.415019);
	TextDrawTextSize(TextdrawSearch[1], 322.666687, 0.000000);
	TextDrawAlignment(TextdrawSearch[1], 1);
	TextDrawColor(TextdrawSearch[1], 0);
	TextDrawUseBox(TextdrawSearch[1], true);
	TextDrawBoxColor(TextdrawSearch[1], -16777150);//16776961
	TextDrawSetShadow(TextdrawSearch[1], 0);
	TextDrawSetOutline(TextdrawSearch[1], 0);
	TextDrawFont(TextdrawSearch[1], 0);

	TextdrawSearch[2] = TextDrawCreate(0.666666, 1.500000, "usebox");
	TextDrawLetterSize(TextdrawSearch[2], 0.000000, 49.415019);
	TextDrawTextSize(TextdrawSearch[2], 313.666656, 0.000000);
	TextDrawAlignment(TextdrawSearch[2], 1);
	TextDrawColor(TextdrawSearch[2], 0);
	TextDrawUseBox(TextdrawSearch[2], true);
	TextDrawBoxColor(TextdrawSearch[2], 65342);//16776961
	TextDrawSetShadow(TextdrawSearch[2], 0);
	TextDrawSetOutline(TextdrawSearch[2], 0);
	TextDrawFont(TextdrawSearch[2], 0);

В секундный таймер добавляем ( в моем случае был OtherTimer)

PHP:
for(new i = 0; i < MAX_PLAYERS; i++)
	{
		if(IsPlayerConnected(i))
		{
			if(search[i])
			{
				flasher = (flasher) ? false : true;
				TextDrawHideForPlayer(i,TextdrawFlasher[3]);
				TextDrawHideForPlayer(i,TextdrawFlasher[2]);
				TextDrawBoxColor(TextdrawFlasher[3], (flasher) ? -16776961 : -16777118);
				TextDrawBoxColor(TextdrawFlasher[2], (flasher) ? 65335 : 65535);
				TextDrawShowForPlayer(i,TextdrawFlasher[3]);
				TextDrawShowForPlayer(i,TextdrawFlasher[2]);
				
				if(GetPVarInt(i,"SurrTime") > 0 && GetPVarInt(i,"SearchTime") == 0){
					updateTimer(i,GetPVarInt(i,"SurrTime"));
					SetPVarInt(i,"SurrTime", GetPVarInt(i,"SurrTime")-1);
					if(GetPVarInt(i,"SurrTime") == 0){
						SetPVarInt(i,"SearchTime", 120);
						DeletePVar(i, "SurrTime");
						if(GetPlayerSpecialAction(i) == SPECIAL_ACTION_CUFFED) SetPlayerSpecialAction(i, SPECIAL_ACTION_NONE);
					}
					return true;
				}
				if(GetPVarInt(i,"SearchTime") > 0 && GetPVarInt(i,"ExitTime") == 0){
					updateTimer(i,GetPVarInt(i,"SearchTime"));
					SetPVarInt(i,"SearchTime", GetPVarInt(i,"SearchTime")-1);
					if(GetPVarInt(i,"SearchTime") == 0){
						DeletePVar(i, "SearchTime");
						SetPVarInt(i,"ExitTime", 20);
					}
					return true;
				}
				if(GetPVarInt(i,"ExitTime") > 0 && GetPVarInt(i,"SearchTime") == 0){
					updateTimer(i,GetPVarInt(i,"ExitTime"));
					SetPVarInt(i,"ExitTime", GetPVarInt(i,"ExitTime")-1);
					if(GetPVarInt(i,"ExitTime") == 0){
						DeletePVar(i, "ExitTime");
						SetPVarInt(i,"SearchTime", 120);
					}
					return true;
				}
			}
		}	
	}

В OnPlayerEnterCheckpoint (чекпонит создается игроку, когда его сажают в машину командой /cput(

pJailed - в моем случае она устанавливала сидит игрок или нет. Нужно менять под ваш мод.
pJailTime - в моем случае отвечала за время на которое сажало игрока. Нужно менять под ваш мод.
WantedPoints- у меня отвечал за уровень розыска(звезды), нужно заменить на переменную, которая отвечает за это в вашем моде.

PHP:
if(IsPlayerInRangeOfPoint(playerid,5.0,1545.2976,-1675.7847,13.5601))
	{
		PlayerInfo[playerid][pJailed] = 1;
		PlayerInfo[playerid][pJailTime] = WantedPoints[playerid]*60; 
		WantedPoints[playerid] = 0;
		PlayerInfo[playerid][pSearch] = 0;
		search[playerid] = false;
		SetPlayerInterior(playerid, 6);                                        //менять на свое
		SetPlayerPos(playerid, 264.6288,77.5742,1001.0391);     //менять на свое
		SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
		RemovePlayerAttachedObject(playerid,0);
		DisablePlayerCheckpoint(playerid);
		return true;
	}
Если нету добавьте OnPlayerStreamIn. В него

PlayerInfo[forplayerid][pLeader] == 1 - ставим свою проверку на копов.

PHP:
public OnPlayerStreamIn(playerid, forplayerid)
{
	new string[65],playername[MAX_PLAYER_NAME];
	if(!search[playerid] && PlayerInfo[playerid][pSearch] == 1 && PlayerInfo[forplayerid][pLeader] == 1) 
	{
		GetPlayerName(playerid, playername, sizeof(playername));
		format(string, sizeof(string), "• Информация: Неподалёку от вас замечен преступник %s [%d].",playername,playerid);
		SendClientMessage(forplayerid,COLOR_LIGHTRED,strin  g);
		SendClientMessage(playerid,COLOR_LIGHTRED,"Вы попали в поле зрения полиции.");
		SetPVarInt(playerid, "SearchTime",120);
		SetPVarInt(playerid, "ExitTime",0);
		TextDrawShowForPlayer(playerid,TextdrawFlasher[0]);
		TextDrawShowForPlayer(playerid,TextdrawFlasher[1]);
		TextDrawShowForPlayer(playerid,TextdrawFlasher[4]);
		PlayerTextDrawShow(playerid, TextdrawTimer[playerid]);
		search[playerid] = true;
		return true;
	}
	return true;
}
В OnPlayerKeyStateChange

PHP:
if(newkeys == 1024 && GetPVarInt(playerid, "SurrTime") > 0 && GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_NONE)
	{
		new string[50],playername[MAX_PLAYER_NAME];
		SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CUFFED);
		GetPlayerName(playerid, playername, sizeof(playername));
		format(string, sizeof(string), "%s [%d] кричит: Я СДАЮСЬ!",playername,playerid);
		ProxDetector(34.0, playerid, string,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE,COLOR_LIGHT  BLUE,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE);
	}
В OnDialogResponse

PHP:
if(dialogid == 111){
		search[playerid] = true;
		for(new i; i != 3; i++) TextDrawHideForPlayer(playerid,TextdrawSearch[i]);
		TextDrawShowForPlayer(playerid,TextdrawFlasher[0]);
		TextDrawShowForPlayer(playerid,TextdrawFlasher[1]);
		TextDrawShowForPlayer(playerid,TextdrawFlasher[4]);
		PlayerTextDrawShow(playerid, TextdrawTimer[playerid]);
		SetPVarInt(playerid, "SurrTime",15);
		SetPVarInt(playerid, "SearchTime",0);
		SetPVarInt(playerid, "ExitTime",0);
	}
В OnPlayerUpdate

PHP:
 if(GetPVarInt(playerid,"SearchID") >= 0)
			{
				if(!IsPlayerConnected(GetPVarInt(playerid,"SearchID")))
				{
					SendClientMessage(playerid,-1,"Игрок вышел из игры");
					DestroyObject(FindObject[playerid]);
					SetPVarInt(playerid,"SearchID", -1);
					return 1;
				}
				new Float:VPos[6], Float:Rotation;
				GetPlayerPos(playerid,VPos[0],VPos[1],VPos[2]);
				GetPlayerPos(GetPVarInt(playerid,"SearchID"),VPos[3],VPos[4],VPos[5]);
				Rotation = PointAngle(playerid, VPos[0],VPos[1], VPos[3],VPos[4]);
				AttachObjectToVehicle(FindObject[playerid], GetPlayerVehicleID(playerid), 0.0, 0.0, 1.5, 0.0, 90.0, Rotation);
			}
В OnPlayerCommandText

IsACop - ставим свою проверку на копов и меняем WantedPoints

PHP:
if(strcmp(cmd, "/ch", true) == 0)
	{
		if(IsPlayerConnected(playerid))
		{
			if(IsACop(playerid))
			{
				tmp = strtok(cmdtext, idx);
				if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ch [Playerid/PartOfName]");
				giveplayerid = ReturnUser(tmp);
				if(WantedPoints[giveplayerid] == 0) return SendClientMessage(playerid, COLOR_WHITE, "У игрока нету звезд");
				if (!ProxDetectorS(2.0, playerid, giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "Игрок далеко от вас");
				if( giveplayerid == playerid) return 1;
				if(search[giveplayerid] == true) return SendClientMessage(playerid, COLOR_WHITE, "Игрок уже в розыске");
				ShowPlayerDialog(giveplayerid, 111, DIALOG_STYLE_MSGBOX, "{DC143C}", "{9ACD32}\nВас пытается задержать полиция!{FFFFFF}\
\n\nВы совершили преступления и сейчас вас пытаются задержать.\
\n\nВ случае, если вы сдадитесь, вы будите доставлены в ближайший участок.\
\n\nВы можете попытаться уйти от погони и проигнорировать преследование.\
\n\nУ вас есть {DC143C}15{FFFFFF} секунд на то, чтобы подчиниться.\
\n\nНажмите {00FFFF}кнопку ходьбы (Alt по умолчанию){FFFFFF}, если хотите сдаться.","X","");
				for(new i; i != 3; i++)TextDrawShowForPlayer(giveplayerid,TextdrawSea  rch[i]);
				PlayerInfo[giveplayerid][pSearch] = 1;
			}
		}     	
	}	
	
        if(strcmp(cmd, "/find", true) == 0)
	{
		if(IsPlayerConnected(playerid))
		{
			if(IsACop(playerid))
			{
				tmp = strtok(cmdtext, idx);
				if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /find [Playerid/PartOfName]");
				giveplayerid = ReturnUser(tmp);
				if(!search[giveplayerid]) return SendClientMessage(playerid, COLOR_WHITE, "Игрок не в розыске");
				FindObject[playerid] = CreateObject(1559, 0, 0, 0, 0.0, 0.0, 0);
				SetPVarInt(playerid, "SearchID",giveplayerid);
			}
		}     
	}

	if(strcmp(cmd, "/findoff", true) == 0)
	{
		SetPVarInt(playerid, "SearchID",-1);
		DestroyObject(FindObject[playerid]);
	}

        if(strcmp(cmd, "/cput", true) == 0)//
	{
		if(IsACop(playerid))
		{
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_RED, "Используйте: /cput [id] [Место (1-3)]");
			if(!ProxDetectorS(8.0, playerid, giveplayerid))return SendClientMessage(playerid, COLOR_GRAD1, "Игрок не рядом с вами!");
			giveplayerid = ReturnUser(tmp);
			tmp = strtok(cmdtext, idx);
			new seatid = strval(tmp);
			{
				PutPlayerInVehicle(giveplayerid, GetPlayerVehicleID(playerid), seatid);
				if(PlayerInfo[playerid][pSearch] == 1) SetPlayerCheckpoint(giveplayerid, 1545.2976,-1675.7847,13.5601, 5.0);
				return 1;
			}
		}
		return 1;
	}

В команду /cuff (надеть наручники) надо добавить

PHP:
if(search[giveplayerid]){
search[giveplayerid] = false;
for(new i; i < sizeof(TextdrawFlasher); i++) TextDrawHideForPlayer(giveplayerid,TextdrawFlasher[i]);
PlayerTextDrawHide(giveplayerid, TextdrawTimer[giveplayerid]);
}
Сама команда из gf

PHP:
if(strcmp(cmd, "/cuff", true) == 0)
	{
		if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pMember] == 10 || PlayerInfo[playerid][pMember] == 21 || IsACop(playerid))
		{
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "::: Ведите: /cuff [id]");
			giveplayerid = ReturnUser(tmp);
			if(IsPlayerConnected(giveplayerid))
			{
				if(giveplayerid != INVALID_PLAYER_ID)
				{
					if(IsACop(giveplayerid)) return    SendClientMessage(playerid, COLOR_GREY, "Вы не можете надеть наручники на законника !");
					if(PlayerCuffed[giveplayerid] > 0) return    SendClientMessage(playerid, COLOR_GREY, "игрок уже в наручниках!");
					if (ProxDetectorS(8.0, playerid, giveplayerid))
					{
						if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Вы не можете надеть наручники на самого себя!"); return 1; }
						if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pMember] == 10 || PlayerInfo[playerid][pMember] == 21 || IsACop(playerid))
						{
							GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
							GetPlayerName(playerid, sendername, sizeof(sendername));
							format(string, sizeof(string), "На вас надел(а) наручники %s.", sendername);
							SendClientMessage(giveplayerid, 0x6495EDFF, string);
							format(string, sizeof(string), "Вы надели наручники на %s.", giveplayer);
							SendClientMessage(playerid, 0x6495EDFF, string);
							format(string, sizeof(string), "%s надел(а) на %s наручники.", sendername ,giveplayer);
							SetPlayerAttachedObject(giveplayerid, 0, 19418, 6, -0.011000, 0.028000, -0.022000, -15.600012, -33.699977, -81.700035, 0.891999, 1.000000, 1.168000);
							SetPlayerSpecialAction(giveplayerid,SPECIAL_ACTION  _CUFFED);
							ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPL  E,COLOR_PURPLE);
							PlayerCuffed[giveplayerid] = 2;
							PlayerCuffedTime[giveplayerid] = 3600;

							if(search[giveplayerid]){
								search[giveplayerid] = false;
								for(new i; i < sizeof(TextdrawFlasher); i++) TextDrawHideForPlayer(giveplayerid,TextdrawFlasher[i]);
								PlayerTextDrawHide(giveplayerid, TextdrawTimer[giveplayerid]);
							}

						}
						else
						{
							SendClientMessage(playerid, COLOR_GREY, "Вы не законник!!!");
							return 1;
						}
					}
					else
					{
						SendClientMessage(playerid, COLOR_GREY, "Рядом с вами никого нет !");
						return 1;
					}
				}
			}
			else
			{
				SendClientMessage(playerid, COLOR_GREY, "Игрок оффлайн!");
				return 1;
			}
		}
		else
		{
			SendClientMessage(playerid, COLOR_GREY, "Вы не сотрудник правохранительных органов !");
		}
		return 1;
	}
В конец мода

PHP:
stock Float:PointAngle(playerid, Float:xa, Float:ya, Float:xb, Float:yb)
{
	new Float:carangle;
	new Float:xc, Float:yc;
	new Float:angle;
	xc = floatabs(floatsub(xa,xb));
	yc = floatabs(floatsub(ya,yb));
	if (yc == 0.0 || xc == 0.0)
	{
		if(yc == 0 && xc > 0) angle = 0.0;
		else if(yc == 0 && xc < 0) angle = 180.0;
		else if(yc > 0 && xc == 0) angle = 90.0;
		else if(yc < 0 && xc == 0) angle = 270.0;
		else if(yc == 0 && xc == 0) angle = 0.0;
	}
	else
	{
		angle = atan(xc/yc);
		if(xb > xa && yb <= ya) angle += 90.0;
		else if(xb <= xa && yb < ya) angle = floatsub(90.0, angle);
		else if(xb < xa && yb >= ya) angle -= 90.0;
		else if(xb >= xa && yb > ya) angle = floatsub(270.0, angle);
	}
	GetVehicleZAngle(GetPlayerVehicleID(playerid), carangle);
	return floatadd(angle, -carangle);
}

stock updateTimer(playerid,time){
	new str[30];
	format(str, sizeof(str), "%02d:%02d", time/60%60, time%60);
	PlayerTextDrawSetString(playerid, TextdrawTimer[playerid],str);
	return true;
}

В OnPlayerDeath

PHP:
if(search[playerid]){
		if(IsACop(killerid)){
			PlayerInfo[playerid][pSearch] = 0;
			PlayerInfo[playerid][pJailed] = 1;
			PlayerInfo[playerid][pJailTime] = WantedPoints[playerid]*60;
			if(GetPVarInt(killerid,"SearchID") >= 0){
				DestroyObject(FindObject[killerid]);
				SetPVarInt(killerid,"SearchID", -1);
			}
		}
		else PlayerInfo[playerid][pSearch] = 1;
		search[playerid] = false;
		for(new i; i < sizeof(TextdrawFlasher); i++) TextDrawHideForPlayer(playerid,TextdrawFlasher[i]);
		PlayerTextDrawHide(playerid, TextdrawTimer[playerid]);
		DeletePVar(playerid, "SurrTime");
		DeletePVar(playerid, "SearchTime");
		DeletePVar(playerid, "ExitTime");
	}
В OnPlayerDisconnect

PHP:
if(IsPlayerAttachedObjectSlotUsed(playerid,0) || search[playerid] && GetPVarInt(playerid, "ExitTime") == 0){
		PlayerInfo[playerid][pJailed] = 1;
		PlayerInfo[playerid][pJailTime] = WantedPoints[playerid]*60;
		PlayerInfo[playerid][pSearch] = 0;
	}
	else if(GetPVarInt(playerid, "ExitTime") > 0) PlayerInfo[playerid][pSearch] = 1;
Если у кого то нету, то в конец мода

PHP:
forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);
public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
	if(IsPlayerConnected(playerid))
	{
		new Float:posx, Float:posy, Float:posz;
		new Float:oldposx, Float:oldposy, Float:oldposz;
		new Float:tempposx, Float:tempposy, Float:tempposz;
		GetPlayerPos(playerid, oldposx, oldposy, oldposz);
		//radi = 2.0; //Trigger Radius
		for(new i = 0; i < MAX_PLAYERS; i++)
		{
			if(IsPlayerConnected(i))
			{
				if(!BigEar[i])
				{
					GetPlayerPos(i, posx, posy, posz);
					tempposx = (oldposx -posx);
					tempposy = (oldposy -posy);
					tempposz = (oldposz -posz);
					//printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
					if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
					{
						SendClientMessage(i, col1, string);
					}
					else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
					{
						SendClientMessage(i, col2, string);
					}
					else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
					{
						SendClientMessage(i, col3, string);
					}
					else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
					{
						SendClientMessage(i, col4, string);
					}
					else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
					{
						SendClientMessage(i, col5, string);
					}
				}
				else
				{
					SendClientMessage(i, col1, string);
				}
			}
		}
	}//not connected
	return 1;
}
Так же нужно сделать сохранение на pSearch. В моем случае сделано так.

В OnPlayerLogin

PHP:
if( strcmp( key , "Search" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pSearch] = strval( val ); }
В OnPlayerUpdate

PHP:
format(var, 32, "Search=%d\n",PlayerInfo[playerid][pSearch]);fwrite(hFile, var);
В OnPlayerRegister

PHP:
format(var, 32, "Search=%d\n",PlayerInfo[playerid][pSearch]);fwrite(hFile, var);
Со стороны полицейского видео 1. И преступника
Со стороны полицейского видео 3. И преступника Когда игрок вышел из игры и попал опять в радиус полиции.


В машине стрелочка смотри более менее лучше, чем на мотоцикле



---------- Сообщение добавлено в 15:04 ---------- Предыдущее сообщение добавлено в 15:03 ----------

 
Сверху Снизу