Barni
Компетентный
Всем привет, вот от не чего делать набросал мини систему патруль, с радостью написал бы что нибудь другое, но увы, своих идей нету
Система ещё сырая.. Так что о всех багах прошу сразу же сообщать мне в этой теме.
Ко всем new
Команда:
public для таймера:
В public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
в public OnPlayerSpawn
в public OnPlayerDisconnect
public OnVehicleSpawn(vehicleid)
в public OnPlayerExitVehicle(playerid, vehicleid)
Функция для проверки машины в которой сидит игрок
Вот и всё 
Функцию IsaPD замените на свою, которая отвечает за то сидит ли игрок в полицейской машине
Переменную PlayerInfo[playerid][pZvezdi] замените на ту, которая отвечает за уровень розыска игрока
Как будет работать?
Садитесь в машину полиции, берёте с собой напарника, вводите команду /patrol и если в радиусе 100метров найдётся преступник, он обозначится красной меткой пока он не скроется из вашего вида.
Система ещё сырая.. Так что о всех багах прошу сразу же сообщать мне в этой теме.
Ко всем 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;
}
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;
}
PHP:
if(!ispassenger || (ispassenger && PlayerInCar[vehicleid] == 0)) PlayerInCar[vehicleid] = 1;
if(ispassenger && PlayerInCar[vehicleid] == 1 || (!ispassenger && PlayerInCar[vehicleid] == 1)) PlayerInCar[vehicleid] = 2;
PHP:
Pursiut[playerid] = -1;
PHP:
Pursiut[playerid] = -1;
PHP:
PlayerInCar[vehicleid] = 0;
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;
}
Функцию IsaPD замените на свою, которая отвечает за то сидит ли игрок в полицейской машине
Переменную PlayerInfo[playerid][pZvezdi] замените на ту, которая отвечает за уровень розыска игрока
Как будет работать?
Садитесь в машину полиции, берёте с собой напарника, вводите команду /patrol и если в радиусе 100метров найдётся преступник, он обозначится красной меткой пока он не скроется из вашего вида.
Последнее редактирование модератором:
