[Hướng dẫn]Custom spell với trigger - 2 dạng cơ bản

Thảo luận trong 'World Editor' bắt đầu bởi sukaraki, 12/7/08.

Trạng thái chủ đề:
Không mở trả lời sau này.
  1. sukaraki

    sukaraki Donkey Kong

    Tham gia ngày:
    12/5/08
    Bài viết:
    356
    Nơi ở:
    Demonworld
    BÀI VIẾT NÀY BAO GỒM GIẢI ĐÁP THẮC MẮC VỀ SPELL, CHỈ CÁCH LÀM SPELL ,LÂU LÂU CHỦ TOPIC CAO HỨNG SHARE CHO ANH EM VÀI SPELL ĐẸP :))

    @ Xem qua các bài trong topic hỏi đáp, thấy có rất nhiều thắc mắc lặp đi lặp lại , và nhiều bạn muốn làm custom spell ,khá giống nhau nhưng không lẽ mỗi lần như vậy đều ngồi viết 1 cái hướng dẫn cách làm.Vì những lý do đó nên mình lập topic này để hướng dẫn cách làm mọi loại custom spell bằng trigger.Chia ra 2 dạng chính : Dạng 1 là dạng chỉ cần 1 trigger .Dạng 2 là dạng phối hợp nhiều trigger.

    @ Dạng 1 :
    Dạng 1 bao gồm các spell đơn giản kiểu : đánh 1 phát vào thằng bị cast, đánh 1 phát AOE , modify hp, mana, custom spell cho item , move caster tới thằng bị cast / vị trí cast ,hoặc chiêu passive. Điều ta cần làm vì vậy chỉ là : lượng damage gây ra , thằng bị cast , thằng cast , vùng phép [ đối với AOE ]

    Mẫu hay dùng :
    -Tại sao lại chọn starts the effect of ability mà không chọn finish casting, begin casting, start channeling ??? Với start channeling và begin casting, bạn thường mắc 1 bug nhỏ là bấm xong, chạy ra, thì trigger vẫn hoạt động, mà spell bạn chưa quay [tức là còn xài tiếp đc lần nữa :)) ] . Còn với finish casting, tức là làm phép xong rồi , thì casting unit với target unit of ability being cast không còn chính xác nữa, thường là ko bắt đc hoặc tệ hơn là trigger hiểu nhầm sang con unit khác, và thế là lung tung lên cả.

    -Với cái condittion thì dễ hiểu rồi.

    -Còn action : Với trigger trên, bạn deal 1 dam = 100 X level chiêu + thêm strength thằng cast x 2.5 .Vì lượng damage là số nguyên [real] nên muốn dùng các số kiểu intenger [số thực] thì phải dùng Conversion - convert intenger to real , và ngược lại. Đôi khi bạn muốn dùng tới 1 giá trị nào đó , như lượng hp, lượng mana, current flying height, level of ability for unit, hero level, hero atribute, kéo xuống mà không thấy thì hãy bấm vào Conversion.
    @ Lưu ý về damage AOE : trong WE, trigger làm damage AOE rất kỳ cục, nó dam luôn thằng cast, thằng bị cast, địch lẫn bồ [ dù chọn loại spell, magic, chaos, hay bất cứ loại attack nào ] Cho nên khi muốn làm 1 spell AOE mà không muốn trúng bồ, ta phải dùng tới unit group.

    - Với phép chọn 1 unit như storm bolt trên đây, ta xác định dùng đánh AOE từ chân nó tính ra ,phạm vi trong vùng rộng 500 dài 500 [hoặc bao nhiêu tùy bạn] , unit được chọn phải phù hợp điều khiện đưa ra trong matching - chọn là nó thuộc về phe địch của thằng cast phép.Trong này các bạn hay lộn giữa picked unit và matching unit.Để không bị lộn, nhớ là mình đang ở trong cái vỏ nhỏ thì theo vỏ nhỏ, không được theo cái vỏ lớn bên ngoài.

    -Dưới Loop - Action thì các unit đó đã đc chọn rồi ,lúc này không còn là matching unit nữa mà là picked unit. Vì ta chọn unit nên phải dùng theo damage target như hồi nãy chứ không phải là damage area.

    @ Làm một chiêu passive [không cần cast] với dạng 1 :
    Mẫu : chiêu hút mana theo % tên là mana thirst.mỗi cú đánh của thằng có unit type là HeoMập có 10% nó sẽ hút 5% mana của thằng bị đánh.

    -Event là có thằng bị đánh

    -Condittions là thằng đánh có type là Heomập và thằng bị đánh phải có % mana còn lại lớn hơn hoặc bằng 5% [ko còn làm sao hút]

    @ Lưu ý với điều kiện, các bạn rất hay quên cái And ở bên ngoài, có lẽ không quen dùng and[tất cả điều kiện phải thỏa] với or[chỉ cần 1 điều kiện thỏa] - còn không có gì cả thì xem như or .Với 2 điều kiện như vầy, đây là chiêu passive có sẵn, nếu muốn chiêu đó là chiêu hero, có thể tăng level, mỗi level thì tăng % hút hoặc khả năng ra chiêu thì phải thêm condittion là level of ability mana thirst for attacking unit greater than or equal to 1.

    @ Dạng 2 là dạng phối hợp nhiều trigger cho 1 phép phức tạp hơn chút : nổ trong vùng liên tục trong vài giây, phép dash [lướt] hoặc chiêu nhảy.

    @ Thứ nhất, điều ta quan tâm là các biến [varible] và mảng [array] .
    - unit : thường đặt cho thằng cast phép, hoặc thằng bị cast .

    - point : thường lưu vị trí thằng cast, vị trí bị cast, .v.v.

    - unit group : thường lưu những thằng đi vào vùng nổ chưởng.Dùng với 3 lệnh : add unit to unit group, remove unit from unit group và damage target.

    - timer : đồng hồ thời gian ,bắt buộc phải lập, vì nó không có sẵn.

    -special effect : thường dùng mảng vì có nhiều effect, dùng với 1 biến intenger để đếm số thứ tự , dùng với lệnh set varible và lệnh destroy special effect.
    ... v.v ...

    @ Mẫu dạng 2 :
    1 - trigger cast phép :

    - bao gồm việc lưu thằng cast, lưu thằng bị cast, lưu vị trí thằng cast, lưu vị trí thằng bị cast / lưu vị trí cast phép [ tùy vào trigger có sử dụng cái nào thì lưu cái đó ] - tại sao phải lưu ? vì hoạt động của phép đã không còn giới hạn trong 1 trigger nữa, với các trigger khác ,ta không thể xác định theo kiểu casting unit, hay position of casting unit được mà phải qua biến trung gian.

    - lệnh wait bao nhiêu giây để chờ mà turn off trigger đang thực hiện phép.

    - lệnh xóa các special effect. Tại sao phải xóa ? Khi 1 effect nổ ra, thì nó nổ xong - ta thấy nó mất tiêu, nhưng thực ra nó vẫn còn đó và chiếm bộ nhớ, 1 map dùng nhiều custom spell đặc sắc mà thằng làm map ko biết xóa effect thì sau vài chục phút, map sẽ giựt như con ngựa điên :)) lưu ý nha các chàng map maker.

    2- trigger đang thực hiện phép :

    - Phải turn off lúc map khởi tạo.

    - thường event là every ? giây.

    - action thường tạo special effect.Nhớ tạo 1 mảng special effect, và 1 biến intenger để nhớ số special effect.Khi tạo 1 special effect thì cho biến intenger đó tăng 1 và gán biến special effect [biến intenger đếm] cho special effect vừa tạo.Khi biến intenger đó đụng trần [ví dụ maximum là 100 chẳng hạn] thì cho nó lại thành 1.

    - Còn lại thường là lệnh move hoặc lệnh damage target.

    - Sau thời gian quy định trong trigger 1 thì trigger 2 này sẽ bị turn off ,special effect sẽ bị xóa hết, như thế ram mới không bị đầy.Lưu ý xem thêm bài memory leak của anh TOM !!!

    @ Trên đây là mẫu chung cho đa số spell dạng 2 , nếu phát hiện thiếu cái gì kêu mình thêm vào :wink:


    @ Bài mẫu : Chiêu nhảy lên bổ xuống giống Blake trong DDay, nhưng DDay cùi mía nó chỉ biết : tự dưng hiện 1 thằng blake giơ kiếm ở trên đầu thằng bị cast, cứng đơ ,rồi nó biến mất, thằng blake xuất hiện ngay chỗ thằng bị cast và gây damage, hết.Chiêu mẫu hướng dẫn sau đây thì cho bạn xem luôn cái animation nó nhảy lên từ vị trí nó đến chỗ thằng bị cast rồi bổ xuống :cool: .

    Link down đây : http://godfatherudshadow.googlepages.com/jump.w3x

    Ai có gì thắc mắc về custom spell = trigger hoặc nhờ chỉ cách làm thì post vào đây. Nghiêm cấm prò jass vào ba hoa nhá :))
     
  2. EVIL1986Minh

    EVIL1986Minh Mr & Ms Pac-Man

    Tham gia ngày:
    30/5/05
    Bài viết:
    129
    Tui muốn hỏi cái spell nài nhưng chưa thấy ai trả lời : Trong cái map gì đó lâu rùi ko nhớ tên, dạng như mỗi người chơi chọn tướng rùi cùng thủ ko cho lính phe địch thoát ra, nếu thoát đủ số lượng thì thua ý mà. Tui nhớ có con tướng Thrall có Ability là tăng số lượng quả missile (attack range bình thường) mỗi khi tăng level của phép đó. Ví dụ level 5 thì mỗi lần nó attack, có 5 cục sét bay ra cùng lúc mỗi cục nhắm vào một đối tượng. Vậy nó là kiểu attack gì nhĩ ?! :whew: Hoặc ai có thể chỉnh Ability kiểu thế này xin chỉ giáo, bằng cách nào cũng được. Tui có thể hiểu cách chỉnh Ability = Object manager hoặc Trigger. Các pác nói sơ wa là tui hiểu liền. ::)
     
  3. sukaraki

    sukaraki Donkey Kong

    Tham gia ngày:
    12/5/08
    Bài viết:
    356
    Nơi ở:
    Demonworld
    - Ban đầu thấy giống phoenix fire, nhưng phoenix fire thì chỉ có 1 missile ~.~ Cái này có vẻ như ko làm đc = trigger.Ông ơi ông mở hàng đúng câu tui bí, thiệt nản quá :p .Chỉ còn cách mỗi level tạo 1 con dummy hình cái buff gì đó trên người con thrall, invulnerable , tạo trigger mỗi 0.5 giây cho điểm stat của nó = điểm stat của thrall, include bonus , move nó tới position của thrall.Chà kiểu này thì trigger chạy suốt , tốn ram dã man.Trong DDay 19.9b cái con giống con nông dân undead của đội quỷ , có chiêu gọi cục ngọc, cục ngọc cũng đánh y chang vậy đó >"< chắc phải xuống nước , mở cái DDay ra coi rồi trả lời ông quá >"< trước giờ ko coi DDay ra gì mà giờ lại... >"<
     
  4. [s]tarboy

    [s]tarboy Legend of Zelda

    Tham gia ngày:
    25/5/07
    Bài viết:
    960
    Thế câu này bí ko , chắc cũng dễ

    Spell : xxx
    Effect : Hút mana đối phương khi bị tấn công , chance 11% ( dạng như cash mana burm vo đối phương 1 cách tự động
    Lv : 15/30/45/60/75 mana 1 lần hút

    Nó nôm na kiểu skill 3 của con Axe trong dota nhưng thay vì deal damage thì hút mana của nó . Skill này xứng đáng làm ulti cho anti-mage :x
     
  5. sukaraki

    sukaraki Donkey Kong

    Tham gia ngày:
    12/5/08
    Bài viết:
    356
    Nơi ở:
    Demonworld
    - ko đọc kỹ phần trên à ? có bài mẫu hút mana đó , nhưng chỉ cần thay đổi 1 số thông số ,như là attacking unit với attacked unit [vì bài trên là hút mana khi đánh, còn cậu đòi khi bị đánh] - đó, chỉ khác nhau thế thôi :D
     
  6. Vua_Do_Hoa

    Vua_Do_Hoa Mr & Ms Pac-Man

    Tham gia ngày:
    30/3/08
    Bài viết:
    217
    Nơi ở:
    Tp Hồ Chí Minh
    Thx anh đẹp zaiiii :D:D:D:D:D:D:D:D:D:D:D:D:D:D
     
  7. sukaraki

    sukaraki Donkey Kong

    Tham gia ngày:
    12/5/08
    Bài viết:
    356
    Nơi ở:
    Demonworld
    Tưởng lập topic hường dẫn custom spell nhiều người hưởng ứng lắm mà giờ oải quá ... >"< .Hóa ra anh em box pro hết rồi <:-P
     
  8. [s]tarboy

    [s]tarboy Legend of Zelda

    Tham gia ngày:
    25/5/07
    Bài viết:
    960
    Rồi tới chiêu này :D
    Spell : impale của bọ hung bên undead
    Effect : stun 1 dg thằng và move caster tới vị trí chỉ định

    ( chiêu này khác blink strike ở chổ nó ko target unit mà target ground vì vậy tui bí phần target ground =.= )

    ông dẫn chứng 1 vài trường hợp nào cần lệnh xóa special effect dc ko >.<.
     
  9. sukaraki

    sukaraki Donkey Kong

    Tham gia ngày:
    12/5/08
    Bài viết:
    356
    Nơi ở:
    Demonworld
    Chiêu impale chẳng phải là nó target point sao >"< , thì move thằng caster instantly tới target point of ability being casted chứ gì nữa >"< .Yêu cầu post bài đàng hoàng, đừng hỏi nhảm thế nha X(
     
  10. [s]tarboy

    [s]tarboy Legend of Zelda

    Tham gia ngày:
    25/5/07
    Bài viết:
    960
    Ông hỏi nếu co thắc mắc gì về spell post vô đây thì tôi post X( . Nhãm gì chứ , làm theo cách ông nói thì lúc target ground nó teleport thiệt nhưng mà lúc target unit thì nó teleport vào trung tâm của map :o . Bởi vậy tui mới bí
     
  11. sukaraki

    sukaraki Donkey Kong

    Tham gia ngày:
    12/5/08
    Bài viết:
    356
    Nơi ở:
    Demonworld
    - Sặc vậy WE nó ngu tới mức đó sao trời :o .Ok vậy thì thêm cái if then else
    If target unit of ability being casted equal to No unit >>>> move nó tới target point of ability being casted. còn else , tất nhiên là ko phải no unit , là nó cast lên 1 unit, thì move nó tới position of target unit of ability being casted .Đơn giản vậy thôi, tại ko chịu suy nghĩ nên mới thấy khó. Spell này là spell loại 1 , miễn bàn.Vào đây hỏi thì hỏi spell loại 2, phối hợp nhiều trigger phức tạp chứ >"<
     
  12. [s]tarboy

    [s]tarboy Legend of Zelda

    Tham gia ngày:
    25/5/07
    Bài viết:
    960
    Ac. trigger spell mà cũng có if/then/else nữa ah , cái này mới thấy để thữ
    Ông để 2 chữ cơ bản bự chà bá trong tiêu đề ma bảo đây là topic spell loại phức tạp , bó tay >.<
     
  13. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    Mã:
    Impale
    Events
         Unit - A unit Starts the effect of an ability
    Conditions
         (Ability being cast) Equal to Impale
    Actions
         [B]Wait 0.10 seconds[/B] <---- đây là vấn đề
         Unit - Move (Triggering unit) instantly to (Target point of ability being cast) 
    sau khi wait, (Target point of ability being cast) sẽ trả 1 giá trị là "null", tương đương với điểm (0, 0), giữa bản đồ đó.
    Sửa: tạo 1 biến point, TargetLoc
    Mã:
    Impale
    Events
         Unit - A unit Starts the effect of an ability
    Conditions
         (Ability being cast) Equal to Impale
    Actions
         Set TargetLoc = (Target point of ability being cast) 
         Wait 0.10 seconds
         Unit - Move (Triggering unit) instantly to TargetLoc
         Custom Script: call RemoveLocation( udg_TargetLoc)
    (Triggering unit) thì chắc ko sao cả. Mà nếu muốn chắc chắn hơn, tạo 1 biến unit, Caster, rồi set Caster = (Triggering unit).

    Mã:
    Impale
    Events
         Unit - A unit Starts the effect of an ability
    Conditions
         (Ability being cast) Equal to Impale
    Actions
         Set Caster = (Triggering unit)
         Set TargetLoc = (Target point of ability being cast) 
         Wait 0.10 seconds
         Unit - Move Caster instantly to TargetLoc
         Custom Script: call RemoveLocation( udg_TargetLoc)
    Đừng ngại tạo biến. Nếu có wait lâu thì nên tạo biến riêng cho trigger đó, còn wait ít hoặc không có wait thì dùng chung cũng ko sao :;) Ví dụ tạo vài biến dùng chung: TempCaster, TempUnit, TempLoc,...

    EDIT: sửa lại 1 tí, quên cái point leak.
     
  14. EVIL1986Minh

    EVIL1986Minh Mr & Ms Pac-Man

    Tham gia ngày:
    30/5/05
    Bài viết:
    129
    Tui có spell này nhưng thử hoài ko thành công. Trước giờ chưa thấy có bài viết về spell này, nên tiện hỏi lun. :whew: Đó là spell giả dạng Hero (cái spell của con DreadLord của map DDay cũ, chắc mọi người còn nhớ). Cụ thể là :
    _ Cast spell vào Hero bất kỳ, caster sẽ biến thành Hero bị cast, từ hình dáng model, level đến các chỉ số, các phép hiện có, của Hero bị cast lun, nhưng item vẫn là của Hero cast.
    _ Sau khi Hero cast bị die trong thời gian giả dạng sẽ trở lại như cũ.
    _ Hero giả dạng có thể là tạo mới hoặc tranfom thế nào đó cũng được.
    Tui thử nhìu cách nhưng cứ bị lỗi này lỗi kia. Thoy thì ai đó biết về spell này thì hướng dẫn chi tiết dùm nha. ;;) Có thể thay đổi vài ý tưởng cũng được.
     
  15. sukaraki

    sukaraki Donkey Kong

    Tham gia ngày:
    12/5/08
    Bài viết:
    356
    Nơi ở:
    Demonworld
    - Anh Tom ơi, anh đọc ko kỹ rồi, trong 2 trường hợp target đất và target unit thì có 1 trường hợp đc và 1 trường hợp bị trả về null [cho ra giữa map] >>> suy ra nó trả về null ko phải do lệnh wait 0.1s đâu [thực sự 0.1 s là 1 thời gian nhỏ mà ] .Cho nên chỉ cần làm theo kiểu em thôi, thêm cái if then else đó là ổn.

    - EVIL1986Minh : Theo như bạn nói thì chỉ có thể là tạo mới , vì nếu add chiêu mirror image đặc biệt cho thằng kia, order nó làm chiêu rồi change owner con image ,thì item sẽ theo item thằng kia.
    - Bạn tạo 6 biến dạng item để lưu giữ 6 item trong slot của thằng caster,
    -1 biến dạng unit để lưu thằng caster .
    - Sau đó create 1 unit [tất nhiên cho thằng caster rồi] theo unit type của thằng bị cast,
    - rồi set level theo nó.Còn atribute cũng set theo luôn,nhưng nhớ là exclude bonus.
    - Tiếp theo tạo 1 biến unit để lưu con mới tạo này,
    - tiếp theo nữa ta give tất cả 6 item đã lưu cho con mới này,
    - dùng lệnh hide unit hide con caster đi ,
    - cho chạy 1 count down timer theo 1 công thức [ví dụ lv 1 là 40s, lv2 là 50 s, lv 3 là 60s thì công thức là 30+10 x level của chiêu ].
    - 1 trigger là khi đồng hồ nổ thì unhide con caster [unhide cái biến unit đó] ,đưa nó lại ngay vị trí con giả, trả hết item lại cho nó và remove con giả dạng đi.
    - 1 trigger nữa là khi thằng caster dies thì làm việc y chang lúc cái đồng hồ nổ, chỉ việc copy các lệnh xuống.
    @PS :Có bug tôi thề đi đầu xuống đất :))
    - Tôi mới là thằng phải bó tay. Nhìn kỹ Evil1986Minh xem cách người ta hỏi thế nào.Hỏi là hỏi cách làm , đường đi, ai lại hỏi những điều cơ bản đó, gọi là hỏi nhảm đúng rồi.Hỏi những cái cơ bản kiểu vậy thì vào topic hỏi đáp.
     
  16. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    Cái wait kia còn phải xét cả spell trên base từ spell nào. Em cứ test thử với Flame Strike có Casting Time = 0 mà xem.

    Tức là khi start effect ability, ví dụ đó là spell carrion swarm, thì sau wait, nếu order "lệnh" của unit đó đang là carrionswarm thì ko có vấn đề gì. nhg nếu trước khi wait xong mà mất lệnh (có thể ấn stop) thì cả target unit và target loc cũng ko có.

    Flame Strike có Casting Time = 0 thì chắc chắn ko có target loc. (đây chỉ là ví dụ, tất nhiên cậu StarBoy chắc ko tạo skill base từ skill này)
     
  17. sukaraki

    sukaraki Donkey Kong

    Tham gia ngày:
    12/5/08
    Bài viết:
    356
    Nơi ở:
    Demonworld
    Về flame strike ,em nghĩ vấn đề ko phải là casting time = 0, mà do nó target trong 1 vùng rộng, làm sao trả về 1 loc đc [ loc chỉ là 1 điểm mà ] .Khi chơi chiêu là thấy cái vùng chọn.Còn shockwave, crushing wave hay carrion swarm thì rõ ràng ko có vùng chọn, vẫn hiểu là nó đánh trong vùng nhưng khi cast, ta thấy người chơi chỉ click 1 điểm nên điểm đó chính là target loc.
     
  18. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    Target Point ở đây là tâm của cái vòng tròn đó. Thế em đã thử: Set TargetLoc = (Target point of ability being cast) trước khi wait chưa ?

    Mã:
    FlameStrike
    Events
         Unit - A unit Starts the effect of an ability
    Conditions
         (Ability being cast) Equal to Flame Strike
    Actions
         Set Caster = (Triggering unit)
         Set TargetLoc = (Target point of ability being cast) 
         Wait 0.10 seconds
         Unit - Move Caster instantly to TargetLoc
         Custom Script: call RemoveLocation( udg_TargetLoc)
     
  19. sukaraki

    sukaraki Donkey Kong

    Tham gia ngày:
    12/5/08
    Bài viết:
    356
    Nơi ở:
    Demonworld
    Trước giờ làm chiêu mới toàn:
    - ko cần target ko stun: berserk
    - ko cần target có stun : warstorm
    - cần target ground : shockwave /carrion swarm / crushingwave
    - cần target ko stun : 1 chiêu buff nào đó ,thời gian buff hiệu lực là 0.1 s :D
    - cần target có stun : storm bolt
    Xem ra ko cần skill nào thêm nữa :)) nên cũng chưa thử chiêu flame strike :p
    @PS : mấy bạn làm chiêu custom theo mẫu này đi, rất ổn đó :D.
     
  20. MayRain

    MayRain Mr & Ms Pac-Man

    Tham gia ngày:
    6/2/08
    Bài viết:
    127
    Ko bik topic còn hoạt động ko? Nếu muốn làm 1 skill channel thì sao? (Đừng bảo em phải copy 1 skill channel rồi thay đổi thông số nha)
     
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này