Henry AI... - samael - 08-23-2012
I made some changes on Silva's Henry AI....
Well.. i've tried to defeat it with Davis and it was veeery annoying!
AI-Code:
void id(){
// reset all inputs
left(0,0);
right(0,0);
J(0,0);
up(0,0);
down(0,0);
A(0,0);
D(0,0);
int stzd = abs(self.z-target.z);
int xdst = self.x-target.x;
int ydst = self.y-target.y;
int zdst = self.z-target.z;
int zbgu = self.z-bg_zwidth1;
int xabs = abs(xdst);
int yabs = abs(ydst);
int zabs = abs(zdst);
int distance = abs(target.x - self.x);
int k = 0;
int dst = 99999;
for (int i = 0; i < 400; i++)
{if (loadTarget(i) == 0 && target.hp > 0 && target.num != self.num && target.team != self.team && target.state != 14 && abs(self.x-target.x)+abs(self.z-target.z) < dst){
dst = abs(self.x-target.x)+abs(self.z-target.z);
k = i;
}}
loadTarget(k);
int zdistance = abs(target.z - self.z);
bool jump = false;
if(target.type != 0 && mode == 1){clr();print("No enemy");right(1,1);}
if (distance < 350 && target.type == 0){clr();print("Danger:");
if (zabs <= 40 && distance > (10 + rand(30))){print (" Run Run Z");
if(self.z < (bg_zwidth1 + rand(30))) {down();}
else if(self.z > (bg_zwidth2 - rand(30))) {up();}
else if(zdst < 0){up();}
else if(zdst > 0){down();}}
if (zabs > 60){if (zdst < 0){down();}
else if(zdst > 0){up();}}
if((distance < 350 || self.state == 2 || (target.state == 2 && distance < 350)) && zabs < 60)
{;
if (bg_width - self.x < (150 + rand(80)) || stage_bound - self.x < (150 + rand(80))){left();}
else if (self.x < (150 + rand(80))){right();}
else if (target.x > self.x){left();}
else{right();}
if(self.state == 2 && jump){J();}}
else{if (target.x > self.x && self.facing){right(1,1);}
else if (target.x < self.x && !self.facing){left(1,1);}}
if (self.state == 2 && self.x_velocity == 0){left();}
if(self.state == 2 && distance < (50+rand(150)) && rand(1) == 1){J();}}
if(self.state == 2 && distance < (50+rand(150)) && rand(1) == 0){print("Ole");D();}
if((self.frame == 213 || self.frame == 214 || self.frame == 216 || self.frame == 217) && distance < 60 && zdst < 20){A();}
if (distance > 350 && target.type == 0){clr();print("Come at me Bro");{
if (self.mp > 200 && rand(15) == 15 && target.blink == 0){print("Magic Arrow"); if (target.x > self.x){DrJ();}
else if (target.x < self.x){DlJ();}}
if (target.x > self.x && self.facing){right(1,1);}
if (target.x < self.x && !self.facing){left(1,1);}
if (target.blink == 0 && target.state != 6 && target.state != 12 && target.state != 14){
if (target.z > self.z && zdistance > 10){down();}
else if(target.z < self.z){up();}
if (distance < 473 && distance > 350 && self.state != 2)
{if (zdistance < 10){A();}
else if (zdistance > 15 && zdistance < 40){if (target.z > self.z){down(1,0);}
else{up();}A();}}}
if (distance > 450){if (target.x > self.x){right(1,1);}
else if (target.x < self.x){left(1,1);}
if ((target.state == 3 || target.state == 15) && self.state != 2 ){print(" Defend");{A();}}
}}}}
|
RE: Henry AI... - Bender_EX - 08-24-2012
Vauu, cool!!!
RE: Henry AI... - professional DCer - 08-24-2012
Very nice, its cool!!! I am a bit jealous of you because I don't know advanced AI scripting I only know basics. Good, keep it up!!
(08-24-2012, 08:23 AM)Bender_EX Wrote: Vauu, cool!!! vauu? bad english.
RE: Henry AI... - samael - 08-26-2012
Haha Thanks Dcer... But this is not advanced... Is only basic things :{
YinYin and Silva are the real masters :p
I don't know how to create complex functions like them :}
I think that main thing of AI is the "Load target" part... I'm not good with this...
And a little change on Henry AI... Now it can help you on stage mode:
AI-Code:
void id(){
// reset all inputs
left(0,0);
right(0,0);
J(0,0);
up(0,0);
down(0,0);
A(0,0);
D(0,0);
int stzd = abs(self.z-target.z);
int xdst = self.x-target.x;
int ydst = self.y-target.y;
int zdst = self.z-target.z;
int zbgu = self.z-bg_zwidth1;
int xabs = abs(xdst);
int yabs = abs(ydst);
int zabs = abs(zdst);
int distance = abs(target.x - self.x);
int k = 0;
int dst = 99999;
for (int i = 0; i < 400; i++)
{if (loadTarget(i) == 0 && target.hp > 0 && target.num != self.num && target.team != self.team && target.state != 14 && abs(self.x-target.x)+abs(self.z-target.z) < dst){
dst = abs(self.x-target.x)+abs(self.z-target.z);
k = i;
}}
loadTarget(k);
int zdistance = abs(target.z - self.z);
bool jump = false;
if(target.type != 0 && mode == 1){clr();print("No enemy");right(1,1);}
if(target.team == self.team && mode == 1 && target.type == 0){clr();print("No enemy");right(1,1);}
if (distance < 350 && target.type == 0 && target.team != self.team){clr();print("Danger: ");
if (zabs <= 40 && distance > (10 + rand(30))){print ("Run Run Z");
if(self.z < (bg_zwidth1 + rand(30))) {down();}
else if(self.z > (bg_zwidth2 - rand(30))) {up();}
else if(zdst < 0){up();}
else if(zdst > 0){down();}}
if (zabs > 60){if (zdst < 0){down();}
else if(zdst > 0){up();}}
if((distance < 350 || self.state == 2 || (target.state == 2 && distance < 350)) && zabs < 60)
{;
if (bg_width - self.x < (150 + rand(80)) || stage_bound - self.x < (150 + rand(80))){left();}
else if (self.x < (150 + rand(80))){right();}
else if (target.x > self.x){left();}
else{right();}
if(self.state == 2 && jump){J();}}
else{if (target.x > self.x && self.facing){right(1,1);}
else if (target.x < self.x && !self.facing){left(1,1);}}
if (self.state == 2 && self.x_velocity == 0){left();}
if(self.state == 2 && distance < (50+rand(150)) && rand(1) == 1){J();}}
if(self.state == 2 && distance < (50+rand(150)) && rand(1) == 0){print("Ole");D();}
if((self.frame == 213 || self.frame == 214 || self.frame == 216 || self.frame == 217) && distance < 60 && zdst < 20){A();}
if (distance > 350 && target.type == 0 && target.team != self.team){clr();print("Come at me Bro: ");{
if (self.mp > 200 && rand(15) == 15 && target.blink == 0){print("Magic Arrow"); if (target.x > self.x){DrJ();}
else if (target.x < self.x){DlJ();}}
if (self.mp > 100 && rand(15) == 14 && target.blink == 0 && zabs < 20){print("Wind"); if (target.x > self.x){DrA();}
else if (target.x < self.x){DlA();}}
if (target.x > self.x && self.facing){right(1,1);}
if (target.x < self.x && !self.facing){left(1,1);}
if (target.blink == 0 && target.state != 6 && target.state != 12 && target.state != 14){
if (target.z > self.z && zdistance > 10){down();}
else if(target.z < self.z){up();}
if (distance < 473 && distance > 350 && self.state != 2)
{if (zdistance < 10){A();}
else if (zdistance > 15 && zdistance < 40){if (target.z > self.z){down(1,0);}
else{up();}A();}}}
if (distance > 450){if (target.x > self.x){right(1,1);}
else if (target.x < self.x){left(1,1);}
if ((target.state == 3 || target.state == 15) && self.state != 2 ){print(" Defend");{A();}}
}}}}
|
|