Campaign and mission (chapter) chooser with the rating system, groups and sorting.
Features:
automatic parsing of custom maps vpk files - no need to add map names manually! (since v2.0)
allows rating campaigns.
allows choosing a concrete map within the campaign.
allows to sort campaigns by rating.
provides 3 groups, where you can assign a map to (for your convenience).
vote for the map is displayed in a little menu (not in a default big black menu), so it does not interfere with the gameplay.
show current campaign / map name, current custom map number / and a total number of maps in the currently played campaign.
See the major functionality on screenshots attached.
Settings (data):
- addons/sourcemod/data/mapchanger_vote_block.txt - allows to specify player names or SteamId, you want to block access from voting specially.
- addons/sourcemod/data/mapchanger_black_cycle.txt - black list of map names, you want to exclude from automatic cycle.
Settings (ConVars):
Can be found in: cfg/sourcemod/l4d_mapchanger.cfg
PHP Code:
// Minimum delay (in sec.) allowed between votes
l4d_mapchanger_delay "60"
// How long (in sec.) does the vote last
l4d_mapchanger_timeout "10"
// Delay (in sec.) between announce and vote menu appearing
l4d_mapchanger_announcedelay "2.0"
// Number of seconds to display notify message before the actual change map
l4d_mapchanger_mapchange_notify_time "2"
// Show the list of chapters within campaign? (1 - Yes, 0 - No)
l4d_mapchanger_show_chapter_list "1"
// Short name of your server (specify it, if you want custom campaign name will be prepended to it)
l4d_mapchanger_servername_short ""
// Minimum number of players to allow starting the vote for mark
l4d_mapchanger_votemark_minplayers "3"
// Flag allowed to access the vote for change to default maps
l4d_mapchanger_default_voteaccess "kp"
// Flag allowed to access the vote for change to custom maps
l4d_mapchanger_custom_voteaccess "k"
// Flag(s) allowed to veto/votepass the vote
l4d_mapchanger_vetoaccess "d"
// Allow VIP players to change the map? (1 - Yes, 0 - No)
l4d_mapchanger_vip_voteaccess "1"
// Flag(s) allowed to start the vote for mark (rating). Leave empty to allow everybody.
l4d_mapchanger_votemark_access ""
// Flag(s) allowed to remove the rating.
l4d_mapchanger_remove_mark_access "z"
// 0 - Don't change finale map (drop to lobby); 1 - instant on vehicle leaving; 2 - instant on finale win; 4 - Wait till credits screen appear; 8 - Wait till credits screen ends (values can be combined)
l4d_mapchanger_finale_change_type "12"
// Which next campaign to use (on finale chapter of standard campaign)? (0 - next standard, 1 - random standard)
l4d_mapchanger_nextmap_on_standard "1"
// Which next campaign to use (on finale chapter of custom campaign)? (0 - next standard, 1 - random standard, 2 - next custom, 3 - random custom)
l4d_mapchanger_nextmap_on_custom "3"
// Print map change info to server console? (1 - Yes, 0 - No)
l4d_mapchanger_server_print_info "1"
Following ConVars control the behaviour of native (black screen) votes:
Spoiler
PHP Code:
// Allow to use native votes to change mission? (0 - No, replace by MapChanger menu; 1 - Yes). Disable it to improve security!
l4d_native_vote_allow_change_mission "0"
// Allow to use native votes to change chapter? (0 - No, replace by MapChanger menu; 1 - Yes). Disable it to improve security!
l4d_native_vote_allow_change_chapter "0"
// Allow to use native votes to restart game? (0 - No, replace by MapChanger menu; 1 - Yes). Disable it to improve security!
l4d_native_vote_allow_restart_game "0"
// Allow to use native votes to return to lobby? (0 - No, replace by MapChanger menu; 1 - Yes). Disable it to improve security!
l4d_native_vote_allow_return_lobby "0"
To prevent potential exploit, it is recommended to set them to 0.
Above ConVars automatically change these game ConVars:
(starting from MapChanger v.2.21 you no more need to list them separately in server.cfg)
hx_stats.inc file in /scripting/include folder of your local compiler
PHP Code:
// Minimum points in statistics system required to allow start the vote
l4d_mapchanger_vote_stat_points "10000"
// Minimum play time (in minutes) in statistics system required to allow start the vote
l4d_mapchanger_vote_stat_playtime "600"
Commands:
PHP Code:
// Show map list to begin vote for changelevel / set mark etc.
!maps
// Force change level to the next map (for Root admin)
!mapnext
!next
// Refresh the list of maps
!maps_reload
// Allow admin to veto current vote
!veto
// Allow admin to bypass current vote
!votepass
Supported games:
- L4D1.
- L4D2.
Supported game modes:
- Coop
- Versus (since v3.0)
- Survival (since v3.0)
Using:
- Copy contents of archive to addons/sourcemod/
* You don't need anything to setup. Everything is automated:
- cutom maps is parsed automatically.
- map cycle is run by alphabet or in random order (depending on ConVar settings).
- Automatic Campaign Switcher (ACS)
- Listen servers are supported, however, not recommended. Fixing their bugs is on your own.
- Force mission changer plugins and similar (because Map Changer is already include this functionality).
3.7 (16-Apr-2023)
- Fixed campaign titles displayed with stripped numbers.
- Added listener for ConVar "l4d_mapchanger_servername_short".
3.6 (24-Oct-2022)
- Fix for previous fix - do not request frame when change map from attempt to disconnect to lobby.
3.5 (23-Oct-2022)
- Fixed issue "Could not send a usermessage" when attempt to print message in OnDisconnectToLobby callback.
3.4 (29-Sep-2022)
- Fixed broken translation of campaigns due to excessive names normalization in previous fix.
3.3 (23-Sep-2022)
- Fixed issue "Could not send a usermessage" when attempt to print message in OnCreditsScreen callback.
3.2 (22-Sep-2022)
- Fixed buffer size for various menus.
- Added semi-async to Localizer's consumer to prevent "script timed out" (thanks to @liaoyia, @thewintersoldier97, @in2002 for reports and new tests).
- Added notification message before a change map, having: campaign & map (chapter) name, map index and total maps count.
- Added ability to set delay before the map is actually changed to have time to read the notification message.
- Added ability to fallback to default (standard) campaign on finale of custom campaign (on @shinubee, @James William Bottomtooth requests).
- Added ability to auto-change to random default (standard) campaign on finale of default campaign.
- Added ability to define black list of maps, you don't want to include in map cycle.
- ConVar "l4d_mapchanger_fin_map_random" is deprecated and deleted.
- New ConVar "l4d_mapchanger_nextmap_on_standard" - Which next campaign to use (on finale chapter of standard campaign)? (0 - next standard, 1 - random standard)
- New ConVar "l4d_mapchanger_nextmap_on_custom" - Which next campaign to use (on finale chapter of custom campaign)? (0 - next standard, 1 - random standard, 2 - next custom, 3 - random custom)
- New ConVar "l4d_mapchanger_votemark_access" - Flag(s) allowed to start the vote for mark (rating). Leave empty to allow everybody.
- New ConVar "l4d_mapchanger_remove_mark_access" - Flag(s) allowed to remove the rating.
- New ConVar "l4d_mapchanger_mapchange_notify_time" - Delay before actual change map.
- Added notification message about vote mark (rating) results.
- Added protection against too often vote for rating.
- Added multi-byte letters clear for campaign names to walkaround bug with Valve KeyValues for such maps as: "Storm Collection" (thanks to @in2002 for report).
- Added case normalization of displayed campaign & map names (thanks to @komashchenko for UTF8 strings stock).
- Improved sorting of compaigns due to above normalization.
- Improved clearing of mission title numbering.
- Improved errors color formatting.
- Inserted more safe checks in code.
- Fixed bug: campaign cannot be moved among the groups (since v3.0) (thanks to @3ipKa for investigation).
- Fixed bug: campaign lost the rating if it's moved to other group (since v3.0).
- Fixed bug: rating data file get re-written when plugin reloaded (since v3.0).
- Partial support of server-side addonlist.txt
- 1st forum post is significantly updated.
- Improved translation (Russian).
- Added translation into Ukrainian.
30-Mar-2022 => reverted back to version 2.21, due to multiple bugs in gen. v3
3.0 (15-Feb-2022)
- [New] Added support of "versus" and "survival" game modes.
- [New] Implemented experimental Localizer engine - to make dynamic multilingual translation of #phrases *.
- Removed most of translation file in favor of Localizer.
- Removed hardcoded missions list of default maps. They are parsed automatically.
- [Fix] Some addon maps with #TITLE in display name is now displayed correctly - they are extracted from appropriate vpk addon #phrases via Localizer.
- Some refactoring which aimed to improve performance.
- Simplified Chinese translation is updated (thanks to @sorallll).
- Added number of map in menu of default campaign.
- Prevented adding custom maps to the list if they are inaccessible to server.
* You may note some delay ~ 30-60 sec. until you can fully use MapChanger due to populating Localizer database once.
2.21 (31-Jan-2022)
- [Cycle] Previously played custom campaigns are no more added to random map cycle (thanks to @AK978 for suggestion).
- [Fix] Fixed bug with potential double map change.
- [Fix] Prevented sm_mapnext command from following "select random map" settings.
- [New] Added ConVars to control whether specific native votes are allowed to use (by default: all disabled for security reason):
> "l4d_native_vote_allow_change_mission" - Allow to use native votes to change mission? (0 - No, replace by MapChanger menu; 1 - Yes)
> "l4d_native_vote_allow_change_chapter" - Allow to use native votes to change chapter? (0 - No, replace by MapChanger menu; 1 - Yes).
> "l4d_native_vote_allow_restart_game" - Allow to use native votes to restart game? (0 - No, replace by MapChanger menu; 1 - Yes).
> "l4d_native_vote_allow_return_lobby" - Allow to use native votes to return to lobby? (0 - No, replace by MapChanger menu; 1 - Yes).
* Now, you can remove recommended ConVars "sv_vote_issue_*" from server.cfg, because they are included in plugin.
- [Menu] Preserves selected menu page when you click "Back" button.
- [Parser] Improved "clear" of map title numbering.
- [Speed] Optimizations:
* Buffer size for campaign title has decreased: 128 => 64.
* Lot of hardcoded buffer sizes have replaced by "const".
2.20 (29-Jan-2022)
- Added beta-support of listen servers (thanks to @Marttt).
2.19 (29-Jan-2022)
- Added protection to finale map change in case map is removed in mid-game (thanks to @AK978 for report).
- Added protection from adding default maps which doesn't exist on the server.
2.18 (15-Jan-2022)
- Added item "Random map" (in all menus, excluding default maps).
2.17 (07-Jan-2022)
- Code clean, gamedata is removed.
2.16 (04-Jan-2022)
- Introduced sorting in alphabetical order for all custom campaigns.
- Added ConVar "l4d_mapchanger_server_print_info" - Print map change info to server console? (1 - Yes, 0 - No).
- More translation phrases are added.
2.15 (20-Dec-2021)
- Bugfix: return to lobby didn't work when ConVar "l4d_mapchanger_finale_change_type" has 0 value (thanks to @thewintersoldier97 for reporting).
2.14 (06-Dec-20212)
- Added simplified Chinese translation (thanks to sorallll).
- Fixed compilation warnings on SM 1.11.
2.13 (13-Oct-2021)
- Players with any admin flag is no more checked against HX Points / Play time limit to be able to start the vote.
2.12 (11-Oct-2021)
- Added ConVar "l4d_mapchanger_vip_voteaccess" - Allow VIP players to change the map? (1 - Yes, 0 - No)
*VIP means VIP-core by R1KO.
2.11 (24-Sep-2021)
- Switched change map method back to using ForceChangeLevel (in L4D2) instead of CDirector::OnChangeChapterVote due to causing "all survivors dead" bug:
* observed when a single player used !slay @me on c1m4_atrium map (thanks to ururu for reporting)
* the reversion will cause possible memory leaks (same with sm_map command), so more frequent server reboots are recommended.
* hopefully, somebody finds a normal way to change map in L4D2 game.
- Removed reserve method for delayed changing map via "changelevel" to prevent possible bugs.
v2.10 (12-Sep-2021)
- Give preference to "Name" key in missions.txt if "DisplayTitle" starts from the link "$name" which I don't know how to de-reference at the moment.
v2.9 (11-Sep-2021)
- Added ConVar "l4d_mapchanger_show_chapter_list" - default:1 - Show the list of chapters within campaign? (1 - Yes, 0 - No) (on in2002 request)
- Added ConVar "l4d_mapchanger_finale_change_type" - default:12 (on sxtszx and ricksfishin requests)
* 0 - Don't change finale map (drop to lobby);
* 1 - instant on vehicle leaving;
* 2 - instant on finale win;
* 4 - Wait till credits screen appear;
* 8 - Wait till credits screen ends
* (values can be combined)
- Changed priority of "Name" / "DisplayTitle" keys selection in attempt to fix Precinct84 campaing title name (thanks to Neki93 for report).
v2.8 (06-Sep-2021)
- Added Traditional Chinese translation (thanks to in2002).
v2.7 (20-Jun-2021)
- Fixed throwing keyvalues error when server has no addon maps.
v2.6 (03-Jun-2021)
- Fixed throwing error "Invalid key value handle 0" on server reboot.
- Added optional compatiblity with "HX Stats Remastered (fork by Dragokas)":
* new ConVar "l4d_mapchanger_vote_stat_points" - Minimum points in statistics system required to allow start the vote.
* new ConVar "l4d_mapchanger_vote_stat_playtime" - Minimum play time (in minutes) in statistics system required to allow start the vote.
(you should have hx_stats.inc file in /scripting/include folder of compiler in order this feature to start work)
v2.5 (15-May-2021)
- Full support for L4D2.
- Improved custom maps parser.
- Autoreloading category root items when you changed category of the map.
- Added ConVar "l4d_mapchanger_vetoaccess" - Flag(s) allowed to veto/votepass the vote.
- PRIVATE_STUFF is moved to a separate file: data/mapchanger_vote_block.txt (allows to specify steam id and names with mask for users you want to black list vote access for).
- Added more checks is map valid.
- Logging to server when map is about to change.
v2.4 Beta (09-May-2021)
- Fix for previous update.
- Added human readable map and campaign display names is vote hints.
- Speed optimization (prevented custom campaigns re-parse on map start if they didn't change).
v2.3 Beta (08-May-2021)
- Added ConVar "l4d_mapchanger_fin_map_random" - Choose the next map of custom campaign randomly? (1 - Tes, 0 - No)
v2.2 Beta (01-May-2021)
- Blocked commands "callvote ChangeChapter" and "callvote ReturnToLobby".
- "ReturnToLobby" UserMessage is redirected to force change next map.
- Added item "All maps".
v2.1 Beta (23-Mar-2021)
- UM Compatibility with L4D2.
v2.0 Beta (17-Mar-2021)
- Addon maps is now automatically parsed. You no longer need manually write map names in config file! Damaged mission files are supported! (thanks to Rikka for idea)
- Finale map finish (credits screen) is now tracked accurately (without a timer).
v1.19 (29-Nov-2020)
- Added "The Last Stand" maps.
- IsMapValid() replaced by FindMap() to prevent undefined behaviour.
- Removed unused signatures.
v1.18 (27-Aug-2020)
- Fixed flags access ConVars are misplaced.
v.1.17 (20-Apr-2020)
- Added alternate method for changing map if first attempt failed.
- Added force mission change when finale win.
- Added command "!mapnext" - for ROOT admin allowing to change map to next level (or next campaign, if this is the last level).
- fixed MapChanger.l4d1.txt incorrect syntax, updated custom maps list.
- for custom maps: correct gamemode is selected now.
v.1.16 (12-Mar-2020)
- Fixed L4D1 Windows support.
- Attempt to add 'listen servers' support.
v.1.15 (07-Mar-2020)
- Removed "Proper change level" method from l4d1 since it produce some strange behaviour.
- Config files are renamed and splitted: configs/MapChanger.txt =>
* MapChanger.l4d1.txt
* MapChanger.l4d2.txt
- L4D1 custom maps config is appended with a lot of campaigns.
- L4D2 custom maps config is filled with campaigns from "Installer Extra Campaigns" tool by dr.lex: https://www.gamemaps.com/details/21899
v.1.14 (19-Feb-2020)
- Added "l4d_mapchanger_delay" ConVar: Minimum delay (in sec.) allowed between votes
- Added "l4d_mapchanger_timeout" ConVar: How long (in sec.) does the vote last
- Added "l4d_mapchanger_announcedelay" ConVar: Delay (in sec.) between announce and vote menu appearing
- Added "l4d_mapchanger_allow_custom" ConVar: Display custom maps menu items? (1 - Yes, 0 - No)
- Added "l4d_mapchanger_servername_short" ConVar: Short name of your server (specify it, if you want custom campaign name will be prepended to it)
- Added "l4d_mapchanger_votemark_minplayers" ConVar: Minimum number of players to allow starting the vote for mark
- Added "l4d_mapchanger_default_voteaccess" ConVar: Flag allowed to access the vote for change to default maps. By default: "k" (StartVote)
- Added "l4d_mapchanger_custom_voteaccess" ConVar: Flag allowed to access the vote for change to custom maps. By default: "k" (StartVote)
- Fixed sm_veto, sm_votepass
- optimizations
- Added "Proper change level" to prevent memory leak in L4D2 (by Lux), added similar fix for L4D1 just in case
- new #define PRIVATE_STUFF 1 - to unlock some private options, e.g. specify nicknames for disallow voting.
v.1.13
- Converted to methodmaps
v.1.12 (10-May-2019)
- Added ability to choose vote access flag for default and for custom map.
- Added ability to rename (append campaign name) to server name, when current map is changed to custom.
// (???) - Added safer way to change map, using entity (thanks to Lux).
- Now, to inform players, center screen message is appearing for 5 sec. before actual changing the map (if number of players > 1).
- Added "callvote" redirection to sm_maps
v.1.11 (11-Apr-2019)
- Fixed security issue in admin check
- Added restriction for repeated vote (interval: 1 min.)
- Added logging of all map changing vote actions to logs/vote_map.log
- Map change is now only allowed for admins with flag "k" (ADMFLAG_VOTE), or when only 1 player exists on server.
v.1.10 (24-Feb-2019)
- Added checking the number of campaigns in each group before displaying it (to hide empty groups).
- Added !veto and !votepass commands for admin to bypass current vote (required ADMFLAG_VOTE flag).
- Added !maps_reload to refresh the list of maps from config file.
- Added current number / total number of maps inside current played campaign in the title if !maps menu for more easily tracking game process (for custom maps only).
- Added define CUSTOM_MAPS_ADMIN_ONLY to allow change maps to custom for admins only.
v.1.9 (09-Feb-2019)
- Added checking is map exist before displaying list of campaigns.
- Added a MapChanger.txt config file with a lot of custom maps for L4d1.
v.1.8 (24-Nov-2018 )
- Fixed menu map order
v.1.7 (21-Nov-2018 )
- Added support of L4D2 (though, not tested).
- Added ability to see current played map/campaign display name.
- Added ability to vote for setting mark on campaign by non-privilaged users
(new settings "g_hConVarVoteMarkMinPlayers.IntValue" - to set minimum number of clients to start the vote for mark).
- Added restriction to run plugin by L4d(1,2) servers only.
- Little optimizations and refactoring utilizing StringMaps and inline translation.
- Removed dependency on basevotes.smx plugin.
- Fixed wrong buffer size.
v.1.6 (06-Oct-2018 )
- Fixed non-essential error in menu handler
v.1.5 (06-Oct-2018 )
- Added translation into English
v.1.4
- Vote is binded to !votemap command
- Added msg to @all about selected campaign name
- Disabled "The last stand" campaign item menu (for safe reason).
- Added ability to use "Rating" functionality for VIPs (flag "o")
v.1.3
- Temporarily removed vote functions
v.1.2
- Added vote for non-admins
v.1.1
- Added rating system
v.1.0
- Initial release
Translations:
- English (from @Dragokas)
- Russian (from @Dragokas)
- Ukrainian (from @Dragokas)
- Traditional Chinese (from @in2002)
- Simplified Chinese (from @sorallll)
Credits:
- @Marttt - for the listen server client detection stock
- @komashchenko - for UTF8 strings stock
Thanks to people, involved in Localizer project:
- @Externet - for the most amazing IDE BasicPawn and its excellent support, which has greatly simplified the development of this include.
- @Wend4r and @KyleSanderson - for suggesting walkaround against IDatabase leak while too many single threaded queries are queued.
- @asherkin - for explaining multiple DB result sets (no, they aren't used here), influencing on correct Lock/Unlock usage.
- @R1KO & @CrazyHackGUT - for the manual and comments on various database stuff.
TODO:
- API
- RTV (to vote for next campaign)
- Replace shitty bugged Valve KeyValues class (e.g. using MemoryEx), causing constant issues with letter case and writing chinese+ANSI mixed strings, like these.
- Improve Localizer speed using Silver's VPK_API
Donate
Donates are very appreciated and welcomed for further inspiration, make me happy, and make next updates came out more often:
- Patreon
- BitCoin
- Ю.Money
FAQ:
Quote:
Q: How do I change group (category) of custom map? A: 1) Run client, enter !maps, select desired map, than item "Move to another group", select group.
Or for mass-change:
2) Go to file: configs/MapChanger_info.txt and change value of "group" key to 0, 1 or 2 (index of category) without map change when client logged-in, than enter command "sm_maps_reload" on client or, alternatively, do this change with the server powered off.
Q: I added VPK, but I don't see it in the list. What should I do? A: 1) Restart the server (preferably) or enter command sm_maps_reload
2) If it doesn't work, you may have a conflict between maps. Try delete everything (or move all vpk-s into subfolder), than return files back one by one with the step by step testing.
3) If you have addonlist.txt file on your server (in the root folder of the game), check isn't this map specially disabled there.
4) Try re-download vpk from official server, and re-upload the vpk file.
5) Maybe the particular map is too outdated and no longer can work in the latest game version, ask developer or in community.
Q: Is there !rtv functionality to be able vote for next map? A: No. It is planned to implement in the far future.
Q: Can I use !rtv functionality from another map changer plugin? A: Yes, but it is highly not recommended and is not supported. Anyway, if you do so, you should set ConVar "l4d_mapchanger_finale_change_type" to "0" or to "8" to prevent MapChanger from forcing change finale map too early.
Q: How can I change/correct !maps menu items text according to my preference? A: Edit file: translations/MapChanger.phrases.txt
Both admins and usual users are allowed to change default and custom maps (vote will be prompted).
Vote is displayed in a little menu (not in a default big black menu), so it does not interfere with the gameplay.
v.1.7 (2018/11/21)
- Added support of L4D2 (though, not tested).
- Added ability to see current played map/campaign display name.
- Added ability to vote for setting mark on campaign by non-privilaged users
(new settings "g_iClientsToVoteMark" - to set minimum number of clients to start the vote for mark).
- Added restriction to run plugin by L4d(1,2) servers only.
- Little optimizations and refactoring utilizing StringMaps and inline translation.
- Removed dependency on basevotes.smx plugin.
- Fixed wrong buffer size.
v.1.9 (2019/02/09)
- Added checking is map exist before displaying list of campaigns.
- Added a MapChanger.txt config file with a lot of custom maps for L4d1.
v.1.10 (1029/02/24)
- Added checking the number of campaigns in each group before displaying it (to hide empty groups).
- Added !veto and !votepass commands for admin to bypass current vote (required ADMFLAG_VOTE flag).
- Added !maps_reload to refresh the list of maps from config file.
- Added current number / total number of maps inside current played campaign in the title if !maps menu for more easily tracking game process (for custom maps only).
- Added define CUSTOM_MAPS_ADMIN_ONLY to allow change maps to custom for admins only.
v.1.11 (2019/04/11)
- Fixed security issue in admin check
- Added restriction for repeated vote (interval: 1 min.)
- Added logging of all map changing vote actions to logs/vote_map.log
- Map change is now only allowed for admins with flag "k" (ADMFLAG_VOTE), or when only 1 player exists on server.
L 02/13/2020 - 10:48:56: [SM] Exception reported: Language phrase "#L4D360UI_CampaignName_C8" not found (arg 6)
L 02/13/2020 - 10:48:56: [SM] Blaming: MapChanger.smx
L 02/13/2020 - 10:48:56: [SM] Call stack trace:
L 02/13/2020 - 10:48:56: [SM] [0] Format
L 02/13/2020 - 10:48:56: [SM] [1] Line 429, H:\_To_games\Left4Dead_2\My_mods\MapChanger\M apChanger\MapChanger_1.11\scripting\MapChange r.sp::Command_MapChoose
L 02/13/2020 - 10:49:04: [SM] Exception reported: Language phrase "#L4D360UI_CampaignName_C8" not found (arg 6)
L 02/13/2020 - 10:49:04: [SM] Blaming: MapChanger.smx
L 02/13/2020 - 10:49:04: [SM] Call stack trace:
L 02/13/2020 - 10:49:04: [SM] [0] Format
L 02/13/2020 - 10:49:04: [SM] [1] Line 429, H:\_To_games\Left4Dead_2\My_mods\MapChanger\M apChanger\MapChanger_1.11\scripting\MapChange r.sp::Command_MapChoose