Topic Post Spell

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

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

    ducthai Donkey Kong

    Tham gia ngày:
    27/2/06
    Bài viết:
    334
    Nơi ở:
    Biên Hòa - Trảng Bom
    Chào Các Bạn ;;)

    Hi`hi` mình thấy dạo này có 1 số gà hỏi về cách tạo spell = trigger hay nói chung là mấy cái cơ bản , nên mình quyết định lập Topic này với mục đích : Topic Post Spell của anh em trong 4rum vào và hướng dẫn , giải thích cách làm để cho gà có thể dễ dàng học hỏi và chia sẻ thêm kinh nghiệm làm Spell cho mọi người (mỗi người có 1 cái hay riêng mà đúng ko :D)

    Có lẽ nên có 1 vài yêu cầu của Topic này và chế độ thưởng khi Post nữa chứ nhỉ :D :

    1) Các bạn có Spell nào hay (tự làm chứ đừng là Spell của người khác nhé) thì Post lên cho mọi người cùng tham khảo học hỏi những cái hay.
    2) Khi Post Spell thì bắt buộc phải có hình ảnh đi kèm theo để mô tả rõ ràng cho các bạn Gà biết và giải thích rõ ràng 1 tí xíu , nhớ kèm theo cả Trigger nữa nhé
    3) Khi 1 ai đó Post Spell gì đó mà có kèm theo hình ảnh và hướng dẫn rõ ràng đàng hoàng thì Phần thưởng là gì nhỉ : Anh em trong Topic + Rep cho bạn đó đễ cho chúng ta từ "Tiểu tốt vô danh" thành "Khí chất Bất Khuất" nhé :D
    Chỉ có 3 yêu cầu đơn giản vậy thui OK nhé b-)
    (bạn nào có ý định post spell mà ko làm kèm theo hình ảnh và hướng dẫn thì đừng post nhé , mất công lắm mà lại làm xấu Topic nửa và cũng ko đc + Rep luôn)
    Ah wên mất còn 1 yêu cầu nhỏ nữa là những gà phải có thời gian thao khảo World Editor hơn 1 tuần để rành về mấy phần Dummy , Spell cơ bản và có một ít vốn tiếng anh nhé.

    Vì đây là Post spell và hướng dẫn cách làm Spell cho Gà nên chúng ta sẽ làm từ những cái cơ bản nhất nhé rùi từ từ sẽ lên cao thêm 1 tí rùi cứ vậy mà tăng dần.

    Đầu tiên chủ Topic xin mở hàng = 1 spell khá đơn giản và rất cơ bản :D :
    Name Spell : (tên tùy ý các bạn vì đây chỉ là spell hướng dẫn cơ bản thui mà)
    Target Type : Target Unit
    Mô Tả : Mountain King ném 1 cái búa vào người đối thủ và gây damage stun 5s và có mưa sao băng rơi xuống đè bể đầu đối thủ trong 5s
    Và sau đây là hình ảnh đi kèm :
    [​IMG]
    [​IMG]

    Vậy là xong phần giới thiệu roài b-( Tiếp đến là Post Trigger và cách làm :
    Mã:
    spell vd
        Events
            Unit - A unit Starts the effect of an ability
        Conditions
            (Ability being cast) Equal to Spell VD 
        Actions
            Set Caster = (Triggering unit)
            Set Target = (Target unit of ability being cast)
            Set TargetPoint = (Position of Target)
            Unit - Create 1 Dummy Unit for (Owner of Caster) at TargetPoint facing Default building facing degrees
            Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
            Unit - Order (Last created unit) to Human Archmage - Blizzard TargetPoint
            Custom script:   call RemoveLocation(udg_TargetPoint)
    Và bây giờ là cách làm Spell :

    như các bạn nhìn trên hình thì rõ ràng là Spell đang sử dụng là Spell Storm Bolt của Muontainking vậy chúng ta sẽ bắt đầu tạo 1 custom spell base(cơ bản,bắt đầu) từ Storm Bolt và Name thì tùy ý , ở đây mình đặt Name là Spell VD , có lẽ ko cần chỉnh sửa nhìu , chỉ cần sửa lại
    Stats - Duration - Hero là 5s là đc còn về Data - Damage , Cooldown , Mana cost thì tùy ý các bạn.
    Tiếp theo là tạo spell mưa sao băng như trong hình : spell mưa sao băng trong đây chính là spell Blizzard của Archmage , chúng ta cũng tạo custom spell và chỉnh sửa thêm 1 số thứ nữa : đầu tiên là
    Stats - Hero Ability False (chuyển từ ability của Hero thành Ability của Unit ) sau đó
    Damage và Wave thì tùy ý các bạn
    chỉnh Stats - Mana = 0 (mana = 0 vì ta sẽ Add skill này cho con Dummy của ta mà con dummy thì ko có mana ) típ theo là
    Stats - Targets Allowed Air,enemy,ground,debris,neutral,organic (để cho skill này chỉ tác dụng với đối phương thôi) , vậy là xong phần Ability rùi.

    Tiếp đến là tạo 1 dummy(hình nộm) có lẽ mình nên giải thích về con Dummy này : Dummy là 1 Unit đc tạo ra thường là ko có hình dạng (ko thấy đc) ko đánh đc, ko có bóng luôn , mục đích tạo ra dummy ở đây là dùng nó để Cast thêm Spell giùm mình (vì 1 Unit thì chỉ có thể Cast 1 Spell thui chứ đâu thể cùng lúc Cast nhìu Spell đúng ko :-" ) con dummy có thể base từ bất kì Unit nào cũng đc nhưng ko đc là Hero đâu nhé OK:-*
    Và bây giờ ta sẽ tạo 1 con dummy với tên tùy ý , ở Spell dưới kia mình đặt tên là Dummy Spell base từ Footman và mình chình sửa :
    Abilities - Normal Locust , Blizzard Dummy (add thếm 2 ability cho dummy , Locust chính là ability làm cho dummy ko điều khiển đc , ko ai đánh đc(bất tử) có thể đi xuyên người đc , Blizzard Dummy chính là ability mưa sao băng mà lúc nãy chúng ta tạo ra) . tiếp theo là
    Art - Deathtime(secord) 0.10 (thời gian chết của dummy)
    Art - Model File .mdl (model .mdl để dummy ko có hình dạng)
    Art - Shadow image(unit) None
    Combat - Attack Enabled None (dummy ko đánh đc)
    Combat - Death Type Can't raise,Does not decay (khi chết dummy biến mât luôn khỏi quơ tay quơ chân gì hết )
    Movement Speed - base 0 (dummy ko di chuyển đc)
    Movement Speed Type Fly (với Type Fly dummy có thể di chuyển hoặc xuất hiện ở bất cứ đâu)
    Stats - Food Cost 0 (dummy ko mất Food)
    OK vậy là xong con dummy.

    Bây giờ chúng ta bắt tay Vào Trigger Editor (F4)
    Có lẽ các bạn nên bít sử dụng Variables (biến) : nói nôm na là nó giống như Set x=y , y=z vậy và nó đc sử dụng ko thể thiếu trong Trigger , dùng nó để xóa Leak........ cái này khi khác nói.
    đầu tiên các bạn mở phần Variableds (Ctrl + B) và tạo các Variabled giống như hình trên
    [​IMG]
    Và sau đó là Copy hay là viết cái Trigger vào sao cho giống như bên trên mình Post là đc roài
    [​IMG]

    Và bậy giờ là đên phần giải thích rõ cho Gà biết tại sao lại như vậy :D :
    khi ta có dự tính làm 1 spell nào đó thì phải tính toàn rõ ràng trong đấu mình sẽ làm cái gì và sẽ thực hiện ra sao , spell cần những gì và . . ........
    có lẽ về spell thì ko cần phải nói rùi vì toàn là tiếng anh ko , mình sẽ giải thích về phần Trigger , đấu tiên là :
    Mã:
    Events
        Unit - A unit Starts the effect of an ability
    "một Unit bắt đầu hiệu ứng của 1 Ability" khi làm Spell thì Event (sự kiện) thường là như vậy.
    Mã:
    Conditions
        (Ability being cast) Equal to Spell VD 
    Condition (điều kiện) để xảy ra , "Spell đang Cast là Spell VD"
    Mã:
    Actions
    (thực hiện hành động khi sự kiện sảy ra và đủ điều kiện)
    Mã:
    Set Caster = (Triggering unit)
        Set Target = (Target unit of ability being cast)
        Set TargetPoint = (Position of Target)
    Set Variabled ở đây là để ta xác định rõ Unit và TargetPoint để dễ dàng xóa Leak

    Mã:
    Unit - Create 1 Dummy Unit for (Owner of Caster) at TargetPoint facing Default building facing degrees
    "tạo 1 Dummy Unit (con dummy khi nãy ta tạo ra) của (thuộc Caster) tại TargetPoint hướng về ..... cái này thì nhìn là hỉu mà đúng ko
    Mã:
    Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
    Khi ta tạo dummy ra thi ta phải sử dụng câu lenh này để xóa con dummy đi (add 5s thời gian sống cho con Unit vừa tạo ra)
    Mã:
    Unit - Order (Last created unit) to Human Archmage - Blizzard TargetPoint
    Ra lệnh cho dummy sử dụng ability tấn công vào TargetPoint
    Mã:
    Custom script:   call RemoveLocation(udg_TargetPoint)
    đây là 1 dòng jass đc dùng để xóa Leak Point vì nếu khi ta tạo ra Point mà ko xóa thì dần dần sẽ gây ra Leak và làm tổn thất bộ nhớ Ram của máy và sẽ dẫn đến Lag

    Có lẽ các bạn nên tham khảo bài viết về Memory Leak và Custom Script của Anh Tom_kazanky (ghê thật hơn mình có 2 tuổi thui mà giỏi thế nhỉ) :http://forum.gamevn.com/showthread.php?t=475215

    Vậy là Tạm thời xong roài mệt ghê luôn , lần sau Post mình sẻ ko phải nhắc lại mấy khái niệm cơ bản như trên kia nữa đúng ko :D và mình sẽ chỉ cần Post cách làm và giải thích Trigger thui nhỉ :D

    Ah lưu ý nho nhỏ là chủ Topic dạo này hết tiền nên ít khi ra mạng đc nên cũng it khi Post Spell hướng dẫn đc , cỡ khoảng 1-2 tuần mới ra đc tùy theo tình hình tài chính :D , lâu lâu về nhà thì có nhìu Time làm Spell hơn nên có thể có lúc Post 2-3 Spell cùng lúc luôn vì thế hên xui nhé :D
     

    Các file đính kèm:

  2. NgacNhienChua!!

    NgacNhienChua!! Mr & Ms Pac-Man

    Tham gia ngày:
    8/1/09
    Bài viết:
    113
    Pác ơi, pác chơi ngoài net àh :D, ò thì 2 cái biến Caster với Target cũng nên set về null, vả lại cũng nên giải thích thêm về câu lệnh nữa cho các bạn Gà ( (_ _)! nghe kì vãi :D ) biết nữa

    Ví dụ : Add a 5s .... --> để làm gì ? - TL: Để gán thời gian cho Dumy, hết thời gian 5s sẽ tự đông remove Dumy đó đi

    1 câu cúi là.....post spell = Jass ? Cóa đươc hem :D, vì topic post spell nên ai cần spell thì vào xem cái nào ưng thì lấy rùi creadit, hoặc vào học hỏi cách làm spell :D
     
  3. Meteor95

    Meteor95 Mario & Luigi

    Tham gia ngày:
    27/4/07
    Bài viết:
    861
    Jass thì đã chả cho gà bạn ạ,nhìu người pro GUI có khi còn ko bít ji về JASS cơ
     
  4. ducthai

    ducthai Donkey Kong

    Tham gia ngày:
    27/2/06
    Bài viết:
    334
    Nơi ở:
    Biên Hòa - Trảng Bom
    Uh thì đúng là mình chơi ngoài Net nên cử phải làm 1 nửa rùi lưu lại luôn trên Topic (sợ mất điện thì thành công cốc) nên lúc nãy bạn NgacNhienChua Post bài đúng lúc mình đang Post dở :D
    Còn cái Set Biến về Null thì mình ko bit cái đó , bạn có thể giải thích cho mình cái đó tác dụng như thế nào ko :|
    Hic mà Post Spell = jass thì chịu , mình ko bít làm , Topic này Post Spell và cách làm hướng dẫn cho Gà thui nhưng mà bác có Spell = Jass thì cứ Post với mục đích giới thiệu Spell cho anh em Download thui chứ Trigger còn chưa xong thì nói chi đến Jass.
     
  5. game_war48

    game_war48 Dragon Quest

    Tham gia ngày:
    7/9/08
    Bài viết:
    1,320
    Nơi ở:
    Ice City
    +REP cho ducthai.
    ___________________________________________
    Bởi vì khi ta set bất cứ một biến nào (trừ biến real và integer) thì nó sẽ lưu lại trong bộ nhớ và sẽ làm "tốn" RAM của máy. Tích trữ lâu dần càng hao Ram thì nó sẽ gây ra hiện tượng giật và nhiều hơn thế là treo máy=)).

    P/s: Sửa chữ "Gà" thành "newbie" nghe hay hơn/:).
     
  6. DarkKing2828

    DarkKing2828 Youtube Master Race

    Tham gia ngày:
    20/3/09
    Bài viết:
    69
    bài viết có ích +REP
    30 charrrrrrrrrrrrrrrrr
     
  7. Diệp Thanh

    Diệp Thanh Kirin Tor Moderator Lão Làng GVN

    Tham gia ngày:
    7/2/04
    Bài viết:
    4,262
    biến global thì không cần null đâu bạn...dùng VJASS thì lợi hơn, biến đều xài local cả !
     
  8. ducthai

    ducthai Donkey Kong

    Tham gia ngày:
    27/2/06
    Bài viết:
    334
    Nơi ở:
    Biên Hòa - Trảng Bom
    Cảm ơn mọi người đã + Rep :D, ko chỉ mình mà bất cứ ai Post Spell kèm theo hình ảnh và hường dẫn rõ ràng đều đc anh em trong Topic + Rep , ai có Spell nào hay thì cứ Post vào để làm giàu nguồn Spell cho 4rum ko nhất thiết cứ phải là chủ Topic đâu ;;)

    Nói chung Spell trong đây tạm thời nên sài Spell = GUI và MUI thui chứ Jass hay VJass thì có lẽ ko nên vì toàn Gà vào đây tham khảo => đang học GUI và MUI mà , mình cũng là Gà mà , hồi xưa khi học Spell nếu có 1 bài viết như trên thì dễ hỉu hơn và tốc độ học cũng nhanh hơn.

    Hic làm spell xong Up len 4rum mới nhớ ra thiếu 1 cái đó là Set lv (đãng trí quá) thôi hứa hẹn là Spell sau sẽ có phần Set lv :-*
     
  9. Meteor95

    Meteor95 Mario & Luigi

    Tham gia ngày:
    27/4/07
    Bài viết:
    861
    Em post típ 1 spell đơn giản nha,tên là Flame Teleportation(hay gọi ngắn là Fire Teleport)
    Ai thấy hay thì rep nhớ(bấm vào cái cân ở bài viết này)
    Bước 1.
    _Tạo 1 ability mới,base từ Blink
    _Chỉnh thông số ability mới cho phù hợp
    _Tooltip mẫu:Teleport to one point and burn the area where you first stand and the area that you teleport to(có thể sai đấy)

    Bước 2.
    _Tạo ability mới,base từ Flamestrike và chỉnh thành ability của unit(chọn Hero Ability False)
    _Chỉnh mana cần dùng của ability thành 0(để dummy có thể sử dụng)
    _Cho lv của ability này = ability đã tạo trước đó(Fire Teleport)
    _Chỉnh target allowed:để lại ground,enemy,air(có thể thêm tree vào)
    _Chỉnh thông số khác cho phù hợp

    Bước 3
    _Tạo dummy mới,cho model là x.mdl(thay x = gì tùy ý)hoặc chọn cái ngọn lửa trong spawn effect hay lửa trong doodad vì nó cũng là lừa,ko sợ bị lộ là dummy
    _Set cho dummy mới tạo ability Invulnerable,Locust và cái flamestrike mới tạo ở trên

    Bước 4
    _Tạo biến FireCaster,Firedummy với dạng unit
    Lưu ý:FireTeleport ở đây chính là tên ability(blink),Fire dummy chính là dummy vừa tạo,Flamestrike là ability flamestrike của dummy
    _chép trigger vào và xài thôi
    Đợi tý em up cho
    Ai thích nhớ rep nha(nhắc lại lần 2 đấy)
    [​IMG]
     
  10. Meteor95

    Meteor95 Mario & Luigi

    Tham gia ngày:
    27/4/07
    Bài viết:
    861
    Em xin phép mọi người viết típ
    Spell này cũng gần giống của đức thái,chỉ khác là thay blizzard=frost nova
    Các bước chính hầu hết vẫn như spell trên
    Base ability của hero là storm bolt(hoặc firebolt) còn của dummy là frost nova
    tạo dummy như spell trên
    Típ tục với bước 4 luôn nha
    _Varible cần tạo:fbn_caster:unit
    fbn_dummy:unit
    fbn_target:unit
    Cuối cùng,chép trigger sau
    Mã:
    Nova Bolt
        Events
            Unit - A unit Starts the effect of an ability
        Conditions
            (Ability being cast) Equal to Nova Bolt 
        Actions
            Set fnb_caster = (Casting unit)
            Set fnb_target = (Target unit of ability being cast)
            Unit - Create 1 Nova Dummy for (Owner of fnb_caster) at (Position of fnb_target) facing Default building facing degrees
            Set fnb_dummy = (Last created unit)
            Unit - Set level of Nova Bolt  for fnb_dummy to (Level of Nova Bolt  for fnb_caster)
            Unit - Order fnb_dummy to Undead Lich - Frost Nova fnb_target
            Wait 1.00 seconds
            Unit - Remove fnb_dummy from the game
    
    Lần này có cả map demo,mọi người hảo tâm rep cho em nha
     

    Các file đính kèm:

    • FNB.rar
      Kích thước:
      15.7 KB
      Đọc:
      111
  11. rongdoVN

    rongdoVN Space Marine Doomguy Lão Làng GVN

    Tham gia ngày:
    6/9/05
    Bài viết:
    5,667
    Nơi ở:
    TS-Pri GameVN
    sao cái trên ko có map demo thế :|
     
  12. ducthai

    ducthai Donkey Kong

    Tham gia ngày:
    27/2/06
    Bài viết:
    334
    Nơi ở:
    Biên Hòa - Trảng Bom
    Oh rất cảm ơn bài viết của bạn Meteor95 :D
    Lưu ý bạn 1 tí là sao ko nói thêm về tác dụng , cách xài spell.
    VD như là spell Fire Teleport thì là : Casting Unit Blink đến 1 Point bất kí và tạo ra 2 Flame Strike ở 2 Point (Position of Casting Unit và Position of Target Point of Ability Being Cast)

    Có lẽ lần sau ko cần phải Post chi tiết về mấy Spell tạo rùi add cho Dummy mà chỉ cần nói tạo ra Spell đó add cho dummy với mục đich gì thui , và giải thích Trigger là quan trọng nhất vì Spell add cho Dummy thì gà coi tự hỉu rùi còn Trigger thì có lẽ phải giải thích thêm .

    Chủ Topic vừa nghĩ ra 1 vài Spell đon giản nữa nhưng chỗ Net đang ngồi ko mở đc World Editor (ko có CDKey) nên đành chịu vậy , để bữa khác :D

    sao mình + Rep cho Meteor95 ko đc vậy , nó toàn hiện lên dòng chữ như thế này :You have give out too much Reputation in the last 24 hours , try again later
    Làm sao đây :-o
     
  13. game_war48

    game_war48 Dragon Quest

    Tham gia ngày:
    7/9/08
    Bài viết:
    1,320
    Nơi ở:
    Ice City
    Nó giới hạn +Rep trong 1 ngày, nếu cộng nhiều thì sẽ kô đc cộng tiếp cho đến 24 giờ sau.
     
  14. DarkKing2828

    DarkKing2828 Youtube Master Race

    Tham gia ngày:
    20/3/09
    Bài viết:
    69
    mình post chiu Critical X của Blake trong DDay đây ( tui làm thì ko giống lắm )
    bước 1 tạo ability cho Hero
    Chiu Base là Storm Bolt hay gì cũng đc miễn là target unit
    chỉnh damage = 0
    Duration = 0,1 ( 0s thì stun forever đó )
    Tooltip tui quên rồi

    Bước 2 Tạo dummy
    tạo dummy con nào cũng đc ko biết đánh ( tốt nhất là wisp )
    cho thêm ability Locust cho dummy
    model thì là zone indicator ( Custom Campain )
    Stats - Unit Classification bỏ phần worker đi

    bước 3
    tạo spell cho dummy
    chiu là fire bolt
    chỉnh cho mana cost = 0
    rồi làm level nhiêu thì tùy

    bước 4 tạo varibles
    Caster , Target = Unit
    Position = point

    bước 5 làm trigger
    Mã:
    Critical X
        Events
            Unit - A unit Starts the effect of an ability
        Conditions
            (Ability being cast) Equal to Critical X 
        Actions
            Set Caster = (Casting unit)
            Set Target = (Target unit of ability being cast)
            Set Position = (Position of Target)
            Special Effect - Create a special effect attached to the weapon of Caster using Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl
            Unit - Pause Caster
            Animation - Play Caster's spin animation
            Wait 0.50 seconds
            Animation - Change Caster's animation speed to 20.00% of its original speed
            Unit - Move Caster instantly to Position, facing (Facing of Target) degrees
            Animation - Play Caster's attack slam animation
            Unit - Add Crow Form to Caster
            Unit - Remove Crow Form from Caster
            Animation - Change Caster flying height to 300.00 at 300.00
            Wait 1.00 seconds
            Unit - Add Crow Form to Caster
            Unit - Remove Crow Form from Caster
            Animation - Change Caster flying height to 0.00 at 0.00
            Unit - Unpause Caster
            Animation - Change Caster's animation speed to 100.00% of its original speed
            Unit - Create 1 Ball for (Owner of Caster) at Position facing Default building facing degrees
            Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
            Unit - Order (Last created unit) to Neutral - Firebolt Target
            Unit - Cause Caster to damage Target, dealing (60.00 x (Real((Level of Critical X  for Caster)))) damage of attack type Chaos and damage type Normal
            Special Effect - Destroy (Last created special effect)
            Custom script:   call RemoveLocation(udg_Position)
    
    Bước 6 Download về
    http://www.mediafire.com/download.php?2yuvjjmmgti

    Bước 7 Xem và Comment
    ko giống đừng chê nha:((:((
     
  15. rongdoVN

    rongdoVN Space Marine Doomguy Lão Làng GVN

    Tham gia ngày:
    6/9/05
    Bài viết:
    5,667
    Nơi ở:
    TS-Pri GameVN
    Critical có sẵn rồi cần gì phải làm lại cho nó mệt:|
    còn vụ Rep thì phải + cho 10 người khác rồi mới + lại cho người đó đc
    1 ngày nếu siêng có thể combo 2 phát Rep cho 1 người
    + Rep cho người muốn + xong rồi + cho 10 người khác rồi + lại cho người đc +Rep ban đầu là xong
     
  16. Jin Axl

    Jin Axl > Draw 2 Life Moderator Lão Làng GVN

    Tham gia ngày:
    2/3/06
    Bài viết:
    8,246
    Nơi ở:
    Over the rainbow
    Oh ko muốn spoil topic nhưng thay mặt Tom vào nhắc 1 câu : muốn chơi Rep đã có khu vực riêng dưới box Thư Giãn. Box WE cấm ngặt xin Rep các kiểu nhé ? Ai muốn thanks thì người ta tự biết cộng, việc j phải lằng nhằng ? Chức năng PM 4rum dễ xài lắm đấy ?

    Tôi nhắc lại là tôi thay mặt cho Tom đấy nhé. Từ giờ các post có đề cập xin Rep v.v có khả năng ăn thẹo rất cao.

    GL & HF

    Btw, to chủ topic : nice job - keep doing :)
     
  17. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    err... đang định "trình báo" với CaroVN về vụ "spam rep" ở đây thì Jin lại nói rồi :">
    ---
    đã del hoặc edit các bài liên quan đến "xin rep" \m/
    ---
    thế chủ topic có muốn đổi "Gà" thành "Newbie" ko ?
     
  18. ShadowThanatos

    ShadowThanatos -|--Soul Reaper--|-

    Tham gia ngày:
    23/2/09
    Bài viết:
    2,119
    Nơi ở:
    Horror Depht
    Em (chắc mình nhỏ tuổi nhất cái forum này, mới 14 tuồi ah :() xin post spell nho nhỏ này:
    Name: Soul Absorb
    MUI: Yes (MUI nghĩa là có nhiều unit cast spell này thì trigger vẫn hoạt động tốt, không bị lỗi)
    GUI/Jass: GUI
    Công dụng: hút mana đố tượng rồi deal damage = số mana hút chia cho random số thực từ số 1 đến số 2.
    Level 1: hút 110 mana
    Level 2: hút 220 mana
    Level 3: hút 330 mana
    Level 4: hút 440 mana
    Effect: coi cái hình dưới đây (khuyên các anh, chị (thực sự forum mình có con gái đấy :D) hãy down map về để xem rõ hơn)
    [​IMG]
    Trigger:
    Mã:
    Soul Absorb
        Events
            Unit - A unit Starts the effect of an ability
        Conditions
            (Ability being cast) Equal to Soul Absorb 
        Actions
            Set AbsorbCaster = (Triggering unit)
            Set AbsorbIndex = (AbsorbIndex + 1)
            Set AbsorbLevel[AbsorbIndex] = (Level of Soul Absorb  for AbsorbCaster)
            Set AbsorbTarget[AbsorbIndex] = (Target unit of ability being cast)
            Set AbsorbLoc1[AbsorbIndex] = (Position of AbsorbCaster)
            Set AbsorbLoc2[AbsorbIndex] = (Position of AbsorbTarget[AbsorbIndex])
            Set AbsorbDistance[AbsorbIndex] = (Distance between AbsorbLoc2[AbsorbIndex] and AbsorbLoc1[AbsorbIndex])
            Set AbsorbAngel[AbsorbIndex] = (Angle from AbsorbLoc1[(Integer A)] to AbsorbLoc2[(Integer A)])
            Set AbsorbInteger[AbsorbIndex] = 0
            Set AbsorbInteger2[AbsorbIndex] = 0
            Set AbsorbTick[AbsorbIndex] = 45
            Set AbsorbTick1[AbsorbIndex] = 45
            Set AbsorbDamage[AbsorbIndex] = 0.00
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    (Max mana of AbsorbTarget[(Integer A)]) Greater than 0.00
                Then - Actions
                    Unit - Set mana of AbsorbTarget[AbsorbIndex] to ((Mana of AbsorbTarget[AbsorbIndex]) - (110.00 x (Real(AbsorbLevel[AbsorbIndex]))))
                Else - Actions
            Set AbsorbDamage[AbsorbIndex] = ((110.00 x (Real(AbsorbLevel[AbsorbIndex]))) / (Random real number between 1.00 and 2.00))
            Unit - Cause AbsorbCaster to damage AbsorbTarget[AbsorbIndex], dealing AbsorbDamage[AbsorbIndex] damage of attack type Spells and damage type Magic
            Floating Text - Create floating text that reads (String((Integer(AbsorbDamage[AbsorbIndex])))) at AbsorbLoc2[AbsorbIndex] with Z offset 0.00, using font size 10.00, color (0.00%, 75.00%, 50.00%), and 0.00% transparency
            Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
            Floating Text - Change (Last created floating text): Disable permanence
            Floating Text - Change the lifespan of (Last created floating text) to 5.00 seconds
            Floating Text - Change the age of (Last created floating text) to 3.00 seconds
            Floating Text - Change the fading age of (Last created floating text) to 4.00 seconds
            Special Effect - Create a special effect attached to the chest of AbsorbTarget[AbsorbIndex] using Abilities\Weapons\DragonHawkMissile\DragonHawkMissile.mdl
            Special Effect - Destroy (Last created special effect)
            Special Effect - Create a special effect at AbsorbLoc2[AbsorbIndex] using Abilities\Spells\Human\ManaFlare\ManaFlareBoltImpact.mdl
            Special Effect - Destroy (Last created special effect)
            Unit - Create 1 Absorb for (Owner of AbsorbCaster) at AbsorbLoc2[AbsorbIndex] facing AbsorbAngel[AbsorbIndex] degrees
            Set AbsorbDummy1[AbsorbIndex] = (Last created unit)
            Unit - Turn collision for AbsorbDummy1[AbsorbIndex] Off
            Unit - Move AbsorbDummy1[AbsorbIndex] instantly to (AbsorbLoc2[AbsorbIndex] offset by 100.00 towards (90.00 + AbsorbAngel[AbsorbIndex]) degrees), facing AbsorbAngel[AbsorbIndex] degrees
            Set AbsorbLoc3[AbsorbIndex] = (Position of AbsorbDummy1[AbsorbIndex])
            Unit - Create 1 Absorb for (Owner of AbsorbCaster) at AbsorbLoc2[AbsorbIndex] facing AbsorbAngel[AbsorbIndex] degrees
            Set AbsorbDummy2[AbsorbIndex] = (Last created unit)
            Unit - Turn collision for AbsorbDummy2[AbsorbIndex] Off
            Unit - Move AbsorbDummy2[AbsorbIndex] instantly to (AbsorbLoc2[AbsorbIndex] offset by 100.00 towards (AbsorbAngel[(Integer A)] - 90.00) degrees), facing AbsorbAngel[AbsorbIndex] degrees
            Set AbsorbLoc4[AbsorbIndex] = (Position of AbsorbDummy2[AbsorbIndex])
            Custom script:   call RemoveLocation( udg_AbsorbLoc1[udg_AbsorbIndex] )
            Custom script:   call RemoveLocation( udg_AbsorbLoc2[udg_AbsorbIndex] )
    
    Còn nữa:
    Mã:
    Effect
        Events
            Time - Every 0.04 seconds of game time
        Conditions
        Actions
            For each (Integer A) from 1 to AbsorbIndex, do (Actions)
                Loop - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            AbsorbDistance[(Integer A)] Less than or equal to 10.00
                        Then - Actions
                            Unit - Kill AbsorbDummy1[(Integer A)]
                            Unit - Kill AbsorbDummy2[(Integer A)]
                            Unit - Set mana of AbsorbCaster to ((Mana of AbsorbCaster) + (110.00 x (Real(AbsorbLevel[(Integer A)]))))
                            Special Effect - Create a special effect attached to the origin of AbsorbCaster using Abilities\Spells\Items\AIma\AImaTarget.mdl
                            Special Effect - Destroy (Last created special effect)
                            For each (Integer B) from (Integer A) to (AbsorbIndex - 1), do (Actions)
                                Loop - Actions
                                    Set AbsorbTarget[(Integer A)] = AbsorbTarget[((Integer A) + 1)]
                                    Set AbsorbLoc1[(Integer A)] = AbsorbLoc1[((Integer A) + 1)]
                                    Set AbsorbLoc2[(Integer A)] = AbsorbLoc2[((Integer A) + 1)]
                                    Set AbsorbDistance[(Integer A)] = AbsorbDistance[((Integer A) + 1)]
                                    Set AbsorbSpeed[(Integer A)] = AbsorbSpeed[((Integer A) + 1)]
                                    Set AbsorbAngel[(Integer A)] = AbsorbAngel[((Integer A) + 1)]
                                    Set AbsorbTick[(Integer A)] = AbsorbTick[((Integer A) + 1)]
                                    Set AbsorbTick1[(Integer A)] = AbsorbTick1[((Integer A) + 1)]
                                    Set AbsorbDummy1[(Integer A)] = AbsorbDummy1[((Integer A) + 1)]
                                    Set AbsorbDummy2[AbsorbIndex] = AbsorbDummy2[((Integer A) + 1)]
                            Set AbsorbIndex = (AbsorbIndex - 1)
                        Else - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            (AbsorbTarget[(Integer A)] has buff Absorb (Pause)) Equal to True
                        Then - Actions
                        Else - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            AbsorbDistance[(Integer A)] Greater than 10.00
                        Then - Actions
                            Set AbsorbTick[(Integer A)] = (AbsorbTick[(Integer A)] - 1)
                            Set AbsorbInteger[AbsorbIndex] = (AbsorbInteger[(Integer A)] + 1)
                            Set AbsorbLoc1[(Integer A)] = (Position of AbsorbCaster)
                            Set AbsorbLoc3[(Integer A)] = (Position of AbsorbDummy1[(Integer A)])
                            Set AbsorbDistance[(Integer A)] = (Distance between AbsorbLoc1[(Integer A)] and AbsorbLoc3[(Integer A)])
                            Set AbsorbSpeed[(Integer A)] = (AbsorbDistance[(Integer A)] / (Real(AbsorbTick[(Integer A)])))
                            Set AbsorbAngel[(Integer A)] = (Angle from AbsorbLoc3[(Integer A)] to AbsorbLoc1[(Integer A)])
                            Set AbsorbLoc5[(Integer A)] = (AbsorbLoc3[(Integer A)] offset by AbsorbSpeed[(Integer A)] towards AbsorbAngel[(Integer A)] degrees)
                            Unit - Move AbsorbDummy1[(Integer A)] instantly to (AbsorbLoc5[(Integer A)] offset by AbsorbSpeed[(Integer A)] towards AbsorbAngel[(Integer A)] degrees), facing AbsorbAngel[(Integer A)] degrees
                            Special Effect - Create a special effect at (AbsorbLoc5[(Integer A)] offset by 100.00 towards ((360.00 / 30.00) x (Real(AbsorbInteger[(Integer A)]))) degrees) using Abilities\Weapons\WingedSerpentMissile\WingedSerpentMissile.mdl
                            Special Effect - Destroy (Last created special effect)
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                If - Conditions
                                    AbsorbInteger[(Integer A)] Equal to 30
                                Then - Actions
                                    Set AbsorbInteger[AbsorbIndex] = 0
                                Else - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                If - Conditions
                                    AbsorbTick[(Integer A)] Equal to 0
                                Then - Actions
                                    Unit - Move AbsorbDummy1[(Integer A)] instantly to AbsorbLoc1[(Integer A)]
                                Else - Actions
                            Custom script:   call RemoveLocation( udg_AbsorbLoc1[GetForLoopIndexA()] )
                            Custom script:   call RemoveLocation( udg_AbsorbLoc3[GetForLoopIndexA()] )
                            Custom script:   call RemoveLocation( udg_AbsorbLoc5[GetForLoopIndexA()] )
                        Else - Actions
                    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        If - Conditions
                            AbsorbDistance[(Integer A)] Greater than 10.00
                        Then - Actions
                            Set AbsorbTick1[(Integer A)] = (AbsorbTick1[(Integer A)] - 1)
                            Set AbsorbInteger2[(Integer A)] = (AbsorbInteger2[(Integer A)] + 1)
                            Set AbsorbLoc1[(Integer A)] = (Position of AbsorbCaster)
                            Set AbsorbLoc4[(Integer A)] = (Position of AbsorbDummy2[(Integer A)])
                            Set AbsorbDistance[(Integer A)] = (Distance between AbsorbLoc1[(Integer A)] and AbsorbLoc4[(Integer A)])
                            Set AbsorbSpeed[(Integer A)] = (AbsorbDistance[(Integer A)] / (Real(AbsorbTick[(Integer A)])))
                            Set AbsorbAngel[(Integer A)] = (Angle from AbsorbLoc4[(Integer A)] to AbsorbLoc1[(Integer A)])
                            Set AbsorbLoc6[(Integer A)] = (AbsorbLoc4[(Integer A)] offset by AbsorbSpeed[(Integer A)] towards AbsorbAngel[(Integer A)] degrees)
                            Unit - Move AbsorbDummy2[(Integer A)] instantly to (AbsorbLoc6[(Integer A)] offset by AbsorbSpeed[(Integer A)] towards AbsorbAngel[(Integer A)] degrees), facing AbsorbAngel[(Integer A)] degrees
                            Special Effect - Create a special effect at (AbsorbLoc6[(Integer A)] offset by -100.00 towards ((360.00 / 30.00) x (Real(AbsorbInteger2[(Integer A)]))) degrees) using Abilities\Weapons\WingedSerpentMissile\WingedSerpentMissile.mdl
                            Special Effect - Destroy (Last created special effect)
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                If - Conditions
                                    AbsorbInteger2[(Integer A)] Equal to 30
                                Then - Actions
                                    Set AbsorbInteger2[(Integer A)] = 0
                                Else - Actions
                            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                If - Conditions
                                    AbsorbTick1[(Integer A)] Equal to 0
                                Then - Actions
                                    Unit - Move AbsorbDummy2[(Integer A)] instantly to AbsorbLoc1[(Integer A)]
                                Else - Actions
                            Custom script:   call RemoveLocation( udg_AbsorbLoc1[GetForLoopIndexA()] )
                            Custom script:   call RemoveLocation( udg_AbsorbLoc4[GetForLoopIndexA()] )
                            Custom script:   call RemoveLocation( udg_AbsorbLoc6[GetForLoopIndexA()] )
                        Else - Actions
    
    Giải thích:
    Trigger 1 là để deal damage, set variable, create dummy, tạo chữ cho biết số damage deal vào target
    Trigger 2 dùng để move dummy (khiến cho 2 missile bay từ target về caster), bơm mana
    Chắc các newbie sẽ đặc câu hỏi: vì sao variable lại có array?
    Câu trả lời là để cho spell này được MUI. Để biết thêm, đọc topic tutorial tạo spell slide và chain của anh TOM: LINK
    Import (có thể được hiểu là copy spell này vào map của mình):
    Đầu tiên bạn phải copy spell soul absorb trong mục abilities trong object editor.
    [​IMG]
    Tiếp theo là copy trigger:
    Đầu tiên, bạn phải vào chọn mục file ở giao diện world editor, chọn preferrence, chọn box automatically create unknow variable when paste trigger.
    [​IMG]
    Và cuối cùng bật map của bạn và paste vào.
    Thanks to: Tom Kazansky for his awesome tutorial :D
    Map down ở dưới đây

    P/S: sorry vì mấy cái hình hơi bị chiếm dụng màn hình :D
     

    Các file đính kèm:

    baodongdo1498 thích bài này.
  19. Meteor95

    Meteor95 Mario & Luigi

    Tham gia ngày:
    27/4/07
    Bài viết:
    861
    Ơ,bác sinh năm 1995 à,thế thì bằng tuổi Meteor rùi còn ji
    Bài viết của bạn rất có ích,+ rep nhớ
     
  20. ducthai

    ducthai Donkey Kong

    Tham gia ngày:
    27/2/06
    Bài viết:
    334
    Nơi ở:
    Biên Hòa - Trảng Bom
    To Anh Tom và PKMNProIAm : thật ra việc Rep là lúc đầu em nói ở đầu Topic đó chỉ là phần thưởng cho những ai chịu bỏ công sức ra hướng dẫn giải thích cho những bạn mới học nắm rõ về cách làm Spell thui ,còn nếu điều này vi phạm nội quy của 4rum thì cho em sory nhé , em ko bit :P , ah còn đổi chữ Gà thành Newbie thì đc anh Tom đổi giùm em đi bữa trước em thử nhưng ko đổi đc (có lẽ chỉ Mod đổi đc thui) :|

    To Shadow Thanatos : oai cha em mới có 14 tuổi hả , vậy mà cũng giỏi ghê ha :D , vậy mà bữa trước anh còn đang đinh xin Nick Chat của em để kết bạn nữa chứ :)) anh sinh 1990 => 19t rùi :D .
    To Mọi Người Trong Topic : Chà theo mình thấy thì có lẽ lần sau Post Spell thì ko cần phải Post hình khi làm mấy Spell phụ để add cho Dummy mà chỉ cần Post hình của Spell khi sử dụng thui (vỉ đã có Map demo rùi),và có lẽ nên giải thích tác dụng của Spell nữa chứ . Cái quan trọng nhất là giải thích Trigger đó :D
    Quên mất Thank bài viết của Darkking2828 và Shadow Thanatos , rất có ích cho Newbie nhưng lần sau nhớ giải thích Trigger nhé :>
     
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này