//***********************************************************// // 4HM's Gun Game MOD // // v3.1.1.0 LAN // // // // Thank you Mattie for your help in optimizing the code!!! // // // // http://mattie.info/cs/ // // http://www.4hm.net // // http://www.4honor.net // // http://cage.pastebin.ca // //***********************************************************// block config { // ############################################## // This is the only block you should ever edit // UNLESS YOU KNOW WHAT YOU ARE DOING!! // ############################################### //************************************************************ // Weapon List // Your choices are: // glock // usp // p228 // deagle // fiveseven // elite // m3 // xm1014 // tmp // mac10 // mp5navy // ump45 // p90 // p90 // famas // ak47 // scout // m4a1 // sg550 // g3sg1 // awp // sg552 // aug // m249 // hegrenade // knife // Pick which ones you want and put them in order with level 1 being first in the list then level 2, etc. // You can repeat weapons if you like. // Separate each weapon with a comma ',' NO SPACES!! es_xsetinfo gg_weapon_order "glock,usp,p228,deagle,fiveseven,elite,m3,xm1014,tmp,mac10,mp5navy,ump45,p90,galil,famas,ak47,scout,m4a1,sg552,aug,m249,hegrenade,knife" //************************************************************ // Gun Game join message, popup giving players instructions on how to play // 1=on, 0=off es_xsetinfo gg_join_msg 1 //************************************************************ // Worldspawn deaths (falling) count as suicides 0=no, 1=yes es_xsetinfo worldspawn_suicide 1 //************************************************************ // Give level for planting/defusing 0=no, 1=yes es_xsetinfo bomb_defuse_lvl 1 //************************************************************ // Turn GG handicap 0=off, 1=on // Gives joining players the avg level of all other players when they join late. // If you're in the top5, you do not get this handicap even if it is turned on. es_xsetinfo gg_handicap_on 1 // GG Top 5 handicap 0=off, 1=on // Allow players in the Top 5 to receive a handicap with the rest of the players. // Handicap must also be turned on above for this to work. es_xsetinfo gg_top5_handicap 0 //************************************************************ // Set max levels allowed per round // Server default is 3, so players cannot get more than 3 levels in one round. es_xsetinfo gg_max_lvl 3 //************************************************************ // Turn Knife Pro level stealing on/off es_xsetinfo gg_knife_pro 0 //************************************************************ // Turn Turbo Mode on/off // This gives you your next weapon immediately when you levelup // This also overrides max levels per round and removes the level restriction. es_xsetinfo gg_turbo 0 //************************************************************ // Warmup timer 0=off, x=number of seconds to warmup before restart // This is recommended to allow all clients to connect before the game starts. es_xsetinfo gg_warmup_timer_setting 30 //************************************************************ // Additional weapons for players on nade level // 1=on, 0=off // // This gives a glock with 50 bullets es_xsetinfo gg_nade_glock 0 // // This gives a smokegrenade es_xsetinfo gg_nade_smoke 0 // // This gives a flashbang es_xsetinfo gg_nade_flash 0 //************************************************************ // Used to start random votemap when someone reaches knife level 1=on, 0=off // This requires Mani's Admin Plugin to work es_xsetinfo gg_vote_setting 0 //************************************************************ // Gun Game map presets // It is recommended that you leave these settings alone, especially winlimit and chattime. alias gg_map_setup "es mp_timelimit 45; es mp_winlimit 0; es sv_alltalk 0; es mp_chattime 10; es mp_c4timer 25" //************************************************************ // Sound files // Put the exact file name here preceded with "gungame/" Make sure there are no spaces in it. // Rename the file if you have to remove any spaces in the name. // Make sure you put the filenames in your mani downloads.txt file, also. // Put your sounds in the cstrike/sound/gungame directory es_xsetinfo gg_sound_levelup "gungame/smb3_powerup.wav" es_xsetinfo gg_sound_leveldown "gungame/smb3_powerdown.wav" // // The triple level sound must be exactly 10 seconds long to work correctly with the Gun Game code es_xsetinfo gg_sound_triple "gungame/smb_star.mp3" // // default winner sound is "music/HL2_song15.mp3" es_xsetinfo gg_sound_winner "music/HL2_song15.mp3" // // ##### END OF CONFIG BLOCK ##### // } //######################################### // DO NOT EDIT ANYTHING BELOW THIS LINE!!! //######################################### block load { // Load config es_xdoblock gungame3lan/config // Setup Gun Game dir for databases es_xsetinfo gg_dir "|gungame3" // Create console commands for admins es_regcmd gg_setlevel gungame3lan/gg_set_level "gg_setlevel " es_regcmd gg_reset gungame3lan/gg_reset_scores "Resets all player records for the Gun Game and restarts the current map" // Create weapon list es_xsetinfo gg_tmp_weapon 0 es_xsetinfo gg_levels 0 es_token gg_levels server_var(gg_weapon_order) 0 , es_xkeygroupdelete gg_weapons es_xkeygroupcreate gg_weapons es_xsetinfo gg_level_counter 1 if (server_var(gg_levels) > 0) then es_xdoblock gungame3lan/create_weapon_list // Dynamic level total - 1 es_setinfo gg_level_dynamic server_var(gg_levels) es_xmath gg_level_dynamic - 1 // Public cvar announcing server runs Gun Game es_xsetinfo eventscripts_gg "v3.1.1.0 LAN" es_makepublic eventscripts_gg // gg_winners open flag es_xsetinfo win_db_open 0 es_xsetinfo read_write 0 // Level variables // used to calc current leader es_xsetinfo ldr_level 0 // This variable allows only one winner if 2 people on knife level get their kill es_xsetinfo gg_one_winner 0 // afk database es_xkeygroupdelete afk_db es_xkeygroupcreate afk_db // level db for reconnecting players es_xkeygroupdelete lvl_db es_xkeygroupcreate lvl_db // gg_players database es_xkeygroupdelete gg_players es_xkeygroupcreate gg_players // gg_top5 database es_xkeygroupdelete gg_top5 es_xkeygroupcreate gg_top5 es_keygroupload gg_top5 server_var(gg_dir) es_xsetinfo top5_check 0 es_xsetinfo top5_counter 1 es_xkeygetvalue top5_check gg_top5 5 steam if (server_var(top5_check) == 0) then es_xdoblock gungame3lan/create_top5 // Add players already playing to the databases es_createplayerlist gg_player_list es_foreachkey key_x in gg_player_list "es_xdoblock gungame3lan/player_setup_in_progress" // generate ammo clip info es_xkeydelete gg_ammo_props es_xkeydelete gg_ammo_count es_xkeycreate gg_ammo_props es_xkeycreate gg_ammo_count es_xkeysetvalue gg_ammo_props "weapon_glock" "CCSPlayer.baseclass.localdata.m_iAmmo.006" es_xkeysetvalue gg_ammo_count "weapon_glock" 200 es_xkeysetvalue gg_ammo_props "weapon_usp" "CCSPlayer.baseclass.localdata.m_iAmmo.008" es_xkeysetvalue gg_ammo_count "weapon_usp" 200 es_xkeysetvalue gg_ammo_props "weapon_p228" "CCSPlayer.baseclass.localdata.m_iAmmo.009" es_xkeysetvalue gg_ammo_count "weapon_p228" 200 es_xkeysetvalue gg_ammo_props "weapon_deagle" "CCSPlayer.baseclass.localdata.m_iAmmo.001" es_xkeysetvalue gg_ammo_count "weapon_deagle" 200 es_xkeysetvalue gg_ammo_props "weapon_fiveseven" "CCSPlayer.baseclass.localdata.m_iAmmo.010" es_xkeysetvalue gg_ammo_count "weapon_fiveseven" 200 es_xkeysetvalue gg_ammo_props "weapon_elite" "CCSPlayer.baseclass.localdata.m_iAmmo.006" es_xkeysetvalue gg_ammo_count "weapon_elite" 200 es_xkeysetvalue gg_ammo_props "weapon_m3" "CCSPlayer.baseclass.localdata.m_iAmmo.007" es_xkeysetvalue gg_ammo_count "weapon_m3" 200 es_xkeysetvalue gg_ammo_props "weapon_xm1014" "CCSPlayer.baseclass.localdata.m_iAmmo.007" es_xkeysetvalue gg_ammo_count "weapon_xm1014" 200 es_xkeysetvalue gg_ammo_props "weapon_tmp" "CCSPlayer.baseclass.localdata.m_iAmmo.006" es_xkeysetvalue gg_ammo_count "weapon_tmp" 200 es_xkeysetvalue gg_ammo_props "weapon_mac10" "CCSPlayer.baseclass.localdata.m_iAmmo.008" es_xkeysetvalue gg_ammo_count "weapon_mac10" 200 es_xkeysetvalue gg_ammo_props "weapon_mp5navy" "CCSPlayer.baseclass.localdata.m_iAmmo.006" es_xkeysetvalue gg_ammo_count "weapon_mp5navy" 200 es_xkeysetvalue gg_ammo_props "weapon_ump45" "CCSPlayer.baseclass.localdata.m_iAmmo.008" es_xkeysetvalue gg_ammo_count "weapon_ump45" 200 es_xkeysetvalue gg_ammo_props "weapon_p90" "CCSPlayer.baseclass.localdata.m_iAmmo.010" es_xkeysetvalue gg_ammo_count "weapon_p90" 200 es_xkeysetvalue gg_ammo_props "weapon_galil" "CCSPlayer.baseclass.localdata.m_iAmmo.003" es_xkeysetvalue gg_ammo_count "weapon_galil" 200 es_xkeysetvalue gg_ammo_props "weapon_famas" "CCSPlayer.baseclass.localdata.m_iAmmo.003" es_xkeysetvalue gg_ammo_count "weapon_famas" 200 es_xkeysetvalue gg_ammo_props "weapon_ak47" "CCSPlayer.baseclass.localdata.m_iAmmo.002" es_xkeysetvalue gg_ammo_count "weapon_ak47" 200 es_xkeysetvalue gg_ammo_props "weapon_scout" "CCSPlayer.baseclass.localdata.m_iAmmo.002" es_xkeysetvalue gg_ammo_count "weapon_scout" 200 es_xkeysetvalue gg_ammo_props "weapon_m4a1" "CCSPlayer.baseclass.localdata.m_iAmmo.003" es_xkeysetvalue gg_ammo_count "weapon_m4a1" 200 es_xkeysetvalue gg_ammo_props "weapon_sg552" "CCSPlayer.baseclass.localdata.m_iAmmo.003" es_xkeysetvalue gg_ammo_count "weapon_sg552" 200 es_xkeysetvalue gg_ammo_props "weapon_aug" "CCSPlayer.baseclass.localdata.m_iAmmo.002" es_xkeysetvalue gg_ammo_count "weapon_aug" 200 es_xkeysetvalue gg_ammo_props "weapon_awp" "CCSPlayer.baseclass.localdata.m_iAmmo.005" es_xkeysetvalue gg_ammo_count "weapon_awp" 0 es_xkeysetvalue gg_ammo_props "weapon_g3sg1" "CCSPlayer.baseclass.localdata.m_iAmmo.002" es_xkeysetvalue gg_ammo_count "weapon_g3sg1" 0 es_xkeysetvalue gg_ammo_props "weapon_sg550" "CCSPlayer.baseclass.localdata.m_iAmmo.003" es_xkeysetvalue gg_ammo_count "weapon_sg550" 0 es_xkeysetvalue gg_ammo_props "weapon_m249" "CCSPlayer.baseclass.localdata.m_iAmmo.004" es_xkeysetvalue gg_ammo_count "weapon_m249" 200 // init ammo variables es_xsetinfo gg_ammoname 0 es_xsetinfo gg_ammonum 0 // init player skin values es_xsetinfo T_start_index 0 es_xsetinfo CT_start_index 0 // init tmp menu messages es_xsetinfo tmp_menumsg 0 // init bots es_xsetinfo bot_min_lvl 1 es_xsetinfo bot_max_lvl 1 } block gg_set_level { es_xsetinfo tmp_c 0 es_xsetinfo tmp_d 0 es_xsetinfo tmp_e 0 es_getargv tmp_c 1 es_getargv tmp_d 2 es_getuserid tmp_e server_var(tmp_c) if (server_var(tmp_e) != 0) do { es_getplayername tmp_c server_var(tmp_e) if (server_var(tmp_c) != "BOT") do { if (server_var(tmp_d) > 0) do { if (server_var(tmp_d) =< server_var(gg_levels)) do { es_keysetvalue gg_players server_var(tmp_c) level server_var(tmp_d) es echo ## server_var(tmp_c) was set to level server_var(tmp_d) } else do { es echo ## gg_setlevel Level must be between 1 and server_var(gg_levels): server_var(tmp_d) } } else do { es echo ## gg_setlevel Level must be between 1 and server_var(gg_levels): server_var(tmp_d) } } else do { es echo ## gg_setlevel server_var(tmp_c) is a BOT! } } else do { es echo ## gg_setlevel server_var(tmp_c) is not a valid USERNAME! } } block player_setup { if (event_var(es_steamid) != "BOT") do { // enable player console so they can read rules, score, etc. es_cexec event_var(userid) con_enable 1 ///////////////////////////////////// // Open gg_winners db if (server_var(win_db_open) == 0) do { es_xkeygroupdelete gg_winners es_xkeygroupcreate gg_winners es_xkeygroupcreate gg_winners es_keygroupload gg_winners server_var(gg_dir) es_xsetinfo win_db_open 1 } es_xmath read_write + 1 /////////////////////// // gg_winners actions / /////////////////////// // // Variables es_xsetinfo p_level 0 es_xsetinfo s_wins 0 // Check to see if player is already in the gg_players db es_keygetvalue p_level gg_players event_var(es_username) level // Setup new player in gg_players db if (server_var(p_level) == 0) do { es_keycreate gg_players event_var(es_username) es_keysetvalue gg_players event_var(es_username) name event_var(es_username) es_keysetvalue gg_players event_var(es_username) level 1 } // Bring over user wins from gg_winners es_keygetvalue s_wins gg_winners event_var(es_username) wins es_keysetvalue gg_players event_var(es_username) wins server_var(s_wins) // Save and close gg_winners es_xmath read_write - 1 if (server_var(read_write) == 0) do { if (server_var(win_db_open) == 1) do { es_keygroupsave gg_winners server_var(gg_dir) es_xkeygroupdelete gg_winners es_xsetinfo win_db_open 0 } } //gg_winners closed ////////////////////////////////////////// // Player join gungame sound es_delayed 8 es_xcexec event_var(userid) play gungame/gungame2.wav // add player to afk_db es_keydelete afk_db event_var(userid) es_keycreate afk_db event_var(userid) // If player is reconnecting, give previous level es_xsetinfo p_level 0 es_xsetinfo skip_handicap 0 // Check to see if player has already connected to the current map es_keygetvalue p_level lvl_db event_var(es_username) level // If player has already connected, give back player's level upon disconnecting if (server_var(p_level) > 0) do { es_keysetvalue gg_players event_var(es_username) level server_var(p_level) es_xsetinfo skip_handicap 1 } // Execute handicap code if (server_var(skip_handicap) == 0) do { if (server_var(gg_handicap_on) == 1) do { es_xdoblock gungame3lan/gg_handicap } } // Remove player from lvl_db es_keydelete lvl_db event_var(es_username) // Setup !give command to be used once. es_keysetvalue gg_players event_var(es_username) give 0 } } block player_setup_in_progress { es_xsetinfo gg_tmp_n 0 es_xsetinfo gg_tmp_s 0 es_keygetvalue gg_tmp_n gg_player_list server_var(key_x) name es_keygetvalue gg_tmp_s gg_player_list server_var(key_x) steamid if (server_var(gg_tmp_s) != "BOT") do { // enable player console so they can read rules, score, etc. es_cexec server_var(key_x) con_enable 1 ///////////////////////////////////// // Open gg_winners db if (server_var(win_db_open) == 0) do { es_xkeygroupdelete gg_winners es_xkeygroupcreate gg_winners es_xkeygroupcreate gg_winners es_keygroupload gg_winners server_var(gg_dir) es_xsetinfo win_db_open 1 } es_xmath read_write + 1 /////////////////////// // gg_winners actions / /////////////////////// // // Variables es_xsetinfo p_level 0 es_xsetinfo s_wins 0 // Check to see if player is already in the gg_players db es_keygetvalue p_level gg_players server_var(gg_tmp_n) level // Setup new player in gg_players db if (server_var(p_level) == 0) do { es_keycreate gg_players server_var(gg_tmp_n) es_keysetvalue gg_players server_var(gg_tmp_n) name server_var(gg_tmp_n) es_keysetvalue gg_players server_var(gg_tmp_n) level 1 } // Bring over user wins from gg_winners es_keygetvalue s_wins gg_winners server_var(gg_tmp_n) wins es_keysetvalue gg_players server_var(gg_tmp_n) wins server_var(s_wins) // Save and close gg_winners es_xmath read_write - 1 if (server_var(read_write) == 0) do { if (server_var(win_db_open) == 1) do { es_keygroupsave gg_winners server_var(gg_dir) es_xkeygroupdelete gg_winners es_xsetinfo win_db_open 0 } } //gg_winners closed ////////////////////////////////////////// // Player join gungame sound es_delayed 8 es_xcexec server_var(key_x) play gungame/gungame2.wav // add player to afk_db es_keydelete afk_db server_var(key_x) es_keycreate afk_db server_var(key_x) // If player is reconnecting, give previous level es_xsetinfo p_level 0 es_xsetinfo skip_handicap 0 // Check to see if player has already connected to the current map es_keygetvalue p_level lvl_db server_var(gg_tmp_n) level // If player has already connected, give back player's level upon disconnecting if (server_var(p_level) > 0) do { es_keysetvalue gg_players server_var(gg_tmp_n) level server_var(p_level) es_xsetinfo skip_handicap 1 } // Execute handicap code if (server_var(skip_handicap) == 0) do { if (server_var(gg_handicap_on) == 1) do { es_xdoblock gungame3lan/gg_handicap_in_progress } } // Remove player from lvl_db es_keydelete lvl_db server_var(gg_tmp_n) // Setup !give command to be used once. es_keysetvalue gg_players server_var(gg_tmp_n) give 0 } } event es_map_start { // Warmup timer es_setinfo gg_warmup_timer server_var(gg_warmup_timer_setting) // End of map vote es_setinfo gg_vote server_var(gg_vote_setting) // Gun Game map presets es_delayed 2 gg_map_setup // afk database es_xkeygroupdelete afk_db es_xkeygroupcreate afk_db // level db for reconnecting players es_xkeygroupdelete lvl_db es_xkeygroupcreate lvl_db // gg_players database es_xkeygroupdelete gg_players es_xkeygroupcreate gg_players // gg_triple_db es_xkeygroupdelete gg_triple_db es_xkeygroupcreate gg_triple_db es_xkeycreate gg_triple_db setup es_xkeysetvalue gg_triple_db setup players 0 alias warmup_countdown "es_xmath gg_warmup_timer - 1; if (server_var(gg_warmup_timer) == 1) then warmup_over; es_centermsg Warmup round: server_var(gg_warmup_timer) seconds left; if (server_var(gg_warmup_timer) > 1) then es_delayed 1 warmup_countdown" alias warmup_over "mp_restartgame 1; es_delayed .90 es_xforeachkey test in gg_players warmup_reset" alias warmup_reset "es_keysetvalue gg_players server_var(test) level 1" if (server_var(gg_warmup_timer) > 0) then warmup_countdown } block create_weapon_list { es_token gg_tmp_weapon server_var(gg_weapon_order) server_var(gg_level_counter) , es_keycreate gg_weapons server_var(gg_level_counter) es_keysetvalue gg_weapons server_var(gg_level_counter) weapon server_var(gg_tmp_weapon) es_xmath gg_level_counter + 1 if (server_var(gg_level_counter) =< server_var(gg_levels)) then es_xdoblock gungame3lan/create_weapon_list } block create_top5 { es_keycreate gg_top5 server_var(top5_counter) es_keysetvalue gg_top5 server_var(top5_counter) name none es_keysetvalue gg_top5 server_var(top5_counter) wins 0 if (server_var(top5_counter) == 5) do { es_keysetvalue gg_top5 server_var(top5_counter) steam 1 } else do { es_keysetvalue gg_top5 server_var(top5_counter) steam 0 } es_xmath top5_counter + 1 if (server_var(top5_counter) < 6) then es_xdoblock gungame3lan/create_top5 if (server_var(top5_counter) == 6) then es_keygroupsave gg_top5 server_var(gg_dir) } event player_activate { es_xdoblock gungame3lan/player_setup } event bomb_pickup { es_setinfo bomber event_var(userid) } event player_spawn { // Setup skins for Triple Level if (event_var(es_userteam) equalto 2) do { es_getplayerprop T_start_index event_var(userid) "CCSPlayer.baseclass.baseclass.baseclass.baseclass.baseclass.baseclass.m_nModelIndex" } if (event_var(es_userteam) equalto 3) do { es_getplayerprop CT_start_index event_var(userid) "CCSPlayer.baseclass.baseclass.baseclass.baseclass.baseclass.baseclass.m_nModelIndex" } //removes weapons es_give event_var(userid) player_weaponstrip es_fire event_var(userid) player_weaponstrip Strip 1 //removes cash es_setplayerprop event_var(userid) CCSPlayer.m_iAccount 0 // have the player initialize if (event_var(es_steamid) == "BOT") do { es_xdoblock gungame3lan/bot_spawn } else do { if (event_var(es_userteam) == 2) then es_xcexec event_var(userid) !ggstartround if (event_var(es_userteam) == 3) then es_xcexec event_var(userid) !ggstartround } } event player_death { // Set !give var es_keysetvalue gg_players event_var(es_attackername) give 1 // afk_db get player death location es_xsetinfo user_afk 0 es_xsetinfo user_x 0 es_xsetinfo user_y 0 es_xsetinfo user_z 0 es_getplayerlocation user_x user_y user_z event_var(userid) es_xsetinfo dead_x 0 es_xsetinfo dead_y 0 es_keygetvalue dead_x afk_db event_var(userid) x es_keygetvalue dead_y afk_db event_var(userid) y if (server_var(user_x) == server_var(dead_x)) do { if (server_var(user_y) == server_var(dead_y)) then es_xsetinfo user_afk 1 } // Level variables es_xsetinfo p_lvl 0 es_keygetvalue p_lvl gg_players event_var(es_attackername) level es_xsetinfo p_wpn 0 es_keygetvalue p_wpn gg_weapons server_var(p_lvl) weapon es_xsetinfo victim_lvl 0 es_keygetvalue victim_lvl gg_players event_var(es_username) level if (event_var(es_userteam) != event_var(es_attackerteam)) do { if (event_var(weapon) == server_var(p_wpn)) do { if (server_var(user_afk) == 0) do { if (event_var(es_attackersteamid) != "BOT") then es_xdoblock gungame3lan/gg_levelup } else do { //es ma_msay 5 event_var(attacker) event_var(es_username) was AFK\n Your kill did not count!! es_format tmp_menumsg "%1 was AFK\n Your kill did not count!!" event_var(es_username) es_menu 5 event_var(attacker) server_var(tmp_menumsg) es_keysetvalue afk_db event_var(userid) x 1 es_keysetvalue afk_db event_var(userid) y 1 } } else do { if (event_var(weapon) == "knife") do { if (server_var(gg_knife_pro) == 1) do { if (server_var(user_afk) == 0) do { es_xmath victim_lvl - 1 if (server_var(victim_lvl) > 0) do { es_keysetvalue gg_players event_var(es_username) level server_var(victim_lvl) } es_msg #green event_var(es_attackername) stole a level from event_var(es_username) es_cexec event_var(userid) play server_var(gg_sound_leveldown) if (event_var(es_attackersteamid) != "BOT") do { if (server_var(p_wpn) != "hegrenade") then es_xdoblock gungame3lan/gg_levelup } } else do { //es ma_msay 5 event_var(attacker) event_var(es_username) was AFK\n Your kill did not count!! es_format tmp_menumsg "%1 was AFK\n Your kill did not count!!" event_var(es_username) es_menu 5 event_var(attacker) server_var(tmp_menumsg) es_keysetvalue afk_db event_var(userid) x 1 es_keysetvalue afk_db event_var(userid) y 1 } } } } } if (server_var(suicide_protect) == 0) do { if (event_var(userid) == event_var(attacker)) do { es_xdoblock gungame3lan/gg_suicide } if (server_var(worldspawn_suicide) == 1) do { if (event_var(attacker) == 0) do { es_xdoblock gungame3lan/gg_worldspawn } } } } block gg_awp { // Set awp ammo in clip to 1 es_foreachkey index in all_awps "es_setindexprop server_var(index) CWeaponAWP.baseclass.baseclass.baseclass.LocalWeaponData.m_iClip1 1" es_delayed 2 es_keygroupdelete all_awps } block gg_levelup { if (server_var(p_lvl) == server_var(gg_levels)) do { // Allow only one winner if (server_var(gg_one_winner) == 0) do { es_xsetinfo gg_one_winner 1 es_cexec_all play server_var(gg_sound_winner) es_centermsg event_var(es_attackername) won! es_msg #green event_var(es_attackername) won! es_setinfo winner_name event_var(es_attackername) es_setinfo winner_steam event_var(es_attackername) es_xdoblock gungame3lan/gg_winner // End map es sv_alltalk 1 es_give event_var(userid) game_end es_delayed 2 es_xfire event_var(userid) game_end EndGame es_delayed 4 es_xdoblock gungame3lan/winner_reset } } else do { if (server_var(gg_turbo) == 1) do { es_xmath p_lvl + 1 es_keysetvalue gg_players event_var(es_attackername) level server_var(p_lvl) //removes weapons es_give event_var(attacker) player_weaponstrip es_fire event_var(attacker) player_weaponstrip Strip 1 es_xdoblock gungame3lan/give_turbo_weapon if (server_var(bomber) == event_var(attacker)) then es_give event_var(attacker) weapon_c4 es_setinfo p_diff server_var(ldr_level) es_math p_diff - server_var(p_lvl) if (server_var(p_lvl) > server_var(ldr_level)) do { es_setinfo ldr_level server_var(p_lvl) es_keygetvalue ldr_name gg_players event_var(es_attackername) name es_msg #multi #green event_var(es_attackername)#lightgreen is leading on level #green server_var(p_lvl) } if (server_var(p_lvl) == server_var(ldr_level)) do { if (event_var(es_attackername) != server_var(ldr_name)) do { es_msg #multi #green event_var(es_attackername)#lightgreen has tied the leader! } } if (server_var(p_lvl) < server_var(ldr_level)) do { es_tell event_var(attacker) #lightgreen You are now server_var(p_diff) levels behind the leader } es_cexec event_var(attacker) play server_var(gg_sound_levelup) } else do { es_xsetinfo gg_star 0 es_keygetvalue gg_star gg_players event_var(es_attackername) triple es_xmath gg_star + 1 if (server_var(gg_star) == 3) do { es_xmath p_lvl + 1 es_keysetvalue gg_players event_var(es_attackername) level server_var(p_lvl) es_keysetvalue gg_players event_var(es_attackername) triple 3 es_xsetinfo gg_tmp_a 0 es_keygetvalue gg_tmp_a gg_triple_db setup players es_xmath gg_tmp_a + 1 es_keysetvalue gg_triple_db setup players server_var(gg_tmp_a) es_keycreate gg_triple_db server_var(gg_tmp_a) es_keysetvalue gg_triple_db server_var(gg_tmp_a) userid event_var(attacker) es_xsetinfo gg_tmp_d 0 es_getplayerprop gg_tmp_d event_var(attacker) "CCSPlayer.baseclass.baseclass.baseclass.baseclass.baseclass.baseclass.m_nModelIndex" es_keysetvalue gg_triple_db server_var(gg_tmp_a) skin server_var(gg_tmp_d) es_emitsound player event_var(attacker) server_var(gg_sound_triple) 1.0 1.0 es_msg #multi #green event_var(es_attackername)#lightgreen triple levelled!!! es_centermsg event_var(es_attackername) triple levelled!!! if (event_var(es_attackerteam) equalto "2") do { es_setplayerprop event_var(attacker) CBaseEntity.m_nModelIndex server_var(CT_start_index) } if (event_var(es_attackerteam) equalto "3") do { es_setplayerprop event_var(attacker) CBaseEntity.m_nModelIndex server_var(T_start_index) } es_setplayerprop event_var(attacker) CCSPlayer.baseclass.localdata.m_flLaggedMovementValue 1.5 es_delayed 10 es_xdoblock gungame3lan/gg_triple_setup } else do { if (server_var(gg_star) < server_var(gg_max_lvl)) do { es_keysetvalue gg_players event_var(es_attackername) triple server_var(gg_star) es_xmath p_lvl + 1 es_keysetvalue gg_players event_var(es_attackername) level server_var(p_lvl) es_keygetvalue p_wpn gg_weapons server_var(p_lvl) weapon es_fire event_var(attacker) env_hudhint kill es_give event_var(attacker) env_hudhint es_format tmp_menumsg "message You are now on level %1 (%2)" server_var(p_lvl) server_var(p_wpn) es_fire event_var(attacker) env_hudhint AddOutput server_var(tmp_menumsg) es_fire event_var(attacker) env_hudhint ShowHudHint es_setinfo p_diff server_var(ldr_level) es_math p_diff - server_var(p_lvl) if (server_var(p_lvl) > server_var(ldr_level)) do { es_setinfo ldr_level server_var(p_lvl) es_keygetvalue ldr_name gg_players event_var(es_attackername) name es_msg #multi #green event_var(es_attackername)#lightgreen is leading on level #green server_var(p_lvl) } if (server_var(p_lvl) == server_var(ldr_level)) do { if (event_var(es_attackername) != server_var(ldr_name)) do { es_msg #multi #green event_var(es_attackername)#lightgreen has tied the leader! } } if (server_var(p_lvl) < server_var(ldr_level)) do { es_tell event_var(attacker) #lightgreen You are now server_var(p_diff) levels behind the leader } } es_cexec event_var(attacker) play server_var(gg_sound_levelup) } } } } block gg_triple_setup { es_xsetinfo gg_tmp_a 0 es_xsetinfo gg_tmp_b 0 es_xsetinfo gg_tmp_c 0 es_keygetvalue gg_tmp_a gg_triple_db setup players es_keygetvalue gg_tmp_b gg_triple_db 1 skin es_keygetvalue gg_tmp_c gg_triple_db 1 userid // Reset player to defaults es_setplayerprop server_var(gg_tmp_c) CBaseEntity.m_nModelIndex server_var(gg_tmp_b) es_setplayerprop server_var(gg_tmp_c) CCSPlayer.baseclass.localdata.m_flLaggedMovementValue 1.0 // Reset triple database es_foreachkey gg_player in gg_triple_db "es_xdoblock gungame3lan/gg_triple_do" // Subtract 1 from total triple players es_keygetvalue gg_tmp_a gg_triple_db setup players es_keydelete gg_triple_db server_var(gg_tmp_a) es_xmath gg_tmp_a - 1 es_keysetvalue gg_triple_db setup players server_var(gg_tmp_a) } block gg_triple_do { if (server_var(gg_player) != "setup") do { if (server_var(gg_tmp_a) != 1) do { es_xsetinfo gg_tmp_skin 0 es_xsetinfo gg_tmp_userid 0 es_keygetvalue gg_tmp_userid gg_triple_db server_var(tmp_a) userid es_keygetvalue gg_tmp_skin gg_triple_db server_var(tmp_a) skin es_xmath gg_tmp_a - 1 es_keysetvalue gg_triple_db server_var(gg_tmp_a) userid server_var(gg_tmp_userid) es_keysetvalue gg_triple_db server_var(gg_tmp_a) skin server_var(gg_tmp_skin) } } } block gg_suicide { if (server_var(p_lvl) > 1) do { es_xmath p_lvl - 1 es_keysetvalue gg_players event_var(es_attackername) level server_var(p_lvl) } es_msg #multi #green event_var(es_attackername)#lightgreen lost a level for suicide es_cexec event_var(attacker) play server_var(gg_sound_leveldown) } block gg_worldspawn { if (server_var(victim_lvl) > 1) do { es_xmath victim_lvl - 1 es_keysetvalue gg_players event_var(es_username) level server_var(victim_lvl) } es_msg #multi #green event_var(es_username)#lightgreen lost a level for suicide es_cexec event_var(userid) play server_var(gg_sound_leveldown) } event player_say { if (event_var(text) == "!rules") then es_xdoblock gungame3lan/gg_display_rules if (event_var(text) == "!weapons") then es_xdoblock gungame3lan/gg_display_weapons if (event_var(text) == "!top5") then es_xdoblock gungame3lan/gg_display_top5 if (event_var(text) == "!news") then es_xdoblock gungame3lan/gg_display_news if (event_var(text) == "!score") then es_xdoblock gungame3lan/gg_display_score if (event_var(text) == "!level") then es_xdoblock gungame3lan/gg_display_level if (event_var(text) == "!give") do { es_xsetinfo tmp_m 0 es_getplayerteam tmp_m event_var(userid) if (server_var(tmp_m) > 1) do { es_getplayerprop tmp_m event_var(userid) "CCSPlayer.baseclass.pl.deadflag" if (server_var(tmp_m) == 0) do { es_xsetinfo gg_give_var 0 es_getplayersteamid tmp_m event_var(userid) es_keygetvalue gg_give_var gg_players server_var(tmp_m) give if (server_var(gg_give_var) == "0") do { es_xdoblock gungame3lan/give_player_weapon } } else do { es_tell event_var(userid) You cannot use this command now! } } else do { es_tell event_var(userid) You cannot use this command now! } } if (event_var(text) == "!start") do { es_xsetinfo tmp_m 0 es_getplayerteam tmp_m event_var(userid) if (server_var(tmp_m) > 1) do { es_getplayerprop tmp_m event_var(userid) "CCSPlayer.baseclass.pl.deadflag" if (server_var(tmp_m) == 0) do { es_getplayersteamid tmp_m event_var(userid) es_keysetvalue gg_players server_var(tmp_m) level 1 es_xdoblock gungame3lan/give_player_weapon } else do { es_tell event_var(userid) You cannot use this command now! } } else do { es_tell event_var(userid) You cannot use this command now! } } } event player_disconnect { if (event_var(es_steamid) != "BOT") do { // add player to lvl_db minus one level for punishment es_xsetinfo p_lvl 0 es_keygetvalue p_lvl gg_players event_var(es_username) level es_xmath p_lvl - 1 if (server_var(p_lvl) < 2) do { es_xsetinfo p_lvl 1 } es_keycreate lvl_db event_var(es_username) es_keysetvalue lvl_db event_var(es_username) level server_var(p_lvl) // Delete player from afk_db es_keydelete afk_db event_var(userid) // Delete player from gg_players es_keydelete gg_players event_var(es_username) } } event bomb_defused { if (server_var(bomb_defuse_lvl) == 1) do { if (event_var(es_steamid) != "BOT") do { es_xsetinfo p_lvl 0 es_keygetvalue p_lvl gg_players event_var(es_username) level es_xsetinfo p_wpn 0 es_keygetvalue p_wpn gg_weapons server_var(p_lvl) weapon if (server_var(p_wpn) != "hegrenade") do { if (server_var(p_wpn) != "knife") do { if (server_var(p_lvl) != server_var(gg_levels)) do { es_xmath p_lvl + 1 es_keysetvalue gg_players event_var(es_username) level server_var(p_lvl) es_msg #green event_var(es_username) gained a level for defusing es_cexec event_var(userid) play server_var(gg_sound_levelup) } else do { es_tell event_var(userid) #green You cannot skip level server_var(p_lvl) by defusing! } } else do { es_tell event_var(userid) #green You cannot skip level server_var(p_lvl) by defusing! } } else do { es_tell event_var(userid) #green You cannot skip level server_var(p_lvl) by defusing! } } } } event bomb_exploded { if (server_var(bomb_defuse_lvl) == 1) do { if (event_var(es_steamid) != "BOT") do { es_xsetinfo p_lvl 0 es_keygetvalue p_lvl gg_players event_var(es_username) level es_xsetinfo p_wpn 0 es_keygetvalue p_wpn gg_weapons server_var(p_lvl) weapon if (server_var(p_wpn) != "hegrenade") do { if (server_var(p_wpn) != "knife") do { if (server_var(p_lvl) != server_var(gg_levels)) do { es_xmath p_lvl + 1 es_keysetvalue gg_players event_var(es_username) level server_var(p_lvl) es_msg #green event_var(es_username) gained a level for planting the bomb es_cexec event_var(user) play server_var(gg_sound_levelup) } else do { es_tell event_var(user) #green You cannot skip level server_var(p_lvl) by planting the bomb! } } else do { es_tell event_var(user) #green You cannot skip level server_var(p_lvl) by planting the bomb! } } else do { es_tell event_var(user) #green You cannot skip level server_var(p_lvl) by planting the bomb! } } } } event round_start { // End suicide protection given at round_end es_xsetinfo suicide_protect 0 // Get mp_friendlyfire settings es_xsetinfo ldr_weapon 0 es_keygetvalue ldr_weapon gg_weapons server_var(ldr_level) weapon if (server_var(ldr_weapon) == "hegrenade") do { es_cexec_all play gungame\nade_level.wav if (server_var(mp_friendlyfire) == 0) do { es mp_friendlyfire 1 es_msg #green Friendly Fire is ON!!! Watch your fire! } } if (server_var(ldr_weapon) == "knife") do { es_cexec_all play gungame\knife_level.wav } // Give taken c4 back to Terrorist es_delayed 2 es_give server_var(bomber) weapon_c4 // Reset triple level counts alias gg_reset_triple "es_keysetvalue gg_players server_var(tmp) triple 0" es_foreachkey tmp in gg_players gg_reset_triple // Give awpers 1 bullet in the clip //es_delayed 1 es_createentitylist all_awps weapon_awp //es_delayed 2 es_xdoblock gungame3lan/gg_awp // Set bot max level es_copy bot_max_lvl ldr_level } event round_end { // Give suicide protection for team changes at round end es_xsetinfo suicide_protect 1 // Get leader information alias gg_chk_ldr "es_keygetvalue ldr_a gg_players server_var(p_id) level; if (server_var(ldr_a) > server_var(ldr_level)) then es_xkeygetvalue ldr_name gg_players server_var(p_id) name; if (server_var(ldr_a) > server_var(ldr_level)) then es_xsetinfo ldr_level server_var(ldr_a)" es_xsetinfo ldr_a 0 es_xsetinfo ldr_level 0 es_xsetinfo ldr_name "none" es_delayed 1 es_foreachkey p_id in gg_players gg_chk_ldr // Reset bomber es_xsetinfo bomber 0 // New bot code if (server_var(bot_max_lvl) > 3) do { es_copy bot_min_lvl bot_max_lvl es_xmath bot_min_lvl - 3 } else do { es_xsetinfo bot_min_lvl 1 } } block gg_winner { es_xsetinfo t_wins 0 // Open gg_winners db if (server_var(win_db_open) == 0) do { es_xkeygroupdelete gg_winners es_xkeygroupcreate gg_winners es_keygroupload gg_winners server_var(gg_dir) es_xsetinfo win_db_open 1 } es_xmath read_write + 1 // Save player win total es_keygetvalue t_wins gg_winners event_var(es_attackername) wins if (server_var(t_wins) == 0) do { es_keycreate gg_winners event_var(es_attackername) } es_xmath t_wins + 1 es_keysetvalue gg_winners event_var(es_attackername) name event_var(es_attackername) es_keysetvalue gg_winners event_var(es_attackername) wins server_var(t_wins) es_keysetvalue gg_players event_var(es_attackername) wins server_var(t_wins) // Save and close gg_winners es_xmath read_write - 1 if (server_var(read_write) == 0) do { if (server_var(win_db_open) == 1) do { es_keygroupsave gg_winners server_var(gg_dir) es_xkeygroupdelete gg_winners es_xsetinfo win_db_open 0 } } // Update top5 db es_xsetinfo top5_list 0 es_keygetvalue top5_list gg_top5 5 wins if (server_var(t_wins) => server_var(top5_list)) then es_xdoblock gungame3lan/gg_execute_top5 } block winner_reset { alias gg_winner_reset "es_keysetvalue gg_players server_var(test) level 1" es_xforeachkey test in gg_players gg_winner_reset es_xsetinfo bot_min_lvl 1 es_xsetinfo bot_max_lvl 1 es_xsetinfo ldr_level 1 es_xsetinfo gg_one_winner 0 } block gg_handicap { // Execute averaging code es_xsetinfo tmp_total 0.0 es_xsetinfo tmp_count 0 es_xsetinfo tmp_stor 0 alias get_totals "es_keygetvalue tmp_stor gg_players server_var(avg_key) level; es_math tmp_total + server_var(tmp_stor); es_xmath tmp_count + 1" es_foreachkey avg_key in gg_players get_totals es_math tmp_total / server_var(tmp_count) es_token tmp_total server_var(tmp_total) 1 . if (server_var(tmp_total) > 1) do { if (server_var(gg_top5_handicap) == 1) do { es_keysetvalue gg_players event_var(es_username) level server_var(tmp_total) } else do { es_xsetinfo p_1337 0 es_xsetinfo tmp_1337 0 alias get_1337_steam "es_keygetvalue tmp_1337 gg_top5 server_var(plyr_1337) steam; if (event_var(es_username) == server_var(tmp_1337)) then es_xsetinfo p_1337 1" es_foreachkey plyr_1337 in gg_top5 get_1337_steam if (server_var(p_1337) == 0) do { es_keysetvalue gg_players event_var(es_username) level server_var(tmp_total) } } } } block gg_handicap_in_progress { // Execute averaging code es_xsetinfo tmp_total 0.0 es_xsetinfo tmp_count 0 es_xsetinfo tmp_stor 0 alias get_totals_np "es_keygetvalue tmp_stor gg_players server_var(avg_key) level; es_math tmp_total + server_var(tmp_stor); es_xmath tmp_count + 1" es_foreachkey avg_key in gg_players get_totals_np es_math tmp_total / server_var(tmp_count) es_token tmp_total server_var(tmp_total) 1 . if (server_var(tmp_total) > 1) do { if (server_var(gg_top5_handicap) == 1) do { es_keysetvalue gg_players server_var(gg_tmp_n) level server_var(tmp_total) } else do { es_xsetinfo p_1337 0 es_xsetinfo tmp_1337 0 alias get_1337_steam_np "es_keygetvalue tmp_1337 gg_top5 server_var(plyr_1337) steam; if (server_var(gg_tmp_n) == server_var(tmp_1337)) then es_xsetinfo p_1337 1" es_foreachkey plyr_1337 in gg_top5 get_1337_steam_np if (server_var(p_1337) == 0) do { es_keysetvalue gg_players server_var(gg_tmp_n) level server_var(tmp_total) } } } } block bot_spawn { // Randomize bot levels es_xsetinfo bot_lvl 0 if (server_var(ldr_level) == 0) then es_xsetinfo ldr_level 1 es_rand bot_lvl server_var(bot_min_lvl) server_var(ldr_level) // Get bot's weapon from db es_xsetinfo bot_wpn 0 es_keygetvalue bot_wpn gg_weapons server_var(bot_lvl) weapon es_format bot_wpn "weapon_%1" server_var(bot_wpn) es_give event_var(userid) weapon_knife es_give event_var(userid) item_kevlar es_delayed 1 es_xgive event_var(userid) server_var(bot_wpn) if (server_var(bot_wpn) == "weapon_hegrenade") do { if (server_var(gg_nade_glock) == 1) do { es_give event_var(userid) weapon_glock es_setplayerprop event_var(userid) CCSPlayer.baseclass.localdata.m_iAmmo.006 50 } if (server_var(gg_nade_flash) == 1) do { es_give event_var(userid) weapon_flashbang } if (server_var(gg_nade_smoke) == 1) do { es_give event_var(userid) weapon_smokegrenade } } // Give each CT a defuse kit if (event_var(es_userteam) == 3) do { es_give event_var(userid) item_defuser } } block gg_execute_top5 { es_xsetinfo reserve_name 0 es_xsetinfo reserve_steam 0 es_xsetinfo reserve_wins 0 es_xsetinfo top1_steam 0 es_xsetinfo top2_steam 0 es_xsetinfo top3_steam 0 es_xsetinfo top4_steam 0 es_xsetinfo top5_steam 0 es_xsetinfo top1_wins 0 es_xsetinfo top2_wins 0 es_xsetinfo top3_wins 0 es_xsetinfo top4_wins 0 es_xsetinfo top5_wins 0 es_xkeygetvalue top1_steam gg_top5 1 steam es_xkeygetvalue top2_steam gg_top5 2 steam es_xkeygetvalue top3_steam gg_top5 3 steam es_xkeygetvalue top4_steam gg_top5 4 steam es_xkeygetvalue top5_steam gg_top5 5 steam es_xkeygetvalue top1_wins gg_top5 1 wins es_xkeygetvalue top2_wins gg_top5 2 wins es_xkeygetvalue top3_wins gg_top5 3 wins es_xkeygetvalue top4_wins gg_top5 4 wins es_xkeygetvalue top5_wins gg_top5 5 wins // Winner name is server_var(winner_name) // Winner steamid is server_var(winner_steam) // Winner win amount is server_var(t_wins) alias move_top1 "es_xkeygetvalue reserve_name gg_top5 1 name; es_xkeygetvalue reserve_steam gg_top5 1 steam; es_xkeygetvalue reserve_wins gg_top5 1 wins; es_keysetvalue gg_top5 2 name server_var(reserve_name); es_keysetvalue gg_top5 2 steam server_var(reserve_steam); es_keysetvalue gg_top5 2 wins server_var(reserve_wins); write_top1" alias move_top2 "es_xkeygetvalue reserve_name gg_top5 2 name; es_xkeygetvalue reserve_steam gg_top5 2 steam; es_xkeygetvalue reserve_wins gg_top5 2 wins; es_keysetvalue gg_top5 3 name server_var(reserve_name); es_keysetvalue gg_top5 3 steam server_var(reserve_steam); es_keysetvalue gg_top5 3 wins server_var(reserve_wins); overwrite2" alias move_top3 "es_xkeygetvalue reserve_name gg_top5 3 name; es_xkeygetvalue reserve_steam gg_top5 3 steam; es_xkeygetvalue reserve_wins gg_top5 3 wins; es_keysetvalue gg_top5 4 name server_var(reserve_name); es_keysetvalue gg_top5 4 steam server_var(reserve_steam); es_keysetvalue gg_top5 4 wins server_var(reserve_wins); overwrite3" alias move_top4 "es_xkeygetvalue reserve_name gg_top5 4 name; es_xkeygetvalue reserve_steam gg_top5 4 steam; es_xkeygetvalue reserve_wins gg_top5 4 wins; es_keysetvalue gg_top5 5 name server_var(reserve_name); es_keysetvalue gg_top5 5 steam server_var(reserve_steam); es_keysetvalue gg_top5 5 wins server_var(reserve_wins); overwrite4" alias overwrite2 "es_keysetvalue gg_top5 2 name server_var(winner_name); es_keysetvalue gg_top5 2 steam server_var(winner_steam); es_keysetvalue gg_top5 2 wins server_var(t_wins)" alias overwrite3 "es_keysetvalue gg_top5 3 name server_var(winner_name); es_keysetvalue gg_top5 3 steam server_var(winner_steam); es_keysetvalue gg_top5 3 wins server_var(t_wins)" alias overwrite4 "es_keysetvalue gg_top5 4 name server_var(winner_name); es_keysetvalue gg_top5 4 steam server_var(winner_steam); es_keysetvalue gg_top5 4 wins server_var(t_wins)" alias overwrite5 "es_keysetvalue gg_top5 5 name server_var(winner_name); es_keysetvalue gg_top5 5 steam server_var(winner_steam); es_keysetvalue gg_top5 5 wins server_var(t_wins)" alias write_top1 "es_keysetvalue gg_top5 1 name server_var(winner_name); es_keysetvalue gg_top5 1 steam server_var(winner_steam); es_keysetvalue gg_top5 1 wins server_var(t_wins)" alias write_top2 "if (server_var(t_wins) > server_var(top1_wins)) then move_top1; if (server_var(t_wins) =< server_var(top1_wins)) then overwrite2" alias write_top3 "if (server_var(t_wins) > server_var(top2_wins)) then move_top2; if (server_var(t_wins) =< server_var(top2_wins)) then overwrite3" alias write_top4 "if (server_var(t_wins) > server_var(top3_wins)) then move_top3; if (server_var(t_wins) =< server_var(top3_wins)) then overwrite4" alias write_top5 "if (server_var(t_wins) > server_var(top4_wins)) then move_top4; if (server_var(t_wins) =< server_var(top4_wins)) then overwrite5" if (server_var(top1_steam) == 0) do { write_top1 } else do { if (server_var(winner_steam) == server_var(top1_steam)) do { write_top1 } else do { if (server_var(winner_steam) == server_var(top2_steam)) do { write_top2 } else do { if (server_var(winner_steam) == server_var(top3_steam)) do { write_top3 } else do { if (server_var(winner_steam) == server_var(top4_steam)) do { write_top4 } else do { write_top5 } } } } } // Move players in top5 based on win amount es_xkeygetvalue top4_wins gg_top5 4 wins es_xkeygetvalue top5_wins gg_top5 5 wins if (server_var(top5_wins) > server_var(top4_wins)) do { es_xkeygetvalue winner_name gg_top5 5 name es_xkeygetvalue winner_steam gg_top5 5 steam es_xkeygetvalue t_wins gg_top5 5 wins move_top4 } es_xkeygetvalue top3_wins gg_top5 3 wins es_xkeygetvalue top4_wins gg_top5 4 wins if (server_var(top4_wins) > server_var(top3_wins)) do { es_xkeygetvalue winner_name gg_top5 4 name es_xkeygetvalue winner_steam gg_top5 4 steam es_xkeygetvalue t_wins gg_top5 4 wins move_top3 } es_xkeygetvalue top2_wins gg_top5 2 wins es_xkeygetvalue top3_wins gg_top5 3 wins if (server_var(top3_wins) > server_var(top2_wins)) do { es_xkeygetvalue winner_name gg_top5 3 name es_xkeygetvalue winner_steam gg_top5 3 steam es_xkeygetvalue t_wins gg_top5 3 wins move_top2 } es_xkeygetvalue top1_wins gg_top5 1 wins es_xkeygetvalue top2_wins gg_top5 2 wins if (server_var(top2_wins) > server_var(top1_wins)) do { es_xkeygetvalue winner_name gg_top5 2 name es_xkeygetvalue winner_steam gg_top5 2 steam es_xkeygetvalue t_wins gg_top5 2 wins move_top1 } es_keygroupsave gg_top5 server_var(gg_dir) } block gg_display_top5 { es_xsetinfo gg_top_1 0 es_xsetinfo gg_top_2 0 es_xsetinfo gg_top_3 0 es_xsetinfo gg_top_4 0 es_xsetinfo gg_top_5 0 es_xsetinfo gg_top1_wins 0 es_xsetinfo gg_top2_wins 0 es_xsetinfo gg_top3_wins 0 es_xsetinfo gg_top4_wins 0 es_xsetinfo gg_top5_wins 0 es_keygetvalue gg_top_1 gg_top5 1 name es_keygetvalue gg_top_2 gg_top5 2 name es_keygetvalue gg_top_3 gg_top5 3 name es_keygetvalue gg_top_4 gg_top5 4 name es_keygetvalue gg_top_5 gg_top5 5 name es_keygetvalue gg_top1_wins gg_top5 1 wins es_keygetvalue gg_top2_wins gg_top5 2 wins es_keygetvalue gg_top3_wins gg_top5 3 wins es_keygetvalue gg_top4_wins gg_top5 4 wins es_keygetvalue gg_top5_wins gg_top5 5 wins //es ma_msay 5 event_var(userid) Gun Game Top 5 Players\n __________\n Wins: server_var(gg_top1_wins) Name: server_var(gg_top_1)\n Wins: server_var(gg_top2_wins) Name: server_var(gg_top_2)\n Wins: server_var(gg_top3_wins) Name: server_var(gg_top_3)\n Wins: server_var(gg_top4_wins) Name: server_var(gg_top_4)\n Wins: server_var(gg_top5_wins) Name: server_var(gg_top_5) es_format tmp_menumsg "->Gun Game Top 5 Players\n__________\n Wins: %1 Name: %2\n Wins: %3 Name: %4\n Wins: %5 Name: %6\n Wins: %7 Name: %8\n Wins: %9" server_var(gg_top1_wins) server_var(gg_top_1) server_var(gg_top2_wins) server_var(gg_top_2) server_var(gg_top3_wins) server_var(gg_top_3) server_var(gg_top4_wins) server_var(gg_top_4) server_var(gg_top5_wins) es_format tmp_menumsg "%1 Name: %2" server_var(tmp_menumsg) server_var(gg_top_5) es_menu 5 event_var(userid) server_var(tmp_menumsg) } block gg_display_rules { es_cexec event_var(userid) echo ----------------------------- es_cexec event_var(userid) echo ----------------------------- es_cexec event_var(userid) echo **** 4HM Gun Game Rules: **** es_cexec event_var(userid) echo 1) You must get a kill with your current weapon to level up. es_cexec event_var(userid) echo 2) If you get a kill with a weapon out of order, it does not count and you remain on your current level. es_cexec event_var(userid) echo 3) You can gain levels by PLANTING and DEFUSING. es_cexec event_var(userid) echo 4) If you commit suicide, you will lose a level. es_cexec event_var(userid) echo 5) Friendly Fire is turned ON when someone reaches GRENADE level. es_cexec event_var(userid) echo 6) You CAN gain more than one level per round. es_cexec event_var(userid) echo 7) There is a grace period at the end of each round to allow players to switch teams. es_cexec event_var(userid) echo 8) If Knife Pro is ENABLED, you can steal a level from an opponent by knifing them. es_cexec event_var(userid) echo 9) If GG Turbo is ENABLED, you will receive your next weapon immediately when you level up. es_cexec event_var(userid) echo 10) If you start with no weapon, just say !start and it will reset your score and give you a glock. es_cexec event_var(userid) echo **************************************************************** es_cexec event_var(userid) echo Say !level to see your current level and who is winning. es_cexec event_var(userid) echo Say !weapons to see the weapon order. es_cexec event_var(userid) echo Say !score to see all player current scores. es_cexec event_var(userid) echo Say !top5 to see the top 5 winners on the server. es_cexec event_var(userid) echo Say !news to get the latest on Gun Mod updates. es_cexec event_var(userid) echo Say !start to reset your level to level 1 and get a glock. es_cexec event_var(userid) echo Say !give if you do not receive your weapon. es_cexec event_var(userid) echo ----------------------------- es_cexec event_var(userid) echo ----------------------------- //es ma_msay 0 event_var(userid) Game rules and all Say commands are listed in your game console\n __________\n Say commands:\n ----------\n Say !top5 to see the top 5 players on this server\n Say !level to see your current level and who is winning\n Say !weapons to see the weapon order\n Say !score to see player scores\n Say !news to get the latest on Gun Game updates\n \n 0.Exit es_menu 0 event_var(userid) "->Game rules and all Say commands are listed in your game console\n __________\n Some useful Say commands:\n ----------\n Say !top5 to see the top 5 players on this server\n Say !level to see your current level and who is winning\n Say !weapons to see the weapon order\n Say !score to see player scores\n Say !news to get the latest on Gun Game updates\n \n->0.Exit" } block gg_display_news { es_format tmp_menumsg "->4HM Gun Game News\n %1\n_______________\nFixed bug allowing players in Spec mode to !give weapons\nAdded GG Turbo mode\n \nWould you like to run the Gun Game on your server?\nVisit www.4honor.net to download/discuss the Gun Game!\n \n->0.Exit" server_var(eventscripts_gg) es_menu 0 event_var(userid) server_var(tmp_menumsg) } block gg_display_weapons { //es_xsetinfo tmp_wpn_name 0 //alias print_weapon_order "es_keygetvalue tmp_wpn_name gg_weapons server_var(tmp_wpn_lvl) weapon; es_cexec event_var(userid) echo Level server_var(tmp_wpn_lvl): server_var(tmp_wpn_name)" //es_menu 4 event_var(userid) "Weapon Order is listed in your console.\n Press ~ to view" //es_cexec event_var(userid) echo ----------------------- //es_cexec event_var(userid) echo Weapon Order //es_cexec event_var(userid) echo ----------------------- //es_foreachkey tmp_wpn_lvl in gg_weapons print_weapon_order //es_cexec event_var(userid) echo ----------------------- // Experimental AMX style weapon list and console list es_xsetinfo tmp_wpn_name 0 es_xsetinfo gg_tmp_list "Gun Game Weapon Order\n->----------" es_cexec event_var(userid) echo ----------------------- es_cexec event_var(userid) echo Weapon Order es_cexec event_var(userid) echo ----------------------- es_foreachkey tmp_wpn_lvl in gg_weapons "es_xdoblock gungame3lan/print_weapon_order" es_format gg_tmp_list "%1\n \n->0.Exit" server_var(gg_tmp_list) es_cexec event_var(userid) echo ----------------------- es_menu 0 event_var(userid) server_var(gg_tmp_list) } block print_weapon_order { es_keygetvalue tmp_wpn_name gg_weapons server_var(tmp_wpn_lvl) weapon es_format gg_tmp_list "%1\n%2) %3" server_var(gg_tmp_list) server_var(tmp_wpn_lvl) server_var(tmp_wpn_name) es_cexec event_var(userid) echo Level server_var(tmp_wpn_lvl): server_var(tmp_wpn_name) } block gg_display_score { es_xsetinfo p_name 0 es_xsetinfo p_wins 0 alias chk_lvl "es_cexec event_var(userid) echo ##;es_cexec event_var(userid) echo ##### Scores #####; es_cexec event_var(userid) echo ---------------------; es_foreachkey steam_id in gg_players print_score; es_cexec event_var(userid) echo BOT levels server_var(bot_min_lvl) - server_var(bot_max_lvl); es_cexec event_var(userid) echo ---------------------; es_cexec event_var(userid) echo Leaders denoted with **; es_cexec event_var(userid) echo ##### End of scorelist #####; es_cexec event_var(userid) echo ##" alias print_score "es_keygetvalue p_name gg_players server_var(steam_id) name; es_keygetvalue p_lvl gg_players server_var(steam_id) level; es_keygetvalue p_wins gg_players server_var(steam_id) wins; if (server_var(p_lvl) == server_var(ldr_level)) then es_cexec event_var(userid) echo **Level server_var(p_lvl) :: Wins server_var(p_wins) :: Name server_var(p_name); if (server_var(p_lvl) != server_var(ldr_level)) then es_cexec event_var(userid) echo Level server_var(p_lvl) :: Wins server_var(p_wins) :: Name server_var(p_name)" chk_lvl es_menu 4 event_var(userid) "Scores are listed in your console.\n Press ~ to view" } block gg_display_level { es_xsetinfo p_wpn 0 es_xsetinfo p_wins 0 es_xsetinfo p_lvl 0 es_xsetinfo gg_tmp_name 0 es_getplayername gg_tmp_name event_var(userid) es_keygetvalue p_lvl gg_players server_var(gg_tmp_name) level es_keygetvalue p_wpn gg_weapons server_var(p_lvl) weapon es_keygetvalue p_wins gg_players server_var(gg_tmp_name) wins //es ma_msay 5 event_var(userid) You are on level server_var(p_lvl)\nYou need a server_var(p_wpn) kill to advance\n----------\nYou have won server_var(p_wins) times\n----------\nCurrent leader: server_var(ldr_name)\nLevel: server_var(ldr_level) es_format tmp_menumsg "You are on level %1\nYou need a %2 kill to advance\n----------\nYou have won %3 times\n----------\nCurrent leader: %4\nLevel: %5" server_var(p_lvl) server_var(p_wpn) server_var(p_wins) server_var(ldr_name) server_var(ldr_level) es_menu 5 event_var(userid) server_var(tmp_menumsg) } block unload { // Delete all open databases es_xkeygroupdelete gg_players es_xkeygroupdelete gg_winners es_xkeygroupdelete gg_top5 es_xkeygroupdelete gg_weapons es_xkeygroupdelete lvl_db es_xkeygroupdelete afk_db } block gg_reset_scores { // Delete all open databases es_xkeygroupdelete gg_players es_xkeygroupdelete gg_winners es_xkeygroupdelete gg_top5 es_xkeygroupdelete lvl_db es_xkeygroupdelete afk_db // Create empty database es_xkeygroupcreate gg_winners es_keygroupsave gg_winners server_var(gg_dir) es_xkeygroupcreate gg_top5 es_xsetinfo top5_counter 1 es_xdoblock gungame3lan/create_top5 // Restart the map es_delayed 7 changelevel server_var(eventscripts_currentmap) es_xmsg #green Gun Game scores reset! es_xmsg #green Game will restart in 7 seconds... } event es_client_command { if (event_var(command) == "!rules") then es_xdoblock gungame3lan/gg_display_rules if (event_var(command) == "!weapons") then es_xdoblock gungame3lan/gg_display_weapons if (event_var(command) == "!top5") then es_xdoblock gungame3lan/gg_display_top5 if (event_var(command) == "!news") then es_xdoblock gungame3lan/gg_display_news if (event_var(command) == "!score") then es_xdoblock gungame3lan/gg_display_score if (event_var(command) == "!level") then es_xdoblock gungame3lan/gg_display_level if (event_var(command) == "!give") do { es_xsetinfo tmp_m 0 es_getplayerteam tmp_m event_var(userid) if (server_var(tmp_m) > 1) do { es_getplayerprop tmp_m event_var(userid) "CCSPlayer.baseclass.pl.deadflag" if (server_var(tmp_m) == 0) do { es_xsetinfo gg_give_var 0 es_getplayersteamid tmp_m event_var(userid) es_keygetvalue gg_give_var gg_players server_var(tmp_m) give if (server_var(gg_give_var) == "0") do { es_xdoblock gungame3lan/give_player_weapon } } else do { es_tell event_var(userid) You cannot use this command now! } } else do { es_tell event_var(userid) You cannot use this command now! } } if (event_var(command) == "!start") do { es_xsetinfo tmp_m 0 es_getplayerteam tmp_m event_var(userid) if (server_var(tmp_m) > 1) do { es_getplayerprop tmp_m event_var(userid) "CCSPlayer.baseclass.pl.deadflag" if (server_var(tmp_m) == 0) do { es_getplayersteamid tmp_m event_var(userid) es_keysetvalue gg_players server_var(tmp_m) level 1 es_xdoblock gungame3lan/give_player_weapon } else do { es_tell event_var(userid) You cannot use this command now! } } else do { es_tell event_var(userid) You cannot use this command now! } } if (event_var(command) == "!ggstartround") do { es_xsetinfo activeweapon 0 es_getplayerprop activeweapon event_var(userid) "CCSPlayer.baseclass.baseclass.m_hActiveWeapon" if (server_var(activeweapon) == "-1") do { es_xdoblock gungame3lan/main_reset_player } } } block give_player_weapon { // Level variables es_xsetinfo p_lvl 0 es_xsetinfo p_wpn 0 // Get player's level and weapon from db es_keygetvalue p_lvl gg_players event_var(es_username) level es_keygetvalue p_wpn gg_weapons server_var(p_lvl) weapon if (server_var(p_lvl) == 0) do { es_keygetvalue p_lvl gg_players server_var(tmp_m) level } es_tell event_var(userid) #multi #lightgreen[#greenGunGame#lightgreen] You are on level#green server_var(p_lvl) es_tell event_var(userid) #multi #lightgreen[#greenGunGame#lightgreen] You need a#green server_var(p_wpn)#lightgreen kill to advance es_format p_wpn "weapon_%1" server_var(p_wpn) es_give event_var(userid) server_var(p_wpn) es_give event_var(userid) item_kevlar if (server_var(p_wpn) != "weapon_knife") then es_xgive event_var(userid) weapon_knife if (server_var(p_wpn) == "weapon_hegrenade") do { if (server_var(gg_nade_glock) == 1) do { es_give event_var(userid) weapon_glock es_setplayerprop event_var(userid) CCSPlayer.baseclass.localdata.m_iAmmo.006 50 } if (server_var(gg_nade_flash) == 1) do { es_give event_var(userid) weapon_flashbang } if (server_var(gg_nade_smoke) == 1) do { es_give event_var(userid) weapon_smokegrenade } } // Give each CT a defuse kit if (event_var(es_userteam) == 3) do { es_setplayerprop event_var(userid) CCSPlayer.m_bHasDefuser 1 } es_xsetinfo gg_ammoname 0 es_xsetinfo gg_ammonum 0 // give them the right ammo for their gun es_keygetvalue gg_ammoname gg_ammo_props server_var(p_wpn) es_keygetvalue gg_ammonum gg_ammo_count server_var(p_wpn) es_setplayerprop event_var(userid) server_var(gg_ammoname) server_var(gg_ammonum) } block give_turbo_weapon { // Level variables es_xsetinfo p_lvl 0 es_xsetinfo p_wpn 0 // Get player's level and weapon from db es_keygetvalue p_lvl gg_players event_var(es_attackername) level es_keygetvalue p_wpn gg_weapons server_var(p_lvl) weapon es_fire event_var(attacker) env_hudhint kill es_give event_var(attacker) env_hudhint es_format tmp_menumsg "message You are now on level %1 (%2)" server_var(p_lvl) server_var(p_wpn) es_fire event_var(attacker) env_hudhint AddOutput server_var(tmp_menumsg) es_fire event_var(attacker) env_hudhint ShowHudHint es_format p_wpn "weapon_%1" server_var(p_wpn) if (server_var(p_wpn) == "weapon_m3") do { es_delayed .05 es_give event_var(attacker) weapon_m3 } else do { if (server_var(p_wpn) == "weapon_hegrenade") do { es_delayed .05 es_give event_var(attacker) weapon_hegrenade } else do { es_soon es_give event_var(attacker) server_var(p_wpn) } } if (server_var(p_wpn) != "weapon_knife") then es_xgive event_var(attacker) weapon_knife if (server_var(p_wpn) == "weapon_hegrenade") do { if (server_var(gg_nade_glock) == 1) do { es_give event_var(attacker) weapon_glock es_delayed .1 es_setplayerprop event_var(attacker) CCSPlayer.baseclass.localdata.m_iAmmo.006 50 } if (server_var(gg_nade_flash) == 1) do { es_give event_var(attacker) weapon_flashbang } if (server_var(gg_nade_smoke) == 1) do { es_give event_var(attacker) weapon_smokegrenade } } // Give each CT a defuse kit if (event_var(es_attackerteam) == 3) do { es_delayed .1 es_setplayerprop event_var(attacker) CCSPlayer.m_bHasDefuser 1 } es_xsetinfo gg_ammoname 0 es_xsetinfo gg_ammonum 0 // give them the right ammo for their gun es_keygetvalue gg_ammoname gg_ammo_props server_var(p_wpn) es_keygetvalue gg_ammonum gg_ammo_count server_var(p_wpn) es_delayed .1 es_setplayerprop event_var(attacker) server_var(gg_ammoname) server_var(gg_ammonum) } block main_reset_player { // afk_db store spawn location es_xsetinfo user_x 0 es_xsetinfo user_y 0 es_xsetinfo user_z 0 es_getplayerlocation user_x user_y user_z event_var(userid) es_keysetvalue afk_db event_var(userid) x server_var(user_x) es_keysetvalue afk_db event_var(userid) y server_var(user_y) es_xdoblock gungame3lan/give_player_weapon // Warn if they are on level 0 if (server_var(p_lvl) == 0) do { es_tell event_var(userid) #multi It appears you didn't get a level. Say #green!start#default to reset you to level 1 } if (server_var(gg_vote) == 1) do { if (server_var(p_lvl) == server_var(gg_level_dynamic)) do { ma_voterandom end 4 es_xsetinfo gg_vote 0 } } // Join message if (server_var(gg_join_msg) == 1) do { es_xsetinfo gg_join_msg_do 0 es_keygetvalue gg_join_msg_do gg_players event_var(es_username) join_msg if (server_var(gg_join_msg_do) == 0) do { // Welcome message es_xsetinfo tmp_menumsg "->This server is running 4HM's Gun Game\n_______________\n" if (server_var(gg_knife_pro) == 1) then es_format tmp_menumsg "%1->Knife Pro is ENABLED!!\n" server_var(tmp_menumsg) if (server_var(gg_turbo) == 1) then es_format tmp_menumsg "%1->GG Turbo is ENABLED!!\n" server_var(tmp_menumsg) es_format tmp_menumsg "%1---------------\nType !rules for instructions on how to play and a list of commands\nType !level to get your level info and who is leading\nType !score to get a list of all players scores and winnings in your console\n \n->0.Exit" server_var(tmp_menumsg) es_menu 0 event_var(userid) server_var(tmp_menumsg) es_keysetvalue gg_players event_var(es_username) join_msg 1 } } }