hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.08. 14:17



Jelenlévő felhasználók

Jelenleg 377 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 376 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Google [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 7 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Sniper
HozzászólásElküldve: 2016.07.19. 11:03 
Offline
Jómunkásember

Csatlakozott: 2016.06.20. 10:23
Hozzászólások: 489
Megköszönt másnak: 47 alkalommal
Megköszönték neki: 15 alkalommal
Sziasztok! Sniper mod kellene zombie Plague 5.0-ba!

_________________
BfS* #Team ~Global Offensive IP: 217.144.54.193:27148

Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Sniper
HozzászólásElküldve: 2016.07.19. 11:09 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2015.07.14. 14:30
Hozzászólások: 380
Megköszönt másnak: 43 alkalommal
Megköszönték neki: 30 alkalommal
Itt fennt van a .ZIP-je ha letöltötted akkor mappák szerint feltöltöd , majd pedig a zombie-plugins.ini-be ezt a kettőt be írod:

zp50_class_assassin (ha ez nem kell ne írd bele)
zp50_class_sniper

https://forums.alliedmods.net/showthread.php?t=182399

U.I: Ebbe benne van a(z) Assasin mód is.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Sniper
HozzászólásElküldve: 2016.07.20. 15:17 
Offline
Jómunkásember

Csatlakozott: 2016.06.20. 10:23
Hozzászólások: 489
Megköszönt másnak: 47 alkalommal
Megköszönték neki: 15 alkalommal
Ebbe hogy írjam bele a(Z) Sniper, Assassin, modot? Mert nekem errort ír mindig..
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6. #include <amx_settings_api>
  7. #include <zp50_core>
  8. #include <zp50_gamemodes>
  9. #define LIBRARY_NEMESIS "zp50_class_nemesis"
  10. #include <zp50_class_nemesis>
  11. #define LIBRARY_SURVIVOR "zp50_class_survivor"
  12. #include <zp50_class_survivor>
  13. #include <zp50_admin_commands>
  14. #include <zp50_colorchat>
  15.  
  16. // Settings file
  17. new const ZP_SETTINGS_FILE[] = "zombieplague.ini"
  18.  
  19. #define ACCESSFLAG_MAX_LENGTH 2
  20.  
  21. // Access flags
  22. new g_access_make_zombie[ACCESSFLAG_MAX_LENGTH] = "d"
  23. new g_access_make_human[ACCESSFLAG_MAX_LENGTH] = "d"
  24. new g_access_make_nemesis[ACCESSFLAG_MAX_LENGTH] = "d"
  25. new g_access_make_survivor[ACCESSFLAG_MAX_LENGTH] = "d"
  26. new g_access_respawn_players[ACCESSFLAG_MAX_LENGTH] = "d"
  27. new g_access_start_game_mode[ACCESSFLAG_MAX_LENGTH] = "d"
  28.  
  29. // Admin menu actions
  30. enum
  31. {
  32.     ACTION_INFECT_CURE = 0,
  33.     ACTION_MAKE_NEMESIS,
  34.     ACTION_MAKE_SURVIVOR,
  35.     ACTION_RESPAWN_PLAYER,
  36.     ACTION_START_GAME_MODE
  37. }
  38.  
  39. // Menu keys
  40. const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
  41.  
  42. // CS Player PData Offsets (win32)
  43. const OFFSET_CSMENUCODE = 205
  44.  
  45. #define MAXPLAYERS 32
  46.  
  47. // For player/mode list menu handlers
  48. #define PL_ACTION g_menu_data[id][0]
  49. #define MENU_PAGE_PLAYERS g_menu_data[id][1]
  50. #define MENU_PAGE_GAME_MODES g_menu_data[id][2]
  51. new g_menu_data[MAXPLAYERS+1][3]
  52.  
  53. new g_MaxPlayers
  54.  
  55. public plugin_init()
  56. {
  57.     register_plugin("[ZP] Admin Menus", ZP_VERSION_STRING, "ZP Dev Team")
  58.    
  59.     g_MaxPlayers = get_maxplayers()
  60.    
  61.     register_menu("Admin Menu", KEYSMENU, "menu_admin")
  62.     register_clcmd("say /adminmenu", "clcmd_adminmenu")
  63.     register_clcmd("say adminmenu", "clcmd_adminmenu")
  64. }
  65.  
  66. public plugin_precache()
  67. {
  68.     // Load from external file, save if not found
  69.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ZOMBIE", g_access_make_zombie, charsmax(g_access_make_zombie)))
  70.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ZOMBIE", g_access_make_zombie)
  71.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE HUMAN", g_access_make_human, charsmax(g_access_make_human)))
  72.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ZOMBIE", g_access_make_human)
  73.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE NEMESIS", g_access_make_nemesis, charsmax(g_access_make_nemesis)))
  74.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE NEMESIS", g_access_make_nemesis)
  75.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE SURVIVOR", g_access_make_survivor, charsmax(g_access_make_survivor)))
  76.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE SURVIVOR", g_access_make_survivor)
  77.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "RESPAWN PLAYERS", g_access_respawn_players, charsmax(g_access_respawn_players)))
  78.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "RESPAWN PLAYERS", g_access_respawn_players)
  79.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "START GAME MODE", g_access_start_game_mode, charsmax(g_access_start_game_mode)))
  80.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "START GAME MODE", g_access_start_game_mode)
  81. }
  82.  
  83. public plugin_natives()
  84. {
  85.     register_library("zp50_admin_menu")
  86.     register_native("zp_admin_menu_show", "native_admin_menu_show")
  87.    
  88.     set_module_filter("module_filter")
  89.     set_native_filter("native_filter")
  90. }
  91. public module_filter(const module[])
  92. {
  93.     if (equal(module, LIBRARY_NEMESIS) || equal(module, LIBRARY_SURVIVOR))
  94.         return PLUGIN_HANDLED;
  95.    
  96.     return PLUGIN_CONTINUE;
  97. }
  98. public native_filter(const name[], index, trap)
  99. {
  100.     if (!trap)
  101.         return PLUGIN_HANDLED;
  102.        
  103.     return PLUGIN_CONTINUE;
  104. }
  105.  
  106. public native_admin_menu_show(plugin_id, num_params)
  107. {
  108.     new id = get_param(1)
  109.    
  110.     if (!is_user_connected(id))
  111.     {
  112.         log_error(AMX_ERR_NATIVE, "[DWSS] Invalid Player (%d)", id)
  113.         return false;
  114.     }
  115.    
  116.     show_menu_admin(id)
  117.     return true;
  118. }
  119.  
  120. public client_disconnect(id)
  121. {
  122.     // Reset remembered menu pages
  123.     MENU_PAGE_GAME_MODES = 0
  124.     MENU_PAGE_PLAYERS = 0
  125. }
  126.  
  127. public clcmd_adminmenu(id)
  128. {
  129.     show_menu_admin(id)
  130. }
  131.  
  132. // Admin Menu
  133. show_menu_admin(id)
  134. {
  135.     static menu[250]
  136.     new len, userflags = get_user_flags(id)
  137.    
  138.     // Title
  139.     len += formatex(menu[len], charsmax(menu) - len, "\y%L:^n^n", id, "MENU_ADMIN_TITLE")
  140.    
  141.     // 1. Infect/Cure command
  142.     if (userflags & (read_flags(g_access_make_zombie) | read_flags(g_access_make_human)))
  143.         len += formatex(menu[len], charsmax(menu) - len, "\r1.\w %L^n", id, "MENU_ADMIN1")
  144.     else
  145.         len += formatex(menu[len], charsmax(menu) - len, "\d1. %L^n", id, "MENU_ADMIN1")
  146.    
  147.     // 2. Nemesis command
  148.     if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)))
  149.         len += formatex(menu[len], charsmax(menu) - len, "\r2.\w %L^n", id, "MENU_ADMIN2")
  150.     else
  151.         len += formatex(menu[len], charsmax(menu) - len, "\d2. %L^n", id, "MENU_ADMIN2")
  152.    
  153.     // 3. Survivor command
  154.     if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)))
  155.         len += formatex(menu[len], charsmax(menu) - len, "\r3.\w %L^n", id, "MENU_ADMIN3")
  156.     else
  157.         len += formatex(menu[len], charsmax(menu) - len, "\d3. %L^n", id, "MENU_ADMIN3")
  158.    
  159.     // 4. Respawn command
  160.     if (userflags & read_flags(g_access_respawn_players))
  161.         len += formatex(menu[len], charsmax(menu) - len, "\r4.\w %L^n", id, "MENU_ADMIN4")
  162.     else
  163.         len += formatex(menu[len], charsmax(menu) - len, "\d4. %L^n", id, "MENU_ADMIN4")
  164.    
  165.     // 5. Start Game Mode command
  166.     if (userflags & read_flags(g_access_start_game_mode))
  167.         len += formatex(menu[len], charsmax(menu) - len, "\r5.\w %L^n", id, "MENU_ADMIN_START_GAME_MODE")
  168.     else
  169.         len += formatex(menu[len], charsmax(menu) - len, "\d5. %L^n", id, "MENU_ADMIN_START_GAME_MODE")
  170.    
  171.     // 0. Exit
  172.     len += formatex(menu[len], charsmax(menu) - len, "^n\r0.\w %L", id, "MENU_EXIT")
  173.    
  174.     // Fix for AMXX custom menus
  175.     set_pdata_int(id, OFFSET_CSMENUCODE, 0)
  176.     show_menu(id, KEYSMENU, menu, -1, "Admin Menu")
  177. }
  178.  
  179. // Player List Menu
  180. show_menu_player_list(id)
  181. {
  182.     static menu[128], player_name[32]
  183.     new menuid, player, buffer[2], userflags = get_user_flags(id)
  184.    
  185.     // Title
  186.     switch (PL_ACTION)
  187.     {
  188.         case ACTION_INFECT_CURE: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN1")
  189.         case ACTION_MAKE_NEMESIS: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN2")
  190.         case ACTION_MAKE_SURVIVOR: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN3")
  191.         case ACTION_RESPAWN_PLAYER: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN4")
  192.     }
  193.     menuid = menu_create(menu, "menu_player_list")
  194.    
  195.     // Player List
  196.     for (player = 0; player <= g_MaxPlayers; player++)
  197.     {
  198.         // Skip if not connected
  199.         if (!is_user_connected(player))
  200.             continue;
  201.        
  202.         // Get player's name
  203.         get_user_name(player, player_name, charsmax(player_name))
  204.        
  205.         // Format text depending on the action to take
  206.         switch (PL_ACTION)
  207.         {
  208.             case ACTION_INFECT_CURE: // Infect/Cure command
  209.             {
  210.                 if (zp_core_is_zombie(player))
  211.                 {
  212.                     if ((userflags & read_flags(g_access_make_human)) && is_user_alive(player))
  213.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  214.                     else
  215.                         formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  216.                 }
  217.                 else
  218.                 {
  219.                     if ((userflags & read_flags(g_access_make_zombie)) && is_user_alive(player))
  220.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  221.                     else
  222.                         formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  223.                 }
  224.             }
  225.             case ACTION_MAKE_NEMESIS: // Nemesis command
  226.             {
  227.                 if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)) && is_user_alive(player) && !zp_class_nemesis_get(player))
  228.                 {
  229.                     if (zp_core_is_zombie(player))
  230.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  231.                     else
  232.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  233.                 }
  234.                 else
  235.                     formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, zp_core_is_zombie(player) ? (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE" : (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  236.             }
  237.             case ACTION_MAKE_SURVIVOR: // Survivor command
  238.             {
  239.                 if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)) && is_user_alive(player) && !zp_class_survivor_get(player))
  240.                 {
  241.                     if (zp_core_is_zombie(player))
  242.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  243.                     else
  244.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  245.                 }
  246.                 else
  247.                     formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, zp_core_is_zombie(player) ? (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE" : (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  248.             }
  249.             case ACTION_RESPAWN_PLAYER: // Respawn command
  250.             {
  251.                 if ((userflags & read_flags(g_access_respawn_players)) && allowed_respawn(player))
  252.                     formatex(menu, charsmax(menu), "%s", player_name)
  253.                 else
  254.                     formatex(menu, charsmax(menu), "\d%s", player_name)
  255.             }
  256.         }
  257.        
  258.         // Add player
  259.         buffer[0] = player
  260.         buffer[1] = 0
  261.         menu_additem(menuid, menu, buffer)
  262.     }
  263.    
  264.     // Back - Next - Exit
  265.     formatex(menu, charsmax(menu), "%L", id, "MENU_BACK")
  266.     menu_setprop(menuid, MPROP_BACKNAME, menu)
  267.     formatex(menu, charsmax(menu), "%L", id, "MENU_NEXT")
  268.     menu_setprop(menuid, MPROP_NEXTNAME, menu)
  269.     formatex(menu, charsmax(menu), "%L", id, "MENU_EXIT")
  270.     menu_setprop(menuid, MPROP_EXITNAME, menu)
  271.    
  272.     // If remembered page is greater than number of pages, clamp down the value
  273.     MENU_PAGE_PLAYERS = min(MENU_PAGE_PLAYERS, menu_pages(menuid)-1)
  274.    
  275.     // Fix for AMXX custom menus
  276.     set_pdata_int(id, OFFSET_CSMENUCODE, 0)
  277.     menu_display(id, menuid, MENU_PAGE_PLAYERS)
  278. }
  279.  
  280. // Game Mode List Menu
  281. show_menu_game_mode_list(id)
  282. {
  283.     static menu[128], transkey[64]
  284.     new menuid, index, itemdata[2], game_mode_count = zp_gamemodes_get_count()
  285.    
  286.     // Title
  287.     formatex(menu, charsmax(menu), "%L:\r", id, "MENU_INFO4")
  288.     menuid = menu_create(menu, "menu_game_mode_list")
  289.    
  290.     // Item List
  291.     for (index = 0; index < game_mode_count; index++)
  292.     {
  293.         // Add Game Mode Name
  294.         zp_gamemodes_get_name(index, menu, charsmax(menu))
  295.        
  296.         // ML support for mode name
  297.         formatex(transkey, charsmax(transkey), "MODENAME %s", menu)
  298.         if (GetLangTransKey(transkey) != TransKey_Bad) formatex(menu, charsmax(menu), "%L", id, transkey)
  299.        
  300.         itemdata[0] = index
  301.         itemdata[1] = 0
  302.         menu_additem(menuid, menu, itemdata)
  303.     }
  304.    
  305.     // No game modes to display?
  306.     if (menu_items(menuid) <= 0)
  307.     {
  308.         menu_destroy(menuid)
  309.         return;
  310.     }
  311.    
  312.     // Back - Next - Exit
  313.     formatex(menu, charsmax(menu), "%L", id, "MENU_BACK")
  314.     menu_setprop(menuid, MPROP_BACKNAME, menu)
  315.     formatex(menu, charsmax(menu), "%L", id, "MENU_NEXT")
  316.     menu_setprop(menuid, MPROP_NEXTNAME, menu)
  317.     formatex(menu, charsmax(menu), "%L", id, "MENU_EXIT")
  318.     menu_setprop(menuid, MPROP_EXITNAME, menu)
  319.    
  320.     // If remembered page is greater than number of pages, clamp down the value
  321.     MENU_PAGE_GAME_MODES = min(MENU_PAGE_GAME_MODES, menu_pages(menuid)-1)
  322.    
  323.     // Fix for AMXX custom menus
  324.     set_pdata_int(id, OFFSET_CSMENUCODE, 0)
  325.     menu_display(id, menuid, MENU_PAGE_GAME_MODES)
  326. }
  327.  
  328. // Admin Menu
  329. public menu_admin(id, key)
  330. {
  331.     // Player disconnected?
  332.     if (!is_user_connected(id))
  333.         return PLUGIN_HANDLED;
  334.    
  335.     new userflags = get_user_flags(id)
  336.    
  337.     switch (key)
  338.     {
  339.         case ACTION_INFECT_CURE: // Infect/Cure command
  340.         {
  341.             if (userflags & (read_flags(g_access_make_zombie) | read_flags(g_access_make_human)))
  342.             {
  343.                 // Show player list for admin to pick a target
  344.                 PL_ACTION = ACTION_INFECT_CURE
  345.                 show_menu_player_list(id)
  346.             }
  347.             else
  348.             {
  349.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  350.                 show_menu_admin(id)
  351.             }
  352.         }
  353.         case ACTION_MAKE_NEMESIS: // Nemesis command
  354.         {
  355.             if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)))
  356.             {
  357.                 // Show player list for admin to pick a target
  358.                 PL_ACTION = ACTION_MAKE_NEMESIS
  359.                 show_menu_player_list(id)
  360.             }
  361.             else
  362.             {
  363.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  364.                 show_menu_admin(id)
  365.             }
  366.         }
  367.         case ACTION_MAKE_SURVIVOR: // Survivor command
  368.         {
  369.             if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)))
  370.             {
  371.                 // Show player list for admin to pick a target
  372.                 PL_ACTION = ACTION_MAKE_SURVIVOR
  373.                 show_menu_player_list(id)
  374.             }
  375.             else
  376.             {
  377.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  378.                 show_menu_admin(id)
  379.             }
  380.         }
  381.         case ACTION_RESPAWN_PLAYER: // Respawn command
  382.         {
  383.             if (userflags & read_flags(g_access_respawn_players))
  384.             {
  385.                 // Show player list for admin to pick a target
  386.                 PL_ACTION = ACTION_RESPAWN_PLAYER
  387.                 show_menu_player_list(id)
  388.             }
  389.             else
  390.             {
  391.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  392.                 show_menu_admin(id)
  393.             }
  394.         }
  395.         case ACTION_START_GAME_MODE: // Start Game Mode command
  396.         {
  397.             if (userflags & read_flags(g_access_start_game_mode))
  398.                 show_menu_game_mode_list(id)
  399.             else
  400.             {
  401.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  402.                 show_menu_admin(id)
  403.             }
  404.         }
  405.     }
  406.    
  407.     return PLUGIN_HANDLED;
  408. }
  409.  
  410. // Player List Menu
  411. public menu_player_list(id, menuid, item)
  412. {
  413.     // Menu was closed
  414.     if (item == MENU_EXIT)
  415.     {
  416.         MENU_PAGE_PLAYERS = 0
  417.         menu_destroy(menuid)
  418.         show_menu_admin(id)
  419.         return PLUGIN_HANDLED;
  420.     }
  421.    
  422.     // Remember player's menu page
  423.     MENU_PAGE_PLAYERS = item / 7
  424.    
  425.     // Retrieve player id
  426.     new buffer[2], dummy, player
  427.     menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy)
  428.     player = buffer[0]
  429.    
  430.     // Perform action on player
  431.    
  432.     // Get admin flags
  433.     new userflags = get_user_flags(id)
  434.    
  435.     // Make sure it's still connected
  436.     if (is_user_connected(player))
  437.     {
  438.         // Perform the right action if allowed
  439.         switch (PL_ACTION)
  440.         {
  441.             case ACTION_INFECT_CURE: // Infect/Cure command
  442.             {
  443.                 if (zp_core_is_zombie(player))
  444.                 {
  445.                     if ((userflags & read_flags(g_access_make_human)) && is_user_alive(player))
  446.                         zp_admin_commands_human(id, player)
  447.                     else
  448.                         zp_colored_print(id, "%L", id, "CMD_NOT")
  449.                 }
  450.                 else
  451.                 {
  452.                     if ((userflags & read_flags(g_access_make_zombie)) && is_user_alive(player))
  453.                         zp_admin_commands_zombie(id, player)
  454.                     else
  455.                         zp_colored_print(id, "%L", id, "CMD_NOT")
  456.                 }
  457.             }
  458.             case ACTION_MAKE_NEMESIS: // Nemesis command
  459.             {
  460.                 if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)) && is_user_alive(player) && !zp_class_nemesis_get(player))
  461.                     zp_admin_commands_nemesis(id, player)
  462.                 else
  463.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  464.             }
  465.             case ACTION_MAKE_SURVIVOR: // Survivor command
  466.             {
  467.                 if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)) && is_user_alive(player) && !zp_class_survivor_get(player))
  468.                     zp_admin_commands_survivor(id, player)
  469.                 else
  470.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  471.             }
  472.             case ACTION_RESPAWN_PLAYER: // Respawn command
  473.             {
  474.                 if ((userflags & read_flags(g_access_respawn_players)) && allowed_respawn(player))
  475.                     zp_admin_commands_respawn(id, player)
  476.                 else
  477.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  478.             }
  479.         }
  480.     }
  481.     else
  482.         zp_colored_print(id, "%L", id, "CMD_NOT")
  483.    
  484.     menu_destroy(menuid)
  485.     show_menu_player_list(id)
  486.     return PLUGIN_HANDLED;
  487. }
  488.  
  489. // Game Mode List Menu
  490. public menu_game_mode_list(id, menuid, item)
  491. {
  492.     // Menu was closed
  493.     if (item == MENU_EXIT)
  494.     {
  495.         MENU_PAGE_GAME_MODES = 0
  496.         menu_destroy(menuid)
  497.         show_menu_admin(id)
  498.         return PLUGIN_HANDLED;
  499.     }
  500.    
  501.     // Remember game modes menu page
  502.     MENU_PAGE_GAME_MODES = item / 7
  503.    
  504.     // Retrieve game mode id
  505.     new itemdata[2], dummy, game_mode_id
  506.     menu_item_getinfo(menuid, item, dummy, itemdata, charsmax(itemdata), _, _, dummy)
  507.     game_mode_id = itemdata[0]
  508.    
  509.     // Attempt to start game mode
  510.     zp_admin_commands_start_mode(id, game_mode_id)
  511.    
  512.     menu_destroy(menuid)
  513.     show_menu_game_mode_list(id)
  514.     return PLUGIN_HANDLED;
  515. }
  516.  
  517. // Checks if a player is allowed to respawn
  518. allowed_respawn(id)
  519. {
  520.     if (is_user_alive(id))
  521.         return false;
  522.    
  523.     new CsTeams:team = cs_get_user_team(id)
  524.    
  525.     if (team == CS_TEAM_SPECTATOR || team == CS_TEAM_UNASSIGNED)
  526.         return false;
  527.    
  528.     return true;
  529. }

Előreis köszönöm!

_________________
BfS* #Team ~Global Offensive IP: 217.144.54.193:27148

Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Sniper
HozzászólásElküldve: 2016.07.20. 15:28 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2015.07.14. 14:30
Hozzászólások: 380
Megköszönt másnak: 43 alkalommal
Megköszönték neki: 30 alkalommal
Beleírtam neked:

  1. /*================================================================================
  2.    
  3.     -----------------------
  4.     -*- [ZP] Admin Menu -*-
  5.     -----------------------
  6.    
  7.     This plugin is part of Zombie Plague Mod and is distributed under the
  8.     terms of the GNU General Public License. Check ZP_ReadMe.txt for details.
  9.    
  10. ================================================================================*/
  11.  
  12. #include <amxmodx>
  13. #include <amxmisc>
  14. #include <cstrike>
  15. #include <fakemeta>
  16. #include <hamsandwich>
  17. #include <amx_settings_api>
  18. #include <zp50_core>
  19. #include <zp50_gamemodes>
  20. #define LIBRARY_NEMESIS "zp50_class_nemesis"
  21. #include <zp50_class_nemesis>
  22. #define LIBRARY_ASSASSIN "zp50_class_assassin"
  23. #include <zp50_class_assassin>
  24. #define LIBRARY_SURVIVOR "zp50_class_survivor"
  25. #include <zp50_class_survivor>
  26. #define LIBRARY_SNIPER "zp50_class_sniper"
  27. #include <zp50_class_sniper>
  28. #include <zp50_admin_commands>
  29. #include <zp50_colorchat>
  30.  
  31. // Settings file
  32. new const ZP_SETTINGS_FILE[] = "zombieplague.ini"
  33.  
  34. #define ACCESSFLAG_MAX_LENGTH 2
  35.  
  36. // Access flags
  37. new g_access_make_zombie[ACCESSFLAG_MAX_LENGTH] = "d"
  38. new g_access_make_human[ACCESSFLAG_MAX_LENGTH] = "d"
  39. new g_access_make_nemesis[ACCESSFLAG_MAX_LENGTH] = "d"
  40. new g_access_make_assassin[ACCESSFLAG_MAX_LENGTH] = "d"
  41. new g_access_make_survivor[ACCESSFLAG_MAX_LENGTH] = "d"
  42. new g_access_make_sniper[ACCESSFLAG_MAX_LENGTH] = "d"
  43. new g_access_respawn_players[ACCESSFLAG_MAX_LENGTH] = "d"
  44. new g_access_start_game_mode[ACCESSFLAG_MAX_LENGTH] = "d"
  45.  
  46. // Admin menu actions
  47. enum
  48. {
  49.     ACTION_INFECT_CURE = 0,
  50.     ACTION_MAKE_NEMESIS,
  51.     ACTION_MAKE_ASSASSIN,
  52.     ACTION_MAKE_SURVIVOR,
  53.     ACTION_MAKE_SNIPER,
  54.     ACTION_RESPAWN_PLAYER,
  55.     ACTION_START_GAME_MODE
  56. }
  57.  
  58. // Menu keys
  59. const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
  60.  
  61. // CS Player PData Offsets (win32)
  62. const OFFSET_CSMENUCODE = 205
  63.  
  64. #define MAXPLAYERS 32
  65.  
  66. // For player/mode list menu handlers
  67. #define PL_ACTION g_menu_data[id][0]
  68. #define MENU_PAGE_PLAYERS g_menu_data[id][1]
  69. #define MENU_PAGE_GAME_MODES g_menu_data[id][2]
  70. new g_menu_data[MAXPLAYERS+1][3]
  71.  
  72. new g_MaxPlayers
  73.  
  74. public plugin_init()
  75. {
  76.     register_plugin("[ZP] Admin Menus", ZP_VERSION_STRING, "ZP Dev Team")
  77.    
  78.     g_MaxPlayers = get_maxplayers()
  79.    
  80.     register_menu("Admin Menu", KEYSMENU, "menu_admin")
  81.     register_clcmd("say /adminmenu", "clcmd_adminmenu")
  82.     register_clcmd("say adminmenu", "clcmd_adminmenu")
  83. }
  84.  
  85. public plugin_precache()
  86. {
  87.     // Load from external file, save if not found
  88.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ZOMBIE", g_access_make_zombie, charsmax(g_access_make_zombie)))
  89.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ZOMBIE", g_access_make_zombie)
  90.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE HUMAN", g_access_make_human, charsmax(g_access_make_human)))
  91.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ZOMBIE", g_access_make_human)
  92.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE NEMESIS", g_access_make_nemesis, charsmax(g_access_make_nemesis)))
  93.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE NEMESIS", g_access_make_nemesis)
  94.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ASSASSIN", g_access_make_assassin, charsmax(g_access_make_assassin)))
  95.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ASSASSIN", g_access_make_assassin)
  96.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE SURVIVOR", g_access_make_survivor, charsmax(g_access_make_survivor)))
  97.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE SURVIVOR", g_access_make_survivor)
  98.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE SNIPER", g_access_make_sniper, charsmax(g_access_make_sniper)))
  99.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE SNIPER", g_access_make_sniper)
  100.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "RESPAWN PLAYERS", g_access_respawn_players, charsmax(g_access_respawn_players)))
  101.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "RESPAWN PLAYERS", g_access_respawn_players)
  102.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "START GAME MODE", g_access_start_game_mode, charsmax(g_access_start_game_mode)))
  103.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "START GAME MODE", g_access_start_game_mode)
  104. }
  105.  
  106. public plugin_natives()
  107. {
  108.     register_library("zp50_admin_menu")
  109.     register_native("zp_admin_menu_show", "native_admin_menu_show")
  110.    
  111.     set_module_filter("module_filter")
  112.     set_native_filter("native_filter")
  113. }
  114. public module_filter(const module[])
  115. {
  116.     if (equal(module, LIBRARY_NEMESIS) || equal(module, LIBRARY_ASSASSIN) || equal(module, LIBRARY_SURVIVOR) || equal(module, LIBRARY_SNIPER))
  117.         return PLUGIN_HANDLED;
  118.    
  119.     return PLUGIN_CONTINUE;
  120. }
  121. public native_filter(const name[], index, trap)
  122. {
  123.     if (!trap)
  124.         return PLUGIN_HANDLED;
  125.        
  126.     return PLUGIN_CONTINUE;
  127. }
  128.  
  129. public native_admin_menu_show(plugin_id, num_params)
  130. {
  131.     new id = get_param(1)
  132.    
  133.     if (!is_user_connected(id))
  134.     {
  135.         log_error(AMX_ERR_NATIVE, "[ZP] Invalid Player (%d)", id)
  136.         return false;
  137.     }
  138.    
  139.     show_menu_admin(id)
  140.     return true;
  141. }
  142.  
  143. public client_disconnect(id)
  144. {
  145.     // Reset remembered menu pages
  146.     MENU_PAGE_GAME_MODES = 0
  147.     MENU_PAGE_PLAYERS = 0
  148. }
  149.  
  150. public clcmd_adminmenu(id)
  151. {
  152.     show_menu_admin(id)
  153. }
  154.  
  155. // Admin Menu
  156. show_menu_admin(id)
  157. {
  158.     static menu[250]
  159.     new len, userflags = get_user_flags(id)
  160.    
  161.     // Title
  162.     len += formatex(menu[len], charsmax(menu) - len, "\y%L:^n^n", id, "MENU_ADMIN_TITLE")
  163.    
  164.     // 1. Infect/Cure command
  165.     if (userflags & (read_flags(g_access_make_zombie) | read_flags(g_access_make_human)))
  166.         len += formatex(menu[len], charsmax(menu) - len, "\r1.\w %L^n", id, "MENU_ADMIN1")
  167.     else
  168.         len += formatex(menu[len], charsmax(menu) - len, "\d1. %L^n", id, "MENU_ADMIN1")
  169.    
  170.     // 2. Nemesis command
  171.     if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)))
  172.         len += formatex(menu[len], charsmax(menu) - len, "\r2.\w %L^n", id, "MENU_ADMIN2")
  173.     else
  174.         len += formatex(menu[len], charsmax(menu) - len, "\d2. %L^n", id, "MENU_ADMIN2")
  175.  
  176.     // 3. Assassin command
  177.     if (LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && (userflags & read_flags(g_access_make_assassin)))
  178.         len += formatex(menu[len], charsmax(menu) - len, "\r3.\w %L^n", id, "MENU_ADMIN3")
  179.     else
  180.         len += formatex(menu[len], charsmax(menu) - len, "\d3. %L^n", id, "MENU_ADMIN3")
  181.    
  182.     // 3. Survivor command
  183.     if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)))
  184.         len += formatex(menu[len], charsmax(menu) - len, "\r4.\w %L^n", id, "MENU_ADMIN4")
  185.     else
  186.         len += formatex(menu[len], charsmax(menu) - len, "\d4. %L^n", id, "MENU_ADMIN4")
  187.  
  188.     // 5. Sniper command
  189.     if (LibraryExists(LIBRARY_SNIPER, LibType_Library) && (userflags & read_flags(g_access_make_sniper)))
  190.         len += formatex(menu[len], charsmax(menu) - len, "\r5.\w %L^n", id, "MENU_ADMIN5")
  191.     else
  192.         len += formatex(menu[len], charsmax(menu) - len, "\d5. %L^n", id, "MENU_ADMIN5")
  193.    
  194.     // 6. Respawn command
  195.     if (userflags & read_flags(g_access_respawn_players))
  196.         len += formatex(menu[len], charsmax(menu) - len, "\r6.\w %L^n", id, "MENU_ADMIN6")
  197.     else
  198.         len += formatex(menu[len], charsmax(menu) - len, "\d6. %L^n", id, "MENU_ADMIN6")
  199.    
  200.     // 7. Start Game Mode command
  201.     if (userflags & read_flags(g_access_start_game_mode))
  202.         len += formatex(menu[len], charsmax(menu) - len, "\r7.\w %L^n", id, "MENU_ADMIN_START_GAME_MODE")
  203.     else
  204.         len += formatex(menu[len], charsmax(menu) - len, "\d7. %L^n", id, "MENU_ADMIN_START_GAME_MODE")
  205.    
  206.     // 0. Exit
  207.     len += formatex(menu[len], charsmax(menu) - len, "^n\r0.\w %L", id, "MENU_EXIT")
  208.    
  209.     // Fix for AMXX custom menus
  210.     set_pdata_int(id, OFFSET_CSMENUCODE, 0)
  211.     show_menu(id, KEYSMENU, menu, -1, "Admin Menu")
  212. }
  213.  
  214. // Player List Menu
  215. show_menu_player_list(id)
  216. {
  217.     static menu[250], player_name[32]
  218.     new menuid, player, buffer[2], userflags = get_user_flags(id)
  219.    
  220.     // Title
  221.     switch (PL_ACTION)
  222.     {
  223.         case ACTION_INFECT_CURE: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN1")
  224.         case ACTION_MAKE_NEMESIS: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN2")
  225.         case ACTION_MAKE_ASSASSIN: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN3")
  226.         case ACTION_MAKE_SURVIVOR: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN4")
  227.         case ACTION_MAKE_SNIPER: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN5")
  228.         case ACTION_RESPAWN_PLAYER: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN6")
  229.     }
  230.     menuid = menu_create(menu, "menu_player_list")
  231.    
  232.     // Player List
  233.     for (player = 0; player <= g_MaxPlayers; player++)
  234.     {
  235.         // Skip if not connected
  236.         if (!is_user_connected(player))
  237.             continue;
  238.        
  239.         // Get player's name
  240.         get_user_name(player, player_name, charsmax(player_name))
  241.        
  242.         // Format text depending on the action to take
  243.         switch (PL_ACTION)
  244.         {
  245.             case ACTION_INFECT_CURE: // Infect/Cure command
  246.             {
  247.                 if (zp_core_is_zombie(player))
  248.                 {
  249.                     if ((userflags & read_flags(g_access_make_human)) && is_user_alive(player))
  250.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  251.                     else
  252.                         formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  253.                 }
  254.                 else
  255.                 {
  256.                     if ((userflags & read_flags(g_access_make_zombie)) && is_user_alive(player))
  257.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  258.                     else
  259.                         formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  260.                 }
  261.                
  262.                 if (zp_core_is_zombie(player))
  263.                 {
  264.                     if ((userflags & read_flags(g_access_make_human)) && is_user_alive(player))
  265.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && zp_class_assassin_get(player)) ? "CLASS_ASSASSIN" : "CLASS_ZOMBIE")
  266.                     else
  267.                         formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, (LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && zp_class_assassin_get(player)) ? "CLASS_ASSASSIN" : "CLASS_ZOMBIE")
  268.                 }
  269.                 else
  270.                 {
  271.                     if ((userflags & read_flags(g_access_make_zombie)) && is_user_alive(player))
  272.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SNIPER, LibType_Library) && zp_class_sniper_get(player)) ? "CLASS_SNIPER" : "CLASS_HUMAN")
  273.                     else
  274.                         formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, (LibraryExists(LIBRARY_SNIPER, LibType_Library) && zp_class_sniper_get(player)) ? "CLASS_SNIPER" : "CLASS_HUMAN")
  275.                 }
  276.             }
  277.             case ACTION_MAKE_NEMESIS: // Nemesis command
  278.             {
  279.                 if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)) && is_user_alive(player) && !zp_class_nemesis_get(player))
  280.                 {
  281.                     if (zp_core_is_zombie(player))
  282.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  283.                     else
  284.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  285.                 }
  286.                 else
  287.                 {
  288.                     if( zp_core_is_zombie(player) )
  289.                     {
  290.                         if( LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player) )
  291.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_NEMESIS");
  292.                         else if(LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && zp_class_assassin_get(player))
  293.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ASSASSIN");
  294.                         else
  295.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ZOMBIE");
  296.                     }
  297.                     else
  298.                     {
  299.                         if( LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player))
  300.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SURVIVOR");
  301.                         else if( LibraryExists(LIBRARY_SNIPER, LibType_Library) && zp_class_sniper_get(player))
  302.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SNIPER");
  303.                         else
  304.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_HUMAN");
  305.                     }
  306.                 }
  307.             }
  308.             case ACTION_MAKE_ASSASSIN: // Assassin command
  309.             {
  310.                 if (LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && (userflags & read_flags(g_access_make_assassin)) && is_user_alive(player) && !zp_class_assassin_get(player))
  311.                 {
  312.                     if (zp_core_is_zombie(player))
  313.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  314.                     else
  315.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  316.                 }
  317.                 else
  318.                 {
  319.                     if( zp_core_is_zombie(player) )
  320.                     {
  321.                         if( LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player) )
  322.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_NEMESIS");
  323.                         else if(LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && zp_class_assassin_get(player))
  324.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ASSASSIN");
  325.                         else
  326.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ZOMBIE");
  327.                     }
  328.                     else
  329.                     {
  330.                         if( LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player))
  331.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SURVIVOR");
  332.                         else if( LibraryExists(LIBRARY_SNIPER, LibType_Library) && zp_class_sniper_get(player))
  333.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SNIPER");
  334.                         else
  335.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_HUMAN");
  336.                     }
  337.                 }
  338.             }
  339.             case ACTION_MAKE_SURVIVOR: // Survivor command
  340.             {
  341.                 if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)) && is_user_alive(player) && !zp_class_survivor_get(player))
  342.                 {if (zp_core_is_zombie(player))
  343.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  344.                     else
  345.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  346.                 }
  347.                 else
  348.                 {
  349.                     if( zp_core_is_zombie(player) )
  350.                     {
  351.                         if( LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player) )
  352.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_NEMESIS");
  353.                         else if(LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && zp_class_assassin_get(player))
  354.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ASSASSIN");
  355.                         else
  356.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ZOMBIE");
  357.                     }
  358.                     else
  359.                     {
  360.                         if( LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player))
  361.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SURVIVOR");
  362.                         else if( LibraryExists(LIBRARY_SNIPER, LibType_Library) && zp_class_sniper_get(player))
  363.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SNIPER");
  364.                         else
  365.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_HUMAN");
  366.                     }
  367.                 }
  368.             }
  369.             case ACTION_MAKE_SNIPER: // Sniper command
  370.             {
  371.                 if (LibraryExists(LIBRARY_SNIPER, LibType_Library) && (userflags & read_flags(g_access_make_sniper)) && is_user_alive(player) && !zp_class_sniper_get(player))
  372.                 {
  373.                     if (zp_core_is_zombie(player))
  374.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  375.                     else
  376.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  377.                 }
  378.                 else
  379.                 {
  380.                     if( zp_core_is_zombie(player) )
  381.                     {
  382.                         if( LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player) )
  383.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_NEMESIS");
  384.                         else if(LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && zp_class_assassin_get(player))
  385.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ASSASSIN");
  386.                         else
  387.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ZOMBIE");
  388.                     }
  389.                     else
  390.                     {
  391.                         if( LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player))
  392.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SURVIVOR");
  393.                         else if( LibraryExists(LIBRARY_SNIPER, LibType_Library) && zp_class_sniper_get(player))
  394.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SNIPER");
  395.                         else
  396.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_HUMAN");
  397.                     }
  398.                 }
  399.             }
  400.             case ACTION_RESPAWN_PLAYER: // Respawn command
  401.             {
  402.                 if ((userflags & read_flags(g_access_respawn_players)) && allowed_respawn(player))
  403.                     formatex(menu, charsmax(menu), "%s", player_name)
  404.                 else
  405.                     formatex(menu, charsmax(menu), "\d%s", player_name)
  406.             }
  407.         }
  408.        
  409.         // Add player
  410.         buffer[0] = player
  411.         buffer[1] = 0
  412.         menu_additem(menuid, menu, buffer)
  413.     }
  414.    
  415.     // Back - Next - Exit
  416.     formatex(menu, charsmax(menu), "%L", id, "MENU_BACK")
  417.     menu_setprop(menuid, MPROP_BACKNAME, menu)
  418.     formatex(menu, charsmax(menu), "%L", id, "MENU_NEXT")
  419.     menu_setprop(menuid, MPROP_NEXTNAME, menu)
  420.     formatex(menu, charsmax(menu), "%L", id, "MENU_EXIT")
  421.     menu_setprop(menuid, MPROP_EXITNAME, menu)
  422.    
  423.     // If remembered page is greater than number of pages, clamp down the value
  424.     MENU_PAGE_PLAYERS = min(MENU_PAGE_PLAYERS, menu_pages(menuid)-1)
  425.    
  426.     // Fix for AMXX custom menus
  427.     set_pdata_int(id, OFFSET_CSMENUCODE, 0)
  428.     menu_display(id, menuid, MENU_PAGE_PLAYERS)
  429. }
  430.  
  431. // Game Mode List Menu
  432. show_menu_game_mode_list(id)
  433. {
  434.     static menu[128], transkey[64]
  435.     new menuid, index, itemdata[2], game_mode_count = zp_gamemodes_get_count()
  436.    
  437.     // Title
  438.     formatex(menu, charsmax(menu), "%L:\r", id, "MENU_INFO4")
  439.     menuid = menu_create(menu, "menu_game_mode_list")
  440.    
  441.     // Item List
  442.     for (index = 0; index < game_mode_count; index++)
  443.     {
  444.         // Add Game Mode Name
  445.         zp_gamemodes_get_name(index, menu, charsmax(menu))
  446.        
  447.         // ML support for mode name
  448.         formatex(transkey, charsmax(transkey), "MODENAME %s", menu)
  449.         if (GetLangTransKey(transkey) != TransKey_Bad) formatex(menu, charsmax(menu), "%L", id, transkey)
  450.        
  451.         itemdata[0] = index
  452.         itemdata[1] = 0
  453.         menu_additem(menuid, menu, itemdata)
  454.     }
  455.    
  456.     // No game modes to display?
  457.     if (menu_items(menuid) <= 0)
  458.     {
  459.         menu_destroy(menuid)
  460.         return;
  461.     }
  462.    
  463.     // Back - Next - Exit
  464.     formatex(menu, charsmax(menu), "%L", id, "MENU_BACK")
  465.     menu_setprop(menuid, MPROP_BACKNAME, menu)
  466.     formatex(menu, charsmax(menu), "%L", id, "MENU_NEXT")
  467.     menu_setprop(menuid, MPROP_NEXTNAME, menu)
  468.     formatex(menu, charsmax(menu), "%L", id, "MENU_EXIT")
  469.     menu_setprop(menuid, MPROP_EXITNAME, menu)
  470.    
  471.     // If remembered page is greater than number of pages, clamp down the value
  472.     MENU_PAGE_GAME_MODES = min(MENU_PAGE_GAME_MODES, menu_pages(menuid)-1)
  473.    
  474.     // Fix for AMXX custom menus
  475.     set_pdata_int(id, OFFSET_CSMENUCODE, 0)
  476.     menu_display(id, menuid, MENU_PAGE_GAME_MODES)
  477. }
  478.  
  479. // Admin Menu
  480. public menu_admin(id, key)
  481. {
  482.     // Player disconnected?
  483.     if (!is_user_connected(id))
  484.         return PLUGIN_HANDLED;
  485.    
  486.     new userflags = get_user_flags(id)
  487.    
  488.     switch (key)
  489.     {
  490.         case ACTION_INFECT_CURE: // Infect/Cure command
  491.         {
  492.             if (userflags & (read_flags(g_access_make_zombie) | read_flags(g_access_make_human)))
  493.             {
  494.                 // Show player list for admin to pick a target
  495.                 PL_ACTION = ACTION_INFECT_CURE
  496.                 show_menu_player_list(id)
  497.             }
  498.             else
  499.             {
  500.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  501.                 show_menu_admin(id)
  502.             }
  503.         }
  504.         case ACTION_MAKE_NEMESIS: // Nemesis command
  505.         {
  506.             if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)))
  507.             {
  508.                 // Show player list for admin to pick a target
  509.                 PL_ACTION = ACTION_MAKE_NEMESIS
  510.                 show_menu_player_list(id)
  511.             }
  512.             else
  513.             {
  514.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  515.                 show_menu_admin(id)
  516.             }
  517.         }
  518.         case ACTION_MAKE_ASSASSIN: // Assassin command
  519.         {
  520.             if (LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && (userflags & read_flags(g_access_make_assassin)))
  521.             {
  522.                 // Show player list for admin to pick a target
  523.                 PL_ACTION = ACTION_MAKE_ASSASSIN
  524.                 show_menu_player_list(id)
  525.             }
  526.             else
  527.             {
  528.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  529.                 show_menu_admin(id)
  530.             }
  531.         }
  532.         case ACTION_MAKE_SURVIVOR: // Survivor command
  533.         {
  534.             if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)))
  535.             {
  536.                 // Show player list for admin to pick a target
  537.                 PL_ACTION = ACTION_MAKE_SURVIVOR
  538.                 show_menu_player_list(id)
  539.             }
  540.             else
  541.             {
  542.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  543.                 show_menu_admin(id)
  544.             }
  545.         }
  546.         case ACTION_MAKE_SNIPER: // Sniper command
  547.         {
  548.             if (LibraryExists(LIBRARY_SNIPER, LibType_Library) && (userflags & read_flags(g_access_make_sniper)))
  549.             {
  550.                 // Show player list for admin to pick a target
  551.                 PL_ACTION = ACTION_MAKE_SNIPER
  552.                 show_menu_player_list(id)
  553.             }
  554.             else
  555.             {
  556.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  557.                 show_menu_admin(id)
  558.             }
  559.         }
  560.         case ACTION_RESPAWN_PLAYER: // Respawn command
  561.         {
  562.             if (userflags & read_flags(g_access_respawn_players))
  563.             {
  564.                 // Show player list for admin to pick a target
  565.                 PL_ACTION = ACTION_RESPAWN_PLAYER
  566.                 show_menu_player_list(id)
  567.             }
  568.             else
  569.             {
  570.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  571.                 show_menu_admin(id)
  572.             }
  573.         }
  574.         case ACTION_START_GAME_MODE: // Start Game Mode command
  575.         {
  576.             if (userflags & read_flags(g_access_start_game_mode))
  577.                 show_menu_game_mode_list(id)
  578.             else
  579.             {
  580.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  581.                 show_menu_admin(id)
  582.             }
  583.         }
  584.     }
  585.    
  586.     return PLUGIN_HANDLED;
  587. }
  588.  
  589. // Player List Menu
  590. public menu_player_list(id, menuid, item)
  591. {
  592.     // Menu was closed
  593.     if (item == MENU_EXIT)
  594.     {
  595.         MENU_PAGE_PLAYERS = 0
  596.         menu_destroy(menuid)
  597.         show_menu_admin(id)
  598.         return PLUGIN_HANDLED;
  599.     }
  600.    
  601.     // Remember player's menu page
  602.     MENU_PAGE_PLAYERS = item / 7
  603.    
  604.     // Retrieve player id
  605.     new buffer[2], dummy, player
  606.     menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy)
  607.     player = buffer[0]
  608.    
  609.     // Perform action on player
  610.    
  611.     // Get admin flags
  612.     new userflags = get_user_flags(id)
  613.    
  614.     // Make sure it's still connected
  615.     if (is_user_connected(player))
  616.     {
  617.         // Perform the right action if allowed
  618.         switch (PL_ACTION)
  619.         {
  620.             case ACTION_INFECT_CURE: // Infect/Cure command
  621.             {
  622.                 if (zp_core_is_zombie(player))
  623.                 {
  624.                     if ((userflags & read_flags(g_access_make_human)) && is_user_alive(player))
  625.                         zp_admin_commands_human(id, player)
  626.                     else
  627.                         zp_colored_print(id, "%L", id, "CMD_NOT")
  628.                 }
  629.                 else
  630.                 {
  631.                     if ((userflags & read_flags(g_access_make_zombie)) && is_user_alive(player))
  632.                         zp_admin_commands_zombie(id, player)
  633.                     else
  634.                         zp_colored_print(id, "%L", id, "CMD_NOT")
  635.                 }
  636.             }
  637.             case ACTION_MAKE_NEMESIS: // Nemesis command
  638.             {
  639.                 if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)) && is_user_alive(player) && !zp_class_nemesis_get(player))
  640.                     zp_admin_commands_nemesis(id, player)
  641.                 else
  642.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  643.             }
  644.             case ACTION_MAKE_ASSASSIN: // Assassin command
  645.             {
  646.                 if (LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && (userflags & read_flags(g_access_make_assassin)) && is_user_alive(player) && !zp_class_assassin_get(player))
  647.                     zp_admin_commands_assassin(id, player)
  648.                 else
  649.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  650.             }
  651.             case ACTION_MAKE_SURVIVOR: // Survivor command
  652.             {
  653.                 if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)) && is_user_alive(player) && !zp_class_survivor_get(player))
  654.                     zp_admin_commands_survivor(id, player)
  655.                 else
  656.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  657.             }
  658.             case ACTION_MAKE_SNIPER: // Sniper command
  659.             {
  660.                 if (LibraryExists(LIBRARY_SNIPER, LibType_Library) && (userflags & read_flags(g_access_make_sniper)) && is_user_alive(player) && !zp_class_sniper_get(player))
  661.                     zp_admin_commands_sniper(id, player)
  662.                 else
  663.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  664.             }
  665.             case ACTION_RESPAWN_PLAYER: // Respawn command
  666.             {
  667.                 if ((userflags & read_flags(g_access_respawn_players)) && allowed_respawn(player))
  668.                     zp_admin_commands_respawn(id, player)
  669.                 else
  670.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  671.             }
  672.         }
  673.     }
  674.     else
  675.         zp_colored_print(id, "%L", id, "CMD_NOT")
  676.    
  677.     menu_destroy(menuid)
  678.     show_menu_player_list(id)
  679.     return PLUGIN_HANDLED;
  680. }
  681.  
  682. // Game Mode List Menu
  683. public menu_game_mode_list(id, menuid, item)
  684. {
  685.     // Menu was closed
  686.     if (item == MENU_EXIT)
  687.     {
  688.         MENU_PAGE_GAME_MODES = 0
  689.         menu_destroy(menuid)
  690.         show_menu_admin(id)
  691.         return PLUGIN_HANDLED;
  692.     }
  693.    
  694.     // Remember game modes menu page
  695.     MENU_PAGE_GAME_MODES = item / 7
  696.    
  697.     // Retrieve game mode id
  698.     new itemdata[2], dummy, game_mode_id
  699.     menu_item_getinfo(menuid, item, dummy, itemdata, charsmax(itemdata), _, _, dummy)
  700.     game_mode_id = itemdata[0]
  701.    
  702.     // Attempt to start game mode
  703.     zp_admin_commands_start_mode(id, game_mode_id)
  704.    
  705.     menu_destroy(menuid)
  706.     show_menu_game_mode_list(id)
  707.     return PLUGIN_HANDLED;
  708. }
  709.  
  710. // Checks if a player is allowed to respawn
  711. allowed_respawn(id)
  712. {
  713.     if (is_user_alive(id))
  714.         return false;
  715.    
  716.     new CsTeams:team = cs_get_user_team(id)
  717.    
  718.     if (team == CS_TEAM_SPECTATOR || team == CS_TEAM_UNASSIGNED)
  719.         return false;
  720.    
  721.     return true;
  722. }


Itt van a txt-k is ezeket rakd be mellé különben NOTFOUNDozni fog.


Csatolmányok:
zp_uj_txt.zip [41.66 KiB]
Letöltve 33 alkalommal.
Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Sniper
HozzászólásElküldve: 2016.07.20. 18:26 
Offline
Jómunkásember

Csatlakozott: 2016.06.20. 10:23
Hozzászólások: 489
Megköszönt másnak: 47 alkalommal
Megköszönték neki: 15 alkalommal
magyarban nem tudod?
itt a magyar, csak bele kéne írni, én bele írtam de nem kükszik!


Csatolmányok:
txt-k.rar [38.86 KiB]
Letöltve 40 alkalommal.

_________________
BfS* #Team ~Global Offensive IP: 217.144.54.193:27148

Kép
Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Sniper
HozzászólásElküldve: 2016.07.20. 18:58 
Offline
Jómunkásember

Csatlakozott: 2016.06.20. 10:23
Hozzászólások: 489
Megköszönt másnak: 47 alkalommal
Megköszönték neki: 15 alkalommal
voga955 írta:
Beleírtam neked:

  1. /*================================================================================
  2.    
  3.     -----------------------
  4.     -*- [ZP] Admin Menu -*-
  5.     -----------------------
  6.    
  7.     This plugin is part of Zombie Plague Mod and is distributed under the
  8.     terms of the GNU General Public License. Check ZP_ReadMe.txt for details.
  9.    
  10. ================================================================================*/
  11.  
  12. #include <amxmodx>
  13. #include <amxmisc>
  14. #include <cstrike>
  15. #include <fakemeta>
  16. #include <hamsandwich>
  17. #include <amx_settings_api>
  18. #include <zp50_core>
  19. #include <zp50_gamemodes>
  20. #define LIBRARY_NEMESIS "zp50_class_nemesis"
  21. #include <zp50_class_nemesis>
  22. #define LIBRARY_ASSASSIN "zp50_class_assassin"
  23. #include <zp50_class_assassin>
  24. #define LIBRARY_SURVIVOR "zp50_class_survivor"
  25. #include <zp50_class_survivor>
  26. #define LIBRARY_SNIPER "zp50_class_sniper"
  27. #include <zp50_class_sniper>
  28. #include <zp50_admin_commands>
  29. #include <zp50_colorchat>
  30.  
  31. // Settings file
  32. new const ZP_SETTINGS_FILE[] = "zombieplague.ini"
  33.  
  34. #define ACCESSFLAG_MAX_LENGTH 2
  35.  
  36. // Access flags
  37. new g_access_make_zombie[ACCESSFLAG_MAX_LENGTH] = "d"
  38. new g_access_make_human[ACCESSFLAG_MAX_LENGTH] = "d"
  39. new g_access_make_nemesis[ACCESSFLAG_MAX_LENGTH] = "d"
  40. new g_access_make_assassin[ACCESSFLAG_MAX_LENGTH] = "d"
  41. new g_access_make_survivor[ACCESSFLAG_MAX_LENGTH] = "d"
  42. new g_access_make_sniper[ACCESSFLAG_MAX_LENGTH] = "d"
  43. new g_access_respawn_players[ACCESSFLAG_MAX_LENGTH] = "d"
  44. new g_access_start_game_mode[ACCESSFLAG_MAX_LENGTH] = "d"
  45.  
  46. // Admin menu actions
  47. enum
  48. {
  49.     ACTION_INFECT_CURE = 0,
  50.     ACTION_MAKE_NEMESIS,
  51.     ACTION_MAKE_ASSASSIN,
  52.     ACTION_MAKE_SURVIVOR,
  53.     ACTION_MAKE_SNIPER,
  54.     ACTION_RESPAWN_PLAYER,
  55.     ACTION_START_GAME_MODE
  56. }
  57.  
  58. // Menu keys
  59. const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
  60.  
  61. // CS Player PData Offsets (win32)
  62. const OFFSET_CSMENUCODE = 205
  63.  
  64. #define MAXPLAYERS 32
  65.  
  66. // For player/mode list menu handlers
  67. #define PL_ACTION g_menu_data[id][0]
  68. #define MENU_PAGE_PLAYERS g_menu_data[id][1]
  69. #define MENU_PAGE_GAME_MODES g_menu_data[id][2]
  70. new g_menu_data[MAXPLAYERS+1][3]
  71.  
  72. new g_MaxPlayers
  73.  
  74. public plugin_init()
  75. {
  76.     register_plugin("[ZP] Admin Menus", ZP_VERSION_STRING, "ZP Dev Team")
  77.    
  78.     g_MaxPlayers = get_maxplayers()
  79.    
  80.     register_menu("Admin Menu", KEYSMENU, "menu_admin")
  81.     register_clcmd("say /adminmenu", "clcmd_adminmenu")
  82.     register_clcmd("say adminmenu", "clcmd_adminmenu")
  83. }
  84.  
  85. public plugin_precache()
  86. {
  87.     // Load from external file, save if not found
  88.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ZOMBIE", g_access_make_zombie, charsmax(g_access_make_zombie)))
  89.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ZOMBIE", g_access_make_zombie)
  90.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE HUMAN", g_access_make_human, charsmax(g_access_make_human)))
  91.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ZOMBIE", g_access_make_human)
  92.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE NEMESIS", g_access_make_nemesis, charsmax(g_access_make_nemesis)))
  93.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE NEMESIS", g_access_make_nemesis)
  94.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ASSASSIN", g_access_make_assassin, charsmax(g_access_make_assassin)))
  95.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE ASSASSIN", g_access_make_assassin)
  96.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE SURVIVOR", g_access_make_survivor, charsmax(g_access_make_survivor)))
  97.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE SURVIVOR", g_access_make_survivor)
  98.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE SNIPER", g_access_make_sniper, charsmax(g_access_make_sniper)))
  99.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "MAKE SNIPER", g_access_make_sniper)
  100.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "RESPAWN PLAYERS", g_access_respawn_players, charsmax(g_access_respawn_players)))
  101.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "RESPAWN PLAYERS", g_access_respawn_players)
  102.     if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Access Flags", "START GAME MODE", g_access_start_game_mode, charsmax(g_access_start_game_mode)))
  103.         amx_save_setting_string(ZP_SETTINGS_FILE, "Access Flags", "START GAME MODE", g_access_start_game_mode)
  104. }
  105.  
  106. public plugin_natives()
  107. {
  108.     register_library("zp50_admin_menu")
  109.     register_native("zp_admin_menu_show", "native_admin_menu_show")
  110.    
  111.     set_module_filter("module_filter")
  112.     set_native_filter("native_filter")
  113. }
  114. public module_filter(const module[])
  115. {
  116.     if (equal(module, LIBRARY_NEMESIS) || equal(module, LIBRARY_ASSASSIN) || equal(module, LIBRARY_SURVIVOR) || equal(module, LIBRARY_SNIPER))
  117.         return PLUGIN_HANDLED;
  118.    
  119.     return PLUGIN_CONTINUE;
  120. }
  121. public native_filter(const name[], index, trap)
  122. {
  123.     if (!trap)
  124.         return PLUGIN_HANDLED;
  125.        
  126.     return PLUGIN_CONTINUE;
  127. }
  128.  
  129. public native_admin_menu_show(plugin_id, num_params)
  130. {
  131.     new id = get_param(1)
  132.    
  133.     if (!is_user_connected(id))
  134.     {
  135.         log_error(AMX_ERR_NATIVE, "[ZP] Invalid Player (%d)", id)
  136.         return false;
  137.     }
  138.    
  139.     show_menu_admin(id)
  140.     return true;
  141. }
  142.  
  143. public client_disconnect(id)
  144. {
  145.     // Reset remembered menu pages
  146.     MENU_PAGE_GAME_MODES = 0
  147.     MENU_PAGE_PLAYERS = 0
  148. }
  149.  
  150. public clcmd_adminmenu(id)
  151. {
  152.     show_menu_admin(id)
  153. }
  154.  
  155. // Admin Menu
  156. show_menu_admin(id)
  157. {
  158.     static menu[250]
  159.     new len, userflags = get_user_flags(id)
  160.    
  161.     // Title
  162.     len += formatex(menu[len], charsmax(menu) - len, "\y%L:^n^n", id, "MENU_ADMIN_TITLE")
  163.    
  164.     // 1. Infect/Cure command
  165.     if (userflags & (read_flags(g_access_make_zombie) | read_flags(g_access_make_human)))
  166.         len += formatex(menu[len], charsmax(menu) - len, "\r1.\w %L^n", id, "MENU_ADMIN1")
  167.     else
  168.         len += formatex(menu[len], charsmax(menu) - len, "\d1. %L^n", id, "MENU_ADMIN1")
  169.    
  170.     // 2. Nemesis command
  171.     if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)))
  172.         len += formatex(menu[len], charsmax(menu) - len, "\r2.\w %L^n", id, "MENU_ADMIN2")
  173.     else
  174.         len += formatex(menu[len], charsmax(menu) - len, "\d2. %L^n", id, "MENU_ADMIN2")
  175.  
  176.     // 3. Assassin command
  177.     if (LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && (userflags & read_flags(g_access_make_assassin)))
  178.         len += formatex(menu[len], charsmax(menu) - len, "\r3.\w %L^n", id, "MENU_ADMIN3")
  179.     else
  180.         len += formatex(menu[len], charsmax(menu) - len, "\d3. %L^n", id, "MENU_ADMIN3")
  181.    
  182.     // 3. Survivor command
  183.     if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)))
  184.         len += formatex(menu[len], charsmax(menu) - len, "\r4.\w %L^n", id, "MENU_ADMIN4")
  185.     else
  186.         len += formatex(menu[len], charsmax(menu) - len, "\d4. %L^n", id, "MENU_ADMIN4")
  187.  
  188.     // 5. Sniper command
  189.     if (LibraryExists(LIBRARY_SNIPER, LibType_Library) && (userflags & read_flags(g_access_make_sniper)))
  190.         len += formatex(menu[len], charsmax(menu) - len, "\r5.\w %L^n", id, "MENU_ADMIN5")
  191.     else
  192.         len += formatex(menu[len], charsmax(menu) - len, "\d5. %L^n", id, "MENU_ADMIN5")
  193.    
  194.     // 6. Respawn command
  195.     if (userflags & read_flags(g_access_respawn_players))
  196.         len += formatex(menu[len], charsmax(menu) - len, "\r6.\w %L^n", id, "MENU_ADMIN6")
  197.     else
  198.         len += formatex(menu[len], charsmax(menu) - len, "\d6. %L^n", id, "MENU_ADMIN6")
  199.    
  200.     // 7. Start Game Mode command
  201.     if (userflags & read_flags(g_access_start_game_mode))
  202.         len += formatex(menu[len], charsmax(menu) - len, "\r7.\w %L^n", id, "MENU_ADMIN_START_GAME_MODE")
  203.     else
  204.         len += formatex(menu[len], charsmax(menu) - len, "\d7. %L^n", id, "MENU_ADMIN_START_GAME_MODE")
  205.    
  206.     // 0. Exit
  207.     len += formatex(menu[len], charsmax(menu) - len, "^n\r0.\w %L", id, "MENU_EXIT")
  208.    
  209.     // Fix for AMXX custom menus
  210.     set_pdata_int(id, OFFSET_CSMENUCODE, 0)
  211.     show_menu(id, KEYSMENU, menu, -1, "Admin Menu")
  212. }
  213.  
  214. // Player List Menu
  215. show_menu_player_list(id)
  216. {
  217.     static menu[250], player_name[32]
  218.     new menuid, player, buffer[2], userflags = get_user_flags(id)
  219.    
  220.     // Title
  221.     switch (PL_ACTION)
  222.     {
  223.         case ACTION_INFECT_CURE: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN1")
  224.         case ACTION_MAKE_NEMESIS: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN2")
  225.         case ACTION_MAKE_ASSASSIN: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN3")
  226.         case ACTION_MAKE_SURVIVOR: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN4")
  227.         case ACTION_MAKE_SNIPER: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN5")
  228.         case ACTION_RESPAWN_PLAYER: formatex(menu, charsmax(menu), "%L\r", id, "MENU_ADMIN6")
  229.     }
  230.     menuid = menu_create(menu, "menu_player_list")
  231.    
  232.     // Player List
  233.     for (player = 0; player <= g_MaxPlayers; player++)
  234.     {
  235.         // Skip if not connected
  236.         if (!is_user_connected(player))
  237.             continue;
  238.        
  239.         // Get player's name
  240.         get_user_name(player, player_name, charsmax(player_name))
  241.        
  242.         // Format text depending on the action to take
  243.         switch (PL_ACTION)
  244.         {
  245.             case ACTION_INFECT_CURE: // Infect/Cure command
  246.             {
  247.                 if (zp_core_is_zombie(player))
  248.                 {
  249.                     if ((userflags & read_flags(g_access_make_human)) && is_user_alive(player))
  250.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  251.                     else
  252.                         formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  253.                 }
  254.                 else
  255.                 {
  256.                     if ((userflags & read_flags(g_access_make_zombie)) && is_user_alive(player))
  257.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  258.                     else
  259.                         formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  260.                 }
  261.                
  262.                 if (zp_core_is_zombie(player))
  263.                 {
  264.                     if ((userflags & read_flags(g_access_make_human)) && is_user_alive(player))
  265.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && zp_class_assassin_get(player)) ? "CLASS_ASSASSIN" : "CLASS_ZOMBIE")
  266.                     else
  267.                         formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, (LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && zp_class_assassin_get(player)) ? "CLASS_ASSASSIN" : "CLASS_ZOMBIE")
  268.                 }
  269.                 else
  270.                 {
  271.                     if ((userflags & read_flags(g_access_make_zombie)) && is_user_alive(player))
  272.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SNIPER, LibType_Library) && zp_class_sniper_get(player)) ? "CLASS_SNIPER" : "CLASS_HUMAN")
  273.                     else
  274.                         formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, (LibraryExists(LIBRARY_SNIPER, LibType_Library) && zp_class_sniper_get(player)) ? "CLASS_SNIPER" : "CLASS_HUMAN")
  275.                 }
  276.             }
  277.             case ACTION_MAKE_NEMESIS: // Nemesis command
  278.             {
  279.                 if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)) && is_user_alive(player) && !zp_class_nemesis_get(player))
  280.                 {
  281.                     if (zp_core_is_zombie(player))
  282.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  283.                     else
  284.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  285.                 }
  286.                 else
  287.                 {
  288.                     if( zp_core_is_zombie(player) )
  289.                     {
  290.                         if( LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player) )
  291.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_NEMESIS");
  292.                         else if(LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && zp_class_assassin_get(player))
  293.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ASSASSIN");
  294.                         else
  295.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ZOMBIE");
  296.                     }
  297.                     else
  298.                     {
  299.                         if( LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player))
  300.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SURVIVOR");
  301.                         else if( LibraryExists(LIBRARY_SNIPER, LibType_Library) && zp_class_sniper_get(player))
  302.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SNIPER");
  303.                         else
  304.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_HUMAN");
  305.                     }
  306.                 }
  307.             }
  308.             case ACTION_MAKE_ASSASSIN: // Assassin command
  309.             {
  310.                 if (LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && (userflags & read_flags(g_access_make_assassin)) && is_user_alive(player) && !zp_class_assassin_get(player))
  311.                 {
  312.                     if (zp_core_is_zombie(player))
  313.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  314.                     else
  315.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  316.                 }
  317.                 else
  318.                 {
  319.                     if( zp_core_is_zombie(player) )
  320.                     {
  321.                         if( LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player) )
  322.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_NEMESIS");
  323.                         else if(LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && zp_class_assassin_get(player))
  324.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ASSASSIN");
  325.                         else
  326.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ZOMBIE");
  327.                     }
  328.                     else
  329.                     {
  330.                         if( LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player))
  331.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SURVIVOR");
  332.                         else if( LibraryExists(LIBRARY_SNIPER, LibType_Library) && zp_class_sniper_get(player))
  333.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SNIPER");
  334.                         else
  335.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_HUMAN");
  336.                     }
  337.                 }
  338.             }
  339.             case ACTION_MAKE_SURVIVOR: // Survivor command
  340.             {
  341.                 if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)) && is_user_alive(player) && !zp_class_survivor_get(player))
  342.                 {if (zp_core_is_zombie(player))
  343.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  344.                     else
  345.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  346.                 }
  347.                 else
  348.                 {
  349.                     if( zp_core_is_zombie(player) )
  350.                     {
  351.                         if( LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player) )
  352.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_NEMESIS");
  353.                         else if(LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && zp_class_assassin_get(player))
  354.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ASSASSIN");
  355.                         else
  356.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ZOMBIE");
  357.                     }
  358.                     else
  359.                     {
  360.                         if( LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player))
  361.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SURVIVOR");
  362.                         else if( LibraryExists(LIBRARY_SNIPER, LibType_Library) && zp_class_sniper_get(player))
  363.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SNIPER");
  364.                         else
  365.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_HUMAN");
  366.                     }
  367.                 }
  368.             }
  369.             case ACTION_MAKE_SNIPER: // Sniper command
  370.             {
  371.                 if (LibraryExists(LIBRARY_SNIPER, LibType_Library) && (userflags & read_flags(g_access_make_sniper)) && is_user_alive(player) && !zp_class_sniper_get(player))
  372.                 {
  373.                     if (zp_core_is_zombie(player))
  374.                         formatex(menu, charsmax(menu), "%s \r[%L]", player_name, id, (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : "CLASS_ZOMBIE")
  375.                     else
  376.                         formatex(menu, charsmax(menu), "%s \y[%L]", player_name, id, (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" : "CLASS_HUMAN")
  377.                 }
  378.                 else
  379.                 {
  380.                     if( zp_core_is_zombie(player) )
  381.                     {
  382.                         if( LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(player) )
  383.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_NEMESIS");
  384.                         else if(LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && zp_class_assassin_get(player))
  385.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ASSASSIN");
  386.                         else
  387.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_ZOMBIE");
  388.                     }
  389.                     else
  390.                     {
  391.                         if( LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && zp_class_survivor_get(player))
  392.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SURVIVOR");
  393.                         else if( LibraryExists(LIBRARY_SNIPER, LibType_Library) && zp_class_sniper_get(player))
  394.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_SNIPER");
  395.                         else
  396.                             formatex(menu, charsmax(menu), "\d%s [%L]", player_name, id, "CLASS_HUMAN");
  397.                     }
  398.                 }
  399.             }
  400.             case ACTION_RESPAWN_PLAYER: // Respawn command
  401.             {
  402.                 if ((userflags & read_flags(g_access_respawn_players)) && allowed_respawn(player))
  403.                     formatex(menu, charsmax(menu), "%s", player_name)
  404.                 else
  405.                     formatex(menu, charsmax(menu), "\d%s", player_name)
  406.             }
  407.         }
  408.        
  409.         // Add player
  410.         buffer[0] = player
  411.         buffer[1] = 0
  412.         menu_additem(menuid, menu, buffer)
  413.     }
  414.    
  415.     // Back - Next - Exit
  416.     formatex(menu, charsmax(menu), "%L", id, "MENU_BACK")
  417.     menu_setprop(menuid, MPROP_BACKNAME, menu)
  418.     formatex(menu, charsmax(menu), "%L", id, "MENU_NEXT")
  419.     menu_setprop(menuid, MPROP_NEXTNAME, menu)
  420.     formatex(menu, charsmax(menu), "%L", id, "MENU_EXIT")
  421.     menu_setprop(menuid, MPROP_EXITNAME, menu)
  422.    
  423.     // If remembered page is greater than number of pages, clamp down the value
  424.     MENU_PAGE_PLAYERS = min(MENU_PAGE_PLAYERS, menu_pages(menuid)-1)
  425.    
  426.     // Fix for AMXX custom menus
  427.     set_pdata_int(id, OFFSET_CSMENUCODE, 0)
  428.     menu_display(id, menuid, MENU_PAGE_PLAYERS)
  429. }
  430.  
  431. // Game Mode List Menu
  432. show_menu_game_mode_list(id)
  433. {
  434.     static menu[128], transkey[64]
  435.     new menuid, index, itemdata[2], game_mode_count = zp_gamemodes_get_count()
  436.    
  437.     // Title
  438.     formatex(menu, charsmax(menu), "%L:\r", id, "MENU_INFO4")
  439.     menuid = menu_create(menu, "menu_game_mode_list")
  440.    
  441.     // Item List
  442.     for (index = 0; index < game_mode_count; index++)
  443.     {
  444.         // Add Game Mode Name
  445.         zp_gamemodes_get_name(index, menu, charsmax(menu))
  446.        
  447.         // ML support for mode name
  448.         formatex(transkey, charsmax(transkey), "MODENAME %s", menu)
  449.         if (GetLangTransKey(transkey) != TransKey_Bad) formatex(menu, charsmax(menu), "%L", id, transkey)
  450.        
  451.         itemdata[0] = index
  452.         itemdata[1] = 0
  453.         menu_additem(menuid, menu, itemdata)
  454.     }
  455.    
  456.     // No game modes to display?
  457.     if (menu_items(menuid) <= 0)
  458.     {
  459.         menu_destroy(menuid)
  460.         return;
  461.     }
  462.    
  463.     // Back - Next - Exit
  464.     formatex(menu, charsmax(menu), "%L", id, "MENU_BACK")
  465.     menu_setprop(menuid, MPROP_BACKNAME, menu)
  466.     formatex(menu, charsmax(menu), "%L", id, "MENU_NEXT")
  467.     menu_setprop(menuid, MPROP_NEXTNAME, menu)
  468.     formatex(menu, charsmax(menu), "%L", id, "MENU_EXIT")
  469.     menu_setprop(menuid, MPROP_EXITNAME, menu)
  470.    
  471.     // If remembered page is greater than number of pages, clamp down the value
  472.     MENU_PAGE_GAME_MODES = min(MENU_PAGE_GAME_MODES, menu_pages(menuid)-1)
  473.    
  474.     // Fix for AMXX custom menus
  475.     set_pdata_int(id, OFFSET_CSMENUCODE, 0)
  476.     menu_display(id, menuid, MENU_PAGE_GAME_MODES)
  477. }
  478.  
  479. // Admin Menu
  480. public menu_admin(id, key)
  481. {
  482.     // Player disconnected?
  483.     if (!is_user_connected(id))
  484.         return PLUGIN_HANDLED;
  485.    
  486.     new userflags = get_user_flags(id)
  487.    
  488.     switch (key)
  489.     {
  490.         case ACTION_INFECT_CURE: // Infect/Cure command
  491.         {
  492.             if (userflags & (read_flags(g_access_make_zombie) | read_flags(g_access_make_human)))
  493.             {
  494.                 // Show player list for admin to pick a target
  495.                 PL_ACTION = ACTION_INFECT_CURE
  496.                 show_menu_player_list(id)
  497.             }
  498.             else
  499.             {
  500.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  501.                 show_menu_admin(id)
  502.             }
  503.         }
  504.         case ACTION_MAKE_NEMESIS: // Nemesis command
  505.         {
  506.             if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)))
  507.             {
  508.                 // Show player list for admin to pick a target
  509.                 PL_ACTION = ACTION_MAKE_NEMESIS
  510.                 show_menu_player_list(id)
  511.             }
  512.             else
  513.             {
  514.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  515.                 show_menu_admin(id)
  516.             }
  517.         }
  518.         case ACTION_MAKE_ASSASSIN: // Assassin command
  519.         {
  520.             if (LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && (userflags & read_flags(g_access_make_assassin)))
  521.             {
  522.                 // Show player list for admin to pick a target
  523.                 PL_ACTION = ACTION_MAKE_ASSASSIN
  524.                 show_menu_player_list(id)
  525.             }
  526.             else
  527.             {
  528.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  529.                 show_menu_admin(id)
  530.             }
  531.         }
  532.         case ACTION_MAKE_SURVIVOR: // Survivor command
  533.         {
  534.             if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)))
  535.             {
  536.                 // Show player list for admin to pick a target
  537.                 PL_ACTION = ACTION_MAKE_SURVIVOR
  538.                 show_menu_player_list(id)
  539.             }
  540.             else
  541.             {
  542.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  543.                 show_menu_admin(id)
  544.             }
  545.         }
  546.         case ACTION_MAKE_SNIPER: // Sniper command
  547.         {
  548.             if (LibraryExists(LIBRARY_SNIPER, LibType_Library) && (userflags & read_flags(g_access_make_sniper)))
  549.             {
  550.                 // Show player list for admin to pick a target
  551.                 PL_ACTION = ACTION_MAKE_SNIPER
  552.                 show_menu_player_list(id)
  553.             }
  554.             else
  555.             {
  556.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  557.                 show_menu_admin(id)
  558.             }
  559.         }
  560.         case ACTION_RESPAWN_PLAYER: // Respawn command
  561.         {
  562.             if (userflags & read_flags(g_access_respawn_players))
  563.             {
  564.                 // Show player list for admin to pick a target
  565.                 PL_ACTION = ACTION_RESPAWN_PLAYER
  566.                 show_menu_player_list(id)
  567.             }
  568.             else
  569.             {
  570.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  571.                 show_menu_admin(id)
  572.             }
  573.         }
  574.         case ACTION_START_GAME_MODE: // Start Game Mode command
  575.         {
  576.             if (userflags & read_flags(g_access_start_game_mode))
  577.                 show_menu_game_mode_list(id)
  578.             else
  579.             {
  580.                 zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
  581.                 show_menu_admin(id)
  582.             }
  583.         }
  584.     }
  585.    
  586.     return PLUGIN_HANDLED;
  587. }
  588.  
  589. // Player List Menu
  590. public menu_player_list(id, menuid, item)
  591. {
  592.     // Menu was closed
  593.     if (item == MENU_EXIT)
  594.     {
  595.         MENU_PAGE_PLAYERS = 0
  596.         menu_destroy(menuid)
  597.         show_menu_admin(id)
  598.         return PLUGIN_HANDLED;
  599.     }
  600.    
  601.     // Remember player's menu page
  602.     MENU_PAGE_PLAYERS = item / 7
  603.    
  604.     // Retrieve player id
  605.     new buffer[2], dummy, player
  606.     menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy)
  607.     player = buffer[0]
  608.    
  609.     // Perform action on player
  610.    
  611.     // Get admin flags
  612.     new userflags = get_user_flags(id)
  613.    
  614.     // Make sure it's still connected
  615.     if (is_user_connected(player))
  616.     {
  617.         // Perform the right action if allowed
  618.         switch (PL_ACTION)
  619.         {
  620.             case ACTION_INFECT_CURE: // Infect/Cure command
  621.             {
  622.                 if (zp_core_is_zombie(player))
  623.                 {
  624.                     if ((userflags & read_flags(g_access_make_human)) && is_user_alive(player))
  625.                         zp_admin_commands_human(id, player)
  626.                     else
  627.                         zp_colored_print(id, "%L", id, "CMD_NOT")
  628.                 }
  629.                 else
  630.                 {
  631.                     if ((userflags & read_flags(g_access_make_zombie)) && is_user_alive(player))
  632.                         zp_admin_commands_zombie(id, player)
  633.                     else
  634.                         zp_colored_print(id, "%L", id, "CMD_NOT")
  635.                 }
  636.             }
  637.             case ACTION_MAKE_NEMESIS: // Nemesis command
  638.             {
  639.                 if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)) && is_user_alive(player) && !zp_class_nemesis_get(player))
  640.                     zp_admin_commands_nemesis(id, player)
  641.                 else
  642.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  643.             }
  644.             case ACTION_MAKE_ASSASSIN: // Assassin command
  645.             {
  646.                 if (LibraryExists(LIBRARY_ASSASSIN, LibType_Library) && (userflags & read_flags(g_access_make_assassin)) && is_user_alive(player) && !zp_class_assassin_get(player))
  647.                     zp_admin_commands_assassin(id, player)
  648.                 else
  649.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  650.             }
  651.             case ACTION_MAKE_SURVIVOR: // Survivor command
  652.             {
  653.                 if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)) && is_user_alive(player) && !zp_class_survivor_get(player))
  654.                     zp_admin_commands_survivor(id, player)
  655.                 else
  656.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  657.             }
  658.             case ACTION_MAKE_SNIPER: // Sniper command
  659.             {
  660.                 if (LibraryExists(LIBRARY_SNIPER, LibType_Library) && (userflags & read_flags(g_access_make_sniper)) && is_user_alive(player) && !zp_class_sniper_get(player))
  661.                     zp_admin_commands_sniper(id, player)
  662.                 else
  663.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  664.             }
  665.             case ACTION_RESPAWN_PLAYER: // Respawn command
  666.             {
  667.                 if ((userflags & read_flags(g_access_respawn_players)) && allowed_respawn(player))
  668.                     zp_admin_commands_respawn(id, player)
  669.                 else
  670.                     zp_colored_print(id, "%L", id, "CMD_NOT")
  671.             }
  672.         }
  673.     }
  674.     else
  675.         zp_colored_print(id, "%L", id, "CMD_NOT")
  676.    
  677.     menu_destroy(menuid)
  678.     show_menu_player_list(id)
  679.     return PLUGIN_HANDLED;
  680. }
  681.  
  682. // Game Mode List Menu
  683. public menu_game_mode_list(id, menuid, item)
  684. {
  685.     // Menu was closed
  686.     if (item == MENU_EXIT)
  687.     {
  688.         MENU_PAGE_GAME_MODES = 0
  689.         menu_destroy(menuid)
  690.         show_menu_admin(id)
  691.         return PLUGIN_HANDLED;
  692.     }
  693.    
  694.     // Remember game modes menu page
  695.     MENU_PAGE_GAME_MODES = item / 7
  696.    
  697.     // Retrieve game mode id
  698.     new itemdata[2], dummy, game_mode_id
  699.     menu_item_getinfo(menuid, item, dummy, itemdata, charsmax(itemdata), _, _, dummy)
  700.     game_mode_id = itemdata[0]
  701.    
  702.     // Attempt to start game mode
  703.     zp_admin_commands_start_mode(id, game_mode_id)
  704.    
  705.     menu_destroy(menuid)
  706.     show_menu_game_mode_list(id)
  707.     return PLUGIN_HANDLED;
  708. }
  709.  
  710. // Checks if a player is allowed to respawn
  711. allowed_respawn(id)
  712. {
  713.     if (is_user_alive(id))
  714.         return false;
  715.    
  716.     new CsTeams:team = cs_get_user_team(id)
  717.    
  718.     if (team == CS_TEAM_SPECTATOR || team == CS_TEAM_UNASSIGNED)
  719.         return false;
  720.    
  721.     return true;
  722. }


Itt van a txt-k is ezeket rakd be mellé különben NOTFOUNDozni fog.

Beraktam így nem magyarul, és a modok nem mennek, a(Z) Assassin, Sniper, egyik sem!

_________________
BfS* #Team ~Global Offensive IP: 217.144.54.193:27148

Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Sniper
HozzászólásElküldve: 2016.07.20. 21:30 
Offline
Senior Tag

Csatlakozott: 2015.08.11. 14:21
Hozzászólások: 215
Megköszönt másnak: 50 alkalommal
Megköszönték neki: 6 alkalommal
https://forums.alliedmods.net/showthread.php?t=244269

Parancsolj 5.0.8-as Angol nyelvű Zombi Mód.
Lefordítod magyarra és beteszed.
Sniper & Assassin Módot is tartalmaz!


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 7 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 7 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole