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
    Spell mô tả vậy đố ai làm được :|
    - Phượng hoàng bay ra từ đâu?
    - Bay theo hướng nào (biết là chéo rồi mà chéo từ đâu sang đâu)?
    - Chéo bao nhiêu độ?
    - Damage loại gì?
    - Cuối cùng, cái Aoe đó là tình từ đâu vậy, từ caster hay target hay con phượng hoàng?
     
  2. lonewolf020291

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

    Tham gia ngày:
    16/3/07
    Bài viết:
    579
    Nơi ở:
    Toy Box
    Chiêu này của Yuna trong Map tổng hợp đó bác Leo. Yuna trong FF X làm gì có cái này trời @@.
    DylanKyo: mình Post spell đó bên box hỏi đáp rồi, để ở đây ông Raivor lèm bèm nữa :P
     
  3. goldviper

    goldviper Mario & Luigi Lão Làng GVN

    Tham gia ngày:
    7/1/10
    Bài viết:
    760
    Nơi ở:
    Tổ dân phố
    ai chỉ mình cách tạo những aura từ ability passive được ko.vd như : evasion aura , critical aura , spell redution aura , vvv...
    kiểu như những thứ cần tạo , biến , trigger .:)
     
  4. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    Bác này skill người ta có rồi cứ thích làm lại :| Cái critical đâu phải aura.
     
  5. goldviper

    goldviper Mario & Luigi Lão Làng GVN

    Tham gia ngày:
    7/1/10
    Bài viết:
    760
    Nơi ở:
    Tổ dân phố
    ^
    zzz , bác này ko hiểu ý mình roài , ko có aura mới làm aura chứ ,như kiểu đứng cạnh nhau , người ko có critical strike cũng có :).
     
  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
    Hôm nay xin đóng góp thêm 1 spell custom lục từ đống spell cũ ^^!
    [spoil]Tên Spell: Black Hole ( GUI - MUI )
    Mô tả: Spell dạng channel, khi cast spell sẽ hút các unit địch trong khoảng cách vào hố đen, trước khi hố đen đóng lại sẽ có 1 luồng sáng lóe lên, tất cả unit gần hố đen sẽ bị hút vào một không gian khác, các unit khác không ở gần tâm hố đen sẽ may mắn thoát chết, cánh cổng thời gian đóng lại và tất cả sẽ chẳng còn gì sót lại ngoài vài...vũng máu bê bết đỏ... :)

    Black Hole xuất hiện, mở ra cánh cổng đến không gian khác...
    [​IMG]

    ...và lúc cánh cổng bắt đầu khép lại..
    [​IMG]

    ...một ánh sáng hiện lên, Black Hole đã khép lại và mang theo tất cả những nạn nhân xấu số của nó.
    [​IMG]

    Và đây là các trigger

    Black Hole
    Mã:
        Events
            Unit - A unit Starts the effect of an ability
        Conditions
            (Ability being cast) Equal to Black Hole 
        Actions
            Set MUI = (MUI + 1)
            Set Caster[MUI] = (Casting unit)
            Set Boolean[MUI] = True
            Set TargetPoint[MUI] = (Target point of ability being cast)
            Unit - Create 1 Dummy Black hole for (Owner of Caster[MUI]) at TargetPoint[MUI] facing Default building facing degrees
            Set Dummy1[MUI] = (Last created unit)
            Unit - Create 1 Dummy Black hole (2) for (Owner of Caster[MUI]) at TargetPoint[MUI] facing Default building facing degrees
            Set Dummy2[MUI] = (Last created unit)
            Set Integer[MUI] = (((Level of Black Hole  for Caster[MUI]) x 125) + 71)
            Countdown Timer - Start Timer as a Repeating timer that will expire in 0.04 seconds
    Black Hole Run
    Mã:
        Events
            Time - Timer expires
        Conditions
        Actions
            For each (Integer A) from 1 to MUI, do (Actions)
                Loop - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            Integer[(Integer A)] Greater than 71
                        Then - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                If - Conditions
                                    Boolean[(Integer A)] Equal to False
                                Then - Actions
                                    Set Integer[(Integer A)] = 72
                                Else - Actions
                            Set Group[(Integer A)] = (Units within 1000.00 of TargetPoint[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of Caster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                            Unit Group - Pick every unit in Group[(Integer A)] and do (Actions)
                                Loop - Actions
                                    Set Point[(Integer A)] = (Position of (Picked unit))
                                    Set PointMove[(Integer A)] = (Point[(Integer A)] offset by 8.00 towards (Angle from Point[(Integer A)] to TargetPoint[(Integer A)]) degrees)
                                    Unit - Turn collision for (Picked unit) Off
                                    Unit - Pause (Picked unit)
                                    Unit - Move (Picked unit) instantly to PointMove[(Integer A)]
                                    Unit - Unpause (Picked unit)
                                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        If - Conditions
                                            (((Picked unit) is in Groupcheck[(Integer A)]) Equal to False) and (((Picked unit) is alive) Equal to True)
                                        Then - Actions
                                            Unit Group - Add (Picked unit) to Groupcheck[(Integer A)]
                                        Else - Actions
                                    Custom script:   call RemoveLocation(udg_Point[bj_forLoopAIndex])
                                    Custom script:   call RemoveLocation(udg_PointMove[bj_forLoopAIndex])
                            Custom script:   call DestroyGroup(udg_Group[bj_forLoopAIndex])
                            Set Integer[(Integer A)] = (Integer[(Integer A)] - 1)
                        Else - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                If - Conditions
                                    Integer[(Integer A)] Greater than 70
                                Then - Actions
                                    Set Group[(Integer A)] = (Units within 1000.00 of TargetPoint[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of Caster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                                    Unit Group - Pick every unit in Group[(Integer A)] and do (Actions)
                                        Loop - Actions
                                            Set Point[(Integer A)] = (Position of (Picked unit))
                                            Set PointMove[(Integer A)] = (Point[(Integer A)] offset by 8.00 towards (Angle from Point[(Integer A)] to TargetPoint[(Integer A)]) degrees)
                                            Unit - Turn collision for (Picked unit) Off
                                            Unit - Pause (Picked unit)
                                            Unit - Move (Picked unit) instantly to PointMove[(Integer A)]
                                            Unit - Unpause (Picked unit)
                                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                If - Conditions
                                                    (((Picked unit) is in Groupcheck[(Integer A)]) Equal to False) and (((Picked unit) is alive) Equal to True)
                                                Then - Actions
                                                    Unit Group - Add (Picked unit) to Groupcheck[(Integer A)]
                                                Else - Actions
                                            Custom script:   call RemoveLocation(udg_Point[bj_forLoopAIndex])
                                            Custom script:   call RemoveLocation(udg_PointMove[bj_forLoopAIndex])
                                    Custom script:   call DestroyGroup(udg_Group[bj_forLoopAIndex])
                                    Unit - Create 1 Dummy Effect for Neutral Passive at TargetPoint[(Integer A)] facing Default building facing degrees
                                    Set Integer[(Integer A)] = (Integer[(Integer A)] - 1)
                                Else - Actions
                                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        If - Conditions
                                            Integer[(Integer A)] Greater than 1
                                        Then - Actions
                                            Set Group[(Integer A)] = (Units within 1000.00 of TargetPoint[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of Caster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                                            Unit Group - Pick every unit in Group[(Integer A)] and do (Actions)
                                                Loop - Actions
                                                    Set Point[(Integer A)] = (Position of (Picked unit))
                                                    Set PointMove[(Integer A)] = (Point[(Integer A)] offset by 8.00 towards (Angle from Point[(Integer A)] to TargetPoint[(Integer A)]) degrees)
                                                    Unit - Turn collision for (Picked unit) Off
                                                    Unit - Pause (Picked unit)
                                                    Unit - Move (Picked unit) instantly to PointMove[(Integer A)]
                                                    Unit - Unpause (Picked unit)
                                                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                        If - Conditions
                                                            (((Picked unit) is in Groupcheck[(Integer A)]) Equal to False) and (((Picked unit) is alive) Equal to True)
                                                        Then - Actions
                                                            Unit Group - Add (Picked unit) to Groupcheck[(Integer A)]
                                                        Else - Actions
                                                    Custom script:   call RemoveLocation(udg_Point[bj_forLoopAIndex])
                                                    Custom script:   call RemoveLocation(udg_PointMove[bj_forLoopAIndex])
                                            Custom script:   call DestroyGroup(udg_Group[bj_forLoopAIndex])
                                            Set Integer[(Integer A)] = (Integer[(Integer A)] - 1)
                                        Else - Actions
                                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                If - Conditions
                                                    Integer[(Integer A)] Greater than 0
                                                Then - Actions
                                                    Set Group[(Integer A)] = (Units within 300.00 of TargetPoint[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of Caster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                                                    Unit Group - Pick every unit in Group[(Integer A)] and do (Actions)
                                                        Loop - Actions
                                                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                If - Conditions
                                                                    ((Picked unit) is A Hero) Equal to True
                                                                Then - Actions
                                                                Else - Actions
                                                                    Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency
                                                            Unit - Cause Caster[(Integer A)] to damage (Picked unit), dealing ((Real((Level of Black Hole  for Caster[(Integer A)]))) x 5000.00) damage of attack type Spells and damage type Normal
                                                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                If - Conditions
                                                                    (((Picked unit) is in Groupcheck[(Integer A)]) Equal to True) and (((Picked unit) is dead) Equal to False)
                                                                Then - Actions
                                                                    Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                                                                Else - Actions
                                                    Unit Group - Pick every unit in Groupcheck[(Integer A)] and do (Actions)
                                                        Loop - Actions
                                                            Unit - Turn collision for (Picked unit) On
                                                    Custom script:   call DestroyGroup(udg_Group[bj_forLoopAIndex])
                                                    Custom script:   call DestroyGroup(udg_Groupcheck[bj_forLoopAIndex])
                                                    Unit - Kill Dummy1[(Integer A)]
                                                    Unit - Kill Dummy2[(Integer A)]
                                                    Unit - Create 1 Wisp for Neutral Passive at TargetPoint[(Integer A)] facing Default building facing degrees
                                                    Special Effect - Create a special effect at TargetPoint[(Integer A)] using Abilities\Spells\Human\ReviveHuman\ReviveHuman.mdl
                                                    Special Effect - Destroy (Last created special effect)
                                                    Set Integer[(Integer A)] = (Integer[(Integer A)] - 1)
                                                    Custom script:   call RemoveLocation(udg_TargetPoint[bj_forLoopAIndex])
                                                Else - Actions
    Black Hole Check - Kiểm tra xem hero đã mất chanel hay không
    Mã:
        Events
            Unit - A unit Stops casting an ability
        Conditions
            (Ability being cast) Equal to Black Hole 
        Actions
            For each (Integer A) from 1 to MUI, do (Actions)
                Loop - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            And - All (Conditions) are true
                                Conditions
                                    Integer[(Integer A)] Greater than 71
                                    (Casting unit) Equal to Caster[(Integer A)]
                        Then - Actions
                            Set Boolean[(Integer A)] = False
                        Else - Actions
    [/spoil]

    Spell này đã lâu lắm rồi nên mình chẳng còn nhớ gì để giảng giải lại, mong các bạn thông cảm @@!
     

    Các file đính kèm:

    Chỉnh sửa cuối: 13/1/11
  7. YAN[asian]

    YAN[asian] Mario & Luigi

    Tham gia ngày:
    27/3/07
    Bài viết:
    812
    Unit bỏ channel -> enemy chết nhanh hơn (channel -> hết channel -> enemy die / channel -> bỏ channel -> hole vẫn hút -> vài giây sau, enemy chết).
     
  8. 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
    Thuở trước, mình vẫn hay thường làm spell khá là imba....và sau khi mở cái spell cũ này ra test lại thì đúng là imba thật... @@!
    Mình đã chỉnh sửa lại cho nó bớt imba, spell khi dừng chanel thì unit có thể chạy ra ngoài và vẫn có lực hút tác động đến tốc độ chạy ( chanel phải dừng hẳn thì unit mới chạy được ), add thêm gây damage khi đứng trong black hole, chanel càng lâu thì sẽ càng gây nhiều damage, nếu trong quá trình chanel mà không bị "gián đoạn" thì việc chanel sẽ kéo dài đến khi "đóng cổng" ( tức là 100% không move được ). Riêng phần gây damage cuối, mình có để damage hơi "bựa" là để cho các bạn thấy effect "chết mất xác" của unit, ngoài ra các bạn có thể tùy chỉnh :)

    Chỉ chỉnh sửa trigger Black Hole Run
    [spoil]Black Hole Run
    Mã:
        Events
            Time - Timer expires
        Conditions
        Actions
            For each (Integer A) from 1 to MUI, do (Actions)
                Loop - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            Integer[(Integer A)] Greater than 71
                        Then - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                If - Conditions
                                    Boolean[(Integer A)] Equal to False
                                Then - Actions
                                    Set Integer[(Integer A)] = 72
                                Else - Actions
                            Set Group[(Integer A)] = (Units within 1000.00 of TargetPoint[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of Caster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                            Unit Group - Pick every unit in Group[(Integer A)] and do (Actions)
                                Loop - Actions
                                    Set Point[(Integer A)] = (Position of (Picked unit))
                                    Set PointMove[(Integer A)] = (Point[(Integer A)] offset by 8.00 towards (Angle from Point[(Integer A)] to TargetPoint[(Integer A)]) degrees)
                                    Unit - Turn collision for (Picked unit) Off
                                    Unit - Pause (Picked unit)
                                    Unit - Move (Picked unit) instantly to PointMove[(Integer A)]
                                    Unit - Unpause (Picked unit)
                                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        If - Conditions
                                            (((Picked unit) is in Groupcheck[(Integer A)]) Equal to False) and (((Picked unit) is alive) Equal to True)
                                        Then - Actions
                                            Unit Group - Add (Picked unit) to Groupcheck[(Integer A)]
                                        Else - Actions
                                    Custom script:   call RemoveLocation(udg_Point[bj_forLoopAIndex])
                                    Custom script:   call RemoveLocation(udg_PointMove[bj_forLoopAIndex])
                            Custom script:   call DestroyGroup(udg_Group[bj_forLoopAIndex])
                            Set Group[(Integer A)] = (Units within 200.00 of TargetPoint[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of Caster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                            Unit Group - Pick every unit in Group[(Integer A)] and do (Actions)
                                Loop - Actions
                                    Unit - Cause Caster[(Integer A)] to damage (Picked unit), dealing 1.00 damage of attack type Spells and damage type Normal
                            Custom script:   call DestroyGroup(udg_Group[bj_forLoopAIndex])
                            Set Integer[(Integer A)] = (Integer[(Integer A)] - 1)
                        Else - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                If - Conditions
                                    Integer[(Integer A)] Greater than 70
                                Then - Actions
                                    Set Group[(Integer A)] = (Units within 1000.00 of TargetPoint[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of Caster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                                    Unit Group - Pick every unit in Group[(Integer A)] and do (Actions)
                                        Loop - Actions
                                            Set Point[(Integer A)] = (Position of (Picked unit))
                                            Set PointMove[(Integer A)] = (Point[(Integer A)] offset by 8.00 towards (Angle from Point[(Integer A)] to TargetPoint[(Integer A)]) degrees)
                                            Unit - Turn collision for (Picked unit) Off
                                            Unit - Pause (Picked unit)
                                            Unit - Move (Picked unit) instantly to PointMove[(Integer A)]
                                            Unit - Unpause (Picked unit)
                                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                If - Conditions
                                                    (((Picked unit) is in Groupcheck[(Integer A)]) Equal to False) and (((Picked unit) is alive) Equal to True)
                                                Then - Actions
                                                    Unit Group - Add (Picked unit) to Groupcheck[(Integer A)]
                                                Else - Actions
                                            Custom script:   call RemoveLocation(udg_Point[bj_forLoopAIndex])
                                            Custom script:   call RemoveLocation(udg_PointMove[bj_forLoopAIndex])
                                    Custom script:   call DestroyGroup(udg_Group[bj_forLoopAIndex])
                                    Set Group[(Integer A)] = (Units within 200.00 of TargetPoint[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of Caster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                                    Unit Group - Pick every unit in Group[(Integer A)] and do (Actions)
                                        Loop - Actions
                                            Unit - Cause Caster[(Integer A)] to damage (Picked unit), dealing 1.00 damage of attack type Spells and damage type Normal
                                    Custom script:   call DestroyGroup(udg_Group[bj_forLoopAIndex])
                                    Unit - Create 1 Dummy Effect for Neutral Passive at TargetPoint[(Integer A)] facing Default building facing degrees
                                    Set Integer[(Integer A)] = (Integer[(Integer A)] - 1)
                                Else - Actions
                                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        If - Conditions
                                            Integer[(Integer A)] Greater than 1
                                        Then - Actions
                                            Set Group[(Integer A)] = (Units within 1000.00 of TargetPoint[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of Caster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                                            Unit Group - Pick every unit in Group[(Integer A)] and do (Actions)
                                                Loop - Actions
                                                    Set Point[(Integer A)] = (Position of (Picked unit))
                                                    Set PointMove[(Integer A)] = (Point[(Integer A)] offset by 7.00 towards (Angle from Point[(Integer A)] to TargetPoint[(Integer A)]) degrees)
                                                    Unit - Turn collision for (Picked unit) Off
                                                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                        If - Conditions
                                                            Boolean[(Integer A)] Equal to False
                                                        Then - Actions
                                                            Custom script:   call SetUnitX( GetEnumUnit(), GetLocationX( udg_PointMove[bj_forLoopAIndex] ) )
                                                            Custom script:   call SetUnitY( GetEnumUnit(), GetLocationY( udg_PointMove[bj_forLoopAIndex] ) )
                                                        Else - Actions
                                                            Unit - Move (Picked unit) instantly to PointMove[(Integer A)]
                                                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                        If - Conditions
                                                            (((Picked unit) is in Groupcheck[(Integer A)]) Equal to False) and (((Picked unit) is alive) Equal to True)
                                                        Then - Actions
                                                            Unit Group - Add (Picked unit) to Groupcheck[(Integer A)]
                                                        Else - Actions
                                                    Custom script:   call RemoveLocation(udg_Point[bj_forLoopAIndex])
                                                    Custom script:   call RemoveLocation(udg_PointMove[bj_forLoopAIndex])
                                            Custom script:   call DestroyGroup(udg_Group[bj_forLoopAIndex])
                                            Set Group[(Integer A)] = (Units within 200.00 of TargetPoint[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of Caster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                                            Unit Group - Pick every unit in Group[(Integer A)] and do (Actions)
                                                Loop - Actions
                                                    Unit - Cause Caster[(Integer A)] to damage (Picked unit), dealing 1.00 damage of attack type Spells and damage type Normal
                                            Custom script:   call DestroyGroup(udg_Group[bj_forLoopAIndex])
                                            Set Integer[(Integer A)] = (Integer[(Integer A)] - 1)
                                        Else - Actions
                                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                If - Conditions
                                                    Integer[(Integer A)] Greater than 0
                                                Then - Actions
                                                    Set Group[(Integer A)] = (Units within 150.00 of TargetPoint[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of Caster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                                                    Unit Group - Pick every unit in Group[(Integer A)] and do (Actions)
                                                        Loop - Actions
                                                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                If - Conditions
                                                                    ((Picked unit) is A Hero) Equal to True
                                                                Then - Actions
                                                                Else - Actions
                                                                    Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency
                                                            Unit - Cause Caster[(Integer A)] to damage (Picked unit), dealing ((Real((Level of Black Hole  for Caster[(Integer A)]))) x 5000.00) damage of attack type Spells and damage type Normal
                                                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                If - Conditions
                                                                    (((Picked unit) is in Groupcheck[(Integer A)]) Equal to True) and (((Picked unit) is dead) Equal to False)
                                                                Then - Actions
                                                                    Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                                                                Else - Actions
                                                    Unit Group - Pick every unit in Groupcheck[(Integer A)] and do (Actions)
                                                        Loop - Actions
                                                            Unit - Turn collision for (Picked unit) On
                                                    Custom script:   call DestroyGroup(udg_Group[bj_forLoopAIndex])
                                                    Custom script:   call DestroyGroup(udg_Groupcheck[bj_forLoopAIndex])
                                                    Set Group[(Integer A)] = (Units within 1000.00 of TargetPoint[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of Caster[(Integer A)])) Equal to True) and (((Matching unit) is alive) Equal to True)))
                                                    Unit Group - Pick every unit in Group[(Integer A)] and do (Actions)
                                                        Loop - Actions
                                                            Unit - Turn collision for (Picked unit) On
                                                    Custom script:   call DestroyGroup(udg_Group[bj_forLoopAIndex])
                                                    Unit - Kill Dummy1[(Integer A)]
                                                    Unit - Kill Dummy2[(Integer A)]
                                                    Unit - Create 1 Wisp for Neutral Passive at TargetPoint[(Integer A)] facing Default building facing degrees
                                                    Special Effect - Create a special effect at TargetPoint[(Integer A)] using Abilities\Spells\Human\ReviveHuman\ReviveHuman.mdl
                                                    Special Effect - Destroy (Last created special effect)
                                                    Set Integer[(Integer A)] = (Integer[(Integer A)] - 1)
                                                    Custom script:   call RemoveLocation(udg_TargetPoint[bj_forLoopAIndex])
                                                Else - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            Integer[(Integer A)] Greater than 1
                        Then - Actions
                            Unit Group - Pick every unit in Groupcheck[(Integer A)] and do (Actions)
                                Loop - Actions
                                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        If - Conditions
                                            ((Picked unit) is dead) Equal to True
                                        Then - Actions
                                            Unit Group - Remove (Picked unit) from Groupcheck[(Integer A)]
                                            Unit - Turn collision for (Picked unit) On
                                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                If - Conditions
                                                    ((Picked unit) is A Hero) Equal to False
                                                Then - Actions
                                                    Set PointEffect = (Position of (Picked unit))
                                                    Unit - Remove (Picked unit) from the game
                                                    Special Effect - Create a special effect at PointEffect using Abilities\Spells\NightElf\Blink\BlinkTarget.mdl
                                                    Special Effect - Destroy (Last created special effect)
                                                    Custom script:   call RemoveLocation(udg_PointEffect)
                                                Else - Actions
                                        Else - Actions
                        Else - Actions
    [/spoil]
     

    Các file đính kèm:

  9. meomeo3101

    meomeo3101 Mr & Ms Pac-Man

    Tham gia ngày:
    3/2/07
    Bài viết:
    246
    Nơi ở:
    Hà Nội
    Hay thật! :)) về mặt làm skill mình kém lắm chỉ biết nghịch item thôi. :)) Các bạn post thêm cho mình học hỏi hì hì.
     
  10. pmtan

    pmtan Youtube Master Race

    Tham gia ngày:
    1/11/09
    Bài viết:
    86
    Nơi ở:
    Lonely World
    Không có bạn nào giúp mình làm skill có sử dụng unit group ah?
     
  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 hãy nói rõ ra, cụ thể là set unit group, deal damage hay add unit...v..v..
     
  12. pmtan

    pmtan Youtube Master Race

    Tham gia ngày:
    1/11/09
    Bài viết:
    86
    Nơi ở:
    Lonely World
    Các spell có sử dụng unit group ấy, như set unit group rồi cho unit group đó chịu 1 effect như: unit group xung quanh caster chịu effect burn chẳng hạn. Nhân tiện bạn đưa ra 1 số cách set unit group thông dụng nha. Thanks.
     
  13. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    Chậc, quên mất cái vụ giám khảo, để qua tới hôm nay. Nhưng mà các bạn làm mình thất vọng quá, không ai post spell, cũng không ai chấm điểm thì lấy đâu ra giám khảo với spell để mà chấm. Không lẽ một mình mình làm hết. Chán! Mong tuần này các bạn tích cực hơn :|.
     
  14. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    Từ từ đã bác, phải cho thời gian suy nghĩ chứ :| Các spell đòi hỏi đẹp mắt, ấn tượng, chứ mấy spell xoay tròn, lướt, nhảy ra nhảy vào trên web có nhiều rồi. Mà cũng thất vọng thật, có mỗi mình, raivor, WordEditor là đóng góp spell :|
     
  15. pmtan

    pmtan Youtube Master Race

    Tham gia ngày:
    1/11/09
    Bài viết:
    86
    Nơi ở:
    Lonely World
    Mình đang nhờ mấy bạn giúp hướng dẫn skill sử dụng unit group mà có thấy ai post gì đâu. Mấy ngày hôm nay lên 4rum rồi lại thất vọng. :(
     
  16. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    có mấy spell có unit group rồi mà, như spell Rock's Dance của mình chẳng hạn, bạn coi qua thử xem, không hiểu gì về unit group thì hỏi, chứ bạn hỏi chung chung thế khó mà trả lời
     
  17. pmtan

    pmtan Youtube Master Race

    Tham gia ngày:
    1/11/09
    Bài viết:
    86
    Nơi ở:
    Lonely World
    Mình cần các bạn hướng dẫn các unit group như: set unit group trước mặt hero khoảng X range, unit group chịu ảnh hưởng của skill này nhưng chịu buff của skill khác, unit group xung quanh điểm cast v.v...
     
  18. faustviii

    faustviii Mr & Ms Pac-Man

    Tham gia ngày:
    28/1/09
    Bài viết:
    110
    Tự tìm đi.
    cứ set biến unit group sẽ có mấy cái đấy.
    Nói thật là mình rất ngại up ảnh :<.
    Spell mình có khoảng 3,4 cái :-??
     
  19. DylandKyo

    DylandKyo Donkey Kong

    Tham gia ngày:
    28/10/10
    Bài viết:
    358
    Cho e hỏi: Làm thế nào khi 1 unit bị dính spell sẽ bị bay lên trời, khi rơi xuống mới bị dính dame ???
     
  20. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    ---------------Thông Tin---------------
    Tên Spell: Nhảy
    Mô tả: khi cast spell hero sẽ nhảy đến vị trí cast.
    Hình ảnh:
    [spoil][​IMG]
    [​IMG][/spoil]
    Số Trigger: 3
    Có MUI.
    Biến dùng đến:
    NCaster ([Array]): Unit
    NPoint & NPoint2-4 ([Array]): Point
    NHieght & NRate & NDistancce & Nx ([Array]): Real
    NDem & Ny ([Array]), Ni & NValue : Integer
    NGroup : Unit Group
    --------------Trigger---------------
    Trigger 1
    Mã:
    Events
        Unit - A unit Starts the effect of an ability [COLOR="red"]//Khi hero cast spell[/COLOR]
    Conditions
        (Ability being cast) Equal to Nhay [COLOR="red"]//Spell đó phải là "Nhay"[/COLOR]
    Actions
        Set Ni = (Ni + 1) [COLOR="red"]//Mỗi lần cast spell thì Ni sẽ bằng chính nó + 1, như vậy lần thứ 2 Ni = 2 (tức là ban đầu Ni = 0, sau lần cast thứ nhất Ni = 0 + 1 = 1, như vậy Ni = 1, và lần thứ 2,ta thế Ni = 1 vào bt Ni = Ni + 1 (ở đây ta không xét tới Ni ở đầu), ta có: Ni = 1 + 1 = 2 và cứ tiếp tục như vậy, Ni = 3 sau lần cast thứ 3, Ni = 4 sau lần thứ 4...) [/COLOR] 
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Ni Greater than or equal to 500 [COLOR="red"]//Nếu cast đến lần thứ 500, tức là Ni = 500[/COLOR]
            Then - Actions
                Set Ni = 0 [COLOR="red"]//Thì Ni = 0[/COLOR]
            Else - Actions
        Set NCaster[Ni] = (Triggering unit) [COLOR="red"]//Ta gán biến NCaster là hero cast phép (có thể coi là vận động viên nhảy cao + nhảy xa, như kiểu (cho trí tưởng tượng) bay cao bay xa hơn ~~~)[/COLOR]
        Set NPoint[Ni] = (Position of NCaster[Ni]) [COLOR="red"]//Gán biến NPoint là vị trí của Caster[/COLOR]
        Set NPoint2[Ni] = (Target point of ability being cast) [COLOR="red"]//Gán biến NPoint2 là cái chỗ mà các bạn click chuột rồi hero bay tới đó đó.[/COLOR]
        Set NDistance[Ni] = (Distance between NPoint[Ni] and NPoint2[Ni]) [COLOR="red"]//Gán biến NDistance là khoảng cách giữa vị trí của vdv tới cái chỗ các bạn click và nó là 1 con số, không những thế nó còn là số thực nữa, sợ chưa.[/COLOR]
        Set NRate[Ni] = (NDistance[Ni] x 2.00) [COLOR="red"]//Gán biến NRate bằng biến NDistance (khoảng cách của 2 cái khỉ kia (NPoint với NPoint2 đấy) nhân với 2. Cái này là tốc độ nhảy. (Thực ra chỉ gán chơi thôi)[/COLOR]
        Set NHeight[Ni] = 5000 [COLOR="red"]//Gán biến NHeight bằng 5000, cái này là độ cao tối đa bạn trẻ ấy có thể đạt được (mình tin là bạn ấy sẽ chẳng bao giờ nhảy tới cái độ cao này đâu gán cho vui thôi).[/COLOR]
        Set Nx[Ni] = 0.00 [COLOR="red"]//Gán biến Nx = 0, Nx là 1 số thực bằng 0.[/COLOR]
        Set Ny[Ni] = 1 [COLOR="red"]//Gán biến Ny = 1, Ny là 1 số nguyên bằng 1.[/COLOR]
        Set NDem[Ni] = 0 [COLOR="red"]//Gán biến NDem = 0, NDem là 1 số nguyên bằng 0 và dùng để đếm (tiền).[/COLOR]
        [COLOR="blue"]For each (Integer A) from 1 to 100, do (Actions) [COLOR="red"]//Lặp 100 (có thể nhiều hơn, 999999 chẳng hạn) lần trong n/s (chú thích: n là tốc độ xử lý của máy tính, có thể là vài s = =, hoặc 0.0000000000000000000000000000001s ai mà biết được) [/COLOR]
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        NRate[Ni] Greater than ((NDistance[Ni]) x 2.00) [COLOR="red"]//Nếu biến NRate lớn hơn NDistance (khoảng cách của P1 và P2).[/COLOR]
                    Then - Actions
                        Set NDem[Ni] = NDem[Ni] [COLOR="red"]//Thì NDem sẽ = chính nó tức là nó bằng nó tức là nó sẽ không tăng nữa cho nên mới bằng nó.[/COLOR]
                    Else - Actions
                        Set NDem[Ni] = (NDem[Ni] + 1) [COLOR="red"]//Cái này sẽ làm cho biến NDem tăng lên từng thế kỉ, từng thập kỉ, từng năm, từng tháng, từng ngày, từng giờ, từng phút, từng giây cho đến khi điều kiện trên kia đúng (dòng này đang thuộc phần Else của If các bạn ạ).[/COLOR]
                        Set NRate[Ni] = (NRate[Ni] - (Nx[Ni] x (Real(Ny[Ni])))) [COLOR="red"]//NRate bằng chính nó - đi Nx "người" với Ny. Nhìn là biết.[/COLOR]
                        Set Nx[Ni] = (Nx[Ni] + 10.00) [COLOR="red"]//Cái này thì cũng NHÌN LÀ BIẾT.[/COLOR]
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                NRate[Ni] Less than or equal to 0.00 [COLOR="red"]//Nếu biến NRate bị trừ hết cho đến khi nhỏ hơn 0 (chắc chắn là nó sẽ nhỏ hơn 0 chứ ít khi (never) bằng 0 lắm)[/COLOR]
                            Then - Actions
                                Set Ny[Ni] = -1 [COLOR="red"]//Cái này để đảo chiều, từ trừ thành cộng.[/COLOR]
                            Else - Actions[/COLOR]
        Set NRate[Ni] = (NDistance[Ni] x 2.00)[COLOR="red"]||[/COLOR]
        Set Nx[Ni] = 0.00                             [COLOR="red"]}} gán lại các giá trị, vì dòng if ở trên đã làm thay đổi tất cả[/COLOR]
        Set Ny[Ni] = 1                               [COLOR="red"] ||[/COLOR]
        Unit - Turn collision for NCaster[Ni] Off [COLOR="red"]//Tắt collision làm cho hero có thể đi đến bất cứ nơi đâu, bay tới bất cứ phương trời nào, không gặp kỳ đà cũng như gậy gộc.(phải vậy hông ta, không biết nữa = =)[/COLOR]
        Unit - Create 1 Dummy for (Owner of NCaster[Ni]) at NPoint[Ni] facing Default building facing degrees [COLOR="red"]//Rốt cuộc cũng phải tạo 1 dummy để MUI.[/COLOR]
        Unit Group - Add (Last created unit) to NGroup [COLOR="red"]//MUI[/COLOR]
        Unit - Set the custom value of (Last created unit) to Ni [COLOR="red"]//MUI[/COLOR]
        Unit - Add Crow Form to NCaster[Ni] [COLOR="red"]//Thêm kĩ năng nhảy cho hero, không có dòng này coi như anh ấy bị hớ, vẫn nhảy ầm ầm nhưng không nhấc chân lên cao hơn mặt đất được thôi. Và vì có dòng này cho nên tài năng của vdv này coi như là nhân tạo, không phải bẩm sinh mà có. [/COLOR]
        Unit - Remove Crow Form from NCaster[Ni] [COLOR="red"]//Bỏ nó đi, không nhìn chướng mắt lắm.[/COLOR]
        Animation - Change NCaster[Ni]'s animation speed to 0.00% of its original speed [COLOR="red"]//Làm cho vdv bất động, góp phần giữ thăng bằng khi bay nhảy. Không nó múa loạn lên.[/COLOR]
        Special Effect - Create a special effect at NPoint[Ni] using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl [COLOR="red"]//Đất nứt[/COLOR]
        Special Effect - Destroy (Last created special effect)
        Special Effect - Create a special effect at NPoint[Ni] using Objects\Spawnmodels\Naga\NagaDeath\NagaDeath.mdl [COLOR="red"]//Đất bị nứt trúng mạch nước ngầm nên nước bị đẩy lên văng tung tóe, mỗi khi nhảy là sẽ có, có khi các bác dò tìm mạch nước ngầm lại mời vdv này tới làm cho họ cũng nên.[/COLOR]
        Special Effect - Destroy (Last created special effect) 
        Trigger - Turn on Nhay <gen> [COLOR="red"]//Turn on là mở, Nhay là trigger 2, có nghĩa là "(tự ghép lại)"[/COLOR]
        Trigger - Turn on Move <gen>[COLOR="red"]//Turn on là mở, Move là trigger 3, có nghĩa là "mở trigger thứ 3 có tên là move".[/COLOR]
    Trigger 2
    Mã:
    Events
        Time - Every 0.04 seconds of game time [COLOR="red"]//Mỗi 0.04s[/COLOR]
    Conditions
    Actions
        Unit Group - Pick every unit in NGroup and do (Actions)
            Loop - Actions
                Set NValue = (Custom value of (Picked unit)) [COLOR="red"]//MUI[/COLOR]
                Set NRate[NValue] = (NRate[NValue] - (Nx[NValue] x (Real(Ny[NValue])))) [COLOR="red"]//Tốc độ nhảy sẽ bằng chính nó - biến Nx nhân với biến Ny, cái này dùng để làm cho tốc độ bị giảm từ từ đến khi không còn lên cao đươc nữa.[/COLOR]
                Set Nx[NValue] = (Nx[NValue] + 10.00) [COLOR="red"]//Biến Nx sẽ tăng lên dần -> NRate sẽ bị giảm ngày càng nhánh, như vậy sẽ có được hiệu ứng vật lý: càng lên cao thì càng chậm lại.[/COLOR]
                Animation - Change NCaster[NValue] flying height to NHeight[NValue] at NRate[NValue] [COLOR="red"]//này thì nhảy này.[/COLOR]
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        NRate[NValue] Less than or equal to 0.00 [COLOR="red"]//Nếu tốc độ bị giảm nhỏ hơn 0.[/COLOR]
                    Then - Actions
                        Set NHeight[NValue] = 0.00 [COLOR="red"]//Thì độ cao sẽ bằng 0 tức là cho nó xuống lại.[/COLOR]
                        Set Ny[NValue] = -1 [COLOR="red"]//Đảo chiều phép tính của (NRate[NValue] - (Nx[NValue] x (Real(Ny[NValue])))) từ trừ thành cộng.[/COLOR]
                        Set Nx[NValue] = 100.00 [COLOR="red"]//Cho Nx còn 100.[/COLOR]
                    Else - Actions
    Trigger 3
    Mã:
    Events
        Time - Every 0.01 seconds of game time [COLOR="red"]//mỗi 0.01s làm vậy cho nó mượt.[/COLOR]
    Conditions
    Actions
        Unit Group - Pick every unit in NGroup and do (Actions)
            Loop - Actions
                Set NValue = (Custom value of (Picked unit)) [COLOR="red"]//MUI[/COLOR]
                Set NPoint3[NValue] = (Position of NCaster[NValue]) [COLOR="red"]//Vị trí của vdv được kiêm tra theo từng 0.01s. [/COLOR]
                Set NPoint4[NValue] = (NPoint3[NValue] offset by [COLOR="blue"](NDistance[NValue] / ((Real(NDem[NValue])) x 5.00))[/COLOR] towards (Angle from NPoint[NValue] to NPoint2[NValue]) degrees) [COLOR="red"]//Vị trí cách vị trí của vdv 1 khoảng = [B](NDistance[NValue] / ((Real(NDem[NValue])) x 5.00))[/B] với góc từ vị trí của vdv lúc cast spell tới vị trí click. Có thể thay NPoint = NPoint3 cũng không sao.[/COLOR]
                Unit - Move NCaster[NValue] instantly to NPoint4[NValue] [COLOR="red"]//Move[/COLOR]
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Distance between NPoint3[NValue] and NPoint2[NValue]) Less than or equal to 10.00 [COLOR="red"]//Nếu khoảng cách giữa vdv và vị trí click nhỏ hơn hoặc bằng 10 ...[/COLOR]
                    Then - Actions
                        Animation - Change NCaster[NValue]'s animation speed to 100.00% of its original speed [COLOR="red"]//..thì làm animation của vdv trở lại bình thường, thích múa cái gì thì múa.[/COLOR]
                        Unit Group - Remove (Picked unit) from NGroup [COLOR="red"]//MUI[/COLOR]
                        Custom script:   call RemoveLocation(udg_NPoint[udg_NValue]) [COLOR="red"]//Remove Leak[/COLOR]
                        Custom script:   call RemoveLocation(udg_NPoint2[udg_NValue]) [COLOR="red"]//Như trên.[/COLOR]
                        Custom script:   call RemoveLocation(udg_NPoint3[udg_NValue]) [COLOR="red"]//Như trên.[/COLOR]
                        Custom script:   call RemoveLocation(udg_NPoint4[udg_NValue]) [COLOR="red"]//Như trên.[/COLOR]
                        Set NCaster[NValue] = No unit [COLOR="red"]//Không gán NCaster cho vdv nữa.[/COLOR]
                        Unit - Turn collision for NCaster[NValue] On [COLOR="red"]//Bật lại collision[/COLOR]
                    Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Number of units in NGroup) Equal to 0 [COLOR="red"]//Nếu cái nhóm đó đó bị giải tán.[/COLOR]
            Then - Actions
                Trigger - Turn off (This trigger) [COLOR="red"]//Tắt trigger này.[/COLOR]
                Trigger - Turn off Nhay <gen> [COLOR="red"]//Tắt cả cái trigger kia nữa.[/COLOR]
            Else - Actions
    Xong. Và cuối cùng cho mình được hỏi các bạn phần mình bôi xanh trên kia, hay có thể xem dưới đây, dùng để làm gì?
    Mã:
    For each (Integer A) from 1 to 100, do (Actions)
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        NRate[Ni] Greater than ((Distance between NPoint[Ni] and NPoint2[Ni]) x 2.00)
                    Then - Actions
                        Set NDem[Ni] = NDem[Ni]
                    Else - Actions
                        Set NDem[Ni] = (NDem[Ni] + 1)
                        Set NRate[Ni] = (NRate[Ni] - (Nx[Ni] x (Real(Ny[Ni]))))
                        Set Nx[Ni] = (Nx[Ni] + 10.00)
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                NRate[Ni] Less than or equal to 0.00
                            Then - Actions
                                Set Ny[Ni] = -1
                            Else - Actions
    Mã:
    (NDistance[NValue] / ((Real(NDem[NValue])) x 5.00)) //Tại sao lại có công thức này?
    Khi nào các bạn trả lời được 2 câu hỏi này mình sẽ up map demo.
     

Chia sẻ trang này