Post tutorial RSS Return of Zombie Ops - Basic Mapping

This is a tutorial to give you a basic idea of mapping for RoZo Mod. I assume you already know the basics of mapping so I will not explain how the radiant works or anything like that!

Posted by on - Intermediate Mapping/Technical

Mapping for "Return of Zombies Ops" 0.5


Due to big changes in the scripting base of 0.6 mappers will might be forced to make small changes once 0.6 is out. I'm sorry for that but we're working on less server load and a smoother running mod.

1. Introduction

In the following tutorial I'll discover a few specialities of mapping for the RoZo mod. I assume that you already know how to use the radiant properly and that you have some experience in making a working Multiplayer and/or Rotu map. Also you should have the Call of Duty 4 ModTools installed and working.
In case one of the mentioned points is not fulfilled please start with the very basics!
Eventually mentioned folders are relative to your modtools directory, usually that is "C:/Program Files/Activision/Call of Duty 4 - Mod Tools/" or in my case "E:/callofduty4/cod4_modtools/". That means the folder "/raw/" is "C:/Program Files/Activison/Call of Duty 4 - Mod Tools/raw/" or in my case "E:/callofduty4/cod4_modtools/raw/".

2. Installation of the RoZo mapping extension

Start with downloading the RoZo mapping extensions, they include all the needed files, such as xmodels, some prefabs for you to use and the map mp_zombie_test, a very basic test map I created for testing things out. Extract the ZIP file to your Mod Tools folder, in case you get asked to insert folders into already existing ones just confirm it.

3. Preparing the map

I assume that you already have a fully working Map-Geo, such as which is with the Mod Tools. In case it is designed for the normal CoD4 Multiplyer start with removing all spawnpoints expect the ones for TDM. Also delete the gamemode objects such as bombsides, falgs and the bombtimer. In case the map has alot of xmodels (not running with OW2 mod and similar mods) delete some xmodels like small bottles, and other trash. You can also replace exploding vehicles with non exploding ones or delete them. I suggest to keep them because 0.6 will make more use of exploding cars ;)
Once you're done with that or you didn't even had these things you can now place the survivor spawn or move them. RoZo will use mp_tdm_spawn_allies_start and tdm_spawn_axis_start for the survivors. Place them all together at the location you want the survivors start. Look out for the usual rules, spawning inside solid objects is not funny for survivors.
The mp_tdm_spawn spawnpoints are used by default for the zombies, so place them all over the map or in case you still got the old ones just move on. In case your map is designed as a classic zombie map place the spawns inside the zombie spawning area.
Now save your map with a separate name, I suggest mp_zmb_ as a prefix. Now compile the BSP, for setting up the waypoints you will need a working TDM map. Also compile the FastFile and move on to the next step.

4. Placing the waypoints

In case you already have working waypoints for your map you can just skip this step!
Now start your map with the Pezbots Mod and create a waypoints.gsc file, I'll link a tutorial for that at the bottom. The RoZo Mod doesn't have a own mode for that at the moment.Alternatively you can also use Rotu waypoint.csv files, in case you're already used to creating them.

5. Creating the script file

Now copy the mp_zombie_test.gsc which is in the RoZo Mapping extensions and rename it to .gsc and open it with a text editor, such as Notepad++. First of all you should adjust the minimap, create a 2D material with the name compass_map_ and change it in the gsc file.
Now add the following lines to your .gsc file.thread maps\mp\_waypoints::load_waypoints();

That add the waypoints you created in step 4, in case you want to use Rotu ones just add

In case your map includes barricades also add
level.barricadeFx = loadFx( );
buildBarricades( targetname, parts, healt, level.barricadeFx, level.barricadeFx );
and change the values like this:

targetname - Name of the barricades in the map
parts - number of parts
health - overall heath of the barricades, I suggest 400-800
barricadeFx - the effect when the barricade is destroyed(1st) or rebuilded(2nd)

should match a valid effect from your /raw/fx/ folder e.g. "dust/dust_trail_IR".

You can also edit the teams, in case you have enough free xmodels and add setPlayerModels(); below the game variables. Players can then use the classic CoD4 skins (or any you added instead of them) ingame. If needed edit the dvars.
Finally copy the line:
maps\mp\gametypes\_spawnlogic::addPlayerSpawns("mp_tdm_spawn_allies_start", true );
and edit it to
maps\mp\gametypes\_spawnlogic::addPlayerSpawns( "mp_tdm_spawn_axis_start", true );

Now your .gsc file should look like this:

#include scripts\include\_map_util;



	game["allies"] = "sas";
	game["axis"] = "russian";
	game["attackers"] = "axis";
	game["defenders"] = "allies";
	game["allies_soldiertype"] = "woodland";
	game["axis_soldiertype"] = "woodland";

	setdvar( "r_specularcolorscale", "0.5" );

	barricadeFx = loadFx( "dust/dust_trail_IR" );
        buildBarricades( "staticbarricade", 4, 500, barricadeFx, barricadeFx );

        thread maps\mp\mp_zmb_backlot_waypoints::load_waypoints();

        thread mapThink();

	maps\mp\gametypes\_spawnlogic::addPlayerSpawns( "mp_tdm_spawn_allies_start", true );
	maps\mp\gametypes\_spawnlogic::addPlayerSpawns( "mp_tdm_spawn_axis_start", true );

Save the .gsc file and don't forget to add the waypoints file and the mptypes to your Zone File.

6. Adding the barricades

Now open your Radiant again and load the map. Since all waypoints are set now you can place the barricades, no player need to pass there anymore.Close the gap with a player clip so players can't pass through when the barricade is destroyed.You can use either the barricades in the RoZo mapping extensions, which already have the player clip or build your own barricades, using the pattern of the one which is with the RoZo mapping extension.

7. Adding the Shops

7.1 Weapon shops
The weaponshop itself is just a trigger_use_touch entity with the targetname weapon_shop, depending on the maps size place two or more around the map. Now you can decide if the shops should also appear visually when playing with the mystery box or not. In the prefab the truck will vanish, to do so just mark all clips and make them a script_brushmodel and make all xmodels a script_model. Now add the targetname weapon_shop_detail. In case you want the shop visuals to stay just create them as normal brushes and misc_models.
7.2 Equipment shops
The Equipment and Perk vendors have only one trigger entity, again a trigger_use_touch. Give it the targetname perk_shop. For making the Perk vendors work properly you have to create two more key/values, script_threshold and script_noteworthy. script_threshold defines the price and script_noteworthy the name of the Perk. A list of all valid perknames is at the very end of this tutorial.
Again you can hide the visuals if the shops aren't used, similar to the weapon shops just give them the targetname perk_shop_detail.

7.3 Treasure chest
Just place the prefab multiple times around the map, in case you're hiding the weapon shops you can also use the same positions. To save xmodels the box uses only one xmodel, so it looks VERY weird in the radiant, don't be irritated, ingame everything will be fine. For positioning use the lower crate.
7.4 Weapons-of-the-wallNow you can place the weapon prefabs scattered around the map. Pay attention to the trigger only touching the wall and not sticking in the wall.

8. IWD File

The treasure chest and the chalk drawing of the weapons require custom textures, just add the .iwi files to your maps .iwd file.

9. Pay attention

I'm looking forward to see alot of cool maps, feel free to use mp_zombie_test as a reference but it is not meant to be played on! In case you create more prefabs feel free to share them on with the other mappers.
For my prefabs you don't have to give credits back to me, in case you use work of others please do so.

10. List of Perks

Tier 1

  • specialty_lightweight
  • specialty_scavenger
  • specialty_scavenger
  • specialty_scavenger
  • specialty_hardline

Tier 2

  • specialty_bulletpenetration
  • specialty_holdbreath
  • specialty_bulletaccuracy
  • specialty_fastreload
  • specialty_warlord

Tier 3

  • specialty_longersprint
  • specialty_quieter
  • specialty_pistoldeath
  • specialty_hacker
  • specialty_gasmask

11. List of weapons

beretta usp colt45 deserteagle deserteaglerds deserteagletac
m93r g18 mp5k mp5ksdmp5 mp5_reflex mp5_silencer ump ump_reflex skorpion skorpion_reflex uzi uzi_reflex ak74u ak74u_reflex vector vector_reflex p90 p90_reflex p90_silencer m4cqbr ks23 ks23_db winchester1200 winchester1200_grip m1014 m1014_grip aa12 aa12_xmag saiga12m40a3 m40a3_acog m21 m21_acog dragunov dragunov_acog remington700 remington700_acog barrett barrett_acog trg42 trg42_silencer tac50saw saw_reflex saw_grip rpd rpd_reflex rpd_grip m60e4 m60e4_reflex m60e4_grip stonerm16 m16_reflex m16_silencer aug aug_reflex aug_silencer ak47 ak47_reflex ak47_silencer scar scar_reflex scar_silencer m4 m4_reflex m4_silencer m4_gl gl_m4 famas famas_reflex famas_silencer g3 g3_reflex g3_silencer g36c g36c_reflex g36c_silencer g36c_gl gl_g36c acr acr_reflex acr_silencer m14 m14_reflex fad fad_reflex fad_silencer type95crossbow crossbow_explosive gl rpg tesla raygunfrag_grenade frag_grenade_short flash_grenade concussion_grenade smoke_grenadeflamethrower minigun knife


I am getting an error saying Bad Syntax when i make the .gsc include the waypoints. Do you have Skype so i can maybe get some help to fix this? I have the RotU Waypoints and i am not sure how to exactly get them into the script. Adding "scripts\level\_waypoints::getFromCSV();" or "waypoints/MY_MAP_NAME_wp::getFromCSV();", which is what my .csv is called and where it's located, gives me the script error.

Reply Good karma Bad karma+1 vote

Ok, i have managed to keep the Syntax error away, but my waypoints are still not incorporated into the map. Why would this be?

Reply Good karma Bad karma+1 vote

This comment is currently awaiting admin approval, join now to view.

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.