Call of Duty 5: FXs Script Struct

From COD Modding & Mapping Wiki
Revision as of 19:05, 2 December 2008 by Zeroy (talk | contribs) (New page: Image:Nutshell.png This tutorial describe an alternative method to spawn FXs in a map using Radiant and a few scripts. The example belwo will show you how to spawn 3 FXs in your map: ...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This tutorial describe an alternative method to spawn FXs in a map using Radiant and a few scripts.

The example belwo will show you how to spawn 3 FXs in your map:

env/smoke/fx_smoke_crater
env/fire/fx_fire_barrel_small
env/fire/fx_fire_barrel_pm

Updating broken File

First of all to use this tutorial you will need a new version of the follwoing file that Treyarch seems to have broken/modified:

C:\Program Files\Activision\Call of Duty - World at War\raw\maps\mp\_createfx.gsc

You can download it HERE

  • To install, simply unpack the ZIP archive under your COD4 Root.

Create the GSC file

  • In your /raw/maps/mp/mp_yourmap.gsc and after maps\mp\_load::main(); type this:

maps\mp\_example_struct::main();

So as an Example, my mp_example.gsc looks like this:

main()
{
	maps\mp\_load::main();
	maps\mp\_example_struct::main();

	game["allies"] = "marines";
	game["axis"] = "japanese";
	game["attackers"] = "allies";
	game["defenders"] = "axis";
	game["allies_soldiertype"] = "pacific";
	game["axis_soldiertype"] = "pacific";
}
  • Save and exit
  • Using Notepad create a new file under /raw/maps/mp/ called _example_struct.gsc, inside copy paste the following code:
#include common_scripts\utility;
#include maps\mp\_utility;

main()
{
	//Assigning a random delay for start of FX
	randomStartDelay = randomfloatrange( -20, -15);

	//Each line describes a different FX
	global_FX( "barrel_fireFX_origin", "global_fire", "env/fire/fx_fire_barrel_pm", randomStartDelay, "fire_barrel_small" );
	global_FX( "barrel_fireFX_small_origin", "global_fire_small", "env/fire/fx_fire_barrel_small", randomStartDelay, "fire_barrel_small" );
	global_FX( "barrel_smokeFX_origin", "global_smoke", "env/smoke/fx_smoke_crater", randomStartDelay );

}

global_FX( targetname, fxName, fxFile, delay, soundalias )
{
	// get script_structs created in Radiant
	ents = getstructarray(targetname,"targetname");
	if ( !isdefined( ents ) )
		return;
	if ( ents.size <= 0 )
		return;

	for ( i = 0 ; i < ents.size ; i++ )
		ents[i] global_FX_create( fxName, fxFile, delay, soundalias );
}

global_FX_create( fxName, fxFile, delay, soundalias )
{
	if ( !isdefined( level._effect ) )
		level._effect = [];
	if ( !isdefined( level._effect[ fxName ] ) )
		level._effect[ fxName ]	= loadfx( fxFile );

	// default effect angles if they dont exist
	if ( !isdefined( self.angles ) )
		self.angles = ( 0, 0, 0 );

	ent = createOneshotEffect( fxName );
	ent.v[ "origin" ] = ( self.origin );
	ent.v[ "angles" ] = ( self.angles );
	ent.v[ "fxid" ] = fxName;
	ent.v[ "delay" ] = delay;
	if ( isdefined( soundalias ) )
	{
		ent.v[ "soundalias" ] = soundalias;
	}
}
  • Save and Exit
  • Finally add the FXs and the new files to your /zone_source/mp_yourmap.csv
rawfile,maps/mp/_example_struct.gsc
rawfile,maps/mp/_createfx.gsc
fx,env/smoke/fx_smoke_crater
fx,env/fire/fx_fire_barrel_small
fx,env/fire/fx_fire_barrel_pm

In Radiant

This method of spawning FXs uses script_struct entities, they are placed in your Level in Radiant

  • In radiant, in the 2D view, Right-click and select script>script_struct



  • Now move and place the Script_struct entity where you want your FX to show up
  • With the Script_struct entity selected bring up its properties with n
  • Now add the targetname for the FX required (as entered in the _example_struct,gsc file above)
Key:Targetname
Value:depends on FX you wish

Possible Values in this Example:

barrel_fireFX_origin
barrel_fireFX_small_origin
barrel_smokeFX_origin
  • Another thing to do might be the Angle, if you need to orient your FXs.
Key: angles
Value: Depends on the direction you want to the FX to show, for Fire (going upwards) it would be 180 0 0 ;
For a Streetlight (pointing downwards) it would be 90 0 0



Results


--Zeroy. 16:05, 2 December 2008 (UTC)