Система заморозки игрока

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Идея и назначение

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

Это полезно при проверках, выдаче наказаний или разборе конфликтов.

Заморозка и разморозка делаются одной и той же командой.


Суть реализации

1. Храним состояние заморозки в логическом массиве.

2. В команде переключаем значение и блокируем управление.

3. Выводим игроку сообщение о текущем состоянии.


Реализация

Код:
new bool:PlayerFrozen[MAX_PLAYERS];


CMD:freeze(playerid, params[])
{
    new target;

    if(sscanf(params, "u", target))
        return SendClientMessage(playerid, -1, "Используй: /freeze [id].");

    if(!IsPlayerConnected(target))
        return SendClientMessage(playerid, -1, "Игрок не найден.");

    PlayerFrozen[target] = !PlayerFrozen[target];

    TogglePlayerControllable(target, !PlayerFrozen[target]);

    if(PlayerFrozen[target])
        SendClientMessage(target, -1, "Ты заморожен администратором.");
    else
        SendClientMessage(target, -1, "Ты снова можешь двигаться.");

    return 1;
}


Дополнительные идеи

1. Логировать все случаи заморозки.

2. Добавить автоснятие заморозки через таймер.

3. Запрещать заморозку админов ниже или выше определенного уровня.
 

0 человек читают эту тему (Всего: 0, Пользователей: 0, Гостей: 0)

Сверху