set d1 "set g_gametype 2 ; map sw_oasis_b3 ; set nextmap vstr d2" set d2 "set g_gametype 2 ; map mlb_daybreak ; set nextmap vstr d3" set d3 "set g_gametype 2 ; map supplydepot2 ; set nextmap vstr d4" set d4 "set g_gametype 2 ; map mlb_temple; set nextmap vstr d5" set d5 "set g_gametype 2 ; map baserace; set nextmap vstr d6" set d6 "set g_gametype 2 ; map et_mor2_night_final; set nextmap vstr d7" set d7 "set g_gametype 2 ; map venice_ne4; set nextmap vstr d8" set d8 "set g_gametype 2 ; map fueldump; set nextmap vstr d9" set d9 "set g_gametype 2 ; map UJE_00 ; set nextmap vstr d10" set d10 "set g_gametype 2 ; map goldrush ; set nextmap vstr d1" vstr d1
// WATCHDOG set com_watchdog_cmd "vstr m1r1 ; say watchdog found no map running - restarted mapcycle" // MAP set m1r1 "g_gametype 3; map oasis; set nextmap vstr m1r2" set m1r2 "map_restart 0; set nextmap vstr m2r1" set m2r1 "g_gametype 3; map goldrush; set nextmap vstr m2r2" set m2r2 "map_restart 0; set nextmap vstr m3r1" set m3r1 "g_gametype 3; map radar; set nextmap vstr m3r2" set m3r2 "map_restart 0; set nextmap vstr m4r1" set m4r1 "g_gametype 3; map railgun; set nextmap vstr m4r2" set m4r2 "map_restart 0; set nextmap vstr m5r1" set m5r1 "g_gametype 3; map supplydepot; set nextmap vstr m5r2" set m5r2 "map_restart 0; set nextmap vstr m6r1" set m6r1 "g_gametype 3; map caen; set nextmap vstr m6r2" set m6r2 "map_restart 0; set nextmap vstr m1r1" vstr m1r1
m1r1 and so on are known as a string library, kind of like a name given to a string of commands - tell the game to run the 'name' and it runs the string of commands associated with it. What basically happens here is the engine stores these lines kind of like "m1r1 command means: set g_gametype to 3, load map oasis and set 'nextmap' to run 'm1r2'". The very last line of the rotation is "vstr m1r1", which tells the engine to actually execute the line m1r1, which will startup the map rotation.
g_gametype is set to 3, Oasis is loaded, and once the round of Oasis is finished, it runs "nextmap" which has been set to run m1r2, whereupon the map is restarted the the map cycle continues.
For a campaign rotation, it is fairly similar up to this point. Here is an example of a roation that runs both of the official campaigns, one after the other:
// CAMPAIGN ROTATION - official campaigns // WATCHDOG set com_watchdog_cmd "vstr d_initial ; say watchdog found no map running - restarted mapcycle" // MAP set d1 "campaign cmpgn_northafrica ; set nextcampaign vstr d2" set d2 "campaign cmpgn_centraleurope ; set nextcampaign vstr d1" set d_initial "set g_gametype 4 ; map oasis ; set nextcampaign vstr d2" vstr d_initial // END CAMPAIGN ROTATION
Notice the similarity with the stopwatch rotation - really its almost exactly the same. The important things to notice is that: g_gametype is 4, and the campaign mode version of nextmap is "nextcampaign". Secondly, also notice the first campaign being loaded is northafrica, which starts with Oasis, and in the d_initial line the map there (which is first loaded) is also Oasis.