Topic hỏi đáp về cách làm map | version 15

Stork[gm];22319757 nói:
Tình hình là mình đang vướng skill Pit of Malice của pit lord (dota). lúc đi vào unit ko bị entangle mặc dù đã chỉnh thế này.

Mã:
Pit of Malice
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Pit of Malice 
Actions
For each (Integer A) from 1 to 24, do (Actions)
Loop - Actions
Special Effect - Destroy PitOfMalice[(Integer A)]
Set PitInteger = (PitInteger + 1)
Set PitInteger2[PitInteger] = (PitInteger2[PitInteger] + 1)
Set PitCaster = (Casting unit)
Set PitPosition = (Target point of ability being cast)
[COLOR="#FF0000"]Set PitGroupDamage = (Units within 350.00 of PitPosition matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) belongs to an enemy of (Owner of PitCaster)) Equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) is in PitG[/COLOR]
Set PitDuration[PitInteger] = 7.00
Sound - Play TempleOfTheDamnedWhat <gen> at 100.00% volume, located at PitPosition with Z offset 0.00
[COLOR="#FF0000"]Unit Group - Pick every unit in PitGroupDamage and do (Actions)[/COLOR]
Loop - Actions
Unit - Create 1 Dummy Unit for (Owner of PitCaster) at PitPosition facing Default building facing degrees
Unit - Add Pit Roots (Passive) to (Last created unit)
Unit - Order (Last created unit) to Night Elf Tree Of Life - Entangle (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
For each (Integer A) from 1 to 24, do (Actions)
Loop - Actions
Set PitTargetPosition = (PitPosition offset by 350.00 towards (15.00 x (Real((Integer A)))) degrees)
Special Effect - Create a special effect at PitTargetPosition using Abilities\Spells\Undead\Graveyard\GraveMarker.mdl
Set PitOfMalice[(Integer A)] = (Last created special effect)
Trigger - Turn on Pit of Malice lock <gen>

Pit of Malice lock
Events
Time - Every 0.10 seconds of game time
Conditions
Actions
Set PitDuration[PitInteger] = (PitDuration[PitInteger] - 0.10)
Unit Group - Pick every unit in PitGroupDamage and do (Actions)
Loop - Actions
Unit - Create 1 Dummy Unit for (Owner of PitCaster) at PitPosition facing Default building facing degrees
Unit - Add Pit Roots (Passive) to (Last created unit)
Unit - Order (Last created unit) to Night Elf Tree Of Life - Entangle (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
PitDuration[PitInteger] Less than or equal to 0.00
Then - Actions
For each (Integer A) from 1 to 24, do (Actions)
Loop - Actions
Special Effect - Destroy PitOfMalice[(Integer A)]
Trigger - Turn off (This trigger)
Unit Group - Remove all units from PitGroupDamageDone
Custom script: call DestroyGroup( udg_PitGroupDamage )
Custom script: call DestroyGroup( udg_PitGroupDamageDone )
Custom script: call RemoveLocation( udg_PitPosition )
Custom script: call RemoveLocation( udg_PitTargetPosition )
Else - Actions
Sai ở chỗ lúc đầu khi cast thì set group = unit trong phạm vi đó, sau đó khi lặp thì vẫn lặp với group đó mà không set lại hoặc add thêm unit nào nữa thì nó vẫn không ảnh hưởng tới những unit đi vào

- - - Updated - - -

sặc! bôi nhầm chỗ rồi, bôi lại nè, mod xóa dùm bài kia dùm em ạ!

- - - Updated - - -

sặc! bôi nhầm chỗ rồi, bôi lại nè, mod xóa dùm bài kia dùm em ạ!

Mình fix xong rồi, ở trên chẳng có vấn đề gì cả, chả cần set đi set lại cho nó lag ra ca ok? sai ở chỗ là cái order nó bị lỗi chứ chả liên quan gì đến group, mình để group y nguyên như cũ và thay lệnh Unit - Order (Last created unit) to Night Elf Tree Of Life - Entangle (Picked unit) = Unit - Order (Last created unit) to Night Elf Tree Of Life - Entangling Roots (Picked unit). Bây giờ mình mới nhận ra là mình set nhầm Entangle và Entangling Roots, 2 cái này nó khác nhau khiến dummy ko cast skill vào con bị pick, sau khi sửa lại mình thấy lại ngon như bt :). Thân
 
Có ai biết cách thay model destructibles ko nhỉ?
Vd cụ thể luôn là thay model tree, có thể chặt,...
 
Chọn một destructibles bất kỳ,đặt target của nó là tree thì nó sẽ bị các ability có target tree tác dụng lên.

Ở đây anh dùng Stone Wall (Diagonal 1),không dùng Replace Texture File
 
Thấy trên hive có cách diasble "smart" 851971 hay "right click" hay nói cách khác là tạo ra các un-coltrol unit
Mã:
function Catch_Order_Actions takes nothing returns nothing
  if GetIssuedOrderId() == OrderId("smart") then
    call PauseUnit(GetOrderedUnit(), true)
    call IssueImmediateOrder(GetOrderedUnit(), "stop")
    call PauseUnit(GetOrderedUnit(), false)
  endif
endfunction

function Catch_Order takes nothing returns nothing
  local trigger t = CreateTrigger()
  call TriggerRegisterUnitEvent(t, gg_unit_hpea_0006, EVENT_UNIT_ISSUED_TARGET_ORDER)
  call TriggerRegisterUnitEvent(t, gg_unit_hpea_0006, EVENT_UNIT_ISSUED_POINT_ORDER)
  call TriggerAddAction(t, function Catch_Order_Actions)
endfunction
nhưng ko hiểu gì về jass nên hỏi cách làm với custom script
Đang cần gấp ai trả lời giùm mình với
 
Mã:
    Events
        Unit - A unit Is issued an order targeting an object
        Unit - A unit Is issued an order targeting a point
    Conditions
        (Issued order) Equal to (Order(smart))
    Actions
        Unit - Pause (Ordered unit)
        Unit - Order (Ordered unit) to Stop
        Unit - Unpause (Ordered unit)
 
vậy cho mình hỏi là liệu làm như vậy có còn order = trigger được ko ,và nếu như vậy thật thì khắc phục ra sao
 
^ Ko vì order = gì thì cũng sẽ khởi động trigger chống smart order kia ....
Nhưng thường người ta dùng add rồi remove Locust để tạo 1 unit ko thể bị điều khiển
 
thank ,mình tìm ra cách rồi ,thật ra thêm 1 condition nữa là unit đó có đang bị select bởi player nữa ko là được :)
Hỏi lại câu hỏi là làm sao để tạo ra 1 Invulnerable ILLUSION (Như 1 unit có LOCUST ý ,ko thể bị select hay atked)
 
Cho mình hỏi:

Lệnh Preload(string) để làm gì ?
1 biến local trong 1 hàm dùng nhiều lần có phải set null nhiều lần với mỗi lần dùng ? Ví dụ set biến local uc = GetTriggerUnit(),sau đó lại set biến uc đó thành một unit khác thì có phải set null trước khi xài tiếp ?



thank ,mình tìm ra cách rồi ,thật ra thêm 1 condition nữa là unit đó có đang bị select bởi player nữa ko là được :)
Hỏi lại câu hỏi là làm sao để tạo ra 1 Invulnerable ILLUSION (Như 1 unit có LOCUST ý ,ko thể bị select hay atked)

Unit - Make (Triggering unit) Invulnerable,select thì được chứ ko thể select thì mình chịu
 
^ Ko thể select thì
Mã:
Melee Initialization
    Events
        Player - Player 1 (Red) Selects a unit
    Conditions
        (Unit-type of (Triggering unit)) Equal to Sorceress
    Actions
        Selection - Clear selection
 
Mọi người có system hay cách nào có thể lưu và nhận lại một unit dùng ít bug lỗi thì share mình với,thanks
 
Cho em hỏi cách làm những trigger dạng "deals more damage if unit alone" dạng skill 3 Spectre đc ko ạ?

VD: mỗi khi đánh, nếu xung quanh DamagedUnit 375 AoE ko có 1 đồng mình nào, slow nó 50%
 
@Ngoc LeO:

Preload là 1 hàm sử dụng để "tải trước" các dữ liệu,model,blp trong map. để có gì khi ra đó sẽ không cần tải data memory nữa!

cái dòng này hãy sử dụng tải script của blizzard chứ bọn mình làm map hay ít quan tâm nó lắm vì nó không có quan trọng lắm!


@Evil_Hunter:

mã của cậu clear select anything cơ đấy! hãy đặt set local player cho nó clear with player!

Mọi người có system hay cách nào có thể lưu và nhận lại một unit dùng ít bug lỗi thì share mình với,thanks

ý bạn là ?
 
@Ngoc LeO:

Preload là 1 hàm sử dụng để "tải trước" các dữ liệu,model,blp trong map. để có gì khi ra đó sẽ không cần tải data memory nữa!

cái dòng này hãy sử dụng tải script của blizzard chứ bọn mình làm map hay ít quan tâm nó lắm vì nó không có quan trọng lắm!


@Evil_Hunter:

mã của cậu clear select anything cơ đấy! hãy đặt set local player cho nó clear with player!



ý bạn là ?

Nghĩa là mình cần một library như kiểu CSData có thể lưu nhận lại một unit mà không có hoặc ít bug lỗi ấy.
 
Bạn nào giúp mình cái này với :
mình tạo spell cho 1 con dummy đến điểm targert point của spell đó và dùng war stomp nhưng mà lại không thể xác định được khi nào thì con dummy đó tới nơi spell (Vì có lúc bấm gần bấm xa ")
 
Mình hỏi ngu cái. Bình thường chơi melee thì Hero kill Neutral Creep đến LV5 là max rồi, ko nhận EXP nữa. Phải sửa ở đâu để nó ko còn bị giới hạn nữa ?
 
Bạn nào giúp mình cái này với :
mình tạo spell cho 1 con dummy đến điểm targert point của spell đó và dùng war stomp nhưng mà lại không thể xác định được khi nào thì con dummy đó tới nơi spell (Vì có lúc bấm gần bấm xa ")

Set TempRealA = (Distance between (A) and (B)) // Khoảng cách từ vị trí đứng của caster A tới vị trí cast B
Set TempRealB = 50 (Tốc độ mà bạn di chuyển dummy đó)
Set TempRealC = TempRealA/TempRealB (Lấy khoảng cách đó chia cho tốc độ là ra số lần bạn di chuyển)

Nếu đặt thời gian là 0.03 giây với khoảng cách A tới B = 1000 và tốc độ là 50 thì 1000/50 = 20*0.03 ==> sau 0.6 giây sẽ tới B
 
Mình hỏi ngu cái. Bình thường chơi melee thì Hero kill Neutral Creep đến LV5 là max rồi, ko nhận EXP nữa. Phải sửa ở đâu để nó ko còn bị giới hạn nữa ?

Advanced => Gameplay Constants => Check dấu use custom gameplay constants => tìm dòng Hero exp gained - creep reduction table xóa số 0 đi hoặc số hết chừa 80
 

Set TempRealA = (Distance between (A) and (B)) // Khoảng cách từ vị trí đứng của caster A tới vị trí cast B
Set TempRealB = 50 (Tốc độ mà bạn di chuyển dummy đó)
Set TempRealC = TempRealA/TempRealB (Lấy khoảng cách đó chia cho tốc độ là ra số lần bạn di chuyển)

Nếu đặt thời gian là 0.03 giây với khoảng cách A tới B = 1000 và tốc độ là 50 thì 1000/50 = 20*0.03 ==> sau 0.6 giây sẽ tới B

Sao phải mắc công vậy, check distance between A và B là được mà '-'.
Mã:
if (Distance between (A) and (B)) <= 100 then....
 
Làm như thế cũng được nhưng nhiều khi vì 1 lí do nào đó từ A đến B ko thể nhỏ hơn 100 được và nó sẽ move mãi mãi (vd : cast vào lề của map =))) ,cách mình thường sử dụng nhất là mỗi lần move thì + distance ,bao h đến giới hạn thì dừng lại .Hoặc thực tế hơn là có thể làm skill này né được bằng Blink nếu là 1 skill cast vào 1 unit di chuyển
Cho em hỏi cách làm những trigger dạng "deals more damage if unit alone" dạng skill 3 Spectre đc ko ạ?

VD: mỗi khi đánh, nếu xung quanh DamagedUnit 375 AoE ko có 1 đồng mình nào, slow nó 50%
Nếu bạn biết làm slow rồi thì chỉ cần thêm 1 điều kiện (Set Group 375AOE xung quanh Target ,số Unit xung quanh Target = 0 ,tức nhiên loại trừ Target ra) thôi
 
Back
Top