1. ferz Пользователь

    Регистрация:
    02.03.15
    Сообщения:
    83
    Симпатии:
    69
    Пол:
    Мужской
    Добрый времени суток, уважаемые форумчане!

    Хотелось, чтобы кто-то подсказал в какой части кода, что нужно исправить, чтобы при нажатии на игрока не кидало в начало меню..
    Вообщем хотим мы кому нибудь сделать скриншот... Открываем меню и листаем его, находим игрока, нажимаем на него и делается скриншот, и при этом кидает опять на 1 страницу меню и чтобы сделать еще 1 скриншот опять приходится листать и искать игрока. Так вот, хотелось бы, чтобы при нажатии на игрока не выкидывало на первую страницу меню, а оставалось на той же странице, что и игрок, которому был сделан скрин.
    Код:
    #include <amxmodx>
    #include <fun>
    #include <icolourchat>
    #include <dhudmessage>
    new const PLUGIN[]      = "Screen Shot Menu"
    new const VERSION[]      = "1.2"
    new const NAME[]      = "Bonaqua | DimaS"
    new const FILE[]      = "ss_menu.cfg"         // Файл с настройками
    new const OPEN_ACCESS   = ADMIN_IMMUNITY
    const Float:HUD_MESSAGE_X = 0.01
    const Float:HUD_MESSAGE_Y = 0.82
    const Float:HUD_WATERMARK_X = -1.0
    const Float:HUD_WATERMARK_Y = 0.88
    new pcv_watermark_enabled
    new pcv_watermark
    new pcv_enable
    new pcv_msg
    public plugin_init()
    {
       register_plugin( PLUGIN, VERSION, NAME )
      
       pcv_enable            = register_cvar("amx_ssm_enabled", "0")
       pcv_msg               = register_cvar("amx_ssm_message", "0")
       pcv_watermark_enabled   = register_cvar("amx_ssm_watermark_enabled", "0")
       pcv_watermark          = register_cvar("amx_ssm_watermark", "")
       register_clcmd("ss_menu", "iScreenShotMenu")
       register_clcmd("say ss_menu", "iScreenShotMenu")
       register_clcmd("say /ss_menu", "iScreenShotMenu")
       register_clcmd("say_team ss_menu", "iScreenShotMenu")
       register_clcmd("say_team /ss_menu", "iScreenShotMenu")
    }
    public plugin_cfg()
    {
       new ConfigsDir[64]
       get_localinfo("amxx_configsdir", ConfigsDir, charsmax(ConfigsDir))
       format(ConfigsDir, charsmax(ConfigsDir), "%s/%s", ConfigsDir, FILE)
      
       if (!file_exists(ConfigsDir))
       {
          server_print("==================================================================")
          server_print("File [%s] not found!", ConfigsDir)
          server_print("==================================================================")
          return;
       }
       server_cmd("exec ^"%s^"", ConfigsDir)
    }
    public iScreenShotMenu(id)
    {
       if(!get_pcvar_num(pcv_enable))
       {
          ChatColor(id, "^4[%s]^1 Меню снятие скриншотов выключено!", PLUGIN)
          return false
       }
         
       if(get_user_flags(id) & OPEN_ACCESS)
       {
         
          new szLen[1024 char]
          formatex(szLen, charsmax(szLen), "\r[%s]\d Выбирайте игрока:", PLUGIN)
          new iMenu = menu_create(szLen, "menu_handler")
          new s_Players[32], i_Num, iPlayer
          new s_Name[32], s_Player[10]
          get_players(s_Players, i_Num)
          for (new i; i < i_Num; i++)
          {
             iPlayer = s_Players[i]
             get_user_name(iPlayer, s_Name, charsmax(s_Name))
             num_to_str(iPlayer, s_Player, charsmax(s_Player))
             menu_additem(iMenu, s_Name, s_Player, 0)
          }
         
          menu_display(id, iMenu, 0)
          return PLUGIN_HANDLED
       }
       else
       ChatColor(id, "^3[^4%s^3]^1 В доступе отказано!", PLUGIN)
       return PLUGIN_HANDLED
    }
    
    public menu_handler(id, menu, item)
    {
       if (item == MENU_EXIT)
       {
          menu_destroy(menu)
          return PLUGIN_HANDLED
       }
       new s_Data[6], s_Name[64], i_Access, i_Callback
       menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
       new iPlayer = str_to_num(s_Data)
      
       if(!is_user_connected(iPlayer))
       {
          ChatColor(id, "^4[%s]^1 Игрок не подключён к серверу!", PLUGIN)
          iScreenShotMenu(id)
          return PLUGIN_HANDLED
       }
      
       iScreenShotMenu(id)
      
       iScreenShotMsg(iPlayer, id)
      
       set_task(0.3, "iScreenShotFunct", iPlayer)
       menu_destroy(menu)
       return PLUGIN_HANDLED
    }
    iScreenShotMsg(id, iPlayer)
    {
       if(get_pcvar_num(pcv_msg))
       {
          new playername[128], adminname[128], times[32]
         
          get_user_name(id, playername, charsmax(playername))
          get_user_name(iPlayer, adminname, charsmax(adminname))
         
          get_time("%d.%m.%Y - %H:%M:%S", times, 31)
         
          set_hudmessage( 225, 225, 225, HUD_MESSAGE_X, HUD_MESSAGE_Y, 1, 1.0, 5.0 )
          show_hudmessage( id , "[%s]^nАдминистратор: %s^nСделал скриншот игроку: %s^nСкриншот был сделан: %s", PLUGIN , adminname, playername, times)
         
          log_to_file("addons\amxmodx\logs\ss_menu.log", "Администратор '%s' сделал скриншот игроку '%s'", adminname, playername)
       }
      
       if(get_pcvar_num(pcv_watermark_enabled))
       {
          new Watermark[32]
          get_pcvar_string(pcv_watermark, Watermark, 31)
         
          set_dhudmessage( 0, 225, 0, HUD_WATERMARK_X, HUD_WATERMARK_Y, 2, 1.0, 5.0 )
          show_dhudmessage( id , Watermark)
       }
    }
    public iScreenShotFunct(id)
    {
       client_cmd(id, "snapshot")
    }
    P.S Промахнулся с темой, не туда написал, извиняйте, если не сложно, перенесите тему.
     
  2. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.692
    Симпатии:
    797
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    Знаю, как это реализовать в старой системе меню амхх, но не в новой. Подождем Неугомона
     
  3. ferz Пользователь

    Регистрация:
    02.03.15
    Сообщения:
    83
    Симпатии:
    69
    Пол:
    Мужской
    Или может у кого нибудь есть нормальное скрин меню для админов и кому не жалко поделиться?)) Буду очень благодарен!)
    Нужно обычное меню с возможностью делать скрин без всяких там наворотов, просто сообщение в чат администратору, что он сделал скрин такому то игроку)
     
  4. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.692
    Симпатии:
    797
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    На работоспособность не проверял
    PHP:
    #include <amxmodx>

    #define PLUGIN "Snapshot"

    new pl[32], pnumg_menupos;

    public 
    plugin_init()
    {
        
    register_clcmd("ss_menu""cmdSnapshotMenu");
        
    register_menucmd(register_menuid("Snapshot menu"), 1023"PlayerHandler");
    }

    public 
    cmdSnapshotMenu(id)
    {
        if(!(
    get_user_flags(id) & ADMIN_IMMUNITY)) return PLUGIN_HANDLED;
        return 
    SnapshotMenu(id0);
    }

    SnapshotMenu(idpos)
    {
        static 
    menu[512], lenkeysname[32], astartend;
        
    get_players(plpnum"ch"); start pos 8end start 80;

        if(
    start >= pnum)    start pos g_menupos 0;
        if(
    end pnum)        end pnum;

        
    len formatex(menucharsmax(menu), "\d[\rSnapshot menu\d] \yВыберите игрока\w\R%d/%d^n^n"pos 1, (pnum + ((pnum 7) ? 0))), keys MENU_KEY_0;
        for(new 
    startendi++)
        {
            
    get_user_name(pl[i], namecharsmax(name));

            if(
    id == pl[i])
                
    len += formatex(menu[len], charsmax(menu)-len"\r%d. \d%s \y[\rВы\y]^n", ++aname);
            else
            {
                
    keys |= (1<<a++);
                
    len += formatex(menu[len], charsmax(menu)-len"\r%d. \w%s^n"aname);
            }
        }
        if(
    end != pnum)
        {
            
    formatex(menu[len], charsmax(menu)-len"^n\r9. \yДалее^n\r0. \r%s"pos "Назад" "Выход");
            
    keys |= MENU_KEY_9;
        }
        else 
    formatex(menu[len], charsmax(menu)-len"^n\r0. \r%s"pos "Назад" "Выход");

        return 
    show_menu(idkeysmenu, -1"Snapshot menu");
    }

    public 
    PlayerHandler(idkey)
    {
        switch(
    key)
        {
            case 
    8SnapshotMenu(id, ++g_menupos);
            case 
    9: if(g_menuposSnapshotMenu(id, --g_menupos);
            default:
            {
                new 
    player pl[g_menupos key], name[32], name2[32], times[32];

                
    get_user_name(idnamecharsmax(name));
                
    get_user_name(playername2charsmax(name2));
                
    get_time("%d.%m.%Y - %H:%M:%S"timescharsmax(times));

                
    client_cmd(id"snapshot");

                
    set_hudmessage(2252252250.010.8211.05.0);
                
    show_hudmessage(id"[%s]^nАдминистратор: %s^nСделал скриншот игроку: %s^nСкриншот был сделан: %s"PLUGINnamename2times);
                
    log_to_file("addons\amxmodx\logs\ss_menu.log""Администратор '%s' сделал скриншот игроку '%s'"namename2);

                
    SnapshotMenu(idg_menupos);
            }
        }
        return 
    PLUGIN_HANDLED;
    }
     
    ferz нравится это.
  5. gegelga Пользователь

    Регистрация:
    17.03.15
    Сообщения:
    62
    Симпатии:
    11
    Попробуй удалить
    menu_destroy(menu)
     
  6. ferz Пользователь

    Регистрация:
    02.03.15
    Сообщения:
    83
    Симпатии:
    69
    Пол:
    Мужской
    Пробовал, не помогло.
     
  7. gegelga Пользователь

    Регистрация:
    17.03.15
    Сообщения:
    62
    Симпатии:
    11
    пробуй
    Код:
    #include <amxmodx>
    #include <fun>
    #include <dhudmessage>
    new const PLUGIN[]              = "Русский стандарт"
    new const VERSION[]             = "1.2"
    new const NAME[]                = "Bonaqua | DimaS"
    new const FILE[]                = "ss_menu.cfg"                 // Файл с настройками
    new const OPEN_ACCESS   = ADMIN_RESERVATION
    const Float:HUD_MESSAGE_X = 0.01
    const Float:HUD_MESSAGE_Y = 0.82
    const Float:HUD_WATERMARK_X = -1.0
    const Float:HUD_WATERMARK_Y = 0.88
    new pcv_watermark_enabled
    new pcv_watermark
    new pcv_enable
    new pcv_msg
    public plugin_init()
    {
            register_plugin( PLUGIN, VERSION, NAME )
          
            pcv_enable                              = register_cvar("amx_ssm_enabled", "1")
            pcv_msg                                 = register_cvar("amx_ssm_message", "1")
            pcv_watermark_enabled   = register_cvar("amx_ssm_watermark_enabled", "0")
            pcv_watermark                   = register_cvar("amx_ssm_watermark", "")
            register_clcmd("s_menu", "iScreenShotMenu")
            register_clcmd("say s_menu", "iScreenShotMenu")
            register_clcmd("say /s_menu", "iScreenShotMenu")
            register_clcmd("say_team s_menu", "iScreenShotMenu")
            register_clcmd("say_team /s_menu", "iScreenShotMenu")
    }
    public plugin_cfg()
    {
            new ConfigsDir[64]
            get_localinfo("amxx_configsdir", ConfigsDir, charsmax(ConfigsDir))
            format(ConfigsDir, charsmax(ConfigsDir), "%s/%s", ConfigsDir, FILE)
          
            if (!file_exists(ConfigsDir))
            {
                    server_print("==================================================================")
                    server_print("File [%s] not found!", ConfigsDir)
                    server_print("==================================================================")
                    return;
            }
            server_cmd("exec ^"%s^"", ConfigsDir)
    }
    public iScreenShotMenu(id)
    {
            if(!get_pcvar_num(pcv_enable))
            {
                    ChatColor(id, "^4[%s]^1 Меню снятие скриншотов выключено!", PLUGIN)
                    return false
            }
                  
            if(get_user_flags(id) & OPEN_ACCESS)
            {
                  
                    new szLen[1024 char]
                    formatex(szLen, charsmax(szLen), "\r[\y%s\r]\w Выбирайте игрока:", PLUGIN)
                    new iMenu = menu_create(szLen, "menu_handler")
                    new s_Players[32], i_Num, iPlayer
                    new s_Name[32], s_Player[10]
                    get_players(s_Players, i_Num)
                    for (new i; i < i_Num; i++)
                    {
                            iPlayer = s_Players[i]
                            get_user_name(iPlayer, s_Name, charsmax(s_Name))
                            num_to_str(iPlayer, s_Player, charsmax(s_Player))
                            menu_additem(iMenu, s_Name, s_Player, 0)
                    }
                  
                    menu_display(id, iMenu, 0)
                    return PLUGIN_HANDLED
            }
            else
            ChatColor(id, "^3[^4%s^3]^1 В доступе отказано!", PLUGIN)
            return PLUGIN_HANDLED
    }
    public menu_handler(id, menu, item)
    {
            if (item == MENU_EXIT)
            {
                    return PLUGIN_HANDLED
            }
            new s_Data[6], s_Name[64], i_Access, i_Callback
            menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
            new iPlayer = str_to_num(s_Data)
          
            if(!is_user_connected(iPlayer))
            {
                    ChatColor(id, "^4[%s]^1 Игрок не подключён к серверу!", PLUGIN)
                    iScreenShotMenu(id)
                    return PLUGIN_HANDLED
            }
          
            iScreenShotMenu(id)
          
            iScreenShotMsg(iPlayer, id)
          
            set_task(0.3, "iScreenShotFunct", iPlayer)
            return PLUGIN_HANDLED
    }
    iScreenShotMsg(id, iPlayer)
    {
            if(get_pcvar_num(pcv_msg))
            {
                    new playername[128], adminname[128], times[32]
                  
                    get_user_name(id, playername, charsmax(playername))
                    get_user_name(iPlayer, adminname, charsmax(adminname))
                  
                    get_time("%d.%m.%Y - %H:%M:%S", times, 31)
                  
                    set_hudmessage( 225, 225, 225, HUD_MESSAGE_X, HUD_MESSAGE_Y, 1, 1.0, 5.0 )
                    show_hudmessage( id , "[%s]^nАдминистратор: %s^nСделал скриншот игроку: %s^nСкриншот был сделан: %s", PLUGIN , adminname, playername, times)
                  
                    log_to_file("addons\amxmodx\logs\ss_menu.log", "Администратор '%s' сделал скриншот игроку '%s'", adminname, playername)
            }
          
            if(get_pcvar_num(pcv_watermark_enabled))
            {
                    new Watermark[32]
                    get_pcvar_string(pcv_watermark, Watermark, 31)
                  
                    set_dhudmessage( 0, 225, 0, HUD_WATERMARK_X, HUD_WATERMARK_Y, 2, 1.0, 5.0 )
                    show_dhudmessage( id , Watermark)
            }
    }
    public iScreenShotFunct(id)
    {
            client_cmd(id, "snapshot")
    }
    
    stock ChatColor(const id, const szMessage[], any:...)
    {
        static pnum, players[32], szMsg[190], IdMsg;
        vformat(szMsg, charsmax(szMsg), szMessage, 3);
       
        if(!IdMsg) IdMsg = get_user_msgid("SayText");
       
        if(id)
        {
            if(!is_user_connected(id)) return;
            players[0] = id;
            pnum = 1;
        }
        else get_players(players, pnum, "ch");
       
        for(new i; i < pnum; i++)
        {
            message_begin(MSG_ONE, IdMsg, .player = players[i]);
            write_byte(players[i]);
            write_string(szMsg);
            message_end();
        }
    }