Random hero [ System ]

langthangbairac

T.E.T.Я.I.S
Theo mình thấy thì khá nhiều bạn sau khi tạo map thì phần random / chọn hero khá mắc cứng. Vậy nên mình tạo cái pic này hướng dẫn về vấn đề này như khi random thì hero trùng hoặc là random phải hero đã được chọn. Đó là do bạn chưa remove khoi nhà chọn hero hoặc chưa set đúng biến trong random hero.
Đầu tiên mình post trigger xong sẽ giải thích phương thưc s:
Mã:
System hero
    Events
        Time - Elapsed game time is 1.00 seconds
    Conditions
    Actions
        Set Total_hero = 8
        Set Random_system[1] = Paladin
        Set Random_system[2] = Archmage
        Set Random_system[3] = Mountain King
        Set Random_system[4] = Blood Mage
        Set Random_system[5] = Blademaster
        Set Random_system[6] = Far Seer
        Set Random_system[7] = Tauren Chieftain
        Set Random_system[8] = Shadow Hunter
        Player Group - Pick every player in (All players) and do (Actions)
            Loop - Actions
                Player Group - Add (Picked player) to Players_hero
        For each (Integer A) from 1 to 10, do (Actions)
            Loop - Actions
                Set Can_pick[(Integer A)] = True
                Unit - Create 1 Zone Indicator (Custom Campaign) for (Player((Integer A))) at (Center of Chon hero <gen>) facing Default building facing degrees
                Unit - Add a 120.00 second Generic expiration timer to (Last created unit)
Mã:
Make visi
    Events
        Unit - A unit Sells a unit
    Conditions
        ((Sold unit) is A Hero) Equal to True
    Actions
        Player Group - Pick every player in Players_hero and do (Actions)
            Loop - Actions
                Player - Make (Unit-type of (Sold unit)) Unavailable for training/construction by (Picked player)
        Set Can_pick[(Player number of (Owner of (Sold unit)))] = False
        Selection - Select (Sold unit) for (Owner of (Sold unit))
        For each (Integer A) from 1 to 8, do (Actions)
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Unit-type of (Sold unit)) Equal to Random_system[(Integer A)]
                    Then - Actions
                        Set Random_system[(Integer A)] = Random_system[Total_hero]
                        Set Total_hero = (Total_hero - 1)
                    Else - Actions
Mã:
Random hero
    Events
        Player - Player 1 (Red) types a chat message containing -random as An exact match
    Conditions
        Can_pick[(Player number of (Triggering player))] Equal to True
    Actions
        Set Random_Hero = (Random integer number between 1 and Total_hero)
        Unit - Create 1 Random_system[Random_Hero] for (Triggering player) at (Center of Chon hero <gen>) facing Default building facing degrees
        Camera - Pan camera for (Owner of (Last created unit)) to (Center of Chon hero <gen>) over 0.00 seconds
        Selection - Select (Last created unit) for (Triggering player)
        Player Group - Pick every player in Players_hero and do (Actions)
            Loop - Actions
                Player - Make (Unit-type of (Last created unit)) Unavailable for training/construction by (Picked player)
        Set Random_system[Random_Hero] = Random_system[Total_hero]
        Set Total_hero = (Total_hero - 1)
        Set Can_pick[(Player number of (Triggering player))] = False

Phần hướng dẫn :

Cách thức hoạt động khá đơn giản, ai hiểu được bản chất của nó thì làm dẽ thôi :D

Thế này nhé : Khi -random, sẽ random 1 số từ 1 -> total_hero thì sẽ set Random_system[ Random_hero] thành số cuối cùng ( là total_hero )
Và total_hero sẽ trừ 1.
Cốt lõi chỉ đơn giản như vậy thôi

Xem demo map là hiểu ngay :D

Link epicwar

Hoặc bên dưới
 

Attachments

Chỉnh sửa cuối:
cái này đâu cần có nhà. Chỉ cần bạn có Hero thôi, nhìn xem trong trigger có động gì đến object Building đâu :D
 
cái này đâu cần có nhà. Chỉ cần bạn có Hero thôi, nhìn xem trong trigger có động gì đến object Building đâu :D
Nhưng tại sao nó có
Mã:
Unit - A unit Sells a unit
mình đâu có bán cái gì đâu :S
Map mình pick hero = wisp
 
Giải thích thế này nhá :

3 cái trigger post ở trên :
_ Trigger 1 : Set hero vào biến

_ Trigger 2 : Cái này là trigger kiểm tra nếu unit được mua từ nhà thì sẽ di chuyển về chỗ chỉ định ( giống cái pick hero trong dota đấy ). Trigger này đâu liên quan dì đến nhà cửa ???? nếu muốn trong map có pick hero thì có thể thêm trigger này vào, nếu chỉ muốn random thì xóa đi c

_ Trigger 3 : Random hero và di chuyển đến chỗ chỉ định
 
system hay kết bạn rồi đó nha toàn system tui đang cần
580833443.gif
 
À e hiểu rồi nhưng mỗi người phải ghi -random nó mới random, có cách nào để all random không anh :)
 
muốn all thì thêm vào trigger đó code tương tự .
VD: có 10 player thì thêm 10 dong tạo hero và trừ vào tổng

- - - Updated - - -

Random hero
Events
Player - Player 1 (Red) types a chat message containing -random as An exact match
Conditions
Can_pick[(Player number of (Triggering player))] Equal to True
Actions
Set Random_Hero = (Random integer number between 1 and Total_hero)
Unit - Create 1 Random_system[Random_Hero] for (Triggering player) at (Center of Chon hero <gen>) facing Default building facing degrees
Camera - Pan camera for (Owner of (Last created unit)) to (Center of Chon hero <gen>) over 0.00 seconds
Selection - Select (Last created unit) for (Triggering player)
Player Group - Pick every player in Players_hero and do (Actions)
Loop - Actions
Player - Make (Unit-type of (Last created unit)) Unavailable for training/construction by (Picked player)
Set Random_system[Random_Hero] = Random_system[Total_hero]
Set Total_hero = (Total_hero - 1)
Set Can_pick[(Player number of (Triggering player))] = False
 
Back
Top