Adding Some Simple Objectives
Versions: You must be logged in to view history.
[FR]Sparks explains how to add some simple objectives
You can usually just make trigger brushes and assign it
a targetname and
place it somewhere. Or you can assign
many other things such as AI or models.
The .GSC will
be self explanitory.
In the following .GSC example, I am
giving a trigger_multiple the value of
"targetname","obj1"
And a German AI the value
of
"targetname","obj2"
And a trigger_use
the value of
"targetname","obj3"
***Optional****
If you want FX for the seawall explosion (Objective 3),
Complete the following:
Make the destroyed wall
Make the
before-wall, select the before_wall piece and right click to make it a
script_brushmodel
Give the before-wall the value of
"script_exploder","1"
Give the trigger_use the value of
"script_exploder","1"
Make a script_model and give it the
values
"model","xmodel/fx"
"script_exploder","1"
"script_fxid","dirt"
//You can change the fxid to which you want, just be sure to include it in the
MAPNAME_FX.GSC
Make a script_origin, connect the FX to the script_origin
for the FX to be aimed at
Now when you trigger the trigger_use: you
explode the wall, an explosion FX is played, and you complete an objective
Now for the .gsc
Simple script, not too complex. *****Just be aware how
the
number of objective_current, objective_add, & objective_state
change as the objective changes!*****
Place the .GSC in: "Call
of Duty\(main or uo)\maps"
main()
{
maps\_load::main();
maps\MAPNAME_FX::main();
//Precaches FX if you're going to use
it
obj1();
}
obj1()
{
obj1 = getent("obj1",
"targetname"); //Get entity(trigger_multiple) in map
objective_add(1,
"active", "Get to located position.",getent("obj1",
"targetname").origin);
objective_current(1);
iprintlnbold ("Press
the |Tab| key to check your Objectives"); //Display objective in obj. list from
string
obj1 waittill("trigger"); //Waits till trigger_multiple is
triggered
objective_state(1, "done"); //Objective 1 is done
obj1
delete(); //Delete trigger brush in-game so it will not be
re-triggered
wait(2);
thread obj2(); //Move on to next
objective
}
obj2()
{
obj2 = getent("obj2",
"targetname"); //Get entity(German AI) in map
objective_add(2, "active",
"Kill the German officer.",getent("obj2",
"targetname").origin);
objective_current(2);
obj2
waittill("death"); //Waits till German AI is killed
objective_state(2,
"done"); //Objective 2 is done
wait(2);
thread obj3(); //Move on
to next objective
}
obj3()
{
obj3 = getent("obj3",
"targetname"); //Get entity(trigger_use) in map
objective_add(3,
"active", "Blow up the seawall.",getent("obj3",
"targetname").origin);
objective_current(3);
obj3
waittill("trigger"); //Waits till trigger_use is triggered
//In this
interval of time the wall explodes and the FX is played
//if you included the
FX GSC and map entities
objective_state(3, "done"); //Objective 3 is
done
wait(2);
iprintlnbold ("All Objective Completed!"); //Let
player know he is done
}
(The script should NOT be copied and pasted due to some known issues with doing so - besides - you need typing practice)
For a special effect for the sea wall explosion, you will need a FX
file.
*****FX FILE SHOULD BE CALLED BE:
MAPNAME_FX.GSC*****
Goes in: "Call of Duty\(main or uo)\maps"
main()
{
precacheFX();
}
precacheFX()
{
level._effect["dirt"] = loadfx
("fx/impacts/stukastrafe_dirt.efx");
}