Topic post, bàn luận, đóng góp ý kiến, thắc mắc, giải đáp, bình phẩm về Custom Spell.

Thảo luận trong 'World Editor' bắt đầu bởi raivor, 7/1/11.

  1. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    TempPoint 1 rồi đến 2, loay hoay lát quên remove leak:D
    Cái reset biến MUI đã hiểu, sẽ sửa lại.
    Có cả phần điểm trình này nữa sao raivor :-w
     
    Chỉnh sửa cuối: 9/1/11
  2. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    Thì về code phải trình bày đẹp, trình bày rối mắt thì mọi người sẽ có cảm giác không muốn đọc. Sẽ updete thêm chi tiết.
     
  3. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    Mình sửa lại rồi, cho điểm lại đi :D
     
  4. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    Sửa lại thì không cho điểm lại, trừ khi sửa trước khi được người khác cm nhận xét. Đã update phần chú ý.
     
  5. meomeo3101

    meomeo3101 Mr & Ms Pac-Man

    Tham gia ngày:
    3/2/07
    Bài viết:
    246
    Nơi ở:
    Hà Nội
    Mình chẳng biết làm skill đẹp. Để làm cái tý ném lên thử xem :D.

    ---------- Post added at 23:32 ---------- Previous post was at 22:32 ----------

    Đây là một skill rất đơn giản nhưng khi sử dụng không phải là dễ, đặc biệt trong các pha combat thì do delay của skill cao và cả tính may rủi nên rất khó phán đoán và kẻ thù có thể tránh nếu khôn khéo.
    Khi sử dụng skill sẽ taọ ra một lượng chim bay trên đầu quân địch, chúng sẽ mất 3s để xác định kẻ thù và sau đó lập tức tấn công gây damage và stun. Điểm nguy hiểm của skill là đối tượng được chọn random trong vùng cast. Nếu duy nhất có một kẻ địch toàn bộ skill sẽ đổ lên 1 đối tượng, lượng damage gây ra là rất lớn. Tuy nhiên nếu trong một vùng cast với đầy quân thù thì skill này trở thành khá vô dụng với lượng damage thấp và hiệu quả stun ngắn.
    Đặc biệt hiệu quả nếu skill có thể dùng phối hợp với một skill hỗ trợ giữ kẻ thù như trói, stun, băng..v...v... khi đó thì...
    [spoil]
    Events
    Unit - A unit Starts the effect of an ability
    Conditions
    (Ability being cast) Equal to Hac Dieu
    Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    tangthem Less than 500
    Then - Actions
    Set tangthem = (tangthem + 1)
    Else - Actions
    Set tangthem = 0
    Set trieutap_loc = (Target point of ability being cast)
    Set so_chim = (5 + ((Level of Hac Dieu for (Triggering unit)) x 5))
    For each (Integer A) from 1 to (so_chim / 2), do (Actions)
    Loop - Actions
    Set point_goichim = (trieutap_loc offset by -100.00 towards ((Real((Integer A))) x 72.00) degrees)
    Unit - Create 1 Chim Dummy for (Owner of (Triggering unit)) at point_goichim facing Default building facing degrees
    Set point_goichim = (Random point in (Playable map area))
    Unit - Order (Last created unit) to Move To point_goichim
    Unit Group - Add (Last created unit) to group_chim[tangthem]
    For each (Integer A) from 1 to so_chim, do (Actions)
    Loop - Actions
    Set point_goichim = (trieutap_loc offset by -200.00 towards ((Real((Integer A))) x 72.00) degrees)
    Unit - Create 1 Chim Dummy for (Owner of (Triggering unit)) at point_goichim facing Default building facing degrees
    Set point_goichim = (Random point in (Playable map area))
    Unit - Order (Last created unit) to Move To point_goichim
    Unit Group - Add (Last created unit) to group_chim[tangthem]
    Wait 3.00 seconds
    Unit Group - Pick every unit in (Units within 300.00 of trieutap_loc) and do (Actions)
    Loop - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    ((Picked unit) is A structure) Equal to False
    ((Picked unit) is Magic Immune) Equal to False
    ((Picked unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True
    ((Picked unit) is alive) Equal to True
    Then - Actions
    Unit Group - Add (Picked unit) to unit_target_chim[tangthem]
    Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    (unit_target_chim[tangthem] is empty) Equal to False
    Then - Actions
    Unit Group - Pick every unit in group_chim[tangthem] and do (Actions)
    Loop - Actions
    Unit - Create 1 Dummy skill for (Owner of (Triggering unit)) at (Position of (Picked unit)) facing Default building facing degrees
    Set random_target_chim = (Random unit from unit_target_chim[tangthem])
    Unit - Order (Last created unit) to Neutral - Firebolt random_target_chim
    Unit - Add a 0.20 second Generic expiration timer to (Picked unit)
    Unit - Add a 0.20 second Generic expiration timer to (Last created unit)
    Else - Actions
    Game - Display to (Owner of (Triggering unit)), at offset (0.00, 0.00) the text: |cffff0000No Unit!|...
    Unit Group - Remove all units from group_chim[tangthem]
    Unit Group - Remove all units from unit_target_chim[tangthem]
    Set random_target_chim = No unit
    Custom script: call RemoveLocation (udg_trieutap_loc)
    Custom script: call RemoveLocation (udg_point_goichim)
    [/spoil]
    http://www.mediafire.com/download.php?icwcugn6023x99r
    Nhân tiện cho mình hỏi làm sao để trong game chỉ mua được một loại hero duy nhất như dota vậy? Nghĩa là không có 2 con giống nhau. Mình thử mọi cách mà 2 player vẫn mua cùng 1 hero được!
     
    Chỉnh sửa cuối: 10/1/11
  6. WordEditor

    WordEditor C O N T R A

    Tham gia ngày:
    8/9/08
    Bài viết:
    1,509
    Nơi ở:
    Leaf Village
    Quan trọng là custom spell đòi hỏi phải sáng tạo nữa chứ đẹp mắt vẫn chưa phải là hay ( giả sử như spell đẹp nhưng chỉ có 1 kiểu: phóng ra gây damage --> thà dùng shock wave cho nhanh )
    Vd như chúng ta có thể nghĩ ra một custom spell có thể làm unit chạy nhanh hơn max speed là 522, hoặc spell invisiblity có thể đi xuyên địa hình mà khi có true sight ( dust, gem ) thì vẫn không hiện hình..( chỉ hiện bóng, attack đc nhưng ko target đc ) :)
    Khuyên các bạn nên làm spell hay, sáng tạo, đẹp nhưng không quá nhiều effect --> gây lag trong các pha combat
    Btw, post spell Jass đc ko :D
    ---------------------
    Trước đây, vào những lúc rảnh rỗi mình hay làm custom spell, nhân đây cũng post lên thử ^^!
    [spoil]Tên spell: Advanced Storm Bolt
    Mô tả: Cast spell vào 1 điểm, hero sẽ giơ búa lên, cây búa rực sáng, dòng điện bắn ra.. Sau đó hero này sẽ phóng cây búa ra đến điểm đó, nếu chạm phải unit địch sẽ gây stun kèm theo đẩy lùi unit địch và "theo lực đàn hồi" cây búa sẽ tưng ngược lại 1 ít và tiếp tục phóng đến cho đến khi nào đến điểm đã target thì sẽ vỡ tan
    *Cây búa chỉ dừng lại ở điểm bạn đã cast trong range. Vd như spell 1000 range mà bạn target ở ngay chỗ mình đứng thì cây búa sẽ lập tức vỡ tan
    [​IMG]

    Vì đây là spell MUI nên trigger gồm có 3 phần:
    Phần 1: Dịch chuyển dummy ( cây búa )
    Advanced Storm Bolt
    Mã:
    Events
            Unit - A unit Starts the effect of an ability
        Conditions
            (Ability being cast) Equal to Advanced Storm Bolt 
        Actions
            Set MUI[1] = (MUI[1] + 1)
            Set ASTCaster[MUI[1]] = (Casting unit)
            Set ASTPointCast[MUI[1]] = (Position of ASTCaster[MUI[1]])
            Set ASTPointTarget[MUI[1]] = (Target point of ability being cast)
            Unit - Create 1 Dummy for (Owner of ASTCaster[MUI[1]]) at ASTPointCast[MUI[1]] facing (Angle from ASTPointCast[MUI[1]] to ASTPointTarget[MUI[1]]) degrees
            Set ASTDummy[MUI[1]] = (Last created unit)
            Set ASTIntergerMove[MUI[1]] = 26
            Set ASTInterger[MUI[1]] = 2
    
    Ở trên là khi unit bắt đầu cast spell và set biến

    Advanced Storm Bolt Move
    Mã:
        Events
            Time - Every 0.04 seconds of game time
        Conditions
        Actions
            For each (Integer A) from 1 to MUI[1], do (Actions)
                Loop - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            ASTInterger[(Integer A)] Greater than 1
                        Then - Actions
                            Set ASTPointDummy[(Integer A)] = (Position of ASTDummy[(Integer A)])
                            Set ASTPointMove[(Integer A)] = (ASTPointDummy[(Integer A)] offset by (Real(ASTIntergerMove[(Integer A)])) towards (Angle from ASTPointCast[(Integer A)] to ASTPointTarget[(Integer A)]) degrees)
                            Unit - Move ASTDummy[(Integer A)] instantly to ASTPointMove[(Integer A)], facing (Angle from ASTPointCast[(Integer A)] to ASTPointTarget[(Integer A)]) degrees
                            Set ASTGroup[(Integer A)] = (Units within 100.00 of ASTPointMove[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of ASTCaster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                If - Conditions
                                    (Integer((Distance between ASTPointMove[(Integer A)] and ASTPointTarget[(Integer A)]))) Less than or equal to 27
                                Then - Actions
                                    Set ASTInterger[(Integer A)] = (ASTInterger[(Integer A)] - 1)
                                Else - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                If - Conditions
                                    ASTIntergerMove[(Integer A)] Less than 26
                                Then - Actions
                                    Set ASTIntergerMove[(Integer A)] = (ASTIntergerMove[(Integer A)] + 1)
                                Else - Actions
                                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        If - Conditions
                                            (Number of units in ASTGroup[(Integer A)]) Greater than 0
                                        Then - Actions
                                            Set ASTIntergerMove[(Integer A)] = -26
                                            Unit Group - Pick every unit in ASTGroup[(Integer A)] and do (Actions)
                                                Loop - Actions
                                                    Unit - Order ASTDummy[(Integer A)] to Human Mountain King - Storm Bolt (Picked unit)
                                        Else - Actions
                            Custom script:   call RemoveLocation(udg_ASTPointDummy[bj_forLoopAIndex])
                            Custom script:   call RemoveLocation(udg_ASTPointMove[bj_forLoopAIndex])
                            Custom script:   call DestroyGroup(udg_ASTGroup[bj_forLoopAIndex])
                        Else - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                If - Conditions
                                    ASTInterger[(Integer A)] Greater than 0
                                Then - Actions
                                    Set ASTInterger[(Integer A)] = (ASTInterger[(Integer A)] - 1)
                                    Unit - Kill ASTDummy[(Integer A)]
                                    Custom script:   call RemoveLocation(udg_ASTPointCast[bj_forLoopAIndex])
                                    Custom script:   call RemoveLocation(udg_ASTPointTarget[bj_forLoopAIndex])
                                Else - Actions
    Vừa rồi chính là cách move dummy ( cây búa ) đến điểm target và cho vỡ tan

    Phần 2: Phần này chủ yếu là spell được cast từ dummy ( cây búa ), gây stun, damage và đẩy lùi unit địch

    Storm Bolt
    Mã:
        Events
            Unit - A unit Starts the effect of an ability
        Conditions
            (Ability being cast) Equal to Storm Bolt 
        Actions
            Set MUI[2] = (MUI[2] + 1)
            Set Caster[MUI[2]] = (Casting unit)
            Set Target[MUI[2]] = (Target unit of ability being cast)
            Set PointCast[MUI[2]] = (Position of Caster[MUI[2]])
            Set Interger[MUI[2]] = 18
    Storm Bolt Move
    Mã:
        Events
            Time - Every 0.04 seconds of game time
        Conditions
        Actions
            For each (Integer A) from 1 to MUI[2], do (Actions)
                Loop - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            Interger[(Integer A)] Greater than 1
                        Then - Actions
                            Set PointTarget[(Integer A)] = (Position of Target[(Integer A)])
                            Set PointMove[(Integer A)] = (PointTarget[(Integer A)] offset by 6.00 towards (Angle from PointCast[(Integer A)] to PointTarget[(Integer A)]) degrees)
                            Unit - Move Target[(Integer A)] instantly to PointMove[(Integer A)]
                            Special Effect - Create a special effect attached to the origin of Target[(Integer A)] using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
                            Special Effect - Destroy (Last created special effect)
                            Set Interger[(Integer A)] = (Interger[(Integer A)] - 1)
                            Custom script:   call RemoveLocation(udg_PointTarget[bj_forLoopAIndex])
                            Custom script:   call RemoveLocation(udg_PointMove[bj_forLoopAIndex])
                        Else - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                If - Conditions
                                    Interger[(Integer A)] Greater than 0
                                Then - Actions
                                    Set Interger[(Integer A)] = (Interger[(Integer A)] - 1)
                                    Custom script:   call RemoveLocation(udg_PointCast[bj_forLoopAIndex])
                                Else - Actions
    Phần vừa nêu chính là cách dummy đẩy lùi unit địch và gây stun

    Phần 3: Phần này chỉ là phần nhỏ, không cần thiết lắm chủ yếu là đẹp mắt. Để spell của chúng ta đẹp hơn và có phần "lạ" mắt trong model khi mở đầu spell thì chúng ta nên thêm 1 số effect là cần thiết đấy các bạn ạ :)

    Special Effect
    Mã:
        Events
            Unit - A unit Begins casting an ability
        Conditions
            (Ability being cast) Equal to Advanced Storm Bolt 
        Actions
            Special Effect - Create a special effect attached to the right hand of (Casting unit) using Abilities\Weapons\Bolt\BoltImpact.mdl
            Special Effect - Destroy (Last created special effect)
    Khi bắt đầu quá trình cast spell, cây búa trên tay hero sẽ rực sáng và bắn điện ra vào khoảng không (nếu vừa bấm cast vừa stop sẽ có hiệu ứng, gây hoang mang cho địch). Chúng ta hãy thử tưởng tượng 1 hero khi cast spell không có gì và 1 hero cast spell có 1 âm thanh cùng ánh sáng lóe lên, chẳng phải là sẽ rất giật mình sao, việc này sẽ làm cho quân địch có phần bất ngờ ảnh hưởng đôi chút đến tâm lý :D[/spoil]
     

    Các file đính kèm:

    Chỉnh sửa cuối: 10/1/11
  7. meomeo3101

    meomeo3101 Mr & Ms Pac-Man

    Tham gia ngày:
    3/2/07
    Bài viết:
    246
    Nơi ở:
    Hà Nội
    Skill của bạn hay lắm nhưng mà sao nó giật quá. Nhìn không được ổn lắm. Búa bay cứ như quay chậm và bị giật phim ấy :(

    ---------- Post added at 10:17 ---------- Previous post was at 10:13 ----------

    Mà quảng cáo lố quá. Skill có bị vỡ vụn hay vỡ tan đâu, chỉ biến mất thôi. Làm mình tưởng thật :D

    ---------- Post added at 10:21 ---------- Previous post was at 10:17 ----------

    Hiệu quả của việc giật sét với ấm thanh mình nghĩ không có tác dụng lắm đâu vì skill bay chậm đợi cast xong tránh vẫn thoải mái chẳng cần phải để ý =))
     
  8. lonewolf020291

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

    Tham gia ngày:
    16/3/07
    Bài viết:
    579
    Nơi ở:
    Toy Box
    Đến giờ vẫn kết chiêu ZBlink nhất :">, trước giờ vẫn đang nghĩ cách di chuyển ZigZag mà rắc rối quá
     
  9. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    Đề nghị các bác cho xin cái hình. Mong 2 bác giải thích rõ hơn. Khi đầy đủ sẽ chấm điểm.
    @WE: Post jass vẫn được bác ạ, nhưng chỉ để tham khảo và học hỏi thôi.
     
  10. maixuanem

    maixuanem Mr & Ms Pac-Man

    Tham gia ngày:
    22/8/10
    Bài viết:
    182
    Nơi ở:
    Tân Binh
    Ra là jass chỉ để tham khảo và học hỏi... thôi vậy mình toàn code jass quên hết GUI rồi :)
     
  11. WordEditor

    WordEditor C O N T R A

    Tham gia ngày:
    8/9/08
    Bài viết:
    1,509
    Nơi ở:
    Leaf Village
    Bạn à, khi quảng cáo phải "văn chương" tí chứ =))
    Không rõ máy bạn cấu hình ra sao nhưng bạn là người đầu tiên nói spell này giật đấy :(
     
  12. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    Tên spell: Advanced Storm Bolt
    +Về ý tưởng: tốt. (2đ) - Phải nói là rất sáng tạo
    +Về thẩm mĩ: đẹp. (1đ) - Trông rất hay.
    +Về code: tốt. (1đ) - MUI, xóa leak đầy đủ.
    +Về phần giải thích: khó hiểu (2đ)- Thực sự là đọc xong mình không hiểu gì hết X_X. Bác nên giải thích kĩ hơn (từng code luôn ấy), chứ lại phải ngồi đọc đi đọc lại để hiểu thì... và thiếu các biến dùng trong Trigger ???
    +Về nhận xét riêng của bạn: thích (1đ)
    Tổng điểm: 7đ - 0.5đ (do tiến và lùi...không dừng :) ) = 6.5đ
    @meomeo3101: spell của bạn cast lần thứ 2 thì không gây dmg và stun. Sửa lại nhé.
    Từ đây mình sẽ không chia ra làm Ưu điểm, Khuyết điểm nữa. Các bạn chấm chú ý nhé.
     
    Chỉnh sửa cuối: 10/1/11
  13. KuKulKan

    KuKulKan T.E.T.Я.I.S

    Tham gia ngày:
    2/8/09
    Bài viết:
    629
    Nơi ở:
    Quận Thủ Đức, Thành phố Hồ Chí Minh
    Theo Kan thì code tuy tốt nhưng còn vấn đề đó, cast vài unit có Spell Immunity thì unit đó không bị knockback (thì không sai immunity mà), nhưng còn cây búa thì vẫn chu kì tiến - lùi không dừng, đề nghị trừ điểm nào :D
     
  14. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    Vậy ai post jass xin hướng dẫn cụ thể nhé, mình không biết gì về jass nhưng cũng muốn học thử :)
    Hơn mình 0.5 point :((
     
  15. BooyViip

    BooyViip Mr & Ms Pac-Man GameOver

    Tham gia ngày:
    20/11/10
    Bài viết:
    120
    Nơi ở:
    Hà Nội
    Câu này em nên hỏi ở Topic hỏi đáp nhưng hỏi ở Topic này thì chắc có nhiều PRO trả lời 1 cách dễ hiểu hơn (xin Mod đừng phạt em):
    Câu hỏi rất ngắn gọn: làm spell Storm Bolt = JASS (nếu Pro nào có thời gian thì giúp luôn cả Shockwave nữa nhé), phần quan trọng nhất là các PRO giải thích hộ em ý nghĩa của từng dòng JASS vì em chưa biết gì về JASS cả.
     
  16. WordEditor

    WordEditor C O N T R A

    Tham gia ngày:
    8/9/08
    Bài viết:
    1,509
    Nơi ở:
    Leaf Village
    Muốn học hỏi về Jass thì vào đây
    Bạn xem kĩ lại tí, cây búa sẽ dừng và biến mất khi nó bay đến điểm chúng ta đã target :-w ( Vd như nếu bạn target ngay vào con hero của chính bạn thì cây búa sẽ biến mất ngay ). Vì vậy mình làm spell này để cho player phải chú ý kĩ khi cast spell. Vd như khi đang đuổi bám địch, nếu hấp tấp mà cast spell ngay thì cây búa sẽ chỉ bay đến chỗ unit địch đang đứng là hết ( trong thời gian cây búa di chuyển thì địch đã chạy ra khỏi điểm target ấy rồi --> công cốc ). Thế nên cần phải phán đoán chính xác đường đi của địch, tính toán khoảng cách, thời gian cây búa và unit địch di chuyển để có thể stun trúng địch. Và nếu stun trúng mà điểm point vẫn còn cách xa điểm của unit địch thì ta lại có cơ hội knock back địch nhiều lần --> rất có lợi để giữ chân, thế nên cần phải suy nghĩ kỹ.
    Ps: Hẳn bạn đã biết skill arrow của hổ Mirrana và skill trói của Geo trong dota, nếu muốn stun trúng địch 5s hoặc trói chân địch thì chẳng lẽ lại nào đơn giản đến nỗi chỉ cần target vào point của unit địch chăng ? :)
    @Raivor: Sao down cái ZBlink về nó lại không đi theo đường Zick-Zack vậy O.O!
     
    Chỉnh sửa cuối: 10/1/11
  17. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    Thật bất cẩn, đã fix..........
     
  18. DylandKyo

    DylandKyo Donkey Kong

    Tham gia ngày:
    28/10/10
    Bài viết:
    358
    ai làm giúp em spell này bằng Trigger nha.
    Tên spell : Phượng hoàng
    Loại : Passive skill
    Mô tả: Khi tấn công vào đối phương có xác suất 15% có một con phượng hoảng bay ra theo đường chéo (bay trên đầu đối phương) gây dame cho đối phương và những taget đứng gần trong khoảng.
    Dame : 1000/1500/2000/2500/3000
    AOE : 100/200/300/400/500
    Tks rất nhìu
     
  19. pmtan

    pmtan Youtube Master Race

    Tham gia ngày:
    1/11/09
    Bài viết:
    86
    Nơi ở:
    Lonely World
    Mình cũng đang nghiẹn cứu các skill dùng unit group, có bạn nào làm bài hướng dẫn 1 skill như vậy không?
     
  20. DylandKyo

    DylandKyo Donkey Kong

    Tham gia ngày:
    28/10/10
    Bài viết:
    358
    Ai giúp e làm spell này vơi @@
     

Chia sẻ trang này