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

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

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

    truongdzuy Mr & Ms Pac-Man

    Tham gia ngày:
    25/1/09
    Bài viết:
    274
    Nơi ở:
    Tp.HCM
    Cho hỏi về cách làm skill Timber Chain của Goblin Shelder trong DotA
    Hỏi thêm về đống trigger này :
    General Init
    [spoil]
    Events
    Map initialization
    Conditions
    Actions
    Hashtable - Create a hashtable
    Set SpellData = (Last created hashtable)
    Player Group - Pick every player in (All players) and do (Actions)
    Loop - Actions
    Player - Disable Darkscreen Ability Hidden for (Picked player)
    [/spoil]
    Set Attack Flag For Hero
    [spoil]
    Events
    Unit - A unit Is attacked
    Conditions
    ((Attacked unit) is A Hero) Equal to True
    Actions
    -------- set these so we will know the damage is from attack or not --------
    Custom script: set udg_TempHandle = GetAttackedUnitBJ()
    Hashtable - Save True as (Key AttackFlag) of (Key TempHandle) in SpellData
    Hashtable - Save Handle Of(Triggering unit) as (Key AttackTarget) of (Key TempHandle) in SpellData
    Custom script: set udg_TempInt = udg_TempOrder
    Hashtable - Save TempInt as (Key AttackOrder) of (Key TempHandle) in SpellData
    [/spoil]
    Abort Attack Flag
    [spoil]
    Events
    Unit - A unit Is issued an order with no target
    Unit - A unit Is issued an order targeting a point
    Unit - A unit Is issued an order targeting an object
    Conditions
    ((Triggering unit) is A Hero) Equal to True
    Actions
    Set TempUnit = (Triggering unit)
    Custom script: set udg_TempHandle = udg_TempUnit
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    (Load (Key AttackFlag) of (Key TempHandle) from SpellData) Equal to True
    Then - Actions
    -------- if this unit has Attack Flag set, check if its attack is interrupted or not --------
    Set TempInt = (Load (Key AttackOrder) of (Key TempHandle) from SpellData)
    Custom script: set udg_AttackOrder = udg_TempInt
    Set TempUnit2 = (Load (Key AttackTarget) of (Key TempHandle) in SpellData)
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    Or - Any (Conditions) are true
    Conditions
    Or - Any (Conditions) are true
    Conditions
    (Target unit of issued order) Equal to No unit
    And - All (Conditions) are true
    Conditions
    (Target unit of issued order) Not equal to No unit
    TempUnit2 Not equal to (Target unit of issued order)
    (Current order of TempUnit) Not equal to AttackOrder
    Then - Actions
    -------- if interrupted, remove the flag --------
    Hashtable - Save False as (Key AttackFlag) of (Key TempHandle) in SpellData
    Hashtable - Save Handle OfNo unit as (Key AttackTarget) of (Key TempHandle) in SpellData
    Hashtable - Save 0 as (Key AttackOrder) of (Key TempHandle) in SpellData
    Else - Actions
    Else - Actions
    [/spoil]
    Darkscreen Learn
    [spoil]
    Events
    Unit - A unit Learns a skill
    Conditions
    (Learned Hero Skill) Equal to Darkscreen
    Actions
    Set TempUnit = (Triggering unit)
    Set TempInt = (Learned skill level)
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    (TempUnit is in Darkscreen_InCD_G) Equal to False
    Then - Actions
    -------- Jinada is not in cooldown --------
    Unit - Add Darkscreen Ability Hidden to TempUnit
    Unit - Set level of Darkscreen Evade for TempUnit to TempInt
    Else - Actions
    [/spoil]
    Darkscreen Hit
    [spoil]
    Events
    Game - GDD_Event becomes Equal to 0.00
    Conditions
    (Level of Empower for GDD_DamagedUnit) Greater than 0
    Actions
    Custom script: set udg_TempHandle = udg_GDD_DamagedUnit
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    (Load (Key AttackFlag) of (Key TempHandle) from SpellData) Equal to True
    Then - Actions
    Unit - Remove Darkscreen Ability Hidden from GDD_DamagedUnit
    Set TempInt = (Level of Darkscreen for GDD_DamagedUnit)
    -------- divide by 0.1 because we use 0.1s timer for cooldown time check --------
    Set Darkscreen_InCD_Time[Darkscreen_InCD_Count] = (Integer(((11.50 - (1.50 x (Real(TempInt)))) / 0.10)))
    Set Darkscreen_InCD_U[Darkscreen_InCD_Count] = GDD_DamagedUnit
    Set Darkscreen_InCD_Count = (Darkscreen_InCD_Count + 1)
    -------- this group is used to detect if tidebringer is in cooldown or not --------
    -------- actually, we can loop through the array "Jinada_InCD_U" to check but it would be slower --------
    Unit Group - Add GDD_DamagedUnit to Darkscreen_InCD_G
    Else - Actions
    [/spoil]
    Darkscreen CD
    [spoil]
    Events
    Time - Every 0.10 seconds of game time
    Conditions
    Actions
    For each (Integer Darkscreen_Looper) from 0 to (Darkscreen_InCD_Count - 1), do (Actions)
    Loop - Actions
    Set Darkscreen_InCD_Time[Darkscreen_Looper] = (Darkscreen_InCD_Time[Darkscreen_Looper] - 1)
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    Darkscreen_InCD_Time[Darkscreen_Looper] Equal to 0
    Then - Actions
    Set TempUnit = Darkscreen_InCD_U[Darkscreen_Looper]
    Set TempInt = (Level of Darkscreen for TempUnit)
    -------- cooldown done, add critical strike --------
    Unit - Add Darkscreen Ability Hidden to TempUnit
    Unit - Set level of Darkscreen Evade for TempUnit to TempInt
    -------- Jinada is not in cooldown anymore, remove unit from the group --------
    Unit Group - Remove TempUnit from Darkscreen_InCD_G
    Set Darkscreen_InCD_Count = (Darkscreen_InCD_Count - 1)
    Set Darkscreen_InCD_Time[Darkscreen_Looper] = Darkscreen_InCD_Time[Darkscreen_InCD_Count]
    Set Darkscreen_InCD_U[Darkscreen_Looper] = Darkscreen_InCD_U[Darkscreen_InCD_Count]
    Set Darkscreen_Looper = (Darkscreen_Looper - 1)
    Else - Actions
    [/spoil]
    Đây là 6 trigger của skill Darkscreen ( Evade 1 hit đánh - cd : 10/8.5/7/5.5s )
    Vậy sao khi học xg, Hero[1] ( hero được học skill này ) bị đánh thì Hero[2] ( hero đánh vào Hero[1] ) thì nó kô cd và còn add thêm skill này vào Hero[2]
    Làm dựa từ [Spell Pack] On Attack Hit Spell của a Tom.
    P/s: vì trigger dài nên e bỏ thẳng vào Spoil cho dễ nhìn, nhìn =
    Mã:
     thì hơi mệt (theo e ngĩ ).
     
    Chỉnh sửa cuối: 15/7/12
  2. World_Editor

    World_Editor Mr & Ms Pac-Man

    Tham gia ngày:
    6/6/12
    Bài viết:
    137
    Nơi ở:
    tpHCM
    cho em hỏi hashtable là gì vậy
     
  3. Killer.V.Lord01

    Killer.V.Lord01 Mr & Ms Pac-Man

    Tham gia ngày:
    30/6/12
    Bài viết:
    152
    Nơi ở:
    Đăk Lăk
    cho mình hỏi cái skill của cái gậy Force Staff trong dota làm sao nhỉ. đơn giản là nhấn vô ally thì đẩy nó đi 1 đoạn như dash. còn nhấp đôi vô item thì tự đẩy mình đi 1 đoạn/. cho enemy cũng thế. ai biết chỉ với
     
  4. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    Là một loại để lưu trữ các biến tương tự array. Nhấn lùi lại vài trang, đã có người nói vấn đề này rồi. ice. dragon đấy
     
  5. truongdzuy

    truongdzuy Mr & Ms Pac-Man

    Tham gia ngày:
    25/1/09
    Bài viết:
    274
    Nơi ở:
    Tp.HCM
    bạn lên Hiveworkshop vào fần Spells , kím từ khóa "knockback" để tìm KnockBack System để tìm loại knockback phù hợp với cách code của bạn ( mìnk xài cái này : link hoặc bạn cài bộ EGUI vào trong WE để có tính năng Knockback đơn giản nhất ! )
    rồi tạo Spell dựa trên Chain Lightning r` sử dụng KnockBack System để làm nhé \:d/. Còn về cách xài Knockback thì tùy System có 1 cách xài khác nhau, nên đọc kĩ phần Documentary của họ !
     
  6. Ryanpzo9

    Ryanpzo9 Donkey Kong

    Tham gia ngày:
    20/10/08
    Bài viết:
    326
    Đơn giản chỉ là Slide target đi thôi. Search Tutorial Chain-Slide Spell trong cái một số link hữu dụng ấy mà tập làm. Cái slide là 1 trong những cái cơ bản đấy chịu khó tập đi chứ đừng đi copy system rồi k hiểu gì.
     
  7. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    Đúng đấy, slide có rất nhiều cái của spells cần dùng đến nó lắm.
     
  8. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    @truongdzuy, Ryanpzo9, langthangbairac: tôi lại không nghĩ đơn giản vậy. Ai làm giúp tiếp phần in đậm sau giùm

     
  9. Ryanpzo9

    Ryanpzo9 Donkey Kong

    Tham gia ngày:
    20/10/08
    Bài viết:
    326
    Đang bảo cơ chế của cái Force Staff chứ k bảo là active nó như thế nào :| Đọc kĩ cho hiểu đi đã chứ :|
     
  10. Ngoc LeO

    Ngoc LeO Mario & Luigi

    Tham gia ngày:
    23/7/06
    Bài viết:
    839
    Nơi ở:
    Nothing...
    Hay là dùng Unit - A unit Is issued an order targeting an object
    Lần một thì check biến int nhỏ hơn 2 thì set biến int = int+1
    Lần hai check biến nếu int = 2 thì slide :-? :"> được không nhỉ ????

    Tiện cho mình hỏi Resistant Skin nó cũng giống như ability Spell Immune phải không ? Thấy trong tooltip của Resistant Skin ghi Reduces the duration of negative spells - Làm giảm thời gian tác dụng của các spell negative là sao <=== tính năng này liệu có hoạt động ko mọi người ???
     
  11. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    Chả hiểu gì. Đâu giải quyết được chuyện double-click.

    Nó vẫn nằm trong câu hỏi, đúng không? :| và chưa ai trả lời phần đó. Riêng tôi làm không được nên cũng thắc mắc chỗ này.
     
  12. Ngoc LeO

    Ngoc LeO Mario & Luigi

    Tham gia ngày:
    23/7/06
    Bài viết:
    839
    Nơi ở:
    Nothing...
    Mình nghĩ là như này đây: dùng ability có target cả item lẫn unit (channel) và check,nếu target là item và item đó phải là xxx thì slide bản thân còn không thì...

    Mã:
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        If - Conditions
            (Item-type of (Target item of ability being cast)) Equal to xxxx
            (Target item of ability being cast) Not equal to No item
            (Target unit of ability being cast) Equal to No unit
        Then - Actions
        Else - Actions
    
     
    Chỉnh sửa cuối: 16/7/12
  13. World_Editor

    World_Editor Mr & Ms Pac-Man

    Tham gia ngày:
    6/6/12
    Bài viết:
    137
    Nơi ở:
    tpHCM
    nhấn double vào item có nghĩa select target là self chứ chả có hàm ý gì đâu

    ---------- Post added at 07:13 ---------- Previous post was at 07:11 ----------

    OMG! WTF ? Anh Tom đâu rồi???
     
  14. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    Ai trả lời giúp mình với... Phần tạo effect cho từng player
     
  15. lonewolf020291

    lonewolf020291 T.E.T.Я.I.S

    Tham gia ngày:
    16/3/07
    Bài viết:
    579
    Nơi ở:
    Toy Box
    Thêm vào target allowed có item, và khi cast thì dùng event unit cast spell. Check với:
    Mã:
    ((Triggering unit) has (Target item of ability being cast)) Equal to (==) True
    Mã:
    (Target unit of ability being cast) Equal to (==) No unit
    
    đều được. True thì set mục tiêu là caster.

    Tạo SFX cho một vài player nhất định. Nếu hiểu rồi thì WE new gen có Local Player sẵn mà ko cần dùng custom script và tớ chỉ biết đến đó..
     
    Chỉnh sửa cuối: 16/7/12
  16. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    double-click chính xác là target item
    với event: issued order target an object
    nếu: là order dùng item, mục tiêu item khác no item (tức là đang target item) thì: stop, bắt unit sử dụng item lên chính mình

    trigger:
    [spoil]
    Mã:
    Double Click
        Events
            Unit - A unit Is issued an order targeting an object
        Conditions
            (Target item of issued order) Not equal to No item
        Actions
            -------- nếu order vào một item  --------
            -------- -------------- --------
            Set TempUnit = (Triggering unit)
            -------- GUI ko có order sử dụng item nên phải lấy order id bằng Custom Script --------
            Custom script:   set udg_TempInt = GetIssuedOrderId()
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    TempInt Greater than or equal to 852008
                    TempInt Less than or equal to 852013
                Then - Actions
                    -------- 852008 -> 852013 = use item slot 1 -> 6 --------
                    Set TempItem = (Item carried by TempUnit in slot ((TempInt - 852008) + 1))
                    -------- in JASS: số slot của inventory bắt đầu từ 0 --------
                    -------- in GUI: bắt đầu từ 1, đây là lý do +1 --------
                    -------- giờ kiểm tra item-type --------
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            (Item-type of TempItem) Equal to Healing Salve
                        Then - Actions
                            -------- dừng unit  --------
                            -------- pause này là cần thiết (vì một lý do nào đó) --------
                            Unit - Pause TempUnit
                            Unit - Order TempUnit to Stop
                            Unit - Unpause TempUnit
                            -------- bắt unit này sử dụng item lên bản thân --------
                            Hero - Order TempUnit to use TempItem on TempUnit
                        Else - Actions
                Else - Actions
    
    [/spoil]

    chú ý: target allowed của ability trong item phải có item (để target item được)

     
    Chỉnh sửa cuối: 16/7/12
  17. truongdzuy

    truongdzuy Mr & Ms Pac-Man

    Tham gia ngày:
    25/1/09
    Bài viết:
    274
    Nơi ở:
    Tp.HCM
     
    Chỉnh sửa cuối: 16/7/12
  18. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    Darkscreen: vậy Hero[1] sẽ có "Evasion 100%", evade 1 lần thì sẽ cd?
    nếu vậy thì rất tiếc dùng cách này không được, để Darkscreen Hit hoạt động thì Hero[2] phải đánh trúng Hero[1] nhưng có evasion thì sao đánh trúng được?

    về ability trừ armor khi đánh thì xem file gửi kèm.
     

    Các file đính kèm:

  19. World_Editor

    World_Editor Mr & Ms Pac-Man

    Tham gia ngày:
    6/6/12
    Bài viết:
    137
    Nơi ở:
    tpHCM
    cho em hỏi cách làm ulti nvm trong dota ???
     
  20. truongdzuy

    truongdzuy Mr & Ms Pac-Man

    Tham gia ngày:
    25/1/09
    Bài viết:
    274
    Nơi ở:
    Tp.HCM
    tks a Tom
    Shadow Fiend DotA Spell Pack
    bộ skill đầy đủ của Nevermor, tuy nhiên = vJass và rất khó hiểu nếu bạn k biết cơ bản về Jass ( Như mình :D)
    Còn nếu về GUI, chắc ở đây sử dụng Dummy cast Carrion Swarm theo hình vòng tròn. Tuy nhiên nếu vậy thì khi xài giáp fản damg sẽ xảy ra trường hợp là damg fản lại Dummy chứ k fải Nvm. Nên mình ngĩ để có thể fản được thì xài Slide Dummy để tạo effect ảo r` cho Slide và deal damg những unit xung quanh nó :), như vậy khi sử dụng giáp fản damg sẽ có thể fản lại Nvm hoàn toàn :D
     
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này