Editing
Reverse MvM Beginners Guide
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Technical Implementation == === Lose Condition === In order to fail the wave when players lose, you will need to add your own [https://developer.valvesoftware.com/wiki/Game_round_win game_round_win] entity like so: <syntaxhighlight lang="cpp"> PointTemplates [$SIGSEGV] { LoseRelay { NoFixup 1 game_round_win // RED win entity { "TeamNum" "2" "targetname" "bots_win_red" "switch_teams" "0" "force_map_reset" "1" "classname" "game_round_win" } logic_relay // Trigger this for player loss { "targetname" "redwin_relay" "OnTrigger" "bots_win_red,RoundWin,,0,-1" } } } </syntaxhighlight> It's up to you to decide how you want players to lose. Timers, VIP Escort, and Tanks are popular ways to do so. === Preparing A Non-Reverse Map === Because many maps were not designed for this mode, it is recommended that you go through your map of choice and remove unwanted map entities, cover up holes in bot spawn with [https://developer.valvesoftware.com/wiki/Prop_dynamic prop_dynamic], and generally prepare your map beforehand. For the bulk of custom logic, a simple [https://developer.valvesoftware.com/wiki/Logic_auto logic_auto] in combination with [https://developer.valvesoftware.com/wiki/AddOutput AddOutputs] will suffice, as it will instantly trigger when a new wave loads, however this can also be achieved with [[lua]] or [https://github.com/rafradek/VScript-Popfile-Extensions VScript]. For example, if your mission gives the blue team infinite ammo, it wouldn't hurt to remove redundant ammo packs from the map like so <syntaxhighlight lang="cpp"> logic_auto { "origin" "0 0 0" "targetname" "mainrelay" "OnMapSpawn" "item_ammopack*,Kill,,0,-1" } </syntaxhighlight> ==== Spawn Room ==== Many maps do not have gates or doors blocking the blue spawn area and will require you to add your own blockades. This can be as simple as placing a forcefield in front of the spawn and killing it when the wave starts, or as complex as creating a moving gate using [https://developer.valvesoftware.com/wiki/Func_tracktrain func_tracktrain]. For our example, we'll be using a [https://developer.valvesoftware.com/wiki/Func_forcefield func_forcefield], an invisible wall which can be disabled and enabled when wave start/end relays trigger using some basic AddOutputs <syntaxhighlight lang="cpp"> PointTemplates [$SIGSEGV] { corelogic { NoFixup 1 logic_auto { "targetname" "mainrelay" "OnMapSpawn" "item_ammopack*,Kill,,0,-1" "OnMapSpawn" "wave_start_relay*,AddOutput,OnTrigger spawnbarrier:Disable:0:-1,0,-1" "OnMapSpawn" "wave_finished_relay*,AddOutput,OnTrigger spawnbarrier:Enable:0:-1,0,-1" } } forcefield { NoFixup 1 func_forcefield { "targetname" "spawnbarrier" "origin" "2724.365479 -2303.941650 -143.139458" // Rottenburg main spawn "angles" "0 90 0" "rendermode" "10" // 10 = Don't render "TeamNum" "2" // 2 for RED, 3 for BLU "mins" "-300 -300 -300" "maxs" "300 300 300" // 300x300HU cube } } } </syntaxhighlight> ''<sup>* is a [https://developer.valvesoftware.com/wiki/Wildcard wildcard] that can be used to reference multiple entities with the same prefix. It is limited to suffixes only (i.e. "*_start_relay*" would not work).</sup>'' For more complex maps with a lot of entities, it may be beneficial to strip away certain decorative elements of the map to avoid hitting the [https://developer.valvesoftware.com/wiki/Edict_t#Limitations edict limit] of 2048 while the wave is active (such as move_rope and keyframe_rope). ==== Upgrade Station ==== Upgrade stations will need to be placed in blue spawns. Do your best to strategically place these in areas that don't interfere with spawn points and cover up holes in the map if there are any. If your map has particularly cramped spawns, it might be wise to use a smaller model than the traditional one to signify an upgrade station, such as a resupply locker or a small weapons case. Do note the "mins" and "maxs" values for the func_upgradestation entity will need to be adjusted accordingly<syntaxhighlight lang="c++"> station { NoFixup 1 func_upgradestation // Upgrade station entity { "mins" "-105 -100 0" "maxs" "105 100 242" "solid" "0" } prop_dynamic // BLU upgrade station model, available on Potato servers { "targetname" "upgradestation" "model" "models/props_mvm/mvm_upgrade_blu.mdl" } prop_dynamic // Invisible collision prop { "targetname" "shopcollision" "angles" "0 -90 0" "model" "models/props_vehicles/train_flatcar_container.mdl" "rendermode" "10" // Don't render "solid" "6" // Enable collisions } } </syntaxhighlight>
Summary:
Please note that all contributions to SigMod are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see
SigMod:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
British English
Views
Read
Edit
Edit source
View history
More
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information