Русское сообщество по скриптингу

Galil со 2 раунда vipmenu  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Galil со 2 раунда vipmenu  [Решено]

Сообщение M0Nk » 25 май 2018, 00:06

Привет ребят что и в каком месте изменить чтобы Galil оружие было доступно с 2 раунда как и фамас но авп так и осталось с 4 раунда

Можно кваром изменить pCvar [AWPGalilRND]= register_cvar("heavy_weapons_rnd", "4"); Но тогда и авп будет со 2 раунда .


re_vipsystem:

Код: Выделить всё
/*
    pUzzlik created by http://www.neugomon.ru
    Original code: neygomon
*/

#include <amxmodx>
#include <reapi>

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
#endif    

/*    ########### Настройка плагина ############    */
#define ACCESS_FLAG    ADMIN_LEVEL_H    //    Флаги доступа к вип системе, вип меню, выдача амуниции и др.

/*    ***** Настройка функционала плагина. Для откл. закоментируйте строку *****    */
//#define SHOW_DAMAGER    //    Вкл/выкл дамагер для випов
#define HP_ADD            //    Вкл/выкл прибавление ХП для випов (Вампирка)
//#define ADMIN_LOADER    //    Совместимость с Admin Loader от неугомона (Вы должны зарегистрироваться, чтобы видеть ссылки.)
//#define SAY_WEAPONS        //    Позволяет включить чат команды "/ak47", "/m4a1", "/famas", "/awp", "/b51"
#define AUTO_MENU        //    Автоматически открывать в начале рануда Вип меню, включения происходит с WEAPONSRND раунда, по ум. отключено
#define VIP_SHOW_INFO    //    Оповещение при заходе вип игрока на сервер
#define VIP_TAB            //    Вип в табе

#define GIVE_PISTOL        //    Выдавать пистолет на спавне
#define GIVE_HEGRENADE    //    Выдавать взрывную гранату на спавне
#define GIVE_FlASHBANG    //    Выдавать две световые гранаты на спавне
#define GIVE_SMOKE        //    Выдавать дымовую гранату на спавне
#define GIVE_ARMOR        //    Выдавать броню и шлем на спавне
#define GIVE_DEFUSEKIT    //    Выдавать набор сапёра
/*    **** Конец настройки ****    */

#define VIPMENU        1    //    C какого раунда можно открыть вип меню, для откл. закоментируйте строку (Для тех у кого есть разминка перед основными раундами)
#define WEAPONSRND    2    //    C какого раунда доступно оружие
#define AWPM249RND    4    //    С какого раунда доступны AWP и пулемет

#if defined HP_ADD
/*        Настройка прибавления хп для випов        */
    //#define HP_MAP_BLOCK                    //    Отключать вампирку на картах BLOCK_MAPS
    #define HP_ADD_ACCESS    ADMIN_LEVEL_H    //    С каким флагом доступена вампирка
    #define HP_OFF            1                //    C какого раунда включать прибавление ХП (0 - откл. функцию)
    #define HP_MAX            120.0            //    макс. кол-во HP
    #define HP_BODY            15.0            //    за убийство в тело
    #define HP_HS            25.0            //    за убийство в голову
#endif

#if defined SHOW_DAMAGER
/*    Настройка дамагера    */
    //#define DMG_MAP_BLOCK                    //    Отключать дамагер на картах BLOCK_MAPS
    #define DAMAGER_ACCESS    ADMIN_LEVEL_H    //    С каким флагом доступен дамагер
    //#define DAMAGER_OFF                    //    Возможность откл. дамагер в вип меню
#endif

#if defined VIP_SHOW_INFO
    #define CONNECTED_SOUND    "misc/msfkcntc.wav"    //    Дополненине к VIP_SHOW_INFO, звук при заходе вип игрока на сервер, по ум. отключено
#endif

#define PREFIX        "^1[^4V.I.P^1]"    //    Тег чата
#define NAME_SERVER    "Masofke.eu"        //    Название сервера в вип меню, макс. размерность массива 47 байт.

#define BLOCK_MAPS    "awp_", "aim_", "fy_", "35hp", "$2000$"    //    Блокируемые карты
/*    ########### Конец настройки плагина #############    */

#if !defined MAX_NAME_LENGTH
    #define MAX_NAME_LENGTH 32
#endif

#define IsUserVip(%1) (get_user_flags(%1) & ACCESS_FLAG)
#define MenuKey (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)

#pragma semicolon 1

#if defined ADMIN_LOADER
    native admin_expired(index);
#endif

new iPistol[MAX_CLIENTS+1], bool:g_bUseWeapon[MAX_CLIENTS+1];
new HookChain:HookPlayer_Spawn, HookChain:HookPlayer_Killed, HookChain:HookPlayer_TakeDamage;
new g_iRound, bool:g_bMapsBlock;

#if defined DAMAGER_OFF
    new bool:g_bUseDamager[MAX_CLIENTS+1]; 
#endif
#if defined VIP_TAB
    new Msg_ScoreAttrib;
#endif
#if defined HP_ADD
    new g_iSyncMsgAddHP;
#endif
#if defined SHOW_DAMAGER
    new g_iSyncMsgDamage;
#endif

#if defined CONNECTED_SOUND
public plugin_precache()
    precache_sound(CONNECTED_SOUND);
#endif

public plugin_init() {
    register_plugin("[ReAPI] VIP System", "1.3.1", "pUzzlik");

    register_event("TextMsg", "evNewRound", "a", "2=#Game_will_restart_in", "2=#Game_Commencing");
    register_event("HLTV", "evRoundStart", "a", "1=0", "2=0");

    HookPlayer_Spawn = RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true);
    EnableHookChain(HookPlayer_Spawn);
    #if defined HP_ADD
        HookPlayer_Killed = RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", true);
        EnableHookChain(HookPlayer_Killed);
        g_iSyncMsgAddHP = CreateHudSyncObj();
    #endif
    #if defined SHOW_DAMAGER
        HookPlayer_TakeDamage = RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", true);
        EnableHookChain(HookPlayer_TakeDamage);
        g_iSyncMsgDamage = CreateHudSyncObj();
    #endif

    register_clcmd("weaponmenu", "ShowMenu");
    register_clcmd("say /vm", "ShowMenu");
    register_clcmd("say_team /vm", "ShowMenu");

    #if defined SAY_WEAPONS
        register_clcmd("say", "hook_say");
        register_clcmd("say_team", "hook_say");
    #endif

    register_menucmd(register_menuid("Vip Menu"), MenuKey, "MenuHandler");

    #if defined VIP_TAB
        Msg_ScoreAttrib = get_user_msgid("ScoreAttrib");
    #endif
}

public plugin_cfg() {
    new map[32]; rh_get_mapname(map, charsmax(map));
    new BlockMap[][] = { BLOCK_MAPS };
    for(new i; i < sizeof BlockMap; i++)
        if(containi(map, BlockMap[i]) != -1) {
            DisableHookChain(HookPlayer_Spawn);
            #if defined HP_MAP_BLOCK
                DisableHookChain(HookPlayer_Killed);
            #endif
            #if defined DMG_MAP_BLOCK
                DisableHookChain(HookPlayer_TakeDamage);
            #endif
            g_bMapsBlock = true;
        }
}

public evNewRound() g_iRound = 0;

public evRoundStart() {
    arrayset(g_bUseWeapon, false, sizeof(g_bUseWeapon)); g_iRound++;
}

public client_putinserver(id) {
    if(IsUserVip(id)) {
        #if defined DAMAGER_OFF
            if(id > 0 || id < 33) {
                new sUserInfo[16]; get_user_info(id, "_dmg", sUserInfo, charsmax(sUserInfo));
                if(sUserInfo[0] && equal(sUserInfo, "off")) g_bUseDamager[id] = false;
                else g_bUseDamager[id] = true;
            }
        #endif
        #if defined VIP_SHOW_INFO
            new name[MAX_NAME_LENGTH]; get_entvar(id, var_netname, name, charsmax(name));
            new players[MAX_CLIENTS], num; get_players(players, num, "ch");

            for(new i; i < num ; i++) {
                client_print_color(players[i], -3, "%s ^1На сервер зашёл ^3VIP ^1клиент ^4%s", PREFIX, name);

                #if defined CONNECTED_SOUND
                    client_cmd(players[i], "spk %s", CONNECTED_SOUND);
                #endif
            }
        #endif
    }
}

#if defined HP_ADD
public CBasePlayer_Killed(const pevVictim, pevAttacker) {
    #if HP_OFF > 0
        if(HP_OFF >= g_iRound) return;
    #endif
    if(    is_user_connected(pevAttacker)
        && get_user_flags(pevAttacker) & HP_ADD_ACCESS
        
&& pevVictim != pevAttacker)
    {
        static Float:attackerHp, Float:addHp;

        attackerHp = Float:get_entvar(pevAttacker, var_health);
        addHp = get_member(pevVictim, m_bHeadshotKilled) ? HP_HS : HP_BODY;

        attackerHp += addHp;
        set_entvar(pevAttacker, var_health, attackerHp > HP_MAX ? HP_MAX : attackerHp);

        if(attackerHp >= HP_MAX) return;

        set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1);
        ShowSyncHudMsg(pevAttacker, g_iSyncMsgAddHP, "Added +%d HP", floatround(addHp));
    }
}
#endif

#if defined SHOW_DAMAGER
public CBasePlayer_TakeDamage(const pevVictim, pevInflictor, pevAttacker, Float:damage, bitsDamageType) {
    #if defined DAMAGER_OFF
        if(pevAttacker < 1 || pevAttacker > 32 || !g_bUseDamager[pevAttacker]) return;
    #endif
    if(    is_user_connected(pevAttacker)
        && get_user_flags(pevAttacker) & DAMAGER_ACCESS
        
&& rg_is_player_can_takedamage(pevVictim, pevAttacker))
    {    
        set_hudmessage
(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1);
        ShowSyncHudMsg(pevAttacker, g_iSyncMsgDamage, "%d", floatround(damage));
    }
}
#endif

public CBasePlayer_Spawn(const id) {
    if(is_bonus_spawn(id)) {
        #if defined GIVE_PISTOL
            switch(iPistol[id]) {
                case 0: { rg_give_item(id, "weapon_deagle", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_DEAGLE, 35); }
                case 1: { rg_give_item(id, "weapon_usp", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_USP, 100); }
                case 2: { rg_give_item(id, "weapon_glock18", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_GLOCK18, 120); }
            }
        #endif
        #if defined GIVE_HEGRENADE
            rg_give_item(id, "weapon_hegrenade", GT_APPEND);
        #endif
        #if defined GIVE_FlASHBANG
            rg_give_item(id, "weapon_flashbang", GT_APPEND);
            rg_give_item(id, "weapon_flashbang", GT_APPEND);
        #endif
        #if defined GIVE_SMOKE
            rg_give_item(id, "weapon_smokegrenade", GT_APPEND);
        #endif
        #if defined GIVE_ARMOR
            rg_set_user_armor(id, 100, ARMOR_VESTHELM);
        #endif
        #if defined GIVE_DEFUSEKIT
            new TeamName:team = get_member(id, m_iTeam);
            if(team == TEAM_CT) rg_give_defusekit (id, true);
        #endif    
    
        
#if defined VIP_TAB
            message_begin(MSG_BROADCAST, Msg_ScoreAttrib);
            write_byte(id);
            write_byte(4);
            message_end();
        #endif
    
        
#if defined AUTO_MENU
            if(g_iRound >= WEAPONSRND) ShowMenu(id);
        #endif
    }
}

#if defined SAY_WEAPONS
public hook_say(id) {
    static szMsg[32]; read_args(szMsg, charsmax(szMsg)); remove_quotes(szMsg);
    static const szChoosedWP[][] = { "/ak47", "/m4a1", "/famas", "/awp", "/b51" };

    for(new a; a < sizeof szChoosedWP; a++) {
        if(!strcmp(szMsg, szChoosedWP[a])) {
            if(!is_allow_use(id)) break;
            return MenuHandler(id, a);
        }
    }
    return HC_CONTINUE;
}
#endif

public ShowMenu(id) {
    if(!is_allow_use(id)) return HC_CONTINUE;

    static szMenu[512], szNameServer[48], iLen, key, name[MAX_NAME_LENGTH];
    get_entvar(id, var_netname, name, charsmax(name));
    formatex(szNameServer, charsmax(szNameServer), "%s", NAME_SERVER);

    key = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5;
    iLen = formatex(szMenu, charsmax(szMenu), "\rVIP меню \w[\d%s\w]^n\wПривет, [\y%s\w]^n", szNameServer, name);

    #if defined ADMIN_LOADER
        new exp = admin_expired(id);
        if(exp > 0) {
            new sys = get_systime();
            if((exp - sys) / 86400 > 0)    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\yВипки осталось: \w%d дн.!^n^n", (exp - sys) / 86400);
            else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\yВипки осталось: \w1 день!^n^n");
        }
        else if(exp == 0) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\yДействие вип: \wне ограничено!^n^n");
    #else
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
    #endif

    if(g_iRound < WEAPONSRND)
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \dВзять AK47 \r[%d раунд]^n\r2. \dВзять M4A1 \r[%d раунд]^n\r3. \dВзять Famas \r[%d раунд]^n", WEAPONSRND, WEAPONSRND, WEAPONSRND);
    else if(g_bUseWeapon[id])
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \dВзять AK47^n\r2. \dВзять M4A1^n\r3. \dВзять Famas^n");
    else
        iLen 
+= formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wВзять AK47^n\r2. \wВзять M4A1^n\r3. \wВзять Famas^n");
        
    if
(g_iRound < AWPM249RND) 
        iLen 
+= formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \dВзять AWP \r[%d раунд]^n\r5. \dВзять Пулемет \r[%d раунд]^n^n", AWPM249RND, AWPM249RND);
    else if(g_bUseWeapon[id]) 
        iLen 
+= formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \dВзять AWP^n\r5. \dВзять Пулемет^n^n");
    else
        iLen 
+= formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wВзять AWP^n\r5. \wВзять Пулемет^n^n");

    #if defined GIVE_PISTOL
        key |= MENU_KEY_6;
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6. \yПистолет при спавне \d[\w%s\d]^n", iPistol[id] == 0 ? "Deagle" : iPistol[id] == 1 ? "USP" : "Glock");
        #if defined DAMAGER_OFF
            key |= MENU_KEY_7;
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r7. \yДамагер \d[\w%s\d]^n^n", g_bUseDamager[id] ? "ON" : "OFF");
        #endif
    #endif 
    #if !defined GIVE_PISTOL
        #if defined DAMAGER_OFF
            key |= MENU_KEY_6;
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6. \yДамагер \d[\w%s\d]^n^n", g_bUseDamager[id] ? "ON" : "OFF");
        #endif
    #endif

    formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \rВыход");

    set_member(id, m_iMenu, Menu_OFF);
    return show_menu(id, key, szMenu, -1, "Vip Menu");
}

public MenuHandler(id, key) {
    if(key <= 4) {
        if(g_bUseWeapon[id]) return client_print_color(id, 0, "%s Вы ^3уже брали ^1оружие в этом раунде!", PREFIX);
        if(g_iRound < WEAPONSRND) return client_print_color(id, 0, "%s Этот поединок на ^3пистолетах^1!", PREFIX);
        if(<= key <= 4)
            if(g_iRound < AWPM249RND) return client_print_color(id, 0, "%s Оружие доступно только с^3 %d ^1раунда!", PREFIX, AWPM249RND);

        g_bUseWeapon[id] = true;
    }

    static const szChoosedBP[] = { 90, 90, 90, 30, 250 };
    static const szChoosedWP[][] = { "weapon_ak47", "weapon_m4a1", "weapon_famas", "weapon_awp", "weapon_m249" };

    #if defined GIVE_PISTOL
        switch(key) {
            case 5: {
                iPistol[id] >= 2 ? (iPistol[id] = 0) : iPistol[id]++;
                ShowMenu(id);
            }
            #if defined DAMAGER_OFF
                case 6: ShowDamage(id);
            #endif
        }
    #endif 
    #if !defined GIVE_PISTOL
        #if defined DAMAGER_OFF
            switch(key) {
                case 5: ShowDamage(id);
            }
        #endif
    #endif

    if(key > 4) return HC_CONTINUE;
    return rg_give_items(id, szChoosedWP[key], szChoosedBP[key]);
}

#if defined DAMAGER_OFF
public ShowDamage(id) {
    g_bUseDamager[id] = !g_bUseDamager[id];
    if(g_bUseDamager[id]) client_cmd(id, "setinfo _dmg on");
    else client_cmd(id, "setinfo _dmg off");

    client_print_color(id, 0, "%s Вы ^3%s ^1дамагер.", PREFIX, g_bUseDamager[id] ? "включили" : "отключили");
}
#endif

stock rg_give_items(id,currWeaponName[],ammoAmount) {
    rg_give_item(id, currWeaponName, GT_DROP_AND_REPLACE);
    rg_set_user_bpammo(id, rg_get_weapon_info(currWeaponName, WI_ID), ammoAmount);
    return HC_CONTINUE;
}

bool:is_bonus_spawn(id) {
    if(!is_user_alive(id)) return false;
    if(!IsUserVip(id)) return false;
    return true;
}

bool:is_allow_use(id) {
    if(!is_user_alive(id)) {
        client_print_color(id, -2, "%s Для использования данной команды вы должны быть ^3живы^1!", PREFIX);
        return false;
    }
    if(!IsUserVip(id)) {
        client_print_color(id, 0, "%s Только ^4VIP-игрок ^1может пользоваться этой командой!", PREFIX);
        return false;
    }
    if(g_bMapsBlock) {
        client_print_color(id, 0, "%s На данной карте брать оружие ^3запрещено^1!", PREFIX);
        return false;
    }
    #if defined VIPMENU
        if(VIPMENU > g_iRound) {
            client_print_color(id, -2, "%s Разминочный раунд. ^3Запрещено ^1пользоваться командой!", PREFIX);
            return false;
        }
    #endif
    return true;
}




re_vipmenu:

Код: Выделить всё
#include <amxmodx>
#include <reapi>
#include <vip_system>

//#define ADMIN_LOADER    //    Compatible with Admin Loader from neugomon (Вы должны зарегистрироваться, чтобы видеть ссылки.)

#pragma semicolon 1
new const MenuKey = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<9);

enum _:cvars {
    AUTO_MENU,
    GIVE_ITEMS,
    WEAPONSRND,
    AWPGalilRND,
    SHOP,
    SHOP_RND
};

new iPistol[MAX_CLIENTS+1], bool:g_bUsePistol, bool:g_bUseWeapon[MAX_CLIENTS+1];

static sItems[10];
new pCvar[cvars], pCvarCfg[cvars];
new g_iRound;

public plugin_init() {
    register_plugin("[ReVIP] Menu", VIP_SYSTEM_VERSION, "pUzzlik");
    register_dictionary("vip_system.txt");

    //    auto open vip menu 1 - on, 0 - off
    pCvar[AUTO_MENU] = register_cvar("open_menu_spawn", "1");
    /*
        flags items
        a - armor
        d - defuse
        f - flashbang
        h - hegranade
        p - pistol
        s - smoke
    */
    pCvar[GIVE_ITEMS] = register_cvar("give_items", "adfhps");
    //    which is available with a round primary weapons
    pCvar[WEAPONSRND] = register_cvar("primary_weapons_rnd", "2");
    //    which is available with a round primary weapons
    pCvar[AWPGalilRND] = register_cvar("heavy_weapons_rnd", "4");
    //    if you want to use a custom shop, (1 - enable)
    pCvar[SHOP] = register_cvar("use_custom_shop", "0");
    //    with round displayed shop menu
    pCvar[SHOP_RND] = register_cvar("custom_shop_block_rnd", "2");

    register_clcmd("vipmenu", "ShowMenu");
    register_clcmd("say /vm", "ShowMenu");
    register_clcmd("say_team /vm", "ShowMenu");

    register_clcmd("say", "hook_say");
    register_clcmd("say_team", "hook_say");

    register_menucmd(register_menuid("Vip Menu"), MenuKey, "MenuHandler");
}

public plugin_cfg() {
    get_pcvar_string(pCvar[GIVE_ITEMS],sItems,charsmax(sItems)); trim(sItems);
    pCvarCfg[WEAPONSRND] = get_pcvar_num(pCvar[WEAPONSRND]);
    pCvarCfg[AWPGalilRND] = get_pcvar_num(pCvar[AWPGalilRND]);
    pCvarCfg[AUTO_MENU] = get_pcvar_num(pCvar[AUTO_MENU]);
    pCvarCfg[SHOP] = get_pcvar_num(pCvar[SHOP]);
    pCvarCfg[SHOP_RND] = get_pcvar_num(pCvar[SHOP_RND]);
}

public vip_core_restart_round(round) {
    arrayset(g_bUseWeapon, false, sizeof(g_bUseWeapon));
    g_iRound = round;
}

public vip_core_player_spawn(const id) {
    if(core_is_bonus_spawn(id)) {
        for(new i, str_len = strlen(sItems); i < str_len ; i++) {
            switch(sItems[i]){
                case 'a': rg_set_user_armor(id, 100, ARMOR_VESTHELM);
                case 'd': {
                    new TeamName:team = get_member(id, m_iTeam);
                    if(team == TEAM_CT) rg_give_defusekit (id, true);
                }
                case 'f': {
                    rg_give_item(id, "weapon_flashbang", GT_APPEND);
                    rg_give_item(id, "weapon_flashbang", GT_APPEND);
                }
                case 'h': rg_give_item(id, "weapon_hegrenade", GT_APPEND);
                case 'p': {
                    switch(iPistol[id]) {
                        case 0: { rg_give_item(id, "weapon_deagle", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_DEAGLE, 35); }
                        case 1: { rg_give_item(id, "weapon_usp", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_USP, 100); }
                        case 2: { rg_give_item(id, "weapon_glock18", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_GLOCK18, 120); }
                    }
                    g_bUsePistol = true;
                }
                case 's': rg_give_item(id, "weapon_smokegrenade", GT_APPEND);
            }
        }

        if(pCvarCfg[AUTO_MENU] && g_iRound >= pCvarCfg[WEAPONSRND]) ShowMenu(id);
    }
}

public hook_say(id) {
    static szMsg[32]; read_args(szMsg, charsmax(szMsg)); remove_quotes(szMsg);
    static const szChoosedWP[][] = { "/ak47", "/m4a1", "/famas", "/awp", "/galil" };

    for(new a; a < sizeof szChoosedWP; a++) {
        if(!strcmp(szMsg, szChoosedWP[a])) {
            if(!core_is_allow_use(id)) break;
            return MenuHandler(id, a);
        }
    }
    return PLUGIN_CONTINUE;
}

public ShowMenu(id) {
    if(!core_is_allow_use(id)) return PLUGIN_HANDLED;

    new szMenu[512], key; key = MENU_KEY_0;
    new iLen, szName[16]; get_entvar(id, var_netname, szName, charsmax(szName));
    
    iLen 
= formatex(szMenu, charsmax(szMenu), "\r%L \w[\d%L\w]^n\w%L^n", LANG_SERVER, "MENU_NAME", LANG_SERVER, "NAME_SERVER", LANG_SERVER, "WELCOME", szName);

    #if defined ADMIN_LOADER
        new exp = admin_expired(id);
        if(exp > 0) {
            new sys = get_systime();
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L^n^n", LANG_SERVER, "VIP_EXPIRED", LANG_SERVER, ((exp - sys) / 86400 > 0) ? "VIP_DAYS" : "VIP_DAY", (exp - sys) / 86400);
        } else if(exp == 0) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L^n^n", LANG_SERVER, "VIP_EXPIRED_PRMANENT");
    #else
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
    #endif

    new szUseWpn[2]; formatex(szUseWpn, charsmax(szUseWpn), "%s", g_bUseWeapon[id] ? "d" : "w");

    if(g_iRound < pCvarCfg[WEAPONSRND])
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \d%L \r%L^n\r2. \d%L \r%L^n\r3. \d%L \r%L^n", LANG_SERVER, "AK47", LANG_SERVER, "ROUND", pCvarCfg[WEAPONSRND], LANG_SERVER, "M4A1", LANG_SERVER, "ROUND", pCvarCfg[WEAPONSRND], LANG_SERVER, "FAMAS", LANG_SERVER, "ROUND", pCvarCfg[WEAPONSRND]);
    else {
        key |= MENU_KEY_1|MENU_KEY_2|MENU_KEY_3;
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \%s%L^n\r2. \%s%L^n\r3. \%s%L^n", szUseWpn, LANG_SERVER, "AK47", szUseWpn, LANG_SERVER, "M4A1", szUseWpn, LANG_SERVER, "FAMAS");
    }

    if(g_iRound < pCvarCfg[AWPGalilRND])
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \d%L \r%L^n\r5. \d%L \r%L^n^n", LANG_SERVER, "AWP", LANG_SERVER, "ROUND", pCvarCfg[AWPGalilRND], LANG_SERVER, "Galil", LANG_SERVER, "ROUND", pCvarCfg[AWPGalilRND]);
    else {
        key |= MENU_KEY_4|MENU_KEY_5;
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \%s%L^n\r5. \%s%L^n^n", szUseWpn, LANG_SERVER, "AWP", szUseWpn, LANG_SERVER, "Galil");
    }

    if(g_bUsePistol) {
        key |= MENU_KEY_6;
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6. %L \r[\w%s\r]^n", LANG_SERVER, "PISTOL", iPistol[id] == 0 ? "Deagle" : iPistol[id] == 1 ? "USP" : "Glock");
    }
    formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r0. %L", LANG_SERVER, "EXIT");

    set_member(id, m_iMenu, Menu_OFF);
    return show_menu(id, key, szMenu, -1, "Vip Menu");
}

public MenuHandler(id, key) {
    if(key <= 4) {
        /***    Защита от дурака    ***/
        if(g_iRound < pCvarCfg[WEAPONSRND]) return client_print_color(id, 0, "%L %L", LANG_SERVER, "CHAT_TAG", LANG_SERVER, "PISTOLS_ROUND");
        /***    End        ***/
        if(g_bUseWeapon[id]) return client_print_color(id, 0, "%L %L", LANG_SERVER, "CHAT_TAG", LANG_SERVER, "ALREDY_WEAPON_RND");
        g_bUseWeapon[id] = true;
        
        static const szChoosedBP
[] = { 90, 90, 90, 30, 90 };
        static const szChoosedWP[][] = { "weapon_ak47", "weapon_m4a1", "weapon_famas", "weapon_awp", "weapon_galil" };
        
        return rg_give_items
(id, szChoosedWP[key], szChoosedBP[key]);
    }
    else if (key == 5) GivePistol(id);
    return PLUGIN_HANDLED;
}

public GivePistol(id) {
    iPistol[id] >= 2 ? (iPistol[id] = 0) : iPistol[id]++;
    ShowMenu(id);
    return PLUGIN_HANDLED;
}

stock rg_give_items(id, currWeaponName[], ammoAmount) {
    rg_drop_items_by_slot(id, PRIMARY_WEAPON_SLOT);

    rg_give_item(id, currWeaponName, GT_APPEND);
    rg_set_user_bpammo(id, rg_get_weapon_info(currWeaponName, WI_ID), ammoAmount);

    engclient_cmd(id, currWeaponName);
    return PLUGIN_HANDLED;
}
 



Lang file:

Код: Выделить всё
[en]
CHAT_TAG = ^1[^4VIP Info^1]
VIP_ALIVE = Only for ^3alive ^1players!
BLOCK_MAPS = This menu is not available ^3map^1!
ONLY_VIP = Only for ^4VIP-player^1!
WARMUP_ROUND = Warm-up round. You have no access to that command!
PISTOLS_ROUND = Pistols round. You have no access to that command!
ALREDY_WEAPON_RND = You have already taken the weapon in this round!

MENU_NAME = VIPMENU
NAME_SERVER 
= My test server.
WELCOME = Hey:] [\y%s\w]

VIP_EXPIRED = \yVip expired: \w
VIP_EXPIRED_PRMANENT 
= \yVip expired: \wunlimited!

VIP_DAY = last day!
VIP_DAYS = %d day!

AK47 = AK-47
M4A1 
= M4A1
FAMAS 
= Famas
Galil 
= Galil
AWP 
= AWP
CUSTOM_SHOP 
= Shop
ROUND 
= [%d round]

PISTOL = \yPistol on spawn
EXIT 
= \yExit

CONNECT_INFO 
= Server connect ^3V.I.^1player ^4%s

SHOW_DMG 
= You ^3%^1show damage.
SAY_DMG = This command is ^3disabled ^1on this server!
DMG_ON = enable
DMG_OFF 
= disabled

RS_TAG 
= ^1[^4Reset Score^1]
RESET_SCORE = You have successfully reseted your score!
RESET_BLOCK = Only ^4VIP ^1account can update each round! You will be available through ^3%d round^1.
RESET_BLOCK_VIP 
= Reset will be available through ^3%d round^1.

BLOCK_RND_SHOP 
= The shop is closed. Please wait ^3%^1rounds.
ONLY_VIP_SHOP = You do not have access!

CUSTOM_SHOP_NAME = Shop Golden Weapons
SHOP_NEXT 
= Next
SHOP_BACK 
= Back
SHOP_EXIT 
= Exit

SHOP_BUY_ZONE 
= You must be in a buy zone
WPN_ONLY_VIP 
= Only ^4VIP players^1!

[
ru]
CHAT_TAG = ^1[^4Vip Info^1]
VIP_ALIVE = Для использования данной команды вы должны быть ^3живы^1!
BLOCK_MAPS = На этой карте меню ^3недоступно^1!
ONLY_VIP = Только ^4VIP-игрок ^1может пользоваться этой командой!
WARMUP_ROUND = Разминочный раунд. ^3Запрещено ^1пользоваться командой!
PISTOLS_ROUND = Пистолетный раунд. ^3Нехуй ^1хитрить хД!
ALREDY_WEAPON_RND = Вы ^3уже брали ^1оружие в этом раунде!

MENU_NAME = VIP меню
NAME_SERVER 
= Only-Friends
WELCOME 
= Привет, [\y%s\w]

VIP_EXPIRED = \yВипки осталось: \w%L
VIP_EXPIRED_PRMANENT 
= \yДействие випки: \wнеограниченно!

VIP_DAY = последний день!
VIP_DAYS = %d дн.

AK47 = AK-47
M4A1 
= M4A1 Carabine
FAMAS 
= Famas
AWP 
= AWP
Galil 
= Galil
CUSTOM_SHOP 
= Магазин
ROUND 
= [%d раунда]

PISTOL = \yПистолет при спавне
EXIT 
= \rВыход

CONNECT_INFO 
= На сервер зашёл ^3VIP ^1клиент ^4%s

SHOW_DMG 
= Вы ^3%^1дамагер.
SAY_DMG = Эта команда ^3отключена ^1на этом сервере!
DMG_ON = включили
DMG_OFF 
= отключили

RS_TAG 
= ^1[^4Reset Score^1]
RESET_SCORE = Ваш счет ^3успешно ^1обнулен!
RESET_BLOCK = Только ^4VIP ^1может обнулить счет каждий раунд! Вам будет доступно через ^3%d раунд(a)^1.
RESET_BLOCK_VIP 
= Повторное обнуление будет доступно через ^3%d раунд(а)^1.

BLOCK_RND_SHOP 
= Магазин доступен с ^3%d-го ^1раунда.
ONLY_VIP_SHOP = У вас нет прав!

CUSTOM_SHOP_NAME = Shop Golden Weapons
SHOP_NEXT 
= Дальше
SHOP_BACK 
= Назад
SHOP_EXIT 
= Выход

SHOP_BUY_ZONE 
= Вы должны находиться в зоне закупки
WPN_ONLY_VIP 
= Только ^4VIP-игрок ^1может пользоваться этим оружием!

[
ua]
CHAT_TAG = ^1[^4Vip Info^1]
VIP_ALIVE = Для використання даної команди ви повинні бути ^3живі^1!
BLOCK_MAPS = На цій мапі меню ^3недоступне^1!
ONLY_VIP = Тільки ^4VIP-гравець ^1може використовувати цю команду!
WARMUP_ROUND = Розминочний раунд. ^3Не можна ^1користуватись даною командою!
PISTOLS_ROUND = Пістолетний раунд. Нема чого ^4хД^1!
ALREDY_WEAPON_RND = Ви ^3вже брали ^1зброю в цьому раунді!

MENU_NAME = VIP меню
NAME_SERVER 
= Only-Friends
WELCOME 
= Привіт, [\y%s\w]

VIP_EXPIRED = \yВіпки залишилось: \w%L
VIP_EXPIRED_PRMANENT 
= \yДія віпки: \wнеобмежена!

VIP_DAY = останній день!
VIP_DAYS = %d дн.

AK47 = AK-47
M4A1 
= M4A1 Carabine
FAMAS 
= Famas
AWP 
= AWP
GALIL 
= GALIL Para
CUSTOM_SHOP 
= Магазин
ROUND 
= [з %d раунду]

PISTOL = \yОтримати пістолет на спавні
EXIT 
= \rВихід

CONNECT_INFO 
= На сервер зайшов ^3VIP ^1клієнт ^4%s

SHOW_DMG 
= Ви ^3%^1дамагер.
SAY_DMG = Ця команда ^3відключена ^1на цьому сервері!
DMG_ON = включили
DMG_OFF 
= відключили

RS_TAG 
= ^1[^4Reset Score^1]
RESET_SCORE = Ваш рахунок ^3успішно ^1оновлений!
RESET_BLOCK = Тільки ^4VIP ^1може оновлювати рахунок кожний раунд! Вам буде доступно через ^3%d раунд(a)^1.
RESET_BLOCK_VIP 
= Повторне скидання рахунку буде доступно через ^3%d раунд(и)^1.

BLOCK_RND_SHOP 
= Магазин доступний з ^3%d-го ^1раунда.
ONLY_VIP_SHOP = У вас немає прав!

CUSTOM_SHOP_NAME = Shop Golden Weapons
SHOP_NEXT 
= Далі
SHOP_BACK 
= Назад
SHOP_EXIT 
= Вихід

SHOP_BUY_ZONE 
= Ви повинні знаходитись в зоні покупки
WPN_ONLY_VIP 
= Тільки ^4VIP-гравець ^1може використовувати цю зброю!
 



Include:

https://yadi.sk/i/bIeSItWi3WV6dR
Аватара пользователя
M0Nk
 
Сообщения: 3
Зарегистрирован: 18 май 2018, 04:12
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: HTML
CSS

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: 91romeo и гости: 25