Đăng ký

Tham gia : 2013-11-23
Bài gửi : 490
Point : 3488
Nhận thích : 53
Biệt Danh : I am the Wind
Tường Bài viết Kết bạn Chặn

Thủ thuật cơ bản World Editor | Book 2014

Link tải : http://goo.gl/vRaozL | Topic cũ : http://www.phutu.vn/t161-topic
1.Một số mã mà cơ bản:
2.Một player chỉ cầm được 1 item:
3.Cách gắn Model:
4.Cách ép đồ:
5.Cách hồi sinh Unit khi chết:
6.Unit đủ lv thì biến thành con khac:
7.Di chuyển (move):
8.Ra quân:
9.Làm quái rớt tiền và gỗ:
10.Show name của ability :
11.Show damage khi đánh lẫn khi cast spell :
12.Xoa Leak
13.Tạo vòng tròn
14.Tạo LeaderBoard
15.Cách Tạo Dummy Unit
16.Cách Regrowth Trees
17.1 class chỉ cầm được 1 Item:
18.Tạo Dialog
19.Hồi sinh creep

Một số mã mà cơ bản:

|cffff0000text|r
|cff0000fftext|r
|cffffff00text|r
|cffee55bbtext|r
|cff550088text|r
|cffff8800text|r
|cff00ff00text|r
|cff552200text|r


Cách chọn tướng:

Giả sử ta đang muốn tạo một con tướng DemonHunter khi con cừu của player chạy vào vòng tròn .( Nhớ là đã tạo Region chỗ cái vòng )

+++ Events : Unit - Units Enter Region
___________Cái này bạn chọn cái region chỗ cái vòng tròn
+++ Conditions : không có cũng được nếu như bạn tạo hai chỗ chọn tướng cho 2 team .
+++ Actions :
___________ Unit - Create Unit Facing Angel
[ ( số lượng : 1 ) (Unit : DemonHunter ) for [ Owner of Entering Unit ] ( Tại chỗ nào ) ....
___________ Unit - Remove : cái này dùng để làm mất con cừu
[ Remove ( Entering Unit ) from the game ]
___________Camera - Pan Camera .... ( quên rồi nhưng nó thuộc dòng thứ 2 của action Camera )
[ Camera pan camera ...( owner of entering unit ) ___( chỗ camera tới ) ___ ( thời gian : 2 seconds là được rồi ) .
___________Trigger - Turn off : cái này để cho phép Hero chọn có 1 lần
[ Turn ( This trigger ) ... ]

Tạo cừu vào đầu màn chơi :

+++Events : Map
+++Conditions : None
+++Actions : ---- If / Then/ Else
__If : Player Slot Status Comparison
[ Player 1 [red] slot status] Equal to Is playing
__Then do : [ Unit – Create Units Facing Angle]
[ Create [ số lượng : 1 thôi ] [ chọn thằng lính hay con cừu ] for [ player 1 [red] ] at [ chỗ xuất hiện ( bạn gán vào Region chỗ xuất con cừu sẽ đứng ] Facing [ Di chuyển tới đâu ( Khỏi ) ]
__Else do : none
Với cách này bạn sẽ làm lần lượt cho các player khác nếu bạn tạo nhiều user

Reveive Hero (Hồi sinh tướng khi chết)
Code:
Event :
Unit - A unit Dies

Condition :
 ((Dying unit) is A Hero) Equal to True
 (Owner of (Dying unit)) Equal to Player 1 (Red) (Revive cho từng Player)

Action :
 Countdown Timer - Start Timer[1] (Tên Timer biến Timer .. Array 12 theo số lượng Player tối da) as a One-shot timer that will expire in 30.00 seconds
 Countdown Timer - Create a timer window for Timer[1] with title (Name of (Dying unit))
 Wait 30s
 Camera - Pan camera for Player 1 (Red) to (Center of (Nơi hồi sinh hero)) over 1.00 seconds
 Hero - Instantly revive (Dying unit) at (Center of (Nơi hồi sinh hero)), Show revival graphics


Một player chỉ cầm được 1 item:

Vấn đề là 1 player chỉ đc cầm 1 item, theo tui thì làm 2 trigger 1 trigger đánh dấu (tạm gọi là vậy) trong trigger này thì có n variable [item] [array] (với n là số lượng item mà hero chỉ mang đc 1 món, item là tên item, array là số player, variable type là boolean, mặc định giá trị là false). Sau đó bắt đầu đặt câu lệnh
Events:
- A unit accuqires an item
Conditions:
- n/a
Actions:
- If item type of i..... ( quên tên rồi nhưng mà nó bắt đầu bằng chữ i tự mò vậy) equal to [món item mình muốn] then set [item] [player numer of owner of i..... unit (lại quên nữa  ) = true else do nothing
- Nhiều item thì thêm vài câu lệnh như trên
Trigger thứ 2:
Event: như trên
Conditions: n/a
Actions:
- IF
- Conditions:
- OR
- [item] [player number of owner of i.... unit] equal to true
- item type of i.... item equal to [tên item]
-Then
- Oder i..... unit to stop
- Dùng lệnh viết thêm vài dòng chữ cho ng ta biết
-Else do nothing
Có bao nhiêu item thì dùng bấy nhiu hàm if ( hàm if multi đó nha).

Cách gắn Model: http://www.phutu.vn/t161-topic#1229

Gắn item vào Hero.
Bây giờ mình sẽ tạo 1 spell giả rồi give nó cho hero DREADLORD để dùng thanh gươm này.
Mình sẽ chọn ability Armor Bonus +1. bởi phép này khi give cho hero sẽ ko có icon.

Chỉnh sửa phép này nào.
ARMOR BONUS: 0,
'Art - Target' chọn model file vừa down về
'Art - Target Attachment Point 1' điểm dán thứ nhất, mình chọn như bên để dán vào tay trái
'Art - Target Attachments' số điểm trên hero mình sẽ dán item vào, ta chỉ dán 1 nên sẽ chọn 1.
chuyển 'Item Ability' to false, do đó chúng ta có thể give nó cho unit.

--Dán weapon vào item. vd khi Hero nhận item blood sword thì trên tay trái sẽ xuất hiện 1 thanh gươm.
+Thay vì chỉnh sửa 1 unit ability, ta chỉnh 1 item ability, give phép đó cho item, như vậy khi hero nhận item đó, sẽ nhận luôn cái ability ta đã chỉnh, ở đây là được dán thêm 1 thanh gươm vào tay. còn khi hero đánh rơi item, hiệu ứng đó sẽ biến mất.
+/---Tên các điểm có thể dán attachments---
+overhead (trên đầu
+head (ngay tại đầu
+chest (ngực, có thể dán cánh vào đây)
+origin (ngay phần ko gian dưới chân unit)
+hand (tay)
+foot (chân)
+weapon (vũ khí )
+sprite (chỉ dành cho nhà )
+medium (chỉ dành cho nhà )
+arge (chỉ dành cho nhà )
---Attachment Point Modifiers---
+left (trái)
+right (phải)
+mount (dành cho unit cưới thú)
+first (chỉ dành cho nhà )
+second (chỉ dành cho nhà )
+third (chỉ dành cho nhà )
+ourth (chỉ dành cho nhà )
+fifth (chỉ dành cho nhà )
+sixth (chỉ dành cho nhà )
+rallypoint (chỉ dành cho nhà )

Cách ép đồ:

Về ghép nhiều item khác nhau thành 1 item khác.mình sẽ chỉ cái dễ nhất:

Super Item
Events
Unit - A unit Acquires an item
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Hero manipulating item) has an item of type Orb of Frost) Equal to True
((Hero manipulating item) has an item of type Orb of Fire) Equal to True
((Hero manipulating item) has an item of type Orb of Lightning) Equal to True
Then - Actions
Item - Remove (Item carried by (Hero manipulating item) of type Orb of Frost)
Item - Remove (Item carried by (Hero manipulating item) of type Orb of Fire)
Item - Remove (Item carried by (Hero manipulating item) of type Orb of Lightning)
Item - Create Claws of Attack +15 at (Center of (Playable map area))
Special Effect - Create a special effect at (Position of (Hero manipulating item)) using Abilities\Spells\Items\AIam\AIamTarget.mdl
Special Effect - Destroy (Last created special effect)
Hero - Give (Last created item) to (Hero manipulating item)
Else - Actions

Cách hồi sinh Unit khi chết:

Tao Unit
Events
Time - Elapsed game time is 5.00 seconds
Conditions
Actions
Unit - Create 1 Footman for Player 1 (Red) at (Center of (Playable map area)) facing Default building facing degrees

Unit Chet
Events
Unit - A unit Dies
Conditions
(Unit-type of (Dying unit)) Equal to Footman
Actions
Unit - Create 1 Knight for Player 1 (Red) at (Center of (Playable map area)) facing Default building facing degrees

Hồi sinh unit chết ( ko dùng region )
Events
   Unit - A unit owned by Player 12 (Brown) Dies
Actions
   Wait 30.00 seconds
   Unit - Create 1 (Unit-type of (Triggering unit)) for (Owner of (Triggering unit)) at (Position of (Triggering unit)) facing Default building facing degrees

Khi Unit đủ lv thì biến thành con khac:

CÁi tiến hóa thì làm như sau
Tạo trigger
Event
Unit-a unit gain a level
Condition
Level of leveling unit is greater than or equal to x lv(thay x =1,2,3,4,5,6... tùy bạn)
Action
Unit-Remove leveling unit from the game
Unit-Create x(số lượng) y(unit tùy bạn) for owner of Leveling unit at xxx(region nào tùy bạn)

Di chuyển (move):

Di chuyển (biến qua Regions) ( Move)
+++Event : Unit-Unit enters Regions
+++Condition:
+++Move Unit ( Instantly) [ .... instantly to ...... ]

Ra quân:

Bạn cũng tạo những Regions từ chỗ xuất phát và xác định chỗ đến .
Sau đó tạo một New Trigger
+++ Event : Time – Time Elapsed [ Time : thời gian units sẽ ra ( bạn nên sát định đúng thời gian cho từng đợt ra quân ) ]
+++ Condition
+++ Action : Unit – Unit Create Unit Facing Angel
[ Create [ số lượng : 1 (có thể thay đỏi) ] [ Loại lính ] for [ Thuộc về đội nào ] at [ chỗ xuất hiện ( bạn gán vào Region muốn lính xuất hiện) ] Facing [ Hướng của unit ) ]
Nếu bạn muốn nó di chuyển đến nhà địch thì làm thêm 1 trigger:
_____Nhớ tạo quân 2 bên ra cho đều nha.
+++Event: Time-Periodic Event: Every [time] seconds of game times.
+++Condition:none
+++Action:unitgroup-
[Last creat unit (region nơi quân xuất hiện) own by player[phe đó] attack move to [region nơi đặt nhà địch]

Làm quái rớt tiền và gỗ:
Mấy bạn muốn units chết sẽ rớt tiền và gỗ ra thì trước hết vào trigger làm cái này :
Events : Map Initialization
Conditons : None
Actions : Player - Turn Player Flag On/Off
________Turn GiveBounty On for ( chọn Player )
Tiếp theo là vào Object Editor rồi vào mí con Unit mà bạn muốn nó chết sẽ rơi tiền và gỗ ra .Tìm hai mục sau :
Stat - Gold Bounty Awarded Base : [ số tiền ]
Stat - Lumber Bounty Awarded Base : [ số gỗ ]

Show name của ability :

Show Spell
Events
Unit - A unit Begins casting an ability
Conditions
Actions
Floating Text - Create floating text that reads (|cff00ffff + ((Name of (Ability being cast)) + |r)) above (Triggering unit) with Z offset 0.00, using font size 20.00, color ((100.00 + 100.00)%, (100.00 + 100.00)%, 100.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 3.00 seconds

Show damage khi đánh lẫn khi cast spell :

Show Damage
Events
Time - Every 5.00 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in (Units in Arena <gen>) and do (Actions)
Loop - Actions
Trigger - Add to Show Damage Loop <gen> the event (Unit - (Picked unit) Takes damage)
Custom script: set bj_wantDestroyGroup = true
Show Damage Loop
Events
Conditions
Actions
Floating Text - Create floating text that reads (|cff00ffff + ((String((Damage taken))) + |r)) above (Triggering unit) with Z offset 0.00, using font size 8.00, color (100.00%, 0.00%, 0.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 the color of (Last created floating text) to (100.00%, (100.00 x 2.00)%, 100.00%) with 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
Floating Text - Change the fading age of (Last created floating text) to 2.00 seconds

Xoa Leak
Custom script:   call RemoveLocation (udg_Temp_Point)//Point
Code:
Custom script: call DestroyForce( udg_Your_Variable ) //Player Group
Code:
Custom script:   call RemoveRect(udg_Your_Variable) //Region
Code:
Custom script: call DestroyLightning( udg_Your_Variable ) //Lightning Effect
Code:
Custom script: call DestroyTextTag( udg_Your_Variable ) //Floating Text
Code:
Custom script: call DestroyTimer( udg_Your_Variable ) //Countdown Timer
Code:
Custom script:   call DestroyTrigger( GetTriggeringTrigger() )
Code:
Custom script: call DestroyTimer( udg_Your_Variable ) //Countdown Timer
Code:
Custom script:   call DestroyTrigger( GetTriggeringTrigger() )

Tạo vòng tròn
Code:
For each (Integer A) from 1 to x, do (Actions)
    Loop - Actions
        Unit - Create 1 Unit for (Owner of (Unit)) at ((Position of (Unit)) offset by y towards ((360.00 / x) x (Real((Integer A)))) degrees) facing Default building facing degrees
Trong đó, x là số unit tạo ra, y là khoảng cách từ tâm của vòng.

Tạo LeaderBoard

Tạo leaderboard thì khá đơn giản, cần 1 biến (variable) name: TomLeaderboard, type là leaderboard. 1 biến mảng (variable array) name: PlayerValue, type: Integer để lưu giá trị cho mỗi player
Code:
CreateBoard
    Events
        Time - Elapsed game time is 0.00 seconds
    Conditions
    Actions
        Leaderboard - Create a leaderboard for (All players) titled Score Board //tạo 1 board với tiêu đề (ở đây là "Score Board"
        Set TomLeaderboard = (Last created leaderboard)       //lưu board mới tạo vào biến
        Leaderboard - Add Player 1 (Red) to TomLeaderboard with label Tom Kazansky and value 0 //thêm player 1 vào board với tiêu đề (có thể là tên player hoặc gì cũng đc ) là Tom Kazansky
        Leaderboard - Add Player 2 (Blue) to TomLeaderboard with label RexAnthony and value 0 //thêm player 2 vào board
        Leaderboard - Add Player 3 (Teal) to TomLeaderboard with label god_of_the_noob and value 0 //thêm player 3 vào board
        For each (Integer A) from 1 to 12, do (Actions) //loop này để đặt giá trị là 0 cho mọi player (3 player chắc chỉ cần from 1 to 3 là đủ)
            Loop - Actions
                Set PlayerValue[(Integer A)] = 0
Create xong thì cần update board đó, ví dụ update khi kill
Code:
BoarUpdate
    Events
        Unit - A unit Dies
    Conditions  // tất nhiên cần thêm điều kiện
    Actions
        Set i = (Player number of (Owner of (Killing unit))) //i là 1 biến integer, biến này tạo ra để dùng tạm
Set PlayerValue[i] = (PlayerValue[i] + 1)   // thêm giá trị vào biến giá trị của player
        Leaderboard - Change the value for (Player(i)) in TomLeaderboard to PlayerValue[i] // bây giờ thay đổi giá trị của board cho player killer
Từ I là index của player killer ( tựa như Player 1 -> index là 1)
Player(I) là Conversion - Convert Player Index To Player <- Player(1) = player 1

Cách Tạo Dummy Unit

+ Ability Normal - Chọn spell: Gán cho unit ability locust của unit.
+ Art - Animation - Blend time = 0
+ Art - Animation - Cast Backswing = 0
+ Art - Animation - Run speed = 0
+ Art - Animation - Walk speed = 0
+ Art - Death Time = 0
+ Art - Maximum Pitch Angle = 0
+ Art - Maximum Roll Angle = 0
+ Art - Model File : .mdl
+ Art - Project Impact -Z = 0
+ Art - Project Launch -Z = 0
+ Art - Propulsion Window = 1
+ Combat - Defense Type = Divine
+ Movement - Speed = 0
+ Movement - Type = Fly
+ Path - Collision Size = 0
+ Sound - Unit sound set = NONE
+ Stats - Food Cost = 0
+ Stats - Hide Minimap Display = True
+ Stats - HitPoint Regen Type = NONE
+ Stats - Mana intial amount = 500
+ Stats - Mana Maximum = 500
+ Stats - Mana Regen = 0
+ Stats - Sign Radius (day) = -10000 (Giữ Shift + click vào phần này để có thể thêm dấu - vào trước)
+ Stats - Sign Radius (night) = -10000 (Giữ Shift + click vào phần này để có thể thêm dấu - vào trước)
+ Stats - Unit classification = Undead hoặc Ward Hoặc tốt nhất là NONE ko để gì
+TechTree . Bỏ hết phần xây dựng và Upgrade

Cách Regrowth Trees

RegrowthTreesInit
Code:
   Events
        Time - Elapsed game time is 0.00 seconds
    Conditions
    Actions
        Destructible - Pick every destructible in (Playable map area) and do (Actions)
            Loop - Actions
Trigger - Add to RegrowthTrees <gen> the event (Destructible - (Picked destructible) dies)
RegrowthTrees
Code:
   Events
    Conditions
    Actions
        Wait 60.00 seconds
        Destructible - Resurrect (Dying destructible) with (Max life of (Dying destructible)) life and Show birth animation

1 class chỉ cầm được 1 Item:

Cần các biến:
TTempUnit (Type Var: Unit)
TTempItem (Type Var: Item)
TTempItem2 (Type Var: Item)
TTempItemClass (Type Var: Item-Class)
TTempItemInteger (Type Var: Integer)
Code:
Events
    Unit - A unit Acquires an item
Conditions bỏ qua
Actions
    Set TTempUnit = (Hero manipulating item) //Set TTempUnit = Unit nhận đc Item đó.
    Set TTempItem = (Item being manipulated) //Set TTempItem = Item mà Unit nhận đc.
    Set TTempItemClass = (Item-class of TTempItem) //Set TTempItemClass = Class của Item.
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
        Or - Any (Conditions) are true
            Conditions
                TTempItemClass Equal to Campaign
                TTempItemClass Equal to Purchasable
                TTempItemClass Equal to Permanent
                TTempItemClass Equal to Artifact
For each (Integer TTempInteger) from 1 to 6, do (Actions)
    Loop - Actions
        Set TTempItem2 = (Item carried by TTempUnit in slot TTempInteger)
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                TTempItem2 Not equal to TTempItem
            Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Item-class of TTempItem2) Equal to TTempItemClass
                    Then - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                TTempItemClass Equal to Permanent
                            Then - Actions
                                Game - Display to (Player group((Owner of TTempUnit))) the text: Can't takes two Per...
                            Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                TTempItemClass Equal to Artifact
                            Then - Actions
                                Game - Display to (Player group((Owner of TTempUnit))) the text: Can't takes two Art...
                            Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                TTempItemClass Equal to Purchasable
                            Then - Actions
                                Game - Display to (Player group((Owner of TTempUnit))) the text: Can't takes two Pur...
                            Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                TTempItemClass Equal to Campaign
                            Then - Actions
                                Game - Display to (Player group((Owner of TTempUnit))) the text: Can't takes two Cam...
                            Else - Actions
                        Hero - Drop TTempItem from TTempUnit
                        Skip remaining actions
                    Else - Actions
            Else – Actions

Tạo Dialog

Cần các biến:


Làm 3 trigger
Trigger1:
Code:
Envents
 Time – Elapsed game time is 1 seconds
Conditions
Actions
 Dialog – Clear MyDialog
 Dialog – Change the title of MyDialog to Do you want some gold?
 Dialog – Create a dialog button for MyDialog labelled Yes
 Set DialogButton[1] = (Last created dialog Button)
 Dialog – Create a dialog button for MyDialog labelled No
 Set DialogButton[2] = (Last created dialog Button)
 Dialog – Show MyDialog for player 1 (Red)
Trigger 2:
Code:
Events
 Dialog – A dialog button is clicked for MyDialog
Conditions
 (Clicked dialog button) Equal to DialogButton[1]
Actions
 Player – Add 100 gold …
 Game – Display to Player Group …
Trigger 3:
Code:
Events
 Dialog – A dialog button is clicked for MyDialog
Conditions
 (Clicked dialog button) Equal to DialogButton[2]
Actions
 Game – Display to Player Group …

Nhập Item :

Trigger:
Code:
  Events
        Unit - A unit Acquires an item
    Conditions
        (Charges remaining in (Item being manipulated)) Greater than 0
    Actions
        Set TempUnit = (Hero manipulating item)
        Set TempItem = (Item being manipulated)
        For each (Integer A) from 1 to 6, do (Actions)
            Loop - Actions
                Set TempItem2 = (Item carried by TempUnit in slot (Integer A))
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Item-type of TempItem2) Equal to (Item-type of TempItem)
                        TempItem2 Not equal to TempItem
                    Then - Actions
                        Item - Set charges remaining in TempItem2 to ((Charges remaining in TempItem2) + (Charges remaining in TempItem))
                        Hero - Drop TempItem from TempUnit
                        Item - Remove TempItem
                        Skip remaining actions
                    Else – Actions

Hồi sinh creep



Trigger 1 :
Code:
Events
        Map initialization
    Conditions
    Actions
        Unit Group - Pick every unit in (Units in (Playable map area) owned by Neutral Hostile) and do (Actions)
            Loop - Actions
                Set Integer = (Integer + 1)
                Unit - Set the custom value of (Picked unit) to Integer
                Custom script:   set udg_Creep_X[udg_Integer] = GetUnitX(GetEnumUnit())
                Custom script:   set udg_Creep_Y[udg_Integer] = GetUnitY(GetEnumUnit())
Trigger 2 :
Code:
  Events
        Unit - A unit Dies
    Conditions
        ((Owner of (Triggering unit)) Equal to Neutral Hostile) and (((Triggering unit) is Summoned) Not equal to True)
    Actions
        Wait 5.00 game-time seconds
        Unit - Create 1 (Unit-type of (Triggering unit)) for Neutral Hostile at ((Center of (Entire map)) offset by (Creep_X[(Custom value of (Triggering unit))], Creep_Y[(Custom value of (Triggering unit))])) facing (Random angle) degrees
        Unit - Set the custom value of (Last created unit) to (Custom value of (Triggering unit))



Last edited by Phu Tu on 22/4/2014, 15:08; edited 4 times in total (Reason for editing : www.phutu.vn)

View user profile
Tầng 1 on 22/4/2014, 14:48


Tên truy cập