[Auto ai.ipf] AkCrazy và AkFT

Thảo luận trong 'Granado Espada' bắt đầu bởi JokerB, 20/12/09.

  1. JokerB

    JokerB Youtube Master Race

    Tham gia ngày:
    11/6/08
    Bài viết:
    73
    Hãy đặt nó vào trong trường hợp 1 bản auto running bạn à :)
    PF cần thiết với 1 số team thôi, và trong khi train cũng k cần thiết, thực sự chỉ cần thiết khi raid hay pvp, mà raid hay pvp thì dùng tay chứ ai auto :(
    Đến cả như phiên bản Nutkungx cũng mấy khi sài Emi hay wiz để PF khi train đâu :)
     
  2. Huntress

    Huntress Legend of Zelda

    Tham gia ngày:
    10/8/06
    Bài viết:
    904
    Máy em yếu đâu mà yếu.
    Chạy 2 acc với bộ cài gốc, hiệu ứng full k giật tý nào, k lag tý nào
    Nhưng chạy AkCrazy thì lag cứ gọi là ... hjk
    .
    ___________Auto Merge________________

    .
    Àh àh. Giờ thì đỡ rồi, có lẽ lúc nãy nó lag server thì phải ... zzz

    Mà a ơi, cái này hay quá, chỉ em chỗ nào ng cứu học viết AI cho GE đc hok, iem học cntt, hứng thú với mấy cái này lắm :D
     
  3. JokerB

    JokerB Youtube Master Race

    Tham gia ngày:
    11/6/08
    Bài viết:
    73
    thì cứ gòogle mà táng chứ sao, mình còn chả học CNTT, chưa được học 1 ngày nào IT ai teo j cả =))
     
  4. moneyrain

    moneyrain Youtube Master Race

    Tham gia ngày:
    19/4/06
    Bài viết:
    20
    ai của akietk dùng vòng while nên cpu luôn max ít nhất 1 core ( với duo core ), nói chung tương đối hao tài nguyên, ko hiểu có cách nào giải quyết ?
     
  5. BO_17

    BO_17 Youtube Master Race

    Tham gia ngày:
    9/8/04
    Bài viết:
    6
    à joker cí nút scroll của chuột để phóng to thu nhỏ bản free hình như bị ngược thì phải
     
  6. JokerB

    JokerB Youtube Master Race

    Tham gia ngày:
    11/6/08
    Bài viết:
    73
    Cái đấy là do mình quen kiểu đó nên để thế, bạn có thể chỉnh trong option mà, ở trong game ấn Alt O lên
     
  7. moneyrain

    moneyrain Youtube Master Race

    Tham gia ngày:
    19/4/06
    Bài viết:
    20
    1 bổ sung nho nhỏ nhưng có lẽ hợp lý : bổ sung vào hàm healing check 1 chút để có thể chuyển qua lại giữa stance 1 và 2 : bình thường để stance 1 ( hồi sinh ) đến hết chu kì buf thì tự chuyển qua stance 2 buff rồi quay lại .
    Tui cũng đang nghiên cứu bổ sung thêm buff veteran nhưng hơi nản, he.
    nếu được thì akietk thêm vào 1 nút để tắt autoheal. cái đó nhiều lúc cũng rách việc phết :D
     
  8. JokerB

    JokerB Youtube Master Race

    Tham gia ngày:
    11/6/08
    Bài viết:
    73
    Ẹc moneyrain add yahoo tui đi, đã sửa có thể on off heal mà, stance vet thì buff đc rồi, nhưng mà chuyện đổi stance thì đã tham khảo ý kiến bác Kiệt nhiều lần rồi.
    Cái đổi stance để hs với AkFT mình đã thử thêm vào hàm healing như money nghĩ đó, để ở hàm res là đổi stance sang 1, khi đến chu kỳ buf thì luôn đổi sang 2 để buff nhưng kết quả không khả quan, bởi đúng như bác Kiệt nói, còn phải trả lại leader nữa, như thế lại phải cố định leader (khi đổi stance thì scout nó làm leader mất rồi :( )

    Theo như bản PhapSuPro của bác Kiệt nói thì có lẽ bác ấy giải quyết đc vấn đề này rồi nhưng chắc còn nhiều vấn đề liên quan đến đổi stance buff, vì buff khó hơn là đổi stance để bay kiểu như wiz nên bác ấy chưa đưa sang AKFT :D

    Hoặc là cũng có thể dạo này bác ấy đang mải mê xem phim HD =)) khoe với mình như thế :))
     
  9. HeyHiAll

    HeyHiAll Youtube Master Race

    Tham gia ngày:
    21/6/09
    Bài viết:
    82
    Sau đây là một số giải thuật (và code) quan trọng, do tôi thiết kế và lập trình, đã được sử dụng trong các AI tôi viết. Trước khi tôi công bố các AI đó (bằng nhiều cách khác nhau: cho free, cho có hỗ trợ, thương mại hoá, tặng,...) thì các giải thuật này không có trong bất cứ một AI nào tìm thấy được trên internet.

    1/Giải thuật phát hiện 3 (hoặc 2) nhân vật trong team ở gần nhau, sử dụng ngay từ phiên bản cho free "Ak Crazy Hunter V106". Trong các phiên bản sau giải thuật này được chỉnh sửa chút ít để giảm tải cho CPU.
    //Get HPMin in Team
    func GetHpMinInTeam()
    {
    var TestAi1;
    var TestAi2;
    var TestAi3;
    var tHp;
    var Hp1 = 100;
    var Hp2 = 100;
    var Hp3 = 100;

    if(Keep_SWM == 'OFF')
    return 100;

    if(JobsCnt == 0)
    return 100;

    TestAi1 = GetAiActor(self1);
    tHp = 1;
    while(tHp < 100)
    {
    if(GetNeedHealFriend(TestAi1, 1, tHp) == nil)
    tHp = tHp +1;
    else
    break;
    }
    Hp1 = tHp;

    if(JobsCnt == 1)
    return Hp1;

    if(JobsCnt > 1)
    {
    TestAi2 = GetAiActor(self2);
    tHp = 1;
    while(tHp < 100)
    {
    if(GetNeedHealFriend(TestAi2, 1, tHp) == nil)
    tHp = tHp +1;
    else
    break;
    }
    Hp2 = tHp;
    }

    if(JobsCnt > 2)
    {
    TestAi3 = GetAiActor(self3);
    tHp = 1;
    while(tHp < 100)
    {
    if(GetNeedHealFriend(TestAi3, 1, tHp) == nil)
    tHp = tHp +1;
    else
    break;
    }
    Hp3 = tHp;
    }

    if(JobsCnt == 2)
    {
    if(Hp1 < Hp2)
    return Hp1;
    else if(Hp2 < Hp1)
    return Hp2;
    else
    return 100;
    }

    if(JobsCnt == 3)
    {
    if(Hp1 < Hp2 && Hp1 < Hp3)
    return Hp1;
    else if(Hp2 < Hp1 && Hp2 < Hp3)
    return Hp2;
    else if(Hp3 < Hp1 && Hp3 < Hp2)
    return Hp3;
    else
    return 100;
    }

    return 100;
    }

    // Kiem tra 3 (hoac 2) nhan vat o gan nhau
    // Range la 1/2 tam tac dung cua Scout Buff
    // HpMin la gia tri cot mau can kiem tra
    func IsFamMembInRange(TestRange)
    {
    var TestAi1;
    var TestAi2;
    var TestAi3;
    var HpMin;

    if(JobsCnt == 0)
    return 'UNKNOW';

    if(JobsCnt == 1)
    return 'YES';

    HpMin = GetHpMinInTeam();
    if(HpMin == 100)
    return 'UNKNOW';

    if(JobsCnt == 2)
    {
    TestAi1 = GetAiActor(self1);
    TestAi2 = GetAiActor(self2);
    if(GetNeedHealFriend(TestAi1, TestRange, HpMin) != nil)
    {
    if(GetNeedHealFriend(TestAi2, TestRange, HpMin) != nil)
    {
    return 'YES';
    }
    }
    return 'NO';
    }

    if(JobsCnt == 3)
    {
    TestAi1 = GetAiActor(self1);
    TestAi2 = GetAiActor(self2);
    TestAi3 = GetAiActor(self3);
    if(GetNeedHealFriend(TestAi1, TestRange, HpMin) != nil)
    {
    if(GetNeedHealFriend(TestAi2, TestRange, HpMin) != nil)
    {
    if(GetNeedHealFriend(TestAi3, TestRange, HpMin) != nil)
    {
    return 'YES';
    }
    }
    }
    return 'NO';
    }

    return 'NO';
    }
     
  10. HeyHiAll

    HeyHiAll Youtube Master Race

    Tham gia ngày:
    21/6/09
    Bài viết:
    82
    2/Hàm Ak_INIT() và cách gọi nó để cho kết quả init tốt nhất thế giới hiện nay.
    Sử dụng trong các phiên bản "Ak Fighter Pro" (V210, V212,...), "Ak Jack Pro", "Ak PhapSu Pro",...

    A/Ví dụ cách gọi từ attacker.scp
    func SCR_ATTACKER_TS_NONE(self)
    {
    sleep(100);

    // start log
    AiLog('ATTACKER_TS_NONE : Start!!!');

    ....
    // Main Loop
    while(1){
    // Do Init
    if('DONE' != Ak_INIT(self,selfAi)){
    sleep(200);
    ChangeTacticsAi(selfAi,'TS_NONE');
    return;
    }
    ....

    // Main Sleep
    sleep(200);
    }
    }

    B/Bản thân hàm trong lib.scp
    func Ak_INIT(self,selfAi)
    {
    //1.'YES'
    if(AkInit == 'YES'){
    if(IsTheSelfOk(self) != 1){
    JobsCnt = 0; Keep_SWM = 'TÃìT'; TimeSw = 0;
    self1 = 'NO'; self2 = 'NO'; self3 = 'NO';
    job1 = 'NO'; job2 = 'NO'; job3 = 'NO';
    ResetAllInitVal();
    AkInit = 'NO';
    return;
    }
    return 'DONE';
    }

    //2.'NO'
    if(job1 != 'NO' && job2 != 'NO' && job3 != 'NO'){
    if(job1 == 'Scout' || job1 == 'Soho' || job1 == 'SohoFighter' || job1 == 'Viki' || job2 == 'Scout' || job2 == 'Soho' || job2 == 'SohoFighter' || job2 == 'Viki' || job3 == 'Scout' || job3 == 'Soho' || job3 == 'SohoFighter' || job3 == 'Viki') ScoutExit = 1;
    else {
    ScoutExit = 0; ScoutMode = 0;
    }
    if(job1 != 'Empty') JobsCnt = 1;
    if(job2 != 'Empty') JobsCnt = 2;
    if(job3 != 'Empty') JobsCnt = 3;

    if(LanDau != 0){
    LanDau = 0;
    SwitchSingleSelectMode();
    }
    ResetCharOpt();
    SysMsg('JobsCnt = ' .. JobsCnt .. ' : ' .. job1 .. ' / ' .. job2 .. ' / ' .. job3);
    SysMsg('Ak Fighter Pro V212 - Taìc GiaÒ: NguyêÞn Anh Kiêòt');
    SysMsg('========== WWW.MidiUtility.COM ==========');
    SysMsg('ThuÒ tuòc Init ðaÞ hoaÌn thaÌnh 3/3.');
    SysMsg('Moòi thãìc mãìc vui loÌng liên hêò nick Yahoo: arsene_lupin008');
    AkInit = 'YES';
    return 'DONE';
    }

    //a.Tim tri self1,job1 cho nv so 1:
    if(job1 == 'NO'){
    if(InitCnt < 8){
    SelectMyPc(0);
    InitCnt = InitCnt +1;
    return;
    }
    if(IsLeader(selfAi) == 'YES'){
    job1 = GetJobName(selfAi);
    self1 = self;
    ThLeadrAi = selfAi;
    SysMsg('ThuÒ tuòc Init ðaÞ hoaÌn thaÌnh 1/3...');
    InitCnt = 0;
    }
    return;
    }

    //b.Tim tri self2,job2 cho nv so 2 (neu co):
    if(job2 == 'NO'){
    if(InitCnt < 8){
    SelectMyPc(1);
    InitCnt = InitCnt +1;
    return;
    }
    if(IsLeader(selfAi) == 'YES'){
    if(self != self1){
    job2 = GetJobName(selfAi);
    self2 = self;
    }
    else {
    self2 = ''; job2 = 'Empty';
    }
    SysMsg('ThuÒ tuòc Init ðaÞ hoaÌn thaÌnh 2/3...');
    InitCnt = 0;
    }
    return;
    }

    //c.Tim tri self3,job3 cho nv so 3 (neu co):
    if(job3 == 'NO'){
    if(InitCnt < 8){
    SelectMyPc(2);
    InitCnt = InitCnt +1;
    return;
    }
    if(IsLeader(selfAi) == 'YES'){
    if(self != self1 && self != self2){
    job3 = GetJobName(selfAi);
    self3 = self;
    }
    else {
    self3 = ''; job3 = 'Empty';
    }
    InitCnt = 0;
    }
    return;
    }
    }

    (còn nữa)
     
  11. HeyHiAll

    HeyHiAll Youtube Master Race

    Tham gia ngày:
    21/6/09
    Bài viết:
    82
    3/Hàm tìm mục tiêu thông minh, sử dụng trong "Ak Fighter Pro" (V210, V212,...), "Ak Jack Pro", "Ak PhapSu Pro",...
    Hàm này làm các nhân vật là attacker tìm và tấn công mục tiêu rất nhanh và thông minh trong chế độ không sử dụng lệnh Call() ("Follow Leader OFF").

    func AkGetNearEnemy(self,selfAi,AtkRange)
    {
    var OkToFind = 0;
    var AkTarget = nil;
    var Ch1_Ai = nil;
    var Ch2_Ai = nil;
    var Ch3_Ai = nil;
    var ImTLeader;
    var ImInRange;

    if(Bat_Range == 0) ImInRange = 1;
    else {
    if(IsNearFromKeepDestPosition(selfAi, Bat_Range) == 'YES') ImInRange = 1;
    else ImInRange = 0;
    }

    if(JobsCnt > 0){
    Ch1_Ai = GetAiActor(self1);
    if(self == self1){
    if(Ch1AtkOn != 0){
    OkToFind = 1;
    }
    }
    }
    if(JobsCnt > 1){
    Ch2_Ai = GetAiActor(self2);
    if(self == self2){
    if(Ch2AtkOn != 0){
    OkToFind = 1;
    }
    }
    }
    if(JobsCnt > 2){
    Ch3_Ai = GetAiActor(self3);
    if(self == self3){
    if(Ch3AtkOn != 0){
    OkToFind = 1;
    }
    }
    }

    if(OkToFind == 1){
    if(IsLeader(selfAi) == 'YES') ImTLeader = 1;
    else ImTLeader = 0;

    AkTarget = GetNearEnemy(selfAi, 400);

    if(AkTarget == nil && Ch1_Ai != nil) AkTarget = GetActorAttackMe(Ch1_Ai);
    if(AkTarget == nil && Ch2_Ai != nil) AkTarget = GetActorAttackMe(Ch2_Ai);
    if(AkTarget == nil && Ch3_Ai != nil) AkTarget = GetActorAttackMe(Ch3_Ai);
    if(AkTarget == nil && ImTLeader == 0 && ThLeadrAi != nil) AkTarget = GetAiTarget(ThLeadrAi);

    if(AkTarget == nil){
    if(CLModeOn == 1){
    if(ImTLeader == 1) AkTarget = GetNearEnemy(selfAi,AtkRange);
    else {
    if(AkTarget == nil && Ch1_Ai != nil){
    if(IsLeader(Ch1_Ai) == 'YES') AkTarget = GetActorAttackMe(Ch1_Ai);
    }
    if(AkTarget == nil && Ch2_Ai != nil){
    if(IsLeader(Ch2_Ai) == 'YES') AkTarget = GetActorAttackMe(Ch2_Ai);
    }
    if(AkTarget == nil && Ch3_Ai != nil){
    if(IsLeader(Ch3_Ai) == 'YES') AkTarget = GetActorAttackMe(Ch3_Ai);
    }

    if(ImInRange == 1 && AkTarget == nil) AkTarget = GetNearEnemy(selfAi,AtkRange);
    }
    }
    else if(ImInRange == 1) AkTarget = GetNearEnemy(selfAi,AtkRange);
    }
    return AkTarget;
    }
    return nil;
    }

    (còn nữa)
     
  12. Mr.????

    Mr.???? Legend of Zelda

    Tham gia ngày:
    11/4/09
    Bài viết:
    1,129
    Bác AKIET có phiên bản running nào mới share cho ae đi, chỉ xin bản running thôi ko dám xin mấy bản pro kia đâu :)
     
  13. JokerB

    JokerB Youtube Master Race

    Tham gia ngày:
    11/6/08
    Bài viết:
    73
    Akhunter hay AkCrazy Free kia chả là Running :(
     
  14. Chutchutchut

    Chutchutchut Mr & Ms Pac-Man

    Tham gia ngày:
    29/10/05
    Bài viết:
    193
    Mình cũng đang xài bản AI của AK(thương mại) thấy rất good ^^. giờ yên tâm đi làm ^^
    Nhưng còn 1 vấn đề là dùng AI này cắm jack nó xây loạn xị quá ^^
     
  15. Mr.????

    Mr.???? Legend of Zelda

    Tham gia ngày:
    11/4/09
    Bài viết:
    1,129
    Hi hi cái bản crazy mà bạn với bác kiet cho free đó có ver nào mới hơn tẹo ko mà bác kiệt bảo chỉnh sửa cho đỡ tốn cpu đó :)
     
  16. JokerB

    JokerB Youtube Master Race

    Tham gia ngày:
    11/6/08
    Bài viết:
    73
    Vốn dĩ đã định bỏ Jack đi mà bạn, đã là Running thì đâu có Jack ;))

    @ Mr ???: Bản nào cũng tốn thế thôi :> chỉ có nhiều tính năng hơn hay ít hơn thôi ;)
     
  17. HeyHiAll

    HeyHiAll Youtube Master Race

    Tham gia ngày:
    21/6/09
    Bài viết:
    82
    Jack Running thì phải xây loạn xạ thôi, làm sao khác được.
    Còn "Ak Jack Pro" thì không running, nên nó xây cực ngon, và rất đẹp.
    Nếu hai (hoặc 1) nhân vật còn lại của team là attacker, thi nó đánh như Ak Fighter Pro.
     
  18. ongtrum919

    ongtrum919 Donkey Kong

    Tham gia ngày:
    16/10/05
    Bài viết:
    332
    sao mình dow cái bản auto free về giờ update ko được trời sao chơi đây :((
     
  19. Mr.????

    Mr.???? Legend of Zelda

    Tham gia ngày:
    11/4/09
    Bài viết:
    1,129
    SV đã mở đâu mà đòi update =))
     
  20. HeyHiAll

    HeyHiAll Youtube Master Race

    Tham gia ngày:
    21/6/09
    Bài viết:
    82
    JokerB gửi cho email này [email protected] một bản FT212 nhen. Đây là người đã hỗ trợ mình trên forum của Liberi.
     

Chia sẻ trang này