Поиск Закупка

Сообщения
345
Реакции
77
Помог
14 раз(а)
Аммм, это вроде стандартное меню закупки :dntknw:
 
Сообщения
336
Реакции
396
Предупреждения
5
Помог
7 раз(а)
setinfo "_Vgui_menus" "0" в консоль и все будет гуд
 
Сообщения
775
Реакции
291
Помог
11 раз(а)
@Mizer,есть похожий
Код:
#include <amxmodx>
#include <reapi>

new Trie:g_tReplaceInfoMsg;
new HookChain:HookShowMenuPre;
new VGUIMenu:Menus;

public plugin_init()
{
    register_plugin("Buy items", "1.1", "maFFyoZZyk");
    g_tReplaceInfoMsg = TrieCreate();
    Fill_trie();

    register_message(get_user_msgid("TextMsg"), "MessageTextMsg");
    RegisterHookChain(RG_ShowVGUIMenu,         "BuyShowVGUIMenu_Pre", false);
    HookShowMenuPre = RegisterHookChain(RG_ShowMenu, "ShowMenu_Pre", false);
    DisableHookChain(HookShowMenuPre);
}

public BuyShowVGUIMenu_Pre(const id, VGUIMenu:menuType, const bitsSlots, szOldMenu[])
{
    Menus = menuType;

    new szMenu[MAX_MENU_LENGTH], iKeys = MENU_KEY_0;
    new TeamName:team = get_member(id, m_iTeam);
    if(menuType == VGUI_Menu_Buy)
    {
        new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Магазин оружия:^n^n");

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wПистолеты^n");
        iKeys |= MENU_KEY_1;
    
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wДробовики^n");
        iKeys |= MENU_KEY_2;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \wПистолеты - Пулеметы^n");
        iKeys |= MENU_KEY_3;
            
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wШтурмовые винтовки^n");
        iKeys |= MENU_KEY_4;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \wПулеметы^n^n");
        iKeys |= MENU_KEY_5;
        
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r8. \yЭкипировка^n^n^n");
        iKeys |= MENU_KEY_8;
        
        formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
        
        SetHookChainArg(3, ATYPE_INTEGER, iKeys);
        SetHookChainArg(4, ATYPE_STRING, szMenu);
        
        if (strlen(szMenu) > 175)
        {
            EnableHookChain(HookShowMenuPre);
        }
    }
    else if(menuType == VGUI_Menu_Buy_Pistol)
    {       
        new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Пистолеты:^n^n");

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wGlock\R\r$\y400^n");
        iKeys |= MENU_KEY_1;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wUsp\R\r$\y500^n");
        iKeys |= MENU_KEY_2;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \wP228\R\r$\y600^n");
        iKeys |= MENU_KEY_3;
            
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wDeagle\R\r$\y650^n");
        iKeys |= MENU_KEY_4;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r5. \wElites\R\r$\y800^n^n^n" : "\r5. \wFiveseven\R\r$\y750^n^n^n");
        iKeys |= MENU_KEY_5;
        
        formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
        
        SetHookChainArg(3, ATYPE_INTEGER, iKeys);
        SetHookChainArg(4, ATYPE_STRING, szMenu);
        
        if (strlen(szMenu) > 175)
        {
            EnableHookChain(HookShowMenuPre);
        }
    }
    else if(menuType == VGUI_Menu_Buy_ShotGun)
    {
        new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Дробовики:^n^n");

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wM3\R\r$\y1700^n");
        iKeys |= MENU_KEY_1;
    
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wXm1014\R\r$\y3000^n^n^n");
        iKeys |= MENU_KEY_2;

        formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
        
        SetHookChainArg(3, ATYPE_INTEGER, iKeys);
        SetHookChainArg(4, ATYPE_STRING, szMenu);
        
        if (strlen(szMenu) > 175)
        {
            EnableHookChain(HookShowMenuPre);
        }
    }
    else if(menuType == VGUI_Menu_Buy_SubMachineGun)
    {
        new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Пистолеты-Пулеметы:^n^n");

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r1. \wMac-10\R\r$\y1400^n" : "\r1. \wTmp\R\r$\y1250^n");
        iKeys |= MENU_KEY_1;
    
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wMp5\R\r$\y1500^n");
        iKeys |= MENU_KEY_2;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \wUmp5\R\r$\y1700^n");
        iKeys |= MENU_KEY_3;
            
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wP90\R\r$\y2350^n^n^n");
        iKeys |= MENU_KEY_4;
        
        formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
        
        SetHookChainArg(3, ATYPE_INTEGER, iKeys);
        SetHookChainArg(4, ATYPE_STRING, szMenu);
        
        if (strlen(szMenu) > 175)
        {
            EnableHookChain(HookShowMenuPre);
        }
    }
    else if(menuType ==  VGUI_Menu_Buy_Rifle)
    {
        new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Штурмовые винтовки:^n^n");

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r1. \wGalil\R\r$\y2000^n" : "\r1. \wFamas\R\r$\y2250^n");
        iKeys |= MENU_KEY_1;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r2. \wAk-47\R\r$\y2500^n" : "\r2. \wScout\R\r$\y2750^n");
        iKeys |= MENU_KEY_2;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r3. \wScout\R\r$\y2750^n" : "\r3. \wM4A1\R\r$\y3100^n");
        iKeys |= MENU_KEY_3;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r4. \wSG-552\R\r$\y3500^n" : "\r4. \wAUG\R\r$\y3500^n");
        iKeys |= MENU_KEY_4;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r5. \wAwp\R\r$\y47500^n" : "\r5. \wKrieg550\R\r$\y4200^n");
        iKeys |= MENU_KEY_5;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r6. \wD3/AU1\R\r$\y5000^n^n^n" : "\r6. \wAwp\R\r$\y4750^n^n^n");
        iKeys |= MENU_KEY_6;
        
        formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
        
        SetHookChainArg(3, ATYPE_INTEGER, iKeys);
        SetHookChainArg(4, ATYPE_STRING, szMenu);
        
        if (strlen(szMenu) > 175)
        {
            EnableHookChain(HookShowMenuPre);
        }
    }
    else if(menuType ==  VGUI_Menu_Buy_MachineGun)
    {
        new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Пулеметы:^n^n");

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wM249\R\r$\y5750^n^n^n");
        iKeys |= MENU_KEY_1;

        formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
        
        SetHookChainArg(3, ATYPE_INTEGER, iKeys);
        SetHookChainArg(4, ATYPE_STRING, szMenu);
        
        if (strlen(szMenu) > 175)
        {
            EnableHookChain(HookShowMenuPre);
        }
    }
    else if(menuType == VGUI_Menu_Buy_Item)
    {
        new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Экипировка:^n^n");

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wБронежилет\R\r$\y650^n");
        iKeys |= MENU_KEY_1;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wБронежилет и Шлем\R\r$\y1000^n");
        iKeys |= MENU_KEY_2;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \wОслепляющая граната\R\r$\y200^n");
        iKeys |= MENU_KEY_3;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wОсколочная граната\R\r$\y300^n");
        iKeys |= MENU_KEY_4;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \wДымовая граната\R\r$\y300^n");
        iKeys |= MENU_KEY_5;

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r6. \wНочное видение\R\r$\y1250^n^n^n" : "\r6. \wНочное видение\R\r$\y1250^n");
        iKeys |= MENU_KEY_6;
        
        if(team == TEAM_CT)   
        {
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r7. \wНабор сапера\R\r$\y200^n");
            iKeys |= MENU_KEY_7;
            
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r8. \wЩит\R\r$\y2200^n^n^n");
            iKeys |= MENU_KEY_8;
        }
        
        formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
        
        SetHookChainArg(3, ATYPE_INTEGER, iKeys);
        SetHookChainArg(4, ATYPE_STRING, szMenu);
        
        if (strlen(szMenu) > 175)
        {
            EnableHookChain(HookShowMenuPre);
        }   

    }
    return HC_CONTINUE;
}

// Fix menu limit in ReGameDLL (https://github.com/s1lentq/ReGameDLL_CS/blob/9d89a347fa22662b716697c97150ddea2bd00d99/regamedll/dlls/client.cpp#L394)
public ShowMenu_Pre(const id, const keys, const time, const needMore, const menu[]) {
    DisableHookChain(HookShowMenuPre);
    show_menu(id, keys, menu, time);
    switch(Menus)
    {
        case VGUI_Menu_Buy: set_member(id, m_iMenu, Menu_Buy); // AMXX overide m_iMenu after show_menu
        case VGUI_Menu_Buy_Pistol: set_member(id, m_iMenu, Menu_BuyPistol); // AMXX overide m_iMenu after show_menu
        case VGUI_Menu_Buy_ShotGun: set_member(id, m_iMenu, Menu_BuyShotgun); // AMXX overide m_iMenu after show_menu
        case VGUI_Menu_Buy_SubMachineGun: set_member(id, m_iMenu, Menu_BuySubMachineGun); // AMXX overide m_iMenu after show_menu
        case VGUI_Menu_Buy_Rifle: set_member(id, m_iMenu, Menu_BuyRifle); // AMXX overide m_iMenu after show_menu
        case VGUI_Menu_Buy_Item: set_member(id, m_iMenu, Menu_BuyItem); // AMXX overide m_iMenu after show_menu
    }
    return HC_SUPERCEDE;
}

public Fill_trie() {
    TrieSetString(g_tReplaceInfoMsg, "#C4_Arming_Cancelled",                "Бомба может быть установлена только в зоне установки бомбы");
    TrieSetString(g_tReplaceInfoMsg, "#C4_Plant_Must_Be_On_Ground",            "Для установки бобмы Вы должны находиться на земле");
    TrieSetString(g_tReplaceInfoMsg, "#Defusing_Bomb_With_Defuse_Kit",        "Обезвреживание бомбы с набором сапёра");
    TrieSetString(g_tReplaceInfoMsg, "#Defusing_Bomb_Without_Defuse_Kit",    "Обезвреживание бомбы без набора сапёра");
    TrieSetString(g_tReplaceInfoMsg, "#Weapon_Cannot_Be_Dropped",            "Нельзя выбросить данное оружие");
    TrieSetString(g_tReplaceInfoMsg, "#C4_Plant_At_Bomb_Spot",                "Бомба может быть установлена только в зоне установки бомбы");
    TrieSetString(g_tReplaceInfoMsg, "#Cannot_Carry_Anymore",                "Вы не можете взять больше");
    TrieSetString(g_tReplaceInfoMsg, "#Already_Have_Kevlar",                "У вас уже имеется бронежилет");
    TrieSetString(g_tReplaceInfoMsg, "#Already_Have_Kevlar_Helmet",            "У вас уже имеется бронежилет и шлем");
    TrieSetString(g_tReplaceInfoMsg, "#Switch_To_BurstFire",                "Переключен в режим пулеметного огня");
    TrieSetString(g_tReplaceInfoMsg, "#Switch_To_FullAuto",                    "Переключен в автоматический режим");
    TrieSetString(g_tReplaceInfoMsg, "#Switch_To_SemiAuto",                    "Переключен в полуавтоматический режим");
    TrieSetString(g_tReplaceInfoMsg, "#Already_Own_Weapon",                    "У вас уже имеется данное оружие");
    TrieSetString(g_tReplaceInfoMsg, "#Command_Not_Available",                "Данное действие недоступно в Вашем местонахождении");
    TrieSetString(g_tReplaceInfoMsg, "#Got_bomb",                            "Вы подобрали бомбу");
    TrieSetString(g_tReplaceInfoMsg, "#Game_bomb_pickup",                    "%s подобрал бомбу");
    TrieSetString(g_tReplaceInfoMsg, "#Game_bomb_drop",                        "%s выбросил бомбу");
    TrieSetString(g_tReplaceInfoMsg, "#Cant_buy",                            "%s секунд уже истекли.^rПокупка оружия запрещена");
    TrieSetString(g_tReplaceInfoMsg, "#Not_Enough_Money",                    "У вас не достаточно денег");
    TrieSetString(g_tReplaceInfoMsg, "#Alias_Not_Avail",                    "Вашей команде недоступна покупка «%s».");
}

public MessageTextMsg() {
    new szMsg[192], szArg3[32];
    get_msg_arg_string(2, szMsg, charsmax(szMsg));
    //log_amx("Сообщение %s", szMsg);
    if(TrieGetString(g_tReplaceInfoMsg, szMsg, szMsg, charsmax(szMsg))) {
        if(get_msg_args() > 2) {
            get_msg_arg_string(3, szArg3, charsmax(szArg3));
            replace(szMsg, charsmax(szMsg), "%s", szArg3);
        }
        set_msg_arg_string(2, szMsg);
    }
}

public plugin_end()    TrieDestroy(g_tReplaceInfoMsg);
 

d3m37r4

111111
Сообщения
1,429
Реакции
1,169
Помог
10 раз(а)
maFFyoZZyk, не будет работать он нормально при _vgui_menus 1
 
Сообщения
775
Реакции
291
Помог
11 раз(а)
d3m37r4, у себя пробовал проблем нет, у других не знаю, я дал что есть, а будут юзать или нет, уже не мое дело.
 
Сообщения
336
Реакции
396
Предупреждения
5
Помог
7 раз(а)
maFFyoZZyk, зачем какой то плагин ставить, если это стандартное gui меню закупки?
 
Сообщения
336
Реакции
396
Предупреждения
5
Помог
7 раз(а)
maFFyoZZyk, уверен на 100% создатель темы увидел где то это меню и думает что это плагин...
 
Сообщения
775
Реакции
291
Помог
11 раз(а)
@Albertosik,смысл плагина, изменить стандартное меню, от цвета, до самих пунктов
 
Сообщения
336
Реакции
396
Предупреждения
5
Помог
7 раз(а)
maFFyoZZyk, стандартное меню идентично один в один, за исключением некоторых названий пунктов(они могут отличаться от русификации)
1623150205608.png
 
Сообщения
775
Реакции
291
Помог
11 раз(а)
Albertosik, ты чего душный такой, попросили я скинул. Если надо будет, поставит и увидит отличия, того что я скинул и того что на твоём скрине
8 Июн 2021
Зачем вообще тогда ставить плагины на цветной чат, если в самой игре есть чат, зачем вообще как-то менять свой сервер
 
Сообщения
336
Реакции
396
Предупреждения
5
Помог
7 раз(а)
maFFyoZZyk, извиняюсь, если что то не так сказал, я лишь утверждаю, что автор темы слепо ищет стандартное меню, думая, что это плагин
8 Июн 2021
maFFyoZZyk, кстати если хочешь прям один в один сделать такое же меню как на картинке у автора темы, то просто нужно изменить текст в файле \cstrike\titles.txt, разницы кстати нет стим или нет.
1623150736596.png1623150750617.png
 

Download all Attachments

Сообщения
775
Реакции
291
Помог
11 раз(а)
Albertosik, с чего ты взял что я хочу что-то делать как у автора, я скинул то, что есть у меня. Надо воспользуется, если нет... То нет. Делов то
 

d3m37r4

111111
Сообщения
1,429
Реакции
1,169
Помог
10 раз(а)
Albertosik, ТС'у нужен плагин, а не изменения ланг файлика на клиенте
 

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

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