I'm creating one script and i was trying to do this:
LoadTarget Type 4 > Check if is in an offencive mode > If Yes act (Defend or Dodge).
> If No Load a new Target.
LoadTarget Type 3 > //Check if is in an offencive mode > If Yes act (Defend or Dodge).
> If No Load a new Target.
LoadTarget Type 0 > Act ( Defend, Dodge or Attack).
Well. So here starts my problem. I've made all the script but, looks like the loadTarget function become a mess. I've tried a lot of changes but nothing seems to work. Here is the main part of this AI.
//Basic
int tdistance = distance + zdistance + ydistance;
int DCL = (distance > 69)?1:0;
int DMD = (distance > 250)?1:0;
int DLG = (distance > 420)?1:0;
int RANGE = DCL+DMD+DLG; // 0 = Very Close, 1 = Close range, 2 = Mid RANGE, 3 = Long Range
int TM = (target.team != self.team)?1:0; // Different Team = 1 Same Team == 0
int TSPEED = abs(target.x_velocity);
//END_Basic
//Defining Hostility
int HOSTKIND4 = 0;
int HOSTKIND3 = 0;
int HOSTKIND0 = 0;
int HOSTILITY = 0;
//END_Defining Hostility
//Looking for Hostile objects
//TYPE 4
int AR = 0;
int PL = 0;
int DST = 999999999;
//LoadTarget Type 4
for (int i = 0; i < 400; i++)
{if (loadTarget(i) == 4 && tdistance < DST){DST = abs(self.x-target.x)+abs(self.z-target.z)+abs(self.y-target.y); AR = i;loadTarget(AR);};}
//Check if is in an offencive mode
if((target.state == 1002 || ((target.state == 1004|| target.state == 3000) && TSPEED > 0)) && target.team != 0 && TM == 1 && target.type == 4 && RANGE < 3){HOSTKIND4 = 1;} //Make it Jump Other loadTargets
//TYPE 4
//TYPE 3
int PLAYER = 0;
int DST2 = 999999999;
//LoadTarget Type 3
if(HOSTKIND4 == 0){ for (int i = 0; i < 400; i++)
{if (loadTarget(i) == 3 && tdistance < DST2)
{DST2 = abs(self.x-target.x)+abs(self.z-target.z)+abs(self.y-target.y); PL = i;loadTarget(PL);};};}
//Check if is in an offencive mode
if(TM == 1 && target.type == 3 && RANGE < 3 && target.team != 0 && (target.state == 400 || target.state == 3000 || target.state == 3006 || target.state == 3005 || target.state == 15 || target.state == 3)){HOSTKIND3 = 1;}
//TYPE 3
//TYPE 0
int DST3 = 999999999;
//LoadTarget Type 0
if(HOSTKIND3 == 0 && HOSTKIND4 == 0){ for (int i = 0; i < 400; i++)
{if (loadTarget(i) == 0 && tdistance < DST3)
{DST3 = abs(self.x-target.x)+abs(self.z-target.z)+abs(self.y-target.y); PL = i;loadTarget(PL);};};}
//Check if is in an offencive mode
if(TM == 1 && target.type == 0 && (target.state == 400 || target.state == 3000 || target.state == 3006 || target.state == 3005 || target.state == 3 || target.state == 100)){HOSTKIND0 = 1;}
//TYPE 0
if(HOSTKIND0 == 1 || HOSTKIND3 == 1 || HOSTKIND4 == 1){HOSTILITY = 1;}//If HOSTILITY = 1 it will defend or Dodge. If HOSTILITY = 0 will attack.
If need more informations just tell me. I hope anybody can help me. I don't know what to do anymore...