Заблочить команду в консоле

Arthur Don

Участник
Сообщения
1,696
Реакции
256
Кто может написать плагин или дать ссылку, который заблочит команду explode в консоле. Через нее игроки убивают себя
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #2
@artushonok,
PHP:
#pragma newdecls required
#pragma semicolon 1

public void OnPluginStart() {
    AddCommandListener(OnPlayerTryExplode, "explode");
}

public Action OnPlayerTryExplode(int iClient, const char[] szCommand, int iArgC) {
    return Plugin_Handled;
}
Взрыв игрока в админке тоже сломается, ибо он тупо заставляет сервак думать, что клиент ввёл explode в консоли.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #4
@artushonok, например?
В большинстве случаев, достаточно будет скопировать вызов AddCommandListener() в событии запуска плагина, и сменить имя команды в кавычках.
 

Arthur Don

Участник
Сообщения
1,696
Реакции
256
@Kr1kuzya, можешь пофиксить как то, если большо 3-х команд, то не блочит
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #6
@artushonok, именно если их больше 3-ёх?
Не на конкретных вылезает?
 

Arthur Don

Участник
Сообщения
1,696
Реакции
256
ну примерно 3-5 команд и потом все не работают
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #8
@artushonok, покажите пример с неработающими командами.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
а как добавить сюда еще одну команду?
Вот так:
PHP:
#pragma semicolon 1
#pragma newdecls required

static const char sBlockedCmds[][] = {    // сюда добавляем команды
    "explode",
    "other_cmd"
};

public void OnPluginStart()
{
    int num = sizeof(sBlockedCmds);
    for(int i; i < num; i++) AddCommandListener(OnBlockedCmd, sBlockedCmds[i]);
}

public Action OnBlockedCmd(int client, const char[] command, int argc)
{
    return Plugin_Handled;
}
 
Сверху Снизу