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

Status
Không mở trả lời sau này.

Tom_Kazansky

<b><font color="RoyalBlue"><font face="Lucida Cons
Anh em có vấn đề gì về cách làm map hãy hỏi, ai biết sẽ trả lời.

Nghiêm cấm việc:
- ko trả lời mà cứ chat nhảm 3:-O
- trả lời ko rõ ràng :@)
- trả lời với "hình như"

Khi trả lời nếu có trigger phải cho vào code tag: [code]<trigger cho vô đây>[/code] hoặc dùng biểu tượng:
code.gif


Trả lời câu hỏi của ai, ở post nào phải quote (trích dẫn) rõ ràng. :bz

ai muốn "thank" người đã giúp mình thì thay vì post 1 bài nói thank hãy click vào biểu tượng
reputation-40b.png
để thank :) (chú ý: ai chưa post đủ 50 bài sẽ ko thấy nút "Thanks", muốn thank thì vào profile của ng` kia, dùng VM (Visitor Message - Lời Nhắn) để thank)

à trước khi hỏi gì, hãy đọc các topic chú ý:
- Một số bài viết đáng chú ý của box
- Tổng hợp các bài hướng dẫn
- WE - object toàn thư
Đồng thời tìm kiếm trong 8 topic hỏi đáp:
----
ai có vấn đề gì ở topic cũ mà chưa đc trả lời hãy quote sang đây (chỉ đc quote 24h 1 lần với mỗi vấn đề chưa đc trả lời)
 
Sao các biến như Unit, Point, Integer, Real, Boolean... dùng array thì size=1 cũng ổn, nhưng timer lại phải tăng size lên cho phù hợp nhỉ? Hay là chỉ 1 số trường hợp thôi?
 
size ở đây là số index được đặt giá trị khởi tạo

với timer, phải được "khởi tạo" (trong JASS là CreateTimer() ) thì mới chạy được
ví dụ đặt size = 5 vậy có index từ 0 -> 5 là có CreateTimer() => dùng được, các index sau đó đều là null ("No Timer") nên không dùng được
(lẽ ra 5 thì chỉ 0 -> 4 nhưng theo script export ra thì lại là 0 -> 5, chắc Blizzard để vậy cho người nào dùng index từ 1 )

việc đặt size sao cho phù hợp thì... tùy, dùng bao nhiêu đặt bấy nhiêu (tuy nhiên đừng cao quá nhé, có người từng để 1000 và hậu quả là script bị "đơ" =)))
ví dụ: với ability X, level 1 dùng 3 timer, level 2 dùng 5 timer => nên đặt size = 5
 
Chỉnh sửa cuối:
Mình có 1 skill dùng 2 trigger thế này:

Mã:
[B]Arcane Swirl[/B]
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Arcane Swirl 
    Actions
        Set SwirlCaster[(Player number of (Owner of (Triggering unit)))] = (Triggering unit)
        Set SwirlPoint[(Player number of (Owner of (Triggering unit)))] = (Target point of ability being cast)
        Set SwirlSlide[(Player number of (Owner of (Triggering unit)))] = 36
        Set SwirlLevel2[(Player number of (Owner of (Triggering unit)))] = (Level of (Ability being cast) for (Triggering unit))
        Set EffectGroup[(Player number of (Owner of (Triggering unit)))] = (Create Unit Group)
        Trigger - Turn on Swirl Count <gen>

Mã:
[B]Swirl Count[/B]
    Events
        Time - Every 0.01 seconds of game time
    Conditions
    Actions
        For each (Integer Swirl) from 1 to 12, do (Actions)
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        SwirlSlide[Swirl] Greater than 0
                    Then - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                SwirlSlide[Swirl] Greater than 1
                            Then - Actions
                                Set SwirlLevel = SwirlLevel2[Swirl]
                                Set TempReal = (175.00 + (25.00 x (Real(SwirlLevel))))
                                Set SwirlGroup = (Units within (TempReal + 20.00) of SwirlPoint[Swirl] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy
                                Unit Group - Pick every unit in SwirlGroup and do (Actions)
                                    Loop - Actions
                                        Unit Group - Add (Picked unit) to EffectGroup[Swirl]
                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            If - Conditions
                                                (Level of Lazer Attachment (+1) for (Picked unit)) Equal to 0
                                            Then - Actions
                                                Unit - Add Lazer Attachment (+1) to (Picked unit)
                                            Else - Actions
                                Unit Group - Pick every unit in SwirlGroup and do (Actions)
                                    Loop - Actions
                                        Set TempLoc = (Position of (Picked unit))
                                        Set TempAngle = ((Angle from SwirlPoint[Swirl] to TempLoc) - 5.00)
                                        Set TempReal2 = (Distance between SwirlPoint[Swirl] and TempLoc)
                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            If - Conditions
                                                TempReal2 Greater than or equal to (TempReal - 10.00)
                                            Then - Actions
                                                Set TempLoc2 = (SwirlPoint[Swirl] offset by TempReal towards TempAngle degrees)
                                            Else - Actions
                                                Set TempLoc2 = (SwirlPoint[Swirl] offset by (TempReal2 + 10.00) towards TempAngle degrees)
                                        Unit - Move (Picked unit) instantly to TempLoc2
                                        Unit - Cause SwirlCaster[Swirl] to damage (Picked unit), dealing ((Real(SwirlLevel)) x (TempReal2 / 125.00)) damage of attack type Spells and damage type Magic
                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            If - Conditions
                                                ((Picked unit) has buff Slow) Equal to True
                                            Then - Actions
                                                Unit - Cause SwirlCaster[Swirl] to damage (Picked unit), dealing ((Real(SwirlLevel)) x (TempReal2 / 250.00)) damage of attack type Spells and damage type Magic
                                            Else - Actions
                                        Unit Group - Remove (Picked unit) from SwirlGroup
                                        Custom script:   call RemoveLocation (udg_TempLoc)
                                        Custom script:   call RemoveLocation (udg_TempLoc2)
                                Set SwirlSlide[Swirl] = (SwirlSlide[Swirl] - 1)
                                Custom script:   call DestroyGroup( udg_SwirlGroup )
                            Else - Actions
                                [I]If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    If - Conditions
                                        And - All (Conditions) are true
                                            Conditions
                                                (SwirlCaster[Swirl] is alive) Equal to True
                                                (Level of Focus Magic  for SwirlCaster[Swirl]) Greater than 0
                                                (ArcaneOrb[Swirl] is dead) Equal to True
                                    Then - Actions
                                        Set TempPoint = (Position of SwirlCaster[Swirl])
                                        Set Integer = (Random integer number between 1 and 5)
                                        Set TempInt = (Number of units in EffectGroup[Swirl])
                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            If - Conditions
                                                Integer Less than or equal to TempInt
                                            Then - Actions
                                                Unit Group - Add SwirlCaster[Swirl] to SpellProcGroup
                                                Set ArcaneCooldown[Swirl] = 0
                                                Unit - Create 1 Arcane Orb1 for (Owner of SwirlCaster[Swirl]) at TempPoint facing Default building facing degrees
                                                Set ArcaneOrb[(Player number of (Owner of SwirlCaster[Swirl]))] = (Last created unit)
                                                Unit - Add a 15.00 second Generic expiration timer to ArcaneOrb[(Player number of (Owner of SwirlCaster[Swirl]))]
                                                Floating Text - Create floating text that reads Focus Magic! at TempPoint with Z offset 10.00, using font size 10.00, color (70.00%, 0.00%, 30.00%), and 0.00% transparency
                                                Floating Text - Hide (Last created floating text) for (All players matching ((Matching player) Not equal to (Owner of SwirlCaster[Swirl])))
                                                Floating Text - Change (Last created floating text): Disable permanence
                                                Floating Text - Change the lifespan of (Last created floating text) to 3.00 seconds
                                                Floating Text - Change the fading age of (Last created floating text) to 0.00 seconds
                                                Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees[/I]
                                               
                                            Else - Actions
                                        Custom script:   call RemoveLocation (udg_TempPoint)
                                    Else - Actions
                                Unit Group - Pick every unit in EffectGroup[Swirl] and do (Actions)
                                    Loop - Actions
                                        Unit - Cause SwirlCaster[Swirl] to damage (Picked unit), dealing 4.00 damage of attack type Spells and damage type Normal
                                        Unit - Remove Lazer Attachment (+1) from (Picked unit)
                                        Unit Group - Remove (Picked unit) from EffectGroup[Swirl]
                                Custom script:   call DestroyGroup(udg_EffectGroup[udg_Swirl])
                                Custom script:   call RemoveLocation (udg_SwirlPoint[udg_Swirl])
                                Set SwirlSlide[Swirl] = 0
                    Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                And - All (Conditions) are true
                                    Conditions
                                        SwirlSlide[1] Equal to 0
                                        SwirlSlide[2] Equal to 0
                                        SwirlSlide[3] Equal to 0
                                        SwirlSlide[4] Equal to 0
                                        SwirlSlide[5] Equal to 0
                                        SwirlSlide[6] Equal to 0
                                        SwirlSlide[7] Equal to 0
                                        SwirlSlide[8] Equal to 0
                                        SwirlSlide[9] Equal to 0
                                        SwirlSlide[10] Equal to 0
                                        SwirlSlide[11] Equal to 0
                                        SwirlSlide[12] Equal to 0
                            Then - Actions
                                Trigger - Turn off (This trigger)
                                Game - Display to (All players) the text: off  
                                Skip remaining actions
                            Else - Actions

Trong đó Arcane Swirl là skill sử dụng trigger, Focus Magic là skill passive hỗ trợ nó, khi mình test, dùng skill bình thường thì không (hoặc chưa) thấy vấn đề gì, nhưng nếu có skill passive kèm theo thì dùng vài lần là có hiện tượng giật nên mình nghi nó bị leak ở phần in nghiêng. Tuy nhiên kiểm tra đi kiểm tra lại vẫn không thấy leak nó ở chỗ nào, nhờ mọi người xem giùm @@
 
Em thấy cái host bot dùng để tạo host trung gian cho map (dùng trên garena,chủ yếu là dota) có chức năng cấm chat.Có thể dùng trigger để làm việc này đc ko .Cụ thể là gõ command có đạng -load xxxxx thì nó chỉ đọc nội dung thôi (cho em hỏi lun cách đọc string phía sau chữ -load hay tương tự vậy),ko hiển thị ra.Đại khái là em định làm map có thể save/load đc ,nhưng sợ có người gõ đại rồi đc cái hero max lv ,max item hay dại loại như vậy.Thanks trước
 
cho em hỏi làm sao để cho 1 boss sau 5' hiện ra trên 1 region ... sau khi giết xg thì 2' sau ra 1 con khác ?
Và làm sao để cho 2 team duel vs nhau ... team nào thắng thì hiện lên màn hình , + 5000 gold cho các player team đó và trở về vị trí lúc trước khi duel ( như trong Maptonghop )
 
Em thấy cái host bot dùng để tạo host trung gian cho map (dùng trên garena,chủ yếu là dota) có chức năng cấm chat.Có thể dùng trigger để làm việc này đc ko .Cụ thể là gõ command có đạng -load xxxxx thì nó chỉ đọc nội dung thôi (cho em hỏi lun cách đọc string phía sau chữ -load hay tương tự vậy),ko hiển thị ra.Đại khái là em định làm map có thể save/load đc ,nhưng sợ có người gõ đại rồi đc cái hero max lv ,max item hay dại loại như vậy.Thanks trước
Dùng trigger cấm chat chưa nghe bao h cả. Còn cái này là lấy string xxxx từ -load xxxx
Mã:
    Events
        Player - Player 1 (Red) types a chat message containing -load as A substring
    Conditions
    Actions
        Set string = (Substring((Entered chat string), 7, (Length of (Entered chat string))))
Sợ người ta chat đại mà được lên lv hay item thì bạn nên tạo hệ thống mật mã riêng cho mình, như Final Fantasy RPG mình chơi chả bao h load bậy được.
Edit Post: Xem thử cái này.

Mình có 1 skill dùng 2 trigger thế này:
Trong đó Arcane Swirl là skill sử dụng trigger, Focus Magic là skill passive hỗ trợ nó, khi mình test, dùng skill bình thường thì không (hoặc chưa) thấy vấn đề gì, nhưng nếu có skill passive kèm theo thì dùng vài lần là có hiện tượng giật nên mình nghi nó bị leak ở phần in nghiêng. Tuy nhiên kiểm tra đi kiểm tra lại vẫn không thấy leak nó ở chỗ nào, nhờ mọi người xem giùm @@
Đoạn in nghiêng chả thấy gì cả, bạn thử thay thời gian 0.04 và call RemoveLocation(udg_xxxx) >> tại sao có dấu cách nhỉ
 
Chỉnh sửa cuối:
Cho tôi hỏi sao để cho một map như Worl Cup mà thay vì đó là bóng chày
Cho tôi xin một số Trigger sau :
1/ Cầm bóng khi chội được
2/ Đánh bóng, bóng sẽ bay
3/ Chạy qua 9 móc rồi tới khung thành là thắng
 
Cho hỏi spell Breath of Fire khi cast mình ko thấy data-damege per second mà chỉ thấy data-damage sao kì zậy . Thanks
 
cho em hỏi làm sao để cho 1 boss sau 5' hiện ra trên 1 region ... sau khi giết xg thì 2' sau ra 1 con khác ?
Và làm sao để cho 2 team duel vs nhau ... team nào thắng thì hiện lên màn hình , + 5000 gold cho các player team đó và trở về vị trí lúc trước khi duel ( như trong Maptonghop )
1) Vì ko có WE ở đây nên mình chỉ nói nội dung cách làm. Khi khởi tạo set biến unit-type array BossType[....] theo thứ tự 1,2,3 là thứ tự boss ra. Tạo biến: 1 integer Num, 1 unit Boss.
Trigger 1
Event Times elasped in 5 phút
Action Unit - tạo 1 unit BossType[1] ở Region. Set Boss = last created unit. Set Num =1
Trigger 2
Event A unit dies
Condition Dying unit == Boss
Action Wait 2 phút. Set Num=Num + 1. Tạo 1 unit BossType[Num] ở Region. Set Boss = last created unit

2) Đâu đó cái mẫu Duel ở đây

Cho hỏi spell Breath of Fire khi cast mình ko thấy data-damege per second mà chỉ thấy data-damage sao kì zậy . Thanks
Phải có Buff Drunken Haze.
 
Chỉnh sửa cuối:
LoneWolf ơi
Bây giờ mình mún chọn Hero kiểu gì vậy?(VD:mình click vào con arthas chẳng hạn thì Mình chọn con hero đó)và chỉ hộ mình là mỗi Player chỉ đc chọn 1 Hero :|
Thanks Lone trước nha ;) Mới là newbie :)
 
LoneWolf ơi
Bây giờ mình mún chọn Hero kiểu gì vậy?(VD:mình click vào con arthas chẳng hạn thì Mình chọn con hero đó)và chỉ hộ mình là mỗi Player chỉ đc chọn 1 Hero :|
Thanks Lone trước nha ;) Mới là newbie :)

Map Initialition cho chọn duy nhất 1 hero
cái này bạn có thể tham khảo trong map melee của Blizzard
còn pick như bạn nói thì dùng trigger,mình chỉ có thể gợi ý để bạn làm thôi chứ mình chưa viết trigger này baoh ^^:
tạo 1 region
đặt 1 dummy model arthas vào đó,có locust ability
tạo 1 region khác tại nơi nào đấy bạn muốn hero được pick sẽ hiện ra
NẾU 1 con cừu đi vào region arthas THÌ có hero arthas xuất hiện ở region 2 NẾU KHÔNG thì không có gì xảy ra (dùng lệnh IF THEN ELSE )
Còn nếu bạn muốn click vào có luôn hero thì nên dùng tavern trong dota sẽ nhanh và tiện hơn
http://world-editor-tutorials.thehelper.net/herotavern.php
^^
 
LoneWolf ơi
Bây giờ mình mún chọn Hero kiểu gì vậy?(VD:mình click vào con arthas chẳng hạn thì Mình chọn con hero đó)và chỉ hộ mình là mỗi Player chỉ đc chọn 1 Hero :|
Thanks Lone trước nha ;) Mới là newbie :)
Đọc
Và đây là câu trả lời cụ thể.
Chọn hero bằng cách click đúp.
 
mọi người cho mình hỏi luôn
1 spell channel sang không channel như thế nào
vd: skill hút máu phải đứng yên,nhưng mình muốn có thể chạy nhảy loăng quăng mà vẫn không bị mất thì làm ntn
 
1 tính làm 1 cái hệ thống duel ... trong tut ở gamevn thì em có xem rùi nhưng đó chỉ dành cho đánh thuờg ( vì khi đánh xog hết thì hk ra ngoài được ) ... vậy ai có thể giúp em làm sao để ktra số lượg hero còn của mỗi team ... nếu hero team 1 = 0 thì team 2 win ... các hero dc trở về nơi đứng trước khi duel
 
Mình cho stats-buff Drunken Haze rùi mà có thấy data-damege per second đâu. Bạn Lone có thể giải thích rõ hơn đc ko Thanks nhìu
 
Status
Không mở trả lời sau này.
Back
Top