M.U.G.E.N Club

Thảo luận trong 'Fighting Game Club' bắt đầu bởi titytity, 12/10/09.

  1. Jadeeye

    Jadeeye Thành viên cấp 3

    Tham gia ngày:
    17/9/10
    Bài viết:
    123
  2. kyokkk

    kyokkk Thành viên cấp 5

    Tham gia ngày:
    9/4/06
    Bài viết:
    1,668
    [video=youtube;1Z7B0e2OpEM]http://www.youtube.com/watch?v=1Z7B0e2OpEM[/video]
    làm cái nữa chơi :d
    làm lại cái này , bữa quay không có tiếng :d
    [video=youtube;MQNlwkaGbU4]http://www.youtube.com/watch?v=MQNlwkaGbU4&feature=youtu.be[/video]
     
    Chỉnh sửa cuối: 13/3/13
  3. Jadeeye

    Jadeeye Thành viên cấp 3

    Tham gia ngày:
    17/9/10
    Bài viết:
    123
    Good combo!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
  4. chitrunglam

    chitrunglam Thành viên cấp 5

    Tham gia ngày:
    13/7/08
    Bài viết:
    1,151
    Nơi ở:
    Tiền Giang
    Xin cái SP đấy dc ko bác :-"
    30 char
     
  5. kyokkk

    kyokkk Thành viên cấp 5

    Tham gia ngày:
    9/4/06
    Bài viết:
    1,668
    SP là cái gì :|:|:|:|:|:|:|:|:|:|:|:|
     
  6. sivalcrew9x

    sivalcrew9x Thành viên cấp 5

    Tham gia ngày:
    11/11/09
    Bài viết:
    326
    Mấy bạn tư vấn dùm mình bản M.U.G.E.N Naruto,one piece, dragon ball v..v hay hay với :D
     
  7. nhomhoanmy

    nhomhoanmy Thành viên cấp 5

    Tham gia ngày:
    11/11/09
    Bài viết:
    2,615
    Chỉnh sửa cuối: 2/4/13
  8. chitrunglam

    chitrunglam Thành viên cấp 5

    Tham gia ngày:
    13/7/08
    Bài viết:
    1,151
    Nơi ở:
    Tiền Giang
    @kyokkk : cái screenpack của Mugen bác đang dùng , cho em link dc ko :-"
     
  9. bokidoll

    bokidoll Thành viên cấp 2

    Tham gia ngày:
    10/4/04
    Bài viết:
    71
  10. Jadeeye

    Jadeeye Thành viên cấp 3

    Tham gia ngày:
    17/9/10
    Bài viết:
    123
    Thanks bạn nhé, đợi mãi con này. Mà như power charge bị lỗi gì rồi, gồng xong mà vẫn để lại explode.

    - - - Updated - - -

    Có viết AI cho mấy nhân vật CvS, mọi người tải về xem thử:

    - DivineWolf's Jill, Human's Seth and Jesus's Bluestreak: http://mugenguild.com/forum/topics/ai-patch-divinewolfs-jill-humans-seth-and-jesuss-bluestreak-jadeeye-150822.0.html
    - DivineWolf's Skullomania and Mr.Karate's Kairi 1.4: http://mugenguild.com/forum/topics/ai-patch-divinewolfs-skullomania-and-mr-karates-kairi-1-4-jadeeye-149021.0.html
    - Kohaku's Melty Blood: http://mugenguild.com/forum/topics/ai-patch-kohakus-melty-blood-chars-jadeeye-149765.0.html

    - - - Updated - - -

    Có viết AI cho mấy nhân vật CvS, mọi người tải về xem thử:

    - DivineWolf's Jill, Human's Seth and Jesus's Bluestreak: http://mugenguild.com/forum/topics/ai-patch-divinewolfs-jill-humans-seth-and-jesuss-bluestreak-jadeeye-150822.0.html
    - DivineWolf's Skullomania and Mr.Karate's Kairi 1.4: http://mugenguild.com/forum/topics/ai-patch-divinewolfs-skullomania-and-mr-karates-kairi-1-4-jadeeye-149021.0.html
    - Kohaku's Melty Blood: http://mugenguild.com/forum/topics/ai-patch-kohakus-melty-blood-chars-jadeeye-149765.0.html
     
  11. bokidoll

    bokidoll Thành viên cấp 2

    Tham gia ngày:
    10/4/04
    Bài viết:
    71
     
  12. Jadeeye

    Jadeeye Thành viên cấp 3

    Tham gia ngày:
    17/9/10
    Bài viết:
    123
    Tôi không có ý định lập trình cho mấy đứa này đánh chiêu hoàn toàn chuẩn xác vì như vậy khi chơi sẽ vô cùng ức chế, nên đôi khi tụi nó cũng hơi vụng tí.
    Về Demitri thì tôi thấy bạn cần xem lại chiêu Demon Cradle (đập cánh), vốn dĩ nó chỉ thực hiện 1 lần mà sao ở đây mình thấy stack tới 2-3 cú xuống máu cực nhanh @@. Và bạn nên cho nó tận dụng lợi thế phi lướt và Hyper "Cẩu xực" của nó để tấn công thì tốt hơn là chỉ đứng chưởng.
     
  13. bokidoll

    bokidoll Thành viên cấp 2

    Tham gia ngày:
    10/4/04
    Bài viết:
    71
    Hi, mình chỉ nói cái nhìn bề ngoài khi quan sát các char của bạn đánh thôi. Có thể tại xu hướng code khác nhau nên nảy ý nói vậy. Khi code thì mình thường chọn phương án khó bị counter cho an toàn. Ví dụ như Dẹmitri thì chiêu đứng yên bắn cột lửa vì nó có reversaldef. Còn bạn, mình thấy mấy char tấn công liên tục cũng được, có thể push được đối phương nhưng chọn chiêu để chain còn có sơ hở, dẫn đến khi kết thúc chain thì bị punish. Bạn thử để Kairi đấu với Silber hoặc Duolon đã patch AI thì sẽ thấy.

    Về Demitri, theo mình thấy thì Demon Cradle chéo 2 hit sau đó chain sang Demon Cradle dọc mấy hít còn lại. Cái này mình giữ của tác giả, ko sửa gì hết.
    Còn dùng hyper để tấn công thì ko ổn đâu vì nếu đối phương detect được sẽ né rất dễ, phí mất 1 gauge. Riêng về khoản phi lướt thì bạn nói trúng chỗ yếu của mình rồi đó. Vẫn cố thử làm nhưng detect tọa độ của đối phương cứ loạn cả lên nên đến phút chót xóa luôn :5cool_beat_plaster:
     
  14. Jadeeye

    Jadeeye Thành viên cấp 3

    Tham gia ngày:
    17/9/10
    Bài viết:
    123
    Công nhận combo còn bị lỗi nhất là Kairi, sẽ fix lại trong tương lai. Nếu chơi theo phong cách phòng thủ, đứng 1 chỗ gồng power, đối thủ đánh thì xài alpha counter hoặc các chiêu phòng thủ khác thì an toàn hơn nhưng đánh như vậy thì hơi chán nên tôi cho tụi nó tấn công dồn dập tí.

    Chiêu Demon Cradle của Demitri thì mình ko biết là có thể stack cái chéo với cái dọc, bấm mãi mà ko ra. Chiêu lướt thì bạn cho nó xuất tấn công đối thủ khi p2bodydist x <=35 và nằm trong các statedef 110, 111, 112 (trạng thái lướt) thử xem.
     
  15. bokidoll

    bokidoll Thành viên cấp 2

    Tham gia ngày:
    10/4/04
    Bài viết:
    71
    Ah, nếu là state 110,111,112 thì mình có xài. Demon cradle chéo chính là phải thực hiện trong lúc dash. Cái này con gốc cũng có (Demon Cradle Dashing Version), bữa trước search thử thì thấy ở đâyhttp://wiki.mizuumi.net/w/Vampire_Savior/Demitri
    Còn vụ chain sang dọc, mình cũng ko làm được. Thử xem trong code đúng là chain bằng tay ko được, bạn thử bỏ dòng này đi xem có được ko

    [State -1]
    type = ChangeState
    value = 1110 ;SENTI
    triggerall = var(58) != 1
    triggerall = command = "dck"
    triggerall = var(13) > 0
    trigger1 = var(14) = 1
    trigger2 = (stateno = 1200|stateno = 1210) && movecontact
    trigger3 = stateno = 5202

    ...

    [State -1]
    type = ChangeState
    value = 1100 ;SENTI
    triggerall = var(58) != 1
    triggerall = command = "dcj"
    triggerall = var(13) > 0
    trigger1 = var(14) = 1
    trigger2 = (stateno = 1200|stateno = 1210) && movecontact
    trigger3 = stateno = 5202

    Var(13) tác giả chú thích là dùng cho hệ thống MAX nhưng hệ thống này chưa có nên nó lúc nào cũng bằng 0.:5cool_beat_plaster:
    Sau đó có thể thực hiện ~F,D,DF,x rồi ~F,D,DF,x liên tiếp để chain từ chéo sang dọc. Cái này tác giả set thế chứ mình chỉ làm được mỗi 1 lần, lần 2 nhấn ko kịp.:5cool_sweat:
     
  16. titytity

    titytity Thành viên cấp 5

    Tham gia ngày:
    3/4/06
    Bài viết:
    809
    Nơi ở:
    HCM
    Hi anh em, Mừng vì anh em giờ có người tìm hiểu sâu hơn về code :5cool_big_smile:
     
  17. Jadeeye

    Jadeeye Thành viên cấp 3

    Tham gia ngày:
    17/9/10
    Bài viết:
    123
    Mừng vì anh Tity huyền thoại vẫn ở đây :5cool_big_smile:

    -------------------------------------------------------------------
    @bokidoll: Bạn cho tôi hỏi mấy vấn đề này nhé:

    - Về vấn đề AI Activation hồi trước tôi cũng có tham khảo Winane nhưng coi code chẳng hiểu gì mấy. Có 1 cách hiệu quả là chuyển mugenversion của các nhân vật sang 1.0 và sử dụng AILevel thì sẽ ko bị mất AI Activation, nhưng có char thì làm đc có char thì ko đc, convert nhân vật đó sang Mugen 1.0 thì cũng cực quá. Ko biết có cách nào đơn giản hơn ko?

    - Về các chuỗi combo thì ko biết làm sao cho các nhân vật nó hiểu là phải thực hiện chiêu B sau chiêu A (ko phải là thực hiện trong lúc mà chiêu A đang active).
    Lấy ví dụ: Thực hiện state 200 => state 0 (trạng thái bình thường) => state 400.
    Như vậy có nghĩa là nó hiểu rằng phải thực hiện trạng thái 400 sau trạng thái gốc là 200 (ko phải là trong lúc trạng thái 200 đang thực hiện).

    - Trong mấy trạng thái nhảy như state 40,45,50,....., mình phải thêm code gì để nó lập tức nhảy lên combo sau khi hất đối thủ lên trời. Làm cái này mà có con hiểu có con ko hiểu.
     
  18. bokidoll

    bokidoll Thành viên cấp 2

    Tham gia ngày:
    10/4/04
    Bài viết:
    71
    - AI activation mình chỉ xài và thấy hiệu quả là được chứ mình cũng ko hiểu và cũng thấy là ko cần hiểu. Thứ nhất là bây giờ tìm bài viết giải thích vì sao làm vậy thì ko thể. Thứ hai là code của Winane đã gộp các phương thức lại với nhau nên đọc khó hiểu. Bạn có thể tạm chấp nhận là thế này. Có 4 phương pháp activate AI :
    1.Human Impossible commands
    2.Ishometeam method
    3.Helper method
    4.XOR method
    1.Phương thức Human Impossible là phương thức đơn giản nhất và an toàn nhất (no false positive). Phương thức này ko có trong code Winane. Bạn chỉ việc tạo ra một loạt các command mà người chơi ko thể nào làm được, ví dụ

    Mã:
    [Command]
    name = "AI0"
    command = a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a
    time = 0
    Nhấn 19 lần "a" trong 0 tick là ko thể. Nhưng máy thì làm được. Do đó bạn để trigger bắt sự kiện này:

    Mã:
    [State -3, AI]
    type = VarSet
    Triggerall = (var(58) <= 0)&&!IsHelper
    Trigger1 = Command="AI0"
    ...
    var(58) = 1
    Tức là do bắt được là máy điều khiển nên bật biến AI. Thường mọi người dùng 30~50 dòng command time = 0 như thế là được.

    2. Phương thức Ishometeam cũng khá đơn giản. Bạn chỉ cần trigger sau ở sau statedef -3:

    Mã:
    [State -3, SetAI]
    type = VarSet
    triggerall = Alive && !IsHelper
    triggerall = IsHomeTeam
    trigger1 = TeamSide = 2
    trigger2 = MatchNo > 1
    var(58) = 1
    Sau đây là chú thích về IsHomeTeam trog mugen doc

    ------------------------------------------------------------
    IsHomeTeam
    ------------------------------------------------------------

    Returns 1 if the player's team is considered the "home team". In arcade modes, the computer is always considered the home team. In versus modes, P1's side (left) is the home team.

    3 Helper. Phương thức này mình cũng ko nắm rõ, nhưng theo mình đoán (đoán thôi nhé) thì như thế này. Trong state của helper có ParentVarSet để set biến 58 (biến AI). Biến này đầu tiên được bật lên cái đã. Sau đó, nếu detect thấy cả helper lẫn parent đều có cùng command thì tức là người đang điều khiển, lại tắt nó đi (set bằng -1)

    Mã:
    [State 9742, ButtonTurnOffAI]
    type = ParentVarSet
    triggerall = var(7)
    triggerall = !(var(2) || var(8))
    trigger1 = command = "a"
    trigger1 = Parent,command = "a"
    trigger2 = command = "b"
    trigger2 = Parent,command = "b"
    trigger3 = command = "c"
    trigger3 = Parent,command = "c"
    trigger4 = command = "x"
    trigger4 = Parent,command = "x"
    trigger5 = command = "y"
    trigger5 = Parent,command = "y"
    trigger6 = command = "z"
    trigger6 = Parent,command = "z"
    trigger7 = command = "start"
    trigger7 = Parent,command = "start"
    var(58) = -1
    4.XOR. Phương thức này hình như cũng giống pp Human impossible ở chỗ lợi dụng việc máy ra command ko giống người.

    Mã:
    [State -3, XOR]
    type = VarSet
    triggerall = var(58)!=1 && !IsHelper
    triggerall = var(57) = GameTime-1
    triggerall = NumHelper(9743)
    triggerall = !(Helper(9743),var(1))
    trigger1 = command = "a" ^^ command = "a2"
    trigger2 = command = "b" ^^ command = "b2"
    trigger3 = command = "c" ^^ command = "c2"
    trigger4 = command = "x" ^^ command = "x2"
    trigger5 = command = "y" ^^ command = "y2"
    trigger6 = command = "z" ^^ command = "z2"
    trigger7 = command = "start" ^^ command = "start2"
    trigger8 = command = "holda" ^^ command = "holda2"
    trigger9 = command = "holdb" ^^ command = "holdb2"
    trigger10 = command = "holdc" ^^ command = "holdc2"
    trigger11 = command = "holdx" ^^ command = "holdx2"
    trigger12 = command = "holdy" ^^ command = "holdy2"
    trigger13 = command = "holdz" ^^ command = "holdz2"
    trigger14 = command = "holdstart" ^^ command = "holdstart2"
    trigger15 = command = "holdfwd" ^^ command = "holdfwd2"
    trigger16 = command = "holdback" ^^ command = "holdback2"
    trigger17 = command = "holdup" ^^ command = "holdup2"
    trigger18 = command = "holddown" ^^ command = "holddown2"
    trigger19 = command = "recovery" ^^ command = "recovery2"
    ;Add more as desired. (See my notes in the CMD.)
    var(58) = 1
    command "a" theo máy là khác command "a2" nên nó chỉ ra 1 trong 2 cái, mặc dù khai báo của 2 cái giống nhau:

    Mã:
    [Command]
    name = "a"
    command = a
    time = 1
    
    [Command]
    name = "a2"
    command = a
    time = 1
    Cho nên khi detect được hiện tượng trên (ra "a" mà lại ko phải "a2") thì tức là máy điều khiển --> set var(58) = 1

    Note: trong 4 pp trên thì chỉ có 2 pp đầu là an toàn(ko false positive)


    Cái này thì dùng prevstateno = 200 , hoặc chắc chắn hơn nữa thì đặt thêm biến và set điều kiện thật chặt chẽ:

    Ví dụ :

    Mã:
    [State -1, punch]
    type = changestate
    value = 200
    triggerall = var(58) = 1 && alive && roundstate = 2
    triggerall = ctrl
    trigger1 = enemynear, movetype = I
    
    [COLOR="#FF0000"][State -1, varset]
    type = VarSet
    triggerall = var(58) = 1 && alive && roundstate = 2
    trigger1 = stateno = 200
    trigger1 = moveguarded
    trigger1 = enemynear, statetype != C
    var(57) = 1[/COLOR]
    
    [State -1, crouch punch]
    type = changestate
    value = 400
    triggerall = var(58) = 1 && alive && roundstate = 2
    triggerall = ctrl
    trigger1 = var(57) = 1
    Có 1 cách nữa, tà đạo 1 tí là dùng animtime

    Mã:
    [State -1, punch]
    type = changestate
    value = 400
    triggerall = var(58) = 1 && alive && roundstate = 2
    ;; [COLOR="#FF0000"]bỏ dòng này[/COLOR] triggerall = ctrl
    trigger1 = stateno = 200
    trigger1 = moveguarded
    [COLOR="#FF0000"]trigger1 = animtime = 0[/COLOR]
    Cái này chắc bạn xem Demitri cũng nắm được rồi. Khi hất đối thủ lên trời thì mìh đang ở state nhất định. Set cho nó jump,thế là xong. Cũng có trường hợp ko phải mìh đang ở state mà đối phương đang ở state nhất định(ví dụ 5050).Quan trọng là các trigger đánh sau đó phải detect đúng tọa độ.

    Mã:
    [State -1, air high] ;test
    type = ChangeState
    triggerall = 1
    triggerall = var(58) = 1 && alive && roundstate = 2
    triggerall = statetype != A
    triggerall = ctrl
    trigger1 = stateno = 21503
    trigger1 = movehit
    trigger1 = time = 16
    value = 888
    ctrl = 0
     
  19. Jadeeye

    Jadeeye Thành viên cấp 3

    Tham gia ngày:
    17/9/10
    Bài viết:
    123
    Cám ơn bạn nhiều, rất bổ ích. Tôi đã bổ sung thêm command trong 1 Command Name (Human Impossible commands) và nhận thấy là càng nhiều lệnh nó càng mau hiểu hơn. Dù cải thiện đc nhưng đôi khi máy vẫn phải "ngu ngu" 1 vài giây nó mới chịu đánh :D
     
  20. titytity

    titytity Thành viên cấp 5

    Tham gia ngày:
    3/4/06
    Bài viết:
    809
    Nơi ở:
    HCM
    Like mạnh bài hướng dẫn về AI của bokidoll:4cool_beauty:
     

Chia sẻ trang này