[Hướng dẫn] làm 1 skill phản 100% damage

Status
Không mở trả lời sau này.

langthangbairac

T.E.T.Я.I.S
Tham gia ngày
19/5/12
Bài viết
594
Reaction score
767
Giới thiệu về skills : Khi dùng skills ( ở đây mình làm skills ở item ) thì mọi đòn kẻ địch tấn công ( bao gồm đánh thường và magic damage.

Đầu tiên là chuẩn bị 1 custom skills ( dạng notarget, nếu làm cho item thì nên chọn Berserk trong unit abilities ) thêm 1 cái buff tên là phan damage ( xem demo sẽ thấy )

Làm việc trigger :
1 . Làm 2 cái trigger add event :
Mã:
event add 1
    Events
        Time - Elapsed game time is 0.00 seconds
    Conditions
    Actions
        Set Unit_group = (Unit in (Playable map area))
        Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
            Loop - Actions
                Trigger - Add to Return <gen> the event (Unit - (Picked unit) Takes damage)

Mã:
event add 2
    Events
        Unit - A unit enters (Playable map area)
    Conditions
    Actions
        Trigger - Add to Return <gen> the event (Unit - (Triggering unit) Takes damage)

xong phần add event, đến phần phản damage :
Mã:
Return
    Events
    Conditions
        ((Triggering unit) has buff Phan damage ) Equal to True
    Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Triggering unit) Not equal to (Damage source)
            Then - Actions
                Trigger - Turn off this trigger.
                Unit - Cause (triggering unit) to damage (Damage source), dealing (Damage taken) damage of attack type Hero and damage type Normal
                Floating Text - Create floating text that reads (+ + (String((Integer((Damage taken)))))) above (Triggering unit) with Z offset 0.00, using font size 8.50, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
                Floating Text - Change (Last created floating text): Disable permanence
                Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
                Floating Text - Change the lifespan of (Last created floating text) to 6.00 seconds
                Floating Text - Change the fading age of (Last created floating text) to 3.00 seconds
                Trigger - Turn on this trigger.
            Else - Actions
Từ phần Floating bạn có thể bỏ vì đấy là phần hiển thị số damage phản lại nên không cần thiết.
Đặc biệt chú ý đến condition
Mã:
((Triggering unit) has buff Phan damage ) Equal to True
Nếu ko có cái này thì zZz.. khi bị take dame thì diss war luôn :((


Nếu ai ko hiểu thì xem demo dưới

Lưu ý : Ở phần trigger do WE bị j ấy nên mình phải enabled trigger, các bạn down về tick vào ô enabled trong mấy cái trigger là đc


Đã sửa lại theo code chuẩn của anh Leo rồi :)
Demo
 
Chỉnh sửa cuối:
warcraft 3 có sẵn chiêu phản damge cả đánh thường với đánh xa rùi mà :4cool_cold:
Spiked Carapace : gần:8cool_tire:
Thorns Aura : xa :5cool_ops:
 
Chỉnh sửa cuối:
Tạo con dummy để làm vẹo gì :8cool_tire:
 
1. Skil melee map là phản đòn đánh nhưng ko phản đòn phép
2. Tạo dummy để tránh lặp trigger dẫn đến out map
hiểu chưa 2 ông nội
 
Chỉnh sửa cuối:
Không có turn off rồi turn on thì gây ra lỗi crash map là đúng rồi,rồi leak nữa kìa +_=

Mà sao triggering unit ko damage vào damage source luôn đi còn tạo dummy damage chi vậy

Như trên thì những skill nhờ dummy cast vào triggering unit gây damage cũng sẽ không bị phản
 
Chỉnh sửa cuối:
Làm skill thì nên hạn chế dùng dummy không cần thiết.
 
Mã:
event add 1
    Events
        Time - Elapsed game time is 0.00 seconds
    Conditions
    Actions
        Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions) [COLOR="#FF0000"]<- Leak group[/COLOR]
            Loop - Actions
                Trigger - Add to Return <gen> the event (Unit - (Picked unit) Takes damage)
Mã:
Return
    Events
    Conditions
        (Unit-type of (Damage source)) Not equal to Dummy
        ((Triggering unit) has buff Phan damage ) Equal to True
    Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Triggering unit) Not equal to (Damage source)
            Then - Actions
                Unit - Create 1 Dummy for (Owner of (Triggering unit)) at (Position of (Damage source)) facing Default building facing degrees [COLOR="#FF0000"]<- leak point, hơn nữa không cần thiết[/COLOR]
                Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                Unit - Cause (Last created unit) to damage (Damage source), dealing (Damage taken) damage of attack type Hero and damage type Normal
            Else - Actions
Leak, thừa dòng tạo dummy.
Với 1 skill phản damage, code nên thế này

Mã:
Event Trigger 1
    Events
        Time - Elapsed game time is 0.00 seconds
    Conditions
    Actions
        Set TakeDamage = (Unit in (Playable map area))
        Unit Group - Pick every unit in TakeDamage and do (Actions)
            Loop - Actions
                Trigger - Add to Return <gen> the event (Unit - (Picked unit) Takes damage)
Mã:
Event Trigger 2
    Events
        Unit enters playable map area
    Conditions
        (Triggering unit) is in TakeDamage equal to false
    Actions
        Unit - Add (Triggering unit) to TakeDamage
        Trigger - Add to Return <gen> the event (Unit - (Triggering unit) Takes damage)
Mã:
Return
    Events
    Conditions
        ((Triggering unit) has buff Phan damage ) Equal to True
        (Triggering unit) Not equal to (Damage source)
    Actions
        Trigger - Turn off this trigger.
        Unit - Cause (Triggering unit) to damage (Damage source), dealing (Damage taken) damage of attack type Hero and damage type Normal
        Trigger - Turn on this trigger.

Không nên dùng dummy deal damage, nhiệm vụ duy nhất của dummy là cast hộ skill nhằm tạo effect thôi, damage vẫn phải do unit sở hữu skill deal.
 
Sặc. Thế các bác có ngĩ đến trường hợp 2 thằng cùng chơi phản dame k? crash là ở trườmg hợp này đấy. ko tạo dummy và condition như kia thì sẽ Take dame nhau liên tục hoặc có thăng bị phản có thằng ko =))
 
Chỉnh sửa cuối:
Sặc. Thế các bác có ngĩ đến trường hợp 2 thằng cùng chơi phản dame k? crash là ở trườmg hợp này đấy. ko tạo dummy và condition như kia thì sẽ Take dame nhau liên tục hoặc có thăng bị phản có thằng ko =))

1 condition là đủ .
 
À mà quên, hình như cũng chả cần thêm một cái condition nào đâu, trigger của Leo là chuẩn rồi =]].
 
Nói chuyện @@ ,tất nhiên là 2 con không thể phản dame cùng lúc rồi
(Dame Scoure has buff Phan damage ) Equal to Fasle
Giả sử không bị crash map thì 2 tg chỉ cần đánh 1 phát là phản qua phản lại tới chết ah @@
 
Trigger của Leo là chuẩn, vì Leo turn off và turn off trigger để chống lặp trigger rồi, ko cần thiết tạo dummy
 
Sặc. Thế các bác có ngĩ đến trường hợp 2 thằng cùng chơi phản dame k? crash là ở trườmg hợp này đấy. ko tạo dummy và condition như kia thì sẽ Take dame nhau liên tục hoặc có thăng bị phản có thằng ko =))

2 con bật phản damage thì sao? Vấn đề gì à?

Unit A gây damage -> Unit B take + deal back + turn off trigger -> Unit A take -> turn on trigger.
Do unit A nhận damage sau khi trigger đã off, nên không có chuyện unit liên tục nhận và gây damage đâu
 
Nói chuyện @@ ,tất nhiên là 2 con không thể phản dame cùng lúc rồi
(Dame Scoure has buff Phan damage ) Equal to Fasle
Giả sử không bị crash map thì 2 tg chỉ cần đánh 1 phát là phản qua phản lại tới chết ah @@

Chạy xa nhau ra sẽ không còn bị n:7cool_feel_good:
 
bỏ thử vào map mới biết đc, cả 2 trigg của 2 bên luôn
nếu cậu còn sợ phản qua phản lại thì cũng ko cần dummy, chỉ 1 và chỉ cần 1 boolean là đủ, dummy chỉ tổ gây leak
 
2 con bật phản damage thì sao? Vấn đề gì à?

Unit A gây damage -> Unit B take + deal back + turn off trigger -> Unit A take -> turn on trigger.
Do unit A nhận damage sau khi trigger đã off, nên không có chuyện unit liên tục nhận và gây damage đâu

tks. giờ nghĩ kỹ lại mới thấy :)
 
-chủ topic nên chỉnh lại phần damage type, vì để normal sẽ ảnh hưởng tới armor tức là armor càng cao thì damage phản gây ra cảng nhỏ
 
2 con bật phản damage thì sao? Vấn đề gì à?

Unit A gây damage -> Unit B take + deal back + turn off trigger -> Unit A take -> turn on trigger.
Do unit A nhận damage sau khi trigger đã off, nên không có chuyện unit liên tục nhận và gây damage đâu

2 thằng bật phản damage thì chuyện gì xảy ra mình thật sự cũng biết :-??
 
cho phản cái damage phản thì rõ ràng là "ăn gạch" rồi =))
 
Status
Không mở trả lời sau này.
Back
Top