Ad Command

Ad Command 1.0

Нет прав для скачивания
Установка
  1. Скопируйте файлы согласно директориям
  2. Cкомпилируйте ad_cmd.sma
  3. Скопируйте ad_cmd.amxx в директорию "addons/amxmodx/plugins".
  4. Пропишите ad_cmd.amxx в файле /amxmodx/configs/plugins.ini.
  5. Скопируйте ad_cmd.ini в директорию "addons/amxmodx/configs".
Исходный код
Код:
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Ad Command"
#define VERSION "1.0"
#define AUTHOR "uMk0"

/* Настройки начало */
#define CHECK_FLOOD         // Включить/Выключить проверку на флуд (Если нужно отключить закомментируйте)
#if defined CHECK_FLOOD
    #define CHAT_TEXT_FLOOD "^3[^4Инфо^3] ^1Прекатите флудить!" //Текст который будет выводится для отправителя команды
#endif   
#define NOT_ACCESS_CMD_TEXT_CONSOLE "Нет доступа к комманде: "//Текст в коносли когда команда не доступна по флагу
/* Настройки конец */

enum _:name_cmd{
    NAME_CMD[64]
}
enum _:text_cmd{
    TEXT_CMD[250]
}
enum _:flags_cmd{
    FLAGS_CMD[32]
}

new g_cmdName[64][name_cmd];
new g_cmdText[64][text_cmd];
new g_cmdFlags[64][flags_cmd];

public plugin_init(){
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_cvar("ad_cmd_version", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
    new configsDir[64], config[64];
    get_configsdir(configsDir, charsmax(configsDir));
    formatex(config, charsmax(config), "%s/%s", configsDir, "ad_cmd.ini");

    if (file_exists(config)){
        new linedata[1024], i = 0, file = fopen(config, "rt");

        while (file && !feof(file)){
            fgets(file, linedata, charsmax(linedata));

            replace(linedata, charsmax(linedata), "^n", "");
            if (!linedata[0] || linedata[0] == ';') continue;
            new tmp_name_cmd[64];
            parse(linedata,tmp_name_cmd, charsmax(tmp_name_cmd), g_cmdText[i][TEXT_CMD], charsmax(g_cmdText[][TEXT_CMD]), g_cmdFlags[i][FLAGS_CMD], charsmax(g_cmdFlags[][FLAGS_CMD]));
            
            replace_string(g_cmdText[i][TEXT_CMD], charsmax(g_cmdText[][TEXT_CMD]), "!n", "^1");
            replace_string(g_cmdText[i][TEXT_CMD], charsmax(g_cmdText[][TEXT_CMD]), "!t", "^3");
            replace_string(g_cmdText[i][TEXT_CMD], charsmax(g_cmdText[][TEXT_CMD]), "!g", "^4");
        
            if(!isCmdAdd(tmp_name_cmd) && !equal(tmp_name_cmd,"")){
                register_clcmd(tmp_name_cmd,"sendCmd");
            }
            g_cmdName[i][NAME_CMD] = tmp_name_cmd;
            i++;
        }
        if(file) fclose(file);
    }
}
public sendCmd(id){
    #if defined CHECK_FLOOD
        //спасибо neygomon за проверку флуда
        static Float:fTimeFlood[33], Float:fGameTime, iFloodWarn[33];
        if(fTimeFlood[id] > (fGameTime = get_gametime())){
            if(++iFloodWarn[id] > 2){           
                client_print_color(id,print_team_default,"%s",CHAT_TEXT_FLOOD);
                fTimeFlood[id] = fGameTime + 3.0;
                return;
            }
        }
        else if(iFloodWarn[id]) iFloodWarn[id]--;
        fTimeFlood[id] = fGameTime;
    #endif
    new cmd[64];
    read_argv(0, cmd, charsmax(cmd));
    for(new i = 0; i < sizeof(g_cmdName); i++){
       if(equal(g_cmdName[i][NAME_CMD],cmd)){
            if(get_user_flags(id) & read_flags(g_cmdFlags[i][FLAGS_CMD]) || read_flags(g_cmdFlags[i][FLAGS_CMD]) == 0){
                client_print_color(0,print_team_default,"%s", g_cmdText[i][TEXT_CMD]);
            }else{
                client_print(id,print_console,"%s%s",NOT_ACCESS_CMD_TEXT_CONSOLE, g_cmdName[i][NAME_CMD]);
            }
       }
    }
}

isCmdAdd(cmd[]){
    for(new i = 0; i < sizeof(g_cmdName); i++){
        if(equal(g_cmdName[i][NAME_CMD],cmd)){
            return true;
        }
    }
    return false;
}
Настройки
Код:
#define CHECK_FLOOD         // Включить/Выключить проверку на флуд (Если нужно отключить закомментируйте)
#if defined CHECK_FLOOD
    #define CHAT_TEXT_FLOOD "^3[^4Инфо^3] ^1Прекатите флудить!" //Текст который будет выводится для отправителя команды
#endif   
#define NOT_ACCESS_CMD_TEXT_CONSOLE "Нет доступа к комманде: "//Текст в коносли когда команда не доступна по флагу
INI:
;     <command> <text> <flags>
;    <command> - команда в коносли
;    <text> - текст который будет отправлен в чат всем
;    <flags> - флаги доступа
;"ad_viptest" "!t[!gИнфо!t] !nХочешь попробовать Вип? !gпиши /viptest" "u"

"ad_vk" "!t[!gИнфо!t] !nМы Вконтакте: !gССЫЛКА" ""
"ad_viptest" "!t[!gИнфо!t] !nХочешь попробовать Вип? !gпиши /viptest" ""
"ad_favorites" "!t[!gИнфо!t] !nДобавляй сервер в избранное ip: !tIP:PORT" ""
"ad_pay" "!t[!gИнфо!t] !nСтоимость Админ !gN руб.!n Пиши в ССЫЛКА" ""
"ad_pay" "!t[!gИнфо!t] !nСтоимость VIP !gN руб.!n Пиши в ССЫЛКА" ""
Сверху Снизу