Доступ к архиву

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

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

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

Патруль (для Samp-rp)

Статус
В этой теме нельзя размещать новые ответы.

Barni

Компетентный
Всем привет, вот от не чего делать набросал мини систему патруль, с радостью написал бы что нибудь другое, но увы, своих идей нету:(
Система ещё сырая.. Так что о всех багах прошу сразу же сообщать мне в этой теме.
Ко всем new
PHP:
new PlayerInCar[MAX_VEHICLES];
new Pursiut[MAX_PLAYERS];
new TimerWant[MAX_PLAYERS];
new CheckWant[MAX_PLAYERS][2];
Команда:
PHP:
else if(strcmp(cmd, "/patrul", true) == 0)
	{
	    if(Pursiut[playerid] != -1)
		{
		    DisablePlayerCheckpoint(playerid);
    		Pursiut[playerid] = -1;
     		CheckWant[playerid][1] = 0;
      		SendClientMessage(playerid,-1,"Вы закончили преследование");
			KillTimer(TimerWant[playerid]);
			return 1;
		}
		if(IsaPDCar(GetPlayerVehicleID(playerid))&& PlayerInCar[GetPlayerVehicleID(playerid)] == 2)
		{
		    new Float:pos[3];
		    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
		    for(new i; i < MAX_PLAYERS; i++)
		    {
		    	if(IsPlayerInRangeOfPoint(i, 100.0, pos[0],pos[1],pos[2]))
		    	{
		    	    if(PlayerInfo[i][pZvezdi] != 0 && i != playerid)
		    	    {
		    	    	GetPlayerPos(i,pos[0],pos[1],pos[2]);
		           		CheckWant[playerid][0] = SetPlayerCheckpoint(playerid, pos[0],pos[1],pos[2], 4.0);
		           		CheckWant[playerid][1] = 1;
		            	Pursiut[playerid] = i;
		            	TimerWant[playerid] = SetTimerEx("WantedPlayer",800,true,"i",playerid);
		            	SendClientMessage(playerid,-1,"преследование началось");
		    		}
		    		else
		    		{
		    	    	SendClientMessage(playerid,-1,"В вашем районе нету преступников");
		    		}
				}
			}
		}
		else
		{
		    SendClientMessage(playerid,-1,"Вы не в полицейской машине/Без напарника");
		}
		return 1;
	}
public для таймера:
PHP:
forward WantedPlayer(playerid);
public WantedPlayer(playerid)
{
	if(Pursiut[playerid] != -1)
	{
	    new Float:pos[3];
        GetPlayerPos(Pursiut[playerid],pos[0],pos[1],pos[2]);
        if(GetDistanceBetweenPlayers(playerid,Pursiut[playerid]) > 250)
        {
            Pursiut[playerid] = -1;
            CheckWant[playerid][1] = 0;
            SendClientMessage(playerid,-1,"преступник скрылся");
			KillTimer(TimerWant[playerid]);
			DisablePlayerCheckpoint(playerid);
			return 1;
        }
        SetPlayerCheckpoint(playerid, pos[0],pos[1],pos[2], 4.0);
	}
	return 1;
}
В public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
PHP:
if(!ispassenger || (ispassenger && PlayerInCar[vehicleid] == 0)) PlayerInCar[vehicleid] = 1;
if(ispassenger && PlayerInCar[vehicleid] == 1 || (!ispassenger && PlayerInCar[vehicleid] == 1)) PlayerInCar[vehicleid] = 2;
в public OnPlayerSpawn
PHP:
Pursiut[playerid] = -1;
в public OnPlayerDisconnect
PHP:
Pursiut[playerid] = -1;
public OnVehicleSpawn(vehicleid)
PHP:
PlayerInCar[vehicleid] = 0;
в public OnPlayerExitVehicle(playerid, vehicleid)
PHP:
if(Pursiut[playerid] != -1)
{
	DisablePlayerCheckpoint(playerid);
    	Pursiut[playerid] = -1;
     	CheckWant[playerid][1] = 0;
      	SendClientMessage(playerid,-1,"Вы закончили преследование");
	KillTimer(TimerWant[playerid]);
	return 1;
}
Функция для проверки машины в которой сидит игрок
PHP:
stock IsaPDCar(vehicleid)
{
	if(GetVehicleModel(vehicleid) >= 596 && GetVehicleModel(vehicleid) <= 597 || GetVehicleModel(vehicleid) == 523) return 1;
	return 0;
}
Вот и всё :D

Функцию IsaPD замените на свою, которая отвечает за то сидит ли игрок в полицейской машине
Переменную PlayerInfo[playerid][pZvezdi] замените на ту, которая отвечает за уровень розыска игрока

Как будет работать?
Садитесь в машину полиции, берёте с собой напарника, вводите команду /patrol и если в радиусе 100метров найдётся преступник, он обозначится красной меткой пока он не скроется из вашего вида.
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу