Call of Duty 5: Exploding barrels
By Daevius
Abstract
We select a model (barrel), make it a script_model, assign it targetname = explodable_barrel and script_noteworthy = explodable_barrel. To the .gsc file we add:
maps\mp\_interactive_objects::init();
And to the .csv file we add:
rawfile,maps/mp/_interactive_objects.gsc fx,destructibles/fx_barrelexp_mp fx,destructibles/fx_barrel_ignite fx,destructibles/fx_barrel_fire_top xmodel,exploding_barrel_test_d
Preparing your map
We first select a barrel model, this can be any model, but I suggest we use a barrel for this.
Right click in the 2D grid and click misc -> model. Now browse to your [root]/raw/xmodel/ directory, select a model that suits you (I advice you to browse to that directory outside the radiant, then perform a search on the word 'barrel'). Once a suitable barrel is found, click Open and the model will appear in the map. Move it around till it's settled.
Now, while having the barrel selected, right click in the 2D grid and select script -> model. This will make your model ready to be accessed by a script.
To tell the game which script, we need to give it a targetname. Still having the barrel selected, press N (or twice) and, in the two text boxes below, fill in the following:
Key: targetname
Value: explodable_barrel
Key: script_noteworthy
Value: explodable_barrel
Calling the script
Now, in our .gsc file, located in [root]/raw/maps/mp/mp_[mapname].gsc, we need to add the following line (you can edit .gsc files using notepad):
maps\mp\_interactive_objects::init();
So, your .gsc file might become:
main() { maps\mp\_interactive_objects::init(); // added line maps\mp\_load::main(); // 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"] = "allies"; game["defenders"] = "axis"; game["allies_soldiertype"] = "pacific"; game["axis_soldiertype"] = "pacific"; setdvar( "r_specularcolorscale", "1" ); setdvar("compassmaxrange","2100"); // enable new spawning system maps\mp\gametypes\_spawning::level_use_unified_spawning(true); }
Adding it to the FastFile
To use the script we call in out .gsc file, we need to include it into our .ff file. Go to [root]/zone_source/mp_[mapname].csv and open it using notepad. Add the following lines to it (on it's own row!):
rawfile,maps/mp/_interactive_objects.gsc fx,destructibles/fx_barrelexp_mp fx,destructibles/fx_barrel_ignite fx,destructibles/fx_barrel_fire_top xmodel,exploding_barrel_test_d
A typical .csv file might now look like this (where mp_test is the map name):
ignore,code_post_gfx_mp ignore,localized_code_post_gfx_mp ignore,common_mp ignore,localized_common_mp col_map_mp,maps/mp/mp_test.d3dbsp rawfile,maps/mp/mp_test.gsc rawfile,vision/mp_test.vision rawfile,maps/mp/_interactive_objects.gsc fx,destructibles/fx_barrelexp_mp fx,destructibles/fx_barrel_ignite fx,destructibles/fx_barrel_fire_top xmodel,skybox_mak1 xmodel,exploding_barrel_test_d sound,common,mp_test,!all_mp sound,generic,mp_test,!all_mp sound,voiceovers,mp_test,!all_mp sound,multiplayer,mp_test,!all_mp sound,destructibles,mp_test,!all_mp character,char_usa_raider_player_rifle character,char_usa_raider_player_cqb character,char_usa_raider_player_assault character,char_usa_raider_player_lmg character,char_usa_raider_player_smg character,char_jap_impinf_player_smg character,char_jap_impinf_player_rifle character,char_jap_impinf_player_lmg character,char_jap_impinf_player_cqb character,char_jap_impinf_player_assault
Conclusion
When succeed, exploding barrels will look like this: