Topic hỏi đáp (tập 5) về cách làm map

Status
Không mở trả lời sau này.
ai có cái System tính tổng damage từ 1 unit gây ra cho bản thân mình trong x giây ko
 
có ai cho hỏi, khi kill unit rớt item k? (create)
thì khi đó, jass có event item đó ko?

với item rơi ra từ unit mà được đặt sẵn thì không có

còn item mà rơi ra do trigger sau "A unit dies" thì khỏi cần.

YAN[asian];15767490 nói:
Cho hỏi cách :
1. Làm 1 unit bị giảm attack range (tất nhiên là với ranger) và movement speed, càng cầm nhiều item càng giảm.
2. Ép đồ bằng ngọc như trong map của Rex (ko nhớ tên) và map Fday của Kan, cụ thể là ấn cái item "ngọc" vào item muốn ép ấy thì ra 1 item mới.

1. tăng/giảm attack range như vậy là không thể, sử dụng 2 upgrade (1 tăng, 1 giảm) thì có khả năng nhưng cũng có giới hạn. Về move speed thì mỗi item cho một ability Item Move Speed Bonus có giá trị âm.

Stork[gm];15769705 nói:
bạn nghĩ poison nova có intial damage ko? tốt nhất nên dùng triggers

ng` ta tạo spell thì ng` ta thích có initial damage hay không là do ng` ta chứ, nghĩ gì nữa =))
dùng trigger thế nào nhỉ? demo phát nào 8-|

------
@kissofaries, Phoenix Fire có kill unit mà
 
còn item mà rơi ra do trigger sau "A unit dies" thì khỏi cần.
ý mình là hỏi cái item này để đặt thời gian remove cho item đó
vậy Tom có event item này ko?
 
do trigger tức là bản thân mình viết cái dòng Create Item khi một unit chết rồi mà hỏi item đó làm gì?

Ví dụ:
Mã:
Drop Item
    Events
        Unit - A unit Dies
    Conditions
        (Unit-type of (Triggering unit)) Equal to Footman
    Actions
        Set TempPoint = (Position of (Triggering unit))
        Item - Create Tome of Experience at TempPoint
        Custom Script: call RemoveLocation( udg_TempPoint )
Last Created Item là item vừa được tạo ra, muốn làm gì nó thì làm
 
ai biết cách như trong dday có một mã bấm xong có thể không được giao dịch tài nguyên gì hok
như là hok cho dòn tiền gì nóa :D
mã kia kick hoạt bằng cái gì sao mình kiếm ko thấy??
 
Cho hỏi cách làm 1 skill Jass đơn giản. Nếu convert từ GUI -> Jass thì ko có cái Local Var. Cho hỏi luôn Local Var và Gobal Var khác nhau thế nào ?? Cái nào để làm MUI ???
P/s: Nếu muốn làm Damage Spell = damage base của hero thì có phải dùng lệnh GetUserData() ko ???
Ai chỉ giúp cái này, đang tập tành làm Jass
 
@tom
Bài này sẽ hướng dẫn cách hồi sinh hero như DDay: có thời gian theo level của hero, có hiện thời gian đếm ngược.
-----------------------------------
Đầu tiên là vô Region Pallete. Trên menu của WE, Layer \ Region hoặc tại Terrain Editor, ấn "R".

Tạo 2 region là vị trí revive của team 1 và team 2. Của Tom là Team1 HeroReviveTeam2 HeroRevive (xem map demo)
------------------------------------
Sau đó vào Trigger Editor:

Variable: ấn Ctrl + B để tạo

HeroForRevive - Unit Array 12 (12 là số player, size khởi tạo của array)
ReviveTimer - Timer Array 12 (size khởi tạo mà để là 1 thì có lỗi)
ReviveTimerWindow - Timer Window Array 12
TempCheck - Boolean
TempInt - Integer
TempLoc - Point
TempReal - Real
TempUnit - Unit

Trigger:
Tạo 3 trigger:
Mã:
HeroReviveInitialization
    Events
        Time - Elapsed game time is 0.00 seconds
    Conditions
    Actions
        For each (Integer A) from 1 to 12, do (Actions)
            Loop - Actions
                Trigger - Add to HeroRevive <gen> the event (Time - ReviveTimer[(Integer A)] expires)
Trigger trên để "add event" timer expired cho trigger revive chính (HeroRevive đó)
Mã:
Hero Dies
    Events
        Unit - A unit Dies
    Conditions
        ((Triggering unit) is A Hero) Equal to True
    Actions
        Set TempUnit = (Triggering unit)
        Set TempInt = (Player number of (Owner of TempUnit))
        [B]Set TempReal = (3.00 + (5.00 x (Real((Hero level of TempUnit)))))[/B]
        Countdown Timer - Start ReviveTimer[TempInt] as a One-shot timer that will expire in TempReal seconds
        Countdown Timer - Create a timer window for ReviveTimer[TempInt] with title (Name of TempUnit)
        Set ReviveTimerWindow[TempInt] = (Last created timer window)
        Countdown Timer - Show ReviveTimerWindow[TempInt]
        Set HeroForRevive[TempInt] = TempUnit
Trigger trên là khi một hero chết, tạo thời gian đếm và bảng đếm. Thời gian hồi sinh hero là TempReal (in đậm)
Mã:
HeroRevive
    Events
    Conditions
    Actions
        For each (Integer A) from 1 to 12, do (Actions)
            Loop - Actions
                Set TempInt = (Integer A)
                Custom script:   set udg_TempCheck = ( GetExpiredTimer() == udg_ReviveTimer[ udg_TempInt ] )
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        TempCheck Equal to True
                    Then - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                (HeroForRevive[TempInt] belongs to an ally of Player 1 (Red)) Equal to True
                            Then - Actions
                                Set TempLoc = (Center of Team1 HeroRevive <gen>)
                            Else - Actions
                                Set TempLoc = (Center of Team2 HeroRevive <gen>)
                        Hero - Instantly revive HeroForRevive[TempInt] at TempLoc, Show revival graphics
                        Camera - Pan camera for (Player(TempInt)) to TempLoc over 0.00 seconds
                        Custom script:   call RemoveLocation( udg_TempLoc )
                        Countdown Timer - Destroy ReviveTimerWindow[TempInt]
                    Else - Actions
Trigger trên thì ko thấy event đâu cả, hic Tom quên, nhg đùa thôi, Tom đã add event cho nó ở trigger thứ 1 rồi :))
Trong trigger này, khi một trong 12 timer kết thúc (tức là thời gian đếm đã về 0) thì sẽ kiếm tra xem timer kết thúc này là timer thứ mấy, từ 1 -> 12. Nếu là timer thứ 1 thì sẽ hồi sinh hero của player 1, là timer thứ 5 thì hồi sinh hero của player 5. Đó là biến TempCheck, có 1 dòng jass - Custom Script ấy nhg ko sao đâu.
Khi TempCheck = true, tức là tìm đc timer bị hết là timer nào, tiến hành revive hero. Thứ 1 là xem hero cần revive thuộc team nào (cái If đó) để xác định vị trí revive. Thứ 2 là hồi sinh hero, dùng lệnh Hero - Revive, sau đó dùng Pan Camera để đưa camera cho player về vị trí hồi sinh. 2 dòng cuối là xóa point để tránh leak và xóa bảng đếm thời gian.
-----
Copy cái này đơn giản thôi, chỉ cần tạo Region, rồi copy hết cái mục Revive Heroes vào, "enable" các lệnh đỏ đỏ là xong.
-----
Chú ý: cái này chỉ "MPI" tức là chỉ hoạt động đúng khi mỗi player có MỘT hero.
Ngoài ra nếu muốn tên hero hay tên player trên bảng đếm thời gian, cũng như có "màu" thì có lẽ newbie nên học thêm đã. Đến lúc nào đó sẽ tự làm đc. :)>-
-----
Tom đã gứi kèm map demo ở dưới, ai ko rõ thì cứ vào xem ::)


có thể tạo dùm một loại mã
khi mua trang bị hồi sinh thì tất cả hồi sinh không
sẳn xóa luôn cái cloodown timer khi mua trang bị hồi sinh
dh-g làm dc mua hồi sinh thôi còn xóa cái cloodown timer khi hồi sinh bằng trang bị là bó tay :((
 
ko ai tra lời hộ cái nào . có cách j tính được tổng DMG từ 1 unit tác động lên bản thân trong x giây hem
 
@tom



có thể tạo dùm một loại mã
khi mua trang bị hồi sinh thì tất cả hồi sinh không
sẳn xóa luôn cái cloodown timer khi mua trang bị hồi sinh
dh-g làm dc mua hồi sinh thôi còn xóa cái cloodown timer khi hồi sinh bằng trang bị là bó tay :((

Countdown Timer - Destroy ReviveTimerWindow
destroy tat ca timerwindow dc ma`
 
@Comangdin:

Mình hướng dẫn cơ bản dàn ý thế này:
+ Dùng cái Add vào 1 Trigger khác với event: <Unit> Take Damage (cụ thể cái này xem fake miss của Tom sẽ có) tạm gọi trigger vừa add event là trigger B, trigger đầu là A
+ Tạo 1 biến type Real (ví dụ tên: Dmg), ở trigger B ta Set Dmg = (Dmg + Damage Taken)
+ Tạo 1 biến type Timer (ví dụ tên: Timer), ở trigger A ta dùng lệnh Start <Timer> in oneshot <số giây> (lệnh này dùng cái search để tìm, hình như nó ở phần Countdown timer, do ít xài cái này nên ko nhớ rõ)
+ Tạo 1 trigger (ví dụ tên C) rồi cho event: Start Timer, event sẽ này sẽ đếm ngược số giây đến khi = 0 thì thực hiện lệnh ở phần action
+ Ở action bạn dùng lệnh Float Text gì đây ( ko nhớ rõ) rồi cho show cái Dmg.
Hơi khó hiểu và hi vọng bạn hiểu đc. Chúc thành công.

Ai trả lời post #207 giùm em.
 
Xoaitemtheowait
Events
Time - Every 60.00 seconds of game time //( thời gian cần wait thôi)
Conditions
Actions
Item - Remove (Random item in (Entire map))

ai giúp cái này giúp dùm luôn đi có thể item vừa mới vút ra mất tiêu không biết
 
Làm Regention Hit Points 1% Max Life Của Heart Thì Làm Sao Nhỉ?
 
ng` ta tạo spell thì ng` ta thích có initial damage hay không là do ng` ta chứ, nghĩ gì nữa =))
dùng trigger thế nào nhỉ? demo phát nào 8-|

Demo đây. Những triggers rất đơn giản thôi mà :)

Xoaitemtheowait
Events
Time - Every 60.00 seconds of game time //( thời gian cần wait thôi)
Conditions
Actions
Item - Remove (Random item in (Entire map))

ai giúp cái này giúp dùm luôn đi có thể item vừa mới vút ra mất tiêu không biết

bạn biết tại sao ko? vì cái EVERY 60s của bạn thì nó check liên tục trong thời gian đó. trường hợp của bạn là thời gian đang check đến giây thứ 59(đúng lúc này bạn vừa vứt item ra thì nó bị remove) hy vọng bạn hiểu
 

Attachments

Last edited by a moderator:
thế thì chơi sao biết đc lúc nào đâu mà vút item không thể quy định loại nào loại nào vút ra hoặc rớt sau thòi gian đó mất đc ah
 
Ai giúp em làm Regen giống Heart trong Dota với
 
[BL].Kunkka;15778444 nói:
Ai giúp em làm Regen giống Heart trong Dota với

Trigger đây:
Mã:
Heart Item
    Events
        Time - Every 1.00 seconds of game time
    Conditions
    Actions
        Custom script:   set bj_wantDestroyGroup = true
        Unit Group - Pick every unit in (Units in (Playable map area) matching ((((Matching unit) is alive) Equal to True) and (((Matching unit) has an item of type Heart) Equal to True))) and do (Actions)
            Loop - Actions
                Unit - Set life of (Picked unit) to ((Percentage life of (Picked unit)) + 1.00)%
 
Chỉnh sửa cuối:
Trigger đây:
Mã:
Heart Item
    Events
        Time - Every 1.00 seconds of game time
    Conditions
    Actions
        Custom script:   set bj_wantDestroyGroup = true
        Unit Group - Pick every unit in (Units in (Playable map area) matching ((((Matching unit) is alive) Equal to True) and (((Matching unit) has an item of type Heart) Equal to True))) and do (Actions)
            Loop - Actions
                Unit - Set life of (Picked unit) to ((Percentage life of (Picked unit)) + 1.00)%

Em thấy cái này nên dùng ability Life Regeneration Aura thay vì làm trigger.
 
Countdown Timer - Destroy ReviveTimerWindow
destroy tat ca timerwindow dc ma`

test qua rùi
hok có được
nó chỉ xóa 1 cái cloodown timer thôi
kòn máy cái kia là máy Player khác vẫn còn đọc đến 0 seconds thì nó chưa bị destroy
còn nữa khi revive bằng item xong
tiếp theo sau nó lại bị revive của trigger cloodown timer kia làm ảnh hưởng nữa
 
Heart trong DotA là hồi máu 2% / giây,nếu nhận damage bởi heroes địch thì thay item heart có hồi máu = item heart ko hồi máu,chạy timer sau 10 giây sẽ đổi lại như cũ,trong 10 giây nếu lại nhận dame thì tính 10 giây lại từ đầu.
 
Status
Không mở trả lời sau này.
Back
Top