Topic Post Spell

  • Thread starter Thread starter ducthai
  • Ngày gửi Ngày gửi
Status
Không mở trả lời sau này.

ducthai

Donkey Kong
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 :
attachment.php

attachment.php


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
attachment.php

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
attachment.php


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
 

Attachments

  • trigger.jpg
    trigger.jpg
    75.8 KB · Đọc: 2,349
  • Spell VD.rar
    Spell VD.rar
    16.3 KB · Đọc: 285
  • variable.jpg
    variable.jpg
    61.8 KB · Đọc: 2,335
  • begin.jpg
    begin.jpg
    132.3 KB · Đọc: 2,418
  • chaninng.jpg
    chaninng.jpg
    135.6 KB · Đọc: 2,409
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
 
Jass thì đã chả cho gà bạn ạ,nhìu người pro GUI có khi còn ko bít ji về JASS cơ
 
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.
 
+REP cho ducthai.
___________________________________________
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
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/:).
 
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ả !
 
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 :-*
 
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
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Fire Teleport
Actions
Set FireCaster = (Casting unit)
Unit - Create 1 FireDummy for (Owner of FireCaster) at (Position of FireCaster) facing (Position of FireCaster)
Unit - Add Flame Strike to (Last created unit)
Unit - Set level of Flame Strike for (Last created unit) to (Level of Fire Teleport for FireCaster)
Unit - Order (Last created unit) to Human Blood Mage - Flame Strike (Position of (Last created unit))
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Create 1 FireDummy for (Owner of FireCaster) at (Target point of ability being cast) facing (Position of FireCaster)
Unit - Add Flame Strike to (Last created unit)
Unit - Set level of Flame Strike for (Last created unit) to (Level of Fire Teleport for FireCaster)
Unit - Order (Last created unit) to Human Blood Mage - Flame Strike (Position of (Last created unit))
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Đợi tý em up cho
Ai thích nhớ rep nha(nhắc lại lần 2 đấy)
fireteleport-1.jpg
 
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
 

Attachments

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
 
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

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.
 
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:((:((
 
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
 
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 :)
 
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 ?
 
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)
effect.png

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.
import.png

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.
option.png

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
 

Attachments

Ơ,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ớ
 
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é :>
 
Status
Không mở trả lời sau này.
Back
Top