Пользователи, просматривающие тему (Пользователей: 0, Гостей: 0)

  1. ThePhoenix

    Регистрация:
    08.03.15
    Сообщения:
    1.524
    Симпатии:
    151
    Пол:
    Мужской
    Telegram:
    ThePhoenix2017
    Skype:
    the.phoenix666
    Всем ку :)

    Нужно изменить под ДМ вип плагин.
    Чтобы меню было доступно с первого раунда + Авп и пулик тоже с первого раунда можно было брать.
    Добавить ограничение,чтобы оружие можно было брать 1 раз в 3 смерти,если такое возможно =)
    И допилить дамагер.

    Сам,что мог выпилил/изменил,далее прошу помощи :)
    Код:
    #include <amxmodx>
    #include <cstrike>
    #include <fakemeta_util>
    #include <hamsandwich>
    #if AMXX_VERSION_NUM < 183
    #include <colorchat>
    #endif   
    
    // #### Конфигурационные defines ####
    #define VIP_ACCESS ADMIN_LEVEL_A            // Флаг доступа VIP (по дефолту флаг "p" ADMIN_LEVEL_D)
    #define CHATTAG "^1[^4VIP^1]^3"         // Префикс перед сообщениями || ^1 - желтый ^3 - цвет команды ^4 - зеленый
    #define VIPROUND 3                            // C какого раунда можно открыть вип меню
    #define AWPM249RND 6                        // С какого раунда доступны AWP и пулемет
    
    #define VIPAUTOGRENADE                        // Давать в начале каждого раунда гранаты
    // #### Конфигурационные defines ####
    
    #define is_user_vip(%0) (get_user_flags(%0) & VIP_ACCESS)
    
    new g_roundCount;
    
    new bool:iUseWeapon[33], bool:bDefuse, bool:g_iBlockBonus;
    
    new const PRIMARY_WEAPONS_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
    new const SECONDARY_WEAPONS_BITSUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE);
    
    new bool:iUserVip[33];
    
    public plugin_init()
    {
        register_plugin("VIPka", "1.34", "neygomon");
       
        register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w");
        register_event("HLTV","eRoundStart","a","1=0","2=0");
    
        if(engfunc(EngFunc_FindEntityByString,FM_NULLENT,"classname","func_bomb_target"))
            bDefuse = true;
           
        RegisterHam(Ham_Spawn, "player", "Player_Spawn", 1);
       
        register_clcmd("say /pv", "CmdMenu");
        register_clcmd("premium_vip", "CmdMenu");
        register_clcmd("say", "hook_say");
        register_clcmd("say_team", "hook_say");
       
        register_menucmd(register_menuid("Vip Menu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5, "handler");
    
    }   
    
    public client_putinserver(id)
    {
        if(!is_user_vip(id)) return;
        static name[32]; get_user_name(id, name, charsmax(name));
        client_print_color(0, 0, "%s ^1На сервер зашёл ^4VIP ^1клиент ^3%s", CHATTAG, name);
    }
       
    public eRestart()
        g_roundCount = 0;
    
    public eRoundStart()
    {
        g_roundCount++;
       
        arrayset(iUseWeapon, false, 33);
    }
    
    public Player_Spawn(id)
    {
        if(g_iBlockBonus || !is_user_alive(id)) return 0;
       
        if(is_user_vip(id)) iUserVip[id] = true;
        else return iUserVip[id] = false;
       
        #if defined VIPAUTOGRENADE
        fm_give_item(id, "weapon_hegrenade");
        fm_give_item(id, "weapon_smokegrenade");
        #endif
    }
    
    public hook_say(id)
    {
        static szMsg[128]; read_args(szMsg, 127); remove_quotes(szMsg);
    
        if(szMsg[0] != '/') return 0;
    
        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;
                if(a > 2 && g_roundCount < AWPM249RND)
                    return client_print_color(id, 0, "%s Данное оружие доступно только с^3 %d ^4раунда!", CHATTAG, AWPM249RND);
                return handler(id, a);
            }
        }
        return 0;
    }   
    
    public CmdMenu(id)
    {
        if(!is_allow_use(id)) return 0;
       
        static szMenu[512], iLen, iKey;
    
        iKey = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3;
        iLen = formatex(szMenu, 511, "\yHTH \w[\r Мини Вип \w]^n^n\y1. \wВзять AK47^n\y2. \wВзять M4A1^n\y3. \wВзять Famas^n");
    
        if(g_roundCount < AWPM249RND)
            iLen += formatex(szMenu[iLen], 511 - iLen, "\y4. \dВзять AWP \r[c %d раунда]^n\y5. \dВзять Пулемет \r[c %d раунда]^n^n", AWPM249RND, AWPM249RND);
        else
        {
            iKey |= MENU_KEY_4|MENU_KEY_5;
            iLen += formatex(szMenu[iLen], 511 - iLen, "\y4. \wВзять AWP^n\y5. \wВзять Пулемет^n^n");
        }
        formatex(szMenu[iLen], 511 - iLen, "\y0. \wВыход");
        set_pdata_int(id, 205, 0);
        return show_menu(id, iKey, szMenu, -1, "Vip Menu");
    }
    
    public handler(id, iKey)
    {
        if(iKey > 4 || iUseWeapon[id]) return 0;
       
        static const szChoosedBP[] = { 90, 90, 90, 30, 250 };
        static const szChoosedWP[][] = { "weapon_ak47", "weapon_m4a1", "weapon_famas", "weapon_awp", "weapon_m249" };
    
        iUseWeapon[id] = true;
    
        return give_item_ex(id, szChoosedWP[iKey], szChoosedBP[iKey], 1);
    }
    
    stock give_item_ex(id,currWeaponName[],ammoAmount,dropFlag=0)
    {
        static    weaponsList[32], weaponName[32], weaponsNum, currWeaponID;       
        currWeaponID = get_weaponid(currWeaponName);
        if(dropFlag)
        {   
            weaponsNum = 0;
            get_user_weapons(id,weaponsList,weaponsNum);
            for (new i;i < weaponsNum;i++)
            {
                if(((1 << currWeaponID) & PRIMARY_WEAPONS_BITSUM && (1 << weaponsList[i]) & PRIMARY_WEAPONS_BITSUM) | ((1 << currWeaponID) & SECONDARY_WEAPONS_BITSUM && (1 << weaponsList[i]) & SECONDARY_WEAPONS_BITSUM))
                {
                    get_weaponname(weaponsList[i],weaponName,charsmax(weaponName));
                    engclient_cmd(id,"drop",weaponName);
                }
            }
        }
        fm_give_item(id,currWeaponName);
        cs_set_user_bpammo(id,currWeaponID,ammoAmount);
        return 1;
    }
    
    bool:is_allow_use(id)
    {
        if(!iUserVip[id])
        {
            client_print_color(id, 0, "%s Только ^4VIP-игрок ^3может пользоваться этой командой!", CHATTAG);
            return false;
        }
        if(!is_user_alive(id))
        {
            client_print_color(id, 0, "%s Для использования данной команды вы должны быть ^4живы^3!", CHATTAG);
            return false;
        }
        if(!g_roundCount)
        {
            client_print_color(id, 0, "%s Разминочный раунд. ^4Запрещено ^3пользоваться командой!", CHATTAG);
            return false;
        }
        if(iUseWeapon[id])
        {
            client_print_color(id, 0, "%s Вы ^3уже брали ^4оружие в этом раунде!", CHATTAG);
            return false;
        }
        if(g_roundCount < VIPROUND)
        {
            client_print_color(id, 0, "%s Оружия доступны только с^3 %d ^4раунда!", CHATTAG, VIPROUND);
            return false;
        }
        return true;
    }
     
  2. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    955
    Симпатии:
    322
    Пол:
    Мужской
    Вырежи счётчик раунда g_roundCount, хукни спавн игрока и добавь счётчик туда и установи лимит :)
     
  3. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.979
    Симпатии:
    943
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    ThePhoenix,
    PHP:
    #include <amxmodx>
    #include <cstrike>
    #include <fakemeta_util>
    #include <hamsandwich>
    #if AMXX_VERSION_NUM < 183
    #include <colorchat>
    #endif

    // #### Конфигурационные defines ####
    #define VIP_ACCESS ADMIN_LEVEL_A            // Флаг доступа VIP (по дефолту флаг "p" ADMIN_LEVEL_D)
    #define CHATTAG "^1[^4VIP^1]^3"         // Префикс перед сообщениями || ^1 - желтый ^3 - цвет команды ^4 - зеленый

    #define VIPAUTOGRENADE                        // Давать в начале каждого раунда гранаты
    // #### Конфигурационные defines ####

    #define is_user_vip(%0) (get_user_flags(%0) & VIP_ACCESS)

    new bool:iUseWeapon[33], bool:g_iBlockBonus;

    new const 
    PRIMARY_WEAPONS_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
    new const 
    SECONDARY_WEAPONS_BITSUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE);

    new 
    bool:iUserVip[33];

    new 
    g_deathcount;

    public 
    plugin_init()
    {
        
    register_plugin("VIPka""1.34""neygomon");

        
    register_event("DeathMsg""DeathCount""a""1>0")
        
    register_event("HLTV","eRoundStart","a","1=0","2=0");
           
        
    RegisterHam(Ham_Spawn"player""Player_Spawn"1);
       
        
    register_clcmd("say /pv""CmdMenu");
        
    register_clcmd("premium_vip""CmdMenu");
        
    register_clcmd("say""hook_say");
        
    register_clcmd("say_team""hook_say");
       
        
    register_menucmd(register_menuid("Vip Menu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5"handler");

    }   

    public 
    DeathCount()
        
    g_deathcount++;

    public 
    client_putinserver(id)
    {
        if(!
    is_user_vip(id)) return;
        static 
    name[32]; get_user_name(idnamecharsmax(name));
        
    client_print_color(00"%s ^1На сервер зашёл ^4VIP ^1клиент ^3%s"CHATTAGname);
    }

    public 
    eRoundStart()
        
    arrayset(iUseWeaponfalse33);

    public 
    Player_Spawn(id)
    {
        if(
    g_iBlockBonus || !is_user_alive(id)) return 0;
       
        if(
    is_user_vip(id)) iUserVip[id] = true;
        else return 
    iUserVip[id] = false;
       
        
    #if defined VIPAUTOGRENADE
        
    fm_give_item(id"weapon_hegrenade");
        
    fm_give_item(id"weapon_smokegrenade");
        
    #endif
        
    return 1;
    }

    public 
    hook_say(id)
    {
        static 
    szMsg[128]; read_args(szMsg127); remove_quotes(szMsg);

        if(
    szMsg[0] != '/') return 0;

        static const 
    szChoosedWP[][] = { "/ak47""/m4a1""/famas""/awp""/b51" };
        for(new 
    asizeof szChoosedWPa++)
        {
            if(!
    strcmp(szMsgszChoosedWP[a]))
            {
                if(!
    is_allow_use(id)) break;
                return 
    handler(ida);
            }
        }
        return 
    0;
    }   

    public 
    CmdMenu(id)
    {
        if(!
    is_allow_use(id)) return 0;
        
    g_deathcount 0;
        static 
    szMenu[512], iLeniKey;

        
    iKey MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5;
        
    iLen formatex(szMenu511"\yHTH \w[\r Мини Вип \w]^n^n\y1. \wВзять AK47^n\y2. \wВзять M4A1^n\y3. \wВзять Famas^n");
        
    iLen += formatex(szMenu[iLen], 511 iLen"\y4. \wВзять AWP^n\y5. \wВзять Пулемет^n^n");
        
    formatex(szMenu[iLen], 511 iLen"\y0. \wВыход");
        
    set_pdata_int(id2050);
        return 
    show_menu(idiKeyszMenu, -1"Vip Menu");
    }

    public 
    handler(idiKey)
    {
        if(
    iKey || iUseWeapon[id]) return 0;
       
        static const 
    szChoosedBP[] = { 90909030250 };
        static const 
    szChoosedWP[][] = { "weapon_ak47""weapon_m4a1""weapon_famas""weapon_awp""weapon_m249" };

        
    iUseWeapon[id] = true;

        return 
    give_item_ex(idszChoosedWP[iKey], szChoosedBP[iKey], 1);
    }

    stock give_item_ex(id,currWeaponName[],ammoAmount,dropFlag=0)
    {
        static    
    weaponsList[32], weaponName[32], weaponsNumcurrWeaponID;       
        
    currWeaponID get_weaponid(currWeaponName);
        if(
    dropFlag)
        {   
            
    weaponsNum 0;
            
    get_user_weapons(id,weaponsList,weaponsNum);
            for (new 
    i;weaponsNum;i++)
            {
                if(((
    << currWeaponID) & PRIMARY_WEAPONS_BITSUM && (<< weaponsList[i]) & PRIMARY_WEAPONS_BITSUM) | ((<< currWeaponID) & SECONDARY_WEAPONS_BITSUM && (<< weaponsList[i]) & SECONDARY_WEAPONS_BITSUM))
                {
                    
    get_weaponname(weaponsList[i],weaponName,charsmax(weaponName));
                    
    engclient_cmd(id,"drop",weaponName);
                }
            }
        }
        
    fm_give_item(id,currWeaponName);
        
    cs_set_user_bpammo(id,currWeaponID,ammoAmount);
        return 
    1;
    }

    bool:is_allow_use(id)
    {
        if(!
    iUserVip[id])
        {
            
    client_print_color(id0"%s Только ^4VIP-игрок ^3может пользоваться этой командой!"CHATTAG);
            return 
    false;
        }
        if(!
    is_user_alive(id))
        {
            
    client_print_color(id0"%s Для использования данной команды вы должны быть ^4живы^3!"CHATTAG);
            return 
    false;
        }
        if(
    iUseWeapon[id])
        {
            
    client_print_color(id0"%s Вы ^3уже брали ^4оружие в этом раунде!"CHATTAG);
            return 
    false;
        }
        if(
    g_deathcount <= 3)
        {
            
    client_print_color(id0"%s Вы ^3не можете брать ^4оружие чаще, чем раз за три смерти!"CHATTAG);
            return 
    false;
        }
        return 
    true;
    }
     
    ThePhoenix нравится это.
  4. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    955
    Симпатии:
    322
    Пол:
    Мужской
    Изян есть, меню работать не будет, но по команде hook_say нет ограничения. :)
     
  5. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.979
    Симпатии:
    943
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    pUzzlik, поясни
     
  6. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    955
    Симпатии:
    322
    Пол:
    Мужской
    Ну менюшка public CmdMenu вызываеться g_deathcount <= 3 И в меню ты счетчик обнуляешь g_deathcount = 0; Но есть еще public hook_say тоесть если верно понимать то я смогу брать через чат,
    Код:
    static const szChoosedWP[][] = { "/ak47", "/m4a1", "/famas", "/awp", "/b51" };
    от тут и изьян, если я не буду использовать
    Код:
    register_clcmd("say /pv", "CmdMenu");
    register_clcmd("premium_vip", "CmdMenu");
    То счётчик не обнулиться :) Верно?
    --- добавлено 17.02.16 ---
    кр4 забыл обнулить счетчик g_deathcount в public hook_say
    --- добавлено 17.02.16 ---
    А так то все хорошо должно быть :)
     
    Phantom нравится это.
  7. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.979
    Симпатии:
    943
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    pUzzlik, понял. Я просто не знал, что тут через чат сразу можно взять оружие: не пользовался данной випкой
     
  8. ThePhoenix

    Регистрация:
    08.03.15
    Сообщения:
    1.524
    Симпатии:
    151
    Пол:
    Мужской
    Telegram:
    ThePhoenix2017
    Skype:
    the.phoenix666
    так можно через чат выпилить =)
    --- добавлено 17.02.16 ---
    А дамагер,кто смогёт засунуть?
    А то я пробовал с vip_acc ручки скривились и не вышло :D
     
  9. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    955
    Симпатии:
    322
    Пол:
    Мужской
    А разви нет у етой версии дамагера?
     
  10. ThePhoenix

    Регистрация:
    08.03.15
    Сообщения:
    1.524
    Симпатии:
    151
    Пол:
    Мужской
    Telegram:
    ThePhoenix2017
    Skype:
    the.phoenix666
    Неа
     
  11. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    955
    Симпатии:
    322
    Пол:
    Мужской
    А чё тогда у меня на сервере стоит и у меня есть, ты наверно вырезал для паблика его, а теперь опять назад всунуть хочешь :D
     
  12. ThePhoenix

    Регистрация:
    08.03.15
    Сообщения:
    1.524
    Симпатии:
    151
    Пол:
    Мужской
    Telegram:
    ThePhoenix2017
    Skype:
    the.phoenix666
    Лол да вроде не резал,проверю))