Login x
User Name:
Password:
Social Links Facebook Twitter YouTube Steam RSS News Feeds

Members Online

»
0 Active | 99 Guests
Online:

LATEST FORUM THREADS

»
CoD: Battle Royale
CoD+UO Map + Mod Releases
Damaged .pk3's
CoD Mapping
heli to attack ai
CoD4 SP Mapping

Tutorials

»
CoD Mapping
ratings:
Awful Rating
Poor Rating
Average Rating
Good Rating
Excellent Rating
Scripting 101
Versions: You must be logged in to view history.
BR3NT explains a little bit about scripting - and the basics of creating a syntax
SCRIPTING 101

First Of I Have To say If You Have Issues With This Stuff I Can Give Limited Support.[I Have Used This Many Times And It Works]
The Forums Will Help You Anyways...Always Ask There.
This Tutorial Assumes You Have Some Scripting Knowledge...If Not Go Read The Tutorials.

Today... Lets Use A Function. For Those Of You Who Are New To Scripting.
A Function Is Like a Tool That A Script Uses For Different Purposes.
A Function Can Be Designed For A Specific Entity, Or Designed To Serve Many Entities.
They Can Even Be Designed To Perform Only One Action, Or Many Actions.
They Can Be called From Within A Script Or From Another External Script.

Ex: maps\_load::main();

Where main() Is A Function Located In A Script Named _load That Is Located in a Folder Named maps

A Function Is Its Own Entity In The Script With Its Own Name.
Today We Will Be Looking At The Function "attack_move_node" A Function From Within The Game Scripts That Tells An AI-Actor To Fight Its Way To A Goal Node.
Its A Sweet Deal For Juicing Up Your Single-Player Levels.
Here Is The Function Breakdown.
attack_move_node Is The Main function Name.

nSoldier, fWaitMin, fWaitMax, fClosureRate, nGoalNode, fStartRadius, And fEndRadius
Are Variables That The Function Uses.

[exclamation]
fWaitMin, fWaitMax, fClosureRate, fStartRadius, fEndRadius
Have Default Settings.
nSoldier, nGoalNode Must Be Defined In Your Script.

attack_move_node(nSoldier, fWaitMin, fWaitMax, fClosureRate, nGoalNode, fStartRadius, fEndRadius)


nSoldier = the soldier - This Can Also Be Applied To An Array Or Group Of Ai-Actors
fWaitMin = wait at least this many seconds before advancing (default 0.5)
fWaitMax = wait no more than this many seconds before advancing (default 2.5)
fClosureRate = pare down the goalradius by this amount (use values < 1) (default 0.85)
nGoalNode = variable assigned goalnode (required, get this just before calling attack_move_node)
fStartRadius = initial goalradius of the soldier (default 1200, or set on node or in call)
fEndRadius = final goalradius of the soldier (default 512, or set directly in call)

Using The Function:

Say I Had An array Or Group Of Soilders I Wanted To Execute The Function.
I Would Do This:
Add Some Ai-Actors To My Map.
Give Them All The Same target Name. I'm Using my_ai As A Targetname For The Example.

Put A Node Where They Will Fight There Way Toward.For The Example I Named Mine my_ai_node

Make Sure Path Nodes Create A Path So They Can Get To It.

I Would Call The Attack Function By Creating My Own Function.
Ex:


Code:
my_soldiers()
{
mySoldiers = getentarray("my_ai","targetname");
nGoalNode = getnode ("my_ai_node","targetname");
for(i=0; i<mySoldiers.size; i++)
{
level thread attack_move_node(mySoldiers[i], 0.5, 2.5, 0.85, nGoalNode, 1200, 512);
}
}

And Calling It Like This: thread my_soldiers();
When I Want It To Execute.

Below Is The Function 'attack_move_node' . If You Really Examine The function You Can See That Its Not Too Difficult To Grasp.

Code:
attack_move_node(nSoldier, fWaitMin, fWaitMax, fClosureRate, nGoalNode, fStartRadius, fEndRadius)
{
    nSoldier endon("death");
    if(!isdefined(nGoalNode))
    {
    maps\_utility::error("Missing a goal node.");
    }
    if(isdefined(nGoalNode.radius) && !isdefined(fStartRadius))
    {
    fStartRadius = nGoalNode.radius;
    }
    if(!isdefined(fStartRadius))
    {
    fStartRadius = 1200;
    }
     if(!isdefined(fWaitMin))
    {
     fWaitMin = 0.5;
    }
    if(!isdefined(fWaitMax))
    {
    fWaitMax = 2.5;
    }
    if(!isdefined(fClosureRate))
    {
    fClosureRate = 0.85;
    }
    if(isdefined(fEndRadius))       
    {
    fDestRadius = fEndRadius;
    }
    else
    {
    fDestRadius = 512;       
    }
    wait (randomfloatrange(0.5,2.25));
    nSoldier setgoalnode(nGoalNode);
    nSoldier.goalradius = fStartRadius;
    while(nSoldier.goalradius > fDestRadius)
    {
      wait (randomfloatrange(fWaitMin,fWaitMax));
      nSoldier.goalradius = nSoldier.goalradius * fClosureRate;
      nSoldier waittill("goal");  
    }
}

Scripting Is Fun[thumbs_up]
This Stuff Is Hard In The Beginning But If You Can Grasp Scripting You Can Open Up A Whole New Level Of Adding To Your Games. I Dig It.
Anyways Guys Thats It For Scripting 101.."attack_move_node"
Stay Tuned...[exclamation] Maybe I Will Get Motivated And Do More.

Well Sorry For Any Mistakes ...[crazy]

Hope This Helps Someone...

[smokin]


[exclamation]Sometimes When I view The Forums ..In The Code Boxes I sometimes see the symbol < br />.I Know What They Are But Dont Know Why I see Them.Anyhow

If You Copy And Paste Code and see These In Your Script Delete Them, Thanx.


Latest Syndicated News

»
Codutility.com up and runn...
Nice, and there still using the logo and template for the screenshots, which...
Codutility.com up and runn...
dundy writes...Quote:Call of Duty modding and mapping is barly alive only a ...
Codutility.com up and runn...
Mystic writes...Quote:It seems to me the like the site is completely dead? ...
Codutility.com up and runn...
It seems to me the like the site is completely dead?

Partners & Friends

»