[AMXX -> UBB] Server Menu

  • Автор темы Автор темы reg1on
  • Дата начала Дата начала
Серверное меню для Ultimate Base Builder. Автоматическое выставление языка, MultiLang

[HIDE]
C-подобный:
#include <amxmodx>
#include <UBB>

#define DEF_LANG 1 // 0 - English, 1 - Russian
#define LANG_NUM 2
new g_pLang[33];
new g_sLangName[LANG_NUM][] = {
    "English",
    "Русский"
};

new g_sLangShort[LANG_NUM][] = {
    "en",
    "ru"
};

new g_HudSync;

public plugin_init() {
    register_plugin("Server Menu [Multi Lang]", "0.2", "POS Dev Team");
    register_clcmd("chooseteam", "ServerMenu");
    
    set_task(1.0, "showInfo", _, _, _, "b");
    g_HudSync = CreateHudSyncObj();
    
    register_dictionary("servermenu.txt");
}

public client_putinserver(userId) {
    g_pLang[userId] = DEF_LANG;
    set_user_info(userId, "lang", g_sLangShort[g_pLang[userId]]);
}

public showInfo() {
    new iPlayers[32], iNum;
    get_players(iPlayers, iNum, "ach");
    for(new i = 0; i < iNum; i++) {
        new userId = iPlayers[i];
        set_hudmessage(255, 50, 0, -1.0, 0.85, 0, _, 0.99, _, _, -1);
        if((ubb_get_round_phase() == Build) && ubb_is_user_builder(userId)) {
            ShowSyncHudMsg(userId, g_HudSync, "%L", userId, "HUD_BUILD_PHASE");
        } else {
            ShowSyncHudMsg(userId, g_HudSync, "%L", userId, "HUD_NOT_BUILD_PHASE", ubb_get_user_hp(userId), ubb_get_user_armor(userId), ubb_get_user_coins(userId));
        }
    }
}

public ServerMenu(userId) {
    new iMenu = menu_create(fmt("%L", userId, "MENUT"), "ServerMenuHandler");
    
    menu_additem(iMenu, fmt("%L", userId, "MENU1"), "1");
    menu_additem(iMenu, fmt("%L", userId, "MENU2"), "2");
    menu_additem(iMenu, fmt("%L", userId, "MENU3"), "3");
    menu_additem(iMenu, fmt("%L", userId, "MENU4"), "4");
    menu_additem(iMenu, fmt("%L", userId, "MENU5"), "5");
    menu_additem(iMenu, fmt("%L", userId, "MENU6"), "6", ADMIN_LEVEL_H);
    menu_additem(iMenu, fmt("%L", userId, "MENU7"), "7", ADMIN_MENU);
    menu_additem(iMenu, fmt("%L", userId, "MENU8"), "8", ADMIN_RCON);
    menu_additem(iMenu, fmt("%L", userId, "MENU9", g_sLangName[g_pLang[userId]]), "9");
    //menu_addblank(iMenu, 1);
    menu_additem(iMenu, fmt("%L", userId, "MENU0"), "0");
    
    menu_setprop(iMenu, MPROP_EXIT, MEXIT_NEVER);
    menu_setprop(iMenu, MPROP_PERPAGE, 0);
    
    return menu_display(userId, iMenu, 0);
}

public ServerMenuHandler(userId, iMenu, iItem) {
    if(iItem == MENU_EXIT) {
        menu_destroy(iMenu);
        return 1;
    }
    
    new sData[6]; menu_item_getinfo(iMenu, iItem, _, sData, charsmax(sData));
    
    switch(str_to_num(sData)) {
        case 1: ubb_open_zombie_class_menu(userId);
        case 2: {
            if(Build < ubb_get_round_phase() < Release) {
                ubb_open_guns_menu(userId, true);
            } else {
                ubb_send_chat(userId, "%L", userId, "CHAT2");
                ServerMenu(userId);
            }
        }
        case 3: {
            if(ubb_get_round_phase() > Build) {
                ubb_open_extra_items_menu(userId)
            } else {
                ubb_send_chat(userId, "%L", userId, "CHAT3");
                ServerMenu(userId);
            }
        }
        case 4: amxclient_cmd(userId, "say", "/rtv");
        case 5: amxclient_cmd(userId, "say", "/maps");
        case 6: amxclient_cmd(userId, "vipmenu");
        case 7: amxclient_cmd(userId, "amxmodmenu");
        case 8: amxclient_cmd(userId, "amxmodmenu");
        case 9: {
            g_pLang[userId]++;
            if(g_pLang[userId] == LANG_NUM) g_pLang[userId] = 0;
            set_user_info(userId, "lang", g_sLangShort[g_pLang[userId]]);
            ServerMenu(userId);
        }
    }
    
    return 0;
}

servermenu.txt:
Код:
[en]
MENUT = \yServer Menu
MENU1 = Choose Zombie
MENU2 = Choose Guns
MENU3 = Extra Items^n
MENU4 = Rock The Vote \d[\r/rtv\d]
MENU5 = Nomination Map \d[\r/maps\d]^n
MENU6 = VIP Menu
MENU7 = Admin CP^n
MENU8 = Top Secret
MENU9 = Lang \d[\r%s\d]^n
MENU0 = Exit

HUD_BUILD_PHASE = [ Press "E" - For Build | "R" - Lock Block | "F" - Use Hook ]
HUD_NOT_BUILD_PHASE = [ HP: %d | Armor: %d | Coins: %d ]

CHAT2 = Only available on ^3Prepare ^4Phases^1!
CHAT3 = Not available on ^3Build ^4Phase^1!

[ru]
MENUT = \yСерверное меню
MENU1 = Выбрать Зомби
MENU2 = Выбрать Оружие
MENU3 = Дополнительные предметы^n
MENU4 = Проголосовать за смену карты \d[\r/rtv\d]
MENU5 = Номинировать следующую карту \d[\r/maps\d]^n
MENU6 = Вип Меню
MENU7 = Админ Центр^n
MENU8 = Топ Секрет
MENU9 = Язык \d[\r%s\d]^n
MENU0 = Выход

HUD_BUILD_PHASE = [ Нажмите "E" - Чтобы Строить | "R" - Приватить Блок | "F" - Применить Крюк ]
HUD_NOT_BUILD_PHASE = [ Здоровье: %d | Броня: %d | Монет: %d ]

CHAT2 = Доступно только в ^3фазе ^4подготовки^1!
CHAT3 = Недоступно при ^3фазе ^4строительства^1!
[/HIDE]
 
Назад
Сверху