//------------------------------------------------------------------------------ // Mapchanger v1.1 // By Don and XE_ManUp // // Description: // Admins type "maps" in chat or "!maps" in console to bring up a menu to change a map at any time during the game. // Any player can type "nextmap" in chat or console to see the next map. // Any player can type "listmaps" in console to get the full list of maps. // Tells you if you have duplicate maps in your mapcycle.txt. // // Requirements: // Eventscripts 1.2.1.005 // ES Tools .417a // keymenu // popup // // Installation: // Copy this to a file named es_mapchanger.txt // Create a directory under cstrike/addons/eventscripts named mapchanger // Add the Steam IDs of your admins to es_mapchanger_admins_db.txt. // Copy the es_mapchanger_admins_db.txt to the same folder. // Put "es_load mapchanger" in your autoexec.cfg. // Verify you have keymenu and popup loaded. // Restart your server. //----------------------------------------------------------------------------- block config { // The name of the keygroup where your admins steamid's are stored. // Use the default that comes with mapchanger, or use your own: es_xsetinfo mapchanger_admin_keygroupname "mapchanger_admins" } block load { es_xsetinfo file_id 0 es_xsetinfo line_num 0 es_xsetinfo line_count 0 es_xsetinfo map_count 0 es_xsetinfo maps_tvar 0 es_xsetinfo foundmap 0 es_xsetinfo tmapname 0 es_xsetinfo cmap 0 es_xsetinfo mc1 0 es_xsetinfo mc2 0 es_xsetinfo nummaps 0 es_xsetinfo innercheckmapname 0 es_keygroupcreate maps es_xsetinfo tempvar1 0 es_xsetinfo tempvar2 0 es_xsetinfo cmduserid 0 es_xsetinfo admincheck 0 es_xsetinfo steamidcheck 0 es_xsetinfo listmaps_text 0 es_xsetinfo mapnumber 0 es_xsetinfo mapname 0 es_xsetinfo esmapchanger_ver 1.1 es_makepublic esmapchanger_ver // Say & client Commands: es_xregsaycmd maps mapchanger/maps es_xregsaycmd nextmap mapchanger/findnext es_xregclientcmd !maps mapchanger/maps es_xregclientcmd nextmap mapchanger/findnext es_xregclientcmd listmaps mapchanger/listmaps //////////////////////////////////////////// es_xdoblock mapchanger/processmapfile es_foreachkey cmap in maps "es_xdoblock mapchanger/finddups" keymenu create mapmenu tempvar1 mapchanger/changemap maps #keyvalue mapname #keyvalue mapname Map List es_xdoblock mapchanger/config } block unload { keymenu delete mapmenu es_keygroupdelete maps } event es_map_start { es_xsetinfo file_id 0 es_xsetinfo line_num 0 es_xsetinfo line_count 0 es_xsetinfo map_count 0 es_xkeygroupdelete maps es_xkeygroupcreate maps es_xdoblock mapchanger/processmapfile es_foreachkey cmap in maps "es_xdoblock mapchanger/finddups" keymenu delete mapmenu keymenu create mapmenu tempvar1 mapchanger/changemap maps #keyvalue mapname #keyvalue mapname Map List } block processmapfile { es est_openfile file_id r mapcycle.txt es est_countlines line_count server_var(file_id) es_math line_count - 1 es while "server_var(line_num) < server_var(line_count)" "es_doblock mapchanger/getmaps" es est_closefile server_var(file_id) } block getmaps { es_math line_num + 1 es est_getline tempvar2 server_var(file_id) server_var(line_num) es_strlen tempvar1 server_var(tempvar2) if (server_var(tempvar1) > 0) do { es_xmath map_count + 1 es_keycreate maps server_var(map_count) es_keysetvalue maps server_var(map_count) mapname server_var(tempvar2) } } block changemap { es changelevel server_var(tempvar1) } block findnext { es_xgetcmduserid cmduserid es_xsetinfo foundmap 0 es_xsetinfo tmapname 0 es_xsetinfo cmap 0 es_xsetinfo nummaps 0 es_foreachkey cmap in maps "es_xdoblock mapchanger/checkmapname" if (server_var(foundmap) < server_var(nummaps)) do { es_xmath foundmap + 1 es_keygetvalue tmapname maps server_var(foundmap) mapname es_toptext server_var(cmduserid) 1 #red nextmap: server_var(tmapname) es_cexec server_var(cmduserid) echo Nextmap: server_var(tmapname) } else do { es_xsetinfo foundmap 1 es_keygetvalue tmapname maps server_var(foundmap) mapname es_toptext server_var(cmduserid) 1 #red nextmap: server_var(tmapname) es_cexec server_var(cmduserid) echo Nextmap: server_var(tmapname) } } block checkmapname { es_keygetvalue tmapname maps server_var(cmap) mapname if (server_var(tmapname) == server_var(eventscripts_currentmap)) do { es_setinfo foundmap server_var(cmap) } es_xmath nummaps + 1 } block finddups { es_keygetvalue tmapname maps server_var(cmap) mapname es_xsetinfo nummaps 0 es_foreachkey maps_tvar in maps "es_xdoblock mapchanger/checkdup" if (server_var(nummaps) > 1) then es_msg Duplicate map name server_var(tmapname) - this will interfere with the nextmap command } block checkdup { es_keygetvalue innercheckmapname maps server_var(maps_tvar) mapname if (server_var(innercheckmapname) == server_var(tmapname)) do { es_xmath nummaps + 1 } } block maps { es_getcmduserid cmduserid es_getplayersteamid steamidcheck server_var(cmduserid) es_exists admincheck key server_var(mapchanger_admin_keygroupname) server_var(steamidcheck) if (server_var(admincheck) == 1) do { es keymenu send mapmenu server_var(cmduserid) } } block listmaps { es_xgetcmduserid cmduserid es es_xcexec server_var(cmduserid) echo " " es es_xcexec server_var(cmduserid) echo server_var(hostname) es es_xcexec server_var(cmduserid) echo " Map List:" es_xforeachkey mapnumber in maps "es_xdoblock mapchanger/list_maps" es es_xcexec server_var(cmduserid) echo " " } block list_maps { es es_xkeygetvalue mapname maps server_var(mapnumber) mapname es es_xformat listmaps_text " %1. %2" server_var(mapnumber) server_var(mapname) es es_xcexec server_var(cmduserid) echo server_var(listmaps_text) }