PDA

Просмотр полной версии : [Мануал] Вызов подмоги



Osetin
09.08.2013, 15:13
В enum pInfo добавляем:

pRequestingBackup,

Затем добавим в самый конец OnPlayerLogin:

PlayerInfo[playerid][pRequestingBackup] = 0;

Ко всем командам:

if(strcmp(cmd,"/backup",true)==0 || strcmp(cmd,"/bk",true)==0)
{
if(IsACop(playerid) == 0)
return SendClientMessage(playerid, COLOR_GREY, "Вы не коп!");
if (PlayerInfo[playerid][pRequestingBackup])
return SendClientMessage(playerid, COLOR_GREY, "Вы уже вызываете подмогу!");
static const fmt_str[]="Всем постам: %s нуждается в подмоге, он отмечен красным маркером на радаре.";
new string[sizeof(fmt_str)-2+MAX_PLAYER_NAME];
GetPlayerName(playerid, string, sizeof(string));
format(string, sizeof(string), fmt_str, string);
PlayerInfo[playerid][pRequestingBackup] = 1;
new i = GetMaxPlayers();
do{
if(IsPlayerConnected(--i))
{
if(IsACop(playerid))
{
SetPlayerMarkerForPlayer(i, playerid, 0xFF0000FF);
SendClientMessage(i, 0x8D8DFF00, string);
}
}
}while(i != 0);
SetTimerEx("BackupClear", 3*60*1000, false, "ii", playerid, 1);
return SendClientMessage(playerid, 0x8D8DFF00, "Используйте /bkc, чтобы отменить вызов подмоги.");
}
if(strcmp(cmd,"/backupclear",true)==0 || strcmp(cmd,"/bkc",true)==0)
{
return BackupClear(playerid);
}

Далее создаем таймерную функцию, желательно в конец мода:

forward BackupClear(playerid, calledbytimer=0);
public BackupClear(playerid, calledbytimer=0)
{
if(IsPlayerConnected(playerid) == 0)
return 0;
if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1
|| PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2)
{
if (PlayerInfo[playerid][pRequestingBackup])
{
new i = GetMaxPlayers();
do{
--i;
if(IsPlayerConnected(i) && (PlayerInfo[i][pMember] == 1||PlayerInfo[i][pLeader] == 1))
SetPlayerMarkerForPlayer(i, playerid, TEAM_HIT_COLOR);
}while(i!=0);
if(calledbytimer == 0)
SendClientMessage(playerid, TEAM_BLUE_COLOR, "Ваш запрос о подмоге очищен.");
else
SendClientMessage(playerid, TEAM_BLUE_COLOR, "Ваш запрос о подмоге автоматически очищен.");
PlayerInfo[playerid][pRequestingBackup] = 0;
}
else
{
if(calledbytimer == 0)
SendClientMessage(playerid, COLOR_GREY, "У Вас нет текущих запросов!");
}
}
else
{
if(calledbytimer == 0)
SendClientMessage(playerid, COLOR_GREY, "Вы не коп!");
}
return 1;
}

Автор: KleBitZ
Доработка: Daniel_Cortez

Flazy
10.08.2013, 14:43
Понравилось. А там приходится по несколько раз писать если ты передвигаешься? Или пикап за тобой передвигается?

heralt
28.01.2015, 19:35
Понравилось. А там приходится по несколько раз писать если ты передвигаешься? Или пикап за тобой передвигается?

если ты вызываешь подмогу, зачем тебе обновлять пикап? :pardon:

Mr.Dark
26.10.2016, 10:19
если ты вызываешь подмогу, зачем тебе обновлять пикап? :pardon:

Ну а если погоня ?

HarrWe
26.10.2016, 12:12
Ну а если погоня ?

Можно создать переменную, если ввёл команду она приравнивается к 1, и в секундный таймер получаем позицию игрока и создаём новый маркер.

DeimoS
26.10.2016, 12:50
Можно создать переменную, если ввёл команду она приравнивается к 1, и в секундный таймер получаем позицию игрока и создаём новый маркер.

Маркер показывается через SetPlayerMarkerForPlayer. То бишь, это включение обычного маркера на радаре/карте
http://i.imgur.com/RpZdMYo.png
Обновлять через таймер его не нужно