AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [HELP] Questions about code (https://forums.alliedmods.net/showthread.php?t=276112)

Depresie 12-15-2015 10:50

[HELP] Questions about code
 
Anyone can please explain to me what is this and what it means?
And in case i want to add a new class, for example class_nemesis2, how this code should look?
PHP Code:

 if ((userflags read_flags(g_access_make_human)) && is_user_alive(player))
             
formatex(menucharsmax(menu), "%s \r[%L]",  player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library)  && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" :  "CLASS_ZOMBIE")
  else
             
formatex(menucharsmax(menu), "\d%s [%L]"player_nameid,  (LibraryExists(LIBRARY_NEMESISLibType_Library) &&  zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE"

it was taken from here:

PHP Code:

show_menu_player_list(id)
{
    static 
menu[128], player_name[32]
    new 
menuidplayerbuffer[2], userflags get_user_flags(id)
    
    
// Title
    
switch (PL_ACTION)
    {
        case 
ACTION_INFECT_CUREformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN1")
        case 
ACTION_MAKE_NEMESISformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN2")
        case 
ACTION_MAKE_SURVIVORformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN3")
        case 
ACTION_RESPAWN_PLAYERformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN4")
    }
    
menuid menu_create(menu"menu_player_list")
    
    
// Player List
    
for (player 0player <= g_MaxPlayersplayer++)
    {
        
// Skip if not connected
        
if (!is_user_connected(player))
            continue;
        
        
// Get player's name
        
get_user_name(playerplayer_namecharsmax(player_name))
        
        
// Format text depending on the action to take
        
switch (PL_ACTION)
        {
            case 
ACTION_INFECT_CURE// Infect/Cure command
            
{
                if (
zp_core_is_zombie(player))
                {
                    if ((
userflags read_flags(g_access_make_human)) && is_user_alive(player))
                        
formatex(menucharsmax(menu), "%s \r[%L]"player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                    else
                        
formatex(menucharsmax(menu), "\d%s [%L]"player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                }
                else
                {
                    if ((
userflags read_flags(g_access_make_zombie)) && is_user_alive(player))
                        
formatex(menucharsmax(menu), "%s \y[%L]"player_nameid, (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                    else
                        
formatex(menucharsmax(menu), "\d%s [%L]"player_nameid, (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                }
            }
            case 
ACTION_MAKE_NEMESIS// Nemesis command
            
{
                if (
LibraryExists(LIBRARY_NEMESISLibType_Library) && (userflags read_flags(g_access_make_nemesis)) && is_user_alive(player) && !zp_class_nemesis_get(player))
                {
                    if (
zp_core_is_zombie(player))
                        
formatex(menucharsmax(menu), "%s \r[%L]"player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                    else
                        
formatex(menucharsmax(menu), "%s \y[%L]"player_nameid, (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                }
                else
                    
formatex(menucharsmax(menu), "\d%s [%L]"player_nameidzp_core_is_zombie(player) ? (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE" : (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
            }
            case 
ACTION_MAKE_SURVIVOR// Survivor command
            
{
                if (
LibraryExists(LIBRARY_SURVIVORLibType_Library) && (userflags read_flags(g_access_make_survivor)) && is_user_alive(player) && !zp_class_survivor_get(player))
                {
                    if (
zp_core_is_zombie(player))
                        
formatex(menucharsmax(menu), "%s \r[%L]"player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                    else
                        
formatex(menucharsmax(menu), "%s \y[%L]"player_nameid, (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                }
                else
                    
formatex(menucharsmax(menu), "\d%s [%L]"player_nameidzp_core_is_zombie(player) ? (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE" : (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
            }
            case 
ACTION_RESPAWN_PLAYER// Respawn command
            
{
                if ((
userflags read_flags(g_access_respawn_players)) && allowed_respawn(player))
                    
formatex(menucharsmax(menu), "%s"player_name)
                else
                    
formatex(menucharsmax(menu), "\d%s"player_name)
            }
        }
        
        
// Add player
        
buffer[0] = player
        buffer
[1] = 0
        menu_additem
(menuidmenubuffer)
    }
    
    
// Back - Next - Exit
    
formatex(menucharsmax(menu), "%L"id"MENU_BACK")
    
menu_setprop(menuidMPROP_BACKNAMEmenu)
    
formatex(menucharsmax(menu), "%L"id"MENU_NEXT")
    
menu_setprop(menuidMPROP_NEXTNAMEmenu)
    
formatex(menucharsmax(menu), "%L"id"MENU_EXIT")
    
menu_setprop(menuidMPROP_EXITNAMEmenu)
    
    
// If remembered page is greater than number of pages, clamp down the value
    
MENU_PAGE_PLAYERS min(MENU_PAGE_PLAYERSmenu_pages(menuid)-1)
    
    
// Fix for AMXX custom menus
    
set_pdata_int(idOFFSET_CSMENUCODE0)
    
menu_display(idmenuidMENU_PAGE_PLAYERS)



fysiks 12-15-2015 20:12

Re: [HELP] Questions about code
 
Quote:

Originally Posted by Depresie (Post 2372614)
Anyone can please explain to me what is this and what it means?

What part don't you understand?

Quote:

Originally Posted by Depresie (Post 2372614)
And in case i want to add a new class, for example class_nemesis2, how this code should look?

Are you wanting to put your new class in place of the current Nemesis class or are you saying you want both to exist? The way that the plugin is written (based on this code snippet), you'd only be able to load one or the other.

Bugsy 12-15-2015 20:16

Re: [HELP] Questions about code
 
What don't you understand in that code?
Code:

  If user has g_access_make_human admin flag(s) AND user is alive
        if ( LibraryExists(LIBRARY_NEMESIS, LibType_Library)=true AND zp_class_nemesis_get(player)=true ) use "CLASS_NEMESIS", otherwise use "CLASS_ZOMBIE" to format "%s \r[%L]" string.
  else
        if ( LibraryExists(LIBRARY_NEMESIS, LibType_Library)=true AND zp_class_nemesis_get(player)=true ) use "CLASS_NEMESIS" other wise use "CLASS_ZOMBIE" to format "\d%s [%L]" string


Depresie 12-16-2015 03:09

Re: [HELP] Questions about code
 
i want both to exist, and actualy i got 4... but i realy dont understand the role of that, and i want to be sure of what im writing

here is the full code, the first one is the one i started to edit, the second one is the original
PHP Code:

/*================================================================================     
     -----------------------
     -*- [ZP] Admin Menu -*-
     -----------------------
     
     This plugin is part of Zombie Plague Mod and is distributed under the
     terms of the GNU General Public License. Check ZP_ReadMe.txt for details.
     
 ================================================================================*/
 

 #include <amxmodx>
 #include <amxmisc>
 #include <cstrike>
 #include <fakemeta>
 #include <hamsandwich>
 #include <amx_settings_api>
 #include <zp50_core>
 #include <zp50_gamemodes>
 #define LIBRARY_NEMESIS "zp50_class_nemesis"
 #include <zp50_class_nemesis>
 #define LIBRARY_SURVIVOR "zp50_class_survivor"
 #include <zp50_class_survivor>
 #define LIBRARY_ASSASSIN "zp50_class_assassin"
 #include <zp50_class_assassin>
 #define LIBRARY_SNIPER "zp50_class_sniper"
 #include <zp50_class_sniper>
 #define LIBRARY_DRAGON "zp50_class_dragon"
 #include <zp50_class_dragon>
 #define LIBRARY_NINJA "zp50_class_NINJA"
 #include <zp50_class_ninja>
 #define LIBRARY_TYRANT "zp50_class_tyrant"
 #include <zp50_class_tyrant>
 #define LIBRARY_ALPHA "zp50_class_alpha"
 #include <zp50_class_alpha>
 #include <zp50_admin_commands>
 #include <zp50_colorchat>
 

 // Settings file
 
new const ZP_SETTINGS_FILE[] = "zombieplague.ini"
 

 
#define ACCESSFLAG_MAX_LENGTH 2
 

 // Access flags
 
new g_access_make_zombie[ACCESSFLAG_MAX_LENGTH] = "d"
 
new g_access_make_human[ACCESSFLAG_MAX_LENGTH] = "d"
 
new g_access_make_nemesis[ACCESSFLAG_MAX_LENGTH] = "d"
 
new g_access_make_survivor[ACCESSFLAG_MAX_LENGTH] = "d"
 
new g_access_make_assassin[ACCESSFLAG_MAX_LENGTH] = "d"
 
new g_access_make_sniper[ACCESSFLAG_MAX_LENGTH] = "d"
 
new g_access_make_dragon[ACCESSFLAG_MAX_LENGTH] = "d"
 
new g_access_make_ninja[ACCESSFLAG_MAX_LENGTH] = "d"
 
new g_access_make_tyrant[ACCESSFLAG_MAX_LENGTH] = "d"
 
new g_access_respawn_players[ACCESSFLAG_MAX_LENGTH] = "d"
 
new g_access_start_game_mode[ACCESSFLAG_MAX_LENGTH] = "d"
 

 
// Admin menu actions
 
enum
 
{
     
ACTION_INFECT_CURE 0,
     
ACTION_MAKE_NEMESIS,
     
ACTION_MAKE_SURVIVOR,
     
ACTION_MAKE_ASSASSIN,
     
ACTION_MAKE_SNIPER,
     
ACTION_MAKE_DRAGON,
     
ACTION_MAKE_NINJA,
     
ACTION_MAKE_TYRANT,
     
ACTION_RESPAWN_PLAYER,
     
ACTION_START_GAME_MODE
 
}
 

 
// Menu keys
 
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
 

 
// CS Player PData Offsets (win32)
 
const OFFSET_CSMENUCODE 205
 

 
#define MAXPLAYERS 32
 

 // For player/mode list menu handlers
 #define PL_ACTION g_menu_data[id][0]
 #define MENU_PAGE_PLAYERS g_menu_data[id][1]
 #define MENU_PAGE_GAME_MODES g_menu_data[id][2]
 
new g_menu_data[MAXPLAYERS+1][3]
 

 new 
g_MaxPlayers
 

 
public plugin_init()
 {
     
register_plugin("[ZP] Admin Menus"ZP_VERSION_STRING"ZP Dev Team")
     
     
g_MaxPlayers get_maxplayers()
     
     
register_menu("Admin Menu"KEYSMENU"menu_admin")
     
register_clcmd("say /adminmenu""clcmd_adminmenu")
     
register_clcmd("say adminmenu""clcmd_adminmenu")
 }
 

 public 
plugin_precache()
 {
     
// Load from external file, save if not found
     
if (!amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE ZOMBIE"g_access_make_zombiecharsmax(g_access_make_zombie)))
         
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE ZOMBIE"g_access_make_zombie)
     if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE HUMAN"g_access_make_humancharsmax(g_access_make_human)))
         
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE ZOMBIE"g_access_make_human)
     if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE NEMESIS"g_access_make_nemesischarsmax(g_access_make_nemesis)))
         
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE NEMESIS"g_access_make_nemesis)
     if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE SURVIVOR"g_access_make_survivorcharsmax(g_access_make_survivor)))
         
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE SURVIVOR"g_access_make_survivor)
     if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE ASSASSIN"g_access_make_assassincharsmax(g_access_make_assassin)))
         
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE ASSASSIN"g_access_make_assassin)
     if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE SNIPER"g_access_make_snipercharsmax(g_access_make_sniper)))
         
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE SNIPER"g_access_make_sniper)
     if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE DRAGON"g_access_make_dragoncharsmax(g_access_make_dragon)))
         
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE DRAGON"g_access_make_dragon)
     if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE NINJA"g_access_make_ninjacharsmax(g_access_make_ninja)))
         
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE NINJA"g_access_make_ninja)
     if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE TYRANT"g_access_make_tyrantcharsmax(g_access_make_tyrant)))
         
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE TYRANT"g_access_make_tyrant)
     if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""RESPAWN PLAYERS"g_access_respawn_playerscharsmax(g_access_respawn_players)))
         
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""RESPAWN PLAYERS"g_access_respawn_players)
     if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""START GAME MODE"g_access_start_game_modecharsmax(g_access_start_game_mode)))
         
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""START GAME MODE"g_access_start_game_mode)
 }
 

 public 
plugin_natives()
 {
     
register_library("zp50_admin_menu")
     
register_native("zp_admin_menu_show""native_admin_menu_show")
     
     
set_module_filter("module_filter")
     
set_native_filter("native_filter")
 }
 public 
module_filter(const module[])
 {
     if (
equal(moduleLIBRARY_NEMESIS) || equal(moduleLIBRARY_SURVIVOR))
         return 
PLUGIN_HANDLED;
         
     if (
equal(moduleLIBRARY_ASSASSIN) || equal(moduleLIBRARY_SNIPER))
         return 
PLUGIN_HANDLED;
         
     if (
equal(moduleLIBRARY_DRAGON) || equal(moduleLIBRARY_NINJA))
         return 
PLUGIN_HANDLED;
         
     if (
equal(moduleLIBRARY_TYRANT) || equal(moduleLIBRARY_ALPHA))
         return 
PLUGIN_HANDLED;
     
     return 
PLUGIN_CONTINUE;
 }
 public 
native_filter(const name[], indextrap)
 {
     if (!
trap)
         return 
PLUGIN_HANDLED;
         
     return 
PLUGIN_CONTINUE;
 }
 

 public 
native_admin_menu_show(plugin_idnum_params)
 {
     new 
id get_param(1)
     
     if (!
is_user_connected(id))
     {
         
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
         return 
false;
     }
     
     
show_menu_admin(id)
     return 
true;
 }
 

 public 
client_disconnect(id)
 {
     
// Reset remembered menu pages
     
MENU_PAGE_GAME_MODES 0
     MENU_PAGE_PLAYERS 
0
 
}
 

 public 
clcmd_adminmenu(id)
 {
     
show_menu_admin(id)
 }
 

 
// Admin Menu
 
show_menu_admin(id)
 {
     static 
menu[250]
     new 
lenuserflags get_user_flags(id)
     
     
// Title
     
len += formatex(menu[len], charsmax(menu) - len"\y%L:^n^n"id"MENU_ADMIN_TITLE")
     
     
// 1. Infect/Cure command
     
if (userflags & (read_flags(g_access_make_zombie) | read_flags(g_access_make_human)))
         
len += formatex(menu[len], charsmax(menu) - len"\r1.\w %L^n"id"MENU_ADMIN1")
     else
         
len += formatex(menu[len], charsmax(menu) - len"\d1. %L^n"id"MENU_ADMIN1")
     
     
// 2. Nemesis command
     
if (LibraryExists(LIBRARY_NEMESISLibType_Library) && (userflags read_flags(g_access_make_nemesis)))
         
len += formatex(menu[len], charsmax(menu) - len"\r2.\w %L^n"id"MENU_ADMIN2")
     else
         
len += formatex(menu[len], charsmax(menu) - len"\d2. %L^n"id"MENU_ADMIN2")
     
     
// 3. Survivor command
     
if (LibraryExists(LIBRARY_SURVIVORLibType_Library) && (userflags read_flags(g_access_make_survivor)))
         
len += formatex(menu[len], charsmax(menu) - len"\r3.\w %L^n"id"MENU_ADMIN3")
     else
         
len += formatex(menu[len], charsmax(menu) - len"\d3. %L^n"id"MENU_ADMIN3")
         
     
// 4. Assassin command
     
if (LibraryExists(LIBRARY_ASSASSINLibType_Library) && (userflags read_flags(g_access_make_assassin)))
         
len += formatex(menu[len], charsmax(menu) - len"\r4.\w %L^n"id"MENU_ADMIN4")
     else
         
len += formatex(menu[len], charsmax(menu) - len"\d4. %L^n"id"MENU_ADMIN4")
     
     
// 5. Sniper command
     
if (LibraryExists(LIBRARY_SNIPERLibType_Library) && (userflags read_flags(g_access_make_sniper)))
         
len += formatex(menu[len], charsmax(menu) - len"\r5.\w %L^n"id"MENU_ADMIN5")
     else
         
len += formatex(menu[len], charsmax(menu) - len"\d5. %L^n"id"MENU_ADMIN5")
         
     
// 6. Dragon command
     
if (LibraryExists(LIBRARY_DRAGONLibType_Library) && (userflags read_flags(g_access_make_dragon)))
         
len += formatex(menu[len], charsmax(menu) - len"\r6.\w %L^n"id"MENU_ADMIN6")
     else
         
len += formatex(menu[len], charsmax(menu) - len"\d6. %L^n"id"MENU_ADMIN6")
     
     
// 7. Survivor command
     
if (LibraryExists(LIBRARY_NINJALibType_Library) && (userflags read_flags(g_access_make_ninja)))
         
len += formatex(menu[len], charsmax(menu) - len"\r7.\w %L^n"id"MENU_ADMIN7")
     else
         
len += formatex(menu[len], charsmax(menu) - len"\d7. %L^n"id"MENU_ADMIN7")
         
     
// 8. Tyrant command
     
if (LibraryExists(LIBRARY_TYRANTLibType_Library) && (userflags read_flags(g_access_make_tyrant)))
         
len += formatex(menu[len], charsmax(menu) - len"\r8.\w %L^n"id"MENU_ADMIN8")
     else
         
len += formatex(menu[len], charsmax(menu) - len"\d8. %L^n"id"MENU_ADMIN8")
 

     
// 9. Respawn command
     
if (userflags read_flags(g_access_respawn_players))
         
len += formatex(menu[len], charsmax(menu) - len"\r9.\w %L^n"id"MENU_ADMIN9")
     else
         
len += formatex(menu[len], charsmax(menu) - len"\d9. %L^n"id"MENU_ADMIN9")
     
     
// 10. Start Game Mode command
     
if (userflags read_flags(g_access_start_game_mode))
         
len += formatex(menu[len], charsmax(menu) - len"\r10.\w %L^n"id"MENU_ADMIN_START_GAME_MODE")
     else
         
len += formatex(menu[len], charsmax(menu) - len"\d10. %L^n"id"MENU_ADMIN_START_GAME_MODE")
     
     
// 0. Exit
     
len += formatex(menu[len], charsmax(menu) - len"^n\r0.\w %L"id"MENU_EXIT")
     
     
// Fix for AMXX custom menus
     
set_pdata_int(idOFFSET_CSMENUCODE0)
     
show_menu(idKEYSMENUmenu, -1"Admin Menu")
 }
 

 
// Player List Menu
 
show_menu_player_list(id)
 {
     static 
menu[128], player_name[32]
     new 
menuidplayerbuffer[2], userflags get_user_flags(id)
     
     
// Title
     
switch (PL_ACTION)
     {
         case 
ACTION_INFECT_CUREformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN1")
         case 
ACTION_MAKE_NEMESISformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN2")
         case 
ACTION_MAKE_SURVIVORformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN3")
         case 
ACTION_MAKE_ASSASSINformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN4")
         case 
ACTION_MAKE_SNIPERformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN5")
         case 
ACTION_MAKE_DRAGONformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN6")
         case 
ACTION_MAKE_NINJAformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN7")
         case 
ACTION_MAKE_TYRANTformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN8")
         case 
ACTION_RESPAWN_PLAYERformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN9")
     }
     
menuid menu_create(menu"menu_player_list")
     
     
// Player List
     
for (player 0player <= g_MaxPlayersplayer++)
     {
         
// Skip if not connected
         
if (!is_user_connected(player))
             continue;
         
         
// Get player's name
         
get_user_name(playerplayer_namecharsmax(player_name))
         
         
// Format text depending on the action to take
         
switch (PL_ACTION)
         {
             case 
ACTION_INFECT_CURE// Infect/Cure command
             
{
                 if (
zp_core_is_zombie(player))
                 {
                     if ((
userflags read_flags(g_access_make_human)) && is_user_alive(player))
                         
formatex(menucharsmax(menu), "%s \r[%L]"player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : (LibraryExists(LIBRARY_ASSASSINLibType_Library) && zp_class_assassin_get(player)) ? "CLASS_ASSASSIN" : (LibraryExists(LIBRARY_DRAGONLibType_Library) && zp_class_dragon_get(player)) ? "CLASS_DRAGON" : (LibraryExists(LIBRARY_TYRANTLibType_Library) && zp_class_tyrant_get(player)) ? "CLASS_TYRANT" : (LibraryExists(LIBRARY_ALPHALibType_Library) && zp_class_alpha_get(player)) ? "CLASS_ALPHA" "CLASS_ZOMBIE")
                     else
                         
formatex(menucharsmax(menu), "\d%s [%L]"player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" : (LibraryExists(LIBRARY_ASSASSINLibType_Library) && zp_class_assassin_get(player)) ? "CLASS_ASSASSIN" : (LibraryExists(LIBRARY_DRAGONLibType_Library) && zp_class_dragon_get(player)) ? "CLASS_DRAGON" : (LibraryExists(LIBRARY_TYRANTLibType_Library) && zp_class_tyrant_get(player)) ? "CLASS_TYRANT" : (LibraryExists(LIBRARY_ALPHALibType_Library) && zp_class_alpha_get(player)) ? "CLASS_ALPHA" "CLASS_ZOMBIE")
                 {
                     if ((
userflags read_flags(g_access_make_zombie)) && is_user_alive(player))
                         
formatex(menucharsmax(menu), "%s \y[%L]"player_nameid, (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                     else
                         
formatex(menucharsmax(menu), "\d%s [%L]"player_nameid, (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                 }
             }
             case 
ACTION_MAKE_NEMESIS// Nemesis command
             
{
                 if (
LibraryExists(LIBRARY_NEMESISLibType_Library) && (userflags read_flags(g_access_make_nemesis)) && is_user_alive(player) && !zp_class_nemesis_get(player))
                 {
                     if (
zp_core_is_zombie(player))
                         
formatex(menucharsmax(menu), "%s \r[%L]"player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                     else
                         
formatex(menucharsmax(menu), "%s \y[%L]"player_nameid, (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                 }
                 else
                     
formatex(menucharsmax(menu), "\d%s [%L]"player_nameidzp_core_is_zombie(player) ? (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE" : (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
             }
             case 
ACTION_MAKE_SURVIVOR// Survivor command
             
{
                 if (
LibraryExists(LIBRARY_SURVIVORLibType_Library) && (userflags read_flags(g_access_make_survivor)) && is_user_alive(player) && !zp_class_survivor_get(player))
                 {
                     if (
zp_core_is_zombie(player))
                         
formatex(menucharsmax(menu), "%s \r[%L]"player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                     else
                         
formatex(menucharsmax(menu), "%s \y[%L]"player_nameid, (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                 }
                 else
                     
formatex(menucharsmax(menu), "\d%s [%L]"player_nameidzp_core_is_zombie(player) ? (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE" : (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
             }
             case 
ACTION_RESPAWN_PLAYER// Respawn command
             
{
                 if ((
userflags read_flags(g_access_respawn_players)) && allowed_respawn(player))
                     
formatex(menucharsmax(menu), "%s"player_name)
                 else
                     
formatex(menucharsmax(menu), "\d%s"player_name)
             }
         }
         
         
// Add player
         
buffer[0] = player
         buffer
[1] = 0
         menu_additem
(menuidmenubuffer)
     }
     
     
// Back - Next - Exit
     
formatex(menucharsmax(menu), "%L"id"MENU_BACK")
     
menu_setprop(menuidMPROP_BACKNAMEmenu)
     
formatex(menucharsmax(menu), "%L"id"MENU_NEXT")
     
menu_setprop(menuidMPROP_NEXTNAMEmenu)
     
formatex(menucharsmax(menu), "%L"id"MENU_EXIT")
     
menu_setprop(menuidMPROP_EXITNAMEmenu)
     
     
// If remembered page is greater than number of pages, clamp down the value
     
MENU_PAGE_PLAYERS min(MENU_PAGE_PLAYERSmenu_pages(menuid)-1)
     
     
// Fix for AMXX custom menus
     
set_pdata_int(idOFFSET_CSMENUCODE0)
     
menu_display(idmenuidMENU_PAGE_PLAYERS)
 }
 

 
// Game Mode List Menu
 
show_menu_game_mode_list(id)
 {
     static 
menu[128], transkey[64]
     new 
menuidindexitemdata[2], game_mode_count zp_gamemodes_get_count()
     
     
// Title
     
formatex(menucharsmax(menu), "%L:\r"id"MENU_INFO4")
     
menuid menu_create(menu"menu_game_mode_list")
     
     
// Item List
     
for (index 0index game_mode_countindex++)
     {
         
// Add Game Mode Name
         
zp_gamemodes_get_name(indexmenucharsmax(menu))
         
         
// ML support for mode name
         
formatex(transkeycharsmax(transkey), "MODENAME %s"menu)
         if (
GetLangTransKey(transkey) != TransKey_Badformatex(menucharsmax(menu), "%L"idtranskey)
         
         
itemdata[0] = index
         itemdata
[1] = 0
         menu_additem
(menuidmenuitemdata)
     }
     
     
// No game modes to display?
     
if (menu_items(menuid) <= 0)
     {
         
menu_destroy(menuid)
         return;
     }
     
     
// Back - Next - Exit
     
formatex(menucharsmax(menu), "%L"id"MENU_BACK")
     
menu_setprop(menuidMPROP_BACKNAMEmenu)
     
formatex(menucharsmax(menu), "%L"id"MENU_NEXT")
     
menu_setprop(menuidMPROP_NEXTNAMEmenu)
     
formatex(menucharsmax(menu), "%L"id"MENU_EXIT")
     
menu_setprop(menuidMPROP_EXITNAMEmenu)
     
     
// If remembered page is greater than number of pages, clamp down the value
     
MENU_PAGE_GAME_MODES min(MENU_PAGE_GAME_MODESmenu_pages(menuid)-1)
     
     
// Fix for AMXX custom menus
     
set_pdata_int(idOFFSET_CSMENUCODE0)
     
menu_display(idmenuidMENU_PAGE_GAME_MODES)
 }
 

 
// Admin Menu
 
public menu_admin(idkey)
 {
     
// Player disconnected?
     
if (!is_user_connected(id))
         return 
PLUGIN_HANDLED;
     
     new 
userflags get_user_flags(id)
     
     switch (
key)
     {
         case 
ACTION_INFECT_CURE// Infect/Cure command
         
{
             if (
userflags & (read_flags(g_access_make_zombie) | read_flags(g_access_make_human)))
             {
                 
// Show player list for admin to pick a target
                 
PL_ACTION ACTION_INFECT_CURE
                 show_menu_player_list
(id)
             }
             else
             {
                 
zp_colored_print(id"%L"id"CMD_NOT_ACCESS")
                 
show_menu_admin(id)
             }
         }
         case 
ACTION_MAKE_NEMESIS// Nemesis command
         
{
             if (
LibraryExists(LIBRARY_NEMESISLibType_Library) && (userflags read_flags(g_access_make_nemesis)))
             {
                 
// Show player list for admin to pick a target
                 
PL_ACTION ACTION_MAKE_NEMESIS
                 show_menu_player_list
(id)
             }
             else
             {
                 
zp_colored_print(id"%L"id"CMD_NOT_ACCESS")
                 
show_menu_admin(id)
             }
         }
         case 
ACTION_MAKE_SURVIVOR// Survivor command
         
{
             if (
LibraryExists(LIBRARY_SURVIVORLibType_Library) && (userflags read_flags(g_access_make_survivor)))
             {
                 
// Show player list for admin to pick a target
                 
PL_ACTION ACTION_MAKE_SURVIVOR
                 show_menu_player_list
(id)
             }
             else
             {
                 
zp_colored_print(id"%L"id"CMD_NOT_ACCESS")
                 
show_menu_admin(id)
             }
         }
         case 
ACTION_RESPAWN_PLAYER// Respawn command
         
{
             if (
userflags read_flags(g_access_respawn_players))
             {
                 
// Show player list for admin to pick a target
                 
PL_ACTION ACTION_RESPAWN_PLAYER
                 show_menu_player_list
(id)
             }
             else
             {
                 
zp_colored_print(id"%L"id"CMD_NOT_ACCESS")
                 
show_menu_admin(id)
             }
         }
         case 
ACTION_START_GAME_MODE// Start Game Mode command
         
{
             if (
userflags read_flags(g_access_start_game_mode))
                 
show_menu_game_mode_list(id)
             else
             {
                 
zp_colored_print(id"%L"id"CMD_NOT_ACCESS")
                 
show_menu_admin(id)
             }
         }
     }
     
     return 
PLUGIN_HANDLED;
 }
 

 
// Player List Menu
 
public menu_player_list(idmenuiditem)
 {
     
// Menu was closed
     
if (item == MENU_EXIT)
     {
         
MENU_PAGE_PLAYERS 0
         menu_destroy
(menuid)
         
show_menu_admin(id)
         return 
PLUGIN_HANDLED;
     }
     
     
// Remember player's menu page
     
MENU_PAGE_PLAYERS item 7
     
     
// Retrieve player id
     
new buffer[2], dummyplayer
     menu_item_getinfo
(menuiditemdummybuffercharsmax(buffer), __dummy)
     
player buffer[0]
     
     
// Perform action on player
     
     // Get admin flags
     
new userflags get_user_flags(id)
     
     
// Make sure it's still connected
     
if (is_user_connected(player))
     {
         
// Perform the right action if allowed
         
switch (PL_ACTION)
         {
             case 
ACTION_INFECT_CURE// Infect/Cure command
             
{
                 if (
zp_core_is_zombie(player))
                 {
                     if ((
userflags read_flags(g_access_make_human)) && is_user_alive(player))
                         
zp_admin_commands_human(idplayer)
                     else
                         
zp_colored_print(id"%L"id"CMD_NOT")
                 }
                 else
                 {
                     if ((
userflags read_flags(g_access_make_zombie)) && is_user_alive(player))
                         
zp_admin_commands_zombie(idplayer)
                     else
                         
zp_colored_print(id"%L"id"CMD_NOT")
                 }
             }
             case 
ACTION_MAKE_NEMESIS// Nemesis command
             
{
                 if (
LibraryExists(LIBRARY_NEMESISLibType_Library) && (userflags read_flags(g_access_make_nemesis)) && is_user_alive(player) && !zp_class_nemesis_get(player))
                     
zp_admin_commands_nemesis(idplayer)
                 else
                     
zp_colored_print(id"%L"id"CMD_NOT")
             }
             case 
ACTION_MAKE_SURVIVOR// Survivor command
             
{
                 if (
LibraryExists(LIBRARY_SURVIVORLibType_Library) && (userflags read_flags(g_access_make_survivor)) && is_user_alive(player) && !zp_class_survivor_get(player))
                     
zp_admin_commands_survivor(idplayer)
                 else
                     
zp_colored_print(id"%L"id"CMD_NOT")
             }
             case 
ACTION_RESPAWN_PLAYER// Respawn command
             
{
                 if ((
userflags read_flags(g_access_respawn_players)) && allowed_respawn(player))
                     
zp_admin_commands_respawn(idplayer)
                 else
                     
zp_colored_print(id"%L"id"CMD_NOT")
             }
         }
     }
     else
         
zp_colored_print(id"%L"id"CMD_NOT")
     
     
menu_destroy(menuid)
     
show_menu_player_list(id)
     return 
PLUGIN_HANDLED;
 }
 

 
// Game Mode List Menu
 
public menu_game_mode_list(idmenuiditem)
 {
     
// Menu was closed
     
if (item == MENU_EXIT)
     {
         
MENU_PAGE_GAME_MODES 0
         menu_destroy
(menuid)
         
show_menu_admin(id)
         return 
PLUGIN_HANDLED;
     }
     
     
// Remember game modes menu page
     
MENU_PAGE_GAME_MODES item 7
     
     
// Retrieve game mode id
     
new itemdata[2], dummygame_mode_id
     menu_item_getinfo
(menuiditemdummyitemdatacharsmax(itemdata), __dummy)
     
game_mode_id itemdata[0]
     
     
// Attempt to start game mode
     
zp_admin_commands_start_mode(idgame_mode_id)
     
     
menu_destroy(menuid)
     
show_menu_game_mode_list(id)
     return 
PLUGIN_HANDLED;
 }
 

 
// Checks if a player is allowed to respawn
 
allowed_respawn(id)
 {
     if (
is_user_alive(id))
         return 
false;
     
     new 
CsTeams:team cs_get_user_team(id)
     
     if (
team == CS_TEAM_SPECTATOR || team == CS_TEAM_UNASSIGNED)
         return 
false;
     
     return 
true;
 } 


Original


PHP Code:

/*================================================================================
    
    -----------------------
    -*- [ZP] Admin Menu -*-
    -----------------------
    
    This plugin is part of Zombie Plague Mod and is distributed under the
    terms of the GNU General Public License. Check ZP_ReadMe.txt for details.
    
================================================================================*/

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <amx_settings_api>
#include <zp50_core>
#include <zp50_gamemodes>
#define LIBRARY_NEMESIS "zp50_class_nemesis"
#include <zp50_class_nemesis>
#define LIBRARY_SURVIVOR "zp50_class_survivor"
#include <zp50_class_survivor>
#include <zp50_admin_commands>
#include <zp50_colorchat>

// Settings file
new const ZP_SETTINGS_FILE[] = "zombieplague.ini"

#define ACCESSFLAG_MAX_LENGTH 2

// Access flags
new g_access_make_zombie[ACCESSFLAG_MAX_LENGTH] = "d"
new g_access_make_human[ACCESSFLAG_MAX_LENGTH] = "d"
new g_access_make_nemesis[ACCESSFLAG_MAX_LENGTH] = "d"
new g_access_make_survivor[ACCESSFLAG_MAX_LENGTH] = "d"
new g_access_respawn_players[ACCESSFLAG_MAX_LENGTH] = "d"
new g_access_start_game_mode[ACCESSFLAG_MAX_LENGTH] = "d"

// Admin menu actions
enum
{
    
ACTION_INFECT_CURE 0,
    
ACTION_MAKE_NEMESIS,
    
ACTION_MAKE_SURVIVOR,
    
ACTION_RESPAWN_PLAYER,
    
ACTION_START_GAME_MODE
}

// Menu keys
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

// CS Player PData Offsets (win32)
const OFFSET_CSMENUCODE 205

#define MAXPLAYERS 32

// For player/mode list menu handlers
#define PL_ACTION g_menu_data[id][0]
#define MENU_PAGE_PLAYERS g_menu_data[id][1]
#define MENU_PAGE_GAME_MODES g_menu_data[id][2]
new g_menu_data[MAXPLAYERS+1][3]

new 
g_MaxPlayers

public plugin_init()
{
    
register_plugin("[ZP] Admin Menus"ZP_VERSION_STRING"ZP Dev Team")
    
    
g_MaxPlayers get_maxplayers()
    
    
register_menu("Admin Menu"KEYSMENU"menu_admin")
    
register_clcmd("say /adminmenu""clcmd_adminmenu")
    
register_clcmd("say adminmenu""clcmd_adminmenu")
}

public 
plugin_precache()
{
    
// Load from external file, save if not found
    
if (!amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE ZOMBIE"g_access_make_zombiecharsmax(g_access_make_zombie)))
        
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE ZOMBIE"g_access_make_zombie)
    if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE HUMAN"g_access_make_humancharsmax(g_access_make_human)))
        
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE ZOMBIE"g_access_make_human)
    if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE NEMESIS"g_access_make_nemesischarsmax(g_access_make_nemesis)))
        
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE NEMESIS"g_access_make_nemesis)
    if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE SURVIVOR"g_access_make_survivorcharsmax(g_access_make_survivor)))
        
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""MAKE SURVIVOR"g_access_make_survivor)
    if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""RESPAWN PLAYERS"g_access_respawn_playerscharsmax(g_access_respawn_players)))
        
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""RESPAWN PLAYERS"g_access_respawn_players)
    if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Access Flags""START GAME MODE"g_access_start_game_modecharsmax(g_access_start_game_mode)))
        
amx_save_setting_string(ZP_SETTINGS_FILE"Access Flags""START GAME MODE"g_access_start_game_mode)
}

public 
plugin_natives()
{
    
register_library("zp50_admin_menu")
    
register_native("zp_admin_menu_show""native_admin_menu_show")
    
    
set_module_filter("module_filter")
    
set_native_filter("native_filter")
}
public 
module_filter(const module[])
{
    if (
equal(moduleLIBRARY_NEMESIS) || equal(moduleLIBRARY_SURVIVOR))
        return 
PLUGIN_HANDLED;
    
    return 
PLUGIN_CONTINUE;
}
public 
native_filter(const name[], indextrap)
{
    if (!
trap)
        return 
PLUGIN_HANDLED;
        
    return 
PLUGIN_CONTINUE;
}

public 
native_admin_menu_show(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[ZP] Invalid Player (%d)"id)
        return 
false;
    }
    
    
show_menu_admin(id)
    return 
true;
}

public 
client_disconnect(id)
{
    
// Reset remembered menu pages
    
MENU_PAGE_GAME_MODES 0
    MENU_PAGE_PLAYERS 
0
}

public 
clcmd_adminmenu(id)
{
    
show_menu_admin(id)
}

// Admin Menu
show_menu_admin(id)
{
    static 
menu[250]
    new 
lenuserflags get_user_flags(id)
    
    
// Title
    
len += formatex(menu[len], charsmax(menu) - len"\y%L:^n^n"id"MENU_ADMIN_TITLE")
    
    
// 1. Infect/Cure command
    
if (userflags & (read_flags(g_access_make_zombie) | read_flags(g_access_make_human)))
        
len += formatex(menu[len], charsmax(menu) - len"\r1.\w %L^n"id"MENU_ADMIN1")
    else
        
len += formatex(menu[len], charsmax(menu) - len"\d1. %L^n"id"MENU_ADMIN1")
    
    
// 2. Nemesis command
    
if (LibraryExists(LIBRARY_NEMESISLibType_Library) && (userflags read_flags(g_access_make_nemesis)))
        
len += formatex(menu[len], charsmax(menu) - len"\r2.\w %L^n"id"MENU_ADMIN2")
    else
        
len += formatex(menu[len], charsmax(menu) - len"\d2. %L^n"id"MENU_ADMIN2")
    
    
// 3. Survivor command
    
if (LibraryExists(LIBRARY_SURVIVORLibType_Library) && (userflags read_flags(g_access_make_survivor)))
        
len += formatex(menu[len], charsmax(menu) - len"\r3.\w %L^n"id"MENU_ADMIN3")
    else
        
len += formatex(menu[len], charsmax(menu) - len"\d3. %L^n"id"MENU_ADMIN3")
    
    
// 4. Respawn command
    
if (userflags read_flags(g_access_respawn_players))
        
len += formatex(menu[len], charsmax(menu) - len"\r4.\w %L^n"id"MENU_ADMIN4")
    else
        
len += formatex(menu[len], charsmax(menu) - len"\d4. %L^n"id"MENU_ADMIN4")
    
    
// 5. Start Game Mode command
    
if (userflags read_flags(g_access_start_game_mode))
        
len += formatex(menu[len], charsmax(menu) - len"\r5.\w %L^n"id"MENU_ADMIN_START_GAME_MODE")
    else
        
len += formatex(menu[len], charsmax(menu) - len"\d5. %L^n"id"MENU_ADMIN_START_GAME_MODE")
    
    
// 0. Exit
    
len += formatex(menu[len], charsmax(menu) - len"^n\r0.\w %L"id"MENU_EXIT")
    
    
// Fix for AMXX custom menus
    
set_pdata_int(idOFFSET_CSMENUCODE0)
    
show_menu(idKEYSMENUmenu, -1"Admin Menu")
}

// Player List Menu
show_menu_player_list(id)
{
    static 
menu[128], player_name[32]
    new 
menuidplayerbuffer[2], userflags get_user_flags(id)
    
    
// Title
    
switch (PL_ACTION)
    {
        case 
ACTION_INFECT_CUREformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN1")
        case 
ACTION_MAKE_NEMESISformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN2")
        case 
ACTION_MAKE_SURVIVORformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN3")
        case 
ACTION_RESPAWN_PLAYERformatex(menucharsmax(menu), "%L\r"id"MENU_ADMIN4")
    }
    
menuid menu_create(menu"menu_player_list")
    
    
// Player List
    
for (player 0player <= g_MaxPlayersplayer++)
    {
        
// Skip if not connected
        
if (!is_user_connected(player))
            continue;
        
        
// Get player's name
        
get_user_name(playerplayer_namecharsmax(player_name))
        
        
// Format text depending on the action to take
        
switch (PL_ACTION)
        {
            case 
ACTION_INFECT_CURE// Infect/Cure command
            
{
                if (
zp_core_is_zombie(player))
                {
                    if ((
userflags read_flags(g_access_make_human)) && is_user_alive(player))
                        
formatex(menucharsmax(menu), "%s \r[%L]"player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                    else
                        
formatex(menucharsmax(menu), "\d%s [%L]"player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                }
                else
                {
                    if ((
userflags read_flags(g_access_make_zombie)) && is_user_alive(player))
                        
formatex(menucharsmax(menu), "%s \y[%L]"player_nameid, (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                    else
                        
formatex(menucharsmax(menu), "\d%s [%L]"player_nameid, (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                }
            }
            case 
ACTION_MAKE_NEMESIS// Nemesis command
            
{
                if (
LibraryExists(LIBRARY_NEMESISLibType_Library) && (userflags read_flags(g_access_make_nemesis)) && is_user_alive(player) && !zp_class_nemesis_get(player))
                {
                    if (
zp_core_is_zombie(player))
                        
formatex(menucharsmax(menu), "%s \r[%L]"player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                    else
                        
formatex(menucharsmax(menu), "%s \y[%L]"player_nameid, (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                }
                else
                    
formatex(menucharsmax(menu), "\d%s [%L]"player_nameidzp_core_is_zombie(player) ? (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE" : (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
            }
            case 
ACTION_MAKE_SURVIVOR// Survivor command
            
{
                if (
LibraryExists(LIBRARY_SURVIVORLibType_Library) && (userflags read_flags(g_access_make_survivor)) && is_user_alive(player) && !zp_class_survivor_get(player))
                {
                    if (
zp_core_is_zombie(player))
                        
formatex(menucharsmax(menu), "%s \r[%L]"player_nameid, (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE")
                    else
                        
formatex(menucharsmax(menu), "%s \y[%L]"player_nameid, (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
                }
                else
                    
formatex(menucharsmax(menu), "\d%s [%L]"player_nameidzp_core_is_zombie(player) ? (LibraryExists(LIBRARY_NEMESISLibType_Library) && zp_class_nemesis_get(player)) ? "CLASS_NEMESIS" "CLASS_ZOMBIE" : (LibraryExists(LIBRARY_SURVIVORLibType_Library) && zp_class_survivor_get(player)) ? "CLASS_SURVIVOR" "CLASS_HUMAN")
            }
            case 
ACTION_RESPAWN_PLAYER// Respawn command
            
{
                if ((
userflags read_flags(g_access_respawn_players)) && allowed_respawn(player))
                    
formatex(menucharsmax(menu), "%s"player_name)
                else
                    
formatex(menucharsmax(menu), "\d%s"player_name)
            }
        }
        
        
// Add player
        
buffer[0] = player
        buffer
[1] = 0
        menu_additem
(menuidmenubuffer)
    }
    
    
// Back - Next - Exit
    
formatex(menucharsmax(menu), "%L"id"MENU_BACK")
    
menu_setprop(menuidMPROP_BACKNAMEmenu)
    
formatex(menucharsmax(menu), "%L"id"MENU_NEXT")
    
menu_setprop(menuidMPROP_NEXTNAMEmenu)
    
formatex(menucharsmax(menu), "%L"id"MENU_EXIT")
    
menu_setprop(menuidMPROP_EXITNAMEmenu)
    
    
// If remembered page is greater than number of pages, clamp down the value
    
MENU_PAGE_PLAYERS min(MENU_PAGE_PLAYERSmenu_pages(menuid)-1)
    
    
// Fix for AMXX custom menus
    
set_pdata_int(idOFFSET_CSMENUCODE0)
    
menu_display(idmenuidMENU_PAGE_PLAYERS)
}

// Game Mode List Menu
show_menu_game_mode_list(id)
{
    static 
menu[128], transkey[64]
    new 
menuidindexitemdata[2], game_mode_count zp_gamemodes_get_count()
    
    
// Title
    
formatex(menucharsmax(menu), "%L:\r"id"MENU_INFO4")
    
menuid menu_create(menu"menu_game_mode_list")
    
    
// Item List
    
for (index 0index game_mode_countindex++)
    {
        
// Add Game Mode Name
        
zp_gamemodes_get_name(indexmenucharsmax(menu))
        
        
// ML support for mode name
        
formatex(transkeycharsmax(transkey), "MODENAME %s"menu)
        if (
GetLangTransKey(transkey) != TransKey_Badformatex(menucharsmax(menu), "%L"idtranskey)
        
        
itemdata[0] = index
        itemdata
[1] = 0
        menu_additem
(menuidmenuitemdata)
    }
    
    
// No game modes to display?
    
if (menu_items(menuid) <= 0)
    {
        
menu_destroy(menuid)
        return;
    }
    
    
// Back - Next - Exit
    
formatex(menucharsmax(menu), "%L"id"MENU_BACK")
    
menu_setprop(menuidMPROP_BACKNAMEmenu)
    
formatex(menucharsmax(menu), "%L"id"MENU_NEXT")
    
menu_setprop(menuidMPROP_NEXTNAMEmenu)
    
formatex(menucharsmax(menu), "%L"id"MENU_EXIT")
    
menu_setprop(menuidMPROP_EXITNAMEmenu)
    
    
// If remembered page is greater than number of pages, clamp down the value
    
MENU_PAGE_GAME_MODES min(MENU_PAGE_GAME_MODESmenu_pages(menuid)-1)
    
    
// Fix for AMXX custom menus
    
set_pdata_int(idOFFSET_CSMENUCODE0)
    
menu_display(idmenuidMENU_PAGE_GAME_MODES)
}

// Admin Menu
public menu_admin(idkey)
{
    
// Player disconnected?
    
if (!is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    new 
userflags get_user_flags(id)
    
    switch (
key)
    {
        case 
ACTION_INFECT_CURE// Infect/Cure command
        
{
            if (
userflags & (read_flags(g_access_make_zombie) | read_flags(g_access_make_human)))
            {
                
// Show player list for admin to pick a target
                
PL_ACTION ACTION_INFECT_CURE
                show_menu_player_list
(id)
            }
            else
            {
                
zp_colored_print(id"%L"id"CMD_NOT_ACCESS")
                
show_menu_admin(id)
            }
        }
        case 
ACTION_MAKE_NEMESIS// Nemesis command
        
{
            if (
LibraryExists(LIBRARY_NEMESISLibType_Library) && (userflags read_flags(g_access_make_nemesis)))
            {
                
// Show player list for admin to pick a target
                
PL_ACTION ACTION_MAKE_NEMESIS
                show_menu_player_list
(id)
            }
            else
            {
                
zp_colored_print(id"%L"id"CMD_NOT_ACCESS")
                
show_menu_admin(id)
            }
        }
        case 
ACTION_MAKE_SURVIVOR// Survivor command
        
{
            if (
LibraryExists(LIBRARY_SURVIVORLibType_Library) && (userflags read_flags(g_access_make_survivor)))
            {
                
// Show player list for admin to pick a target
                
PL_ACTION ACTION_MAKE_SURVIVOR
                show_menu_player_list
(id)
            }
            else
            {
                
zp_colored_print(id"%L"id"CMD_NOT_ACCESS")
                
show_menu_admin(id)
            }
        }
        case 
ACTION_RESPAWN_PLAYER// Respawn command
        
{
            if (
userflags read_flags(g_access_respawn_players))
            {
                
// Show player list for admin to pick a target
                
PL_ACTION ACTION_RESPAWN_PLAYER
                show_menu_player_list
(id)
            }
            else
            {
                
zp_colored_print(id"%L"id"CMD_NOT_ACCESS")
                
show_menu_admin(id)
            }
        }
        case 
ACTION_START_GAME_MODE// Start Game Mode command
        
{
            if (
userflags read_flags(g_access_start_game_mode))
                
show_menu_game_mode_list(id)
            else
            {
                
zp_colored_print(id"%L"id"CMD_NOT_ACCESS")
                
show_menu_admin(id)
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

// Player List Menu
public menu_player_list(idmenuiditem)
{
    
// Menu was closed
    
if (item == MENU_EXIT)
    {
        
MENU_PAGE_PLAYERS 0
        menu_destroy
(menuid)
        
show_menu_admin(id)
        return 
PLUGIN_HANDLED;
    }
    
    
// Remember player's menu page
    
MENU_PAGE_PLAYERS item 7
    
    
// Retrieve player id
    
new buffer[2], dummyplayer
    menu_item_getinfo
(menuiditemdummybuffercharsmax(buffer), __dummy)
    
player buffer[0]
    
    
// Perform action on player
    
    // Get admin flags
    
new userflags get_user_flags(id)
    
    
// Make sure it's still connected
    
if (is_user_connected(player))
    {
        
// Perform the right action if allowed
        
switch (PL_ACTION)
        {
            case 
ACTION_INFECT_CURE// Infect/Cure command
            
{
                if (
zp_core_is_zombie(player))
                {
                    if ((
userflags read_flags(g_access_make_human)) && is_user_alive(player))
                        
zp_admin_commands_human(idplayer)
                    else
                        
zp_colored_print(id"%L"id"CMD_NOT")
                }
                else
                {
                    if ((
userflags read_flags(g_access_make_zombie)) && is_user_alive(player))
                        
zp_admin_commands_zombie(idplayer)
                    else
                        
zp_colored_print(id"%L"id"CMD_NOT")
                }
            }
            case 
ACTION_MAKE_NEMESIS// Nemesis command
            
{
                if (
LibraryExists(LIBRARY_NEMESISLibType_Library) && (userflags read_flags(g_access_make_nemesis)) && is_user_alive(player) && !zp_class_nemesis_get(player))
                    
zp_admin_commands_nemesis(idplayer)
                else
                    
zp_colored_print(id"%L"id"CMD_NOT")
            }
            case 
ACTION_MAKE_SURVIVOR// Survivor command
            
{
                if (
LibraryExists(LIBRARY_SURVIVORLibType_Library) && (userflags read_flags(g_access_make_survivor)) && is_user_alive(player) && !zp_class_survivor_get(player))
                    
zp_admin_commands_survivor(idplayer)
                else
                    
zp_colored_print(id"%L"id"CMD_NOT")
            }
            case 
ACTION_RESPAWN_PLAYER// Respawn command
            
{
                if ((
userflags read_flags(g_access_respawn_players)) && allowed_respawn(player))
                    
zp_admin_commands_respawn(idplayer)
                else
                    
zp_colored_print(id"%L"id"CMD_NOT")
            }
        }
    }
    else
        
zp_colored_print(id"%L"id"CMD_NOT")
    
    
menu_destroy(menuid)
    
show_menu_player_list(id)
    return 
PLUGIN_HANDLED;
}

// Game Mode List Menu
public menu_game_mode_list(idmenuiditem)
{
    
// Menu was closed
    
if (item == MENU_EXIT)
    {
        
MENU_PAGE_GAME_MODES 0
        menu_destroy
(menuid)
        
show_menu_admin(id)
        return 
PLUGIN_HANDLED;
    }
    
    
// Remember game modes menu page
    
MENU_PAGE_GAME_MODES item 7
    
    
// Retrieve game mode id
    
new itemdata[2], dummygame_mode_id
    menu_item_getinfo
(menuiditemdummyitemdatacharsmax(itemdata), __dummy)
    
game_mode_id itemdata[0]
    
    
// Attempt to start game mode
    
zp_admin_commands_start_mode(idgame_mode_id)
    
    
menu_destroy(menuid)
    
show_menu_game_mode_list(id)
    return 
PLUGIN_HANDLED;
}

// Checks if a player is allowed to respawn
allowed_respawn(id)
{
    if (
is_user_alive(id))
        return 
false;
    
    new 
CsTeams:team cs_get_user_team(id)
    
    if (
team == CS_TEAM_SPECTATOR || team == CS_TEAM_UNASSIGNED)
        return 
false;
    
    return 
true;



fysiks 12-16-2015 09:14

Re: [HELP] Questions about code
 
For long code, attach the .sma file . . . it's so much easier downloading a file than having to scroll through thousands of lines of code (twice).

Depresie 12-16-2015 09:38

Re: [HELP] Questions about code
 
2 Attachment(s)
Here they are


All times are GMT -4. The time now is 17:52.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.