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

  1. boss_ex

    Регистрация:
    09.06.16
    Сообщения:
    101
    Симпатии:
    18
    Пол:
    Мужской
    Вот такой код
    как правильно сделать?
    PHP:
    #include <amxmodx>
    #include <amxmisc>
    #include <hamsandwich>
    #include <cstrike>
    #include <fun>
    #include <rpg>

    #pragma tabsize 0

    new keys MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_0

    #define PLUGIN "Super Menu"
    #define VERSION "2.0"
    #define AUTHOR "TrbSin"

    new pAccessFlags;

    public 
    plugin_init()
    {
        
    pAccessFlags register_cvar("super_flag""q");
       
        
    register_plugin(PLUGINVERSIONAUTHOR)
        
    register_menu("Menu 1"keys"func_menu")
        
    register_clcmd("vipmenu""AdminMenu")
        
    register_clcmd("transfer""transfer_lvl"ADMIN_ALL"")
    }

    public 
    AdminMenu(id)
    {
        new 
    sFlags[6]; get_pcvar_string(pAccessFlagssFlagscharsmax(sFlags));
        if(
    get_user_flags(id) & read_flags(sFlags))
        {
        static 
    menu[650], Len
        Len 
    0
        Len 
    formatex(menu[Len], charsmax(menu) - Len"\d[\rRPG\d] \wМеню \rглавного \wадмина^n^n");
       

        
    Len += formatex(menu[Len], charsmax(menu) - Len"\r1. \wПерезагрузить лвл^n")
        
    keys |= MENU_KEY_1

        Len 
    += formatex(menu[Len], charsmax(menu) - Len"\r2. \wВыдать лвл^n")
        
    keys |= MENU_KEY_2

        Len 
    += formatex(menu[Len], charsmax(menu) - Len"\r3. \wЗабрать лвл^n")
        
    keys |= MENU_KEY_3
       
        Len 
    += formatex(menu[Len], charsmax(menu) - Len"\r0. \wВыход^n")
        
    keys |= MENU_KEY_0
       
        show_menu
    (idkeysmenu, -1"Menu 1");
        }
        else 
    console_print(id"У Вас нету доступа к команде.")
        return 
    PLUGIN_HANDLED
    }
    public 
    func_menu(idkey)
    {
        switch(
    key)
        {
            case 
    0RELVLPlayer(id)
            default: 
    LVLPlayer(id)
        }       
        return 
    PLUGIN_HANDLED
    }

    public 
    LVLPlayer(id)
    {
            new 
    menu menu_create"\wВыбери игрока:""LvlName" )
            new 
    players[32], pnumtempid
            
    new szName[32], szTempid[10]
            
    get_players(playerspnum)
            for(new 
    ii<pnumi++)
            {
                
    cs_get_user_team(players[i])
                
    tempid players[i]
               
                
    get_user_name(tempidszName31)
                
    num_to_str(tempidszTempid9)

                
    menu_additem(menuszNameszTempid0)
               
            
    menu_setprop(menuMPROP_NEXTNAME"Дальше")
            
    menu_setprop(menuMPROP_BACKNAME"Назад")
            
    menu_setprop(menuMPROP_EXITNAME"Закрыть")
            }
            
    menu_display(idmenu0)
            return 
    PLUGIN_HANDLED
    }

    public 
    LvlName(idmenuitem)
    {
        if(
    item == MENU_EXIT)
        {
            
    menu_destroy(menu)
            return 
    PLUGIN_HANDLED
        
    }

        new 
    data[6], iName[64], playername[33], playername2[33]
        new 
    accesscallback
        menu_item_getinfo
    (menuitemaccessdata,5iName63callback)

        new 
    tempid str_to_num(data)
        
    cs_get_user_team(tempid)
       
        
    get_user_name(idplayername32)
        
    get_user_name(tempidplayername232)

       
               
        
    client_cmd(id"messagemode ^"transfer %i^""tempid)
           
        
    //write_colored(0, "%L", LANG_PLAYER, "VIP_CSPEED", playername, playername2)
         
    AdminMenu(id)

        
    menu_destroy(menu)
        return 
    PLUGIN_HANDLED
    }

    public 
    RELVLPlayer(id)
    {
        new 
    menu menu_create"\yВыбери игрока:""RelvlName" )
        new 
    players[32], pnumtempid
        
    new szName[32], szTempid[10]
        
    cs_get_user_team(id)

        
    get_players(playerspnum)

        for(new 
    ii<pnumi++)
        {
        
    cs_get_user_team(players[i])
           
        
    tempid players[i]

        
    get_user_name(tempidszName31)
        
    num_to_str(tempidszTempid9)

        
    menu_additem(menuszNameszTempid0)
        }
        
    menu_setpropmenuMPROP_NEXTNAME"Дальше")
        
    menu_setpropmenuMPROP_BACKNAME"Назад")
        
    menu_setpropmenuMPROP_EXITNAME"Выход")   
        
    //menu_setprop( menu, MPROP_PERPAGE, 0)
        
    menu_display(idmenu0)
         return 
    PLUGIN_HANDLED
    }

    public 
    RelvlName(idmenuitem)
    {
       
        {
        if(
    item == MENU_EXIT)
        {
            
    menu_destroy(menu)
            return 
    PLUGIN_HANDLED
        
    }

        new 
    data[6], iName[64], playername2[33]//, playername[33]
        
    new accesscallback
        menu_item_getinfo
    (menuitemaccessdata,5iName63callback)

        new 
    tempid str_to_num(data)
        
    cs_get_user_team(tempid)
       
        
    //get_user_name(id, playername, 32)
        
    get_user_name(tempidplayername232)

                
    client_cmd(id"amx_rpg_drop_upgs %s"playername2)
           
        
    //write_colored(0, "%L", LANG_PLAYER, "VIP_CGRAV", playername, playername2)
              
    AdminMenu(id)
        }


        
    menu_destroy(menu)
        return 
    PLUGIN_HANDLED
    }


    public 
    transfer_lvl(idkey)
    {
        new 
    param[9]
        
    read_argv(2paramcharsmax(param))
       
        for (new 
    xstrlen(param); x++)
        {
            if(!
    isdigit(param[x]))
            {
                
    ChatColor(id"%L"LANG_PLAYER"TRANSFER_PARMCHISLO")
                return 
    PLUGIN_HANDLED
            
    }
        }
       
        new 
    amount str_to_num(param)

            if (!
    amount )
            {
                    
    ChatColor(id"%L"LANG_PLAYER"TRANSFER_BOLNYL")
                    return 
    PLUGIN_HANDLED
            
    }

        if(!
    is_user_connected(id))
            return 
    PLUGIN_CONTINUE
       
       
        read_argv
    (1paramcharsmax(param))
        new 
    player str_to_num(param)

        if(!
    is_user_connected(player))
            return 
    PLUGIN_CONTINUE

        
    new names[32]
       
        
    get_user_name(playernames31)
        if(
    keys |= MENU_KEY_2)
        
    client_cmd(id"amx_rpg_lvl %s + %d"namesamount)
        else if(
    keys |= MENU_KEY_3)
        
    client_cmd(id"amx_rpg_lvl %s - %d"namesamount)
        else if(
    keys |= MENU_KEY_4)
        
    client_cmd(id"amx_rpg_lvl %s = %d"namesamount)

        return 
    PLUGIN_HANDLED
    }

    stock ChatColor(const id, const input[], any:...)
    {
        new 
    count 1players[32]
        static 
    msg[191]
        
    vformat(msg190input3)
       
        
    replace_all(msg190"!g""^4")
        
    replace_all(msg190"!y""^1")
        
    replace_all(msg190"!t""^3")
       
        if (
    idplayers[0] = id; else get_players(playerscount"ch")
        {
                for (new 
    0counti++)
                {
                if (
    is_user_connected(players[i]))
                {
                    
    message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                            
    write_byte(players[i]);
                            
    write_string(msg);
                            
    message_end();
                }
                }
        }
    }
     
  2. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    835
    Симпатии:
    335
    Пол:
    Мужской
    Ну так создавай тут условие:
    PHP:
    public func_menu(idkey)
    {
         if(
    key == 0)
         {
             ....
         }
         else
             ....

         return 
    PLUGIN_HANDLED
    }
     
  3. boss_ex

    Регистрация:
    09.06.16
    Сообщения:
    101
    Симпатии:
    18
    Пол:
    Мужской
    @MakapoH., Ты код вообще смотрел? мне надо чтобы messagemode работал
     
  4. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    835
    Симпатии:
    335
    Пол:
    Мужской
    @boss_ex, Ты вообще писал что тебе конкретно нужно? Messagemode не будет работать у игроков с протектором.
     
  5. boss_ex

    Регистрация:
    09.06.16
    Сообщения:
    101
    Симпатии:
    18
    Пол:
    Мужской
    @MakapoH., это меню гл. админа для выдачи уровней в RPG моде, поэтому мне пофигу на остальных игроков =)
     
  6. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    835
    Симпатии:
    335
    Пол:
    Мужской
    Тогда через SVC_DIRECTOR
    message_begin(MSG_ONE, 51, .player = id)
     
  7. boss_ex

    Регистрация:
    09.06.16
    Сообщения:
    101
    Симпатии:
    18
    Пол:
    Мужской
    @MakapoH., ааааааа, ты меня вообще не понимаешь чтоль? посмотри код там transfer_lvl(id) где стоят условия keys |= MENU_KEY_2 и т.д. как правильно сделать? только не говори загадками
     
  8. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    835
    Симпатии:
    335
    Пол:
    Мужской
    Ааа, ну так юзай так:
    PHP:
    switch(key)
    {
        case 
    MENU_KEY_2: ...
        case 
    MENU_KEY_3: ...
        ....
    }
    Либо если не работает, то замени switch(key) на switch(key |=)
     
  9. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    956
    Симпатии:
    323
    Пол:
    Мужской
    @boss_ex, Тюю что ты нахимичил? :eek::crazy: Ты сначала опиши функции твоего меню как оно должно работать и что конкретно тебя интересует, а то дурные вопросы рождают дурные ответы! Как минимум у тебя transfer_lvl вызываеться только при написании команды transfer в консоль! Как ты туда хочешь (id, key) меню впхать я вообще не понимаю!
     
  10. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    835
    Симпатии:
    335
    Пол:
    Мужской
  11. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    956
    Симпатии:
    323
    Пол:
    Мужской
    @MakapoH., Ты о чем? Не прост я реально на код взглянул да там черт ногу сломит, просто он херню написал а ты в место того чтобы на ошибки указать пытаешься помочь, там же код не рабочий 100%, transfer_lvl key ну никак не известна поэтому и условия ложные. Чет вы химичите лан не буду вам мешать.
     
  12. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    956
    Симпатии:
    323
    Пол:
    Мужской
    Там реально для каждого пункта надо
    PHP:
     Len += formatex(menu[Len], charsmax(menu) - Len"\r1. \wПерезагрузить лвл^n")
        
    keys |= MENU_KEY_1

        Len 
    += formatex(menu[Len], charsmax(menu) - Len"\r2. \wВыдать лвл^n")
        
    keys |= MENU_KEY_2

        Len 
    += formatex(menu[Len], charsmax(menu) - Len"\r3. \wЗабрать лвл^n")
        
    keys |= MENU_KEY_3
    Надо отдельно получать список игроков и потом тогда делать уже свои функции, кода будет больше за то работать верно будет, еще можно и сделать меньше кода одним списком, но надо засесть и хорошо подумать как лучше это сделать но все же то что ТС скинул полный бред!
     
  13. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    956
    Симпатии:
    323
    Пол:
    Мужской
    @boss_ex, псс парень, лови думаю дальше разберешься.
    PHP:
    #include <amxmodx>
    #include <amxmisc>
    #include <cstrike>

    #define PLUGIN "Super Menu"
    #define VERSION "0.1"
    #define AUTHOR "Author"

    new const keys MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_0;
    new 
    pAccessFlagsg_iFlags;

    public 
    plugin_init() {
        
    register_plugin(PLUGINVERSIONAUTHOR);
        
    pAccessFlags register_cvar("super_flag""t");
      
        
    register_menu("Menu 1"keys"func_menu");
        
    register_clcmd("vipmenu""AdminMenu");
    }

    public 
    plugin_cfg() {
        new 
    sAccess[4]; get_pcvar_string(pAccessFlagssAccesscharsmax(sAccess));
        
    g_iFlags read_flags(sAccess);
    }

    public 
    AdminMenu(id) {
        if(~
    get_user_flags(id) & g_iFlags) return console_print(id"У Вас нету доступа к команде.");

        static 
    menu[512], Len;
        
    Len 0;
        
    Len += formatex(menu[Len], charsmax(menu) - Len"\d[\rRPG\d] \wМеню \rглавного \wадмина^n^n");
        
    Len += formatex(menu[Len], charsmax(menu) - Len"\r1. \wПерезагрузить лвл^n");
        
    Len += formatex(menu[Len], charsmax(menu) - Len"\r2. \wВыдать лвл^n");
        
    Len += formatex(menu[Len], charsmax(menu) - Len"\r3. \wЗабрать лвл^n");
        
    Len += formatex(menu[Len], charsmax(menu) - Len"\r0. \wВыход^n");

        return 
    show_menu(idkeysmenu, -1"Menu 1");
    }

    public 
    func_menu(idkey) {
        new 
    menu;
        switch(
    key) {
            case 
    0menu menu_create("\yВыбери игрока:""RelvlName");
            case 
    1menu menu_create("\wВыбери игрока:""UpLvlName");
            case 
    2menu menu_create("\wВыбери игрока:""DownLvlName");
        }
        new 
    players[32], pnumtempid;
        new 
    szName[32], szTempid[10];

        
    get_players(playerspnum);
        for(new 
    ipnumi++) {
            
    cs_get_user_team(players[i]);
            
    tempid players[i];
      
            
    get_user_name(tempidszName31);
            
    num_to_str(tempidszTempid9);
      
            
    menu_additem(menuszNameszTempid0);
      
            
    menu_setprop(menuMPROP_NEXTNAME"Дальше");
            
    menu_setprop(menuMPROP_BACKNAME"Назад");
            
    menu_setprop(menuMPROP_EXITNAME"Закрыть");
        }

        
    menu_display(idmenu0);
        return 
    PLUGIN_HANDLED;
    }

    public 
    RelvlName(idmenuitem) {
        
    //your code
    }

    public 
    UpLvlName(idmenuitem) {
        
    //your code
    }

    public 
    DownLvlName(idmenuitem) {
        
    //your code
    }

    stock ChatColor(const id, const input[], any:...)
    {
        new 
    count 1players[32]
        static 
    msg[191]
        
    vformat(msg190input3)
      
        
    replace_all(msg190"!g""^4")
        
    replace_all(msg190"!y""^1")
        
    replace_all(msg190"!t""^3")
      
        if (
    idplayers[0] = id; else get_players(playerscount"ch")
        {
                for (new 
    0counti++)
                {
                if (
    is_user_connected(players[i]))
                {
                    
    message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                            
    write_byte(players[i]);
                            
    write_string(msg);
                            
    message_end();
                }
                }
        }
    }
    --- добавлено 19.08.16 ---
    От идеи оригинала старался не отходить, дальше функции для каждого пункта сам думаю запилишь и не надо ничего выдумывать.
     
    boss_ex нравится это.
  14. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    956
    Симпатии:
    323
    Пол:
    Мужской
    Хотя и это
    PHP:
    public func_menu(idkey) {
        new 
    menu;
        switch(
    key) {
            case 
    0menu menu_create("\yВыбери игрока:""RelvlName");
            case 
    1menu menu_create("\wВыбери игрока:""UpLvlName");
            case 
    2menu menu_create("\wВыбери игрока:""DownLvlName");
        }
        new 
    players[32], pnumtempid;
        new 
    szName[32], szTempid[10];

        
    get_players(playerspnum);
        for(new 
    ipnumi++) {
            
    cs_get_user_team(players[i]);
            
    tempid players[i];

            
    get_user_name(tempidszName31);
            
    num_to_str(tempidszTempid9);

            
    menu_additem(menuszNameszTempid0);

            
    menu_setprop(menuMPROP_NEXTNAME"Дальше");
            
    menu_setprop(menuMPROP_BACKNAME"Назад");
            
    menu_setprop(menuMPROP_EXITNAME"Закрыть");
        }

        
    menu_display(idmenu0);
        return 
    PLUGIN_HANDLED;
    }
    можно на это
    PHP:
    public func_menu(idkey) {
        new 
    iMenu;
        switch(
    key) {
            case 
    0iMenu menu_create("\yВыбери игрока:""RelvlName");
            case 
    1iMenu menu_create("\wВыбери игрока:""UpLvlName");
            case 
    2iMenu menu_create("\wВыбери игрока:""DownLvlName");
        }

        new 
    s_Name[32], s_Player[10], players[32], pnum;

        
    get_players(playerspnum);
        for (new 
    ipnumi++) {
            
    get_user_name(players[i], s_Namecharsmax(s_Name));
            
    num_to_str(players[i], s_Playercharsmax(s_Player));
        
            
    menu_additem(iMenus_Names_Player0);
        }

        
    menu_setprop(menuMPROP_NEXTNAME"Дальше");
        
    menu_setprop(menuMPROP_BACKNAME"Назад");
        
    menu_setprop(menuMPROP_EXITNAME"Закрыть");
        
    menu_display(idiMenu0);
    }
    --- добавлено 19.08.16 ---
    и #include <cstrike> тогда удалить можно :)
     
    boss_ex и x00peR нравится это.