Throwing Knives

Плагин АМХХ Throwing Knives 1.0

Нет прав для скачивания
C++:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fun>
#include <gamecms5>

new const szPluginInfo[][] = {"Throwing Knives", "1.0", "Autor + ApXuTekToR"};

enum _:KNIFE_MODEL {
    MODELS_KNIFE = 1,
}
new g_szModel[KNIFE_MODEL][64];

new bool:knifeout[33];
new bool:roundfreeze;
new Float:tossdelay[33];
new knifeammo[33];
new holdammo[33];

public plugin_init()
{
    register_event("ResetHUD","new_spawn","b");
    register_event("CurWeapon","check_knife","b","1=1");
    register_event("DeathMsg", "player_death", "a");
    register_logevent("round_start", 2, "1=Round_Start");
    register_logevent("round_end", 2, "1=Round_End");
   
    register_clcmd("throw_knife","throw_knifes");            // Команда для ментания ножей
    register_concmd("amx_tknives","admin_tknife");            // Вкл/Выкл для админа
    register_clcmd("say /knifehelp", "knife_help");            // Помощь
    register_clcmd("say","HandleSay");

    register_cvar("amx_throwknives","1");                     // включить/выключить плагин
    register_cvar("amx_checkaccess", "1");                    // Кому будут доступны метательные ножи?
    // '0' - Всем.
    // '1' - Только по флагу доступа
    // '2' - Только по названию услуги
    // '3' - По флагу или услуге
    register_cvar("amx_checkflags", "");                    // Если 'amx_checkaccess' = '1' или '3', то какой флаг должен быть у игрока?
    register_cvar("amx_checkservice", "_throw_knife");        // Если 'amx_checkaccess' = '2' или '3', то какое название услуги должно быть?
    // (Обязательно в начале услуги должен быть знак '_' - нижнее подчеркивание)
    register_cvar("amx_flagaccess", "l");                    // Флаг доступа для Включения/Выключения метательных ножей (по умолчанию - l)
    register_cvar("amx_knifeammo", "5");                    // количество ножей, которые будут даны при старте раунда (по умолчанию - 5)
    register_cvar("amx_knifetossforce","1200");                // сила с которую брошен нож; 200 или выше (по умолчанию - 1200)
    register_cvar("amx_maxknifeammo","10");                    // максимальное количество ножей, которые игрок может носить (по умолчанию - 10)
    register_cvar("amx_knifedmg","25");                        // урон, наносимый брошенным ножом (по умолчанию - 25)
    register_cvar("amx_dropknives","1");                    // выбросить или нет ножи после смерти (по умолчанию - 1)
    register_cvar("amx_knifeautoswitch","1");                // автоматический переключатель
    register_cvar("amx_tknifelog","0");                        // устанавливает вид сообщения в логе; 1-брошенным ножом, 0-ножом (по умолчанию - 0)

    check_cvars();
}

public plugin_cfg()
{
    if(is_plugin_loaded("GameCMS_API") == INVALID_PLUGIN_ID)
    {
        log_amx("WARNING: gamecms_api.amxx isn't loaded! Plugin Stopped.");
        pause("a");
        return;
    }
}

public plugin_precache()
{
    new szConfigsDir[256];
    get_localinfo("amxx_configsdir", szConfigsDir, charsmax(szConfigsDir));
    server_cmd("exec %s/SevCorp/ThrowingKnives.cfg", szConfigsDir);
    server_exec();

    register_plugin(szPluginInfo[0], szPluginInfo[1], szPluginInfo[2]);
    precache_sound("weapons/knife_hitwall1.wav");
    precache_sound("weapons/knife_hit4.wav");
    precache_sound("weapons/knife_deploy1.wav");
    precache_model("models/w_knifepack.mdl");
    LOAD_CONFIGURATION();
}

public knife_help(id) {
    static CheckAccess, AccessFlags[16], AccessService[32];
    CheckAccess = get_cvar_num("amx_checkaccess");
    get_cvar_string("amx_checkflags",    AccessFlags,     charsmax(AccessFlags));
    get_cvar_string("amx_checkservice", AccessService,    charsmax(AccessService));
    static Array:Services;
    Services = cmsapi_get_user_services(id, "", AccessService);

    if(CheckAccess == 0) {
        client_print_color(id, 0, "^3[^4Knife^3] ^1У вас есть метательные ножи. ^3Кол-во^1: ^4%d^1", knifeammo[id]);
        client_print_color(id, 0, "^3[^4Knife^3] ^1Метать ножи, пишите в консоль: ^3bind ^1^"^4Кнопка^1^" ^1^"^4throw_knife^1^"");
    } else if(CheckAccess == 1) {
        if(checkAccess(id, AccessFlags)) {
            client_print_color(id, 0, "^3[^4Knife^3] ^1У вас есть метательные ножи. ^3Кол-во^1: ^4%d^1", knifeammo[id]);
            client_print_color(id, 0, "^3[^4Knife^3] ^1Метать ножи, пишите в консоль: ^3bind ^1^"^4Кнопка^1^" ^1^"^4throw_knife^1^"");
        }
    } else if(CheckAccess == 2) {
        if(Services){
            client_print_color(id, 0, "^3[^4Knife^3] ^1У вас есть метательные ножи. ^3Кол-во^1: ^4%d^1", knifeammo[id]);
            client_print_color(id, 0, "^3[^4Knife^3] ^1Метать ножи, пишите в консоль: ^3bind ^1^"^4Кнопка^1^" ^1^"^4throw_knife^1^"");
        }
    } else if(CheckAccess == 3) {
        if(checkAccess(id, AccessFlags) || Services) {
            client_print_color(id, 0, "^3[^4Knife^3] ^1У вас есть метательные ножи. ^3Кол-во^1: ^4%d^1", knifeammo[id]);
            client_print_color(id, 0, "^3[^4Knife^3] ^1Метать ножи, пишите в консоль: ^3bind ^1^"^4Кнопка^1^" ^1^"^4throw_knife^1^"");
        }
    }
}

public check_cvars() {
    if (get_cvar_num("amx_knifeammo") > get_cvar_num("amx_maxknifeammo")) {
        server_print("[AMXX] 'amx_knifeammo' не может быть больше, чем 'amx_maxknifeammo', устанавливаю 'amx_maxknifeammo' = 'amx_knifeammo'");
        set_cvar_num("amx_maxknifeammo", get_cvar_num("amx_knifeammo"));
    }
    if (get_cvar_num("amx_knifedmg") < 1 ) {
        server_print("[AMXX] 'amx_knifedmg' не может быть установлен ниже '1'.Устанавливаю 'amx_knifedmg' = '1'");
        set_cvar_num("amx_knifedmg", 1);
    }
    if (get_cvar_num("amx_knifetossforce") < 200 ) {
        server_print("[AMXX] 'amx_knifetossforce' не может быть установлен ниже, чем 200. Устанавливаю '200'");
        set_cvar_num("amx_knifetossforce", 200);
    }
}

public throw_knifes(id) {
    static CheckAccess, AccessFlags[16], AccessService[32];
    CheckAccess = get_cvar_num("amx_checkaccess");
    get_cvar_string("amx_checkflags",    AccessFlags,     charsmax(AccessFlags));
    get_cvar_string("amx_checkservice", AccessService,    charsmax(AccessService));
    static Array:Services;
    Services = cmsapi_get_user_services(id, "", AccessService);

    if(CheckAccess == 0) {
        command_knife(id);
    } else if(CheckAccess == 1) {
        if(checkAccess(id, AccessFlags)) {
            command_knife(id);
        }
    } else if(CheckAccess == 2) {
        if(Services){
            command_knife(id);
        }
    } else if(CheckAccess == 3) {
        if(checkAccess(id, AccessFlags) || Services) {
            command_knife(id);
        }
    }
}

public player_death() {
    new id = read_data(2);
    knife_drop(id);
}

public HandleSay(id) {
    new Speech[192];
    read_args(Speech,192);
    remove_quotes(Speech);
    if(!equal(Speech, "vote",4) && ((containi(Speech, "knife") != -1) || (containi(Speech, "knives") != -1))) {
        if(get_cvar_num("amx_throwknives") == 1) {
            client_print_color(id, 0, "^3[^4Knife^3] ^1Метательные ножи ^4Включены^3!");
        }
        else {
            client_print_color(id, 0, "^3[^4Knife^3] ^1Метательные ножи ^4Выключены");
        }
    }
}

public knife_drop(id) {

    if(!get_cvar_num("amx_dropknives") || knifeammo[id] <= 0 || !get_cvar_num("amx_throwknives")) return;

    new Float:Origin[3], Float:Velocity[3];
    entity_get_vector(id, EV_VEC_origin, Origin);

    new knifedrop = create_entity("info_target");
    if(!knifedrop) return;

    entity_set_string(knifedrop, EV_SZ_classname, "knife_pickup");
    entity_set_model(knifedrop, "models/w_knifepack.mdl");

    new Float:MinBox[3] = {-1.0, -1.0, -1.0}
    new Float:MaxBox[3] = {1.0, 1.0, 1.0}
    entity_set_vector(knifedrop, EV_VEC_mins, MinBox);
    entity_set_vector(knifedrop, EV_VEC_maxs, MaxBox);

    entity_set_origin(knifedrop, Origin);

    entity_set_int(knifedrop, EV_INT_effects, 32);
    entity_set_int(knifedrop, EV_INT_solid, 1);
    entity_set_int(knifedrop, EV_INT_movetype, 6);
    entity_set_edict(knifedrop, EV_ENT_owner, id);

    VelocityByAim(id, 400 , Velocity);
    entity_set_vector(knifedrop, EV_VEC_velocity ,Velocity);
    holdammo[id] = knifeammo[id];
    knifeammo[id] = 0;
}

public check_knife(id) {
    if(!get_cvar_num("amx_throwknives")) return;
    new weapon = read_data(2);
    static CheckAccess, AccessFlags[16], AccessService[32];
    CheckAccess = get_cvar_num("amx_checkaccess");
    get_cvar_string("amx_checkflags",    AccessFlags,     charsmax(AccessFlags));
    get_cvar_string("amx_checkservice", AccessService,    charsmax(AccessService));
    static Array:Services;
    Services = cmsapi_get_user_services(id, "", AccessService);

    if(CheckAccess == 0) {
        if(weapon == CSW_KNIFE) {
            knifeout[id] = true;
            client_print(id, print_center, "В наличии %d %s", knifeammo[id], knifeammo[id] == 1 ? "нож" : "ножей");
        } else {
            knifeout[id] = false;
        }
    } else if(CheckAccess == 1) {
        if(checkAccess(id, AccessFlags)) {
            if(weapon == CSW_KNIFE) {
                knifeout[id] = true;
                client_print(id, print_center, "В наличии %d %s", knifeammo[id], knifeammo[id] == 1 ? "нож" : "ножей");
            } else {
                knifeout[id] = false;
            }
        }
    } else if(CheckAccess == 2) {
        if(Services){
            if(weapon == CSW_KNIFE) {
                knifeout[id] = true;
                client_print(id, print_center, "В наличии %d %s", knifeammo[id], knifeammo[id] == 1 ? "нож" : "ножей");
            } else {
                knifeout[id] = false;
            }
        }
    } else if(CheckAccess == 3) {
        if(checkAccess(id, AccessFlags) || Services) {
            if(weapon == CSW_KNIFE) {
                knifeout[id] = true;
                client_print(id, print_center, "В наличии %d %s", knifeammo[id], knifeammo[id] == 1 ? "нож" : "ножей");
            } else {
                knifeout[id] = false;
            }
        }
    }
}

public kill_all_entity(classname[]) {
    new iEnt = find_ent_by_class(-1, classname);
    new tEnt;
    while(iEnt > 0) {
        tEnt = iEnt;
        iEnt = find_ent_by_class(iEnt, classname);
        remove_entity(tEnt);
    }
}

public new_spawn(id) {
    static CheckAccess, AccessFlags[16], AccessService[32];
    CheckAccess = get_cvar_num("amx_checkaccess");
    get_cvar_string("amx_checkflags",    AccessFlags,     charsmax(AccessFlags));
    get_cvar_string("amx_checkservice", AccessService,    charsmax(AccessService));
    static Array:Services;
    Services = cmsapi_get_user_services(id, "", AccessService);

    if(CheckAccess == 0) {
        if(knifeammo[id] < get_cvar_num("amx_knifeammo")) knifeammo[id] = get_cvar_num("amx_knifeammo");
        if(knifeammo[id] > get_cvar_num("amx_maxknifeammo")) knifeammo[id] = get_cvar_num("amx_maxknifeammo");
        tossdelay[id] = 0.0;
    } else if(CheckAccess == 1) {
        if(checkAccess(id, AccessFlags)) {
            if(knifeammo[id] < get_cvar_num("amx_knifeammo")) knifeammo[id] = get_cvar_num("amx_knifeammo");
            if(knifeammo[id] > get_cvar_num("amx_maxknifeammo")) knifeammo[id] = get_cvar_num("amx_maxknifeammo");
            tossdelay[id] = 0.0;
        }
    } else if(CheckAccess == 2) {
        if(Services){
            if(knifeammo[id] < get_cvar_num("amx_knifeammo")) knifeammo[id] = get_cvar_num("amx_knifeammo");
            if(knifeammo[id] > get_cvar_num("amx_maxknifeammo")) knifeammo[id] = get_cvar_num("amx_maxknifeammo");
            tossdelay[id] = 0.0;
        }
    } else if(CheckAccess == 3) {
        if(checkAccess(id, AccessFlags) || Services) {
            if(knifeammo[id] < get_cvar_num("amx_knifeammo")) knifeammo[id] = get_cvar_num("amx_knifeammo");
            if(knifeammo[id] > get_cvar_num("amx_maxknifeammo")) knifeammo[id] = get_cvar_num("amx_maxknifeammo");
            tossdelay[id] = 0.0;
        }
    }
}

public client_connect(id) {
    static CheckAccess, AccessFlags[16], AccessService[32];
    CheckAccess = get_cvar_num("amx_checkaccess");
    get_cvar_string("amx_checkflags",    AccessFlags,     charsmax(AccessFlags));
    get_cvar_string("amx_checkservice", AccessService,    charsmax(AccessService));
    static Array:Services;
    Services = cmsapi_get_user_services(id, "", AccessService);

    if(CheckAccess == 0) {
        knifeammo[id] = get_cvar_num("amx_knifeammo");
        holdammo[id] = 0;
        tossdelay[id] = 0.0;
        knifeout[id] = false;
    } else if(CheckAccess == 1) {
        if(checkAccess(id, AccessFlags)) {
            knifeammo[id] = get_cvar_num("amx_knifeammo");
            holdammo[id] = 0;
            tossdelay[id] = 0.0;
            knifeout[id] = false;
        }
    } else if(CheckAccess == 2) {
        if(Services){
            knifeammo[id] = get_cvar_num("amx_knifeammo");
            holdammo[id] = 0;
            tossdelay[id] = 0.0;
            knifeout[id] = false;
        }
    } else if(CheckAccess == 3) {
        if(checkAccess(id, AccessFlags) || Services) {
            knifeammo[id] = get_cvar_num("amx_knifeammo");
            holdammo[id] = 0;
            tossdelay[id] = 0.0;
            knifeout[id] = false;
        }
    }
}

public client_disconnected(id) {
    knifeammo[id] = 0;
    holdammo[id] = 0;
    tossdelay[id] = 0.0;
    knifeout[id] = false;
}

public round_start() {
    roundfreeze = false;
}
public round_end() {
    roundfreeze = true;
    kill_all_entity("throwing_knife");
    kill_all_entity("knife_pickup");
}

public vexd_pfntouch(pToucher, pTouched) {

    if (!is_valid_ent(pToucher) || !get_cvar_num("amx_throwknives")) return;

    new Classname[32];
    entity_get_string(pToucher, EV_SZ_classname, Classname, 31);
    new owner = entity_get_edict(pToucher, EV_ENT_owner);
    new Float:kOrigin[3]
    entity_get_vector(pToucher, EV_VEC_origin, kOrigin);

    if(equal(Classname,"knife_pickup")) {
        if ( !is_valid_ent(pTouched) ) return;
       
        check_cvars();
        new Class2[32];
        entity_get_string(pTouched, EV_SZ_classname, Class2, 31);
        if(!equal(Class2,"player") || knifeammo[pTouched] >= get_cvar_num("amx_maxknifeammo")) return;

        if((knifeammo[pTouched] + holdammo[owner]) > get_cvar_num("amx_maxknifeammo")) {
            holdammo[owner] -= get_cvar_num("amx_maxknifeammo") - knifeammo[pTouched];
            knifeammo[pTouched] = get_cvar_num("amx_maxknifeammo");
            emit_sound(pToucher, CHAN_ITEM, "weapons/knife_deploy1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
        }
        else {
            knifeammo[pTouched] += holdammo[owner];
            emit_sound(pToucher, CHAN_ITEM, "weapons/knife_deploy1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
            remove_entity(pToucher);
        }
        client_print(pTouched, print_center, "В наличии: %i ножей",knifeammo[pTouched]);
    }

    else if(equal(Classname,"throwing_knife")) {
        check_cvars();
        if(is_user_alive(pTouched)) {
            new movetype = entity_get_int(pToucher, EV_INT_movetype);
            if(movetype == 0 && knifeammo[pTouched] < get_cvar_num("amx_maxknifeammo")) {
                if(knifeammo[pTouched] < get_cvar_num("amx_maxknifeammo")) knifeammo[pTouched] += 1;
                client_print(pTouched,print_center,"В наличии: %i ножей",knifeammo[pTouched]);
                emit_sound(pToucher, CHAN_ITEM, "weapons/knife_deploy1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
                remove_entity(pToucher);
            }
            else if (movetype != 0) {
                if(owner == pTouched) return;

                remove_entity(pToucher);

                if(get_cvar_num("mp_friendlyfire") == 0 && get_user_team(pTouched) == get_user_team(owner)) return;

                new pTdead[33];
                entity_set_float(pTouched, EV_FL_dmg_take, get_cvar_num("amx_knifedmg") * 1.0);

                if((get_user_health(pTouched) - get_cvar_num("amx_knifedmg")) <= 0) {
                    pTdead[pTouched] = 1;
                }
                else {
                    set_user_health(pTouched, get_user_health(pTouched) - get_cvar_num("amx_knifedmg"));
                }

                if(get_user_team(pTouched) == get_user_team(owner)) {
                    new name[33];
                    get_user_name(owner, name, charsmax(name));
                    client_print_color(0, 0, "^3[^4Knife^3] ^4%s ^1атаковал товарища^4! ^1Потому что ^3Гнида^1!", name);
                }

                emit_sound(pTouched, CHAN_ITEM, "weapons/knife_hit4.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);

                if(pTdead[pTouched]) {
                    if(get_user_team(pTouched) == get_user_team(owner)) {
                        set_user_frags(owner, get_user_frags(owner) - 1);
                        client_print(owner,print_center,"You killed a teammate");
                    }
                    else {
                        set_user_frags(owner, get_user_frags(owner) + 1);
                    }

                    new gmsgScoreInfo = get_user_msgid("ScoreInfo");
                    new gmsgDeathMsg = get_user_msgid("DeathMsg");

                    set_msg_block(gmsgDeathMsg,BLOCK_ONCE);
                    set_msg_block(gmsgScoreInfo,BLOCK_ONCE);
                    user_kill(pTouched,1);

                    message_begin(MSG_ALL,gmsgScoreInfo);
                    write_byte(owner);
                    write_short(get_user_frags(owner));
                    write_short(get_user_deaths(owner));
                    write_short(0);
                    write_short(get_user_team(owner));
                    message_end();

                    message_begin(MSG_ALL,gmsgScoreInfo);
                    write_byte(pTouched);
                    write_short(get_user_frags(pTouched));
                    write_short(get_user_deaths(pTouched));
                    write_short(0);
                    write_short(get_user_team(pTouched));
                    message_end();

                    message_begin(MSG_ALL,gmsgDeathMsg,{0,0,0},0);
                    write_byte(owner);
                    write_byte(pTouched);
                    write_byte(0);
                    write_string("knife");
                    message_end();

                    new tknifelog[16]
                    if (get_cvar_num("amx_tknifelog")) tknifelog = "throwing_knife";
                    else tknifelog = "knife";

                    new namea[32], authida[35], teama[32];
                    new namev[32], authidv[35], teamv[32];
                    get_user_name(owner,        namea,         charsmax(namea));
                    get_user_authid(owner,        authida,     charsmax(authida));
                    get_user_team(owner,        teama,         charsmax(teama));
                    get_user_name(pTouched,        namev,         charsmax(namev));
                    get_user_authid(pTouched,    authidv,     charsmax(authidv));
                    get_user_team(pTouched,        teamv,         charsmax(teamv));

                    log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"", namea, get_user_userid(owner), authida, teama, namev, get_user_userid(pTouched), authidv, teamv, tknifelog);
                }
            }
        }
        else {
            entity_set_int(pToucher, EV_INT_movetype, 0);
            emit_sound(pToucher, CHAN_ITEM, "weapons/knife_hitwall1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
        }
    }
}

public command_knife(id) {

    if(!is_user_alive(id) || !get_cvar_num("amx_throwknives") || roundfreeze) return PLUGIN_HANDLED;

    if(get_cvar_num("amx_knifeautoswitch")) {
        knifeout[id] = true;
        client_cmd(id,"weapon_knife");
    }

    if(!knifeammo[id]) client_print(id,print_center,"У Вас закончились ножи", knifeammo[id]);
    if(!knifeout[id] || !knifeammo[id]) return PLUGIN_HANDLED;

    if(tossdelay[id] > get_gametime() - 0.5) return PLUGIN_HANDLED;
    else tossdelay[id] = get_gametime();

    knifeammo[id]--;

    if (knifeammo[id] == 1) {
        client_print(id, print_center, "В наличии: %i нож",knifeammo[id]);
    }
    else {
        client_print(id, print_center, "В наличии: %i ножей",knifeammo[id]);
    }

    new Float: Origin[3], Float: Velocity[3], Float: vAngle[3], Ent;

    entity_get_vector(id, EV_VEC_origin , Origin);
    entity_get_vector(id, EV_VEC_v_angle, vAngle);

    Ent = create_entity("info_target");

    if (!Ent) return PLUGIN_HANDLED;

    entity_set_string(Ent, EV_SZ_classname, "throwing_knife");
    entity_set_model(Ent, g_szModel[MODELS_KNIFE]);

    new Float:MinBox[3] = {-1.0, -7.0, -1.0};
    new Float:MaxBox[3] = {1.0, 7.0, 1.0};
    entity_set_vector(Ent, EV_VEC_mins, MinBox);
    entity_set_vector(Ent, EV_VEC_maxs, MaxBox);

    vAngle[0] -= 90;

    entity_set_origin(Ent, Origin);
    entity_set_vector(Ent, EV_VEC_angles, vAngle);

    entity_set_int(Ent, EV_INT_effects, 2);
    entity_set_int(Ent, EV_INT_solid, 1);
    entity_set_int(Ent, EV_INT_movetype, 6);
    entity_set_edict(Ent, EV_ENT_owner, id);

    VelocityByAim(id, get_cvar_num("amx_knifetossforce") , Velocity);
    entity_set_vector(Ent, EV_VEC_velocity ,Velocity);
   
    return PLUGIN_HANDLED;
}

public admin_tknife(id,level,cid){

    new Access[16];
    get_cvar_string("amx_flagaccess", Access, charsmax(Access))
    if(!(checkAccess(id, Access))) {
        client_print_color(id, 0, "^3[^4Knife^3] ^3У Вас нет доступа к данной команде^4!");
        return PLUGIN_HANDLED;
    }

    new authid[35],name[32];
    get_user_authid(id,authid,34);
    get_user_name(id,name,31);

    if(get_cvar_num("amx_throwknives") == 0){
        set_cvar_num("amx_throwknives", 1);
        client_print_color(0, 0,"^3[^4Knife^3] ^1Администратор ^4Включил ^1метательные ножи");
        console_print(id, "[Knife] Вы Включили метание ножей");
        log_amx("Админ: ^"%s<%d><%s>^" Включил метательные ножи", name, get_user_userid(id), authid);
    }
    else {
        set_cvar_num("amx_throwknives", 0);
        client_print_color(0, 0,"^3[^4Knife^3] ^1Администратор ^4ВЫключил ^1метательные ножи");
        console_print(id,"[Knife] Вы Выключили метание ножей");
        log_amx("Админ: ^"%s<%d><%s>^" Выключил метательные ножи", name, get_user_userid(id), authid);
    }
    return PLUGIN_HANDLED;
}

LOAD_CONFIGURATION()
{
    new szCfgDir[128], szCfgFile[128];
    get_localinfo("amxx_configsdir", szCfgDir, charsmax(szCfgDir));
    formatex(szCfgFile, charsmax(szCfgFile), "%s/SevCorp/ThrowingKnives.cfg", szCfgDir);
    if(!file_exists(szCfgFile)) {
        new szError[100];
        formatex(szError, charsmax(szError), "Отсутсвтует: %s!", szCfgFile);
        set_fail_state(szError);
        return;
    }
    new szBuffer[128], szKey[64], szValue[960];
    new iFile = fopen(szCfgFile, "rt");
    while(iFile && !feof(iFile)) {
        fgets(iFile, szBuffer, charsmax(szBuffer));
        replace(szBuffer, charsmax(szBuffer), "^n", "");
        if(!szBuffer[0] || szBuffer[0] == ';' || szBuffer[0] == '{' || szBuffer[0] == '}' || szBuffer[0] == '#' || szBuffer[0] == '[' || szBuffer[0] == ']') continue;
        parse(szBuffer, szKey, charsmax(szKey), szValue, charsmax(szValue));
        trim(szKey);
        trim(szValue);
        if(equal(szKey,    "MODELS_KNIFE"))    formatex(g_szModel[MODELS_KNIFE],    charsmax(g_szModel[]), szValue);
    }
    fclose(iFile);
    PRECACHE_MODELS();
}

PRECACHE_MODELS()
{
    new i, szBuffer[64];
    for(i = 0; i < sizeof(g_szModel); i++) {
        formatex(szBuffer, charsmax(szBuffer), "%s", g_szModel[i]);
        engfunc(EngFunc_PrecacheModel, szBuffer);
    }
}

checkAccess(id, const flags[]) {
    return (get_user_flags(id) & read_flags(flags));
}
Назад
Сверху