

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.zeroy.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wakka</id>
	<title>COD Modding &amp; Mapping Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.zeroy.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wakka"/>
	<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Special:Contributions/Wakka"/>
	<updated>2026-04-22T13:04:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Minimap&amp;diff=4675</id>
		<title>Call of Duty 5: Minimap</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Minimap&amp;diff=4675"/>
		<updated>2009-03-05T16:08:24Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Call of Duty 5]]&lt;br /&gt;
[[Category:Mapping]]&lt;br /&gt;
[[Category:Minimap]]&lt;br /&gt;
[[Image:Nutshell.png]] This tutorial will explain you how you can create a minimap for your multiplayer map.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Throughout this tutorial I will use &#039;[mapname]&#039; and &#039;[root]&#039;. Single-quote around text simply indicate where it starts and ends, and should never be copied along. Basically, you should replace &#039;[mapname]&#039; with your map name, include the &#039;mp_&#039; prefix. &#039;[root]&#039; indicates the root directory of your Call of Duty 5 installation, for most users this would probably be &lt;br /&gt;
 &lt;br /&gt;
 C:/Program Files/Activision/Call of Duty 5 World At War/&lt;br /&gt;
&lt;br /&gt;
but it can differ depending on where you installed it (obviously ^^).&lt;br /&gt;
&lt;br /&gt;
==Prepare your map==&lt;br /&gt;
*In your map, you&#039;ll have to add two objects indicating the corners of your map. To do this, we right click with the mouse in the 2D grid, then click &#039;misc&#039; and &#039;prefab&#039;. Now go to &#039;[root]/map_source/prefabs/&#039; and select minimap_corner.map&lt;br /&gt;
(If you do not have the prefab, look at the screen shot of the script origin, that is all you need two of those set up as shown)&lt;br /&gt;
&lt;br /&gt;
*Now press Space, to copy the object, and place the 2 corners in the right position. One in the top-right corner, and one in the bottom-left corner, both should be around the highest building&#039;s roof in height. Also, try to limit the unplayable space inside the square of the 2 corners.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Minimap_1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Minimap_2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Now fully recompile your map (you can check &#039;fast&#039; and uncheck &#039;extra&#039; in Light Options, as well as uncheck &#039;Connect Paths&#039;). Move the &#039;[mapname].ff&#039; and &#039;[mapname]_load.ff&#039; files (which are located in &#039;[root]/zone/english/&#039;) to &#039;[root]/usermaps/[mapname]/&#039; (create those directories if they do not yet exist). Also place the .iwd, if you have one already, in the same directory.&lt;br /&gt;
&lt;br /&gt;
==Take the screenshot==&lt;br /&gt;
Before we can run the map, create a new shortcut for Call of Duty 5 (either copy an existing one or create one from &#039;[root]/CodWWmp.exe&#039;).&lt;br /&gt;
&lt;br /&gt;
*Right click the shortcut, go to Properties and to the first text field (after &#039;Destination&#039; I suppose) add the following text (append it) put this text at the end:&lt;br /&gt;
&lt;br /&gt;
 +set thereisacow 1337 +set developer 1 +set developer_script 1 + set sv_pure 0 +devmap [mapname] +set r_fullscreen&lt;br /&gt;
&lt;br /&gt;
*Now double click the new shortcut. When the map has loaded, [[Call of Duty 5: Console usage|bring up the console]] and enter &#039;/exec minimap&#039;. This will get rid of all HUD elements. Now type &#039;/scr_minimap_height 20000&#039;. 20,000 indicates how high we will be taken and will probably be too high. Adjust the height by re-entering the command till the white box fits in the screen (try to make it as big as possible). Now [[Call of Duty 4: Screenshots|take a screenshot]].&lt;br /&gt;
&lt;br /&gt;
*I suggest you use Photoshop, if you have it, Paint Shop Pro or Gimp can do the job as well but Paint is just a little too basic.&lt;br /&gt;
&lt;br /&gt;
*Cut out the square _inside_ the white border, add some nice effect you like (I suggest a black fade from the sides), resize it to 512x512 (be sure to have &#039;Bicubic Sharper&#039; selected in Photoshop) and save it as a .tga (Targa) file of 24 bits per pixel in &#039;[root]/texture_assets/&#039; (create the directory if it&#039;s not yet there).&lt;br /&gt;
&lt;br /&gt;
==Add it to your map==&lt;br /&gt;
*Bring up the [[Call of Duty 5: Assets Manager|Asset Manager]], and click File -&amp;gt; Open. Go to &#039;[root]/source_data/&#039; and open &#039;levels.gdt&#039;.&lt;br /&gt;
&lt;br /&gt;
*On the left side, click &#039;material&#039;, and press &#039;New Entry&#039;. In the textbox enter &#039;compass_map_[mapname]&#039;. Now simply be sure the right panel looks exactly like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Call of Duty 4 tutorials minimap asset manager.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*When you&#039;re done, click PC Convert -&amp;gt; Current Asset Only. If no errors appear, you&#039;ve done it right.&lt;br /&gt;
&lt;br /&gt;
*In &#039;[root]/raw/images/&#039; a new image has appeared, called &#039;compass_map_[mapname].iwi&#039;. [[Call of Duty 4: .IWD file|Copy this into your [mapname].iwd, in the images directory]]. Now go to &#039;[root]/raw/maps/mp/[mapname].gsc&#039; and open it using Notepad (if it doesn&#039;t yet exists, copy one from an existing map, and rename that map&#039;s name to your map name) and add the following (or modify) lines:&lt;br /&gt;
&lt;br /&gt;
 maps\mp\_compass::setupMiniMap(&amp;quot;compass_map_[mapname]&amp;quot;);&lt;br /&gt;
 setdvar(&amp;quot;compassmaxrange&amp;quot;,&amp;quot;2000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
*The compassmaxrange value should be changed to what you like. The lower the number, the shorter the minimap&#039;s range, but the more precise.&lt;br /&gt;
&lt;br /&gt;
*Now, in the CoD5 Compile Tools program, you select your map and [[Call of Duty 5: Update Zone File|update your zone file]]. Add this line:&lt;br /&gt;
&lt;br /&gt;
 material,compass_map_[mapname]&lt;br /&gt;
&lt;br /&gt;
*Now you should [[Call of Duty 5: Releasing General|finalise your map and run it]] your map and run it. The compass should now work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Zeroy|Zeroy.]] 11:53, 10 November 2008 (UTC)&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_FXs_Script_Struct&amp;diff=4422</id>
		<title>Call of Duty 5: FXs Script Struct</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_FXs_Script_Struct&amp;diff=4422"/>
		<updated>2009-02-11T17:29:13Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Nutshell.png]] This tutorial describe an alternative method to spawn FXs and Sound in a map using Radiant and a few scripts. It is similar to the old struct method as done by zeroy.&lt;br /&gt;
This version is by coldair, I have made a couple of additions so people can see how to specify non standard sounds.&lt;br /&gt;
Have fun wakka.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create the csc files (Client Side) ==&lt;br /&gt;
&lt;br /&gt;
The example is based on coldairs ripac map files.&lt;br /&gt;
You will need to change it to match your map name, please make sure you change any other referenced names within&lt;br /&gt;
the files.&lt;br /&gt;
these go in the raw/clientscripts/maps/mp folder&lt;br /&gt;
&lt;br /&gt;
_ripac_struct.csc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// This script automaticly plays a users specified oneshot effect on all prefabs that have the &lt;br /&gt;
// specified &amp;quot;script_struct&amp;quot; and &amp;quot;targetname&amp;quot; It also excepts angles from the &amp;quot;script_struct&amp;quot; &lt;br /&gt;
// but will set a default angle of ( 0, 0, 0 ) if none is defined.&lt;br /&gt;
//&lt;br /&gt;
// example of the syntax: &lt;br /&gt;
// global_FX( &amp;quot;targetname&amp;quot;, &amp;quot;fxIDname&amp;quot;, &amp;quot;fxFile&amp;quot;, &amp;quot;delay&amp;quot;&lt;br /&gt;
#include clientscripts\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
 //Assigning a random delay for start of FX&lt;br /&gt;
 randomStartDelay = randomfloatrange( -20, -15);&lt;br /&gt;
 //Each line describes a different FX&lt;br /&gt;
 global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;wood_chimney_smoke_medFX_origin&amp;quot;, &amp;quot;global_smoke&amp;quot;, &amp;quot;env/smoke/fx_smoke_wood_chimney_med&amp;quot;, randomStartDelay, &amp;quot;smoke_wood_chimney_med&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;pollen_foliage_lgFX_origin&amp;quot;, &amp;quot;global_foliage&amp;quot;, &amp;quot;env/foliage/fx_pollen_lg&amp;quot;, randomStartDelay, &amp;quot;pollen_lg&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;sand_blowing_dirt_lg_wFX_origin&amp;quot;, &amp;quot;global_dirt&amp;quot;, &amp;quot;env/dirt/fx_sand_blowing_lg_w&amp;quot;, randomStartDelay, &amp;quot;sand_blowing_lg_w&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;wire_sparks_electrical_elecFX_origin&amp;quot;, &amp;quot;global_electrical&amp;quot;, &amp;quot;env/electrical/fx_elec_wire_sparks&amp;quot;, randomStartDelay, &amp;quot;elec_wire_sparks&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;rainbow_weatherFX_origin&amp;quot;, &amp;quot;global_weather&amp;quot;, &amp;quot;env/weather/fx_rainbow&amp;quot;, randomStartDelay, &amp;quot;rainbow&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;ray_sun_light_medFX_origin&amp;quot;, &amp;quot;global_light&amp;quot;, &amp;quot;env/light/fx_ray_sun_med&amp;quot;, randomStartDelay, &amp;quot;ray_sun_med&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
global_FX( targetname, fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
 // script_structs&lt;br /&gt;
 ents = getstructarray(targetname,&amp;quot;targetname&amp;quot;);&lt;br /&gt;
 if ( !isdefined( ents ) )&lt;br /&gt;
  return;&lt;br /&gt;
 if ( ents.size &amp;lt;= 0 )&lt;br /&gt;
  return;&lt;br /&gt;
 &lt;br /&gt;
 println(&amp;quot;*** Client : _global_FX - creating &amp;quot; + ents.size + &amp;quot; globalFX &amp;quot; + fxName);&lt;br /&gt;
 &lt;br /&gt;
 for ( i = 0 ; i &amp;lt; ents.size ; i++ )&lt;br /&gt;
 {&lt;br /&gt;
  ent = ents[i] global_FX_create( fxName, fxFile, delay, soundalias );&lt;br /&gt;
  if ( !isdefined( ents[ i ].script_noteworthy ) )&lt;br /&gt;
   continue;&lt;br /&gt;
   &lt;br /&gt;
  note = ents[ i ].script_noteworthy;&lt;br /&gt;
  if ( !isdefined( level._global_fx_ents[ note ] ) )&lt;br /&gt;
  {&lt;br /&gt;
   level._global_fx_ents[ note ] = [];&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  level._global_fx_ents[ note ][ level._global_fx_ents[ note ].size ] = ent;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
global_FX_create( fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 if ( !isdefined( level._effect ) )&lt;br /&gt;
  level._effect = [];&lt;br /&gt;
 if ( !isdefined( level._effect[ fxName ] ) )&lt;br /&gt;
  level._effect[ fxName ] = loadedfx( fxFile );&lt;br /&gt;
 &lt;br /&gt;
 // default effect angles if they dont exist&lt;br /&gt;
 if ( !isdefined( self.angles ) )&lt;br /&gt;
  self.angles = ( 0, 0, 0 );&lt;br /&gt;
 &lt;br /&gt;
 ent = clientscripts\mp\_fx::createOneshotEffect( fxName );&lt;br /&gt;
 ent.v[ &amp;quot;origin&amp;quot; ] = ( self.origin );&lt;br /&gt;
 ent.v[ &amp;quot;angles&amp;quot; ] = ( self.angles );&lt;br /&gt;
 ent.v[ &amp;quot;fxid&amp;quot; ] = fxName;&lt;br /&gt;
 ent.v[ &amp;quot;delay&amp;quot; ] = delay;&lt;br /&gt;
 if ( isdefined( soundalias ) )&lt;br /&gt;
 {&lt;br /&gt;
  ent.v[ &amp;quot;soundalias&amp;quot; ] = soundalias;&lt;br /&gt;
 }&lt;br /&gt;
 return ent;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mp_ripac.csc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Test clientside script for mp_ripac&lt;br /&gt;
#include clientscripts\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
 // teams&lt;br /&gt;
 level.allies_team = &amp;quot;marines&amp;quot;;&lt;br /&gt;
 level.axis_team   = &amp;quot;german&amp;quot;;&lt;br /&gt;
 // _load!&lt;br /&gt;
 clientscripts\mp\_load::main();&lt;br /&gt;
 clientscripts\mp\_ripac_struct::main();&lt;br /&gt;
 // For tanks Eexhaust and treads&lt;br /&gt;
 clientscripts\mp\_panzeriv::main( &amp;quot;vehicle_ger_tracked_panzer4_mp&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
 thread clientscripts\mp\_fx::fx_init(0);&lt;br /&gt;
 thread clientscripts\mp\_audio::audio_init(0);&lt;br /&gt;
 // thread clientscripts\mp\mp_ripac_amb::main();&lt;br /&gt;
 // This needs to be called after all systems have been registered.&lt;br /&gt;
 thread waitforclient(0);&lt;br /&gt;
 println(&amp;quot;*** Client : mp_ripac running...&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create the GSC files (server side)==&lt;br /&gt;
&lt;br /&gt;
So as an Example, coldairs mp_ripac.gsc looks like this:&lt;br /&gt;
You will need to change it to match your map name, please make sure you change any other referenced names within&lt;br /&gt;
the files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
main()&lt;br /&gt;
{ &lt;br /&gt;
maps\mp\_load::main();&lt;br /&gt;
maps\mp\_ripac_struct::main();&lt;br /&gt;
maps\mp\createart\mp_ripac_art::main();&lt;br /&gt;
maps\mp\_compass::setupMiniMap(&amp;quot;compass_map_mp_ripac&amp;quot;);&lt;br /&gt;
game[&amp;quot;allies&amp;quot;] = &amp;quot;marines&amp;quot;; &lt;br /&gt;
game[&amp;quot;axis&amp;quot;] = &amp;quot;german&amp;quot;; &lt;br /&gt;
game[&amp;quot;attackers&amp;quot;] = &amp;quot;allies&amp;quot;; &lt;br /&gt;
game[&amp;quot;defenders&amp;quot;] = &amp;quot;axis&amp;quot;; &lt;br /&gt;
game[&amp;quot;allies_soldiertype&amp;quot;] = &amp;quot;pacific&amp;quot;; &lt;br /&gt;
game[&amp;quot;axis_soldiertype&amp;quot;] = &amp;quot;german&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_a&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_A&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_b&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_B&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_c&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_C&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_d&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_D&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_e&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_E&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_a&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_A&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_b&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_B&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_c&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_C&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_d&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_D&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_e&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_E&amp;quot;;&lt;br /&gt;
setdvar( &amp;quot;r_specularcolorscale&amp;quot;, &amp;quot;1&amp;quot; );&lt;br /&gt;
setdvar(&amp;quot;compassmaxrange&amp;quot;,&amp;quot;1000&amp;quot;);&lt;br /&gt;
// setExpFog(100, 1000, 0.4, 0.425, 0.44, 0.0); &lt;br /&gt;
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Save and exit&lt;br /&gt;
*Using Notepad create a new file under &#039;&#039;&#039;/raw/maps/mp/&#039;&#039;&#039; called _ripac_struct.gsc, inside copy paste the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
#include common_scripts\utility;&lt;br /&gt;
#include maps\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
//Assigning a random delay for start of FX&lt;br /&gt;
randomStartDelay = randomfloatrange( -20, -15);&lt;br /&gt;
//Each line describes a different FX&lt;br /&gt;
global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;wood_chimney_smoke_medFX_origin&amp;quot;, &amp;quot;global_smoke&amp;quot;, &amp;quot;env/smoke/fx_smoke_wood_chimney_med&amp;quot;, randomStartDelay, &amp;quot;smoke_wood_chimney_med&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;pollen_foliage_lgFX_origin&amp;quot;, &amp;quot;global_foliage&amp;quot;, &amp;quot;env/foliage/fx_pollen_lg&amp;quot;, randomStartDelay, &amp;quot;pollen_lg&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;sand_blowing_dirt_lg_wFX_origin&amp;quot;, &amp;quot;global_dirt&amp;quot;, &amp;quot;env/dirt/fx_sand_blowing_lg_w&amp;quot;, randomStartDelay, &amp;quot;sand_blowing_lg_w&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;wire_sparks_electrical_elecFX_origin&amp;quot;, &amp;quot;global_electrical&amp;quot;, &amp;quot;env/electrical/fx_elec_wire_sparks&amp;quot;, randomStartDelay, &amp;quot;elec_wire_sparks&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;rainbow_weatherFX_origin&amp;quot;, &amp;quot;global_weather&amp;quot;, &amp;quot;env/weather/fx_rainbow&amp;quot;, randomStartDelay, &amp;quot;rainbow&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;ray_sun_light_medFX_origin&amp;quot;, &amp;quot;global_light&amp;quot;, &amp;quot;env/light/fx_ray_sun_med&amp;quot;, randomStartDelay, &amp;quot;ray_sun_med&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
global_FX( targetname, fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
// get script_structs created in Radiant&lt;br /&gt;
ents = getstructarray(targetname,&amp;quot;targetname&amp;quot;);&lt;br /&gt;
if ( !isdefined( ents ) )&lt;br /&gt;
return;&lt;br /&gt;
if ( ents.size &amp;lt;= 0 )&lt;br /&gt;
return;&lt;br /&gt;
for ( i = 0 ; i &amp;lt; ents.size ; i++ )&lt;br /&gt;
ents[i] global_FX_create( fxName, fxFile, delay, soundalias );&lt;br /&gt;
}&lt;br /&gt;
global_FX_create( fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
if ( !isdefined( level._effect ) )&lt;br /&gt;
level._effect = [];&lt;br /&gt;
if ( !isdefined( level._effect[ fxName ] ) )&lt;br /&gt;
level._effect[ fxName ] = loadfx( fxFile );&lt;br /&gt;
// default effect angles if they dont exist&lt;br /&gt;
if ( !isdefined( self.angles ) )&lt;br /&gt;
self.angles = ( 0, 0, 0 );&lt;br /&gt;
ent = createOneshotEffect( fxName );&lt;br /&gt;
ent.v[ &amp;quot;origin&amp;quot; ] = ( self.origin );&lt;br /&gt;
ent.v[ &amp;quot;angles&amp;quot; ] = ( self.angles );&lt;br /&gt;
ent.v[ &amp;quot;fxid&amp;quot; ] = fxName;&lt;br /&gt;
ent.v[ &amp;quot;delay&amp;quot; ] = delay;&lt;br /&gt;
if ( isdefined( soundalias ) )&lt;br /&gt;
{&lt;br /&gt;
ent.v[ &amp;quot;soundalias&amp;quot; ] = soundalias;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Save and Exit&lt;br /&gt;
*Finally add the FXs and the new files to your /zone_source/mp_yourmap.csv &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify the server and client side scripts&lt;br /&gt;
rawfile,maps/mp/mp_ripac.gsc&lt;br /&gt;
rawfile,maps/mp/_ripac_struct.gsc&lt;br /&gt;
rawfile,clientscripts/mp/mp_ripac.csc&lt;br /&gt;
rawfile,clientscripts/mp/_ripac_struct.csc&lt;br /&gt;
&lt;br /&gt;
// Below are the Fxs, put the ones you use in, below is an example&lt;br /&gt;
fx,env/smoke/fx_smoke_crater&lt;br /&gt;
fx,env/fire/fx_fire_barrel_small&lt;br /&gt;
fx,env/fire/fx_fire_barrel_pm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If we look at this line found in both server and client side.&lt;br /&gt;
&amp;quot;global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We can see the fx it uses and also the sound, the sound listed is from stock and is the last section in &amp;quot;&amp;quot; after randomStartDelay.&lt;br /&gt;
&lt;br /&gt;
We could specify a custom sound, this will mean you need a soundalias file.&lt;br /&gt;
&lt;br /&gt;
To do this, create the sound alias file within /raw/soundaliases&lt;br /&gt;
&lt;br /&gt;
mp_ripac.csv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name,sequence,file,platform,vol_min,vol_max,pitch_min,pitch_max,dist_min,dist_max,dist_reverb_max,limit_count,limit_type,entity_limit_count,entity_limit_type,bus,priority,spatialized,type,probability,loop,masterslave,loadspec,reverb_falloff_curve,subtitle,compression,randomize_type,secondaryaliasname,chainaliasname,volumefalloffcurve,startdelay,speakermap,reverb_send,lfe percentage,center percentage,platform,envelop_min,envelop_max,envelop percentage,occlusion_level,min_priority,max_priority,min_priority_threshold,max_priority_threshold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Ambient SFX - Static,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,&lt;br /&gt;
# all static global noises u want&lt;br /&gt;
&lt;br /&gt;
customsoundone,,sfx/Levels/pby_fly/fleet/alarm/fires_and_screams.wav,!wii,0.4,0.8,0.9,1.1,50,300,500,,,,,ambience,60,3d,,0.65,,,,curve3,,,pitch,,,curve2,,,,,,,,,,0.2,30,50,0.1,1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We could then change or add a line to the client and serverside like so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;customsoundone&amp;quot; );&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result would be some insane screaming when you go near the fx in question.&lt;br /&gt;
&lt;br /&gt;
Finally we need to add the structs to the map&lt;br /&gt;
&lt;br /&gt;
===============&lt;br /&gt;
EDIT wakka. 11/02/2009 17:28&lt;br /&gt;
==============&lt;br /&gt;
If you wish only to have a sound and not fx &lt;br /&gt;
Do this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;&amp;quot;, randomStartDelay, &amp;quot;customsoundone&amp;quot; );&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==============&lt;br /&gt;
&lt;br /&gt;
==In Radiant==&lt;br /&gt;
&lt;br /&gt;
This method of spawning FXs uses script_struct entities, they are placed in your Level in Radiant&lt;br /&gt;
&lt;br /&gt;
*In radiant, in the 2D view, Right-click and select script&amp;gt;script_struct&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:script_struct1.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Now move and place the Script_struct entity where you want your FX to show up&lt;br /&gt;
*With the Script_struct entity selected bring up its properties with &#039;&#039;n&#039;&#039;&lt;br /&gt;
*Now add the targetname for the FX required (as entered in the _ripac_struct,gsc file above)&lt;br /&gt;
&lt;br /&gt;
 Key:Targetname&lt;br /&gt;
 Value:depends on FX you wish&lt;br /&gt;
&lt;br /&gt;
Possible Values in this Example:&lt;br /&gt;
&lt;br /&gt;
 barrel_fireFX_origin&lt;br /&gt;
 barrel_fireFX_small_origin&lt;br /&gt;
 barrel_smokeFX_origin&lt;br /&gt;
 oil_fire_mdFX_origin&lt;br /&gt;
&lt;br /&gt;
*Another thing to do might be the Angle, if you need to orient your FXs.&lt;br /&gt;
&lt;br /&gt;
 Key: angles&lt;br /&gt;
 Value: Depends on the direction you want to the FX to show, for Fire (going upwards) it would be 180 0 0 ;&lt;br /&gt;
 For a Streetlight (pointing downwards) it would be 90 0 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:script_struct2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Call of Duty 5]]&lt;br /&gt;
[[Category:Mapping]]&lt;br /&gt;
[[Category:FXs]]&lt;br /&gt;
[[Category:Basic Editing]]&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_FXs_Script_Struct&amp;diff=4399</id>
		<title>Call of Duty 5: FXs Script Struct</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_FXs_Script_Struct&amp;diff=4399"/>
		<updated>2009-02-11T11:02:41Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Nutshell.png]] This tutorial describe an alternative method to spawn FXs and Sound in a map using Radiant and a few scripts. It is similar to the old struct method as done by zeroy.&lt;br /&gt;
This version is by coldair, I have made a couple of additions so people can see how to specify non standard sounds.&lt;br /&gt;
Have fun wakka.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create the csc files (Client Side) ==&lt;br /&gt;
&lt;br /&gt;
The example is based on coldairs ripac map files.&lt;br /&gt;
You will need to change it to match your map name, please make sure you change any other referenced names within&lt;br /&gt;
the files.&lt;br /&gt;
these go in the raw/clientscripts/maps/mp folder&lt;br /&gt;
&lt;br /&gt;
_ripac_struct.csc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// This script automaticly plays a users specified oneshot effect on all prefabs that have the &lt;br /&gt;
// specified &amp;quot;script_struct&amp;quot; and &amp;quot;targetname&amp;quot; It also excepts angles from the &amp;quot;script_struct&amp;quot; &lt;br /&gt;
// but will set a default angle of ( 0, 0, 0 ) if none is defined.&lt;br /&gt;
//&lt;br /&gt;
// example of the syntax: &lt;br /&gt;
// global_FX( &amp;quot;targetname&amp;quot;, &amp;quot;fxIDname&amp;quot;, &amp;quot;fxFile&amp;quot;, &amp;quot;delay&amp;quot;&lt;br /&gt;
#include clientscripts\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
 //Assigning a random delay for start of FX&lt;br /&gt;
 randomStartDelay = randomfloatrange( -20, -15);&lt;br /&gt;
 //Each line describes a different FX&lt;br /&gt;
 global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;wood_chimney_smoke_medFX_origin&amp;quot;, &amp;quot;global_smoke&amp;quot;, &amp;quot;env/smoke/fx_smoke_wood_chimney_med&amp;quot;, randomStartDelay, &amp;quot;smoke_wood_chimney_med&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;pollen_foliage_lgFX_origin&amp;quot;, &amp;quot;global_foliage&amp;quot;, &amp;quot;env/foliage/fx_pollen_lg&amp;quot;, randomStartDelay, &amp;quot;pollen_lg&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;sand_blowing_dirt_lg_wFX_origin&amp;quot;, &amp;quot;global_dirt&amp;quot;, &amp;quot;env/dirt/fx_sand_blowing_lg_w&amp;quot;, randomStartDelay, &amp;quot;sand_blowing_lg_w&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;wire_sparks_electrical_elecFX_origin&amp;quot;, &amp;quot;global_electrical&amp;quot;, &amp;quot;env/electrical/fx_elec_wire_sparks&amp;quot;, randomStartDelay, &amp;quot;elec_wire_sparks&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;rainbow_weatherFX_origin&amp;quot;, &amp;quot;global_weather&amp;quot;, &amp;quot;env/weather/fx_rainbow&amp;quot;, randomStartDelay, &amp;quot;rainbow&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;ray_sun_light_medFX_origin&amp;quot;, &amp;quot;global_light&amp;quot;, &amp;quot;env/light/fx_ray_sun_med&amp;quot;, randomStartDelay, &amp;quot;ray_sun_med&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
global_FX( targetname, fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
 // script_structs&lt;br /&gt;
 ents = getstructarray(targetname,&amp;quot;targetname&amp;quot;);&lt;br /&gt;
 if ( !isdefined( ents ) )&lt;br /&gt;
  return;&lt;br /&gt;
 if ( ents.size &amp;lt;= 0 )&lt;br /&gt;
  return;&lt;br /&gt;
 &lt;br /&gt;
 println(&amp;quot;*** Client : _global_FX - creating &amp;quot; + ents.size + &amp;quot; globalFX &amp;quot; + fxName);&lt;br /&gt;
 &lt;br /&gt;
 for ( i = 0 ; i &amp;lt; ents.size ; i++ )&lt;br /&gt;
 {&lt;br /&gt;
  ent = ents[i] global_FX_create( fxName, fxFile, delay, soundalias );&lt;br /&gt;
  if ( !isdefined( ents[ i ].script_noteworthy ) )&lt;br /&gt;
   continue;&lt;br /&gt;
   &lt;br /&gt;
  note = ents[ i ].script_noteworthy;&lt;br /&gt;
  if ( !isdefined( level._global_fx_ents[ note ] ) )&lt;br /&gt;
  {&lt;br /&gt;
   level._global_fx_ents[ note ] = [];&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  level._global_fx_ents[ note ][ level._global_fx_ents[ note ].size ] = ent;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
global_FX_create( fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 if ( !isdefined( level._effect ) )&lt;br /&gt;
  level._effect = [];&lt;br /&gt;
 if ( !isdefined( level._effect[ fxName ] ) )&lt;br /&gt;
  level._effect[ fxName ] = loadedfx( fxFile );&lt;br /&gt;
 &lt;br /&gt;
 // default effect angles if they dont exist&lt;br /&gt;
 if ( !isdefined( self.angles ) )&lt;br /&gt;
  self.angles = ( 0, 0, 0 );&lt;br /&gt;
 &lt;br /&gt;
 ent = clientscripts\mp\_fx::createOneshotEffect( fxName );&lt;br /&gt;
 ent.v[ &amp;quot;origin&amp;quot; ] = ( self.origin );&lt;br /&gt;
 ent.v[ &amp;quot;angles&amp;quot; ] = ( self.angles );&lt;br /&gt;
 ent.v[ &amp;quot;fxid&amp;quot; ] = fxName;&lt;br /&gt;
 ent.v[ &amp;quot;delay&amp;quot; ] = delay;&lt;br /&gt;
 if ( isdefined( soundalias ) )&lt;br /&gt;
 {&lt;br /&gt;
  ent.v[ &amp;quot;soundalias&amp;quot; ] = soundalias;&lt;br /&gt;
 }&lt;br /&gt;
 return ent;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mp_ripac.csc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Test clientside script for mp_ripac&lt;br /&gt;
#include clientscripts\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
 // teams&lt;br /&gt;
 level.allies_team = &amp;quot;marines&amp;quot;;&lt;br /&gt;
 level.axis_team   = &amp;quot;german&amp;quot;;&lt;br /&gt;
 // _load!&lt;br /&gt;
 clientscripts\mp\_load::main();&lt;br /&gt;
 clientscripts\mp\_ripac_struct::main();&lt;br /&gt;
 // For tanks Eexhaust and treads&lt;br /&gt;
 clientscripts\mp\_panzeriv::main( &amp;quot;vehicle_ger_tracked_panzer4_mp&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
 thread clientscripts\mp\_fx::fx_init(0);&lt;br /&gt;
 thread clientscripts\mp\_audio::audio_init(0);&lt;br /&gt;
 // thread clientscripts\mp\mp_ripac_amb::main();&lt;br /&gt;
 // This needs to be called after all systems have been registered.&lt;br /&gt;
 thread waitforclient(0);&lt;br /&gt;
 println(&amp;quot;*** Client : mp_ripac running...&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create the GSC files (server side)==&lt;br /&gt;
&lt;br /&gt;
So as an Example, coldairs mp_ripac.gsc looks like this:&lt;br /&gt;
You will need to change it to match your map name, please make sure you change any other referenced names within&lt;br /&gt;
the files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
main()&lt;br /&gt;
{ &lt;br /&gt;
maps\mp\_load::main();&lt;br /&gt;
maps\mp\_ripac_struct::main();&lt;br /&gt;
maps\mp\createart\mp_ripac_art::main();&lt;br /&gt;
maps\mp\_compass::setupMiniMap(&amp;quot;compass_map_mp_ripac&amp;quot;);&lt;br /&gt;
game[&amp;quot;allies&amp;quot;] = &amp;quot;marines&amp;quot;; &lt;br /&gt;
game[&amp;quot;axis&amp;quot;] = &amp;quot;german&amp;quot;; &lt;br /&gt;
game[&amp;quot;attackers&amp;quot;] = &amp;quot;allies&amp;quot;; &lt;br /&gt;
game[&amp;quot;defenders&amp;quot;] = &amp;quot;axis&amp;quot;; &lt;br /&gt;
game[&amp;quot;allies_soldiertype&amp;quot;] = &amp;quot;pacific&amp;quot;; &lt;br /&gt;
game[&amp;quot;axis_soldiertype&amp;quot;] = &amp;quot;german&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_a&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_A&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_b&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_B&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_c&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_C&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_d&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_D&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_e&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_E&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_a&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_A&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_b&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_B&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_c&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_C&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_d&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_D&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_e&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_E&amp;quot;;&lt;br /&gt;
setdvar( &amp;quot;r_specularcolorscale&amp;quot;, &amp;quot;1&amp;quot; );&lt;br /&gt;
setdvar(&amp;quot;compassmaxrange&amp;quot;,&amp;quot;1000&amp;quot;);&lt;br /&gt;
// setExpFog(100, 1000, 0.4, 0.425, 0.44, 0.0); &lt;br /&gt;
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Save and exit&lt;br /&gt;
*Using Notepad create a new file under &#039;&#039;&#039;/raw/maps/mp/&#039;&#039;&#039; called _ripac_struct.gsc, inside copy paste the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
#include common_scripts\utility;&lt;br /&gt;
#include maps\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
//Assigning a random delay for start of FX&lt;br /&gt;
randomStartDelay = randomfloatrange( -20, -15);&lt;br /&gt;
//Each line describes a different FX&lt;br /&gt;
global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;wood_chimney_smoke_medFX_origin&amp;quot;, &amp;quot;global_smoke&amp;quot;, &amp;quot;env/smoke/fx_smoke_wood_chimney_med&amp;quot;, randomStartDelay, &amp;quot;smoke_wood_chimney_med&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;pollen_foliage_lgFX_origin&amp;quot;, &amp;quot;global_foliage&amp;quot;, &amp;quot;env/foliage/fx_pollen_lg&amp;quot;, randomStartDelay, &amp;quot;pollen_lg&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;sand_blowing_dirt_lg_wFX_origin&amp;quot;, &amp;quot;global_dirt&amp;quot;, &amp;quot;env/dirt/fx_sand_blowing_lg_w&amp;quot;, randomStartDelay, &amp;quot;sand_blowing_lg_w&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;wire_sparks_electrical_elecFX_origin&amp;quot;, &amp;quot;global_electrical&amp;quot;, &amp;quot;env/electrical/fx_elec_wire_sparks&amp;quot;, randomStartDelay, &amp;quot;elec_wire_sparks&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;rainbow_weatherFX_origin&amp;quot;, &amp;quot;global_weather&amp;quot;, &amp;quot;env/weather/fx_rainbow&amp;quot;, randomStartDelay, &amp;quot;rainbow&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;ray_sun_light_medFX_origin&amp;quot;, &amp;quot;global_light&amp;quot;, &amp;quot;env/light/fx_ray_sun_med&amp;quot;, randomStartDelay, &amp;quot;ray_sun_med&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
global_FX( targetname, fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
// get script_structs created in Radiant&lt;br /&gt;
ents = getstructarray(targetname,&amp;quot;targetname&amp;quot;);&lt;br /&gt;
if ( !isdefined( ents ) )&lt;br /&gt;
return;&lt;br /&gt;
if ( ents.size &amp;lt;= 0 )&lt;br /&gt;
return;&lt;br /&gt;
for ( i = 0 ; i &amp;lt; ents.size ; i++ )&lt;br /&gt;
ents[i] global_FX_create( fxName, fxFile, delay, soundalias );&lt;br /&gt;
}&lt;br /&gt;
global_FX_create( fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
if ( !isdefined( level._effect ) )&lt;br /&gt;
level._effect = [];&lt;br /&gt;
if ( !isdefined( level._effect[ fxName ] ) )&lt;br /&gt;
level._effect[ fxName ] = loadfx( fxFile );&lt;br /&gt;
// default effect angles if they dont exist&lt;br /&gt;
if ( !isdefined( self.angles ) )&lt;br /&gt;
self.angles = ( 0, 0, 0 );&lt;br /&gt;
ent = createOneshotEffect( fxName );&lt;br /&gt;
ent.v[ &amp;quot;origin&amp;quot; ] = ( self.origin );&lt;br /&gt;
ent.v[ &amp;quot;angles&amp;quot; ] = ( self.angles );&lt;br /&gt;
ent.v[ &amp;quot;fxid&amp;quot; ] = fxName;&lt;br /&gt;
ent.v[ &amp;quot;delay&amp;quot; ] = delay;&lt;br /&gt;
if ( isdefined( soundalias ) )&lt;br /&gt;
{&lt;br /&gt;
ent.v[ &amp;quot;soundalias&amp;quot; ] = soundalias;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Save and Exit&lt;br /&gt;
*Finally add the FXs and the new files to your /zone_source/mp_yourmap.csv &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify the server and client side scripts&lt;br /&gt;
rawfile,maps/mp/mp_ripac.gsc&lt;br /&gt;
rawfile,maps/mp/_ripac_struct.gsc&lt;br /&gt;
rawfile,clientscripts/mp/mp_ripac.csc&lt;br /&gt;
rawfile,clientscripts/mp/_ripac_struct.csc&lt;br /&gt;
&lt;br /&gt;
// Below are the Fxs, put the ones you use in, below is an example&lt;br /&gt;
fx,env/smoke/fx_smoke_crater&lt;br /&gt;
fx,env/fire/fx_fire_barrel_small&lt;br /&gt;
fx,env/fire/fx_fire_barrel_pm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If we look at this line found in both server and client side.&lt;br /&gt;
&amp;quot;global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We can see the fx it uses and also the sound, the sound listed is from stock and is the last section in &amp;quot;&amp;quot; after randomStartDelay.&lt;br /&gt;
&lt;br /&gt;
We could specify a custom sound, this will mean you need a soundalias file.&lt;br /&gt;
&lt;br /&gt;
To do this, create the sound alias file within /raw/soundaliases&lt;br /&gt;
&lt;br /&gt;
mp_ripac.csv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name,sequence,file,platform,vol_min,vol_max,pitch_min,pitch_max,dist_min,dist_max,dist_reverb_max,limit_count,limit_type,entity_limit_count,entity_limit_type,bus,priority,spatialized,type,probability,loop,masterslave,loadspec,reverb_falloff_curve,subtitle,compression,randomize_type,secondaryaliasname,chainaliasname,volumefalloffcurve,startdelay,speakermap,reverb_send,lfe percentage,center percentage,platform,envelop_min,envelop_max,envelop percentage,occlusion_level,min_priority,max_priority,min_priority_threshold,max_priority_threshold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Ambient SFX - Static,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,&lt;br /&gt;
# all static global noises u want&lt;br /&gt;
&lt;br /&gt;
customsoundone,,sfx/Levels/pby_fly/fleet/alarm/fires_and_screams.wav,!wii,0.4,0.8,0.9,1.1,50,300,500,,,,,ambience,60,3d,,0.65,,,,curve3,,,pitch,,,curve2,,,,,,,,,,0.2,30,50,0.1,1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We could then change or add a line to the client and serverside like so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;customsoundone&amp;quot; );&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result would be some insane screaming when you go near the fx in question.&lt;br /&gt;
&lt;br /&gt;
Finally we need to add the structs to the map&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==In Radiant==&lt;br /&gt;
&lt;br /&gt;
This method of spawning FXs uses script_struct entities, they are placed in your Level in Radiant&lt;br /&gt;
&lt;br /&gt;
*In radiant, in the 2D view, Right-click and select script&amp;gt;script_struct&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:script_struct1.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Now move and place the Script_struct entity where you want your FX to show up&lt;br /&gt;
*With the Script_struct entity selected bring up its properties with &#039;&#039;n&#039;&#039;&lt;br /&gt;
*Now add the targetname for the FX required (as entered in the _ripac_struct,gsc file above)&lt;br /&gt;
&lt;br /&gt;
 Key:Targetname&lt;br /&gt;
 Value:depends on FX you wish&lt;br /&gt;
&lt;br /&gt;
Possible Values in this Example:&lt;br /&gt;
&lt;br /&gt;
 barrel_fireFX_origin&lt;br /&gt;
 barrel_fireFX_small_origin&lt;br /&gt;
 barrel_smokeFX_origin&lt;br /&gt;
 oil_fire_mdFX_origin&lt;br /&gt;
&lt;br /&gt;
*Another thing to do might be the Angle, if you need to orient your FXs.&lt;br /&gt;
&lt;br /&gt;
 Key: angles&lt;br /&gt;
 Value: Depends on the direction you want to the FX to show, for Fire (going upwards) it would be 180 0 0 ;&lt;br /&gt;
 For a Streetlight (pointing downwards) it would be 90 0 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:script_struct2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Call of Duty 5]]&lt;br /&gt;
[[Category:Mapping]]&lt;br /&gt;
[[Category:FXs]]&lt;br /&gt;
[[Category:Basic Editing]]&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_FXs_Script_Struct&amp;diff=4391</id>
		<title>Call of Duty 5: FXs Script Struct</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_FXs_Script_Struct&amp;diff=4391"/>
		<updated>2009-02-11T11:01:11Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Nutshell.png]] This tutorial describe an alternative method to spawn FXs and Sound in a map using Radiant and a few scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create the csc files (Client Side) ==&lt;br /&gt;
&lt;br /&gt;
The example is based on coldairs ripac map files.&lt;br /&gt;
You will need to change it to match your map name, please make sure you change any other referenced names within&lt;br /&gt;
the files.&lt;br /&gt;
these go in the raw/clientscripts/maps/mp folder&lt;br /&gt;
&lt;br /&gt;
_ripac_struct.csc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// This script automaticly plays a users specified oneshot effect on all prefabs that have the &lt;br /&gt;
// specified &amp;quot;script_struct&amp;quot; and &amp;quot;targetname&amp;quot; It also excepts angles from the &amp;quot;script_struct&amp;quot; &lt;br /&gt;
// but will set a default angle of ( 0, 0, 0 ) if none is defined.&lt;br /&gt;
//&lt;br /&gt;
// example of the syntax: &lt;br /&gt;
// global_FX( &amp;quot;targetname&amp;quot;, &amp;quot;fxIDname&amp;quot;, &amp;quot;fxFile&amp;quot;, &amp;quot;delay&amp;quot;&lt;br /&gt;
#include clientscripts\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
 //Assigning a random delay for start of FX&lt;br /&gt;
 randomStartDelay = randomfloatrange( -20, -15);&lt;br /&gt;
 //Each line describes a different FX&lt;br /&gt;
 global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;wood_chimney_smoke_medFX_origin&amp;quot;, &amp;quot;global_smoke&amp;quot;, &amp;quot;env/smoke/fx_smoke_wood_chimney_med&amp;quot;, randomStartDelay, &amp;quot;smoke_wood_chimney_med&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;pollen_foliage_lgFX_origin&amp;quot;, &amp;quot;global_foliage&amp;quot;, &amp;quot;env/foliage/fx_pollen_lg&amp;quot;, randomStartDelay, &amp;quot;pollen_lg&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;sand_blowing_dirt_lg_wFX_origin&amp;quot;, &amp;quot;global_dirt&amp;quot;, &amp;quot;env/dirt/fx_sand_blowing_lg_w&amp;quot;, randomStartDelay, &amp;quot;sand_blowing_lg_w&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;wire_sparks_electrical_elecFX_origin&amp;quot;, &amp;quot;global_electrical&amp;quot;, &amp;quot;env/electrical/fx_elec_wire_sparks&amp;quot;, randomStartDelay, &amp;quot;elec_wire_sparks&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;rainbow_weatherFX_origin&amp;quot;, &amp;quot;global_weather&amp;quot;, &amp;quot;env/weather/fx_rainbow&amp;quot;, randomStartDelay, &amp;quot;rainbow&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;ray_sun_light_medFX_origin&amp;quot;, &amp;quot;global_light&amp;quot;, &amp;quot;env/light/fx_ray_sun_med&amp;quot;, randomStartDelay, &amp;quot;ray_sun_med&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
global_FX( targetname, fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
 // script_structs&lt;br /&gt;
 ents = getstructarray(targetname,&amp;quot;targetname&amp;quot;);&lt;br /&gt;
 if ( !isdefined( ents ) )&lt;br /&gt;
  return;&lt;br /&gt;
 if ( ents.size &amp;lt;= 0 )&lt;br /&gt;
  return;&lt;br /&gt;
 &lt;br /&gt;
 println(&amp;quot;*** Client : _global_FX - creating &amp;quot; + ents.size + &amp;quot; globalFX &amp;quot; + fxName);&lt;br /&gt;
 &lt;br /&gt;
 for ( i = 0 ; i &amp;lt; ents.size ; i++ )&lt;br /&gt;
 {&lt;br /&gt;
  ent = ents[i] global_FX_create( fxName, fxFile, delay, soundalias );&lt;br /&gt;
  if ( !isdefined( ents[ i ].script_noteworthy ) )&lt;br /&gt;
   continue;&lt;br /&gt;
   &lt;br /&gt;
  note = ents[ i ].script_noteworthy;&lt;br /&gt;
  if ( !isdefined( level._global_fx_ents[ note ] ) )&lt;br /&gt;
  {&lt;br /&gt;
   level._global_fx_ents[ note ] = [];&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  level._global_fx_ents[ note ][ level._global_fx_ents[ note ].size ] = ent;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
global_FX_create( fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 if ( !isdefined( level._effect ) )&lt;br /&gt;
  level._effect = [];&lt;br /&gt;
 if ( !isdefined( level._effect[ fxName ] ) )&lt;br /&gt;
  level._effect[ fxName ] = loadedfx( fxFile );&lt;br /&gt;
 &lt;br /&gt;
 // default effect angles if they dont exist&lt;br /&gt;
 if ( !isdefined( self.angles ) )&lt;br /&gt;
  self.angles = ( 0, 0, 0 );&lt;br /&gt;
 &lt;br /&gt;
 ent = clientscripts\mp\_fx::createOneshotEffect( fxName );&lt;br /&gt;
 ent.v[ &amp;quot;origin&amp;quot; ] = ( self.origin );&lt;br /&gt;
 ent.v[ &amp;quot;angles&amp;quot; ] = ( self.angles );&lt;br /&gt;
 ent.v[ &amp;quot;fxid&amp;quot; ] = fxName;&lt;br /&gt;
 ent.v[ &amp;quot;delay&amp;quot; ] = delay;&lt;br /&gt;
 if ( isdefined( soundalias ) )&lt;br /&gt;
 {&lt;br /&gt;
  ent.v[ &amp;quot;soundalias&amp;quot; ] = soundalias;&lt;br /&gt;
 }&lt;br /&gt;
 return ent;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mp_ripac.csc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Test clientside script for mp_ripac&lt;br /&gt;
#include clientscripts\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
 // teams&lt;br /&gt;
 level.allies_team = &amp;quot;marines&amp;quot;;&lt;br /&gt;
 level.axis_team   = &amp;quot;german&amp;quot;;&lt;br /&gt;
 // _load!&lt;br /&gt;
 clientscripts\mp\_load::main();&lt;br /&gt;
 clientscripts\mp\_ripac_struct::main();&lt;br /&gt;
 // For tanks Eexhaust and treads&lt;br /&gt;
 clientscripts\mp\_panzeriv::main( &amp;quot;vehicle_ger_tracked_panzer4_mp&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
 thread clientscripts\mp\_fx::fx_init(0);&lt;br /&gt;
 thread clientscripts\mp\_audio::audio_init(0);&lt;br /&gt;
 // thread clientscripts\mp\mp_ripac_amb::main();&lt;br /&gt;
 // This needs to be called after all systems have been registered.&lt;br /&gt;
 thread waitforclient(0);&lt;br /&gt;
 println(&amp;quot;*** Client : mp_ripac running...&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create the GSC files (server side)==&lt;br /&gt;
&lt;br /&gt;
So as an Example, coldairs mp_ripac.gsc looks like this:&lt;br /&gt;
You will need to change it to match your map name, please make sure you change any other referenced names within&lt;br /&gt;
the files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
main()&lt;br /&gt;
{ &lt;br /&gt;
maps\mp\_load::main();&lt;br /&gt;
maps\mp\_ripac_struct::main();&lt;br /&gt;
maps\mp\createart\mp_ripac_art::main();&lt;br /&gt;
maps\mp\_compass::setupMiniMap(&amp;quot;compass_map_mp_ripac&amp;quot;);&lt;br /&gt;
game[&amp;quot;allies&amp;quot;] = &amp;quot;marines&amp;quot;; &lt;br /&gt;
game[&amp;quot;axis&amp;quot;] = &amp;quot;german&amp;quot;; &lt;br /&gt;
game[&amp;quot;attackers&amp;quot;] = &amp;quot;allies&amp;quot;; &lt;br /&gt;
game[&amp;quot;defenders&amp;quot;] = &amp;quot;axis&amp;quot;; &lt;br /&gt;
game[&amp;quot;allies_soldiertype&amp;quot;] = &amp;quot;pacific&amp;quot;; &lt;br /&gt;
game[&amp;quot;axis_soldiertype&amp;quot;] = &amp;quot;german&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_a&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_A&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_b&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_B&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_c&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_C&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_d&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_D&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_e&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_E&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_a&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_A&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_b&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_B&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_c&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_C&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_d&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_D&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_e&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_E&amp;quot;;&lt;br /&gt;
setdvar( &amp;quot;r_specularcolorscale&amp;quot;, &amp;quot;1&amp;quot; );&lt;br /&gt;
setdvar(&amp;quot;compassmaxrange&amp;quot;,&amp;quot;1000&amp;quot;);&lt;br /&gt;
// setExpFog(100, 1000, 0.4, 0.425, 0.44, 0.0); &lt;br /&gt;
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Save and exit&lt;br /&gt;
*Using Notepad create a new file under &#039;&#039;&#039;/raw/maps/mp/&#039;&#039;&#039; called _ripac_struct.gsc, inside copy paste the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
#include common_scripts\utility;&lt;br /&gt;
#include maps\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
//Assigning a random delay for start of FX&lt;br /&gt;
randomStartDelay = randomfloatrange( -20, -15);&lt;br /&gt;
//Each line describes a different FX&lt;br /&gt;
global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;wood_chimney_smoke_medFX_origin&amp;quot;, &amp;quot;global_smoke&amp;quot;, &amp;quot;env/smoke/fx_smoke_wood_chimney_med&amp;quot;, randomStartDelay, &amp;quot;smoke_wood_chimney_med&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;pollen_foliage_lgFX_origin&amp;quot;, &amp;quot;global_foliage&amp;quot;, &amp;quot;env/foliage/fx_pollen_lg&amp;quot;, randomStartDelay, &amp;quot;pollen_lg&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;sand_blowing_dirt_lg_wFX_origin&amp;quot;, &amp;quot;global_dirt&amp;quot;, &amp;quot;env/dirt/fx_sand_blowing_lg_w&amp;quot;, randomStartDelay, &amp;quot;sand_blowing_lg_w&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;wire_sparks_electrical_elecFX_origin&amp;quot;, &amp;quot;global_electrical&amp;quot;, &amp;quot;env/electrical/fx_elec_wire_sparks&amp;quot;, randomStartDelay, &amp;quot;elec_wire_sparks&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;rainbow_weatherFX_origin&amp;quot;, &amp;quot;global_weather&amp;quot;, &amp;quot;env/weather/fx_rainbow&amp;quot;, randomStartDelay, &amp;quot;rainbow&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;ray_sun_light_medFX_origin&amp;quot;, &amp;quot;global_light&amp;quot;, &amp;quot;env/light/fx_ray_sun_med&amp;quot;, randomStartDelay, &amp;quot;ray_sun_med&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
global_FX( targetname, fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
// get script_structs created in Radiant&lt;br /&gt;
ents = getstructarray(targetname,&amp;quot;targetname&amp;quot;);&lt;br /&gt;
if ( !isdefined( ents ) )&lt;br /&gt;
return;&lt;br /&gt;
if ( ents.size &amp;lt;= 0 )&lt;br /&gt;
return;&lt;br /&gt;
for ( i = 0 ; i &amp;lt; ents.size ; i++ )&lt;br /&gt;
ents[i] global_FX_create( fxName, fxFile, delay, soundalias );&lt;br /&gt;
}&lt;br /&gt;
global_FX_create( fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
if ( !isdefined( level._effect ) )&lt;br /&gt;
level._effect = [];&lt;br /&gt;
if ( !isdefined( level._effect[ fxName ] ) )&lt;br /&gt;
level._effect[ fxName ] = loadfx( fxFile );&lt;br /&gt;
// default effect angles if they dont exist&lt;br /&gt;
if ( !isdefined( self.angles ) )&lt;br /&gt;
self.angles = ( 0, 0, 0 );&lt;br /&gt;
ent = createOneshotEffect( fxName );&lt;br /&gt;
ent.v[ &amp;quot;origin&amp;quot; ] = ( self.origin );&lt;br /&gt;
ent.v[ &amp;quot;angles&amp;quot; ] = ( self.angles );&lt;br /&gt;
ent.v[ &amp;quot;fxid&amp;quot; ] = fxName;&lt;br /&gt;
ent.v[ &amp;quot;delay&amp;quot; ] = delay;&lt;br /&gt;
if ( isdefined( soundalias ) )&lt;br /&gt;
{&lt;br /&gt;
ent.v[ &amp;quot;soundalias&amp;quot; ] = soundalias;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Save and Exit&lt;br /&gt;
*Finally add the FXs and the new files to your /zone_source/mp_yourmap.csv &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify the server and client side scripts&lt;br /&gt;
rawfile,maps/mp/mp_ripac.gsc&lt;br /&gt;
rawfile,maps/mp/_ripac_struct.gsc&lt;br /&gt;
rawfile,clientscripts/mp/mp_ripac.csc&lt;br /&gt;
rawfile,clientscripts/mp/_ripac_struct.csc&lt;br /&gt;
&lt;br /&gt;
// Below are the Fxs, put the ones you use in, below is an example&lt;br /&gt;
fx,env/smoke/fx_smoke_crater&lt;br /&gt;
fx,env/fire/fx_fire_barrel_small&lt;br /&gt;
fx,env/fire/fx_fire_barrel_pm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If we look at this line found in both server and client side.&lt;br /&gt;
&amp;quot;global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We can see the fx it uses and also the sound, the sound listed is from stock and is the last section in &amp;quot;&amp;quot; after randomStartDelay.&lt;br /&gt;
&lt;br /&gt;
We could specify a custom sound, this will mean you need a soundalias file.&lt;br /&gt;
&lt;br /&gt;
To do this, create the sound alias file within /raw/soundaliases&lt;br /&gt;
&lt;br /&gt;
mp_ripac.csv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name,sequence,file,platform,vol_min,vol_max,pitch_min,pitch_max,dist_min,dist_max,dist_reverb_max,limit_count,limit_type,entity_limit_count,entity_limit_type,bus,priority,spatialized,type,probability,loop,masterslave,loadspec,reverb_falloff_curve,subtitle,compression,randomize_type,secondaryaliasname,chainaliasname,volumefalloffcurve,startdelay,speakermap,reverb_send,lfe percentage,center percentage,platform,envelop_min,envelop_max,envelop percentage,occlusion_level,min_priority,max_priority,min_priority_threshold,max_priority_threshold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Ambient SFX - Static,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,&lt;br /&gt;
# all static global noises u want&lt;br /&gt;
&lt;br /&gt;
customsoundone,,sfx/Levels/pby_fly/fleet/alarm/fires_and_screams.wav,!wii,0.4,0.8,0.9,1.1,50,300,500,,,,,ambience,60,3d,,0.65,,,,curve3,,,pitch,,,curve2,,,,,,,,,,0.2,30,50,0.1,1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We could then change or add a line to the client and serverside like so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;customsoundone&amp;quot; );&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result would be some insane screaming when you go near the fx in question.&lt;br /&gt;
&lt;br /&gt;
Finally we need to add the structs to the map&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==In Radiant==&lt;br /&gt;
&lt;br /&gt;
This method of spawning FXs uses script_struct entities, they are placed in your Level in Radiant&lt;br /&gt;
&lt;br /&gt;
*In radiant, in the 2D view, Right-click and select script&amp;gt;script_struct&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:script_struct1.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Now move and place the Script_struct entity where you want your FX to show up&lt;br /&gt;
*With the Script_struct entity selected bring up its properties with &#039;&#039;n&#039;&#039;&lt;br /&gt;
*Now add the targetname for the FX required (as entered in the _ripac_struct,gsc file above)&lt;br /&gt;
&lt;br /&gt;
 Key:Targetname&lt;br /&gt;
 Value:depends on FX you wish&lt;br /&gt;
&lt;br /&gt;
Possible Values in this Example:&lt;br /&gt;
&lt;br /&gt;
 barrel_fireFX_origin&lt;br /&gt;
 barrel_fireFX_small_origin&lt;br /&gt;
 barrel_smokeFX_origin&lt;br /&gt;
 oil_fire_mdFX_origin&lt;br /&gt;
&lt;br /&gt;
*Another thing to do might be the Angle, if you need to orient your FXs.&lt;br /&gt;
&lt;br /&gt;
 Key: angles&lt;br /&gt;
 Value: Depends on the direction you want to the FX to show, for Fire (going upwards) it would be 180 0 0 ;&lt;br /&gt;
 For a Streetlight (pointing downwards) it would be 90 0 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:script_struct2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Call of Duty 5]]&lt;br /&gt;
[[Category:Mapping]]&lt;br /&gt;
[[Category:FXs]]&lt;br /&gt;
[[Category:Basic Editing]]&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_FXs_Script_Struct&amp;diff=4388</id>
		<title>Call of Duty 5: FXs Script Struct</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_FXs_Script_Struct&amp;diff=4388"/>
		<updated>2009-02-11T10:59:50Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Nutshell.png]] This tutorial describe an alternative method to spawn FXs and Sound in a map using Radiant and a few scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create the csc files (Client Side) ==&lt;br /&gt;
&lt;br /&gt;
The example is based on coldairs ripac map files.&lt;br /&gt;
You will need to change it to match your map name, please make sure you change any other referenced names within&lt;br /&gt;
the files.&lt;br /&gt;
these go in the raw/clientscripts/maps/mp folder&lt;br /&gt;
&lt;br /&gt;
_ripac_struct.csc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// This script automaticly plays a users specified oneshot effect on all prefabs that have the &lt;br /&gt;
// specified &amp;quot;script_struct&amp;quot; and &amp;quot;targetname&amp;quot; It also excepts angles from the &amp;quot;script_struct&amp;quot; &lt;br /&gt;
// but will set a default angle of ( 0, 0, 0 ) if none is defined.&lt;br /&gt;
//&lt;br /&gt;
// example of the syntax: &lt;br /&gt;
// global_FX( &amp;quot;targetname&amp;quot;, &amp;quot;fxIDname&amp;quot;, &amp;quot;fxFile&amp;quot;, &amp;quot;delay&amp;quot;&lt;br /&gt;
#include clientscripts\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
 //Assigning a random delay for start of FX&lt;br /&gt;
 randomStartDelay = randomfloatrange( -20, -15);&lt;br /&gt;
 //Each line describes a different FX&lt;br /&gt;
 global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;wood_chimney_smoke_medFX_origin&amp;quot;, &amp;quot;global_smoke&amp;quot;, &amp;quot;env/smoke/fx_smoke_wood_chimney_med&amp;quot;, randomStartDelay, &amp;quot;smoke_wood_chimney_med&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;pollen_foliage_lgFX_origin&amp;quot;, &amp;quot;global_foliage&amp;quot;, &amp;quot;env/foliage/fx_pollen_lg&amp;quot;, randomStartDelay, &amp;quot;pollen_lg&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;sand_blowing_dirt_lg_wFX_origin&amp;quot;, &amp;quot;global_dirt&amp;quot;, &amp;quot;env/dirt/fx_sand_blowing_lg_w&amp;quot;, randomStartDelay, &amp;quot;sand_blowing_lg_w&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;wire_sparks_electrical_elecFX_origin&amp;quot;, &amp;quot;global_electrical&amp;quot;, &amp;quot;env/electrical/fx_elec_wire_sparks&amp;quot;, randomStartDelay, &amp;quot;elec_wire_sparks&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;rainbow_weatherFX_origin&amp;quot;, &amp;quot;global_weather&amp;quot;, &amp;quot;env/weather/fx_rainbow&amp;quot;, randomStartDelay, &amp;quot;rainbow&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;ray_sun_light_medFX_origin&amp;quot;, &amp;quot;global_light&amp;quot;, &amp;quot;env/light/fx_ray_sun_med&amp;quot;, randomStartDelay, &amp;quot;ray_sun_med&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
global_FX( targetname, fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
 // script_structs&lt;br /&gt;
 ents = getstructarray(targetname,&amp;quot;targetname&amp;quot;);&lt;br /&gt;
 if ( !isdefined( ents ) )&lt;br /&gt;
  return;&lt;br /&gt;
 if ( ents.size &amp;lt;= 0 )&lt;br /&gt;
  return;&lt;br /&gt;
 &lt;br /&gt;
 println(&amp;quot;*** Client : _global_FX - creating &amp;quot; + ents.size + &amp;quot; globalFX &amp;quot; + fxName);&lt;br /&gt;
 &lt;br /&gt;
 for ( i = 0 ; i &amp;lt; ents.size ; i++ )&lt;br /&gt;
 {&lt;br /&gt;
  ent = ents[i] global_FX_create( fxName, fxFile, delay, soundalias );&lt;br /&gt;
  if ( !isdefined( ents[ i ].script_noteworthy ) )&lt;br /&gt;
   continue;&lt;br /&gt;
   &lt;br /&gt;
  note = ents[ i ].script_noteworthy;&lt;br /&gt;
  if ( !isdefined( level._global_fx_ents[ note ] ) )&lt;br /&gt;
  {&lt;br /&gt;
   level._global_fx_ents[ note ] = [];&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  level._global_fx_ents[ note ][ level._global_fx_ents[ note ].size ] = ent;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
global_FX_create( fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 if ( !isdefined( level._effect ) )&lt;br /&gt;
  level._effect = [];&lt;br /&gt;
 if ( !isdefined( level._effect[ fxName ] ) )&lt;br /&gt;
  level._effect[ fxName ] = loadedfx( fxFile );&lt;br /&gt;
 &lt;br /&gt;
 // default effect angles if they dont exist&lt;br /&gt;
 if ( !isdefined( self.angles ) )&lt;br /&gt;
  self.angles = ( 0, 0, 0 );&lt;br /&gt;
 &lt;br /&gt;
 ent = clientscripts\mp\_fx::createOneshotEffect( fxName );&lt;br /&gt;
 ent.v[ &amp;quot;origin&amp;quot; ] = ( self.origin );&lt;br /&gt;
 ent.v[ &amp;quot;angles&amp;quot; ] = ( self.angles );&lt;br /&gt;
 ent.v[ &amp;quot;fxid&amp;quot; ] = fxName;&lt;br /&gt;
 ent.v[ &amp;quot;delay&amp;quot; ] = delay;&lt;br /&gt;
 if ( isdefined( soundalias ) )&lt;br /&gt;
 {&lt;br /&gt;
  ent.v[ &amp;quot;soundalias&amp;quot; ] = soundalias;&lt;br /&gt;
 }&lt;br /&gt;
 return ent;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mp_ripac.csc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Test clientside script for mp_ripac&lt;br /&gt;
#include clientscripts\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
 // teams&lt;br /&gt;
 level.allies_team = &amp;quot;marines&amp;quot;;&lt;br /&gt;
 level.axis_team   = &amp;quot;german&amp;quot;;&lt;br /&gt;
 // _load!&lt;br /&gt;
 clientscripts\mp\_load::main();&lt;br /&gt;
 clientscripts\mp\_ripac_struct::main();&lt;br /&gt;
 // For tanks Eexhaust and treads&lt;br /&gt;
 clientscripts\mp\_panzeriv::main( &amp;quot;vehicle_ger_tracked_panzer4_mp&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
 thread clientscripts\mp\_fx::fx_init(0);&lt;br /&gt;
 thread clientscripts\mp\_audio::audio_init(0);&lt;br /&gt;
 // thread clientscripts\mp\mp_ripac_amb::main();&lt;br /&gt;
 // This needs to be called after all systems have been registered.&lt;br /&gt;
 thread waitforclient(0);&lt;br /&gt;
 println(&amp;quot;*** Client : mp_ripac running...&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create the GSC files (server side)==&lt;br /&gt;
&lt;br /&gt;
So as an Example, coldairs mp_ripac.gsc looks like this:&lt;br /&gt;
You will need to change it to match your map name, please make sure you change any other referenced names within&lt;br /&gt;
the files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
main()&lt;br /&gt;
{ &lt;br /&gt;
maps\mp\_load::main();&lt;br /&gt;
maps\mp\_ripac_struct::main();&lt;br /&gt;
maps\mp\createart\mp_ripac_art::main();&lt;br /&gt;
maps\mp\_compass::setupMiniMap(&amp;quot;compass_map_mp_ripac&amp;quot;);&lt;br /&gt;
game[&amp;quot;allies&amp;quot;] = &amp;quot;marines&amp;quot;; &lt;br /&gt;
game[&amp;quot;axis&amp;quot;] = &amp;quot;german&amp;quot;; &lt;br /&gt;
game[&amp;quot;attackers&amp;quot;] = &amp;quot;allies&amp;quot;; &lt;br /&gt;
game[&amp;quot;defenders&amp;quot;] = &amp;quot;axis&amp;quot;; &lt;br /&gt;
game[&amp;quot;allies_soldiertype&amp;quot;] = &amp;quot;pacific&amp;quot;; &lt;br /&gt;
game[&amp;quot;axis_soldiertype&amp;quot;] = &amp;quot;german&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_a&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_A&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_b&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_B&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_c&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_C&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_d&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_D&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_e&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_E&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_a&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_A&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_b&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_B&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_c&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_C&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_d&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_D&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_e&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_E&amp;quot;;&lt;br /&gt;
setdvar( &amp;quot;r_specularcolorscale&amp;quot;, &amp;quot;1&amp;quot; );&lt;br /&gt;
setdvar(&amp;quot;compassmaxrange&amp;quot;,&amp;quot;1000&amp;quot;);&lt;br /&gt;
// setExpFog(100, 1000, 0.4, 0.425, 0.44, 0.0); &lt;br /&gt;
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Save and exit&lt;br /&gt;
*Using Notepad create a new file under &#039;&#039;&#039;/raw/maps/mp/&#039;&#039;&#039; called _ripac_struct.gsc, inside copy paste the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
#include common_scripts\utility;&lt;br /&gt;
#include maps\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
//Assigning a random delay for start of FX&lt;br /&gt;
randomStartDelay = randomfloatrange( -20, -15);&lt;br /&gt;
//Each line describes a different FX&lt;br /&gt;
global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;wood_chimney_smoke_medFX_origin&amp;quot;, &amp;quot;global_smoke&amp;quot;, &amp;quot;env/smoke/fx_smoke_wood_chimney_med&amp;quot;, randomStartDelay, &amp;quot;smoke_wood_chimney_med&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;pollen_foliage_lgFX_origin&amp;quot;, &amp;quot;global_foliage&amp;quot;, &amp;quot;env/foliage/fx_pollen_lg&amp;quot;, randomStartDelay, &amp;quot;pollen_lg&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;sand_blowing_dirt_lg_wFX_origin&amp;quot;, &amp;quot;global_dirt&amp;quot;, &amp;quot;env/dirt/fx_sand_blowing_lg_w&amp;quot;, randomStartDelay, &amp;quot;sand_blowing_lg_w&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;wire_sparks_electrical_elecFX_origin&amp;quot;, &amp;quot;global_electrical&amp;quot;, &amp;quot;env/electrical/fx_elec_wire_sparks&amp;quot;, randomStartDelay, &amp;quot;elec_wire_sparks&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;rainbow_weatherFX_origin&amp;quot;, &amp;quot;global_weather&amp;quot;, &amp;quot;env/weather/fx_rainbow&amp;quot;, randomStartDelay, &amp;quot;rainbow&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;ray_sun_light_medFX_origin&amp;quot;, &amp;quot;global_light&amp;quot;, &amp;quot;env/light/fx_ray_sun_med&amp;quot;, randomStartDelay, &amp;quot;ray_sun_med&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
global_FX( targetname, fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
// get script_structs created in Radiant&lt;br /&gt;
ents = getstructarray(targetname,&amp;quot;targetname&amp;quot;);&lt;br /&gt;
if ( !isdefined( ents ) )&lt;br /&gt;
return;&lt;br /&gt;
if ( ents.size &amp;lt;= 0 )&lt;br /&gt;
return;&lt;br /&gt;
for ( i = 0 ; i &amp;lt; ents.size ; i++ )&lt;br /&gt;
ents[i] global_FX_create( fxName, fxFile, delay, soundalias );&lt;br /&gt;
}&lt;br /&gt;
global_FX_create( fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
if ( !isdefined( level._effect ) )&lt;br /&gt;
level._effect = [];&lt;br /&gt;
if ( !isdefined( level._effect[ fxName ] ) )&lt;br /&gt;
level._effect[ fxName ] = loadfx( fxFile );&lt;br /&gt;
// default effect angles if they dont exist&lt;br /&gt;
if ( !isdefined( self.angles ) )&lt;br /&gt;
self.angles = ( 0, 0, 0 );&lt;br /&gt;
ent = createOneshotEffect( fxName );&lt;br /&gt;
ent.v[ &amp;quot;origin&amp;quot; ] = ( self.origin );&lt;br /&gt;
ent.v[ &amp;quot;angles&amp;quot; ] = ( self.angles );&lt;br /&gt;
ent.v[ &amp;quot;fxid&amp;quot; ] = fxName;&lt;br /&gt;
ent.v[ &amp;quot;delay&amp;quot; ] = delay;&lt;br /&gt;
if ( isdefined( soundalias ) )&lt;br /&gt;
{&lt;br /&gt;
ent.v[ &amp;quot;soundalias&amp;quot; ] = soundalias;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Save and Exit&lt;br /&gt;
*Finally add the FXs and the new files to your /zone_source/mp_yourmap.csv &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify the server and client side scripts&lt;br /&gt;
rawfile,maps/mp/mp_ripac.gsc&lt;br /&gt;
rawfile,maps/mp/_ripac_struct.gsc&lt;br /&gt;
rawfile,clientscripts/mp/mp_ripac.csc&lt;br /&gt;
rawfile,clientscripts/mp/_ripac_struct.csc&lt;br /&gt;
&lt;br /&gt;
// Below are the Fxs, put the ones you use in below&lt;br /&gt;
fx,env/smoke/fx_smoke_crater&lt;br /&gt;
fx,env/fire/fx_fire_barrel_small&lt;br /&gt;
fx,env/fire/fx_fire_barrel_pm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If we look at this line found in both server and client side.&lt;br /&gt;
&amp;quot;global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We can see the fx it uses and also the sound, the sound listed is from stock and is the last section in &amp;quot;&amp;quot; after randomStartDelay.&lt;br /&gt;
&lt;br /&gt;
We could specify a custom sound, this will mean you need a soundalias file.&lt;br /&gt;
&lt;br /&gt;
To do this, create the sound alias file within /raw/soundaliases&lt;br /&gt;
&lt;br /&gt;
mp_ripac.csv&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name,sequence,file,platform,vol_min,vol_max,pitch_min,pitch_max,dist_min,dist_max,dist_reverb_max,limit_count,limit_type,entity_limit_count,entity_limit_type,bus,priority,spatialized,type,probability,loop,masterslave,loadspec,reverb_falloff_curve,subtitle,compression,randomize_type,secondaryaliasname,chainaliasname,volumefalloffcurve,startdelay,speakermap,reverb_send,lfe percentage,center percentage,platform,envelop_min,envelop_max,envelop percentage,occlusion_level,min_priority,max_priority,min_priority_threshold,max_priority_threshold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Ambient SFX - Static,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,&lt;br /&gt;
# all static global noises u want&lt;br /&gt;
&lt;br /&gt;
customsoundone,,sfx/Levels/pby_fly/fleet/alarm/fires_and_screams.wav,!wii,0.4,0.8,0.9,1.1,50,300,500,,,,,ambience,60,3d,,0.65,,,,curve3,,,pitch,,,curve2,,,,,,,,,,0.2,30,50,0.1,1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We could then change or add a line to the client and serverside like so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;customsoundone&amp;quot; );&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result would be some insane screaming when you go near the fx in question.&lt;br /&gt;
&lt;br /&gt;
Finally we need to add the structs to the map&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==In Radiant==&lt;br /&gt;
&lt;br /&gt;
This method of spawning FXs uses script_struct entities, they are placed in your Level in Radiant&lt;br /&gt;
&lt;br /&gt;
*In radiant, in the 2D view, Right-click and select script&amp;gt;script_struct&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:script_struct1.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Now move and place the Script_struct entity where you want your FX to show up&lt;br /&gt;
*With the Script_struct entity selected bring up its properties with &#039;&#039;n&#039;&#039;&lt;br /&gt;
*Now add the targetname for the FX required (as entered in the _ripac_struct,gsc file above)&lt;br /&gt;
&lt;br /&gt;
 Key:Targetname&lt;br /&gt;
 Value:depends on FX you wish&lt;br /&gt;
&lt;br /&gt;
Possible Values in this Example:&lt;br /&gt;
&lt;br /&gt;
 barrel_fireFX_origin&lt;br /&gt;
 barrel_fireFX_small_origin&lt;br /&gt;
 barrel_smokeFX_origin&lt;br /&gt;
&lt;br /&gt;
*Another thing to do might be the Angle, if you need to orient your FXs.&lt;br /&gt;
&lt;br /&gt;
 Key: angles&lt;br /&gt;
 Value: Depends on the direction you want to the FX to show, for Fire (going upwards) it would be 180 0 0 ;&lt;br /&gt;
 For a Streetlight (pointing downwards) it would be 90 0 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:script_struct2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;br /&gt;
&lt;br /&gt;
[[Image:firefx_script_struct.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Call of Duty 5]]&lt;br /&gt;
[[Category:Mapping]]&lt;br /&gt;
[[Category:FXs]]&lt;br /&gt;
[[Category:Basic Editing]]&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_FXs_Script_Struct&amp;diff=4376</id>
		<title>Call of Duty 5: FXs Script Struct</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_FXs_Script_Struct&amp;diff=4376"/>
		<updated>2009-02-11T10:52:56Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Nutshell.png]] This tutorial describe an alternative method to spawn FXs in a map using Radiant and a few scripts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The example below will show you how to spawn 3 FXs in your map:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 env/smoke/fx_smoke_crater&lt;br /&gt;
 env/fire/fx_fire_barrel_small&lt;br /&gt;
 env/fire/fx_fire_barrel_pm&lt;br /&gt;
&lt;br /&gt;
[[Image:firefx_script_struct.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
==Create the csc files (Client Side) ==&lt;br /&gt;
&lt;br /&gt;
The example is based on coldairs ripac map files.&lt;br /&gt;
You will need to change it to match your map name, please make sure you change any other referenced names within&lt;br /&gt;
the files.&lt;br /&gt;
these go in the raw/clientscripts/maps/mp folder&lt;br /&gt;
&lt;br /&gt;
_ripac_struct.csc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// This script automaticly plays a users specified oneshot effect on all prefabs that have the &lt;br /&gt;
// specified &amp;quot;script_struct&amp;quot; and &amp;quot;targetname&amp;quot; It also excepts angles from the &amp;quot;script_struct&amp;quot; &lt;br /&gt;
// but will set a default angle of ( 0, 0, 0 ) if none is defined.&lt;br /&gt;
//&lt;br /&gt;
// example of the syntax: &lt;br /&gt;
// global_FX( &amp;quot;targetname&amp;quot;, &amp;quot;fxIDname&amp;quot;, &amp;quot;fxFile&amp;quot;, &amp;quot;delay&amp;quot;&lt;br /&gt;
#include clientscripts\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
 //Assigning a random delay for start of FX&lt;br /&gt;
 randomStartDelay = randomfloatrange( -20, -15);&lt;br /&gt;
 //Each line describes a different FX&lt;br /&gt;
 global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;wood_chimney_smoke_medFX_origin&amp;quot;, &amp;quot;global_smoke&amp;quot;, &amp;quot;env/smoke/fx_smoke_wood_chimney_med&amp;quot;, randomStartDelay, &amp;quot;smoke_wood_chimney_med&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;pollen_foliage_lgFX_origin&amp;quot;, &amp;quot;global_foliage&amp;quot;, &amp;quot;env/foliage/fx_pollen_lg&amp;quot;, randomStartDelay, &amp;quot;pollen_lg&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;sand_blowing_dirt_lg_wFX_origin&amp;quot;, &amp;quot;global_dirt&amp;quot;, &amp;quot;env/dirt/fx_sand_blowing_lg_w&amp;quot;, randomStartDelay, &amp;quot;sand_blowing_lg_w&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;wire_sparks_electrical_elecFX_origin&amp;quot;, &amp;quot;global_electrical&amp;quot;, &amp;quot;env/electrical/fx_elec_wire_sparks&amp;quot;, randomStartDelay, &amp;quot;elec_wire_sparks&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;rainbow_weatherFX_origin&amp;quot;, &amp;quot;global_weather&amp;quot;, &amp;quot;env/weather/fx_rainbow&amp;quot;, randomStartDelay, &amp;quot;rainbow&amp;quot; );&lt;br /&gt;
 global_FX( &amp;quot;ray_sun_light_medFX_origin&amp;quot;, &amp;quot;global_light&amp;quot;, &amp;quot;env/light/fx_ray_sun_med&amp;quot;, randomStartDelay, &amp;quot;ray_sun_med&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
global_FX( targetname, fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
 // script_structs&lt;br /&gt;
 ents = getstructarray(targetname,&amp;quot;targetname&amp;quot;);&lt;br /&gt;
 if ( !isdefined( ents ) )&lt;br /&gt;
  return;&lt;br /&gt;
 if ( ents.size &amp;lt;= 0 )&lt;br /&gt;
  return;&lt;br /&gt;
 &lt;br /&gt;
 println(&amp;quot;*** Client : _global_FX - creating &amp;quot; + ents.size + &amp;quot; globalFX &amp;quot; + fxName);&lt;br /&gt;
 &lt;br /&gt;
 for ( i = 0 ; i &amp;lt; ents.size ; i++ )&lt;br /&gt;
 {&lt;br /&gt;
  ent = ents[i] global_FX_create( fxName, fxFile, delay, soundalias );&lt;br /&gt;
  if ( !isdefined( ents[ i ].script_noteworthy ) )&lt;br /&gt;
   continue;&lt;br /&gt;
   &lt;br /&gt;
  note = ents[ i ].script_noteworthy;&lt;br /&gt;
  if ( !isdefined( level._global_fx_ents[ note ] ) )&lt;br /&gt;
  {&lt;br /&gt;
   level._global_fx_ents[ note ] = [];&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  level._global_fx_ents[ note ][ level._global_fx_ents[ note ].size ] = ent;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
global_FX_create( fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 if ( !isdefined( level._effect ) )&lt;br /&gt;
  level._effect = [];&lt;br /&gt;
 if ( !isdefined( level._effect[ fxName ] ) )&lt;br /&gt;
  level._effect[ fxName ] = loadedfx( fxFile );&lt;br /&gt;
 &lt;br /&gt;
 // default effect angles if they dont exist&lt;br /&gt;
 if ( !isdefined( self.angles ) )&lt;br /&gt;
  self.angles = ( 0, 0, 0 );&lt;br /&gt;
 &lt;br /&gt;
 ent = clientscripts\mp\_fx::createOneshotEffect( fxName );&lt;br /&gt;
 ent.v[ &amp;quot;origin&amp;quot; ] = ( self.origin );&lt;br /&gt;
 ent.v[ &amp;quot;angles&amp;quot; ] = ( self.angles );&lt;br /&gt;
 ent.v[ &amp;quot;fxid&amp;quot; ] = fxName;&lt;br /&gt;
 ent.v[ &amp;quot;delay&amp;quot; ] = delay;&lt;br /&gt;
 if ( isdefined( soundalias ) )&lt;br /&gt;
 {&lt;br /&gt;
  ent.v[ &amp;quot;soundalias&amp;quot; ] = soundalias;&lt;br /&gt;
 }&lt;br /&gt;
 return ent;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mp_ripac.csc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Test clientside script for mp_ripac&lt;br /&gt;
#include clientscripts\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
 // teams&lt;br /&gt;
 level.allies_team = &amp;quot;marines&amp;quot;;&lt;br /&gt;
 level.axis_team   = &amp;quot;german&amp;quot;;&lt;br /&gt;
 // _load!&lt;br /&gt;
 clientscripts\mp\_load::main();&lt;br /&gt;
 clientscripts\mp\_ripac_struct::main();&lt;br /&gt;
 // For tanks Eexhaust and treads&lt;br /&gt;
 clientscripts\mp\_panzeriv::main( &amp;quot;vehicle_ger_tracked_panzer4_mp&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
 thread clientscripts\mp\_fx::fx_init(0);&lt;br /&gt;
 thread clientscripts\mp\_audio::audio_init(0);&lt;br /&gt;
 // thread clientscripts\mp\mp_ripac_amb::main();&lt;br /&gt;
 // This needs to be called after all systems have been registered.&lt;br /&gt;
 thread waitforclient(0);&lt;br /&gt;
 println(&amp;quot;*** Client : mp_ripac running...&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create the GSC files (server side)==&lt;br /&gt;
&lt;br /&gt;
So as an Example, coldairs mp_ripac.gsc looks like this:&lt;br /&gt;
You will need to change it to match your map name, please make sure you change any other referenced names within&lt;br /&gt;
the files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
main()&lt;br /&gt;
{ &lt;br /&gt;
maps\mp\_load::main();&lt;br /&gt;
maps\mp\_ripac_struct::main();&lt;br /&gt;
maps\mp\createart\mp_ripac_art::main();&lt;br /&gt;
maps\mp\_compass::setupMiniMap(&amp;quot;compass_map_mp_ripac&amp;quot;);&lt;br /&gt;
game[&amp;quot;allies&amp;quot;] = &amp;quot;marines&amp;quot;; &lt;br /&gt;
game[&amp;quot;axis&amp;quot;] = &amp;quot;german&amp;quot;; &lt;br /&gt;
game[&amp;quot;attackers&amp;quot;] = &amp;quot;allies&amp;quot;; &lt;br /&gt;
game[&amp;quot;defenders&amp;quot;] = &amp;quot;axis&amp;quot;; &lt;br /&gt;
game[&amp;quot;allies_soldiertype&amp;quot;] = &amp;quot;pacific&amp;quot;; &lt;br /&gt;
game[&amp;quot;axis_soldiertype&amp;quot;] = &amp;quot;german&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_a&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_A&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_b&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_B&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_c&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_C&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_d&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_D&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings&amp;quot;][&amp;quot;war_callsign_e&amp;quot;] = &amp;amp;&amp;quot;MP_RIPAC_CALLSIGN_LOCATION_E&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_a&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_A&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_b&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_B&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_c&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_C&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_d&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_D&amp;quot;;&lt;br /&gt;
game[&amp;quot;strings_menu&amp;quot;][&amp;quot;war_callsign_e&amp;quot;] = &amp;quot;@RIPAC_CALLSIGN_LOCATION_E&amp;quot;;&lt;br /&gt;
setdvar( &amp;quot;r_specularcolorscale&amp;quot;, &amp;quot;1&amp;quot; );&lt;br /&gt;
setdvar(&amp;quot;compassmaxrange&amp;quot;,&amp;quot;1000&amp;quot;);&lt;br /&gt;
// setExpFog(100, 1000, 0.4, 0.425, 0.44, 0.0); &lt;br /&gt;
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Save and exit&lt;br /&gt;
*Using Notepad create a new file under &#039;&#039;&#039;/raw/maps/mp/&#039;&#039;&#039; called _ripac_struct.gsc, inside copy paste the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
#include common_scripts\utility;&lt;br /&gt;
#include maps\mp\_utility;&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
//Assigning a random delay for start of FX&lt;br /&gt;
randomStartDelay = randomfloatrange( -20, -15);&lt;br /&gt;
//Each line describes a different FX&lt;br /&gt;
global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;fire_thick_smoke_md&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;wood_chimney_smoke_medFX_origin&amp;quot;, &amp;quot;global_smoke&amp;quot;, &amp;quot;env/smoke/fx_smoke_wood_chimney_med&amp;quot;, randomStartDelay, &amp;quot;smoke_wood_chimney_med&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;pollen_foliage_lgFX_origin&amp;quot;, &amp;quot;global_foliage&amp;quot;, &amp;quot;env/foliage/fx_pollen_lg&amp;quot;, randomStartDelay, &amp;quot;pollen_lg&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;sand_blowing_dirt_lg_wFX_origin&amp;quot;, &amp;quot;global_dirt&amp;quot;, &amp;quot;env/dirt/fx_sand_blowing_lg_w&amp;quot;, randomStartDelay, &amp;quot;sand_blowing_lg_w&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;wire_sparks_electrical_elecFX_origin&amp;quot;, &amp;quot;global_electrical&amp;quot;, &amp;quot;env/electrical/fx_elec_wire_sparks&amp;quot;, randomStartDelay, &amp;quot;elec_wire_sparks&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;rainbow_weatherFX_origin&amp;quot;, &amp;quot;global_weather&amp;quot;, &amp;quot;env/weather/fx_rainbow&amp;quot;, randomStartDelay, &amp;quot;rainbow&amp;quot; );&lt;br /&gt;
global_FX( &amp;quot;ray_sun_light_medFX_origin&amp;quot;, &amp;quot;global_light&amp;quot;, &amp;quot;env/light/fx_ray_sun_med&amp;quot;, randomStartDelay, &amp;quot;ray_sun_med&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
global_FX( targetname, fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
// get script_structs created in Radiant&lt;br /&gt;
ents = getstructarray(targetname,&amp;quot;targetname&amp;quot;);&lt;br /&gt;
if ( !isdefined( ents ) )&lt;br /&gt;
return;&lt;br /&gt;
if ( ents.size &amp;lt;= 0 )&lt;br /&gt;
return;&lt;br /&gt;
for ( i = 0 ; i &amp;lt; ents.size ; i++ )&lt;br /&gt;
ents[i] global_FX_create( fxName, fxFile, delay, soundalias );&lt;br /&gt;
}&lt;br /&gt;
global_FX_create( fxName, fxFile, delay, soundalias )&lt;br /&gt;
{&lt;br /&gt;
if ( !isdefined( level._effect ) )&lt;br /&gt;
level._effect = [];&lt;br /&gt;
if ( !isdefined( level._effect[ fxName ] ) )&lt;br /&gt;
level._effect[ fxName ] = loadfx( fxFile );&lt;br /&gt;
// default effect angles if they dont exist&lt;br /&gt;
if ( !isdefined( self.angles ) )&lt;br /&gt;
self.angles = ( 0, 0, 0 );&lt;br /&gt;
ent = createOneshotEffect( fxName );&lt;br /&gt;
ent.v[ &amp;quot;origin&amp;quot; ] = ( self.origin );&lt;br /&gt;
ent.v[ &amp;quot;angles&amp;quot; ] = ( self.angles );&lt;br /&gt;
ent.v[ &amp;quot;fxid&amp;quot; ] = fxName;&lt;br /&gt;
ent.v[ &amp;quot;delay&amp;quot; ] = delay;&lt;br /&gt;
if ( isdefined( soundalias ) )&lt;br /&gt;
{&lt;br /&gt;
ent.v[ &amp;quot;soundalias&amp;quot; ] = soundalias;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Save and Exit&lt;br /&gt;
*Finally add the FXs and the new files to your /zone_source/mp_yourmap.csv &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify the server and client side scripts&lt;br /&gt;
rawfile,maps/mp/mp_ripac.gsc&lt;br /&gt;
rawfile,maps/mp/_ripac_struct.gsc&lt;br /&gt;
rawfile,clientscripts/mp/mp_ripac.csc&lt;br /&gt;
rawfile,clientscripts/mp/_ripac_struct.csc&lt;br /&gt;
&lt;br /&gt;
// Below are the Fxs, put the ones you use in below&lt;br /&gt;
fx,env/smoke/fx_smoke_crater&lt;br /&gt;
fx,env/fire/fx_fire_barrel_small&lt;br /&gt;
fx,env/fire/fx_fire_barrel_pm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If we look at this line found in both server and client side.&lt;br /&gt;
&amp;quot;global_FX( &amp;quot;oil_fire_mdFX_origin&amp;quot;, &amp;quot;global_fire&amp;quot;, &amp;quot;env/fire/fx_fire_thick_smoke_md&amp;quot;, randomStartDelay, &amp;quot;&#039;&#039;fire_thick_smoke_md&#039;&#039;&amp;quot; );&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We can see the fx it uses and also the &#039;&#039;sound&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==In Radiant==&lt;br /&gt;
&lt;br /&gt;
This method of spawning FXs uses script_struct entities, they are placed in your Level in Radiant&lt;br /&gt;
&lt;br /&gt;
*In radiant, in the 2D view, Right-click and select script&amp;gt;script_struct&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:script_struct1.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Now move and place the Script_struct entity where you want your FX to show up&lt;br /&gt;
*With the Script_struct entity selected bring up its properties with &#039;&#039;n&#039;&#039;&lt;br /&gt;
*Now add the targetname for the FX required (as entered in the _example_struct,gsc file above)&lt;br /&gt;
&lt;br /&gt;
 Key:Targetname&lt;br /&gt;
 Value:depends on FX you wish&lt;br /&gt;
&lt;br /&gt;
Possible Values in this Example:&lt;br /&gt;
&lt;br /&gt;
 barrel_fireFX_origin&lt;br /&gt;
 barrel_fireFX_small_origin&lt;br /&gt;
 barrel_smokeFX_origin&lt;br /&gt;
&lt;br /&gt;
*Another thing to do might be the Angle, if you need to orient your FXs.&lt;br /&gt;
&lt;br /&gt;
 Key: angles&lt;br /&gt;
 Value: Depends on the direction you want to the FX to show, for Fire (going upwards) it would be 180 0 0 ;&lt;br /&gt;
 For a Streetlight (pointing downwards) it would be 90 0 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:script_struct2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;br /&gt;
&lt;br /&gt;
[[Image:firefx_script_struct.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Call of Duty 5]]&lt;br /&gt;
[[Category:Mapping]]&lt;br /&gt;
[[Category:FXs]]&lt;br /&gt;
[[Category:Basic Editing]]&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Custom_Textures&amp;diff=4267</id>
		<title>Call of Duty 5: Custom Textures</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Custom_Textures&amp;diff=4267"/>
		<updated>2009-01-28T12:35:03Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Nutshell.png]] This Tutorial will explain how to create Custom Texture for use in Radiant and in your Custom maps. We will cover Standard and Blendable Textures.&lt;br /&gt;
&lt;br /&gt;
== Pre-requisite ==&lt;br /&gt;
&lt;br /&gt;
*First of all you must have Asset Manager in working order. Should you have any problems, please check [[Call of Duty 5: Radiant Tips|HERE]].&lt;br /&gt;
&lt;br /&gt;
*To store the Texture assets (source files) TGAs or DDS (jpg can also be used but not for alpha textures) you want to create a new folder:&lt;br /&gt;
&lt;br /&gt;
 C:\Program Files\Activision\Call of Duty - World at War\texture_assets\&lt;br /&gt;
&lt;br /&gt;
*Under this folder i would advise to create sub folder to store your different textures set but that&#039;s up to you. The main thing is that the TGA or DDS files are place under the COD5 root.&lt;br /&gt;
&lt;br /&gt;
*You can use any program that will save an image as either a .tga or .dds, &#039;&#039;&#039;Adobe Photoshop&#039;&#039;&#039; is the industry standard so we&#039;ll start in there.&lt;br /&gt;
&lt;br /&gt;
If your using &#039;&#039;&#039;Adobe Photoshop&#039;&#039;&#039; then download this plug-in and install:&lt;br /&gt;
&lt;br /&gt;
*[http://developer.nvidia.com/object/photoshop_dds_plugins.html Nvidia Plugin] &lt;br /&gt;
*[http://ati.amd.com/developer/sdk/radeonsdk/html/tools/toolsplugins.html ATI Normal map generators]&lt;br /&gt;
&lt;br /&gt;
 [[Image:Information.png]] The ATI Normal map generators is the easiest to use, it converts pre-made .tga files. &lt;br /&gt;
&lt;br /&gt;
*You can use your color map or a bump map. The Nvidia plugin can do normal maps too in the &amp;quot;Normal map settings&amp;quot; button in the picture. Another program to consider is [http://www.crazybump.com/ CrazyBump].&lt;br /&gt;
&lt;br /&gt;
== Preparing the Assets ==&lt;br /&gt;
&lt;br /&gt;
*Several sites propose free textures libraries, here are a few:&lt;br /&gt;
&lt;br /&gt;
[http://cgtextures.com/ CG Textures]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.freetextures.org/ Free Textures.org]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.textureking.com/ Texture King]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Once you have your source pictures - TGAs or DDS - you must make sure to resize correctly!&lt;br /&gt;
&lt;br /&gt;
*Resize your image as (n^2)x(n^2) and &amp;quot;n&amp;quot; can be any number.&lt;br /&gt;
 &lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 (8^2)x(16^2) = 64 x 256 pixels, this would be useful for trim.&lt;br /&gt;
&lt;br /&gt;
 [[Image:Information.png]] Some other sizes:  64 x 64, 512 x 512, 1024 x 512, 256 x 128, etc...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Save the resulting file as either .tga or .dds in the folder created previously:&lt;br /&gt;
&lt;br /&gt;
 C:\Program Files\Activision\Call of Duty - World at War\texture_assets\&lt;br /&gt;
&lt;br /&gt;
== Information on Format ==&lt;br /&gt;
&lt;br /&gt;
*TGA is only useful for opaque textures, this is easiest to use as there are no options.&lt;br /&gt;
*DDS can be used for textures that have transparency like windows.&lt;br /&gt;
**DXT1 has only 1 bit alpha, like an on / off switch.  There is no fading and a pixel is either opaque or see through.&lt;br /&gt;
**DXT5 has the most detailed alpha so fading between opaque and transparent looks good, good for dirty glass.&lt;br /&gt;
**DXT3 has a less detailed alpha channel so its good for fading but only if there&#039;s a little of it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Conversion ==&lt;br /&gt;
&lt;br /&gt;
Now that your asset(s) is(are) ready its time to convert it!&lt;br /&gt;
&lt;br /&gt;
*Open the [[Call of Duty 5: Launcher Overview|Launcher]] and then click on Asset Manager as shown here:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ctextures_1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Once in the Asset Manager - or Assman, go to File &amp;gt; Save As.. &amp;gt; and browse to:&lt;br /&gt;
&lt;br /&gt;
 C:\Program Files\Activision\Call of Duty - World at War\texture_assets\&lt;br /&gt;
&lt;br /&gt;
* Pick a name for your Custom Gamedata file (.GDT) and OK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard/Plain texture ===&lt;br /&gt;
&lt;br /&gt;
For a standard/plain texture,&lt;br /&gt;
&lt;br /&gt;
*In the drop down list, go down and select Material:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ctextures_2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Click New Entry, name the texture, for this example i called mine my_texture_1, but it could be anything.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ctextures_3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*A new panel is now showing on the right with all scary options!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ctextures_4.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 No panic! For a quick run-down of the options you need to know, Click [[Call of Duty 5: Asset Manager Explained|HERE]]&lt;br /&gt;
&lt;br /&gt;
*For this example i simply have a Color map so i browse to the file and select my basic options&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ctextures_5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ctextures_6.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Now Save the GDT file again: File &amp;gt; Save&lt;br /&gt;
*To Convert press F10 or go Convert &amp;gt; Current Asset; A screen like this should come up:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ctextures_7.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*The new files generated are as follow (with locations):&lt;br /&gt;
&lt;br /&gt;
 ..\Call of Duty - World at War\raw\images\wood_texture_1.iwi&lt;br /&gt;
 ..\Call of Duty - World at War\raw\materials\my_texture_1&lt;br /&gt;
 ..\Call of Duty - World at War\raw\material_properties\my_texture_1&lt;br /&gt;
&lt;br /&gt;
 At this point the texture can be found in Radiant, see next Chapter to get the textures to show in game.&lt;br /&gt;
&lt;br /&gt;
=== Blend Texture ===&lt;br /&gt;
&lt;br /&gt;
To create a texture blendable in Radiant follow above steps but use those settings instead:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ctextures_8.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Image:Information.png]] Of course the SurfaceType, Usage and Locales are entirely up to you.&lt;br /&gt;
&lt;br /&gt;
*Now Save the GDT file again: File &amp;gt; Save&lt;br /&gt;
*To Convert press F10 or go Convert &amp;gt; Current Asset;&lt;br /&gt;
&lt;br /&gt;
=== Glass/transparent Texture ===&lt;br /&gt;
&lt;br /&gt;
To create a texture for a glass window or similar follow above steps but use those settings instead:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ctextures_9.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Image:Information.png]] Of course the SurfaceType, Usage and Locales are entirely up to you.&lt;br /&gt;
&lt;br /&gt;
*Now Save the GDT file again: File &amp;gt; Save&lt;br /&gt;
*To Convert press F10 or go Convert &amp;gt; Current Asset;&lt;br /&gt;
&lt;br /&gt;
== Using the new Texture in game ==&lt;br /&gt;
&lt;br /&gt;
* Now that the new .IWI files have been created all you need to do is to copy them into a new &#039;&#039;&#039;images&#039;&#039;&#039; folder (under your C:\ root for instance).&lt;br /&gt;
* Copy the newly created IWI file(s) into this new images folder&lt;br /&gt;
* Using Winrar or Winzip compress the folder images using ZIP default compression (no fancy options please!)&lt;br /&gt;
* Name the file like your map (say mp_yourmap.zip for this example)&lt;br /&gt;
* Rename the resulting file mp_yourmap.zip in &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;mp_yourmap.iwd &amp;lt;/font&amp;gt;&lt;br /&gt;
* Copy this new IWD file under your map folder:&lt;br /&gt;
&lt;br /&gt;
 ..\Call of Duty - World at War\usermaps\mp_yourmap\&lt;br /&gt;
&lt;br /&gt;
*Done! Compile your map and the new texture should be there :)&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Test_the_map&amp;diff=4236</id>
		<title>Call of Duty 5: Test the map</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Test_the_map&amp;diff=4236"/>
		<updated>2009-01-28T10:18:22Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;BEFORE compiling it you must insert your [[Call of Duty 5: MP - Map GSC File|custom MAP .gsc]] in:&lt;br /&gt;
&lt;br /&gt;
Update : 28/01/2009&lt;br /&gt;
Please note if you are testing an MP map , make sure that you compile into MP_USERMAPS not USERMAPS&lt;br /&gt;
Otherwise it will not work properly if you launch the map outside of the mod tools.&lt;br /&gt;
(i.e. FX will not work)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 c:\Program files\Activision\Call of Duty - World at War\raw\maps\mp&lt;br /&gt;
&lt;br /&gt;
AND in &lt;br /&gt;
&lt;br /&gt;
 c:\Documents and Settings\yourname\local settings\application data\Activision\CoDWaW\usermaps\mp_yourmap&lt;br /&gt;
&lt;br /&gt;
for &amp;lt;font color=&amp;quot;yellow&amp;quot;&amp;gt;&#039;&#039;&#039;Windows XP&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
 c:\Users\&amp;lt;Your Username&amp;gt;\AppData\Local Data\Activision\CoDWaW\usermaps&lt;br /&gt;
&lt;br /&gt;
for &amp;lt;font color=&amp;quot;yellow&amp;quot;&amp;gt;&#039;&#039;&#039;Windows Vista&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Now, place an [[Call of Duty 5: Arena File|.arena file]] with the gametypes of your map in:&lt;br /&gt;
&lt;br /&gt;
 c:\Documents and Settings\yourname\local settings\application data\Activision\CoDWaW\usermaps\mp_yourmap&lt;br /&gt;
&lt;br /&gt;
*Compile your map on launcher --&amp;gt; compile level&lt;br /&gt;
&lt;br /&gt;
(you should see no more errors regarding .gsc file)&lt;br /&gt;
&lt;br /&gt;
*Go on launcher --&amp;gt; run game&lt;br /&gt;
&lt;br /&gt;
*At this point you should see the classic main page of the game,if you go on &amp;quot;create server&amp;quot; page you should see your map on the right column in the map list, simply chose it and it should run&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sources: [http://www.modsonline.com/Forums-top-91846-10.html#649956 ModsOnline]&lt;br /&gt;
[[Category:Call of Duty 5]]&lt;br /&gt;
[[Category:Mapping]]&lt;br /&gt;
[[Category:Modtools]]&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=File:Ss10.jpg&amp;diff=3411</id>
		<title>File:Ss10.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=File:Ss10.jpg&amp;diff=3411"/>
		<updated>2008-11-25T10:54:22Z</updated>

		<summary type="html">&lt;p&gt;Wakka: Terrain Patch Tutorial SS10 (basic patch)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Terrain Patch Tutorial SS10 (basic patch)&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=File:Ss9.jpg&amp;diff=3407</id>
		<title>File:Ss9.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=File:Ss9.jpg&amp;diff=3407"/>
		<updated>2008-11-25T10:53:55Z</updated>

		<summary type="html">&lt;p&gt;Wakka: Terrain Patch Tutorial SS9 (basic patch)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Terrain Patch Tutorial SS9 (basic patch)&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=File:Ss8.jpg&amp;diff=3404</id>
		<title>File:Ss8.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=File:Ss8.jpg&amp;diff=3404"/>
		<updated>2008-11-25T10:53:33Z</updated>

		<summary type="html">&lt;p&gt;Wakka: Terrain Patch Tutorial SS8 (basic patch)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Terrain Patch Tutorial SS8 (basic patch)&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=File:Ss7.jpg&amp;diff=3403</id>
		<title>File:Ss7.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=File:Ss7.jpg&amp;diff=3403"/>
		<updated>2008-11-25T10:53:13Z</updated>

		<summary type="html">&lt;p&gt;Wakka: Terrain Patch Tutorial SS7 (basic patch)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Terrain Patch Tutorial SS7 (basic patch)&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=File:Ss6.jpg&amp;diff=3402</id>
		<title>File:Ss6.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=File:Ss6.jpg&amp;diff=3402"/>
		<updated>2008-11-25T10:53:00Z</updated>

		<summary type="html">&lt;p&gt;Wakka: Terrain Patch Tutorial SS6 (basic patch)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Terrain Patch Tutorial SS6 (basic patch)&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=File:Ss5.jpg&amp;diff=3401</id>
		<title>File:Ss5.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=File:Ss5.jpg&amp;diff=3401"/>
		<updated>2008-11-25T10:52:47Z</updated>

		<summary type="html">&lt;p&gt;Wakka: Terrain Patch Tutorial SS5 (basic patch)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Terrain Patch Tutorial SS5 (basic patch)&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=File:Ss4.jpg&amp;diff=3400</id>
		<title>File:Ss4.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=File:Ss4.jpg&amp;diff=3400"/>
		<updated>2008-11-25T10:52:27Z</updated>

		<summary type="html">&lt;p&gt;Wakka: Terrain Patch Tutorial SS4 (basic patch)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Terrain Patch Tutorial SS4 (basic patch)&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=File:Ss3.jpg&amp;diff=3399</id>
		<title>File:Ss3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=File:Ss3.jpg&amp;diff=3399"/>
		<updated>2008-11-25T10:52:15Z</updated>

		<summary type="html">&lt;p&gt;Wakka: Terrain Patch Tutorial SS2 (basic patch)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Terrain Patch Tutorial SS2 (basic patch)&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=File:Ss2.jpg&amp;diff=3398</id>
		<title>File:Ss2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=File:Ss2.jpg&amp;diff=3398"/>
		<updated>2008-11-25T10:51:58Z</updated>

		<summary type="html">&lt;p&gt;Wakka: Terrain Patch Tutorial SS2 (basic patch)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Terrain Patch Tutorial SS2 (basic patch)&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Patches&amp;diff=3397</id>
		<title>Call of Duty 5: Patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Patches&amp;diff=3397"/>
		<updated>2008-11-25T10:51:33Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Making Terrain Patches.&lt;br /&gt;
&lt;br /&gt;
Terrain patches are on of the most useful parts of the editor.&lt;br /&gt;
When making a map always use Terrain Patches when making ground, even footpaths floors etc.&lt;br /&gt;
When we come to blending and other parts of the patch tools you will see why it is important&lt;br /&gt;
to use patches.&lt;br /&gt;
&lt;br /&gt;
Call of Duty WAW has brought in some lovely enhancements to the editor, one big improvement is on the&lt;br /&gt;
patch tool section.&lt;br /&gt;
&lt;br /&gt;
We can now create a patch 31 x 31 , this makes creating large areas of terrain a breeze.&lt;br /&gt;
&lt;br /&gt;
Let us then look at creating a terrain.&lt;br /&gt;
&lt;br /&gt;
From your launcher program, choose radiant.&lt;br /&gt;
Now go to the Texture menu and select a grass texture for this excercise&lt;br /&gt;
(TEXTURES&amp;gt;Surface Type&amp;gt;Grass)&lt;br /&gt;
&lt;br /&gt;
[[Image:ss1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now I am choosing the texture peleliu_terrain_grass_dark_patchy (Please note not a blend texture)&lt;br /&gt;
Obviously pick a texture to do the task at hand.&lt;br /&gt;
&lt;br /&gt;
Now in the editor zoom out slightly, then draw a brush as shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:ss2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Right now we have a good size brush, lets turn this into a patch.&lt;br /&gt;
&lt;br /&gt;
Go to the patch menu and choose Simple Terrain Patch (Patch&amp;gt;Simple Terrain Patch), please note the brush you&lt;br /&gt;
drew should still be selected at this point.&lt;br /&gt;
&lt;br /&gt;
[[Image:ss3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now set the density to 31 x 31&lt;br /&gt;
Click OK.&lt;br /&gt;
&lt;br /&gt;
[[Image:ss4.jpg]]&lt;br /&gt;
&lt;br /&gt;
You will now see your brush has become a patch, the patch we have created is quite dense this is better where we want to make terrain more detailed.&lt;br /&gt;
&lt;br /&gt;
The next stage is to copy the patch to give us the area of the map that you want covered with it.&lt;br /&gt;
Your patch should still be selected so lets press space and copy it.&lt;br /&gt;
Move the copy to align to the top as shown in the screen shot, you will need to adjust the grid size to make it align properly.&lt;br /&gt;
&lt;br /&gt;
[[Image:ss5.jpg]]&lt;br /&gt;
&lt;br /&gt;
Next lets make the patch a nice square so select both patches (Shift left click on unselected patch) copy them and align to the right.&lt;br /&gt;
&lt;br /&gt;
[[Image:ss6.jpg]]&lt;br /&gt;
&lt;br /&gt;
You will now have a nice square flat bit of terrain (patches)&lt;br /&gt;
&lt;br /&gt;
Lets make a hill.&lt;br /&gt;
&lt;br /&gt;
Press Y and you will see the Advanced Patch Editing Options as shown below (In Default Options).&lt;br /&gt;
Now we have two ways of editing the patch with the tools, we can either choose to Allow Soft Selection or not. By default it is off.&lt;br /&gt;
&lt;br /&gt;
[[Image:ss7.jpg]]&lt;br /&gt;
&lt;br /&gt;
In this case as we are dealing with the patch you have created and no other patches will be affected let us select the option Allow Soft Selection on Unselected Patches. (Make sure at this point no patches are selected [highlighted] )&lt;br /&gt;
&lt;br /&gt;
We will also change the following values.&lt;br /&gt;
&lt;br /&gt;
Check the Height check box.&lt;br /&gt;
Change the Inner Radius, Outer Radius and Amplitude settings as shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:ss8.jpg]]&lt;br /&gt;
&lt;br /&gt;
You will note I changed the max settings to 1000, this just allows us to have greater scope on the inner and outer settings.&lt;br /&gt;
&lt;br /&gt;
Now position yourself in the editor so you can see the terrain at hand, then lets start making a rough hill.&lt;br /&gt;
&lt;br /&gt;
Holding down the ALT key and Left mouse button, move your cursor over the patch in the 3d window of the editor.&lt;br /&gt;
You will see the patch start to change and rise as you move it around.&lt;br /&gt;
You can change the Inner/Outer and Amplitude to suit your requirements, if you do it to fast it will deform and the patches can come dis-join (You can weld the patches back, this is covered in a later tutorial)&lt;br /&gt;
&lt;br /&gt;
[[Image:ss9.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now we have a hill, we could also make a depression at the front of the hill.&lt;br /&gt;
&lt;br /&gt;
Holding the ALT key still, press and hold the right mouse button. You will see the landscape go down.&lt;br /&gt;
&lt;br /&gt;
When your done you should be able to see the changes for example see screen shot below&lt;br /&gt;
&lt;br /&gt;
[[Image:ss10.jpg]]&lt;br /&gt;
&lt;br /&gt;
Press Y to close the Advanced Editor Tool, you now have your Terrain ready for use.&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=File:Ss1.jpg&amp;diff=3396</id>
		<title>File:Ss1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=File:Ss1.jpg&amp;diff=3396"/>
		<updated>2008-11-25T10:46:12Z</updated>

		<summary type="html">&lt;p&gt;Wakka: Basic Terrain Patch Tutorial Screenshot 1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Basic Terrain Patch Tutorial Screenshot 1&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Patches&amp;diff=3395</id>
		<title>Call of Duty 5: Patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Patches&amp;diff=3395"/>
		<updated>2008-11-25T10:45:39Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Making Terrain Patches.&lt;br /&gt;
&lt;br /&gt;
Terrain patches are on of the most useful parts of the editor.&lt;br /&gt;
When making a map always use Terrain Patches when making ground, even footpaths floors etc.&lt;br /&gt;
When we come to blending and other parts of the patch tools you will see why it is important&lt;br /&gt;
to use patches.&lt;br /&gt;
&lt;br /&gt;
Call of Duty WAW has brought in some lovely enhancements to the editor, one big improvement is on the&lt;br /&gt;
patch tool section.&lt;br /&gt;
&lt;br /&gt;
We can now create a patch 31 x 31 , this makes creating large areas of terrain a breeze.&lt;br /&gt;
&lt;br /&gt;
Let us then look at creating a terrain.&lt;br /&gt;
&lt;br /&gt;
From your launcher program, choose radiant.&lt;br /&gt;
Now go to the Texture menu and select a grass texture for this excercise&lt;br /&gt;
(TEXTURES&amp;gt;Surface Type&amp;gt;Grass)&lt;br /&gt;
&lt;br /&gt;
[[Image:ss1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now I am choosing the texture peleliu_terrain_grass_dark_patchy (Please note not a blend texture)&lt;br /&gt;
Obviously pick a texture to do the task at hand.&lt;br /&gt;
&lt;br /&gt;
Now in the editor zoom out slightly, then draw a brush as shown below.&lt;br /&gt;
&lt;br /&gt;
Right now we have a good size brush, lets turn this into a patch.&lt;br /&gt;
&lt;br /&gt;
Go to the patch menu and choose Simple Terrain Patch (Patch&amp;gt;Simple Terrain Patch), please note the brush you&lt;br /&gt;
drew should still be selected at this point.&lt;br /&gt;
&lt;br /&gt;
Now set the density to 31 x 31&lt;br /&gt;
Click OK.&lt;br /&gt;
&lt;br /&gt;
You will now see your brush has become a patch, the patch we have created is quite dense this is better where we want to make terrain more detailed.&lt;br /&gt;
&lt;br /&gt;
The next stage is to copy the patch to give us the area of the map that you want covered with it.&lt;br /&gt;
Your patch should still be selected so lets press space and copy it.&lt;br /&gt;
Move the copy to align to the top as shown in the screen shot, you will need to adjust the grid size to make it align properly.&lt;br /&gt;
&lt;br /&gt;
Next lets make the patch a nice square so select both patches (Shift left click on unselected patch) copy them and align to the right.&lt;br /&gt;
&lt;br /&gt;
You will now have a nice square flat bit of terrain (patches)&lt;br /&gt;
&lt;br /&gt;
Lets make a hill.&lt;br /&gt;
&lt;br /&gt;
Press Y and you will see the Advanced Patch Editing Options as shown below (In Default Options).&lt;br /&gt;
Now we have two ways of editing the patch with the tools, we can either choose to Allow Soft Selection or not. By default it is off.&lt;br /&gt;
In this case as we are dealing with the patch you have created and no other patches will be affected let us select the option Allow Soft Selection on Unselected Patches. (Make sure at this point no patches are selected [highlighted] )&lt;br /&gt;
&lt;br /&gt;
We will also change the following values.&lt;br /&gt;
&lt;br /&gt;
Check the Height check box.&lt;br /&gt;
Change the Inner Radius, Outer Radius and Amplitude settings as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will note I changed the max settings to 1000, this just allows us to have greater scope on the inner and outer settings.&lt;br /&gt;
&lt;br /&gt;
Now position yourself in the editor so you can see the terrain at hand, then lets start making a rough hill.&lt;br /&gt;
&lt;br /&gt;
Holding down the ALT key and Left mouse button, move your cursor over the patch in the 3d window of the editor.&lt;br /&gt;
You will see the patch start to change and rise as you move it around.&lt;br /&gt;
You can change the Inner/Outer and Amplitude to suit your requirements, if you do it to fast it will deform and the patches can come dis-join (You can weld the patches back, this is covered in a later tutorial)&lt;br /&gt;
&lt;br /&gt;
Now we have a hill, we could also make a depression at the front of the hill.&lt;br /&gt;
&lt;br /&gt;
Holding the ALT key still, press and hold the right mouse button. You will see the landscape go down.&lt;br /&gt;
&lt;br /&gt;
When your done you should be able to see the changes for example see screen shot below&lt;br /&gt;
&lt;br /&gt;
Press Y to close the Advanced Editor Tool, you now have your Terrain ready for use.&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Patches&amp;diff=3394</id>
		<title>Call of Duty 5: Patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Patches&amp;diff=3394"/>
		<updated>2008-11-25T10:41:41Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Making Terrain Patches.&lt;br /&gt;
&lt;br /&gt;
Terrain patches are on of the most useful parts of the editor.&lt;br /&gt;
When making a map always use Terrain Patches when making ground, even footpaths floors etc.&lt;br /&gt;
When we come to blending and other parts of the patch tools you will see why it is important&lt;br /&gt;
to use patches.&lt;br /&gt;
&lt;br /&gt;
Call of Duty WAW has brought in some lovely enhancements to the editor, one big improvement is on the&lt;br /&gt;
patch tool section.&lt;br /&gt;
&lt;br /&gt;
We can now create a patch 31 x 31 , this makes creating large areas of terrain a breeze.&lt;br /&gt;
&lt;br /&gt;
Let us then look at creating a terrain.&lt;br /&gt;
&lt;br /&gt;
From your launcher program, choose radiant.&lt;br /&gt;
Now go to the Texture menu and select a grass texture for this excercise&lt;br /&gt;
(TEXTURES&amp;gt;Surface Type&amp;gt;Grass)&lt;br /&gt;
&lt;br /&gt;
Now I am choosing the texture peleliu_terrain_grass_dark_patchy (Please note not a blend texture)&lt;br /&gt;
Obviously pick a texture to do the task at hand.&lt;br /&gt;
&lt;br /&gt;
Now in the editor zoom out slightly, then draw a brush as shown below.&lt;br /&gt;
&lt;br /&gt;
Right now we have a good size brush, lets turn this into a patch.&lt;br /&gt;
&lt;br /&gt;
Go to the patch menu and choose Simple Terrain Patch (Patch&amp;gt;Simple Terrain Patch), please note the brush you&lt;br /&gt;
drew should still be selected at this point.&lt;br /&gt;
&lt;br /&gt;
Now set the density to 31 x 31&lt;br /&gt;
Click OK.&lt;br /&gt;
&lt;br /&gt;
You will now see your brush has become a patch, the patch we have created is quite dense this is better where we want to make terrain more detailed.&lt;br /&gt;
&lt;br /&gt;
The next stage is to copy the patch to give us the area of the map that you want covered with it.&lt;br /&gt;
Your patch should still be selected so lets press space and copy it.&lt;br /&gt;
Move the copy to align to the top as shown in the screen shot, you will need to adjust the grid size to make it align properly.&lt;br /&gt;
&lt;br /&gt;
Next lets make the patch a nice square so select both patches (Shift left click on unselected patch) copy them and align to the right.&lt;br /&gt;
&lt;br /&gt;
You will now have a nice square flat bit of terrain (patches)&lt;br /&gt;
&lt;br /&gt;
Lets make a hill.&lt;br /&gt;
&lt;br /&gt;
Press Y and you will see the Advanced Patch Editing Options as shown below (In Default Options).&lt;br /&gt;
Now we have two ways of editing the patch with the tools, we can either choose to Allow Soft Selection or not. By default it is off.&lt;br /&gt;
In this case as we are dealing with the patch you have created and no other patches will be affected let us select the option Allow Soft Selection on Unselected Patches. (Make sure at this point no patches are selected [highlighted] )&lt;br /&gt;
&lt;br /&gt;
We will also change the following values.&lt;br /&gt;
&lt;br /&gt;
Check the Height check box.&lt;br /&gt;
Change the Inner Radius, Outer Radius and Amplitude settings as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will note I changed the max settings to 1000, this just allows us to have greater scope on the inner and outer settings.&lt;br /&gt;
&lt;br /&gt;
Now position yourself in the editor so you can see the terrain at hand, then lets start making a rough hill.&lt;br /&gt;
&lt;br /&gt;
Holding down the ALT key and Left mouse button, move your cursor over the patch in the 3d window of the editor.&lt;br /&gt;
You will see the patch start to change and rise as you move it around.&lt;br /&gt;
You can change the Inner/Outer and Amplitude to suit your requirements, if you do it to fast it will deform and the patches can come dis-join (You can weld the patches back, this is covered in a later tutorial)&lt;br /&gt;
&lt;br /&gt;
Now we have a hill, we could also make a depression at the front of the hill.&lt;br /&gt;
&lt;br /&gt;
Holding the ALT key still, press and hold the right mouse button. You will see the landscape go down.&lt;br /&gt;
&lt;br /&gt;
When your done you should be able to see the changes for example see screen shot below&lt;br /&gt;
&lt;br /&gt;
Press Y to close the Advanced Editor Tool, you now have your Terrain ready for use.&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Patches&amp;diff=3393</id>
		<title>Call of Duty 5: Patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Patches&amp;diff=3393"/>
		<updated>2008-11-25T10:33:55Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Making Terrain Patches.&lt;br /&gt;
&lt;br /&gt;
Terrain patches are on of the most useful parts of the editor.&lt;br /&gt;
When making a map always use Terrain Patches when making ground, even footpaths floors etc.&lt;br /&gt;
When we come to blending and other parts of the patch tools you will see why it is important&lt;br /&gt;
to use patches.&lt;br /&gt;
&lt;br /&gt;
Call of Duty WAW has brought in some lovely enhancements to the editor, one big improvement is on the&lt;br /&gt;
patch tool section.&lt;br /&gt;
&lt;br /&gt;
We can now create a patch 31 x 31 , this makes creating large areas of terrain a breeze.&lt;br /&gt;
&lt;br /&gt;
Let us then look at creating a terrain.&lt;br /&gt;
&lt;br /&gt;
From your launcher program, choose radiant.&lt;br /&gt;
Now go to the Texture menu and select a grass texture for this excercise&lt;br /&gt;
(TEXTURES&amp;gt;Surface Type&amp;gt;Grass)&lt;br /&gt;
&lt;br /&gt;
Now I am choosing the texture peleliu_terrain_grass_dark_patchy (Please note not a blend texture)&lt;br /&gt;
Obviously pick a texture to do the task at hand.&lt;br /&gt;
&lt;br /&gt;
Now in the editor zoom out slightly, then draw a brush as shown below.&lt;br /&gt;
&lt;br /&gt;
Right now we have a good size brush, lets turn this into a patch.&lt;br /&gt;
&lt;br /&gt;
Go to the patch menu and choose Simple Terrain Patch (Patch&amp;gt;Simple Terrain Patch), please note the brush you&lt;br /&gt;
drew should still be selected at this point.&lt;br /&gt;
&lt;br /&gt;
Now set the density to 31 x 31&lt;br /&gt;
Click OK.&lt;br /&gt;
&lt;br /&gt;
You will now see your brush has become a patch, the patch we have created is quite dense this is better where we want to make terrain more detailed.&lt;br /&gt;
&lt;br /&gt;
The next stage is to copy the patch to give us the area of the map that you want covered with it.&lt;br /&gt;
Your patch should still be selected so lets press space and copy it.&lt;br /&gt;
Move the copy to align to the top as shown in the screen shot, you will need to adjust the grid size to make it align properly.&lt;br /&gt;
&lt;br /&gt;
Next lets make the patch a nice square so select both patches (Shift left click on unselected patch) copy them and align to the right.&lt;br /&gt;
&lt;br /&gt;
You will now have a nice square flat bit of terrain (patches)&lt;br /&gt;
&lt;br /&gt;
Lets make a hill.&lt;br /&gt;
&lt;br /&gt;
Press Y and you will see the Advanced Patch Editing Options as shown below (In Default Options).&lt;br /&gt;
Now we have two ways of editing the patch with the tools, we can either choose to Allow Soft Selection or not. By default it is off.&lt;br /&gt;
In this case as we are dealing with the patch you have created and no other patches will be affected let us select the option Allow Soft Selection on Unselected Patches. (Make sure at this point no patches are selected [highlighted] )&lt;br /&gt;
&lt;br /&gt;
We will also change the following values.&lt;br /&gt;
&lt;br /&gt;
Check the Height check box.&lt;br /&gt;
Change the Inner Radius, Outer Radius and Amplitude settings as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will note I changed the max settings to 1000, this just allows us to have greater scope on the inner and outer settings.&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Patches&amp;diff=3392</id>
		<title>Call of Duty 5: Patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Patches&amp;diff=3392"/>
		<updated>2008-11-25T10:27:08Z</updated>

		<summary type="html">&lt;p&gt;Wakka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Making Terrain Patches.&lt;br /&gt;
&lt;br /&gt;
Terrain patches are on of the most useful parts of the editor.&lt;br /&gt;
When making a map always use Terrain Patches when making ground, even footpaths floors etc.&lt;br /&gt;
When we come to blending and other parts of the patch tools you will see why it is important&lt;br /&gt;
to use patches.&lt;br /&gt;
&lt;br /&gt;
Call of Duty WAW has brought in some lovely enhancements to the editor, one big improvement is on the&lt;br /&gt;
patch tool section.&lt;br /&gt;
&lt;br /&gt;
We can now create a patch 31 x 31 , this makes creating large areas of terrain a breeze.&lt;br /&gt;
&lt;br /&gt;
Let us then look at creating a terrain.&lt;br /&gt;
&lt;br /&gt;
From your launcher program, choose radiant.&lt;br /&gt;
Now go to the Texture menu and select a grass texture for this excercise&lt;br /&gt;
(TEXTURES&amp;gt;Surface Type&amp;gt;Grass)&lt;br /&gt;
&lt;br /&gt;
Now I am choosing the texture peleliu_terrain_grass_dark_patchy (Please note not a blend texture)&lt;br /&gt;
Obviously pick a texture to do the task at hand.&lt;br /&gt;
&lt;br /&gt;
Now in the editor zoom out slightly, then draw a brush as shown below.&lt;br /&gt;
&lt;br /&gt;
Right now we have a good size brush, lets turn this into a patch.&lt;br /&gt;
&lt;br /&gt;
Go to the patch menu and choose Simple Terrain Patch (Patch&amp;gt;Simple Terrain Patch), please note the brush you&lt;br /&gt;
drew should still be selected at this point.&lt;br /&gt;
&lt;br /&gt;
Now set the density to 31 x 31&lt;br /&gt;
Click OK.&lt;br /&gt;
&lt;br /&gt;
You will now see your brush has become a patch, the patch we have created is quite dense this is better where we want to make terrain more detailed.&lt;br /&gt;
&lt;br /&gt;
The next stage is to copy the patch to give us the area of the map that you want covered with it.&lt;br /&gt;
Your patch should still be selected so lets press space and copy it.&lt;br /&gt;
Move the copy to align to the top as shown in the screen shot, you will need to adjust the grid size to make it align properly.&lt;br /&gt;
&lt;br /&gt;
Next lets make the patch a nice square so select both patches (Shift left click on unselected patch) copy them and align to the right.&lt;br /&gt;
&lt;br /&gt;
You will now have a nice square flat bit of terrain (patches)&lt;br /&gt;
&lt;br /&gt;
Lets make a hill.&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Patches&amp;diff=3390</id>
		<title>Call of Duty 5: Patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Patches&amp;diff=3390"/>
		<updated>2008-11-25T10:12:55Z</updated>

		<summary type="html">&lt;p&gt;Wakka: New page: Making Terrain Patches.  Terrain patches are on of the most useful parts of the editor. When making a map always use Terrain Patches when making ground, even footpaths floors etc. When we ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Making Terrain Patches.&lt;br /&gt;
&lt;br /&gt;
Terrain patches are on of the most useful parts of the editor.&lt;br /&gt;
When making a map always use Terrain Patches when making ground, even footpaths floors etc.&lt;br /&gt;
When we come to blending and other parts of the patch tools you will see why it is important&lt;br /&gt;
to use patches.&lt;br /&gt;
&lt;br /&gt;
Call of Duty WAW has brought in some lovely enhancements to the editor, one big improvement is on the&lt;br /&gt;
patch tool section.&lt;br /&gt;
&lt;br /&gt;
We can now create a patch 31 x 31 , this makes creating large areas of terrain a breeze.&lt;br /&gt;
&lt;br /&gt;
Let us then look at creating a terrain.&lt;br /&gt;
&lt;br /&gt;
From your launcher program, choose radiant.&lt;/div&gt;</summary>
		<author><name>Wakka</name></author>
	</entry>
</feed>