1. pr0.JeR Пользователь

    Регистрация:
    10.06.15
    Сообщения:
    338
    Симпатии:
    29
    Пол:
    Мужской
    Вообщем есть плагин, хочу добавить чтоб он был в меню amxmodmenu. Смотрел принип реализации Plugin Cvars что то та и не допер как сделать. Если кто может подскажите.
    PHP:
    1. #include <amxmodx>
    2. #include <hamsandwich>
    3.  
    4. #define PLUGIN    "Screen Shot Menu"
    5. #define AUTHOR    "trofian"
    6. #define VERSION    "1.2"
    7.  
    8. #define is_entity_player(%1) 1<=%1<=g_maxplayers
    9. #define ACCESSFLAG ADMIN_KICK
    10.  
    11. #define LOG_PATH "!screen_shot_admins_log.txt" // ыы пути не поддерживаются
    12.  
    13. const Float:c_hudtime = 4.5
    14. const c_killstoscreen = 5
    15.  
    16. new g_KillsInOneLife[33]
    17. new g_szMapname[128]
    18. new g_maxplayers
    19.  
    20. public plugin_init()
    21. {
    22.     register_plugin(PLUGIN, VERSION, AUTHOR)
    23.    
    24.     register_clcmd("say /smenu", "dysplay_menu")
    25.     register_clcmd("say_team /smenu", "dysplay_menu")
    26.     register_clcmd("smenu", "dysplay_menu")
    27.    
    28.     register_event("ResetHUD", "ResetHUD", "be")
    29.    
    30.     register_logevent("RoundEnded",2,"1=Round_End")
    31.    
    32.     RegisterHam(Ham_Killed, "player", "kills_counter", 1)
    33.    
    34.     get_mapname(g_szMapname, charsmax(g_szMapname))
    35.     g_maxplayers = get_maxplayers()
    36. }
    37.  
    38. public dysplay_menu(id)
    39. {
    40.     if(!(get_user_flags(id) & ACCESSFLAG))
    41.         return PLUGIN_CONTINUE
    42.    
    43.     new Menu = menu_create("\yScreen Shots Menu \r:3", "menu_handler")
    44.    
    45.     new Player
    46.     new sPlayerName[128]
    47.     new sPlayerId[11]
    48.    
    49.     new playersListAlive[32]
    50.     new playersnumAlive
    51.     get_players(playersListAlive, playersnumAlive, "ach")
    52.    
    53.     for(new i; i<playersnumAlive; i++)
    54.     {
    55.         Player = playersListAlive[i]
    56.         get_user_name(Player, sPlayerName, charsmax(sPlayerName))
    57.         num_to_str(Player, sPlayerId, charsmax(sPlayerId))
    58.         menu_additem(Menu, sPlayerName, sPlayerId, 0)
    59.     }
    60.    
    61.     new playersListDead[32]
    62.     new playersnumDead
    63.     get_players(playersListDead, playersnumDead, "bch")
    64.    
    65.     for(new i; i<playersnumDead; i++)
    66.     {
    67.         Player = playersListDead[i]
    68.         get_user_name(Player, sPlayerName, charsmax(sPlayerName))
    69.         format(sPlayerName, charsmax(sPlayerName), "%s \r[Dead]", sPlayerName)
    70.         num_to_str(Player, sPlayerId, charsmax(sPlayerId))
    71.         menu_additem(Menu, sPlayerName, sPlayerId, 0)
    72.     }
    73.    
    74.     menu_display(id, Menu, 0)
    75.    
    76.     return PLUGIN_HANDLED
    77. }
    78.  
    79. public menu_handler(id, menu, item)
    80. {
    81.     if (item == MENU_EXIT)
    82.     {
    83.         menu_destroy(menu)
    84.         return PLUGIN_HANDLED
    85.     }
    86.    
    87.     new s_Data[6], s_Name[64], i_Access, i_Callback
    88.     menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    89.    
    90.     new Player = str_to_num(s_Data)
    91.    
    92.     if(!is_user_connected(Player))
    93.     {
    94.         print_col_chat(id, "!g[%s] !yPlayer is not connected. We can't make a screenshot.", PLUGIN)
    95.         dysplay_menu(id)
    96.         return PLUGIN_HANDLED
    97.     }
    98.    
    99.     dysplay_menu(id)
    100.     dysplay_hud(Player, id)
    101.     set_task(0.5, "take_screenshot", Player)
    102.    
    103.     return PLUGIN_CONTINUE
    104. }
    105.  
    106. public ResetHUD(id)
    107. {
    108.     if(!is_user_alive(id)) // omfg, да пох
    109.         return PLUGIN_CONTINUE
    110.    
    111.     g_KillsInOneLife[id] = 0
    112.  
    113.     return PLUGIN_CONTINUE
    114. }
    115.  
    116. public RoundEnded()
    117. {
    118.     for(new i = 1; i<=g_maxplayers; i++)
    119.     {
    120.         if(is_user_connected(i) && !is_user_bot(i) && g_KillsInOneLife[i] >= c_killstoscreen)
    121.         {
    122.             dysplay_hud(i, -1)
    123.             set_task(0.5, "take_screenshot", i)
    124.         }
    125.     }
    126. }
    127.  
    128. public kills_counter(victim, attacker, corpse)
    129.     if(is_entity_player(attacker))
    130.         g_KillsInOneLife[attacker]++
    131.  
    132.  
    133. dysplay_hud(id, admin)
    134. {  
    135.     new szIP[32]
    136.     new szSteamId[32]
    137.     new szPlayername[128]
    138.    
    139.     get_user_ip(id, szIP, charsmax(g_szMapname), 1)
    140.     get_user_authid(id, szSteamId, charsmax(g_szMapname))
    141.     get_user_name(id, szPlayername, charsmax(szPlayername))
    142.    
    143.     new szSteam[32]
    144.     if(is_user_steam(id)) format(szSteam, charsmax(szSteam), "true steam")
    145.     else format(szSteam, charsmax(szSteam), "Not true steam")
    146.    
    147.     new szCurrTime[21]
    148.     get_time("%c", szCurrTime, charsmax(szCurrTime))
    149.    
    150.     if(admin == -1)
    151.     {
    152.         log_to_file(LOG_PATH, "Automatic has created a screenshot (%d or more kills in round) at %s; INFO: [Mapname] %s; [Steam Id] %s (%s); [IP] %s; [Playername] %s",
    153.             c_killstoscreen, szCurrTime, g_szMapname, szSteamId, szSteam, szIP, szPlayername)
    154.     }
    155.     else
    156.     {
    157.         new szAdminAuth[32]
    158.         new szAdminname[128]
    159.        
    160.         get_user_authid(id, szAdminAuth, charsmax(szAdminAuth))
    161.         get_user_name(id, szAdminname, charsmax(szAdminname))
    162.        
    163.         log_to_file(LOG_PATH, "Admin [Steam: %s; Name: %s] has created a screenshot at %s; INFO: [Mapname] %s; [Steam Id] %s (%s); [IP] %s; [Playername] %s",
    164.             szAdminAuth, szAdminname, szCurrTime, g_szMapname, szSteamId, szSteam, szIP, szPlayername)
    165.     }
    166.    
    167.     set_hudmessage(0, 140, 240, -0.70, 0.20, 0, 0.0, c_hudtime, 0.0, 0.0, -1) // любой канал
    168.     show_hudmessage(id, "[Mapname] %s^n[Steam Id] %s (%s)^n[IP] %s^n[Playername] %s^nThe screenshot has been made at %s",g_szMapname, szSteamId, szSteam, szIP, szPlayername, szCurrTime)
    169. }  
    170.  
    171. public take_screenshot(id) client_cmd(id, "snapshot")
    172.  
    173. stock print_col_chat(const id, const input[], any:...)
    174. {
    175.     new count = 1, players[32]
    176.     static msg[191]
    177.     vformat(msg, 190, input, 3)
    178.     replace_all(msg, 190, "!g", "^4") // Green Color
    179.     replace_all(msg, 190, "!y", "^1") // Default Color
    180.     replace_all(msg, 190, "!t", "^3") // Team Color
    181.    
    182.     if (id)
    183.         players[0] = id
    184.     else
    185.         get_players(players, count, "ch")
    186.    
    187.     {
    188.         for ( new i = 0; i < count; i++ )
    189.         {
    190.             if (is_user_connected(players[i]))
    191.             {
    192.                 message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
    193.                 write_byte(players[i])
    194.                 write_string(msg)
    195.                 message_end()
    196.             }
    197.         }
    198.     }
    199. }
    200.  
    201. stock bool:is_user_steam(id)
    202. {
    203.     static dp_pointer
    204.     if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
    205.     {
    206.         server_cmd("dp_clientinfo %d", id)
    207.         server_exec()
    208.         return (get_pcvar_num(dp_pointer) == 2) ? true : false
    209.     }
    210.     return false
    211. }
    212.  
     
  2. HannibaL Команда форума

    Регистрация:
    28.02.15
    Сообщения:
    1.057
    Симпатии:
    216
    Пол:
    Мужской
    в menufront просто добавь еще одну строчку с smenu
     
  3. pr0.JeR Пользователь

    Регистрация:
    10.06.15
    Сообщения:
    338
    Симпатии:
    29
    Пол:
    Мужской
    HannibaL, пробовал, он становиться 9, а на цифре 9 у меня следующаяя страница в результате *ОПА =)
    [​IMG]
     
  4. ThePhoenix Пользователь

    Регистрация:
    08.03.15
    Сообщения:
    1.423
    Симпатии:
    136
    Пол:
    Мужской
    Skype:
    the.phoenix666
    pr0.JeR, у меня добавлена 9ая кнопка и всё адекватно :)
    щас в код загляну.
     
  5. dimka198 Пользователь

    Регистрация:
    21.04.15
    Сообщения:
    231
    Симпатии:
    25
    Пол:
    Мужской
    pr0.JeR, скинь строку которую добавляешь.
     
  6. pr0.JeR Пользователь

    Регистрация:
    10.06.15
    Сообщения:
    338
    Симпатии:
    29
    Пол:
    Мужской
    PHP:
    1. AddDefaultMenus()
    2. {
    3.     new flags;
    4.  
    5.     AddMenuLang("KICK_PLAYER", "amx_kickmenu", get_clcmd_flags("amx_kickmenu", flags) ? flags : ADMIN_KICK , "Players Menu")
    6.     AddMenuLang("BAN_PLAYER", "amx_banmenu", get_clcmd_flags("amx_banmenu", flags) ? flags : ADMIN_BAN, "Players Menu")
    7.     AddMenuLang("SPECH_STUFF", "amx_nicksmenu", get_clcmd_flags("amx_nicksmenu", flags) ? flags : ADMIN_KICK, "Players Menu")
    8.     AddMenuLang("TEAM_PLAYER", "amx_teammenu", get_clcmd_flags("amx_teammenu", flags) ? flags : ADMIN_BAN, "Players Menu")
    9.     AddMenuLang("SLAP_SLAY", "amx_slapmenu", get_clcmd_flags("amx_slapmenu", flags) ? flags : ADMIN_BAN, "Players Menu")
    10.     AddMenuLang("VOTE_MAPS", "amx_votemapmenu", get_clcmd_flags("amx_votemapmenu", flags) ? flags : ADMIN_VOTE, "Maps Menu")
    11.     AddMenuLang("CHANGEL", "amx_mapmenu", get_clcmd_flags("amx_mapmenu", flags) ? flags : ADMIN_MAP, "Maps Menu")
    12.     AddMenuLang("SERVER_COM", "amx_cmdmenu", get_clcmd_flags("amx_cmdmenu", flags) ? flags : ADMIN_MENU, "Commands Menu")
    13.     AddMenuLang("SCREEN_MENU", "smenu", get_clcmd_flags("smenu", flags) ? flags : ADMIN_KICK, "Players Menu")
    14.  
    15. }
    моя последняя строка
     
  7. HannibaL Команда форума

    Регистрация:
    28.02.15
    Сообщения:
    1.057
    Симпатии:
    216
    Пол:
    Мужской
    pr0.JeR, убирай кнопку "Дальше", либо на вторую станицу сделай
     
    pr0.JeR нравится это.
  8. HoBu4oK VIP user

    Регистрация:
    28.02.15
    Сообщения:
    348
    Симпатии:
    47
    Светофор в меню - это сейчас мода такая? Хотя, у школоты это всегда в моде)
     
  9. pr0.JeR Пользователь

    Регистрация:
    10.06.15
    Сообщения:
    338
    Симпатии:
    29
    Пол:
    Мужской
    если не сложно можно по подробнее :oops:
     

    Вложения:

    • menufront.sma
      Размер файла:
      12,4 КБ
      Просмотров:
      10
  10. Gliden Пользователь

    Регистрация:
    29.06.15
    Сообщения:
    93
    Симпатии:
    34
    Пол:
    Мужской
    pr0.JeR, Тестируй ! :)
     

    Вложения:

    • menufront.sma
      Размер файла:
      12,4 КБ
      Просмотров:
      5
  11. pr0.JeR Пользователь

    Регистрация:
    10.06.15
    Сообщения:
    338
    Симпатии:
    29
    Пол:
    Мужской
    Gliden, Там ни чего не добавилось, я сравнил с постом выше.
     
  12. Sly Пользователь

    Регистрация:
    17.11.15
    Сообщения:
    53
    Симпатии:
    24
    Пол:
    Мужской
    #define MENUITEMSPERPAGE 8
    сделай так и 9 строка будет на следущей странице
     
    x00peR нравится это.
  13. Sly Пользователь

    Регистрация:
    17.11.15
    Сообщения:
    53
    Симпатии:
    24
    Пол:
    Мужской
    И вместо
    Players Menu можно Commands Menu
     
    x00peR нравится это.
  14. pr0.JeR Пользователь

    Регистрация:
    10.06.15
    Сообщения:
    338
    Симпатии:
    29
    Пол:
    Мужской
    Sly, все спасибо работает
     
  15. nazar Пользователь

    Регистрация:
    07.07.15
    Сообщения:
    56
    Симпатии:
    26
    Пол:
    Мужской
    Skype:
    servercs69
    ICQ:
    595543687
    это ведь дефолтный menufront?