gal_17

hlstats

Feb 23rd, 2017
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 40.56 KB | None | 0 0
  1. /**
  2.  * 2008 - Modified by Nicholas Hastings (psychonic) for used with HLstatsX Community Edition
  3.  * http://www.hlxcommunity.com
  4.  *
  5.  * HLstatsX - AMX Mod X plugin to display ingame messages
  6.  * http://www.hlstatsx.com/
  7.  * Copyright (C) 2007-2008 TTS Oetzel & Goerz GmbH
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  22.  */
  23.  
  24. #pragma dynamic 16000
  25.  
  26. #include <amxmodx>
  27. #include <amxmisc>
  28.  
  29. #include <cstrike>
  30. #include <csx>
  31. #include <cellarray>
  32. #include <fakemeta>
  33.  
  34. #define VERSION "1.6.19 (HL1)"
  35.  
  36. new g_hlx_block_commands
  37. new g_hlx_message_prefix
  38. new blocked_commands[][] = { "rank", "skill", "points", "place", "session", "session_data",
  39.                              "kpd", "kdratio", "kdeath", "next", "load", "status", "servers",
  40.                              "top20", "top10","top15", "top5", "clans", "cheaters","bans", "statsme", "weapons",
  41.                              "weapon", "action", "actions", "accuracy", "targets", "target", "kills",
  42.                              "kill", "player_kills", "cmd", "cmds", "command", "hlx_display 0",
  43.                              "hlx_display 1", "hlx_teams 0", "hlx_teams 1", "hlx_hideranking",
  44.                              "hlx_chat 0", "hlx_chat 1", "hlx_menu", "servers 1", "servers 2",
  45.                              "servers 3", "hlx", "hlstatsx", "help" }
  46.  
  47.  
  48. new g_msgSayText
  49. new g_msgTeamInfo
  50. new g_HLstatsX_MainMenu
  51. new g_HLstatsX_AutoMenu
  52. new g_HLstatsX_EventsMenu
  53. new bool:Death[33]//fix
  54. new Array:g_HLstatsX_ColorArray
  55.  
  56.  
  57. new ct_player_color = -1
  58. new ts_player_color = -1
  59. new message_cache[192]
  60. new parsed_message_cache[192]
  61. new cached_color_index
  62.  
  63. new logmessage_ignore[512]
  64. new display_menu_keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9
  65.  
  66. new TeamNames[][] =
  67. {
  68.     "",
  69.     "TERRORIST",
  70.     "CT",
  71.     "SPECTATOR"
  72. }
  73.  
  74.  
  75. public plugin_init()
  76. {
  77.     register_plugin("HLstatsX CE Ingame Plugin", VERSION, "psychonic")
  78.     register_srvcmd("hlx_amx_psay",   "hlx_amx_psay",   0, "<name or #userid><colored><message> - sends private message")
  79.     register_srvcmd("hlx_amx_bulkpsay",   "hlx_amx_bulkpsay",   0, "<userid list><message> - sends private message to many")
  80.     register_srvcmd("hlx_amx_psay2",  "hlx_amx_psay2",  0, "<name or #userid><colored><message> - sends green colored private message")
  81.     register_srvcmd("hlx_amx_say",    "hlx_amx_say",    0, "<message> - sends message to all players")
  82.     register_srvcmd("hlx_amx_csay",   "hlx_amx_csay",   0, "<message> - sends center hud message to all players")
  83.     register_srvcmd("hlx_amx_hint",   "hlx_amx_hint",   0, "<name or #userid><message> - sends hint message")
  84.     register_srvcmd("hlx_amx_msay",   "hlx_amx_msay",   0, "<delay><userid><message> - displays advanced information")
  85.     register_srvcmd("hlx_amx_browse", "hlx_amx_browse", 0, "<userid><url> - displays internal browser")
  86.     register_srvcmd("hlx_amx_swap",   "hlx_amx_swap",   0, "<userid> - swaps players to the opposite team")
  87.  
  88.     register_cvar("hlxce_plugin_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER)
  89.     register_cvar("hlxce_version", "", FCVAR_SPONLY|FCVAR_SERVER)
  90.     register_cvar("hlxce_webpage", "http://www.hlxcommunity.com", FCVAR_SPONLY|FCVAR_SERVER)
  91.     g_hlx_block_commands = register_cvar("hlx_block_commands", "1")
  92.     g_hlx_message_prefix = register_cvar("hlx_message_prefix", "")
  93.    
  94.     register_event("TextMsg",  "client_joinedteam",     "a", "2=#Game_join_ct", "2=#Game_join_terrorist")
  95.     register_event("DeathMsg", "client_kill",           "a", "1>0")
  96.    
  97.     register_logevent("StartRound", 2, "1=Round_Start")//fix
  98.    
  99.     // building the menus only once
  100.     g_HLstatsX_MainMenu = menu_create("HLstatsX - Main Menu", "mainmenu_handle")
  101.     menu_additem(g_HLstatsX_MainMenu, "Display Rank",            "1")
  102.     menu_additem(g_HLstatsX_MainMenu, "Next Players",            "2")
  103.     menu_additem(g_HLstatsX_MainMenu, "Top10 Players",           "3")
  104.     menu_additem(g_HLstatsX_MainMenu, "Clans Ranking",           "4")
  105.     menu_additem(g_HLstatsX_MainMenu, "Server Status",           "5")
  106.     menu_additem(g_HLstatsX_MainMenu, "Statsme",                 "6")
  107.     menu_additem(g_HLstatsX_MainMenu, "Auto Ranking",            "7")
  108.     menu_additem(g_HLstatsX_MainMenu, "Console Events",          "8")
  109.     menu_additem(g_HLstatsX_MainMenu, "Weapon Usage",            "9")
  110.     menu_additem(g_HLstatsX_MainMenu, "Weapons Accuracy",       "10")
  111.     menu_additem(g_HLstatsX_MainMenu, "Weapons Targets",        "11")
  112.     menu_additem(g_HLstatsX_MainMenu, "Player Kills",           "12")
  113.     menu_additem(g_HLstatsX_MainMenu, "Toggle Ranking Display", "13")
  114.     menu_additem(g_HLstatsX_MainMenu, "VAC Cheaterlist",        "14")
  115.     menu_additem(g_HLstatsX_MainMenu, "Display Help",           "15")
  116.     menu_setprop(g_HLstatsX_MainMenu, MPROP_PERPAGE, 6)
  117.  
  118.     g_HLstatsX_AutoMenu = menu_create("HLstatsX - Auto-Ranking", "automenu_handle")
  119.     menu_additem(g_HLstatsX_AutoMenu, "Enable on round-start",   "1")
  120.     menu_additem(g_HLstatsX_AutoMenu, "Enable on round-end",     "2")
  121.     menu_additem(g_HLstatsX_AutoMenu, "Enable on player death",  "3")
  122.     menu_additem(g_HLstatsX_AutoMenu, "Disable",                 "4")
  123.     menu_setprop(g_HLstatsX_AutoMenu, MPROP_PERPAGE, 0)
  124.  
  125.     g_HLstatsX_EventsMenu = menu_create("HLstatsX - Console Events", "eventsmenu_handle")
  126.     menu_additem(g_HLstatsX_EventsMenu, "Enable Events",         "1")
  127.     menu_additem(g_HLstatsX_EventsMenu, "Disable Events",        "2")
  128.     menu_additem(g_HLstatsX_EventsMenu, "Enable Global Chat",    "3")
  129.     menu_additem(g_HLstatsX_EventsMenu, "Disable Global Chat",   "4")
  130.     menu_setprop(g_HLstatsX_EventsMenu, MPROP_PERPAGE, 0)
  131.  
  132.     register_menucmd(register_menuid("Display Menu"), display_menu_keys, "handle_internal_menu")
  133.     register_clcmd("say",       "hlx_block_commands")
  134.     register_clcmd("say_team""hlx_block_commands")
  135.  
  136.     clear_message_cache()
  137.  
  138.     ct_player_color = -1
  139.     ts_player_color = -1
  140.     find_player_team_slot("CT")
  141.     find_player_team_slot("TERRORIST")
  142.  
  143.     g_msgSayText = get_user_msgid("SayText")
  144.     g_msgTeamInfo = get_user_msgid("TeamInfo")
  145.     g_HLstatsX_ColorArray = ArrayCreate()
  146.    
  147.     register_forward(FM_AlertMessage, "game_log_hook")
  148. }
  149.  
  150. public add_message_cache(message[192], parsed_message[192], color_index) {
  151.     message_cache = message
  152.     parsed_message_cache = parsed_message
  153.     cached_color_index = color_index
  154. }
  155.  
  156.  
  157. public is_message_cached(message[192]) {
  158.     if (strcmp(message, message_cache) == 0) {
  159.         return 1
  160.     }
  161.     return 0
  162. }
  163.  
  164.  
  165. public clear_message_cache() {
  166.     message_cache = ""
  167.     parsed_message_cache = ""
  168.     cached_color_index = -1
  169. }
  170.  
  171. public client_connect(id)//fix
  172. {
  173.     Death[id] = false
  174. }
  175.  
  176. public log_player_event(client, verb[32], player_event[192], display_location)
  177. {
  178.     if ((client > 0) && (is_user_connected(client))) {
  179.         new player_userid = get_user_userid(client)
  180.  
  181.         static player_authid[32]
  182.         get_user_authid(client, player_authid, 31)
  183.  
  184.         static player_name[32]
  185.         get_user_name(client, player_name, 31)
  186.  
  187.         static player_team[16]
  188.         get_user_team(client, player_team, 15)
  189.  
  190.         if (display_location > 0) {
  191.             new player_origin[3]
  192.             get_user_origin (client, player_origin)
  193.  
  194.             format(logmessage_ignore, 511, "^"%s<%d><%s><%s>^" %s ^"%s^"", player_name, player_userid, player_authid, player_team, verb, player_event)
  195.             log_message("^"%s<%d><%s><%s>^" %s ^"%s^" (position ^"%d %d %d^")", player_name, player_userid, player_authid, player_team, verb, player_event, player_origin[0], player_origin[1], player_origin[2])
  196.         } else {
  197.             log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", player_name, player_userid, player_authid, player_team, verb, player_event)
  198.         }
  199.     }
  200. }
  201.  
  202.  
  203. public game_log_hook(AlertType: type, message[])
  204. {
  205.     if (type != at_logged ) {
  206.         return FMRES_IGNORED
  207.     }
  208.     if ((strcmp("", logmessage_ignore) != 0) && (contain(message, logmessage_ignore) != -1)) {
  209.         if (contain(message, "position") == -1) {
  210.             logmessage_ignore = ""
  211.             return FMRES_SUPERCEDE
  212.         }
  213.     }
  214.     return FMRES_IGNORED
  215. }
  216.  
  217.  
  218. stock find_player_team_slot(team[16])
  219. {
  220.  
  221.     new team_index = get_team_index(team)
  222.     if (team_index > -1) {
  223.         if (strcmp(team, "CT") == 0) {
  224.             ct_player_color = -1
  225.         } else if (strcmp(team, "TERRORIST") == 0) {
  226.             ts_player_color = -1
  227.         }
  228.  
  229.         new max_clients = get_maxplayers()
  230.         for(new i = 1; i <= max_clients; i++) {
  231.             new player_index = i
  232.             if (is_user_connected(player_index)) {
  233.                 static player_team[16]
  234.                 get_user_team(player_index, player_team, 15)
  235.  
  236.                 if (strcmp(player_team, team) == 0) {
  237.                     if (strcmp(team, "CT") == 0) {
  238.                         ct_player_color = player_index
  239.                         if (ts_player_color == ct_player_color) {
  240.                             ct_player_color = -1
  241.                             ts_player_color = -1
  242.                         }
  243.                         break
  244.                     } else if (strcmp(team, "TERRORIST") == 0) {
  245.                         ts_player_color = player_index
  246.                         if (ts_player_color == ct_player_color) {
  247.                             ct_player_color = -1
  248.                             ts_player_color = -1
  249.                         }
  250.                         break
  251.                     }
  252.                 }
  253.             }
  254.         }
  255.     }
  256. }
  257.  
  258.  
  259. public validate_team_colors()
  260. {
  261.     if (ct_player_color > -1) {
  262.         if (is_user_connected(ct_player_color)) {
  263.             static player_team[16]
  264.             get_user_team(ct_player_color, player_team, 15)
  265.             if (strcmp("CT", player_team) != 0) {
  266.                 ct_player_color = -1
  267.             }
  268.         } else {
  269.             ct_player_color = -1
  270.         }
  271.     } else if (ts_player_color > -1) {
  272.         if (is_user_connected(ts_player_color)) {
  273.             static player_team[16]
  274.             get_user_team(ts_player_color, player_team, 15)
  275.             if (strcmp("TERRORIST", player_team) != 0) {
  276.                 ts_player_color = -1
  277.             }
  278.         } else {
  279.             ts_player_color = -1
  280.         }
  281.     }
  282.     if ((ct_player_color == -1) || (ts_player_color == -1)) {
  283.         if (ct_player_color == -1) {
  284.             find_player_team_slot("CT")
  285.         }
  286.         if (ts_player_color == -1) {
  287.             find_player_team_slot("TERRORIST")
  288.         }
  289.     }
  290. }
  291.  
  292.  
  293. stock get_team_index(team_name[16])
  294. {
  295.     if (strcmp(team_name, "TERRORIST") == 0) {
  296.         return 0
  297.     } else if (strcmp(team_name, "CT") == 0) {
  298.         return 1
  299.     }
  300.     return -1
  301. }
  302.  
  303.  
  304. stock remove_color_entities(message[192])
  305. {
  306.     replace_all(message, 192, "x04", "")
  307.     replace_all(message, 192, "x03", "")
  308.     replace_all(message, 192, "x01", "")
  309. }
  310.  
  311.  
  312. stock color_entities(message[192])
  313. {
  314.     new replace_message[2]
  315.     replace_message[0] = 0x04
  316.     replace_all(message, 192, "x04", replace_message)
  317.     replace_message[0] = 0x03
  318.     replace_all(message, 192, "x03", replace_message)
  319.     replace_message[0] = 0x01
  320.     replace_all(message, 192, "x01", replace_message)
  321. }
  322.  
  323.  
  324. stock color_team_entities(message[192])
  325. {
  326.     if (ts_player_color > -1) {
  327.         if (contain(message, "TERRORIST") > -1) {
  328.             new replace_message[192]
  329.             replace_message[0] = 0x03
  330.             format(replace_message[1], 191, "%s", "TERRORIST")
  331.             replace_message[strlen("TERRORIST") + 1] = 0x01
  332.             replace_all(message, 192, "TERRORIST", replace_message)
  333.             return ts_player_color
  334.         }
  335.     }
  336.     if (ct_player_color > -1) {
  337.         if (contain(message, "CT") > -1) {
  338.             new replace_message[192]
  339.             replace_message[0] = 0x03
  340.             format(replace_message[1], 191, "%s", "CT")
  341.             replace_message[strlen("CT") + 1] = 0x01
  342.             replace_all(message, 192, "CT", replace_message)
  343.             return ct_player_color
  344.         }
  345.     }
  346.    
  347.     return -1
  348. }
  349.  
  350. stock color_player(color_type, player_index, client_message[192])
  351. {
  352.     new color_player_index = -1
  353.     static client_name[192]
  354.     get_user_name(player_index, client_name, 191)
  355.     if (color_type == 1) {
  356.         new colored_player_name[192]
  357.         colored_player_name[0] = 0x03
  358.         format(colored_player_name[1], 191, "%s", client_name)
  359.         colored_player_name[strlen(client_name) + 1] = 0x01
  360.  
  361.         if (contain(client_message, client_name) > -1) {
  362.             replace_all(client_message, 192, client_name, colored_player_name)
  363.             return player_index
  364.         }
  365.     } else {
  366.         new colored_player_name[192]
  367.         colored_player_name[0] = 0x04
  368.         format(colored_player_name[1], 191, "%s", client_name)
  369.         colored_player_name[strlen(client_name) + 1] = 0x01
  370.  
  371.         if (contain(client_message, client_name) > -1) {
  372.            replace_all(client_message, 192, client_name, colored_player_name)
  373.         }
  374.     }
  375.     return color_player_index
  376. }
  377.  
  378.  
  379. stock color_all_players(message[192])
  380. {
  381.     new color_index = -1
  382.     ArrayClear(g_HLstatsX_ColorArray)
  383.  
  384.     new lowest_matching_pos = 192
  385.     new lowest_matching_pos_client = -1
  386.  
  387.     new max_clients = get_maxplayers()
  388.     for(new i = 1; i <= max_clients; i++) {
  389.  
  390.         new client = i
  391.         if (is_user_connected(client)) {
  392.             static client_name[192]
  393.             get_user_name(client, client_name, 191)
  394.             new message_pos = contain(message, client_name)
  395.             if (message_pos > -1) {
  396.                 if (lowest_matching_pos > message_pos) {
  397.                     lowest_matching_pos = message_pos
  398.                     lowest_matching_pos_client = client
  399.                 }
  400.                 new TempPlayerColorArray[1]
  401.                 TempPlayerColorArray[0] = client
  402.                 ArrayPushArray(g_HLstatsX_ColorArray, TempPlayerColorArray)
  403.             }
  404.         }
  405.     }
  406.  
  407.     new size = ArraySize(g_HLstatsX_ColorArray)
  408.     for (new i = 0; i < size; i++) {
  409.         new temp_player_array[1]
  410.         ArrayGetArray(g_HLstatsX_ColorArray, i, temp_player_array)
  411.         new temp_client = temp_player_array[0]
  412.         if (temp_client == lowest_matching_pos_client) {
  413.             new temp_color_index = color_player(1, temp_client, message)
  414.             color_index = temp_color_index
  415.         } else {
  416.             color_player(0, temp_client, message)
  417.         }
  418.     }
  419.     ArrayClear(g_HLstatsX_ColorArray)
  420.    
  421.     return color_index
  422. }
  423.  
  424.  
  425. public client_kill()
  426. {
  427.  
  428.     new killer_id   = read_data(1)
  429.     new victim_id   = read_data(2)
  430.     new is_headshot = read_data(3)
  431.     new weapon[32]
  432.     read_data(4, weapon, 31)
  433.  
  434.     if ((killer_id > 0) && (is_user_connected(killer_id))) {
  435.  
  436.         new suicide = 0
  437.         if (killer_id == victim_id) {
  438.             suicide = 1
  439.         }
  440.        
  441.         static killer_name[32], killer_team[16], killer_authid[32]
  442.         new killer_userid = get_user_userid(killer_id)
  443.  
  444.         get_user_name(killer_id, killer_name, 31)
  445.         get_user_team(killer_id, killer_team, 15)
  446.         get_user_authid(killer_id, killer_authid, 31)
  447.         new killer_origin[3]
  448.         get_user_origin (killer_id, killer_origin)
  449.         new headshot_logentry[16] = ""
  450.  
  451.         if (suicide == 0) {
  452.             if ((victim_id > 0) && (is_user_connected(victim_id))) {
  453.                 static victim_name[32], victim_team[16], victim_authid[32]
  454.                 new victim_userid = get_user_userid(victim_id)
  455.                
  456.                 get_user_name(victim_id, victim_name, 31)
  457.                 get_user_team(victim_id, victim_team, 15)
  458.                 get_user_authid(victim_id, victim_authid, 31)
  459.  
  460.                 new victim_origin[3]
  461.                 get_user_origin (victim_id, victim_origin)
  462.                
  463.                 if (is_headshot > 0) {
  464.                     headshot_logentry = " (headshot)"
  465.                 }
  466.                 format(logmessage_ignore, 511, "^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"",
  467.                     killer_name, killer_userid, killer_authid, killer_team,
  468.                     victim_name, victim_userid, victim_authid, victim_team,
  469.                     weapon)
  470.                 log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"%s (attacker_position ^"%d %d %d^") (victim_position ^"%d %d %d^")",
  471.                     killer_name, killer_userid, killer_authid, killer_team,
  472.                     victim_name, victim_userid, victim_authid, victim_team,
  473.                     weapon, headshot_logentry,
  474.                     killer_origin[0], killer_origin[1], killer_origin[2],
  475.                     victim_origin[0], victim_origin[1], victim_origin[2])
  476.  
  477.             }
  478.         } else {
  479.             format(logmessage_ignore, 511, "^"%s<%d><%s><%s>^" committed suicide with ^"%s^"",
  480.                 killer_name, killer_userid, killer_authid, killer_team, weapon)
  481.             log_message("^"%s<%d><%s><%s>^" committed suicide with ^"%s^" (attacker_position ^"%d %d %d^")",
  482.                 killer_name, killer_userid, killer_authid, killer_team, weapon,
  483.                 killer_origin[0], killer_origin[1], killer_origin[2])
  484.         }
  485.     }
  486.  
  487. }
  488.  
  489.  
  490. public client_joinedteam()
  491. {
  492.     new id = read_data(1)
  493.     if ((id > 0) && (is_user_connected(id))) {
  494.         if ((ct_player_color == -1) || (id == ct_player_color)) {
  495.             ct_player_color = -1
  496.             clear_message_cache()
  497.         } else if ((ts_player_color == -1) || (id == ts_player_color)) {
  498.             ts_player_color = -1
  499.             clear_message_cache()
  500.         }
  501.     }
  502. }
  503.  
  504.  
  505. public client_disconnect(id)
  506. {
  507.     if ((id > 0) && (is_user_connected(id))) {
  508.         if ((ct_player_color == -1) || (id == ct_player_color)) {
  509.             ct_player_color = -1
  510.             clear_message_cache()
  511.         } else if ((ts_player_color == -1) || (id == ts_player_color)) {
  512.             ts_player_color = -1
  513.             clear_message_cache()
  514.         }
  515.         if (!Death[id]){
  516.         new iStats[8], iHits[8]
  517.         static szTeam[16], szName[32], szAuthid[32], szWeapon[24]
  518.         new iUserid = get_user_userid(id)
  519.         new _max = xmod_get_maxweapons()
  520.        
  521.         get_user_team(id, szTeam, 15)
  522.         get_user_name(id, szName, 31)
  523.         get_user_authid(id, szAuthid, 31)
  524.        
  525.         for (new i = 1; i < _max; ++i) {
  526.             if (get_user_wstats(id, i, iStats, iHits)) {
  527.                 xmod_get_wpnname(i, szWeapon, 23)
  528.                
  529.                 log_message("^"%s<%d><%s><%s>^" triggered ^"weaponstats^" (weapon ^"%s^") (shots ^"%d^") (hits ^"%d^") (kills ^"%d^") (headshots ^"%d^") (tks ^"%d^") (damage ^"%d^") (deaths ^"%d^")",
  530.                 szName, iUserid, szAuthid, szTeam, szWeapon, iStats[4], iStats[5], iStats[0], iStats[2], iStats[3], iStats[6], iStats[1])
  531.                 log_message("^"%s<%d><%s><%s>^" triggered ^"weaponstats2^" (weapon ^"%s^") (head ^"%d^") (chest ^"%d^") (stomach ^"%d^") (leftarm ^"%d^") (rightarm ^"%d^") (leftleg ^"%d^") (rightleg ^"%d^")",
  532.                 szName, iUserid, szAuthid, szTeam, szWeapon, iHits[1], iHits[2], iHits[3], iHits[4], iHits[5], iHits[6], iHits[7])
  533.             }
  534.         }
  535.        }
  536.     }
  537. }
  538.  
  539.  
  540. public client_death(killer, victim, wpnindex, hitplace, TK)
  541. {
  542.     new id = victim
  543.  
  544.     if ((id > 0) && (is_user_connected(id))) {
  545.         new iStats[8], iHits[8]
  546.         static szTeam[16], szName[32], szAuthid[32], szWeapon[24]
  547.         new iUserid = get_user_userid(id)
  548.         new _max = xmod_get_maxweapons()
  549.    
  550.         get_user_team(id, szTeam, 15)
  551.         get_user_name(id, szName, 31)
  552.         get_user_authid(id, szAuthid, 31)
  553.  
  554.         for (new i = 1; i < _max; ++i) {
  555.             if (get_user_wstats(id, i, iStats, iHits)) {
  556.                 xmod_get_wpnname(i, szWeapon, 23)
  557.            
  558.                 log_message("^"%s<%d><%s><%s>^" triggered ^"weaponstats^" (weapon ^"%s^") (shots ^"%d^") (hits ^"%d^") (kills ^"%d^") (headshots ^"%d^") (tks ^"%d^") (damage ^"%d^") (deaths ^"%d^")",
  559.                             szName, iUserid, szAuthid, szTeam, szWeapon, iStats[4], iStats[5], iStats[0], iStats[2], iStats[3], iStats[6], iStats[1])
  560.                 log_message("^"%s<%d><%s><%s>^" triggered ^"weaponstats2^" (weapon ^"%s^") (head ^"%d^") (chest ^"%d^") (stomach ^"%d^") (leftarm ^"%d^") (rightarm ^"%d^") (leftleg ^"%d^") (rightleg ^"%d^")",
  561.                             szName, iUserid, szAuthid, szTeam, szWeapon, iHits[1], iHits[2], iHits[3], iHits[4], iHits[5], iHits[6], iHits[7])
  562.             }
  563.         }
  564.         Death[id] = true//fix
  565.         //reset_user_wstats(id)
  566.     }
  567. }
  568.  
  569.  
  570. stock ExplodeString( Output[][], Max, Size, Input[], Delimiter )
  571. {
  572.     new Idx, l = strlen(Input), Len;
  573.     do Len += (1 + copyc( Output[Idx], Size, Input[Len], Delimiter ));
  574.     while( (Len < l) && (++Idx < Max) )
  575.     return Idx;
  576. }
  577.  
  578. psay (client_id[], is_colored, client_message[192])
  579. {
  580.     new client = str_to_num(client_id)
  581.  
  582.     if (client > 0) {
  583.         new Players[32]
  584.         new player_count, temp_player_index, player_index
  585.         get_players(Players, player_count, "ch")
  586.         for (temp_player_index = 0; temp_player_index < player_count; temp_player_index++) {
  587.             new player = Players[temp_player_index]
  588.             new temp_user_id = get_user_userid(player)
  589.             if (temp_user_id == client) {
  590.                player_index = player
  591.                break
  592.             }
  593.         }
  594.        
  595.         if ((player_index > 0) && (!is_user_bot(player_index)) && (is_user_connected(player_index))) {
  596.             new color_index = player_index
  597.  
  598.             static display_message[192]
  599.             if (is_colored > 0) {
  600.                 if (is_message_cached(client_message) > 0) {
  601.                     client_message = parsed_message_cache
  602.                     color_index = cached_color_index
  603.                 } else {
  604.                     static client_message_backup[192]
  605.                     copy(client_message_backup, 191, client_message)
  606.                    
  607.                     new player_color_index = color_all_players(client_message)
  608.                     if (player_color_index > -1) {
  609.                         color_index = player_color_index
  610.                     } else {
  611.                         validate_team_colors()
  612.                         color_index = color_team_entities(client_message)
  613.                     }
  614.                     color_entities(client_message)
  615.                     add_message_cache(client_message_backup, client_message, color_index)
  616.                 }
  617.  
  618.             }
  619.  
  620.             static message_prefix[64]
  621.             get_pcvar_string(g_hlx_message_prefix, message_prefix, 64)
  622.             if (strcmp(message_prefix, "") == 0) {
  623.                 display_message[0] = 0x01
  624.                 format(display_message[1], 191, "%s", client_message)
  625.             } else {
  626.                 display_message[0] = 0x04
  627.                 format(display_message[1], 191, "%s", message_prefix)
  628.                 display_message[strlen(message_prefix) + 1] = 0x01
  629.                 format(display_message[strlen(message_prefix) + 2], 192 - (strlen(message_prefix) + 2), " %s", client_message)
  630.             }
  631.  
  632.             new player_team = get_user_team(player_index)
  633.             new color_team = -1
  634.             if (is_user_connected(color_index)) {
  635.                 color_team = get_user_team(color_index)
  636.             }
  637.            
  638.             if ((player_team != color_team) && (color_team > -1)) {
  639.                 message_begin(MSG_ONE, g_msgTeamInfo, {0,0,0}, player_index)
  640.                 write_byte(player_index)
  641.                 write_string(TeamNames[color_team])
  642.                 message_end()
  643.             }
  644.  
  645.             message_begin(MSG_ONE, g_msgSayText, {0,0,0}, player_index)
  646.             if (is_user_connected(color_index)) {
  647.                 write_byte(color_index)
  648.             } else {
  649.                 write_byte(player_index)
  650.             }
  651.             write_string(display_message)
  652.             message_end()
  653.  
  654.             if ((player_team != color_team) && (color_team > -1)) {
  655.                 message_begin(MSG_ONE, g_msgTeamInfo, {0,0,0}, player_index)
  656.                 write_byte(player_index)
  657.                 write_string(TeamNames[player_team])
  658.                 message_end()
  659.             }
  660.  
  661.         }  
  662.     }
  663. }
  664.  
  665. public hlx_amx_bulkpsay(id, level, cid)
  666. {
  667.     new argument_count = read_argc()
  668.     if (argument_count < 3) {
  669.         return PLUGIN_HANDLED
  670.     }
  671.  
  672.     new client_id_list[48]
  673.     read_argv(1, client_id_list, 47)
  674.     new client_ids[8][6];
  675.     ExplodeString(client_ids, 7, 5, client_id_list, ',');
  676.  
  677.     static colored_param[32]
  678.     read_argv(2, colored_param, 31)
  679.     new is_colored = 0
  680.     new ignore_param = 0
  681.     if (strcmp(colored_param, "1") == 0) {
  682.         is_colored = 1
  683.         ignore_param = 1
  684.     }
  685.     if (strcmp(colored_param, "0") == 0) {
  686.         ignore_param = 1
  687.     }
  688.  
  689.     new client_message[192]
  690.     for(new i = (1 + ignore_param); i < argument_count; i++) {
  691.         static temp_argument[192]
  692.         read_argv(i + 1, temp_argument, 191)
  693.         if (i > (1 + ignore_param)) {
  694.             if ((191 - strlen(client_message)) > strlen(temp_argument)) {
  695.                 if ((temp_argument[0] == 41) || (temp_argument[0] == 125)) {
  696.                     copy(client_message[strlen(client_message)], 191, temp_argument)
  697.                 } else if ((strlen(client_message) > 0) && (client_message[strlen(client_message)-1] != 40) && (client_message[strlen(client_message)-1] != 123) && (client_message[strlen(client_message)-1] != 58) && (client_message[strlen(client_message)-1] != 39) && (client_message[strlen(client_message)-1] != 44)) {
  698.                     if ((strcmp(temp_argument, ":") != 0) && (strcmp(temp_argument, ",") != 0) && (strcmp(temp_argument, "'") != 0)) {
  699.                         client_message[strlen(client_message)] = 32
  700.                     }
  701.                     copy(client_message[strlen(client_message)], 191, temp_argument)
  702.                 } else {
  703.                     copy(client_message[strlen(client_message)], 191, temp_argument)
  704.                 }
  705.             }
  706.         } else {
  707.             if ((192 - strlen(client_message)) > strlen(temp_argument)) {
  708.                 copy(client_message[strlen(client_message)], 191, temp_argument)
  709.             }
  710.         }
  711.     }
  712.    
  713.     for (new i = 0; i < 8; i++)
  714.     {
  715.         psay(client_ids[i], is_colored, client_message);
  716.     }
  717.    
  718.     return PLUGIN_HANDLED
  719. }
  720.  
  721. public hlx_amx_psay(id, level, cid)
  722. {
  723.     new argument_count = read_argc()
  724.     if (argument_count < 3) {
  725.         return PLUGIN_HANDLED
  726.     }
  727.  
  728.     static client_id[32]
  729.     read_argv(1, client_id, 31)
  730.     copy(client_id, 30, client_id[1])
  731.  
  732.     static colored_param[32]
  733.     read_argv(2, colored_param, 31)
  734.     new is_colored = 0
  735.     new ignore_param = 0
  736.     if (strcmp(colored_param, "1") == 0) {
  737.         is_colored = 1
  738.         ignore_param = 1
  739.     }
  740.     if (strcmp(colored_param, "0") == 0) {
  741.         ignore_param = 1
  742.     }
  743.  
  744.     new client_message[192]
  745.     for(new i = (1 + ignore_param); i < argument_count; i++) {
  746.         static temp_argument[192]
  747.         read_argv(i + 1, temp_argument, 191)
  748.         if (i > (1 + ignore_param)) {
  749.             if ((191 - strlen(client_message)) > strlen(temp_argument)) {
  750.                 if ((temp_argument[0] == 41) || (temp_argument[0] == 125)) {
  751.                     copy(client_message[strlen(client_message)], 191, temp_argument)
  752.                 } else if ((strlen(client_message) > 0) && (client_message[strlen(client_message)-1] != 40) && (client_message[strlen(client_message)-1] != 123) && (client_message[strlen(client_message)-1] != 58) && (client_message[strlen(client_message)-1] != 39) && (client_message[strlen(client_message)-1] != 44)) {
  753.                     if ((strcmp(temp_argument, ":") != 0) && (strcmp(temp_argument, ",") != 0) && (strcmp(temp_argument, "'") != 0)) {
  754.                         client_message[strlen(client_message)] = 32
  755.                     }
  756.                     copy(client_message[strlen(client_message)], 191, temp_argument)
  757.                 } else {
  758.                     copy(client_message[strlen(client_message)], 191, temp_argument)
  759.                 }
  760.             }
  761.         } else {
  762.             if ((192 - strlen(client_message)) > strlen(temp_argument)) {
  763.                 copy(client_message[strlen(client_message)], 191, temp_argument)
  764.             }
  765.         }
  766.     }
  767.    
  768.     psay(client_id, is_colored, client_message)
  769.    
  770.     return PLUGIN_HANDLED
  771. }
  772.  
  773.  
  774. public hlx_amx_psay2(id, level, cid)
  775. {
  776.     new argument_count = read_argc()
  777.     if (argument_count < 3) {
  778.         return PLUGIN_HANDLED
  779.     }
  780.  
  781.     static client_id[32]
  782.     read_argv(1, client_id, 31)
  783.     copy(client_id, 30, client_id[1])
  784.  
  785.     static colored_param[32]
  786.     read_argv(2, colored_param, 31)
  787.     new ignore_param = 0
  788.     if (strcmp(colored_param, "1") == 0) {
  789.         ignore_param = 1
  790.     }
  791.     if (strcmp(colored_param, "0") == 0) {
  792.         ignore_param = 1
  793.     }
  794.  
  795.     new client_message[192]
  796.     for(new i = (1 + ignore_param); i < argument_count; i++) {
  797.         static temp_argument[192]
  798.         read_argv(i + 1, temp_argument, 191)
  799.         if (i > (1 + ignore_param)) {
  800.             if ((191 - strlen(client_message)) > strlen(temp_argument)) {
  801.                 if ((temp_argument[0] == 41) || (temp_argument[0] == 125)) {
  802.                     copy(client_message[strlen(client_message)], 191, temp_argument)
  803.                 } else if ((strlen(client_message) > 0) && (client_message[strlen(client_message)-1] != 40) && (client_message[strlen(client_message)-1] != 123) && (client_message[strlen(client_message)-1] != 58) && (client_message[strlen(client_message)-1] != 39) && (client_message[strlen(client_message)-1] != 44)) {
  804.                     if ((strcmp(temp_argument, ":") != 0) && (strcmp(temp_argument, ",") != 0) && (strcmp(temp_argument, "'") != 0)) {
  805.                         client_message[strlen(client_message)] = 32
  806.                     }
  807.                     copy(client_message[strlen(client_message)], 191, temp_argument)
  808.                 } else {
  809.                     copy(client_message[strlen(client_message)], 191, temp_argument)
  810.                 }
  811.             }
  812.         } else {
  813.             if ((192 - strlen(client_message)) > strlen(temp_argument)) {
  814.                 copy(client_message[strlen(client_message)], 191, temp_argument)
  815.             }
  816.         }
  817.     }
  818.    
  819.     new client = str_to_num(client_id)
  820.  
  821.     if (client > 0) {
  822.         new Players[32]
  823.         new player_count, temp_player_index, player_index
  824.         get_players(Players, player_count, "ch")
  825.         for (temp_player_index = 0; temp_player_index < player_count; temp_player_index++) {
  826.             new player = Players[temp_player_index]
  827.             new temp_user_id = get_user_userid(player)
  828.             if (temp_user_id == client) {
  829.                player_index = player
  830.                break
  831.             }
  832.         }
  833.        
  834.         if ((player_index > 0) && (!is_user_bot(player_index)) && (is_user_connected(player_index))) {
  835.             new color_index = player_index
  836.  
  837.             static display_message[192]
  838.  
  839.             static message_prefix[64]
  840.             get_pcvar_string(g_hlx_message_prefix, message_prefix, 64)
  841.             if (strcmp(message_prefix, "") == 0) {
  842.                 display_message[0] = 0x04
  843.                 format(display_message[1], 191, "%s", client_message)
  844.             } else {
  845.                 display_message[0] = 0x04
  846.                 format(display_message[1], 191, "%s: %s", message_prefix, client_message)
  847.             }
  848.  
  849.             message_begin(MSG_ONE, g_msgSayText, {0,0,0}, player_index)
  850.             write_byte(color_index)
  851.             write_string(display_message)
  852.             message_end()
  853.         }  
  854.     }
  855.    
  856.     return PLUGIN_HANDLED
  857. }
  858.  
  859.  
  860. public hlx_amx_say(id, level, cid)
  861. {
  862.     if (!cmd_access(id, level, cid, 2))
  863.         return PLUGIN_HANDLED
  864.    
  865.     static message[192]
  866.     read_args(message, 191)
  867.     remove_quotes(message)
  868.  
  869.     static message_prefix[64]
  870.     get_pcvar_string(g_hlx_message_prefix, message_prefix, 64)
  871.     if (strcmp(message_prefix, "") == 0) {
  872.         client_print(0, print_chat, "%s", message)
  873.     } else {
  874.         client_print(0, print_chat, "%s %s", message_prefix, message)
  875.     }
  876.  
  877.     return PLUGIN_HANDLED
  878. }
  879.  
  880.  
  881. public hlx_amx_csay(id, level, cid)
  882. {
  883.     if (!cmd_access(id, level, cid, 2))
  884.         return PLUGIN_HANDLED
  885.    
  886.     static message[192]
  887.     read_args(message, 191)
  888.     remove_quotes(message)
  889.    
  890.     new color3[0][] = {255, 255, 255}
  891.     new Float:verpos = 0.3
  892.    
  893.     set_hudmessage(color3[0][0], color3[0][1], color3[0][2], -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)
  894.     show_hudmessage(0, "%s", message)
  895.  
  896.     return PLUGIN_HANDLED
  897. }
  898.  
  899.  
  900. public hlx_amx_hint(id, level, cid)
  901. {
  902.     if (!cmd_access(id, level, cid, 2))
  903.         return PLUGIN_HANDLED
  904.  
  905.     new argument_count = read_argc()
  906.  
  907.     static client_id[32]
  908.     read_argv(1, client_id, 31)
  909.     copy(client_id, 30, client_id[1])
  910.  
  911.     new client_message[192]
  912.     for(new i = 1; i < argument_count; i++) {
  913.         static temp_argument[192]
  914.         read_argv(i + 1, temp_argument, 191)
  915.         if (i > 1) {
  916.             if ((191 - strlen(client_message)) > strlen(temp_argument)) {
  917.                 if ((temp_argument[0] == 41) || (temp_argument[0] == 125)) {
  918.                     copy(client_message[strlen(client_message)], 191, temp_argument)
  919.                 } else if ((strlen(client_message) > 0) && (client_message[strlen(client_message)-1] != 40) && (client_message[strlen(client_message)-1] != 123) && (client_message[strlen(client_message)-1] != 58) && (client_message[strlen(client_message)-1] != 39) && (client_message[strlen(client_message)-1] != 44)) {
  920.                     if ((strcmp(temp_argument, ":") != 0) && (strcmp(temp_argument, ",") != 0) && (strcmp(temp_argument, "'") != 0)) {
  921.                         client_message[strlen(client_message)] = 32
  922.                     }
  923.                     copy(client_message[strlen(client_message)], 191, temp_argument)
  924.                 } else {
  925.                     copy(client_message[strlen(client_message)], 191, temp_argument)
  926.                 }
  927.             }
  928.         } else {
  929.             if ((192 - strlen(client_message)) > strlen(temp_argument)) {
  930.                 copy(client_message[strlen(client_message)], 191, temp_argument)
  931.             }
  932.         }
  933.     }
  934.    
  935.     new client = str_to_num(client_id)
  936.  
  937.     if (client > 0) {
  938.         new Players[32]
  939.         new player_count, temp_player_index, player_index
  940.         get_players(Players, player_count, "ch")
  941.         for (temp_player_index = 0; temp_player_index < player_count; temp_player_index++) {
  942.             new player = Players[temp_player_index]
  943.             new temp_user_id = get_user_userid(player)
  944.             if (temp_user_id == client) {
  945.                player_index = player
  946.                break
  947.             }
  948.         }
  949.        
  950.         if ((player_index > 0) && (!is_user_bot(player_index)) && (is_user_connected(player_index))) {
  951.             new color3[0][] = {255, 128, 0}
  952.             new Float:verpos = 0.80
  953.    
  954.             set_hudmessage(color3[0][0], color3[0][1], color3[0][2], -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)
  955.             show_hudmessage(player_index, "%s", client_message)
  956.         }  
  957.     }
  958.    
  959.     return PLUGIN_HANDLED
  960. }
  961.  
  962.  
  963. public hlx_amx_msay(id, level, cid)
  964. {
  965.     if (!cmd_access(id, level, cid, 3)) {
  966.         return PLUGIN_HANDLED
  967.     }
  968.  
  969.     static delay[8]
  970.     read_argv(1, delay, 7)
  971.     remove_quotes(delay)
  972.  
  973.     static name[32]
  974.     read_argv(2, name, 31)
  975.     copy(name, 30, name[1])
  976.     new raw_user_id = str_to_num(name)
  977.  
  978.     static handler_param[32]
  979.     read_argv(3, handler_param, 31)
  980.     new ignore_param = 0
  981.     new need_handler = 0
  982.     if (strcmp(handler_param, "1") == 0) {
  983.         need_handler = 1
  984.         ignore_param = 1
  985.     }
  986.     if (strcmp(handler_param, "0") == 0) {
  987.         need_handler = 0
  988.         ignore_param = 1
  989.     }
  990.    
  991.     static message[1024]
  992.     new userid
  993.     new Players[32]
  994.     new player_count, player_index
  995.     get_players(Players, player_count, "ch")
  996.     for (player_index = 0; player_index < player_count; player_index++) {
  997.         new player = Players[player_index]
  998.         new temp_user_id = get_user_userid(player)
  999.         if (temp_user_id == raw_user_id) {
  1000.            userid = player
  1001.            break
  1002.         }
  1003.     }
  1004.  
  1005.     read_args(message, 1023)
  1006.    
  1007.     new find_pattern[] = "#"
  1008.     new find_pos = strfind(message, find_pattern)
  1009.     new text_pos = find_pos + strlen(name) + 2
  1010.     if (ignore_param == 1) {
  1011.         text_pos += 3
  1012.     }
  1013.    
  1014.     static menu_text[1024]
  1015.     copy(menu_text, 1023, message[text_pos])
  1016.     remove_quotes(menu_text)
  1017.    
  1018.     new menu_display[1024]
  1019.  
  1020.     new i, start = 0
  1021.     new nLen = 0
  1022.     new buffer[1024]
  1023.  
  1024.     for(i = 0; i < strlen(menu_text); i++) {
  1025.         if (i > 0) {
  1026.             if ((menu_text[i-1] == '\') && (menu_text[i] == 'n')) {
  1027.                 buffer = ""
  1028.                 copy(buffer, (i - start)-1 , menu_text[start])
  1029.                 nLen += format(menu_display[nLen], (1023 - nLen), "%s^n", buffer)
  1030.                 i += 1
  1031.                 start = i
  1032.             }  
  1033.         }
  1034.     }
  1035.  
  1036.     if ((userid > 0) && (!is_user_bot(userid)) && (is_user_connected(userid))) {
  1037.         if (need_handler == 0) {
  1038.             show_menu(userid, display_menu_keys, menu_display, 15)
  1039.         } else {
  1040.             show_menu(userid, display_menu_keys, menu_display, 15, "Display Menu")
  1041.         }
  1042.     }
  1043.    
  1044.     return PLUGIN_HANDLED
  1045.  
  1046. }
  1047.  
  1048.  
  1049. public handle_internal_menu(id, key)
  1050. {
  1051.     new client = id
  1052.     if (is_user_connected(client)) {
  1053.         if (key < 9) {
  1054.             static player_event[192]
  1055.             new slot = key
  1056.             slot++
  1057.             num_to_str(slot, player_event, 192)
  1058.             log_player_event(client, "selected", player_event, 0)
  1059.         } else {
  1060.             new player_event[192] = "cancel"
  1061.             log_player_event(client, "selected", player_event, 0)
  1062.         }
  1063.     }
  1064. }
  1065.  
  1066.  
  1067. public hlx_amx_browse(id, level, cid)
  1068. {
  1069.     if (!cmd_access(id, level, cid, 2))
  1070.         return PLUGIN_HANDLED
  1071.  
  1072.     static name[32]
  1073.     read_argv(1, name, 31)
  1074.     copy(name, 30, name[1])
  1075.     new raw_user_id = str_to_num(name)
  1076.    
  1077.     static message[1024]
  1078.     new userid
  1079.     new Players[32]
  1080.     new player_count, player_index
  1081.     get_players(Players, player_count, "ch")
  1082.     for (player_index = 0; player_index < player_count; player_index++) {
  1083.         new player = Players[player_index]
  1084.         new temp_user_id = get_user_userid(player)
  1085.         if (temp_user_id == raw_user_id) {
  1086.            userid = player
  1087.            break
  1088.         }
  1089.     }
  1090.  
  1091.     read_args(message, 1023)
  1092.    
  1093.     new find_pattern[] = "#"
  1094.     new find_pos = strfind(message, find_pattern)
  1095.    
  1096.     static url[1024]
  1097.     copy(url, 1023, message[find_pos + strlen(name) + 2])
  1098.     remove_quotes(url)
  1099.  
  1100.     if ((userid > 0) && (!is_user_bot(userid)) && (is_user_connected(userid))) {
  1101.         show_motd(userid, url, "HLstatsX CE")
  1102.     }
  1103.    
  1104.     return PLUGIN_HANDLED
  1105. }
  1106.  
  1107.  
  1108. public hlx_amx_swap(id, level, cid)
  1109. {
  1110.     if (!cmd_access(id, level, cid, 1))
  1111.         return PLUGIN_HANDLED
  1112.  
  1113.     static client_id[32]
  1114.     read_argv(1, client_id, 31)
  1115.     copy(client_id, 30, client_id[1])
  1116.     new client = str_to_num(client_id)
  1117.    
  1118.     if (client > 0) {
  1119.         new userid = 0
  1120.         new Players[32]
  1121.         new player_count, player_index
  1122.         get_players(Players, player_count, "h")
  1123.         for (player_index = 0; player_index < player_count; player_index++) {
  1124.             new player = Players[player_index]
  1125.             new temp_user_id = get_user_userid(player)
  1126.             if (temp_user_id == client) {
  1127.                userid = player
  1128.                break
  1129.             }
  1130.         }
  1131.  
  1132.         static player_team[32]
  1133.         get_user_team(userid, player_team, 31)
  1134.        
  1135.         if ((userid > 0) && (is_user_connected(userid))) {
  1136.    
  1137.             if (strcmp(player_team, "TERRORIST") == 0) {
  1138.                 cs_set_user_team(userid, CS_TEAM_CT)
  1139.                 cs_reset_user_model(userid)
  1140.  
  1141.                 if ((ct_player_color == -1) || (userid == ct_player_color)) {
  1142.                     ct_player_color = -1
  1143.                     clear_message_cache()
  1144.                 } else if ((ts_player_color == -1) || (userid == ts_player_color)) {
  1145.                     ts_player_color = -1
  1146.                     clear_message_cache()
  1147.                 }
  1148.             } else if (strcmp(player_team, "CT") == 0) {
  1149.                 cs_set_user_team(userid, CS_TEAM_T)
  1150.                 cs_reset_user_model(userid)
  1151.  
  1152.                 if ((ct_player_color == -1) || (userid == ct_player_color)) {
  1153.                     ct_player_color = -1
  1154.                     clear_message_cache()
  1155.                 } else if ((ts_player_color == -1) || (userid == ts_player_color)) {
  1156.                     ts_player_color = -1
  1157.                     clear_message_cache()
  1158.                 }
  1159.             }
  1160.         }
  1161.     }
  1162.     return PLUGIN_HANDLED
  1163. }
  1164.  
  1165.  
  1166. stock make_player_command(client, player_command[192])
  1167. {
  1168.     if (client > 0) {
  1169.         log_player_event(client, "say", player_command, 0)
  1170.     }
  1171. }
  1172.  
  1173.  
  1174. public display_menu(menu, id)
  1175. {
  1176.     menu_display(id, menu, 0)
  1177. }
  1178.  
  1179.  
  1180. public display_mainmenu(id)
  1181. {
  1182.     display_menu(g_HLstatsX_MainMenu, id)
  1183.     return PLUGIN_HANDLED
  1184. }
  1185.  
  1186.  
  1187. public display_automenu(id)
  1188. {
  1189.     display_menu(g_HLstatsX_AutoMenu, id)
  1190.     return PLUGIN_HANDLED
  1191. }
  1192.  
  1193.  
  1194. public display_eventsmenu(id)
  1195. {
  1196.     display_menu(g_HLstatsX_EventsMenu, id)
  1197.     return PLUGIN_HANDLED
  1198. }
  1199.  
  1200.  
  1201. public mainmenu_handle(id, menu, item)
  1202. {
  1203.     if (item < 0) {
  1204.         return PLUGIN_CONTINUE
  1205.     }
  1206.  
  1207.     static command[16], name[64]
  1208.     new access, callback
  1209.     menu_item_getinfo(menu, item, access, command, 15, name, 63, callback)
  1210.  
  1211.     new choice = str_to_num(command)
  1212.     switch (choice) {
  1213.         case 1 :
  1214.             make_player_command(id, "/rank")
  1215.         case 2 :
  1216.             make_player_command(id, "/next")
  1217.         case 3 :
  1218.             make_player_command(id, "/top10")
  1219.         case 4 :
  1220.             make_player_command(id, "/clans")
  1221.         case 5 :
  1222.             make_player_command(id, "/status")
  1223.         case 6 :
  1224.             make_player_command(id, "/statsme")
  1225.         case 7 :
  1226.             display_automenu(id)
  1227.         case 8 :
  1228.             display_eventsmenu(id)
  1229.         case 9 :
  1230.             make_player_command(id, "/weapons")
  1231.         case 10 :
  1232.             make_player_command(id, "/accuracy")
  1233.         case 11 :
  1234.             make_player_command(id, "/targets")
  1235.         case 12 :
  1236.             make_player_command(id, "/kills")
  1237.         case 13 :
  1238.             make_player_command(id, "/hlx_hideranking")
  1239.         case 14 :
  1240.             make_player_command(id, "/cheaters")
  1241.         case 15 :
  1242.             make_player_command(id, "/help")
  1243.     }
  1244.  
  1245.     return PLUGIN_HANDLED
  1246. }
  1247.  
  1248.  
  1249. public automenu_handle(id, menu, item)
  1250. {
  1251.     if (item < 0) {
  1252.         return PLUGIN_CONTINUE
  1253.     }
  1254.  
  1255.     static command[16], name[64]
  1256.     new access, callback
  1257.     menu_item_getinfo(menu, item, access, command, 15, name, 63, callback)
  1258.  
  1259.     new choice = str_to_num(command)
  1260.     switch (choice) {
  1261.         case 1 :
  1262.             make_player_command(id, "/hlx_auto start rank")
  1263.         case 2 :
  1264.             make_player_command(id, "/hlx_auto end rank")
  1265.         case 3 :
  1266.             make_player_command(id, "/hlx_auto kill rank")
  1267.         case 4 :
  1268.             make_player_command(id, "/hlx_auto clear")
  1269.     }
  1270.  
  1271.     return PLUGIN_HANDLED
  1272. }
  1273.  
  1274.  
  1275. public eventsmenu_handle(id, menu, item)
  1276. {
  1277.     if (item < 0) {
  1278.         return PLUGIN_CONTINUE
  1279.     }
  1280.  
  1281.     static command[16], name[64]
  1282.     new access, callback
  1283.     menu_item_getinfo(menu, item, access, command, 15, name, 63, callback)
  1284.  
  1285.     new choice = str_to_num(command)
  1286.     switch (choice) {
  1287.         case 1 :
  1288.             make_player_command(id, "/hlx_display 1")
  1289.         case 2 :
  1290.             make_player_command(id, "/hlx_display 0")
  1291.         case 3 :
  1292.             make_player_command(id, "/hlx_chat 1")
  1293.         case 4 :
  1294.             make_player_command(id, "/hlx_chat 0")
  1295.     }
  1296.  
  1297.     return PLUGIN_HANDLED
  1298. }
  1299.  
  1300.  
  1301. stock is_command_blocked(command[192])
  1302. {
  1303.     new command_blocked = 0
  1304.     new command_index = 0
  1305.     while ((command_blocked == 0) && (command_index < sizeof(blocked_commands))) {
  1306.         if (strcmp(command, blocked_commands[command_index]) == 0) {
  1307.             command_blocked++
  1308.         }
  1309.         command_index++
  1310.     }
  1311.     if (command_blocked > 0) {
  1312.         return 1
  1313.     }
  1314.     return 0
  1315. }
  1316.  
  1317. public StartRound(){//fix
  1318.  
  1319.     new MaxPlayers
  1320.    
  1321.     MaxPlayers = get_maxplayers()
  1322.     for (new id=1; id<=MaxPlayers; id++){
  1323.         if(Death[id] && (is_user_connected(id))){      
  1324.             reset_user_wstats(id);
  1325.             Death[id] = false
  1326.         }
  1327.     }
  1328. }
  1329.    
  1330.  
  1331. public hlx_block_commands(client)
  1332. {
  1333.     if (client) {
  1334.         if (client == 0) {
  1335.             return PLUGIN_CONTINUE
  1336.         }
  1337.        
  1338.         new block_chat_commands = get_pcvar_num(g_hlx_block_commands)
  1339.        
  1340.         static user_command[192]
  1341.         read_args(user_command, 192)
  1342.         static origin_command[192]
  1343.        
  1344.         new start_index = 0
  1345.         new command_length = strlen(user_command)
  1346.         if (command_length > 0) {
  1347.             if (user_command[start_index] == 34)    {
  1348.                 start_index = start_index + 1
  1349.                 if (user_command[command_length - 1] == 34) {
  1350.                     user_command[command_length - 1] = 0
  1351.                 }
  1352.             }
  1353.        
  1354.             if (user_command[start_index] == 47)    {
  1355.                 start_index++
  1356.             }
  1357.  
  1358.             copy(origin_command, 192, user_command[start_index])
  1359.         }
  1360.        
  1361.         if (command_length > 0) {
  1362.             if (block_chat_commands > 0) {
  1363.  
  1364.                 new command_type[32] = "say"
  1365.                 new command_blocked = is_command_blocked(origin_command)
  1366.                
  1367.                 if (command_blocked > 0) {
  1368.  
  1369.                     if (is_user_connected(client)) {
  1370.                         if ((strcmp("hlx_menu", user_command[start_index]) == 0) ||
  1371.                             (strcmp("hlx", user_command[start_index]) == 0) ||
  1372.                             (strcmp("hlstatsx", user_command[start_index]) == 0)) {
  1373.  
  1374.                             display_mainmenu(client)
  1375.                         }
  1376.                         log_player_event(client, command_type, origin_command, 0)
  1377.                     }
  1378.                     return PLUGIN_HANDLED
  1379.                 }
  1380.             } else {
  1381.                 if (is_user_connected(client)) {
  1382.                     if ((strcmp("hlx_menu", user_command[start_index]) == 0) ||
  1383.                         (strcmp("hlx", user_command[start_index]) == 0) ||
  1384.                         (strcmp("hlstatsx", user_command[start_index]) == 0)) {
  1385.                         display_mainmenu(client)
  1386.                     }
  1387.                 }
  1388.                 return PLUGIN_CONTINUE
  1389.             }
  1390.         }
  1391.     }
  1392.  
  1393.     return PLUGIN_CONTINUE
  1394. }
Add Comment
Please, Sign In to add comment