Đăng ký

Tham gia : 2011-10-21
Bài gửi : 620
Point : 1549
Nhận thích : 232
Biệt Danh : WoW..Gavin
Tường Bài viết Kết bạn Chặn

Custom spell với trigger

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

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 :
Events :Unit - A unit Starts the effect of an ability

Condittions Ability being cast) Equal to Storm Bolt

Actions :Unit - Cause (Casting unit) to damage (Target unit of ability being cast), dealing (((Real((Level of Storm Bolt for (Casting unit)))) x 100.00) + ((Real((Strength of (Casting unit) (Exclude bonuses)))) x 2.50)) damage of attack type Spells and damage type Normal
-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.

Actions
Unit Group - Pick every unit in (Units in (Region centered at (Position of (Target unit of ability being cast)) with size (500.00, 500.00)) matching (((Matching unit) belongs to an enemy of (Owner of (Casting unit))) Equal to True)) and do (Actions)
Loop - Actions
Unit - Cause (Casting unit) to damage (Picked unit), dealing 500.00 damage of attack type Magic and damage type Normal
- 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.

Events
Unit - A unit Is attacked
Conditions
And - All (Conditions) are true
Conditions
(Percentage mana of (Attacked unit)) Greater than or equal to 5.00
(Unit-type of (Attacking unit)) Equal to HeoMập
intenger random number from 1 to 100 less than or equal to 10
Actions
Unit - Set mana of (Attacking unit) to ((Mana of (Attacking unit)) + ((Max mana of (Attacked unit)) x 0.05))
Unit - Set mana of (Attacked unit) to ((Mana of (Attacked unit)) - ((Max mana of (Attacked unit)) x 0.05))
-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:


View user profile ve_p3kute@yahoo.com
Tầng 1 on 3/4/2012, 17:34


Tên truy cập