hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.16. 19:27



Jelenlévő felhasználók

Jelenleg 386 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 384 vendég

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot], 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  [18 hozzászólás ]  Oldal12Következő
Szerző Üzenet
 Hozzászólás témája: screenshot készitése banoláskor
HozzászólásElküldve:2012.04.27. 18:36 
Offline
Őstag
Avatar

Csatlakozott:2010.04.16. 16:50
Hozzászólások:1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
Silent-tel probáltuk megoldani, hogy banoláskor készítsen képet a játékosról a cstrike mappájába de valahogy nem jött sehogyse össze !!
Azt szeretnénk elérni, hogy ban elött csináljon egy képet a játékosrol de elötte ugorjon ki neki egy HUD üzenet a következőkkel:
Szerver nev: pl asd szerver
Admin neve: pl retek
jatekos nev: pl asd
idopont: 2012-04-15


Találtam egy hasonló plugint de abbol kéne valahogy átirni de nem megy sajnos !!
Kód:
  1. #include <amxmodx>

  2. #include <amxmisc>

  3.  

  4. #define PLUGIN "Ban with proof"

  5. #define VERSION "1.0.4"

  6. #define AUTHOR "[lego]F34R"

  7.  

  8. static const banurl[] = ""

  9.  

  10. new Bantype

  11.  

  12. public plugin_init() {

  13.         register_plugin(PLUGIN, VERSION, AUTHOR)

  14.         register_concmd("amx_banshot","banwithproof",ADMIN_BAN,"<Ban username with screenshot 1=IP 2=Steamid 3=Amxbans 4=Not ban")

  15.         register_cvar("amx_banurl",banurl)

  16.         Bantype = register_cvar("amx_banshot_type", "1")       

  17. }

  18.  

  19.  

  20. public banwithproof(id,level,cid){

  21.         if(!cmd_access(id,level,cid,2))

  22.                 return PLUGIN_HANDLED;

  23.  

  24.         new authid[32], ipadd[32], name[32],CurrentTime[9], hostname[64] ,banurl[64]

  25.         new arg[32], arg2[32], temp[2]

  26.        

  27.         read_argv(1,arg,31)

  28.         read_argv(2,arg2,31)

  29.        

  30.         new target = cmd_target(id,arg,1)

  31.        

  32.         if (!target) return PLUGIN_HANDLED

  33.        

  34.         get_user_ip(target,ipadd,31)

  35.         get_cvar_string("hostname",hostname,63)

  36.         get_user_name(target,name,31)

  37.         get_user_authid(target,authid,31)

  38.         get_cvar_string("amx_banurl", banurl,63)

  39.        

  40.         log_to_file("BannedwithSS.txt","    %s | STEAMID: %s^n",name,authid)

  41.        

  42.         client_print(target,print_chat, "[Banned] %s",hostname)

  43.         client_print(target,print_chat, "[Banned] %s [Steamid] %s @ IP - %s",name,authid,ipadd)

  44.        

  45.         get_time("%m/%d/%Y - %H:%M:%S",CurrentTime,31)

  46.        

  47.         client_print(target,print_chat, "[Banned] %s",CurrentTime)

  48.         client_print(target,print_chat, "[Banned] Visit %s to be unbanned",banurl)

  49.        

  50.         console_print(target,"[Banned] %s",hostname)

  51.         console_print(target,"[Banned] %s [Steamid] %s @ IP - %s",name,authid,ipadd)

  52.         console_print(target,"[Banned] %s",CurrentTime)

  53.         console_print(target,"[Banned] Visit %s to be unbanned",banurl)

  54.        

  55.         client_cmd(target,"wait;wait;snapshot;wait;snapshot")

  56.        

  57.         temp[0] = target

  58.         temp[1] = str_to_num(arg2)

  59.        

  60.         set_task(0.5,"persontoban", target, temp, 2)

  61.        

  62.         return PLUGIN_HANDLED

  63. }

  64.  

  65. public persontoban(arg[]){

  66.         new name2[32]

  67.        

  68.         new target = arg[0]

  69.         new bantime = arg[1]

  70.        

  71.         get_user_name(target,name2,31)

  72.        

  73.         switch (get_pcvar_num(Bantype)){

  74.                 case 1:{

  75.                         server_cmd("amx_ban %s %d",name2,bantime)

  76.                 }

  77.                 case 2:{

  78.                         server_cmd("amx_banip %s %d",name2,bantime)

  79.                 }

  80.                 case 3:{

  81.                         server_cmd("amx_ban %d %s",bantime,name2)

  82.                 }

  83.                 case 4:{

  84.                         server_cmd("amx_say Visit %s",banurl)

  85.                 }

  86.         }

  87.        

  88. }

  89.  


És itt van amibe bele kéne irni !! (ez az Advanced_bans egyik része ahol végrehajtja a bant a plugin)
Kód:
  1. public CmdBanReason(id)

  2. {

  3.         new player = g_ban_player[id];

  4.        

  5.         if( !player ) return PLUGIN_HANDLED;

  6.        

  7.         new reason[128];

  8.         read_args(reason, sizeof(reason) - 1);

  9.         remove_quotes(reason);

  10.        

  11.         new name[32], name2[32], authid[32], authid2[32]

  12.  

  13.         get_user_name(player, name2, 31)

  14.         get_user_authid(id, authid, 31)

  15.         get_user_authid(player, authid2, 31)

  16.         get_user_name(id, name, 31)

  17.        

  18.         new userid2 = get_user_userid(player)

  19.  

  20.         log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id], reason)

  21.  

  22.         if ( !equal("STEAM_0:", authid2, 8))

  23.         {

  24.                 client_cmd(id, "amx_baniptql #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);

  25.         }

  26.         else

  27.         {

  28.                 client_cmd(id, "amx_bantql #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);

  29.         }

  30.  

  31.         server_exec()

  32.        

  33.         g_ban_player[id] = 0;

  34.  

  35.         displayBanMenu(id, g_menuPosition[id])

  36.        

  37.         return PLUGIN_HANDLED;

  38. }

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: screenshot készitése banoláskor
HozzászólásElküldve:2012.04.27. 18:37 
Offline
Tiszteletbeli
Avatar

Csatlakozott:2011.09.18. 13:01
Hozzászólások:4274
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 515 alkalommal
A kerdesedre a valasz .

amx_bans

_________________
Idk. Csak ugy funbooo.
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: screenshot készitése banoláskor
HozzászólásElküldve:2012.04.27. 18:38 
Offline
Őstag
Avatar

Csatlakozott:2010.04.16. 16:50
Hozzászólások:1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
Nem kell mert advanced_bans már megszokott és SQL re ment több szerver banlistát !!!

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: screenshot készitése banoláskor
HozzászólásElküldve:2012.04.27. 19:54 
Offline
Signore Senior
Avatar

Csatlakozott:2011.09.09. 17:39
Hozzászólások:4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
Nézd meg:

Kód:


public CmdBanReason
(id)
{
    new count;
    count = 5;
    new player = g_ban_player[id];
    if( !player ) return PLUGIN_HANDLED;
    new name[32], name2[32], authid[32], authid2[32], ip[36]
    
    get_user_ip
(player, ip, 36, 0);
    
    new reason
[128];
    read_args(reason, sizeof(reason) - 1);
    remove_quotes(reason);
     
    get_user_name
(player, name2, 31)
    get_user_authid(id, authid, 31)
    get_user_authid(player, authid2, 31)
    get_user_name(id, name, 31)
    new userid2 = get_user_userid(player)
    get_cvar_string("hostname",hostname,63) 
    new CurrentTime
[9], hostname[64] ,banurl[64]
    
    if
(count >= 0)
    {
        if ( !equal("STEAM_0:", authid2, 8))
        {
            set_hudmessage(255, 0, 0, 0.02, 0.76, 0, 6.0, 12.0)
            show_hudmessage(id, "Szerver: %s^n Admin neve: %s^n Neved: %s^n Steam: %s^nIdo:%s^n", hostname, name, name2, authid2, CurrentTime)
            client_cmd(player, "wait;wait;snapshot;wait;snapshot");
        }
        else
        
{
            set_hudmessage(255, 0, 0, 0.02, 0.76, 0, 6.0, 12.0)
            show_hudmessage(id, "Szerver: %s^n Admin neve: %s^n Neved: %s^n IP: %s^n Ido:%s^n", hostname, name, name2, ip, CurrentTime )
            client_cmd(player, "wait;wait;snapshot;wait;snapshot");
        }
    }
    else
    
{
        if ( !equal("STEAM_0:", authid2, 8))
        {
            client_cmd(id, "amx_baniptql #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);
        }
        else
        
{
            client_cmd(id, "amx_bantql #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);
        }
        server_exec()
        g_ban_player[id] = 0;
        displayBanMenu(id, g_menuPosition[id])
    }
    
    return PLUGIN_HANDLED
;
}



Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: screenshot készitése banoláskor
HozzászólásElküldve:2012.04.27. 20:09 
Offline
Őstag
Avatar

Csatlakozott:2010.04.16. 16:50
Hozzászólások:1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
Na most igy néz ki szoval az egész kod !!
Kód:
  1. #include <amxmodx>

  2. #include <amxmisc>

  3.  

  4. /** skip autoloading since it's optional */

  5. #define AMXMODX_NOAUTOLOAD

  6. #include <cstrike>

  7.  

  8. new g_menuPosition[33]

  9. new g_menuPlayers[33][32]

  10. new g_menuPlayersNum[33]

  11. new g_menuOption[33]

  12. new g_menuSettings[33]

  13.  

  14. new g_menuSelect[33][64]

  15. new g_menuSelectNum[33]

  16.  

  17. #define MAX_CLCMDS 24

  18.  

  19. new g_clcmdName[MAX_CLCMDS][32]

  20. new g_clcmdCmd[MAX_CLCMDS][64]

  21. new g_clcmdMisc[MAX_CLCMDS][2]

  22. new g_clcmdNum

  23.  

  24. new g_coloredMenus

  25. new g_cstrike = 0

  26.  

  27. new Array:g_bantimes;

  28. new Array:g_slapsettings;

  29.  

  30. new g_CSTeamNames[3][] = {

  31.         "TERRORIST",

  32.         "CT",

  33.         "SPECTATOR"

  34. }

  35. new g_CSTeamNumbers[3][] = {

  36.         "1",

  37.         "2",

  38.         "6"

  39. }

  40. new g_CSTeamiNumbers[3] = {

  41.         1,

  42.         2,

  43.         6

  44. }

  45.  

  46. new g_ban_player[33];

  47.  

  48.  

  49. public plugin_natives()

  50. {

  51.         set_module_filter("module_filter")

  52.         set_native_filter("native_filter")

  53. }

  54.  

  55. public plugin_init()

  56. {

  57.         register_plugin("Players Menu", AMXX_VERSION_STR, "AMXX Dev Team")

  58.         register_dictionary("common.txt")

  59.         register_dictionary("admincmd.txt")

  60.         register_dictionary("plmenu.txt")

  61.  

  62.         register_clcmd("amx_kickmenu", "cmdKickMenu", ADMIN_KICK, "- displays kick menu")

  63.         register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu")

  64.         register_clcmd("amx_slapmenu", "cmdSlapMenu", ADMIN_SLAY, "- displays slap/slay menu")

  65.         register_clcmd("amx_teammenu", "cmdTeamMenu", ADMIN_LEVEL_A, "- displays team menu")

  66.         register_clcmd("amx_clcmdmenu", "cmdClcmdMenu", ADMIN_LEVEL_A, "- displays client cmds menu")

  67.         register_clcmd("amx_banreason", "CmdBanReason", ADMIN_BAN, "<reason>");

  68.  

  69.         register_menucmd(register_menuid("Ban Menu"), 1023, "actionBanMenu")

  70.         register_menucmd(register_menuid("Kick Menu"), 1023, "actionKickMenu")

  71.         register_menucmd(register_menuid("Slap/Slay Menu"), 1023, "actionSlapMenu")

  72.         register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu")

  73.         register_menucmd(register_menuid("Client Cmds Menu"), 1023, "actionClcmdMenu")

  74.        

  75.        

  76.         g_bantimes = ArrayCreate();

  77.         // Load up the old default values

  78.         ArrayPushCell(g_bantimes, 0);

  79.         ArrayPushCell(g_bantimes, 5);

  80.         ArrayPushCell(g_bantimes, 10);

  81.         ArrayPushCell(g_bantimes, 15);

  82.         ArrayPushCell(g_bantimes, 30);

  83.         ArrayPushCell(g_bantimes, 45);

  84.         ArrayPushCell(g_bantimes, 60);

  85.        

  86.        

  87.         g_slapsettings = ArrayCreate();

  88.         // Old default values

  89.         ArrayPushCell(g_slapsettings, 0); // First option is ignored - it is slay

  90.         ArrayPushCell(g_slapsettings, 0); // slap 0 damage

  91.         ArrayPushCell(g_slapsettings, 1);

  92.         ArrayPushCell(g_slapsettings, 5);

  93.        

  94.        

  95.         register_srvcmd("amx_plmenu_bantimes", "plmenu_setbantimes");

  96.         register_srvcmd("amx_plmenu_slapdmg", "plmenu_setslapdmg");

  97.  

  98.         g_coloredMenus = colored_menus()

  99.  

  100.         new clcmds_ini_file[64]

  101.         get_configsdir(clcmds_ini_file, 63)

  102.         format(clcmds_ini_file, 63, "%s/clcmds.ini", clcmds_ini_file)

  103.         load_settings(clcmds_ini_file)

  104.  

  105.         if (module_exists("cstrike"))

  106.                 g_cstrike = 1

  107. }

  108. public plmenu_setbantimes()

  109. {

  110.         new buff[32];

  111.         new args = read_argc();

  112.        

  113.         if (args <= 1)

  114.         {

  115.                 server_print("usage: amx_plmenu_bantimes <time1> [time2] [time3] ...");

  116.                 server_print("   use time of 0 for permanent.");

  117.                

  118.                 return;

  119.         }

  120.        

  121.         ArrayClear(g_bantimes);

  122.        

  123.         for (new i = 1; i < args; i++)

  124.         {

  125.                 read_argv(i, buff, charsmax(buff));

  126.                

  127.                 ArrayPushCell(g_bantimes, str_to_num(buff));

  128.                

  129.         }

  130.        

  131. }

  132. public plmenu_setslapdmg()

  133. {

  134.         new buff[32];

  135.         new args = read_argc();

  136.        

  137.         if (args <= 1)

  138.         {

  139.                 server_print("usage: amx_plmenu_slapdmg <dmg1> [dmg2] [dmg3] ...");

  140.                 server_print("   slay is automatically set for the first value.");

  141.                

  142.                 return;

  143.         }

  144.        

  145.         ArrayClear(g_slapsettings);

  146.        

  147.         ArrayPushCell(g_slapsettings, 0); // compensate for slay

  148.        

  149.         for (new i = 1; i < args; i++)

  150.         {

  151.                 read_argv(i, buff, charsmax(buff));

  152.                

  153.                 ArrayPushCell(g_slapsettings, str_to_num(buff));

  154.                

  155.         }

  156.        

  157. }

  158. public module_filter(const module[])

  159. {

  160.         if (equali(module, "cstrike"))

  161.                 return PLUGIN_HANDLED

  162.        

  163.         return PLUGIN_CONTINUE

  164. }

  165.  

  166. public native_filter(const name[], index, trap)

  167. {

  168.         if (!trap)

  169.                 return PLUGIN_HANDLED

  170.                

  171.         return PLUGIN_CONTINUE

  172. }

  173.  

  174. /* Ban menu */

  175.  

  176. public client_disconnect(id)

  177. {

  178.         g_ban_player[id] = 0;

  179. }

  180.  

  181.  

  182. public CmdBanReason(id)

  183. {

  184.     new count;

  185.     count = 5;

  186.     new player = g_ban_player[id];

  187.     if( !player ) return PLUGIN_HANDLED;

  188.     new name[32], name2[32], authid[32], authid2[32], ip[36]

  189.    

  190.     get_user_ip(player, ip, 36, 0);

  191.    

  192.     new reason[128];

  193.     read_args(reason, sizeof(reason) - 1);

  194.     remove_quotes(reason);

  195.      

  196.     get_user_name(player, name2, 31)

  197.     get_user_authid(id, authid, 31)

  198.     get_user_authid(player, authid2, 31)

  199.     get_user_name(id, name, 31)

  200.     new userid2 = get_user_userid(player)

  201.     get_cvar_string("hostname",hostname,63)

  202.     new CurrentTime[9], hostname[64] ,banurl[64]

  203.    

  204.     if(count >= 0)

  205.     {

  206.         if ( !equal("STEAM_0:", authid2, 8))

  207.         {

  208.             set_hudmessage(255, 0, 0, 0.02, 0.76, 0, 6.0, 12.0)

  209.             show_hudmessage(id, "Szerver: %s^n Admin neve: %s^n Neved: %s^n Steam: %s^nIdo:%s^n", hostname, name, name2, authid2, CurrentTime)

  210.             client_cmd(player, "wait;wait;snapshot;wait;snapshot");

  211.         }

  212.         else

  213.         {

  214.             set_hudmessage(255, 0, 0, 0.02, 0.76, 0, 6.0, 12.0)

  215.             show_hudmessage(id, "Szerver: %s^n Admin neve: %s^n Neved: %s^n IP: %s^n Ido:%s^n", hostname, name, name2, ip, CurrentTime )

  216.             client_cmd(player, "wait;wait;snapshot;wait;snapshot");

  217.         }

  218.     }

  219.     else

  220.     {

  221.         if ( !equal("STEAM_0:", authid2, 8))

  222.         {

  223.             client_cmd(id, "amx_baniptql #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);

  224.         }

  225.         else

  226.         {

  227.             client_cmd(id, "amx_bantql #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);

  228.         }

  229.         server_exec()

  230.         g_ban_player[id] = 0;

  231.         displayBanMenu(id, g_menuPosition[id])

  232.     }

  233.    

  234.     return PLUGIN_HANDLED;

  235. }

  236.  

  237. public actionBanMenu(id, key)

  238. {

  239.         switch (key)

  240.         {

  241.                 case 7:

  242.                 {

  243.                         /* BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS */

  244.                        

  245.                         ++g_menuOption[id]

  246.                         g_menuOption[id] %= ArraySize(g_bantimes);

  247.  

  248.                         g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);

  249.  

  250.                         displayBanMenu(id, g_menuPosition[id])

  251.                 }

  252.                 case 8: displayBanMenu(id, ++g_menuPosition[id])

  253.                 case 9: displayBanMenu(id, --g_menuPosition[id])

  254.                 default:

  255.                 {

  256.                         g_ban_player[id] = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  257.                        

  258.                         client_cmd(id, "messagemode amx_banreason");

  259.                        

  260.                         client_print(id, print_chat, "[AMXX] Type in the reason for banning this player.");

  261.                        

  262.                        

  263.                         /*new name[32], name2[32], authid[32], authid2[32]

  264.                

  265.                         get_user_name(player, name2, 31)

  266.                         get_user_authid(id, authid, 31)

  267.                         get_user_authid(player, authid2, 31)

  268.                         get_user_name(id, name, 31)

  269.                        

  270.                         new userid2 = get_user_userid(player)

  271.  

  272.                         log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id])

  273.  

  274.                         if (g_menuSettings[id]==0) // permanent

  275.                         {

  276.                                 new maxpl = get_maxplayers();

  277.                                 for (new i = 1; i <= maxpl; i++)

  278.                                 {

  279.                                         show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "PERM");

  280.                                 }

  281.                         }

  282.                         else

  283.                         {

  284.                                 new tempTime[32];

  285.                                 formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]);

  286.                                 new maxpl = get_maxplayers();

  287.                                 for (new i = 1; i <= maxpl; i++)

  288.                                 {

  289.                                         show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "FOR_MIN", tempTime);

  290.                                 }

  291.                         }

  292.                         // ---------- check for Steam ID added by MistaGee --------------------

  293.                         // IF AUTHID == 4294967295 OR VALVE_ID_LAN OR HLTV, BAN PER IP TO NOT BAN EVERYONE

  294.                        

  295.                         if (equal("4294967295", authid2)

  296.                                 || equal("HLTV", authid2)

  297.                                 || equal("STEAM_ID_LAN", authid2)

  298.                                 || equali("VALVE_ID_LAN", authid2))

  299.                         {

  300.                                 // END OF MODIFICATIONS BY MISTAGEE

  301.                                 server_cmd("amx_banip #%i %i ^"Banned From Menu^"", userid2, g_menuSettings[id]);

  302.                         }

  303.                         else

  304.                         {

  305.                                 server_cmd("amx_ban #%i %i ^"Banned From Menu^"", userid2, g_menuSettings[id]);

  306.                         }

  307.  

  308.                         server_exec()

  309.  

  310.                         displayBanMenu(id, g_menuPosition[id])*/

  311.                 }

  312.         }

  313.        

  314.         return PLUGIN_HANDLED

  315. }

  316.  

  317. displayBanMenu(id, pos)

  318. {

  319.         if (pos < 0)

  320.                 return

  321.  

  322.         get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  323.  

  324.         new menuBody[512]

  325.         new b = 0

  326.         new i

  327.         new name[32]

  328.         new start = pos * 7

  329.  

  330.         if (start >= g_menuPlayersNum[id])

  331.                 start = pos = g_menuPosition[id] = 0

  332.  

  333.         new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "BAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  334.         new end = start + 7

  335.         new keys = MENU_KEY_0|MENU_KEY_8

  336.  

  337.         if (end > g_menuPlayersNum[id])

  338.                 end = g_menuPlayersNum[id]

  339.  

  340.         for (new a = start; a < end; ++a)

  341.         {

  342.                 i = g_menuPlayers[id][a]

  343.                 get_user_name(i, name, 31)

  344.  

  345.                 if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))

  346.                 {

  347.                         ++b

  348.                        

  349.                         if (g_coloredMenus)

  350.                                 len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)

  351.                         else

  352.                                 len += format(menuBody[len], 511-len, "#. %s^n", name)

  353.                 } else {

  354.                         keys |= (1<<b)

  355.                                

  356.                         if (is_user_admin(i))

  357.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)

  358.                         else

  359.                                 len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)

  360.                 }

  361.         }

  362.  

  363.         if (g_menuSettings[id])

  364.         {

  365.                 new banLength[32]

  366.                 if (timeToString(g_menuSettings[id], banLength, 31))

  367.                         len += format(menuBody[len], 511-len, "^n8. Ban for %s^n", banLength)

  368.                 else

  369.                         len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_FOR_MIN", g_menuSettings[id])

  370.         }

  371.         else

  372.                 len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_PERM")

  373.  

  374.         if (end != g_menuPlayersNum[id])

  375.         {

  376.                 format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  377.                 keys |= MENU_KEY_9

  378.         }

  379.         else

  380.                 format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  381.  

  382.         show_menu(id, keys, menuBody, -1, "Ban Menu")

  383. }

  384.  

  385. timeToString(minutes, output[], len)

  386. {

  387.         new hours = minutes / 60;

  388.         minutes %= 60;

  389.        

  390.         new days = hours / 24;

  391.         hours %= 24;

  392.        

  393.         new ret

  394.        

  395.         if (days)

  396.                 ret += formatex(output[ret], len-ret, "%s%d day%s", ret ? ", " : "", days, (days == 1) ? "" : "s")

  397.        

  398.         if (hours)

  399.                 ret += formatex(output[ret], len-ret, "%s%d hour%s", ret ? ", " : "", hours, (hours == 1) ? "" : "s")

  400.        

  401.         if (minutes)

  402.                 ret += formatex(output[ret], len-ret, "%s%d minute%s", ret ? ", " : "", minutes, (minutes == 1) ? "" : "s")

  403.        

  404.         return ret

  405. }

  406.  

  407. public cmdBanMenu(id, level, cid)

  408. {

  409.         if (!cmd_access(id, level, cid, 1))

  410.                 return PLUGIN_HANDLED

  411.  

  412.         g_menuOption[id] = 0

  413.        

  414.         if (ArraySize(g_bantimes) > 0)

  415.         {

  416.                 g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);

  417.         }

  418.         else

  419.         {

  420.                 // should never happen, but failsafe

  421.                 g_menuSettings[id] = 0

  422.         }

  423.         displayBanMenu(id, g_menuPosition[id] = 0)

  424.  

  425.         return PLUGIN_HANDLED

  426. }

  427.  

  428. /* Slap/Slay */

  429.  

  430. public actionSlapMenu(id, key)

  431. {

  432.         switch (key)

  433.         {

  434.                 case 7:

  435.                 {

  436.                         ++g_menuOption[id]

  437.                        

  438.                         g_menuOption[id] %= ArraySize(g_slapsettings);

  439.                        

  440.                         g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);

  441.                        

  442.                         displaySlapMenu(id, g_menuPosition[id]);

  443.                 }

  444.                 case 8: displaySlapMenu(id, ++g_menuPosition[id])

  445.                 case 9: displaySlapMenu(id, --g_menuPosition[id])

  446.                 default:

  447.                 {

  448.                         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  449.                         new name2[32]

  450.                        

  451.                         get_user_name(player, name2, 31)

  452.  

  453.                         if (!is_user_alive(player))

  454.                         {

  455.                                 client_print(id, print_chat, "%L", id, "CANT_PERF_DEAD", name2)

  456.                                 displaySlapMenu(id, g_menuPosition[id])

  457.                                 return PLUGIN_HANDLED

  458.                         }

  459.  

  460.                         new authid[32], authid2[32], name[32]

  461.  

  462.                         get_user_authid(id, authid, 31)

  463.                         get_user_authid(player, authid2, 31)

  464.                         get_user_name(id, name, 31)

  465.  

  466.                         if (g_menuOption[id])

  467.                         {

  468.                                 log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, g_menuSettings[id], name2, get_user_userid(player), authid2)

  469.  

  470.                                 show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, g_menuSettings[id]);

  471.                         } else {

  472.                                 log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2)

  473.                                

  474.                                 show_activity_key("ADMIN_SLAY_1", "ADMIN_SLAY_2", name, name2);

  475.                         }

  476.  

  477.                         if (g_menuOption[id])

  478.                                 user_slap(player, (get_user_health(player) > g_menuSettings[id]) ? g_menuSettings[id] : 0)

  479.                         else

  480.                                 user_kill(player)

  481.  

  482.                         displaySlapMenu(id, g_menuPosition[id])

  483.                 }

  484.         }

  485.        

  486.         return PLUGIN_HANDLED

  487. }

  488.  

  489. displaySlapMenu(id, pos)

  490. {

  491.         if (pos < 0)

  492.                 return

  493.  

  494.         get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  495.  

  496.         new menuBody[512]

  497.         new b = 0

  498.         new i

  499.         new name[32], team[4]

  500.         new start = pos * 7

  501.  

  502.         if (start >= g_menuPlayersNum[id])

  503.                 start = pos = g_menuPosition[id] = 0

  504.  

  505.         new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "SLAP_SLAY_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  506.         new end = start + 7

  507.         new keys = MENU_KEY_0|MENU_KEY_8

  508.  

  509.         if (end > g_menuPlayersNum[id])

  510.                 end = g_menuPlayersNum[id]

  511.  

  512.         for (new a = start; a < end; ++a)

  513.         {

  514.                 i = g_menuPlayers[id][a]

  515.                 get_user_name(i, name, 31)

  516.                

  517.                 if (g_cstrike)

  518.                 {

  519.                         if (cs_get_user_team(i) == CS_TEAM_T)

  520.                         {

  521.                                 copy(team, 3, "TE")

  522.                         }

  523.                         else if (cs_get_user_team(i) == CS_TEAM_CT)

  524.                         {

  525.                                 copy(team, 3, "CT")

  526.                         } else {

  527.                                 get_user_team(i, team, 3)

  528.                         }

  529.                 } else {

  530.                         get_user_team(i, team, 3)

  531.                 }

  532.  

  533.                 if (!is_user_alive(i) || (access(i, ADMIN_IMMUNITY) && i != id))

  534.                 {

  535.                         ++b

  536.                

  537.                         if (g_coloredMenus)

  538.                                 len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)

  539.                         else

  540.                                 len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)              

  541.                 } else {

  542.                         keys |= (1<<b)

  543.                                

  544.                         if (is_user_admin(i))

  545.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)

  546.                         else

  547.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)

  548.                 }

  549.         }

  550.  

  551.         if (g_menuOption[id])

  552.                 len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAP_WITH_DMG", g_menuSettings[id])

  553.         else

  554.                 len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAY")

  555.  

  556.         if (end != g_menuPlayersNum[id])

  557.         {

  558.                 format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  559.                 keys |= MENU_KEY_9

  560.         }

  561.         else

  562.                 format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  563.  

  564.         show_menu(id, keys, menuBody, -1, "Slap/Slay Menu")

  565. }

  566.  

  567. public cmdSlapMenu(id, level, cid)

  568. {

  569.         if (!cmd_access(id, level, cid, 1))

  570.                 return PLUGIN_HANDLED

  571.  

  572.         g_menuOption[id] = 0

  573.         if (ArraySize(g_slapsettings) > 0)

  574.         {

  575.                 g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);

  576.         }

  577.         else

  578.         {

  579.                 // should never happen, but failsafe

  580.                 g_menuSettings[id] = 0

  581.         }

  582.  

  583.         displaySlapMenu(id, g_menuPosition[id] = 0)

  584.  

  585.         return PLUGIN_HANDLED

  586. }

  587.  

  588. /* Kick */

  589.  

  590. public actionKickMenu(id, key)

  591. {

  592.         switch (key)

  593.         {

  594.                 case 8: displayKickMenu(id, ++g_menuPosition[id])

  595.                 case 9: displayKickMenu(id, --g_menuPosition[id])

  596.                 default:

  597.                 {

  598.                         new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key]

  599.                         new authid[32], authid2[32], name[32], name2[32]

  600.                        

  601.                         get_user_authid(id, authid, 31)

  602.                         get_user_authid(player, authid2, 31)

  603.                         get_user_name(id, name, 31)

  604.                         get_user_name(player, name2, 31)

  605.                        

  606.                         new userid2 = get_user_userid(player)

  607.  

  608.                         log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, userid2, authid2)

  609.  

  610.                         show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2);

  611.  

  612.                        

  613.                         server_cmd("kick #%d", userid2)

  614.                         server_exec()

  615.  

  616.                         displayKickMenu(id, g_menuPosition[id])

  617.                 }

  618.         }

  619.  

  620.         return PLUGIN_HANDLED

  621. }

  622.  

  623. displayKickMenu(id, pos)

  624. {

  625.         if (pos < 0)

  626.                 return

  627.  

  628.         get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  629.  

  630.         new menuBody[512]

  631.         new b = 0

  632.         new i

  633.         new name[32]

  634.         new start = pos * 8

  635.  

  636.         if (start >= g_menuPlayersNum[id])

  637.                 start = pos = g_menuPosition[id] = 0

  638.  

  639.         new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "KICK_MENU", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0)))

  640.         new end = start + 8

  641.         new keys = MENU_KEY_0

  642.  

  643.         if (end > g_menuPlayersNum[id])

  644.                 end = g_menuPlayersNum[id]

  645.  

  646.         for (new a = start; a < end; ++a)

  647.         {

  648.                 i = g_menuPlayers[id][a]

  649.                 get_user_name(i, name, 31)

  650.  

  651.                 if (access(i, ADMIN_IMMUNITY) && i != id)

  652.                 {

  653.                         ++b

  654.                

  655.                         if (g_coloredMenus)

  656.                                 len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)

  657.                         else

  658.                                 len += format(menuBody[len], 511-len, "#. %s^n", name)

  659.                 } else {

  660.                         keys |= (1<<b)

  661.                                

  662.                         if (is_user_admin(i))

  663.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)

  664.                         else

  665.                                 len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)

  666.                 }

  667.         }

  668.  

  669.         if (end != g_menuPlayersNum[id])

  670.         {

  671.                 format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  672.                 keys |= MENU_KEY_9

  673.         }

  674.         else

  675.                 format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  676.  

  677.         show_menu(id, keys, menuBody, -1, "Kick Menu")

  678. }

  679.  

  680. public cmdKickMenu(id, level, cid)

  681. {

  682.         if (cmd_access(id, level, cid, 1))

  683.                 displayKickMenu(id, g_menuPosition[id] = 0)

  684.  

  685.         return PLUGIN_HANDLED

  686. }

  687.  

  688. /* Team menu */

  689.  

  690. public actionTeamMenu(id, key)

  691. {

  692.         switch (key)

  693.         {

  694.                 case 7:

  695.                 {

  696.                         g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2);

  697.                         displayTeamMenu(id, g_menuPosition[id])

  698.                 }

  699.                 case 8: displayTeamMenu(id, ++g_menuPosition[id])

  700.                 case 9: displayTeamMenu(id, --g_menuPosition[id])

  701.                 default:

  702.                 {

  703.                         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  704.                         new authid[32], authid2[32], name[32], name2[32]

  705.  

  706.                         get_user_name(player, name2, 31)

  707.                         get_user_authid(id, authid, 31)

  708.                         get_user_authid(player, authid2, 31)

  709.                         get_user_name(id, name, 31)

  710.                                

  711.                         log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT")

  712.  

  713.                         show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]);

  714.  

  715.                         if (g_cstrike)

  716.                         {

  717.                                 if (is_user_alive(player))

  718.                                 {

  719.                                         new deaths = cs_get_user_deaths(player)

  720.                                         user_kill(player, 1)

  721.                                         cs_set_user_deaths(player, deaths)

  722.                                 }

  723.                                 // This modulo math just aligns the option to the CsTeams-corresponding number

  724.                                 cs_set_user_team(player, (g_menuOption[id] % 3) + 1)

  725.                                 cs_reset_user_model(player)

  726.                         } else {

  727.                                 new limit_setting = get_cvar_num("mp_limitteams")

  728.                                

  729.                                 set_cvar_num("mp_limitteams", 0)

  730.                                 engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2])

  731.                                 engclient_cmd(player, "joinclass", "1")

  732.                                 set_cvar_num("mp_limitteams", limit_setting)

  733.                         }

  734.  

  735.                         displayTeamMenu(id, g_menuPosition[id])

  736.                 }

  737.         }

  738.        

  739.         return PLUGIN_HANDLED

  740. }

  741.  

  742. displayTeamMenu(id, pos)

  743. {

  744.         if (pos < 0)

  745.                 return

  746.  

  747.         get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  748.  

  749.         new menuBody[512]

  750.         new b = 0

  751.         new i, iteam

  752.         new name[32], team[4]

  753.         new start = pos * 7

  754.  

  755.         if (start >= g_menuPlayersNum[id])

  756.                 start = pos = g_menuPosition[id] = 0

  757.  

  758.         new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  759.         new end = start + 7

  760.         new keys = MENU_KEY_0|MENU_KEY_8

  761.  

  762.         if (end > g_menuPlayersNum[id])

  763.                 end = g_menuPlayersNum[id]

  764.  

  765.         for (new a = start; a < end; ++a)

  766.         {

  767.                 i = g_menuPlayers[id][a]

  768.                 get_user_name(i, name, 31)

  769.                

  770.                 if (g_cstrike)

  771.                 {

  772.                         iteam = _:cs_get_user_team(i)

  773.                        

  774.                         if (iteam == 1)

  775.                         {

  776.                                 copy(team, 3, "TE")

  777.                         }

  778.                         else if (iteam == 2)

  779.                         {

  780.                                 copy(team, 3, "CT")

  781.                         }

  782.                         else if (iteam == 3)

  783.                         {

  784.                                 copy(team, 3, "SPE");

  785.                                 iteam = 6;

  786.                         } else {

  787.                                 iteam = get_user_team(i, team, 3)

  788.                         }

  789.                 } else {

  790.                         iteam = get_user_team(i, team, 3)

  791.                 }

  792.  

  793.                 if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || (access(i, ADMIN_IMMUNITY) && i != id))

  794.                 {

  795.                         ++b

  796.                        

  797.                         if (g_coloredMenus)

  798.                                 len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)

  799.                         else

  800.                                 len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)              

  801.                 } else {

  802.                         keys |= (1<<b)

  803.                                

  804.                         if (is_user_admin(i))

  805.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)

  806.                         else

  807.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)

  808.                 }

  809.         }

  810.  

  811.         len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)])

  812.  

  813.         if (end != g_menuPlayersNum[id])

  814.         {

  815.                 format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  816.                 keys |= MENU_KEY_9

  817.         }

  818.         else

  819.                 format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  820.  

  821.         show_menu(id, keys, menuBody, -1, "Team Menu")

  822. }

  823.  

  824. public cmdTeamMenu(id, level, cid)

  825. {

  826.         if (!cmd_access(id, level, cid, 1))

  827.                 return PLUGIN_HANDLED

  828.  

  829.         g_menuOption[id] = 0

  830.  

  831.         displayTeamMenu(id, g_menuPosition[id] = 0)

  832.  

  833.         return PLUGIN_HANDLED

  834. }

  835.  

  836. /* Client cmds menu */

  837.  

  838. public actionClcmdMenu(id, key)

  839. {

  840.         switch (key)

  841.         {

  842.                 case 7:

  843.                 {

  844.                         ++g_menuOption[id]

  845.                         g_menuOption[id] %= g_menuSelectNum[id]

  846.                         displayClcmdMenu(id, g_menuPosition[id])

  847.                 }

  848.                 case 8: displayClcmdMenu(id, ++g_menuPosition[id])

  849.                 case 9: displayClcmdMenu(id, --g_menuPosition[id])

  850.                 default:

  851.                 {

  852.                         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  853.                         new flags = g_clcmdMisc[g_menuSelect[id][g_menuOption[id]]][1]

  854.                        

  855.                         if (is_user_connected(player))

  856.                         {

  857.                                 new command[512], authid[32], name[32], userid[32]

  858.                                

  859.                                 copy(command, charsmax(command), g_clcmdCmd[g_menuSelect[id][g_menuOption[id]]])

  860.                                 get_user_authid(player, authid, 31)

  861.                                 get_user_name(player, name, 31)

  862.                                 num_to_str(get_user_userid(player), userid, 31)

  863.                                

  864.                                 replace(command, charsmax(command), "%userid%", userid)

  865.                                 replace(command, charsmax(command), "%authid%", authid)

  866.                                 replace(command, charsmax(command), "%name%", name)

  867.                                

  868.                                 if (flags & 1)

  869.                                 {

  870.                                         server_cmd("%s", command)

  871.                                         server_exec()

  872.                                 } else if (flags & 2)

  873.                                         client_cmd(id, "%s", command)

  874.                                 else if (flags & 4)

  875.                                         client_cmd(player, "%s", command)

  876.                         }

  877.                        

  878.                         if (flags & 8)

  879.                                 displayClcmdMenu(id, g_menuPosition[id])

  880.                 }

  881.         }

  882.        

  883.         return PLUGIN_HANDLED

  884. }

  885.  

  886. displayClcmdMenu(id, pos)

  887. {

  888.         if (pos < 0)

  889.                 return

  890.  

  891.         get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  892.  

  893.         new menuBody[512]

  894.         new b = 0

  895.         new i

  896.         new name[32]

  897.         new start = pos * 7

  898.  

  899.         if (start >= g_menuPlayersNum[id])

  900.                 start = pos = g_menuPosition[id] = 0

  901.  

  902.         new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CL_CMD_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  903.         new end = start + 7

  904.         new keys = MENU_KEY_0|MENU_KEY_8

  905.  

  906.         if (end > g_menuPlayersNum[id])

  907.                 end = g_menuPlayersNum[id]

  908.  

  909.         for (new a = start; a < end; ++a)

  910.         {

  911.                 i = g_menuPlayers[id][a]

  912.                 get_user_name(i, name, 31)

  913.  

  914.                 if (!g_menuSelectNum[id] || (access(i, ADMIN_IMMUNITY) && i != id))

  915.                 {

  916.                         ++b

  917.                        

  918.                         if (g_coloredMenus)

  919.                                 len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)

  920.                         else

  921.                                 len += format(menuBody[len], 511-len, "#. %s^n", name)         

  922.                 } else {

  923.                         keys |= (1<<b)

  924.                                

  925.                         if (is_user_admin(i))

  926.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)

  927.                         else

  928.                                 len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)

  929.                 }

  930.         }

  931.  

  932.         if (g_menuSelectNum[id])

  933.                 len += format(menuBody[len], 511-len, "^n8. %s^n", g_clcmdName[g_menuSelect[id][g_menuOption[id]]])

  934.         else

  935.                 len += format(menuBody[len], 511-len, "^n8. %L^n", id, "NO_CMDS")

  936.  

  937.         if (end != g_menuPlayersNum[id])

  938.         {

  939.                 format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  940.                 keys |= MENU_KEY_9

  941.         }

  942.         else

  943.                 format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  944.  

  945.         show_menu(id, keys, menuBody, -1, "Client Cmds Menu")

  946. }

  947.  

  948. public cmdClcmdMenu(id, level, cid)

  949. {

  950.         if (!cmd_access(id, level, cid, 1))

  951.                 return PLUGIN_HANDLED

  952.  

  953.         g_menuSelectNum[id] = 0

  954.  

  955.         for (new a = 0; a < g_clcmdNum; ++a)

  956.                 if (access(id, g_clcmdMisc[a][0]))

  957.                         g_menuSelect[id][g_menuSelectNum[id]++] = a

  958.  

  959.         g_menuOption[id] = 0

  960.  

  961.         displayClcmdMenu(id, g_menuPosition[id] = 0)

  962.  

  963.         return PLUGIN_HANDLED

  964. }

  965.  

  966. load_settings(szFilename[])

  967. {

  968.         if (!file_exists(szFilename))

  969.                 return 0

  970.  

  971.         new text[256], szFlags[32], szAccess[32]

  972.         new a, pos = 0

  973.  

  974.         while (g_clcmdNum < MAX_CLCMDS && read_file(szFilename, pos++, text, 255, a))

  975.         {

  976.                 if (text[0] == ';') continue

  977.  

  978.                 if (parse(text, g_clcmdName[g_clcmdNum], 31, g_clcmdCmd[g_clcmdNum], 63, szFlags, 31, szAccess, 31) > 3)

  979.                 {

  980.                         while (replace(g_clcmdCmd[g_clcmdNum], 63, "\'", "^""))

  981.                         {

  982.                                 // do nothing

  983.                         }

  984.  

  985.                         g_clcmdMisc[g_clcmdNum][1] = read_flags(szFlags)

  986.                         g_clcmdMisc[g_clcmdNum][0] = read_flags(szAccess)

  987.                         g_clcmdNum++

  988.                 }

  989.         }

  990.  

  991.         return 1

  992. }

  993.  


De nem értem silent, hogy miért nem tetted egyböl a ban részbe minek oda else-megint??
Igy nem jobb lenne ??
Kód:
  1. if ( !equal("STEAM_0:", authid2, 8))

  2.         {

  3.                 set_hudmessage(255, 0, 0, 0.02, 0.76, 0, 6.0, 12.0)

  4.                   show_hudmessage(id, "Szerver: %s^n Admin neve: %s^n Neved: %s^n Steam: %s^nIdo:%s^n", hostname, name, name2, authid2, CurrentTime)

  5.                   client_cmd(player, "wait;wait;snapshot;wait;snapshot");

  6.                 client_cmd(id, "amx_baniptql #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);

  7.         }

  8.         else

  9.         {

  10.                 set_hudmessage(255, 0, 0, 0.02, 0.76, 0, 6.0, 12.0)

  11.                   show_hudmessage(id, "Szerver: %s^n Admin neve: %s^n Neved: %s^n Steam: %s^nIdo:%s^n", hostname, name, name2, authid2, CurrentTime)

  12.                   client_cmd(player, "wait;wait;snapshot;wait;snapshot");

  13.                 client_cmd(id, "amx_bantql #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);



Kód:
asdasd.sma(201) : error 017: undefined symbol "hostname"
asdasd.sma(201) : warning 215: expression has no effect
asdasd.sma(201) : error 001: expected token: ";", but found ")"
asdasd.sma(201) : error 029: invalid expression, assumed zero
asdasd.sma(201) : fatal error 107: too many error messages on one line

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: screenshot készitése banoláskor
HozzászólásElküldve:2012.04.28. 07:01 
Offline
Signore Senior
Avatar

Csatlakozott:2011.09.09. 17:39
Hozzászólások:4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
Nem.. Na am az a hiba, hogy elôbb használom a hostname-t minthogy létrehoztam volna. Szóval a new hostname[asd]-ot hozd elôrébb xd


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: screenshot készitése banoláskor
HozzászólásElküldve:2012.04.28. 07:42 
Offline
Őstag
Avatar

Csatlakozott:2010.04.16. 16:50
Hozzászólások:1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
Silent én ezt pakolgattam mindenhova de ez sehogyse akar jó lenni !!

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: screenshot készitése banoláskor
HozzászólásElküldve:2012.04.28. 07:58 
Offline
Signore Senior
Avatar

Csatlakozott:2011.09.09. 17:39
Hozzászólások:4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
Na mindegy majd géprôl megcsinálom.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: screenshot készitése banoláskor
HozzászólásElküldve:2012.04.28. 08:16 
Offline
Őstag
Avatar

Csatlakozott:2010.04.16. 16:50
Hozzászólások:1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
Rendben Silent !!

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: screenshot készitése banoláskor
HozzászólásElküldve:2012.04.28. 09:35 
Offline
Signore Senior
Avatar

Csatlakozott:2011.09.09. 17:39
Hozzászólások:4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
Kód:
  1.  

  2. #include <amxmodx>

  3.  

  4. #include <amxmisc>

  5.  

  6.  

  7.  

  8. /** skip autoloading since it's optional */

  9.  

  10. #define AMXMODX_NOAUTOLOAD

  11.  

  12. #include <cstrike>

  13.  

  14.  

  15.  

  16. new g_menuPosition[33]

  17.  

  18. new g_menuPlayers[33][32]

  19.  

  20. new g_menuPlayersNum[33]

  21.  

  22. new g_menuOption[33]

  23.  

  24. new g_menuSettings[33]

  25.  

  26.  

  27.  

  28. new g_menuSelect[33][64]

  29.  

  30. new g_menuSelectNum[33]

  31.  

  32.  

  33.  

  34. #define MAX_CLCMDS 24

  35.  

  36.  

  37.  

  38. new g_clcmdName[MAX_CLCMDS][32]

  39.  

  40. new g_clcmdCmd[MAX_CLCMDS][64]

  41.  

  42. new g_clcmdMisc[MAX_CLCMDS][2]

  43.  

  44. new g_clcmdNum

  45.  

  46.  

  47.  

  48. new g_coloredMenus

  49.  

  50. new g_cstrike = 0

  51.  

  52.  

  53.  

  54. new Array:g_bantimes;

  55.  

  56. new Array:g_slapsettings;

  57.  

  58.  

  59.  

  60. new g_CSTeamNames[3][] = {

  61.  

  62.         "TERRORIST",

  63.  

  64.         "CT",

  65.  

  66.         "SPECTATOR"

  67.  

  68. }

  69.  

  70. new g_CSTeamNumbers[3][] = {

  71.  

  72.         "1",

  73.  

  74.         "2",

  75.  

  76.         "6"

  77.  

  78. }

  79.  

  80. new g_CSTeamiNumbers[3] = {

  81.  

  82.         1,

  83.  

  84.         2,

  85.  

  86.         6

  87.  

  88. }

  89.  

  90.  

  91.  

  92. new g_ban_player[33];

  93.  

  94.  

  95.  

  96.  

  97.  

  98. public plugin_natives()

  99.  

  100. {

  101.  

  102.         set_module_filter("module_filter")

  103.  

  104.         set_native_filter("native_filter")

  105.  

  106. }

  107.  

  108.  

  109.  

  110. public plugin_init()

  111.  

  112. {

  113.  

  114.         register_plugin("Players Menu", AMXX_VERSION_STR, "AMXX Dev Team")

  115.  

  116.         register_dictionary("common.txt")

  117.  

  118.         register_dictionary("admincmd.txt")

  119.  

  120.         register_dictionary("plmenu.txt")

  121.  

  122.  

  123.  

  124.         register_clcmd("amx_kickmenu", "cmdKickMenu", ADMIN_KICK, "- displays kick menu")

  125.  

  126.         register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu")

  127.  

  128.         register_clcmd("amx_slapmenu", "cmdSlapMenu", ADMIN_SLAY, "- displays slap/slay menu")

  129.  

  130.         register_clcmd("amx_teammenu", "cmdTeamMenu", ADMIN_LEVEL_A, "- displays team menu")

  131.  

  132.         register_clcmd("amx_clcmdmenu", "cmdClcmdMenu", ADMIN_LEVEL_A, "- displays client cmds menu")

  133.  

  134.         register_clcmd("amx_banreason", "CmdBanReason", ADMIN_BAN, "<reason>");

  135.  

  136.  

  137.  

  138.         register_menucmd(register_menuid("Ban Menu"), 1023, "actionBanMenu")

  139.  

  140.         register_menucmd(register_menuid("Kick Menu"), 1023, "actionKickMenu")

  141.  

  142.         register_menucmd(register_menuid("Slap/Slay Menu"), 1023, "actionSlapMenu")

  143.  

  144.         register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu")

  145.  

  146.         register_menucmd(register_menuid("Client Cmds Menu"), 1023, "actionClcmdMenu")

  147.  

  148.        

  149.  

  150.        

  151.  

  152.         g_bantimes = ArrayCreate();

  153.  

  154.         // Load up the old default values

  155.  

  156.         ArrayPushCell(g_bantimes, 0);

  157.  

  158.         ArrayPushCell(g_bantimes, 5);

  159.  

  160.         ArrayPushCell(g_bantimes, 10);

  161.  

  162.         ArrayPushCell(g_bantimes, 15);

  163.  

  164.         ArrayPushCell(g_bantimes, 30);

  165.  

  166.         ArrayPushCell(g_bantimes, 45);

  167.  

  168.         ArrayPushCell(g_bantimes, 60);

  169.  

  170.        

  171.  

  172.        

  173.  

  174.         g_slapsettings = ArrayCreate();

  175.  

  176.         // Old default values

  177.  

  178.         ArrayPushCell(g_slapsettings, 0); // First option is ignored - it is slay

  179.  

  180.         ArrayPushCell(g_slapsettings, 0); // slap 0 damage

  181.  

  182.         ArrayPushCell(g_slapsettings, 1);

  183.  

  184.         ArrayPushCell(g_slapsettings, 5);

  185.  

  186.        

  187.  

  188.        

  189.  

  190.         register_srvcmd("amx_plmenu_bantimes", "plmenu_setbantimes");

  191.  

  192.         register_srvcmd("amx_plmenu_slapdmg", "plmenu_setslapdmg");

  193.  

  194.  

  195.  

  196.         g_coloredMenus = colored_menus()

  197.  

  198.  

  199.  

  200.         new clcmds_ini_file[64]

  201.  

  202.         get_configsdir(clcmds_ini_file, 63)

  203.  

  204.         format(clcmds_ini_file, 63, "%s/clcmds.ini", clcmds_ini_file)

  205.  

  206.         load_settings(clcmds_ini_file)

  207.  

  208.  

  209.  

  210.         if (module_exists("cstrike"))

  211.  

  212.                 g_cstrike = 1

  213.  

  214. }

  215.  

  216. public plmenu_setbantimes()

  217.  

  218. {

  219.  

  220.         new buff[32];

  221.  

  222.         new args = read_argc();

  223.  

  224.        

  225.  

  226.         if (args <= 1)

  227.  

  228.         {

  229.  

  230.                 server_print("usage: amx_plmenu_bantimes <time1> [time2] [time3] ...");

  231.  

  232.                 server_print("   use time of 0 for permanent.");

  233.  

  234.                

  235.  

  236.                 return;

  237.  

  238.         }

  239.  

  240.        

  241.  

  242.         ArrayClear(g_bantimes);

  243.  

  244.        

  245.  

  246.         for (new i = 1; i < args; i++)

  247.  

  248.         {

  249.  

  250.                 read_argv(i, buff, charsmax(buff));

  251.  

  252.                

  253.  

  254.                 ArrayPushCell(g_bantimes, str_to_num(buff));

  255.  

  256.                

  257.  

  258.         }

  259.  

  260.        

  261.  

  262. }

  263.  

  264. public plmenu_setslapdmg()

  265.  

  266. {

  267.  

  268.         new buff[32];

  269.  

  270.         new args = read_argc();

  271.  

  272.        

  273.  

  274.         if (args <= 1)

  275.  

  276.         {

  277.  

  278.                 server_print("usage: amx_plmenu_slapdmg <dmg1> [dmg2] [dmg3] ...");

  279.  

  280.                 server_print("   slay is automatically set for the first value.");

  281.  

  282.                

  283.  

  284.                 return;

  285.  

  286.         }

  287.  

  288.        

  289.  

  290.         ArrayClear(g_slapsettings);

  291.  

  292.        

  293.  

  294.         ArrayPushCell(g_slapsettings, 0); // compensate for slay

  295.  

  296.        

  297.  

  298.         for (new i = 1; i < args; i++)

  299.  

  300.         {

  301.  

  302.                 read_argv(i, buff, charsmax(buff));

  303.  

  304.                

  305.  

  306.                 ArrayPushCell(g_slapsettings, str_to_num(buff));

  307.  

  308.                

  309.  

  310.         }

  311.  

  312.        

  313.  

  314. }

  315.  

  316. public module_filter(const module[])

  317.  

  318. {

  319.  

  320.         if (equali(module, "cstrike"))

  321.  

  322.                 return PLUGIN_HANDLED

  323.  

  324.        

  325.  

  326.         return PLUGIN_CONTINUE

  327.  

  328. }

  329.  

  330.  

  331.  

  332. public native_filter(const name[], index, trap)

  333.  

  334. {

  335.  

  336.         if (!trap)

  337.  

  338.                 return PLUGIN_HANDLED

  339.  

  340.                

  341.  

  342.         return PLUGIN_CONTINUE

  343.  

  344. }

  345.  

  346.  

  347.  

  348. /* Ban menu */

  349.  

  350.  

  351.  

  352. public client_disconnect(id)

  353.  

  354. {

  355.  

  356.         g_ban_player[id] = 0;

  357.  

  358. }

  359.  

  360.  

  361.  

  362.  

  363.  

  364. public CmdBanReason(id)

  365.  

  366. {

  367.  

  368.     new count;

  369.  

  370.     count = 5;

  371.  

  372.     new player = g_ban_player[id];

  373.  

  374.     if( !player ) return PLUGIN_HANDLED;

  375.  

  376.     new name[32], name2[32], authid[32], authid2[32], ip[36]

  377.  

  378.    

  379.  

  380.     get_user_ip(player, ip, 36, 0);

  381.  

  382.    

  383.  

  384.     new reason[128];

  385.  

  386.     read_args(reason, sizeof(reason) - 1);

  387.  

  388.     remove_quotes(reason);

  389.  

  390.      

  391.     new CurrentTime[9], hostname[64] ,banurl[64]

  392.  

  393.     get_user_name(player, name2, 31)

  394.  

  395.     get_user_authid(id, authid, 31)

  396.  

  397.     get_user_authid(player, authid2, 31)

  398.  

  399.     get_user_name(id, name, 31)

  400.  

  401.     new userid2 = get_user_userid(player)

  402.  

  403.     get_cvar_string("hostname",hostname,63)

  404.  

  405.  

  406.    

  407.  

  408.     if(count >= 0)

  409.  

  410.     {

  411.  

  412.         if ( !equal("STEAM_0:", authid2, 8))

  413.  

  414.         {

  415.  

  416.             set_hudmessage(255, 0, 0, 0.02, 0.76, 0, 6.0, 12.0)

  417.  

  418.             show_hudmessage(id, "Szerver: %s^n Admin neve: %s^n Neved: %s^n Steam: %s^nIdo:%s^n", hostname, name, name2, authid2, CurrentTime)

  419.  

  420.             client_cmd(player, "wait;wait;snapshot;wait;snapshot");

  421.  

  422.         }

  423.  

  424.         else

  425.  

  426.         {

  427.  

  428.             set_hudmessage(255, 0, 0, 0.02, 0.76, 0, 6.0, 12.0)

  429.  

  430.             show_hudmessage(id, "Szerver: %s^n Admin neve: %s^n Neved: %s^n IP: %s^n Ido:%s^n", hostname, name, name2, ip, CurrentTime )

  431.  

  432.             client_cmd(player, "wait;wait;snapshot;wait;snapshot");

  433.  

  434.         }

  435.  

  436.     }

  437.  

  438.     else

  439.  

  440.     {

  441.  

  442.         if ( !equal("STEAM_0:", authid2, 8))

  443.  

  444.         {

  445.  

  446.             client_cmd(id, "amx_baniptql #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);

  447.  

  448.         }

  449.  

  450.         else

  451.  

  452.         {

  453.  

  454.             client_cmd(id, "amx_bantql #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);

  455.  

  456.         }

  457.  

  458.         server_exec()

  459.  

  460.         g_ban_player[id] = 0;

  461.  

  462.         displayBanMenu(id, g_menuPosition[id])

  463.  

  464.     }

  465.  

  466.    

  467.  

  468.     return PLUGIN_HANDLED;

  469.  

  470. }

  471.  

  472.  

  473.  

  474. public actionBanMenu(id, key)

  475.  

  476. {

  477.  

  478.         switch (key)

  479.  

  480.         {

  481.  

  482.                 case 7:

  483.  

  484.                 {

  485.  

  486.                         /* BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS */

  487.  

  488.                        

  489.  

  490.                         ++g_menuOption[id]

  491.  

  492.                         g_menuOption[id] %= ArraySize(g_bantimes);

  493.  

  494.  

  495.  

  496.                         g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);

  497.  

  498.  

  499.  

  500.                         displayBanMenu(id, g_menuPosition[id])

  501.  

  502.                 }

  503.  

  504.                 case 8: displayBanMenu(id, ++g_menuPosition[id])

  505.  

  506.                 case 9: displayBanMenu(id, --g_menuPosition[id])

  507.  

  508.                 default:

  509.  

  510.                 {

  511.  

  512.                         g_ban_player[id] = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  513.  

  514.                        

  515.  

  516.                         client_cmd(id, "messagemode amx_banreason");

  517.  

  518.                        

  519.  

  520.                         client_print(id, print_chat, "[AMXX] Type in the reason for banning this player.");

  521.  

  522.                        

  523.  

  524.                        

  525.  

  526.                         /*new name[32], name2[32], authid[32], authid2[32]

  527.  

  528.                

  529.  

  530.                         get_user_name(player, name2, 31)

  531.  

  532.                         get_user_authid(id, authid, 31)

  533.  

  534.                         get_user_authid(player, authid2, 31)

  535.  

  536.                         get_user_name(id, name, 31)

  537.  

  538.                        

  539.  

  540.                         new userid2 = get_user_userid(player)

  541.  

  542.  

  543.  

  544.                         log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id])

  545.  

  546.  

  547.  

  548.                         if (g_menuSettings[id]==0) // permanent

  549.  

  550.                         {

  551.  

  552.                                 new maxpl = get_maxplayers();

  553.  

  554.                                 for (new i = 1; i <= maxpl; i++)

  555.  

  556.                                 {

  557.  

  558.                                         show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "PERM");

  559.  

  560.                                 }

  561.  

  562.                         }

  563.  

  564.                         else

  565.  

  566.                         {

  567.  

  568.                                 new tempTime[32];

  569.  

  570.                                 formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]);

  571.  

  572.                                 new maxpl = get_maxplayers();

  573.  

  574.                                 for (new i = 1; i <= maxpl; i++)

  575.  

  576.                                 {

  577.  

  578.                                         show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "FOR_MIN", tempTime);

  579.  

  580.                                 }

  581.  

  582.                         }

  583.  

  584.                         // ---------- check for Steam ID added by MistaGee --------------------

  585.  

  586.                         // IF AUTHID == 4294967295 OR VALVE_ID_LAN OR HLTV, BAN PER IP TO NOT BAN EVERYONE

  587.  

  588.                        

  589.  

  590.                         if (equal("4294967295", authid2)

  591.  

  592.                                 || equal("HLTV", authid2)

  593.  

  594.                                 || equal("STEAM_ID_LAN", authid2)

  595.  

  596.                                 || equali("VALVE_ID_LAN", authid2))

  597.  

  598.                         {

  599.  

  600.                                 // END OF MODIFICATIONS BY MISTAGEE

  601.  

  602.                                 server_cmd("amx_banip #%i %i ^"Banned From Menu^"", userid2, g_menuSettings[id]);

  603.  

  604.                         }

  605.  

  606.                         else

  607.  

  608.                         {

  609.  

  610.                                 server_cmd("amx_ban #%i %i ^"Banned From Menu^"", userid2, g_menuSettings[id]);

  611.  

  612.                         }

  613.  

  614.  

  615.  

  616.                         server_exec()

  617.  

  618.  

  619.  

  620.                         displayBanMenu(id, g_menuPosition[id])*/

  621.  

  622.                 }

  623.  

  624.         }

  625.  

  626.        

  627.  

  628.         return PLUGIN_HANDLED

  629.  

  630. }

  631.  

  632.  

  633.  

  634. displayBanMenu(id, pos)

  635.  

  636. {

  637.  

  638.         if (pos < 0)

  639.  

  640.                 return

  641.  

  642.  

  643.  

  644.         get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  645.  

  646.  

  647.  

  648.         new menuBody[512]

  649.  

  650.         new b = 0

  651.  

  652.         new i

  653.  

  654.         new name[32]

  655.  

  656.         new start = pos * 7

  657.  

  658.  

  659.  

  660.         if (start >= g_menuPlayersNum[id])

  661.  

  662.                 start = pos = g_menuPosition[id] = 0

  663.  

  664.  

  665.  

  666.         new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "BAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  667.  

  668.         new end = start + 7

  669.  

  670.         new keys = MENU_KEY_0|MENU_KEY_8

  671.  

  672.  

  673.  

  674.         if (end > g_menuPlayersNum[id])

  675.  

  676.                 end = g_menuPlayersNum[id]

  677.  

  678.  

  679.  

  680.         for (new a = start; a < end; ++a)

  681.  

  682.         {

  683.  

  684.                 i = g_menuPlayers[id][a]

  685.  

  686.                 get_user_name(i, name, 31)

  687.  

  688.  

  689.  

  690.                 if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))

  691.  

  692.                 {

  693.  

  694.                         ++b

  695.  

  696.                        

  697.  

  698.                         if (g_coloredMenus)

  699.  

  700.                                 len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)

  701.  

  702.                         else

  703.  

  704.                                 len += format(menuBody[len], 511-len, "#. %s^n", name)

  705.  

  706.                 } else {

  707.  

  708.                         keys |= (1<<b)

  709.  

  710.                                

  711.  

  712.                         if (is_user_admin(i))

  713.  

  714.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)

  715.  

  716.                         else

  717.  

  718.                                 len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)

  719.  

  720.                 }

  721.  

  722.         }

  723.  

  724.  

  725.  

  726.         if (g_menuSettings[id])

  727.  

  728.         {

  729.  

  730.                 new banLength[32]

  731.  

  732.                 if (timeToString(g_menuSettings[id], banLength, 31))

  733.  

  734.                         len += format(menuBody[len], 511-len, "^n8. Ban for %s^n", banLength)

  735.  

  736.                 else

  737.  

  738.                         len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_FOR_MIN", g_menuSettings[id])

  739.  

  740.         }

  741.  

  742.         else

  743.  

  744.                 len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_PERM")

  745.  

  746.  

  747.  

  748.         if (end != g_menuPlayersNum[id])

  749.  

  750.         {

  751.  

  752.                 format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  753.  

  754.                 keys |= MENU_KEY_9

  755.  

  756.         }

  757.  

  758.         else

  759.  

  760.                 format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  761.  

  762.  

  763.  

  764.         show_menu(id, keys, menuBody, -1, "Ban Menu")

  765.  

  766. }

  767.  

  768.  

  769.  

  770. timeToString(minutes, output[], len)

  771.  

  772. {

  773.  

  774.         new hours = minutes / 60;

  775.  

  776.         minutes %= 60;

  777.  

  778.        

  779.  

  780.         new days = hours / 24;

  781.  

  782.         hours %= 24;

  783.  

  784.        

  785.  

  786.         new ret

  787.  

  788.        

  789.  

  790.         if (days)

  791.  

  792.                 ret += formatex(output[ret], len-ret, "%s%d day%s", ret ? ", " : "", days, (days == 1) ? "" : "s")

  793.  

  794.        

  795.  

  796.         if (hours)

  797.  

  798.                 ret += formatex(output[ret], len-ret, "%s%d hour%s", ret ? ", " : "", hours, (hours == 1) ? "" : "s")

  799.  

  800.        

  801.  

  802.         if (minutes)

  803.  

  804.                 ret += formatex(output[ret], len-ret, "%s%d minute%s", ret ? ", " : "", minutes, (minutes == 1) ? "" : "s")

  805.  

  806.        

  807.  

  808.         return ret

  809.  

  810. }

  811.  

  812.  

  813.  

  814. public cmdBanMenu(id, level, cid)

  815.  

  816. {

  817.  

  818.         if (!cmd_access(id, level, cid, 1))

  819.  

  820.                 return PLUGIN_HANDLED

  821.  

  822.  

  823.  

  824.         g_menuOption[id] = 0

  825.  

  826.        

  827.  

  828.         if (ArraySize(g_bantimes) > 0)

  829.  

  830.         {

  831.  

  832.                 g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);

  833.  

  834.         }

  835.  

  836.         else

  837.  

  838.         {

  839.  

  840.                 // should never happen, but failsafe

  841.  

  842.                 g_menuSettings[id] = 0

  843.  

  844.         }

  845.  

  846.         displayBanMenu(id, g_menuPosition[id] = 0)

  847.  

  848.  

  849.  

  850.         return PLUGIN_HANDLED

  851.  

  852. }

  853.  

  854.  

  855.  

  856. /* Slap/Slay */

  857.  

  858.  

  859.  

  860. public actionSlapMenu(id, key)

  861.  

  862. {

  863.  

  864.         switch (key)

  865.  

  866.         {

  867.  

  868.                 case 7:

  869.  

  870.                 {

  871.  

  872.                         ++g_menuOption[id]

  873.  

  874.                        

  875.  

  876.                         g_menuOption[id] %= ArraySize(g_slapsettings);

  877.  

  878.                        

  879.  

  880.                         g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);

  881.  

  882.                        

  883.  

  884.                         displaySlapMenu(id, g_menuPosition[id]);

  885.  

  886.                 }

  887.  

  888.                 case 8: displaySlapMenu(id, ++g_menuPosition[id])

  889.  

  890.                 case 9: displaySlapMenu(id, --g_menuPosition[id])

  891.  

  892.                 default:

  893.  

  894.                 {

  895.  

  896.                         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  897.  

  898.                         new name2[32]

  899.  

  900.                        

  901.  

  902.                         get_user_name(player, name2, 31)

  903.  

  904.  

  905.  

  906.                         if (!is_user_alive(player))

  907.  

  908.                         {

  909.  

  910.                                 client_print(id, print_chat, "%L", id, "CANT_PERF_DEAD", name2)

  911.  

  912.                                 displaySlapMenu(id, g_menuPosition[id])

  913.  

  914.                                 return PLUGIN_HANDLED

  915.  

  916.                         }

  917.  

  918.  

  919.  

  920.                         new authid[32], authid2[32], name[32]

  921.  

  922.  

  923.  

  924.                         get_user_authid(id, authid, 31)

  925.  

  926.                         get_user_authid(player, authid2, 31)

  927.  

  928.                         get_user_name(id, name, 31)

  929.  

  930.  

  931.  

  932.                         if (g_menuOption[id])

  933.  

  934.                         {

  935.  

  936.                                 log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, g_menuSettings[id], name2, get_user_userid(player), authid2)

  937.  

  938.  

  939.  

  940.                                 show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, g_menuSettings[id]);

  941.  

  942.                         } else {

  943.  

  944.                                 log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2)

  945.  

  946.                                

  947.  

  948.                                 show_activity_key("ADMIN_SLAY_1", "ADMIN_SLAY_2", name, name2);

  949.  

  950.                         }

  951.  

  952.  

  953.  

  954.                         if (g_menuOption[id])

  955.  

  956.                                 user_slap(player, (get_user_health(player) > g_menuSettings[id]) ? g_menuSettings[id] : 0)

  957.  

  958.                         else

  959.  

  960.                                 user_kill(player)

  961.  

  962.  

  963.  

  964.                         displaySlapMenu(id, g_menuPosition[id])

  965.  

  966.                 }

  967.  

  968.         }

  969.  

  970.        

  971.  

  972.         return PLUGIN_HANDLED

  973.  

  974. }

  975.  

  976.  

  977.  

  978. displaySlapMenu(id, pos)

  979.  

  980. {

  981.  

  982.         if (pos < 0)

  983.  

  984.                 return

  985.  

  986.  

  987.  

  988.         get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  989.  

  990.  

  991.  

  992.         new menuBody[512]

  993.  

  994.         new b = 0

  995.  

  996.         new i

  997.  

  998.         new name[32], team[4]

  999.  

  1000.         new start = pos * 7

  1001.  

  1002.  

  1003.  

  1004.         if (start >= g_menuPlayersNum[id])

  1005.  

  1006.                 start = pos = g_menuPosition[id] = 0

  1007.  

  1008.  

  1009.  

  1010.         new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "SLAP_SLAY_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  1011.  

  1012.         new end = start + 7

  1013.  

  1014.         new keys = MENU_KEY_0|MENU_KEY_8

  1015.  

  1016.  

  1017.  

  1018.         if (end > g_menuPlayersNum[id])

  1019.  

  1020.                 end = g_menuPlayersNum[id]

  1021.  

  1022.  

  1023.  

  1024.         for (new a = start; a < end; ++a)

  1025.  

  1026.         {

  1027.  

  1028.                 i = g_menuPlayers[id][a]

  1029.  

  1030.                 get_user_name(i, name, 31)

  1031.  

  1032.                

  1033.  

  1034.                 if (g_cstrike)

  1035.  

  1036.                 {

  1037.  

  1038.                         if (cs_get_user_team(i) == CS_TEAM_T)

  1039.  

  1040.                         {

  1041.  

  1042.                                 copy(team, 3, "TE")

  1043.  

  1044.                         }

  1045.  

  1046.                         else if (cs_get_user_team(i) == CS_TEAM_CT)

  1047.  

  1048.                         {

  1049.  

  1050.                                 copy(team, 3, "CT")

  1051.  

  1052.                         } else {

  1053.  

  1054.                                 get_user_team(i, team, 3)

  1055.  

  1056.                         }

  1057.  

  1058.                 } else {

  1059.  

  1060.                         get_user_team(i, team, 3)

  1061.  

  1062.                 }

  1063.  

  1064.  

  1065.  

  1066.                 if (!is_user_alive(i) || (access(i, ADMIN_IMMUNITY) && i != id))

  1067.  

  1068.                 {

  1069.  

  1070.                         ++b

  1071.  

  1072.                

  1073.  

  1074.                         if (g_coloredMenus)

  1075.  

  1076.                                 len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)

  1077.  

  1078.                         else

  1079.  

  1080.                                 len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)              

  1081.  

  1082.                 } else {

  1083.  

  1084.                         keys |= (1<<b)

  1085.  

  1086.                                

  1087.  

  1088.                         if (is_user_admin(i))

  1089.  

  1090.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)

  1091.  

  1092.                         else

  1093.  

  1094.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)

  1095.  

  1096.                 }

  1097.  

  1098.         }

  1099.  

  1100.  

  1101.  

  1102.         if (g_menuOption[id])

  1103.  

  1104.                 len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAP_WITH_DMG", g_menuSettings[id])

  1105.  

  1106.         else

  1107.  

  1108.                 len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAY")

  1109.  

  1110.  

  1111.  

  1112.         if (end != g_menuPlayersNum[id])

  1113.  

  1114.         {

  1115.  

  1116.                 format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  1117.  

  1118.                 keys |= MENU_KEY_9

  1119.  

  1120.         }

  1121.  

  1122.         else

  1123.  

  1124.                 format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  1125.  

  1126.  

  1127.  

  1128.         show_menu(id, keys, menuBody, -1, "Slap/Slay Menu")

  1129.  

  1130. }

  1131.  

  1132.  

  1133.  

  1134. public cmdSlapMenu(id, level, cid)

  1135.  

  1136. {

  1137.  

  1138.         if (!cmd_access(id, level, cid, 1))

  1139.  

  1140.                 return PLUGIN_HANDLED

  1141.  

  1142.  

  1143.  

  1144.         g_menuOption[id] = 0

  1145.  

  1146.         if (ArraySize(g_slapsettings) > 0)

  1147.  

  1148.         {

  1149.  

  1150.                 g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);

  1151.  

  1152.         }

  1153.  

  1154.         else

  1155.  

  1156.         {

  1157.  

  1158.                 // should never happen, but failsafe

  1159.  

  1160.                 g_menuSettings[id] = 0

  1161.  

  1162.         }

  1163.  

  1164.  

  1165.  

  1166.         displaySlapMenu(id, g_menuPosition[id] = 0)

  1167.  

  1168.  

  1169.  

  1170.         return PLUGIN_HANDLED

  1171.  

  1172. }

  1173.  

  1174.  

  1175.  

  1176. /* Kick */

  1177.  

  1178.  

  1179.  

  1180. public actionKickMenu(id, key)

  1181.  

  1182. {

  1183.  

  1184.         switch (key)

  1185.  

  1186.         {

  1187.  

  1188.                 case 8: displayKickMenu(id, ++g_menuPosition[id])

  1189.  

  1190.                 case 9: displayKickMenu(id, --g_menuPosition[id])

  1191.  

  1192.                 default:

  1193.  

  1194.                 {

  1195.  

  1196.                         new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key]

  1197.  

  1198.                         new authid[32], authid2[32], name[32], name2[32]

  1199.  

  1200.                        

  1201.  

  1202.                         get_user_authid(id, authid, 31)

  1203.  

  1204.                         get_user_authid(player, authid2, 31)

  1205.  

  1206.                         get_user_name(id, name, 31)

  1207.  

  1208.                         get_user_name(player, name2, 31)

  1209.  

  1210.                        

  1211.  

  1212.                         new userid2 = get_user_userid(player)

  1213.  

  1214.  

  1215.  

  1216.                         log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, userid2, authid2)

  1217.  

  1218.  

  1219.  

  1220.                         show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2);

  1221.  

  1222.  

  1223.  

  1224.                        

  1225.  

  1226.                         server_cmd("kick #%d", userid2)

  1227.  

  1228.                         server_exec()

  1229.  

  1230.  

  1231.  

  1232.                         displayKickMenu(id, g_menuPosition[id])

  1233.  

  1234.                 }

  1235.  

  1236.         }

  1237.  

  1238.  

  1239.  

  1240.         return PLUGIN_HANDLED

  1241.  

  1242. }

  1243.  

  1244.  

  1245.  

  1246. displayKickMenu(id, pos)

  1247.  

  1248. {

  1249.  

  1250.         if (pos < 0)

  1251.  

  1252.                 return

  1253.  

  1254.  

  1255.  

  1256.         get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  1257.  

  1258.  

  1259.  

  1260.         new menuBody[512]

  1261.  

  1262.         new b = 0

  1263.  

  1264.         new i

  1265.  

  1266.         new name[32]

  1267.  

  1268.         new start = pos * 8

  1269.  

  1270.  

  1271.  

  1272.         if (start >= g_menuPlayersNum[id])

  1273.  

  1274.                 start = pos = g_menuPosition[id] = 0

  1275.  

  1276.  

  1277.  

  1278.         new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "KICK_MENU", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0)))

  1279.  

  1280.         new end = start + 8

  1281.  

  1282.         new keys = MENU_KEY_0

  1283.  

  1284.  

  1285.  

  1286.         if (end > g_menuPlayersNum[id])

  1287.  

  1288.                 end = g_menuPlayersNum[id]

  1289.  

  1290.  

  1291.  

  1292.         for (new a = start; a < end; ++a)

  1293.  

  1294.         {

  1295.  

  1296.                 i = g_menuPlayers[id][a]

  1297.  

  1298.                 get_user_name(i, name, 31)

  1299.  

  1300.  

  1301.  

  1302.                 if (access(i, ADMIN_IMMUNITY) && i != id)

  1303.  

  1304.                 {

  1305.  

  1306.                         ++b

  1307.  

  1308.                

  1309.  

  1310.                         if (g_coloredMenus)

  1311.  

  1312.                                 len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)

  1313.  

  1314.                         else

  1315.  

  1316.                                 len += format(menuBody[len], 511-len, "#. %s^n", name)

  1317.  

  1318.                 } else {

  1319.  

  1320.                         keys |= (1<<b)

  1321.  

  1322.                                

  1323.  

  1324.                         if (is_user_admin(i))

  1325.  

  1326.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)

  1327.  

  1328.                         else

  1329.  

  1330.                                 len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)

  1331.  

  1332.                 }

  1333.  

  1334.         }

  1335.  

  1336.  

  1337.  

  1338.         if (end != g_menuPlayersNum[id])

  1339.  

  1340.         {

  1341.  

  1342.                 format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  1343.  

  1344.                 keys |= MENU_KEY_9

  1345.  

  1346.         }

  1347.  

  1348.         else

  1349.  

  1350.                 format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  1351.  

  1352.  

  1353.  

  1354.         show_menu(id, keys, menuBody, -1, "Kick Menu")

  1355.  

  1356. }

  1357.  

  1358.  

  1359.  

  1360. public cmdKickMenu(id, level, cid)

  1361.  

  1362. {

  1363.  

  1364.         if (cmd_access(id, level, cid, 1))

  1365.  

  1366.                 displayKickMenu(id, g_menuPosition[id] = 0)

  1367.  

  1368.  

  1369.  

  1370.         return PLUGIN_HANDLED

  1371.  

  1372. }

  1373.  

  1374.  

  1375.  

  1376. /* Team menu */

  1377.  

  1378.  

  1379.  

  1380. public actionTeamMenu(id, key)

  1381.  

  1382. {

  1383.  

  1384.         switch (key)

  1385.  

  1386.         {

  1387.  

  1388.                 case 7:

  1389.  

  1390.                 {

  1391.  

  1392.                         g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2);

  1393.  

  1394.                         displayTeamMenu(id, g_menuPosition[id])

  1395.  

  1396.                 }

  1397.  

  1398.                 case 8: displayTeamMenu(id, ++g_menuPosition[id])

  1399.  

  1400.                 case 9: displayTeamMenu(id, --g_menuPosition[id])

  1401.  

  1402.                 default:

  1403.  

  1404.                 {

  1405.  

  1406.                         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  1407.  

  1408.                         new authid[32], authid2[32], name[32], name2[32]

  1409.  

  1410.  

  1411.  

  1412.                         get_user_name(player, name2, 31)

  1413.  

  1414.                         get_user_authid(id, authid, 31)

  1415.  

  1416.                         get_user_authid(player, authid2, 31)

  1417.  

  1418.                         get_user_name(id, name, 31)

  1419.  

  1420.                                

  1421.  

  1422.                         log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT")

  1423.  

  1424.  

  1425.  

  1426.                         show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]);

  1427.  

  1428.  

  1429.  

  1430.                         if (g_cstrike)

  1431.  

  1432.                         {

  1433.  

  1434.                                 if (is_user_alive(player))

  1435.  

  1436.                                 {

  1437.  

  1438.                                         new deaths = cs_get_user_deaths(player)

  1439.  

  1440.                                         user_kill(player, 1)

  1441.  

  1442.                                         cs_set_user_deaths(player, deaths)

  1443.  

  1444.                                 }

  1445.  

  1446.                                 // This modulo math just aligns the option to the CsTeams-corresponding number

  1447.  

  1448.                                 cs_set_user_team(player, (g_menuOption[id] % 3) + 1)

  1449.  

  1450.                                 cs_reset_user_model(player)

  1451.  

  1452.                         } else {

  1453.  

  1454.                                 new limit_setting = get_cvar_num("mp_limitteams")

  1455.  

  1456.                                

  1457.  

  1458.                                 set_cvar_num("mp_limitteams", 0)

  1459.  

  1460.                                 engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2])

  1461.  

  1462.                                 engclient_cmd(player, "joinclass", "1")

  1463.  

  1464.                                 set_cvar_num("mp_limitteams", limit_setting)

  1465.  

  1466.                         }

  1467.  

  1468.  

  1469.  

  1470.                         displayTeamMenu(id, g_menuPosition[id])

  1471.  

  1472.                 }

  1473.  

  1474.         }

  1475.  

  1476.        

  1477.  

  1478.         return PLUGIN_HANDLED

  1479.  

  1480. }

  1481.  

  1482.  

  1483.  

  1484. displayTeamMenu(id, pos)

  1485.  

  1486. {

  1487.  

  1488.         if (pos < 0)

  1489.  

  1490.                 return

  1491.  

  1492.  

  1493.  

  1494.         get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  1495.  

  1496.  

  1497.  

  1498.         new menuBody[512]

  1499.  

  1500.         new b = 0

  1501.  

  1502.         new i, iteam

  1503.  

  1504.         new name[32], team[4]

  1505.  

  1506.         new start = pos * 7

  1507.  

  1508.  

  1509.  

  1510.         if (start >= g_menuPlayersNum[id])

  1511.  

  1512.                 start = pos = g_menuPosition[id] = 0

  1513.  

  1514.  

  1515.  

  1516.         new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  1517.  

  1518.         new end = start + 7

  1519.  

  1520.         new keys = MENU_KEY_0|MENU_KEY_8

  1521.  

  1522.  

  1523.  

  1524.         if (end > g_menuPlayersNum[id])

  1525.  

  1526.                 end = g_menuPlayersNum[id]

  1527.  

  1528.  

  1529.  

  1530.         for (new a = start; a < end; ++a)

  1531.  

  1532.         {

  1533.  

  1534.                 i = g_menuPlayers[id][a]

  1535.  

  1536.                 get_user_name(i, name, 31)

  1537.  

  1538.                

  1539.  

  1540.                 if (g_cstrike)

  1541.  

  1542.                 {

  1543.  

  1544.                         iteam = _:cs_get_user_team(i)

  1545.  

  1546.                        

  1547.  

  1548.                         if (iteam == 1)

  1549.  

  1550.                         {

  1551.  

  1552.                                 copy(team, 3, "TE")

  1553.  

  1554.                         }

  1555.  

  1556.                         else if (iteam == 2)

  1557.  

  1558.                         {

  1559.  

  1560.                                 copy(team, 3, "CT")

  1561.  

  1562.                         }

  1563.  

  1564.                         else if (iteam == 3)

  1565.  

  1566.                         {

  1567.  

  1568.                                 copy(team, 3, "SPE");

  1569.  

  1570.                                 iteam = 6;

  1571.  

  1572.                         } else {

  1573.  

  1574.                                 iteam = get_user_team(i, team, 3)

  1575.  

  1576.                         }

  1577.  

  1578.                 } else {

  1579.  

  1580.                         iteam = get_user_team(i, team, 3)

  1581.  

  1582.                 }

  1583.  

  1584.  

  1585.  

  1586.                 if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || (access(i, ADMIN_IMMUNITY) && i != id))

  1587.  

  1588.                 {

  1589.  

  1590.                         ++b

  1591.  

  1592.                        

  1593.  

  1594.                         if (g_coloredMenus)

  1595.  

  1596.                                 len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)

  1597.  

  1598.                         else

  1599.  

  1600.                                 len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)              

  1601.  

  1602.                 } else {

  1603.  

  1604.                         keys |= (1<<b)

  1605.  

  1606.                                

  1607.  

  1608.                         if (is_user_admin(i))

  1609.  

  1610.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)

  1611.  

  1612.                         else

  1613.  

  1614.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)

  1615.  

  1616.                 }

  1617.  

  1618.         }

  1619.  

  1620.  

  1621.  

  1622.         len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)])

  1623.  

  1624.  

  1625.  

  1626.         if (end != g_menuPlayersNum[id])

  1627.  

  1628.         {

  1629.  

  1630.                 format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  1631.  

  1632.                 keys |= MENU_KEY_9

  1633.  

  1634.         }

  1635.  

  1636.         else

  1637.  

  1638.                 format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  1639.  

  1640.  

  1641.  

  1642.         show_menu(id, keys, menuBody, -1, "Team Menu")

  1643.  

  1644. }

  1645.  

  1646.  

  1647.  

  1648. public cmdTeamMenu(id, level, cid)

  1649.  

  1650. {

  1651.  

  1652.         if (!cmd_access(id, level, cid, 1))

  1653.  

  1654.                 return PLUGIN_HANDLED

  1655.  

  1656.  

  1657.  

  1658.         g_menuOption[id] = 0

  1659.  

  1660.  

  1661.  

  1662.         displayTeamMenu(id, g_menuPosition[id] = 0)

  1663.  

  1664.  

  1665.  

  1666.         return PLUGIN_HANDLED

  1667.  

  1668. }

  1669.  

  1670.  

  1671.  

  1672. /* Client cmds menu */

  1673.  

  1674.  

  1675.  

  1676. public actionClcmdMenu(id, key)

  1677.  

  1678. {

  1679.  

  1680.         switch (key)

  1681.  

  1682.         {

  1683.  

  1684.                 case 7:

  1685.  

  1686.                 {

  1687.  

  1688.                         ++g_menuOption[id]

  1689.  

  1690.                         g_menuOption[id] %= g_menuSelectNum[id]

  1691.  

  1692.                         displayClcmdMenu(id, g_menuPosition[id])

  1693.  

  1694.                 }

  1695.  

  1696.                 case 8: displayClcmdMenu(id, ++g_menuPosition[id])

  1697.  

  1698.                 case 9: displayClcmdMenu(id, --g_menuPosition[id])

  1699.  

  1700.                 default:

  1701.  

  1702.                 {

  1703.  

  1704.                         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

  1705.  

  1706.                         new flags = g_clcmdMisc[g_menuSelect[id][g_menuOption[id]]][1]

  1707.  

  1708.                        

  1709.  

  1710.                         if (is_user_connected(player))

  1711.  

  1712.                         {

  1713.  

  1714.                                 new command[512], authid[32], name[32], userid[32]

  1715.  

  1716.                                

  1717.  

  1718.                                 copy(command, charsmax(command), g_clcmdCmd[g_menuSelect[id][g_menuOption[id]]])

  1719.  

  1720.                                 get_user_authid(player, authid, 31)

  1721.  

  1722.                                 get_user_name(player, name, 31)

  1723.  

  1724.                                 num_to_str(get_user_userid(player), userid, 31)

  1725.  

  1726.                                

  1727.  

  1728.                                 replace(command, charsmax(command), "%userid%", userid)

  1729.  

  1730.                                 replace(command, charsmax(command), "%authid%", authid)

  1731.  

  1732.                                 replace(command, charsmax(command), "%name%", name)

  1733.  

  1734.                                

  1735.  

  1736.                                 if (flags & 1)

  1737.  

  1738.                                 {

  1739.  

  1740.                                         server_cmd("%s", command)

  1741.  

  1742.                                         server_exec()

  1743.  

  1744.                                 } else if (flags & 2)

  1745.  

  1746.                                         client_cmd(id, "%s", command)

  1747.  

  1748.                                 else if (flags & 4)

  1749.  

  1750.                                         client_cmd(player, "%s", command)

  1751.  

  1752.                         }

  1753.  

  1754.                        

  1755.  

  1756.                         if (flags & 8)

  1757.  

  1758.                                 displayClcmdMenu(id, g_menuPosition[id])

  1759.  

  1760.                 }

  1761.  

  1762.         }

  1763.  

  1764.        

  1765.  

  1766.         return PLUGIN_HANDLED

  1767.  

  1768. }

  1769.  

  1770.  

  1771.  

  1772. displayClcmdMenu(id, pos)

  1773.  

  1774. {

  1775.  

  1776.         if (pos < 0)

  1777.  

  1778.                 return

  1779.  

  1780.  

  1781.  

  1782.         get_players(g_menuPlayers[id], g_menuPlayersNum[id])

  1783.  

  1784.  

  1785.  

  1786.         new menuBody[512]

  1787.  

  1788.         new b = 0

  1789.  

  1790.         new i

  1791.  

  1792.         new name[32]

  1793.  

  1794.         new start = pos * 7

  1795.  

  1796.  

  1797.  

  1798.         if (start >= g_menuPlayersNum[id])

  1799.  

  1800.                 start = pos = g_menuPosition[id] = 0

  1801.  

  1802.  

  1803.  

  1804.         new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CL_CMD_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

  1805.  

  1806.         new end = start + 7

  1807.  

  1808.         new keys = MENU_KEY_0|MENU_KEY_8

  1809.  

  1810.  

  1811.  

  1812.         if (end > g_menuPlayersNum[id])

  1813.  

  1814.                 end = g_menuPlayersNum[id]

  1815.  

  1816.  

  1817.  

  1818.         for (new a = start; a < end; ++a)

  1819.  

  1820.         {

  1821.  

  1822.                 i = g_menuPlayers[id][a]

  1823.  

  1824.                 get_user_name(i, name, 31)

  1825.  

  1826.  

  1827.  

  1828.                 if (!g_menuSelectNum[id] || (access(i, ADMIN_IMMUNITY) && i != id))

  1829.  

  1830.                 {

  1831.  

  1832.                         ++b

  1833.  

  1834.                        

  1835.  

  1836.                         if (g_coloredMenus)

  1837.  

  1838.                                 len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)

  1839.  

  1840.                         else

  1841.  

  1842.                                 len += format(menuBody[len], 511-len, "#. %s^n", name)          

  1843.  

  1844.                 } else {

  1845.  

  1846.                         keys |= (1<<b)

  1847.  

  1848.                                

  1849.  

  1850.                         if (is_user_admin(i))

  1851.  

  1852.                                 len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)

  1853.  

  1854.                         else

  1855.  

  1856.                                 len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)

  1857.  

  1858.                 }

  1859.  

  1860.         }

  1861.  

  1862.  

  1863.  

  1864.         if (g_menuSelectNum[id])

  1865.  

  1866.                 len += format(menuBody[len], 511-len, "^n8. %s^n", g_clcmdName[g_menuSelect[id][g_menuOption[id]]])

  1867.  

  1868.         else

  1869.  

  1870.                 len += format(menuBody[len], 511-len, "^n8. %L^n", id, "NO_CMDS")

  1871.  

  1872.  

  1873.  

  1874.         if (end != g_menuPlayersNum[id])

  1875.  

  1876.         {

  1877.  

  1878.                 format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")

  1879.  

  1880.                 keys |= MENU_KEY_9

  1881.  

  1882.         }

  1883.  

  1884.         else

  1885.  

  1886.                 format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

  1887.  

  1888.  

  1889.  

  1890.         show_menu(id, keys, menuBody, -1, "Client Cmds Menu")

  1891.  

  1892. }

  1893.  

  1894.  

  1895.  

  1896. public cmdClcmdMenu(id, level, cid)

  1897.  

  1898. {

  1899.  

  1900.         if (!cmd_access(id, level, cid, 1))

  1901.  

  1902.                 return PLUGIN_HANDLED

  1903.  

  1904.  

  1905.  

  1906.         g_menuSelectNum[id] = 0

  1907.  

  1908.  

  1909.  

  1910.         for (new a = 0; a < g_clcmdNum; ++a)

  1911.  

  1912.                 if (access(id, g_clcmdMisc[a][0]))

  1913.  

  1914.                         g_menuSelect[id][g_menuSelectNum[id]++] = a

  1915.  

  1916.  

  1917.  

  1918.         g_menuOption[id] = 0

  1919.  

  1920.  

  1921.  

  1922.         displayClcmdMenu(id, g_menuPosition[id] = 0)

  1923.  

  1924.  

  1925.  

  1926.         return PLUGIN_HANDLED

  1927.  

  1928. }

  1929.  

  1930.  

  1931.  

  1932. load_settings(szFilename[])

  1933.  

  1934. {

  1935.  

  1936.         if (!file_exists(szFilename))

  1937.  

  1938.                 return 0

  1939.  

  1940.  

  1941.  

  1942.         new text[256], szFlags[32], szAccess[32]

  1943.  

  1944.         new a, pos = 0

  1945.  

  1946.  

  1947.  

  1948.         while (g_clcmdNum < MAX_CLCMDS && read_file(szFilename, pos++, text, 255, a))

  1949.  

  1950.         {

  1951.  

  1952.                 if (text[0] == ';') continue

  1953.  

  1954.  

  1955.  

  1956.                 if (parse(text, g_clcmdName[g_clcmdNum], 31, g_clcmdCmd[g_clcmdNum], 63, szFlags, 31, szAccess, 31) > 3)

  1957.  

  1958.                 {

  1959.  

  1960.                         while (replace(g_clcmdCmd[g_clcmdNum], 63, "\'", "^""))

  1961.  

  1962.                        {

  1963.  

  1964.                                // do nothing

  1965.  

  1966.                        }

  1967.  

  1968.  

  1969.  

  1970.                        g_clcmdMisc[g_clcmdNum][1] = read_flags(szFlags)

  1971.  

  1972.                        g_clcmdMisc[g_clcmdNum][0] = read_flags(szAccess)

  1973.  

  1974.                        g_clcmdNum++

  1975.  

  1976.                }

  1977.  

  1978.        }

  1979.  

  1980.  

  1981.  

  1982.        return 1

  1983.  

  1984. }

  1985.  

  1986.  

  1987.  


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  [18 hozzászólás ]  Oldal12Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 24 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