Topic hỏi đáp về cách làm map | version 15

^ nó dùng trigger, chứ k chỉnh cái gì trong object cả
 
Sao map của em lúc mới vào game nó rất lag (trong 3 giây). Em nghĩ là do Trigger có Event - Time Elapsed nhiều quá nhưng chỉnh gần hết thành Map Initialization thì nó vẫn thế. Bác nào biết là do nguyên nhân nào ko?
 
1 loài quái nhất định bạn ơi \m/

đây tui rảnh nên làm map demo cho bạn đây, http://www.mediafire.com/?b511878j55vume1

- - - Updated - - -

Sao map của em lúc mới vào game nó rất lag (trong 3 giây). Em nghĩ là do Trigger có Event - Time Elapsed nhiều quá nhưng chỉnh gần hết thành Map Initialization thì nó vẫn thế. Bác nào biết là do nguyên nhân nào ko?

Vậy bạn nên kể ra thêm bạn cho loại actions gì chạy vào 3 giây đầu tiên. Thường lag là do create Heroes, units custom không có trong map. Bạn muốn khắc phục thì chỉ cần đặt tụi nó vào map trước, xong chỉnh một trigger - event map installation - actions - remove tụi nó đi là xong.
 
Muốn xác định 1 unit có khoảng cách ngắn nhất tới 1 điểm so với các unit khác thì làm thế nào?
 
YAN[asian];22684433 nói:
Muốn xác định 1 unit có khoảng cách ngắn nhất tới 1 điểm so với các unit khác thì làm thế nào?

gọi unit đó là U, điểm kia là P, khoảng cahs P-U là D

pick các unit xung quanh P với bán kính = D (thêm điều kiện nếu cần)
  • đếm số unit trong group này, nếu = 1 (tức là chỉ có mỗi unit U) => U là unit gần điêm P nhất
  • tìm unit gần điểm P nhất nếu ko phải là U:
    • lặp qua group trên, gọi picked unit là A
    • so sánh khoảng cách P-A với D
    • bằng thì không làm gì cả
    • nhỏ hơn thì: đặt U = A, D = P-A
    • sao loop thì U là unit gần điểm P nhất.


YAN[asian];22682560 nói:
Để làm skill đánh xuyên như Templar Assassin trong Dota thì phải chỉnh những chỉ số nào?

chỉnh thống số của attack theo unit Gryphon Rider (Human) hay Glaive Thrower (Night Elf)

cái "bắn xuyên" này có AoE như hình chữ nhật, tính từ target

Combat - Attack # -
  • Area of Effect Targets: các mục tiêu mà "bắn xuyên" có thể tác dụng vào
  • Damage Loss Factor: lượng damage bị mất qua mỗi mục tiêu (theo %, 0.25 = 25%)
  • Damage Spill Distance: khoảng cách của "bắn xuyên"
  • Damage Spill Radius: độ rộng của "bắn xuyên"

hiệu ứng trên mỗi unit bị dính cái "bắn xuyên" này nằm ở Art - Target (của unit này)

như TA thì cái "Spill Distance" có sẵn 0, dùng Upgrade để tăng cái này (xem upgrade Storm Hammers hay Vorpal Blades)
 
Chỉnh sửa cuối:
Làm thế nào để khi 1 Worker dc tạo ra, order cho nó chặt cái cây gần nó nhất????????????
 
Sao map của em lúc mới vào game nó rất lag (trong 3 giây). Em nghĩ là do Trigger có Event - Time Elapsed nhiều quá nhưng chỉnh gần hết thành Map Initialization thì nó vẫn thế. Bác nào biết là do nguyên nhân nào ko?

Create quá nhiều unit trong một khoảng thời gian,trong các vòng lặp có vấn đề khiến nó không thể "kết thúc" vòng lặp .v.v. là một trong số các nguyên nhân gây ra lag
 
Object/Unit/Tìm tới unit cần chỉnh/Sound - Unit Sound Set
bác cho em hỏi nếu mình thay sound unit của dota và map hiện giờ là 6.77 nếu map 6.77b ra thì sound của mình vẫn còn hay bị thay đổi lại hả bác
 
Làm cách nào để moị người cùng team ko thể giết nhau. Em test map mà khi chọn nhân vật, nó toàn tự đánh đồng đội và con chuột biến thành màu đỏ. Làm sao để hết tình trạng này?
 
Trong JNG hoặc WE,trên thanh menu chọn Scenario/Player Properties chọn mục Forces,Add thêm Force,chia các Player theo team như ý muốn.

Không can thiệp trigger thì các Player trong cùng một Force không thể thành địch của nhau.

Muốn các unit không tấn công được nhau thì add thêm trigger

Mã:
Melee Initialization
    Events
        Unit - A unit Is attacked
    Conditions
        ((Triggering unit) belongs to an ally of (Owner of (Attacking unit))) Equal to True
    Actions
        Unit - Order (Attacking unit) to Stop
 
Em tải 1 map demo Kill Streak bên Hiveworkshop và sửa lại 1 ít cho phù hợp. Nhưng khi vào game thỉnh thoảng nó lại hiện liên tiếp thế này (quả này phải hiện Ultra Kill mới đúng):



Đây là trigger, các bác xem giùm em bị lỗi ở chỗ nào ạ:

[SPOIL]
Mã:
Spree
    Events
        Time - Elapsed game time is 0.00 seconds
    Conditions
    Actions
        Set SpreeNextKillMaximumTimer = 10
[/SPOIL]

[SPOIL]
Mã:
Die
    Events
        Unit - A unit Dies
    Conditions
        ((Dying unit) is A Hero) Equal to True
        ((Dying unit) belongs to an enemy of (Owner of (Killing unit))) Equal to True
        (Owner of (Killing unit)) Not equal to Player 11 (Dark Green)
        (Owner of (Killing unit)) Not equal to Neutral Hostile
        (Owner of (Dying unit)) Not equal to Player 11 (Dark Green)
        (Owner of (Dying unit)) Not equal to Neutral Passive
    Actions
        Set SpreeInteger[(Player number of (Owner of (Killing unit)))] = (SpreeInteger[(Player number of (Owner of (Killing unit)))] + 1)
        Set SpreeInteger[(Player number of (Owner of (Dying unit)))] = 0
        Set SpreeNextKill[(Player number of (Owner of (Killing unit)))] = (SpreeNextKill[(Player number of (Owner of (Killing unit)))] + 1)
        Set SpreeTimer[(Player number of (Owner of (Killing unit)))] = SpreeNextKillMaximumTimer
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                MakeKill Equal to True
            Then - Actions
                Set KillPoints[(Player number of (Owner of (Killing unit)))] = (KillPoints[(Player number of (Owner of (Killing unit)))] + 1)
                Set KillingSpree[(Player number of (Owner of (Killing unit)))] = (KillingSpree[(Player number of (Owner of (Killing unit)))] + 1)
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                FirstBlood Equal to False
                (Owner of (Killing unit)) Not equal to (Owner of (Dying unit))
                ((Dying unit) is A Hero) Equal to True
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playername[(Player number of (Owner of (Killing unit)))] + ( ®· giµnh ®­îc  + (Playercolor[(Player number of (Owner of (Killing unit)))] + (First Blood  + (ColorEnd + (+200 vµng))))))
                Player - Add 200 to (Owner of (Killing unit)) Current gold
                Sound - Play firstblood <gen>
                Set FirstBlood = True
            Else - Actions
                Trigger - Remove (This trigger) from the trigger queue
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                SpreeInteger[(Player number of (Owner of (Killing unit)))] Equal to 3
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playername[(Player number of (Owner of (Killing unit)))] + ( ®· ®¹t ®­îc  + (Playercolor[(Player number of (Owner of (Killing unit)))] + Killing Spree)))
                Sound - Play Killing_Spree <gen>
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                SpreeInteger[(Player number of (Owner of (Killing unit)))] Equal to 4
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playername[(Player number of (Owner of (Killing unit)))] + ( ®· ®¹t ®­îc  + (Playercolor[(Player number of (Owner of (Killing unit)))] + Dominating)))
                Sound - Play Dominating <gen>
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                SpreeInteger[(Player number of (Owner of (Killing unit)))] Equal to 5
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playername[(Player number of (Owner of (Killing unit)))] + ( ®· ®¹t ®­îc  + (Playercolor[(Player number of (Owner of (Killing unit)))] + Mega Kill)))
                Sound - Play MegaKill <gen>
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                SpreeInteger[(Player number of (Owner of (Killing unit)))] Equal to 6
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playername[(Player number of (Owner of (Killing unit)))] + ( ®· ®¹t ®­îc  + (Playercolor[(Player number of (Owner of (Killing unit)))] + Unstoppable)))
                Sound - Play Unstoppable <gen>
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                SpreeInteger[(Player number of (Owner of (Killing unit)))] Equal to 7
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playername[(Player number of (Owner of (Killing unit)))] + ( ®· ®¹t ®­îc  + (Playercolor[(Player number of (Owner of (Killing unit)))] + Whicked Sick)))
                Sound - Play WhickedSick <gen>
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                SpreeInteger[(Player number of (Owner of (Killing unit)))] Equal to 8
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playername[(Player number of (Owner of (Killing unit)))] + ( ®· ®¹t ®­îc  + (Playercolor[(Player number of (Owner of (Killing unit)))] + Monster Kill)))
                Sound - Play MonsterKill <gen>
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                SpreeInteger[(Player number of (Owner of (Killing unit)))] Equal to 9
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playername[(Player number of (Owner of (Killing unit)))] + ( ®· ®¹t ®­îc  + (Playercolor[(Player number of (Owner of (Killing unit)))] + God Like)))
                Sound - Play GodLike <gen>
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                SpreeInteger[(Player number of (Owner of (Killing unit)))] Greater than or equal to 10
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playername[(Player number of (Owner of (Killing unit)))] + ( ®· ®¹t ®­îc  + (Playercolor[(Player number of (Owner of (Killing unit)))] + (Beyond God Like! + (ColorEnd + !!! Ai cã thÓ ®¸nh b¹i h¾n?)))))
                Sound - Play HolyShit <gen>
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                SpreeNextKill[(Player number of (Owner of (Killing unit)))] Equal to 2
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playercolor[(Player number of (Owner of (Killing unit)))] + (Double Kill + (ColorEnd + ( cho  + Playername[(Player number of (Owner of (Killing unit)))]))))
                Sound - Play Double_Kill <gen>
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                SpreeNextKill[(Player number of (Owner of (Killing unit)))] Equal to 3
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playercolor[(Player number of (Owner of (Killing unit)))] + (Triple Kill + (ColorEnd + ( cho  + Playername[(Player number of (Owner of (Killing unit)))]))))
                Sound - Play triple_kill <gen>
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                SpreeNextKill[(Player number of (Owner of (Killing unit)))] Equal to 4
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playercolor[(Player number of (Owner of (Killing unit)))] + (Ultra Kill + (ColorEnd + ( cho  + Playername[(Player number of (Owner of (Killing unit)))]))))
                Sound - Play UltraKill_4 <gen>
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                SpreeNextKill[(Player number of (Owner of (Killing unit)))] Greater than or equal to 5
            Then - Actions
                Wait 0.20 seconds
                Game - Display to (All players) the text: (Playercolor[(Player number of (Owner of (Killing unit)))] + (Rampage + (ColorEnd + ( cho  + Playername[(Player number of (Owner of (Killing unit)))]))))
                Sound - Play Rampage_5 <gen>
            Else - Actions
[/SPOIL]

[SPOIL]
Mã:
Next Kill
    Events
        Time - Every 1.00 seconds of game time
    Conditions
    Actions
        For each (Integer A) from 1 to 12, do (Actions)
            Loop - Actions
                Set SpreeTimer[(Integer A)] = (SpreeTimer[(Integer A)] - 1)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        SpreeTimer[(Integer A)] Equal to 0
                    Then - Actions
                        Set SpreeNextKill[(Integer A)] = 0
                    Else - Actions
[/SPOIL]
 
Chỉnh sửa cuối:
mọi người giúp mình làm 1 skill until chém điên hộ mình với
 
Ai chỉ em cách làm sáng 1 vùng nhất định với

Tham khảo
Mã:
Visibility - Create an initially Disabled visibility modifier for Player 1 (Red) emitting Visibility across (Playable map area)
 
Dạo này đãng trí quá... Tại sao Hero đứng rất xa chỗ kẻ địch bị giết mà vẫn đc nhận exp nhỉ?
 
YAN[asian];22690220 nói:
Dạo này đãng trí quá... Tại sao Hero đứng rất xa chỗ kẻ địch bị giết mà vẫn đc nhận exp nhỉ?

Gameplay Constants/ Hero XP - Global Distribution chỉnh thành False là đc
 
YAN[asian];22690220 nói:
Dạo này đãng trí quá... Tại sao Hero đứng rất xa chỗ kẻ địch bị giết mà vẫn đc nhận exp nhỉ?

Vì mặc định war3 là global distribution (exp được chia đều cho cả force). Vào Gameplay Constant -> Hero Exp - Global Distribution -> chuyển thành false
 
Có cách nào xác định đc 1 unit đang dùng skill Defend ko nhỉ các bác?
 
Có cách nào xác định đc 1 unit đang dùng skill Defend ko nhỉ các bác?

Đặt một biến boolean,khi unit đó
Mã:
    (Issued order) Equal to Human Footman - Defend
set biến đó = true
khi unit đó
Mã:
    (Issued order) Equal to Human Footman - Stop Defend
set biến đó = false

Dựa vào đó mà check unit đó đang dùng skill đó hay không.

ai làm giúp với :(

Điên kiểu gì ? Dùng skill berserk với Data AttackSpeed = 99999 ??
 
Chỉ e cái skill này vs :(:
-Hero dg invi thì khi đánh nó tun 1 phát zô đứa bị đánh (1 lần thui)
-E làm trigger hero có buff(invi) thì khi đánh rùi tun. :(( nhưng khi đánh thì nó mất buff rùi ai zúp e skill này vs Tk
 
Back
Top