Где хранятся clcmd?

Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Здравствуйте.
Лет 5-7 назад на сервере видел плагин, что если написать в чат команду, которой нет - выдаст текст с ошибкой.
Загуглить не получается - не выдает результатов.
 
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
get_clcmd. Вернёт 0 если нет такой зарегистрированной команды.
 
Сообщения
19
Реакции
3
Помог
1 раз(а)
Отловить "say" и "say_team", проверить первый символ на совпадение с "/" (или с чего начинаются команды), вывести в чат что команды не существует, плагин поместить в конец plugins.ini
Все регистрируемые clcmd в других плагинах должны возвращать PLUGIN_HANDLED
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Serp,
Код:
#include <amxmodx>

public plugin_init() {
    register_clcmd("say", "@GetMessage")
    register_clcmd("say /msg", "@test", ADMIN_BAN)
    register_clcmd("msg2", "@test2")
}

@test(id) {
    client_print(id, print_chat, "msg")
    return PLUGIN_HANDLED
}

@test2(id) {
    client_print(id, print_chat, "msg2")
}

@GetMessage(id) {
    new szMessage[192]
    read_args(szMessage, charsmax(szMessage))
    remove_quotes(szMessage); trim(szMessage)
    
    if(szMessage[0] == '/') {
        if(!bIsValidCmd(szMessage)) client_print(id , print_chat , "Команда %s не найдена" , szMessage);
        return PLUGIN_HANDLED_MAIN;
    }
    return PLUGIN_CONTINUE
}

bool:bIsValidCmd(const szCmd[])
{
    new iNumCmd = get_clcmdsnum(-1), i , szCommand[64] , iFlags , szInfo[128];
    for(i = 0; i < iNumCmd; i++) {
        get_clcmd(i , szCommand , charsmax(szCommand) , iFlags , szInfo , charsmax(szInfo) , -1);
        server_print("cmd %s - check cmd %s", szCmd, szCommand);
        if(strcmp(szCommand, szCmd) == 0)
            return true;
    }
    return false;
}
Пишет, что не найдена команда))
 
Сообщения
19
Реакции
3
Помог
1 раз(а)
CLUQA, команда регистрируется как "say /msg", проверять нужно в таком же формате. Примерно что-то:

Код:
 if(szMessage[0] == '/') {
        format(szMessage, charsmax(szMessage), "say %s", szMessage);
        if(!bIsValidCmd(szMessage)) client_print(id , print_chat , "Команда %s не найдена" , szMessage);
        return PLUGIN_HANDLED_MAIN;
    }
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Serp, благодарю)
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу