Команда /z (Служитель закона)

Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
Пользователь
Регистрация
21 Мар 2022
Сообщения
12
Всем здарова! Давненько хотел выпустить маленький туториал по данной команде, сама команда была взята с другого мода, так как, нигде ее не видел на других форумах. Может кому-то она все таки пригодится :)

Переменные

C++:
new Text:td_Pursuit[2];
C++:
    pPursuitTimer,
    pPursuitOfficer,

Сама команда
C++:
CMD:z(playerid, params[])

{
    if(!IsACop(playerid)) return  SCM(playerid, COLOR_RED, !"Вы не полицейский!"); //Здесь ваша проверка, на полицейского
    if(GetPlayerState(playerid)!=2) return SCM(playerid, COLOR_RED, !"Вы должны находится за рулем!"); //Здесь проверка на патрульный автомобиль полиции
    new giveplayerid;
    if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_GREY, "Используйте: /z [id]");
    if(giveplayerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Указанный игрок не найден в сети.");
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    if(!IsPlayerInRangeOfPoint(giveplayerid, 100.0, x, y, z)) return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Указанный игрок не найден в сети.");
    if(PlayerInfo[giveplayerid][pWanted] <= 0) return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Указанный игрок не в розыске.");
    if(PlayerInfo[giveplayerid][pPursuitOfficer] != INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GREY, "Ошибка: За указанным игроком уже идёт преследование.");
    ShowPursuitTD(giveplayerid);
    PlayerInfo[giveplayerid][pPursuitTimer] = SetTimerEx("@___CrimePursuit", 1000, true, "i", giveplayerid);
    PlayerInfo[giveplayerid][pPursuitOfficer] = playerid;
    format(stringer, sizeof(stringer), "Вы начали преследовать %s если он отдалится более чем на 100 метров, то преследование будет закончено",
    PlayerInfo[giveplayerid][pNames], giveplayerid);
    SendClientMessage(playerid, COLOR_GREEN, stringer);
    ShowPlayerDialog(giveplayerid, 0000, DIALOG_STYLE_MSGBOX,
        "THE PURSUIT",
        "{FFFFFF}\n\
            Представители власти начали за вами преследование,\n\
            Если вы выйдите игры, тогда вы автоматический будете посажены в тюрьму!\n\
            \n\
            Если вы отдалитесь от полиции более чем на 100 метров, то режим погони будет аннулирован.\n\
            Избегайте полицию и уезжайте как можно дальше.\n\
            \n\
            Когда табличка {ff0000}THE PURSUIT {ffffff}исчезнит, тогда можете быть спокойны,\n\
            это значит, что преследование закончено и вы смогли уехать далеко.\
        ", "Закрыть", "");
    return 1;
}

OnPlayerDisconnect
C++:
PlayerInfo[playerid][pPursuitTimer] > 1)
{
    PlayerInfo[playerid][pJailTime] += (PI[playerid][pWanted] + 1) * 600;
    PlayerInfo[playerid][pWanted] = 0;
}

OnPlayerConnect

C++:
PlayerInfo[playerid][pPursuitTimer] = -1;
PlayerInfo[playerid][pPursuitOfficer] = INVALID_PLAYER_ID;

Ко всем стокам

C++:
@___CrimePursuit(playerid);
@___CrimePursuit(playerid)
{
    if(!IsPlayerConnected(playerid))
    {
        StopCrimePursuit(playerid);
        return;
    }
    new officer = PlayerInfo[playerid][pPursuitOfficer];
    if(!IsPlayerConnected(officer))
    {
        StopCrimePursuit(playerid);
        return;
    }

    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    if(!IsPlayerInRangeOfPoint(officer, 100.0, x, y, z))
    {
        StopCrimePursuit(playerid);
        return;
    }
}

C++:
stock StopCrimePursuit(playerid)
{
    if(PlayerInfo[playerid][pPursuitTimer] != -1)
    {
        HidePursuitTD(playerid);
        KillTimer(PlayerInfo[playerid][pPursuitTimer]);
        PlayerInfo[playerid][pPursuitTimer] = -1;
        PlayerInfo[playerid][pPursuitOfficer] = INVALID_PLAYER_ID;
    }
}

C++:
stock ShowPursuitTD(playerid)
{
    for(new i; i < sizeof(td_Pursuit); i++)
        TextDrawShowForPlayer(playerid, td_Pursuit[i]);
}

stock HidePursuitTD(playerid)
{
    for(new i; i < sizeof(td_Pursuit); i++)
        TextDrawHideForPlayer(playerid, td_Pursuit[i]);
}

Текстдрав

C++:
    td_Pursuit[0] = TextDrawCreate(140.033447, 326.433319, "");
    TextDrawTextSize(td_Pursuit[0], 94.000000, 97.000000);
    TextDrawAlignment(td_Pursuit[0], 1);
    TextDrawColor(td_Pursuit[0], -1);
    TextDrawBackgroundColor(td_Pursuit[0], 0);
    TextDrawFont(td_Pursuit[0], 5);
    TextDrawSetProportional(td_Pursuit[0], 0);
    TextDrawSetPreviewModel(td_Pursuit[0], 596);
    TextDrawSetPreviewRot(td_Pursuit[0], 0.000000, 0.000000, 0.000000, 1.000000);
    TextDrawSetPreviewVehCol(td_Pursuit[0], 0, 1);

    td_Pursuit[1] = TextDrawCreate(148.399963, 380.900024, "THE_Pursuit!_]");
    TextDrawLetterSize(td_Pursuit[1], 0.272000, 1.371852);
    TextDrawAlignment(td_Pursuit[1], 1);
    TextDrawColor(td_Pursuit[1], -46057985);
    TextDrawSetShadow(td_Pursuit[1], 0);
    TextDrawSetOutline(td_Pursuit[1], 1);
    TextDrawBackgroundColor(td_Pursuit[1], 370546431);
    TextDrawFont(td_Pursuit[1], 2);
    TextDrawSetProportional(td_Pursuit[1], 1);

Код:
PlayerInfo - информация у игроков, меняйте так, как у вас в моде. (Arizona - PI)
stinger - глобальная переменная - тоже меняйте на свое
 
Последнее редактирование:
Заблокированный
Регистрация
26 Апр 2022
Сообщения
852
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
Из какого мода взял?
 
Пользователь
Регистрация
22 Май 2022
Сообщения
11
Измененная копия Аризоны:)
 
Пользователь
Регистрация
19 Окт 2022
Сообщения
16
Я вообще нигде не видел эту команду на бонусниках Аризоны, спасибо.
 
Пользователь
Регистрация
30 Июл 2023
Сообщения
3
Команда действительно редкая! Молодец что написал сюда, может кому-то пригодится
 
Сверху