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

ai cho mình hỏi, làm thế nào để kiểm tra một ability có đang cooldown hay không ?
 
cho mình hỏi làm sao để kiểm tra xem một ability có đang cooldown ko vậy ?
 
sử dụng trigger; cậu check unit cast skill rồi cho time variable chạy ;)) đấy là cách của mềnh ;))
 
Mọi người có thể giúp mình soạn 1 trigger thế này không (bản chất nó là 1 đấu trường trong RPG) : khi các player's Hero vào 1 cánh cổng , họ sẽ bị hide . và trigger sẽ đếm khi nào đủ unit of max player , nó sẽ chạy trigger thứ 2 . Ở trigger thứ 2 này sẽ move và unhide lần lượt ngẫu nhiên từng Hero của mỗi player ra đánh solo với 1 Hero địch , nếu thắng sẽ dc tính 1 điểm , thua thì ko có điểm nào . Cứ Player's Hero này xong đến Player's Hero khác , và Hero kia tiếp tục vào trạng thái Hide . Đến khi kết thúc Move tất cả ra giữa khán đài , nếu chỉ số thắng hơn hoặc = 50% max player thì victory , còn ko đủ thì thua .

Trông có vẻ khó và dài quá , sợ không ai giúp :((
cái này tôi nghĩ ông tự viết trigger đi;
nghiên cứu trigger nhiều là ra mờ; cái này còn phần trigger hiện bảng tính điểm nữa thì ngon ;)
 
1 trigger nhận Tướng "đăng kí đánh nhau", đồng thời nó kiểm tra nếu đủ số thằng đăng kí thì khởi chạy giải đấu. Vả lại cần gì Hide, chỉ cần Pause nó thôi.
1 trigger chạy khi có thằng trong "võ đài" chết để mà tính điểm.

Mà đấu kiểu này thì ở khoản chia cặp đấu tính điểm thì hơi phức tạp. Nếu đấu cặp loại trực tiếp thì dễ hơn nhưng không được công bằng cho lắm ;))

Nghĩ ra chỉ vậy.
 
Chỉnh sửa cuối:
cho mình hỏi tác dụng của countdown timer và cách sử dụng ?
 
cho mình hỏi tác dụng của countdown timer và cách sử dụng ?

nó tạo 1 đồng hồ đếm ngược về 0 với số (s) định sẵn; 1 lần chạy về 0 hoặc về 0 thì lại tiếp tục repearting;
cách dùng là gán cho đồng hồ đó vào 1 biến time ; cậu đã có biến này để sử dụng
vd: có thể sử dụng event "timer expires" cho 1 trigger

- - - Updated - - -

quên mất nhân tiện cho tớ hỏi mở mấy cái map campaign để xem bên trong như nào thế?
export = war3modeleditor ra mở thì nó báo lỗi ko có save gì đó :|

- - - Updated - - -

ai giúp thì thử open trước xemcos đc ko hộ mềnh nhé ;))
 
cho mình xin 1 demo sử dụng countdown timer đi bạn
 
éc
vd:
Untitled Trigger 001
Events
Time - Elapsed game time is 5.00 seconds
Conditions
Actions
Set timer = (Create a periodic Repeating timer lasting 60.00)
Trigger - Turn on create unit <gen>




create unit
Events
Time - timer expires
Conditions
Actions
Unit - Create 1 Footman for Player 1 (Red) at (Center of (Playable map area)) facing Default building facing degrees


2 trigger đó -trigger 1 tạo timer expres mỗi 1 phút 1 lần, lặp đi lặp lại đồng thời gán cho timer vừa tạo vào biến -timer-
-trigger 2 event timer expires thì tạo 1 footman cho player 1 ...
thế là từ đó trở đi mỗi phút có 1 anh footman của player (1) xuất hiện ở trung tâm map
:) :6cool_beat_brick:

ps: ai trả lời dùm câu hỏi trên của mình
 
cái này tôi nghĩ ông tự viết trigger đi;
nghiên cứu trigger nhiều là ra mờ; cái này còn phần trigger hiện bảng tính điểm nữa thì ngon ;)

Hix :3cool_nosebleed: à mà có lẽ cũng nghĩ ra dc cách làm :7cool_feel_good: dù sao cũng tks :5cool_big_smile:
 
À mọi người cho mình hỏi , có cái trigger loop này . thuộc dạng Drill đâm tới trước . Phải sửa thế nào để nó ko xuyên được địa hình và Unit

Mã:
    Events
        Time - Every 0.03 seconds of game time
    Conditions
    Actions
        Set GDB_Count = (GDB_Count + 1)
        If ((GDB_Caster has buff Stunned (Pause)) Equal to (==) True) then do (Trigger - Run GDB Death Check <gen> (ignoring conditions)) else do (Do nothing)
         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                GDB_Count Equal to (==) 40
            Then - Actions
                Animation - Change GDB_Caster's animation speed to 0.00% of its original speed
                Set GDB_Position[1] = (GDB_Position[0] offset by 40.00 towards (GDB_Angle + 20.00) degrees)
                Unit - Create 1 Drill for (Owner of GDB_Caster) at GDB_Position[1] facing GDB_Angle degrees
                Set GDB_Drill = (Last created unit)
                Custom script:   call RemoveLocation(udg_GDB_Position[0])
                Custom script:   call RemoveLocation(udg_GDB_Position[1])
            Else - Actions
         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                GDB_Count Equal to (==) 80
            Then - Actions
                Animation - Change GDB_Drill's size to (900.00%, 900.00%, 900.00%) of its original size
            Else - Actions
         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                GDB_Count Greater than or equal to (>=) 140
                GDB_Count Less than or equal to (<=) 240
            Then - Actions
                Set GDB_Position[0] = (Position of GDB_Drill)
                Set GDB_Position[1] = (GDB_Position[0] offset by 80.00 towards (GDB_Angle - 90.00) degrees)
                Custom script:   call RemoveLocation(udg_GDB_Position[0])
                Set GDB_Position[0] = (GDB_Position[1] offset by 50.00 towards (GDB_Angle + 180.00) degrees)
                Unit - Create 1 Ex 2 for (Owner of GDB_Caster) at GDB_Position[0] facing (GDB_Angle + 180.00) degrees
                Unit Group - Add (Last created unit) to GDB_Fire
                Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                Custom script:   call RemoveLocation(udg_GDB_Position[0])
                Custom script:   call RemoveLocation(udg_GDB_Position[1])
                 Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                         Multiple ConditionsAnd - All (Conditions) are true
                            Conditions
                                GDB_Count Greater than or equal to (>=) 160
                    Then - Actions
                         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                GDB_Count Equal to (==) 160
                            Then - Actions
                                Animation - Change GDB_Caster's vertex coloring to (100.00%, 100.00%, 100.00%) with 60.00% transparency
                                Camera - Lock camera target for (Owner of GDB_Caster) to GDB_Drill, offset by (0.00, 0.00) using Default rotation
                                Selection - Clear selection for (Owner of GDB_Caster)
                            Else - Actions
                        Set GDB_Speed = (GDB_Speed + 1.00)
                        Set GDB_Position[0] = (Position of GDB_Drill)
                        Set GDB_Position[1] = (GDB_Position[0] offset by GDB_Speed towards GDB_Angle degrees)
                        Unit - Move GDB_Drill instantly to GDB_Position[1]
                        Unit - Move GDB_Caster instantly to GDB_Position[1]
                        Set GDB_Targets = (Units within 200.00 of GDB_Position[1] matching ((((Matching unit) belongs to an enemy of (Owner of GDB_Caster)) Equal to (==) True) and (((Matching unit) is alive) Equal to (==) True)))
                        Unit Group - Pick every unit in GDB_Targets and do (Actions)
                            Loop - Actions
                                 Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    If - Conditions
                                        ((Picked unit) is in GDB_Damaged) Equal to (==) False
                                    Then - Actions
                                        Unit - Cause GDB_Caster to damage (Picked unit), dealing (100.00 x (Real((Level of Drill Breaker  for GDB_Caster)))) damage of attack type Spells and damage type Normal
                                        Unit Group - Add (Picked unit) to GDB_Damaged
                                        Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
                                        Special Effect - Destroy (Last created special effect)
                                    Else - Actions
                        Unit Group - Remove all units from GDB_Targets
                        Set GDB_Position[2] = (GDB_Position[1] offset by 80.00 towards (GDB_Angle - 90.00) degrees)
                        Set GDB_Position[3] = (GDB_Position[2] offset by 50.00 towards (GDB_Angle + 180.00) degrees)
                        Unit Group - Pick every unit in GDB_Fire and do (Actions)
                            Loop - Actions
                                Unit - Move (Picked unit) instantly to GDB_Position[3]
                        Custom script:   call RemoveLocation(udg_GDB_Position[2])
                        Custom script:   call RemoveLocation(udg_GDB_Position[3])
                         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                GDB_Count Equal to (==) 240
                            Then - Actions
                                Set GDB_IsCasted = False
                                Camera - Reset camera for (Owner of GDB_Caster) to standard game-view over 0.00 seconds
                                Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
                                Unit Group - Remove all units from GDB_Damaged
                                Unit - Create 1 Ex 6 for (Owner of GDB_Caster) at GDB_Position[1] facing Default building facing (270.0) degrees
                                Player Group - Pick every player in (All players) and do (Actions)
                                    Loop - Actions
                                        Camera - Shake the camera for (Picked player) with magnitude 5.00
                                Set GDB_Targets = (Units within 400.00 of GDB_Position[1] matching ((((Matching unit) belongs to an enemy of (Owner of GDB_Caster)) Equal to (==) True) and (((Matching unit) is alive) Equal to (==) True)))
                                Unit Group - Pick every unit in GDB_Targets and do (Actions)
                                    Loop - Actions
                                        Unit - Cause GDB_Caster to damage (Picked unit), dealing (200.00 x (Real((Level of Drill Breaker  for GDB_Caster)))) damage of attack type Spells and damage type Normal
                                Unit Group - Remove all units from GDB_Targets
                                Selection - Select GDB_Caster for (Owner of GDB_Caster)
                                Unit - Unpause GDB_Caster
                                Animation - Change GDB_Caster's animation speed to 100.00% of its original speed
                                Animation - Change GDB_Caster's vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                                Unit - Remove GDB_Drill from the game
                            Else - Actions
                        Custom script:   call RemoveLocation(udg_GDB_Position[0])
                        Custom script:   call RemoveLocation(udg_GDB_Position[1])
                    Else - Actions
            Else - Actions
         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                GDB_Count Equal to (==) 280
            Then - Actions
                Trigger - Turn off (This trigger)
                Player Group - Pick every player in (All players) and do (Actions)
                    Loop - Actions
                        Camera - Stop swaying/shaking the camera for (Picked player)
            Else - Actions
 
À mọi người cho mình hỏi , có cái trigger loop này . thuộc dạng Drill đâm tới trước . Phải sửa thế nào để nó ko xuyên được địa hình và Unit

Mã:
    Events
        Time - Every 0.03 seconds of game time
    Conditions
    Actions
        Set GDB_Count = (GDB_Count + 1)
        If ((GDB_Caster has buff Stunned (Pause)) Equal to (==) True) then do (Trigger - Run GDB Death Check <gen> (ignoring conditions)) else do (Do nothing)
         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                GDB_Count Equal to (==) 40
            Then - Actions
                Animation - Change GDB_Caster's animation speed to 0.00% of its original speed
                Set GDB_Position[1] = (GDB_Position[0] offset by 40.00 towards (GDB_Angle + 20.00) degrees)
                Unit - Create 1 Drill for (Owner of GDB_Caster) at GDB_Position[1] facing GDB_Angle degrees
                Set GDB_Drill = (Last created unit)
                Custom script:   call RemoveLocation(udg_GDB_Position[0])
                Custom script:   call RemoveLocation(udg_GDB_Position[1])
            Else - Actions
         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                GDB_Count Equal to (==) 80
            Then - Actions
                Animation - Change GDB_Drill's size to (900.00%, 900.00%, 900.00%) of its original size
            Else - Actions
         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                GDB_Count Greater than or equal to (>=) 140
                GDB_Count Less than or equal to (<=) 240
            Then - Actions
                Set GDB_Position[0] = (Position of GDB_Drill)
                Set GDB_Position[1] = (GDB_Position[0] offset by 80.00 towards (GDB_Angle - 90.00) degrees)
                Custom script:   call RemoveLocation(udg_GDB_Position[0])
                Set GDB_Position[0] = (GDB_Position[1] offset by 50.00 towards (GDB_Angle + 180.00) degrees)
                Unit - Create 1 Ex 2 for (Owner of GDB_Caster) at GDB_Position[0] facing (GDB_Angle + 180.00) degrees
                Unit Group - Add (Last created unit) to GDB_Fire
                Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                Custom script:   call RemoveLocation(udg_GDB_Position[0])
                Custom script:   call RemoveLocation(udg_GDB_Position[1])
                 Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                         Multiple ConditionsAnd - All (Conditions) are true
                            Conditions
                                GDB_Count Greater than or equal to (>=) 160
                    Then - Actions
                         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                GDB_Count Equal to (==) 160
                            Then - Actions
                                Animation - Change GDB_Caster's vertex coloring to (100.00%, 100.00%, 100.00%) with 60.00% transparency
                                Camera - Lock camera target for (Owner of GDB_Caster) to GDB_Drill, offset by (0.00, 0.00) using Default rotation
                                Selection - Clear selection for (Owner of GDB_Caster)
                            Else - Actions
                        Set GDB_Speed = (GDB_Speed + 1.00)
                        Set GDB_Position[0] = (Position of GDB_Drill)
                        Set GDB_Position[1] = (GDB_Position[0] offset by GDB_Speed towards GDB_Angle degrees)
                        Unit - Move GDB_Drill instantly to GDB_Position[1]
                        Unit - Move GDB_Caster instantly to GDB_Position[1]
                        Set GDB_Targets = (Units within 200.00 of GDB_Position[1] matching ((((Matching unit) belongs to an enemy of (Owner of GDB_Caster)) Equal to (==) True) and (((Matching unit) is alive) Equal to (==) True)))
                        Unit Group - Pick every unit in GDB_Targets and do (Actions)
                            Loop - Actions
                                 Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    If - Conditions
                                        ((Picked unit) is in GDB_Damaged) Equal to (==) False
                                    Then - Actions
                                        Unit - Cause GDB_Caster to damage (Picked unit), dealing (100.00 x (Real((Level of Drill Breaker  for GDB_Caster)))) damage of attack type Spells and damage type Normal
                                        Unit Group - Add (Picked unit) to GDB_Damaged
                                        Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
                                        Special Effect - Destroy (Last created special effect)
                                    Else - Actions
                        Unit Group - Remove all units from GDB_Targets
                        Set GDB_Position[2] = (GDB_Position[1] offset by 80.00 towards (GDB_Angle - 90.00) degrees)
                        Set GDB_Position[3] = (GDB_Position[2] offset by 50.00 towards (GDB_Angle + 180.00) degrees)
                        Unit Group - Pick every unit in GDB_Fire and do (Actions)
                            Loop - Actions
                                Unit - Move (Picked unit) instantly to GDB_Position[3]
                        Custom script:   call RemoveLocation(udg_GDB_Position[2])
                        Custom script:   call RemoveLocation(udg_GDB_Position[3])
                         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                GDB_Count Equal to (==) 240
                            Then - Actions
                                Set GDB_IsCasted = False
                                Camera - Reset camera for (Owner of GDB_Caster) to standard game-view over 0.00 seconds
                                Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
                                Unit Group - Remove all units from GDB_Damaged
                                Unit - Create 1 Ex 6 for (Owner of GDB_Caster) at GDB_Position[1] facing Default building facing (270.0) degrees
                                Player Group - Pick every player in (All players) and do (Actions)
                                    Loop - Actions
                                        Camera - Shake the camera for (Picked player) with magnitude 5.00
                                Set GDB_Targets = (Units within 400.00 of GDB_Position[1] matching ((((Matching unit) belongs to an enemy of (Owner of GDB_Caster)) Equal to (==) True) and (((Matching unit) is alive) Equal to (==) True)))
                                Unit Group - Pick every unit in GDB_Targets and do (Actions)
                                    Loop - Actions
                                        Unit - Cause GDB_Caster to damage (Picked unit), dealing (200.00 x (Real((Level of Drill Breaker  for GDB_Caster)))) damage of attack type Spells and damage type Normal
                                Unit Group - Remove all units from GDB_Targets
                                Selection - Select GDB_Caster for (Owner of GDB_Caster)
                                Unit - Unpause GDB_Caster
                                Animation - Change GDB_Caster's animation speed to 100.00% of its original speed
                                Animation - Change GDB_Caster's vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                                Unit - Remove GDB_Drill from the game
                            Else - Actions
                        Custom script:   call RemoveLocation(udg_GDB_Position[0])
                        Custom script:   call RemoveLocation(udg_GDB_Position[1])
                    Else - Actions
            Else - Actions
         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                GDB_Count Equal to (==) 280
            Then - Actions
                Trigger - Turn off (This trigger)
                Player Group - Pick every player in (All players) and do (Actions)
                    Loop - Actions
                        Camera - Stop swaying/shaking the camera for (Picked player)
            Else - Actions

đọc xong tôi cũng chưa biết được, không thấy xóa size hay add fly mà nó xuyên địa hình đc, ông thử điều chỉnh mấy lệnh move unit xem
vd như tách lệnh move 80 ranger thành 4 cái 20 ranger xem có đc hay ko 8-}

- - - Updated - - -

đọc xong tôi cũng chưa biết được, không thấy xóa size hay add fly mà nó xuyên địa hình đc, ông thử điều chỉnh mấy lệnh move unit xem
vd như tách lệnh move 80 ranger thành 4 cái 20 ranger xem có đc hay ko 8-}

hình như trigger này đc dẫn từ tgrigger khác thì phải ông thử tìm xem trong cái kia có lệnh xóa size hay add fly cho nó ko!

- - - Updated - - -

ặc quote nhầm 8-}
mà ai trả lời câu hỏi trang trước của tôi mới
 
đọc xong tôi cũng chưa biết được, không thấy xóa size hay add fly mà nó xuyên địa hình đc, ông thử điều chỉnh mấy lệnh move unit xem
vd như tách lệnh move 80 ranger thành 4 cái 20 ranger xem có đc hay ko 8-}

hình như trigger này đc dẫn từ tgrigger khác thì phải ông thử tìm xem trong cái kia có lệnh xóa size hay add fly cho nó ko!

Thua lun rùi , h chỉ có nước tạo ra thủ thuật thôi :))
 
cho 1 condition để kiểm tra cái point hướng đến có unit hay ko và 1 cái condition "Terrain pathing at <point> of type <walkability> is off Equal to True".
 
à, làm sao để tạo Fade Filter cho 1 player thôi nhỉ ?
 
xin hỏi cách mở các map campaign như nào vậy
tớ dùng w3modeleditor export ra thì mở ra nó bị error ko có save gì gì ấy :2cool_burn_joss_sti
--hỏi từ hôm qua mà không ai đả động gì :(--
 
xin hỏi cách mở các map campaign như nào vậy
tớ dùng w3modeleditor export ra thì mở ra nó bị error ko có save gì gì ấy :2cool_burn_joss_sti
--hỏi từ hôm qua mà không ai đả động gì :(--

Bản đồ dạng chiến dịch tùy khách của Warcaft 3 gồm nhiều bản đồ thường thôi. Bản thân tập tin *.w3n chứa các tập tin cấu hình cho chiến dịch và mấy tập tin bản đồ riêng rẽ (*.w3x)
Campaign Editor của WE để trích xuất từng bản đồ trong đó ra. Rồi thích chôm model gì hay gì đó thì tùy :|
Nếu bản đồ đó không bị bảo vệ (protect) thì có thể mở được bằng WE. Còn nếu nó bị bảo vệ thì =)) ngồi nhìn.
 
ặc cơ bản mình muốn xem nó làm thế nào về trigger với doodad thôi chứ bác nói vậy thì chệu :(
 
cho hỏi:
-1 map campaign của undead có 1 cảnh gồm nhiều khối hình hộp chữ nhật xếp cạnh nhau.
và tất cả random nhấc lên, hạ xuống; đồng thời unit trên đó cũng bị nâng hạ theo hình hộp.
khi 2 hình hộp cùng độ cao thì unit mới di chuyển giữa 2 hình đó đc;
cho hỏi đó là doodad nào và sử dụng trigger nào vậy
thank

- - - Updated - - -

p/s: nhìn chữ ký SITUVN nhớ battle realm quá :( công nhận đồ họa rất đc
...
nhân tiện =)) ai có model battle realm ko cho tôi với
hay có cách nào đổi mấy file model đó sang mdx k ;)) hình như là dạng H2O hay gì gì ấy
 
Back
Top