Call of Duty 4: Switches Primary Light: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 6: | Line 6: | ||
Create a new script called '''_lights.gsc''' in <code>/raw/maps/mp/</code> | Create a new script called '''_lights.gsc''' in <code>/raw/maps/mp/</code> | ||
< | <syntaxhighlight lang="cpp"> | ||
main() | main() | ||
{ | { | ||
Line 44: | Line 44: | ||
spotlight_hide waittill ("movedone"); | spotlight_hide waittill ("movedone"); | ||
} | } | ||
}</ | } | ||
</syntaxhighlight> | |||
In your Map GSC file (<code>/raw/maps/mp/mp_yourmap.gsc</code>) add this after <code>maps\mp\_load::main();</code> | In your Map GSC file (<code>/raw/maps/mp/mp_yourmap.gsc</code>) add this after <code>maps\mp\_load::main();</code> | ||
< | <syntaxhighlight lang="cpp"> | ||
maps\mp\_lights::main(); | |||
</syntaxhighlight> | |||
Add the _off model to your Zone File, in my example: | Add the _off model to your Zone File, in my example: | ||
< | <syntaxhighlight lang="cpp">xmodel,com_studiolight_hanging_off</syntaxhighlight> | ||
In Radiant (minus the com_studiolight_hanging_on model): | In Radiant (minus the com_studiolight_hanging_on model): |
Revision as of 10:44, 25 January 2011

The technique used below is to move a ShadowCaster Brush over the actual Light Entity.
Create a new script called _lights.gsc in /raw/maps/mp/
<syntaxhighlight lang="cpp"> main() { precacheModel("com_studiolight_hanging_off"); // precache selected model thread switch_start(); }
switch_start() { spotlight = getentarray( "switch", "targetname" ); // get triggers
if ( isdefined(spotlight) ) for ( i = 0 ; i < spotlight.size ; i++ ) spotlight[i] thread lights_off(); }
lights_off() { while (1) { speed = .01; // speed for moving on Z axis height = -36; // high in units to move on Z axis
spotlight_hide = getent("spotlight_hide", "targetname"); // get script_brushmodel(s) in level spotlight_model = getent( "spotlight_model", "targetname" ); // get xmodel _on
self waittill("trigger"); spotlight_hide movez (height, speed); // Move script_brushmodel(s) on Z axis spotlight_model setmodel( "com_studiolight_hanging_off" ); // swap xmodel by _off self playsound("light_switch_off"); spotlight_hide waittill ("movedone");
self waittill("trigger"); spotlight_hide movez (height - (height * 2), speed); spotlight_model setmodel( "com_studiolight_hanging_on" ); // switch back to _on Xmodel self playsound("light_switch_on"); spotlight_hide waittill ("movedone"); } } </syntaxhighlight>
In your Map GSC file (/raw/maps/mp/mp_yourmap.gsc
) add this after maps\mp\_load::main();
<syntaxhighlight lang="cpp"> maps\mp\_lights::main(); </syntaxhighlight>
Add the _off model to your Zone File, in my example:
<syntaxhighlight lang="cpp">xmodel,com_studiolight_hanging_off</syntaxhighlight>
In Radiant (minus the com_studiolight_hanging_on model):
The trigger is a trigger_usetouch and has targetname = switch ; The ShadowCaster script_brushmodel is solid and has targetname = spotlight_hide ; Trigger is connected/link to ShawdowCaster script_brushmodel ; spotlight model (not on pic) would be a script_model and have targetname = spotlight_model ;
Sounds in the script are custom - you can use "metal_click" also (stock)
--Zeroy. 19:40, 19 October 2008 (UTC)