Call of Duty 5: Collision Brushes
This tutorial will explain how to spawn colliders onto models dynamically spawned in a Level.
Definition
A collider is a brush (square or cylinder) on which the player will not go through.
Availaible Colliders
Here is a list of the Collision Brushes from stock:
- collision_geo_128x128x10
- collision_geo_128x128x128
- collision_geo_256x256x10
- collision_geo_256x256x256
- collision_geo_32x32x10
- collision_geo_32x32x128
- collision_geo_32x32x32
- collision_geo_512x512x10
- collision_geo_512x512x512
- collision_geo_64x64x10
- collision_geo_64x64x128
- collision_geo_64x64x256
- collision_geo_64x64x64
- collision_geo_cylinder_32x128
- collision_geo_ramp
- collision_geo_sphere_32
- collision_geo_sphere_64
- collision_wall_128x128x10
- collision_wall_256x256x10
- collision_wall_32x32x10
- collision_wall_512x512x10
- collision_wall_64x64x10
Example
In the level GSC file for mp_airfield, add this:
spawn_model( "test", "prop_flag_russian", (1886, 2493, 8), (0,0,0) ); spawncollision( "collision_geo_32x32x128","collider",(1886, 2493, 8), (0,0,0) );
And add the spawn_model() method at the bottom of the GSC file:
spawn_model( name, model, origin, angles ) { if( !isdefined(model) || !isdefined(name) || !isdefined(origin) ) return undefined;
if( !isdefined(angles) ) angles = (0,0,0);
spawn = spawn ("script_model",(0,0,0)); spawn.origin = origin; spawn setmodel (model); spawn.targetname = name; spawn.angles = angles;
return spawn; }
Full GSC for mp_airfield after this:
main()
{
maps\mp\mp_airfield_fx::main();
maps\mp\createart\mp_airfield_art::main();
maps\mp\_load::main();
//maps\mp\mp_airfield_amb::main();
maps\mp\_compass::setupMiniMap("compass_map_mp_airfield");
// If the team nationalites change in this file,
// you must update the team nationality in the level's csc file as well!
game["allies"] = "marines";
game["axis"] = "japanese";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "pacific";
game["axis_soldiertype"] = "pacific";
setdvar( "r_specularcolorscale", "1" );
setdvar("compassmaxrange","2100");
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_AIRFIELD_A";
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_AIRFIELD_B";
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_AIRFIELD_C";
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_AIRFIELD_D";
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_AIRFIELD_E";
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_AIRFIELD_A";
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_AIRFIELD_B";
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_AIRFIELD_C";
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_AIRFIELD_D";
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_AIRFIELD_E";
// enable new spawning system
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
createSpawnpoint( "mp_ctf_spawn_allies", (2803, 2929, 42), 4 );
createSpawnpoint( "mp_ctf_spawn_allies", (2736, 2869, 42), 270.6 );
createSpawnpoint( "mp_ctf_spawn_allies", (4553, 2384, -34), 135 );
createSpawnpoint( "mp_ctf_spawn_allies", (2649.5, 1903, 136), 227.1 );
createSpawnpoint( "mp_ctf_spawn_allies", (3309.5, 1355.5, -21.5), 46.2 );
createSpawnpoint( "mp_ctf_spawn_allies", (2364, 1611, 134), 47.1 );
createSpawnpoint( "mp_ctf_spawn_allies", (2330, 1018, 33), 168.6 );
createSpawnpoint( "mp_ctf_spawn_allies", (1840, 1518, 63), 212 );
createSpawnpoint( "mp_ctf_spawn_allies", (1762, 942, 7), 150 );
createSpawnpoint( "mp_ctf_spawn_allies", (1540, 694, -5), 152.7 );
createSpawnpoint( "mp_ctf_spawn_allies", (1158, 655, 5), 99.3 );
createSpawnpoint( "mp_ctf_spawn_allies", (3790, 2227.5, 10), 60 );
createSpawnpoint( "mp_ctf_spawn_axis", (1290, 5880, 188), 342.8 );
createSpawnpoint( "mp_ctf_spawn_axis", (1680, 5834, 37), 291.8 );
createSpawnpoint( "mp_ctf_spawn_axis", (949, 5739, 37), 0 );
createSpawnpoint( "mp_ctf_spawn_axis", (1322, 5428, 181), 240 );
createSpawnpoint( "mp_ctf_spawn_axis", (1616, 5376.5, 16), 290 );
createSpawnpoint( "mp_ctf_spawn_axis", (2284, 5424, 28), 270 );
createSpawnpoint( "mp_ctf_spawn_axis", (2934, 5259, 50), 318.6 );
createSpawnpoint( "mp_ctf_spawn_axis", (1412, 4865, 42), 281.8 );
createSpawnpoint( "mp_ctf_spawn_axis", (2040, 4468, -78), 90 );
createSpawnpoint( "mp_ctf_spawn_axis", (380, 4535, 34), 270 );
createSpawnpoint( "mp_ctf_spawn_axis", (785, 4515, 16), 270 );
createSpawnpoint( "mp_ctf_spawn_axis", (1947, 4178, 1), 0 );
createSpawnpoint( "mp_ctf_spawn_axis", (1402, 4106, 26), 335.6 );
createSpawnpoint( "mp_ctf_spawn_axis", (1304, 3666, 13), 313.4 );
createSpawnpoint( "mp_ctf_spawn_axis", (1771, 3295, 25), 231.2 );
spawn_model( "test", "prop_flag_russian", (1886, 2493, 8), (0,0,0) );
spawncollision( "collision_geo_32x32x128","collider",(1886, 2493, 8), (0,0,0) );
}
createSpawnpoint( classname, origin, yaw )
{
spawnpoint = spawn( "script_origin", origin );
spawnpoint.angles = (0,yaw,0);
if ( !isdefined( level.extraSpawnpoints ) )
level.extraSpawnpoints = [];
if ( !isdefined( level.extraSpawnpoints[classname] ) )
level.extraSpawnpoints[classname] = [];
level.extraSpawnpoints[classname][ level.extraSpawnpoints[classname].size ] = spawnpoint;
}
spawn_model( name, model, origin, angles )
{
if( !isdefined(model) || !isdefined(name) || !isdefined(origin) )
return undefined;
if( !isdefined(angles) )
angles = (0,0,0);
spawn = spawn ("script_model",(0,0,0));
spawn.origin = origin;
spawn setmodel (model);
spawn.targetname = name;
spawn.angles = angles;
return spawn;
}
This gives you a solid Russian flag in mp_airfield which you cant walk through:
