Đăng ký

Tham gia : 2012-01-26
Bài gửi : 1209
Point : 4101
Nhận thích : 761
Biệt Danh : K3_Posh
Tường Bài viết Kết bạn Chặn

[Tutorial]Learn Abilities Through Items (Học Abilities Qua Items)

Thấy tut này ở gamevn, tut có vẻ quan trọng nhưng ít người biết nên mình đưa qua đây cho các bạn tìm tòi và học hỏi


Learn Abilities Through Items
1.Giới thiệu:
Sau bài này, tôi sẽ hướng dẫn cho bạn để thực hiện một hệ thống cho phép người sử dụng học đc một Ablities thông qua việc mua Items từ các Shops (điển hình về hệ thống này là map hoihoi8s). Trong bài này, tôi sẽ sử dụng 2 Abilities Dark Ritual và Inferno để hướng dẫn.
I.Hướng dẫn:
Bước 1: Chuẩn bị Items
Trước hết, chúng ta sẽ tạo các Items tương ứng với mỗi Abilities (Lưu ý chỉ tạo các Custom Items này từ Class Items Power Up):

Những Items này cho người mua biết những thông tin về Ability mà khi mua sẽ có. Tôi sẽ sử dụng các Items này cho các Icons, Tooltip, Gold/Lumber Cost và các thông tin khác cần thiết cho map của bạn.
Cách thứ nhất:
Bước 2: Chuẩn bị Variables
Tiếp theo, chúng ta sẽ làm việc với triggers. Trước khi làm việc với triggers, chúng ta phải chuẩn bị các Variables sau:

Sau khi chuẩn bị xong, chúng ta sẽ thực hiện với các triggers.
1.Đối với Abilities chỉ có 1 level:
Code:
Infernal
    Events
        Unit - A unit Acquires an item
    Conditions
        (Item-type of (Item being manipulated)) Equal to Summon Infernal
    Actions
        Set Units = (Triggering unit)
        Set Ability[(Player number of (Owner of Units))] = Inferno
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Level of Ability[(Player number of (Owner of Units))] for (Triggering unit)) Less than 1
            Then - Actions
                Unit - Add Ability[(Player number of (Owner of Units))] to (Triggering unit)
                Game - Display to (Player group((Owner of Units))) for 10.00 seconds the text: You have bought the...
            Else - Actions
                Game - Display to (Player group((Owner of Units))) for 5.00 seconds the text: You already have th...
                Player - Add 350 to (Owner of Units) Current lumber
Tôi sẽ giải thích Trigger trên. Bây giờ nếu Unit nào đó mua Item Summon Infernal thì nó sẽ thêm Ability Inferno cho Unit đó. Bạn phải tạo mỗi Trigger tương ứng với mỗi Ability.
Code:
Conditions
    (Item-type of (Item being manipulated)) Equal to Summon Infernal
Dòng điều kiện này rất quan trọng. Nếu như kô có nó thì khi Unit mua bất cứ Item nào thì Ability Inferno sẽ đc add cho Unit đó, chắc chắn bạn sẽ kô muốn điều này, phải kôhappy?
2.Đối với Abilities có nhiều level:
Đối với ví dụ này, tôi sẽ sử dụng Ability Dark Ritual.
Một lần nữa, chúng ta sẽ tạo 1 Item Dark Ritual giống như Item Summon Infernal đối với Inferno vậy (Bước này tôi sẽ kô hướng dẫn nữa vì nó gần như giống với bước tạo Item Summon Infernal trên).
Code:
Dark Ritual
    Events
        Unit - A unit Acquires an item
    Conditions
        (Item-type of (Item being manipulated)) Equal to Dark Ritual
    Actions
        Set Units = (Triggering unit)
        Set Ability[(Player number of (Owner of Units))] = Dark Ritual
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Level of Ability[(Player number of (Owner of Units))] for Units) Less than 1
            Then - Actions
                Unit - Add Ability[(Player number of (Owner of Units))] to Units
                Game - Display to (Player group((Owner of Units))) for 10.00 seconds the text: Dark Ritual Learned...
            Else - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Ability[(Player number of (Owner of Units))] for Units) Less than 3
                    Then - Actions
                        Unit - Increase level of Ability[(Player number of (Owner of Units))] for Units
                        Game - Display to (Player group((Owner of Units))) for 5.00 seconds the text: (Dark Ritual's Level + ( is + (  + (String((Level of Dark Ritual for Units))))))
                    Else - Actions
                        Game - Display to (Player group((Owner of Units))) for 5.00 seconds the text: This spell is alrea...
                        Player - Add 100 to (Owner of Units) Current lumber
Trigger này gần giống với trigger Infernal, tuy nhiên, nó đã đc thêm vài dòng. "Vài dòng" ấy đảm nhiệm việc tăng Level của Ability Dark Ritual sau lần học thứ nhất (Mua Item lần thứ nhất Dark Ritual sẽ có level 1, lần thứ hai là level 2, ....). Để thay đổi Level của Dark Ritual sẽ học đc thông qua mua Item này thì ta sẽ sửa số 3 ở dòng sau:
Code:
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
        (Level of Ability[(Player number of (Owner of Units))] for Units) Less than [B][I]3[/I][/B]
Và nếu Level của Dark Ritual kô nhỏ hơn 3 mà vẫn tiếp tục mua Item thì sẽ trả lại số Gold Cost (Bạn phải thay đổi số 100 = số Gold Cost của Item đó).

Cách thứ hai:
Đôi khi, chúng ta có quá nhiều Abilities, ví dụ tôi có 100 Abilities thì phải tạo những.... 100 triggers. Như vậy sẽ rất tốn công sức và dung lượng map. Tuy nhiên, nếu chúng ta dùng cách này, cho dù có tới 1000 Abilities đi nữa thì chúng chỉ nằm gọn trong 2 triggers mà thôi. Cách này đòi hỏi bạn phải thật thành thạo về các biến (variables). Nếu bạn kô thành thạo về chúng thì tôi có một lời khuyên là: Nên sử dụng cách thứ nhất!
1.Thiết lập biến:

Code:
 Set Variables
Events
    Map initialization
Conditions
Actions
      -------- Chúng ta sẽ set các biến tại đây --------
Chúng ta sẽ tạo một vài Variables, gồm:
_Abilities (Biến Ability có Array).
_Items (Biến Item có Array).
_Lumber (Biến Integer có Array).
_Level (Biến Integer có Array).
_ItemAbilityCount (Biến Integer kô Array).
Ngay bây giờ, chúng ta sẽ lưu các Items, Abilities và Lumber Cost của Item trong các biến mà chúng ta vừa tạo:
Code:
Set Variables
    Events
        Map initialization
    Conditions
    Actions
        Set ItemAbilityCount = -1
        -------- Inferno --------
        Set ItemAbilityCount = (ItemAbilityCount + 1)
        Set Abilities[ItemAbilityCount] = Inferno
        Set Items[ItemAbilityCount] = Summon Infernal
        Set Lumber[ItemAbilityCount] = Lumber Cost của Item Summon Infernal (350)
        Set Level[ItemAbilityCount] = Level của Ability Inferno (1)
        -------- Dark Ritual --------
        Set ItemAbilityCount = (ItemAbilityCount + 1)
        Set Abilities[ItemAbilityCount] = Dark Ritual
        Set Items[ItemAbilityCount] = Dark Ritual
        Set Lumber[ItemAbilityCount] = Lumber Cost của Item Dark Ritual (100)
        Set Level[ItemAbilityCount] = Level của Ability Dark Ritual (3)

Khi mới bắt đầu, chúng ta Set ItemAbilityCount = ItemAbilityCount - 1. Tức là ItemAbilityCount lúc đầu có giá trị là -1. Đến phần lưu thông tin biến của Ability Inferno thì nó đc + thêm 1 (tức là nó sẽ = 0) và tất cả Array biến lưu trữ thông tin của Ability Inferno đều là 0.
Đên phần lưu thông tin biến của Ability Dark Ritual thì nó lại đc + thêm 1 (tức là nó sẽ = 1) và tất cả Array biến lưu trữ thông tin của Ability Dark Ritual đều là 1.
Tương tự với các Abilities sau.

Bước thứ hai - Trigger:
Chúng ta muốn khi Unit mua Item nào đó thì sẽ Add Ability tương ứng cho Unit đó (hình như hơi nhiều từ "đó" thì phải;))). Vì vậy, chúng ta sẽ tạo một trigger mới. Event sẽ như sau:
Code:
Unit - A unit Acquires an item
Một Unit nhận đc một Item, điều này hầu hết đều đc diễn ra trong tất cả các games. Bây giờ chúng ta sẽ đi vào ruột của trigger (Acticons). Trước khi chúng ta làm điều đó, phải chắc chắn rằng Item đc mua trong Shop (Dark Ritual, Summoning Infernal) đã có thể loại riêng (Class), tôi sẽ lựa chọn Class Power Up. Bây giờ sẽ tạo điều kiện này:
Code:
(Item-class of (Item being manipulated)) Equal to Powerup
Dòng điều kiện này dùng để kiểm tra Item đc mua thuộc Class Power Up. Để hoàn tất Trigger này, chúng ta sẽ thực hiện Acticons sau:
Code:
Learn Ability
    Events
        Unit - A unit Acquires an item
    Conditions
        (Item-class of (Item being manipulated)) Equal to Powerup
    Actions
        Set TempUnit = (Triggering unit)
        Set TempItem = (Item being manipulated)
        For each (Integer A) from 0 to ItemAbilityCount, do (Actions)
            Loop - Actions
                Set TempInt = (Integer A)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        Items[TempInt] Equal to (Item-type of TempItem)
                    Then - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                (Level of Abilities[TempInt] for TempUnit) Less than 1
                            Then - Actions
                                Unit - Add Abilities[TempInt] to TempUnit
                                Set TempForce = (Player group((Owner of TempUnit)))
                                Game - Display to TempForce the text: ((|c0000FFFF + (Name of Abilities[TempInt])) + |r learned.)
                                Custom script:  call DestroyForce( udg_TempForce )
                                Special Effect - Create a special effect attached to the origin of TempUnit using Abilities\Spells\Items\AIem\AIemTarget.mdl
                                Special Effect - Destroy (Last created special effect)
                                Custom script:  exitwhen true
                            Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                Level[TempInt] Greater than 1
                            Then - Actions
                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    If - Conditions
                                        (Level of Abilities[TempInt] for TempUnit) Less than Level[TempInt]
                                    Then - Actions
                                        Unit - Increase level of Abilities[TempInt] for TempUnit
                                        Set TempForce = (Player group((Owner of TempUnit)))
                                        Game - Display to TempForce for 5.00 seconds the text: ((((|c0000FFFF + (Name of Abilities[TempInt])) + |r) + 's Level) + ( is increased to |c00540081 + (String((Level of Abilities[TempInt] for TempUnit)))))
                                        Custom script:  call DestroyForce( udg_TempForce )
                                        Special Effect - Create a special effect attached to the origin of TempUnit using Abilities\Spells\Items\AIlm\AIlmTarget.mdl
                                        Special Effect - Destroy (Last created special effect)
                                        Custom script:  exitwhen true
                                    Else - Actions
                                        Set TempForce = (Player group((Owner of TempUnit)))
                                        Game - Display to TempForce for 5.00 seconds the text: (|c0000FFFF + ((Name of Abilities[TempInt]) + |r's maximum level reached.))
                                        Custom script:  call DestroyForce( udg_TempForce )
                                        Player - Add Lumber[(Integer A)] to (Owner of TempUnit) Current lumber
                                Skip remaining actions
                            Else - Actions
                                Set TempForce = (Player group((Owner of TempUnit)))
                                Game - Display to TempForce for 5.00 seconds the text: (|c0000FFFF + ((Name of Abilities[TempInt]) + |r's maximum level reached.))
                                Custom script:  call DestroyForce( udg_TempForce )
                                Player - Add Lumber[TempInt] to (Owner of TempUnit) Current lumber
                    Else - Actions


Đã đính kèm map demo ở dưới, ai kô hiểu gì cứ hỏi Evil_Hunter happy.

Credit for PurplePoot in Hiveworkshop. His Tutorial Here (But His Tutorial has very a lot of error in the second way).
Thank Tom because he help me in the second way.
Translated and Edited by game_war48.
Nguồn : Gamevn.com

mediafire.com ?oxk5d9nimh5mrvs



Last edited by K3_Posh on 4/7/2012, 19:00; edited 1 time in total (Reason for editing : http://www.phutu.org)

View user profile doilaket_chetlahet@yahoo.com
Tầng 1 on 4/7/2012, 16:44
Tham gia : 2012-05-20
Bài gửi : 415
Point : 942
Nhận thích : 72
Biệt Danh : 19101994
Tường Bài viết Kết bạn Chặn

Re: [Tutorial]Learn Abilities Through Items (Học Abilities Qua Items)

nhìn mà choáng với chú game_war
Không có nhận xét gì vì không xài cái kiểu này straight face
Dù sao cũng thanks chú K3 đã post và lần này biết để nguồn... chứ fix nguồn 1 cái nữa là ta kêu mí bác kia qua chém mi đấy. Lần trước cái Phản chiếu là ta gợi ý dhg viết mà lấy shit gì qua mặt rolling on the floor

View user profile
Tầng 2 on 4/7/2012, 17:07
Tham gia : 2012-06-29
Bài gửi : 473
Point : 2082
Nhận thích : 129
Biệt Danh : ....
Tường Bài viết Kết bạn Chặn

Re: [Tutorial]Learn Abilities Through Items (Học Abilities Qua Items)

chóg cả mặt

View user profile
Tầng 3 on 4/7/2012, 17:10
Tham gia : 2011-12-06
Bài gửi : 4961
Point : 4909
Nhận thích : 5243
Biệt Danh : lForeverlAlonel
Tường Bài viết Kết bạn Chặn

Re: [Tutorial]Learn Abilities Through Items (Học Abilities Qua Items)

Zonll wrote:chóg cả mặt

Ko làm thì thôi, đừng cm kiểu này. Ok? Toi bắt bạn đọc à

View user profile evil_hunter_never_die@yahoo.com
Tầng 4 on 4/7/2012, 17:34
Tham gia : 2011-12-06
Bài gửi : 4961
Point : 4909
Nhận thích : 5243
Biệt Danh : lForeverlAlonel
Tường Bài viết Kết bạn Chặn

Re: [Tutorial]Learn Abilities Through Items (Học Abilities Qua Items)

Nhân tiện:
To K3_Posh: Sửa lại bài đi :T, post gì mà hình thì die, có vài chỗ [size] :T

View user profile evil_hunter_never_die@yahoo.com
Tầng 5 on 4/7/2012, 17:35
Tham gia : 2012-05-20
Bài gửi : 415
Point : 942
Nhận thích : 72
Biệt Danh : 19101994
Tường Bài viết Kết bạn Chặn

Re: [Tutorial]Learn Abilities Through Items (Học Abilities Qua Items)

nghèo cntt,đọc chả hỉu j
Đọc đết hiểu thì mày vào comment làm đệt gì??? ngu học à??

View user profile
Tầng 6 on 4/7/2012, 18:18
Tham gia : 2012-01-26
Bài gửi : 1209
Point : 4101
Nhận thích : 761
Biệt Danh : K3_Posh
Tường Bài viết Kết bạn Chặn

Re: [Tutorial]Learn Abilities Through Items (Học Abilities Qua Items)

Evil_Hunter wrote:Nhân tiện:
To K3_Posh: Sửa lại bài đi :T, post gì mà hình thì die, có vài chỗ [size] :T
Đã fix, vì coppy img bên gamevn nên nó đòi hỏi phải đăng nhập mới thấy hình, đã up lại ảnh. Nhân tiện hỏi cái luôn, có cần làm tút Leaderboard không EH vì mình đã có hướng dẫn một newbie trong 1 topic nào đó rồi nên muốn đăng lên luôn chứ mấy newbie cứ hỏi đi hỏi lại 1 câu trả lời cũng mỏi tay



Last edited by K3_Posh on 4/7/2012, 20:40; edited 1 time in total (Reason for editing : http://www.phutu.org)

View user profile doilaket_chetlahet@yahoo.com
Tầng 7 on 4/7/2012, 19:02
Tham gia : 2012-05-20
Bài gửi : 415
Point : 942
Nhận thích : 72
Biệt Danh : 19101994
Tường Bài viết Kết bạn Chặn

Re: [Tutorial]Learn Abilities Through Items (Học Abilities Qua Items)

Nếu chú siêng đóng góp thì cứ làm... ta sẽ vote công đóng góp

View user profile
Tầng 8 on 4/7/2012, 19:33
Tham gia : 2011-12-06
Bài gửi : 4961
Point : 4909
Nhận thích : 5243
Biệt Danh : lForeverlAlonel
Tường Bài viết Kết bạn Chặn

Re: [Tutorial]Learn Abilities Through Items (Học Abilities Qua Items)

@K3_Posh wrote:
Evil_Hunter wrote:Nhân tiện:
To K3_Posh: Sửa lại bài đi :T, post gì mà hình thì die, có vài chỗ [size] :T
Đã fix, vì coppy img bên gamevn nên nó đòi hỏi phải đăng nhập mới thấy hình, đã up lại ảnh. Nhân tiện hỏi cái luôn, có cần làm tút Leaderboard không EH

Nếu đc thì cứ làm đi, đc đấy!

View user profile evil_hunter_never_die@yahoo.com
Tầng 9 on 4/7/2012, 20:14
Tham gia : 2011-12-06
Bài gửi : 4961
Point : 4909
Nhận thích : 5243
Biệt Danh : lForeverlAlonel
Tường Bài viết Kết bạn Chặn

Re: [Tutorial]Learn Abilities Through Items (Học Abilities Qua Items)

@talamala11 wrote:éo hiểu gì cả

Cảnh cáo, cẩn thận với các cm này

View user profile evil_hunter_never_die@yahoo.com
Tầng 10 on 4/7/2012, 20:15
Tham gia : 2012-01-26
Bài gửi : 1209
Point : 4101
Nhận thích : 761
Biệt Danh : K3_Posh
Tường Bài viết Kết bạn Chặn

Re: [Tutorial]Learn Abilities Through Items (Học Abilities Qua Items)

Mình đã hướng dẫn leaderboard ở topic này nên muốn chú EH đăng lên đầu box để anh em vào xem thôi big grin

View user profile doilaket_chetlahet@yahoo.com
Tầng 11 on 5/7/2012, 07:05

Re: [Tutorial]Learn Abilities Through Items (Học Abilities Qua Items)

Tầng 12 Today at 23:00


Tên truy cập