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

Status
Không mở trả lời sau này.
Mà nói thêm là cái của anh Tom là làm cho Passive Spell nên về cách làm và ý nghĩa Trigger đều không giống với cái Point Target Spell bạn FlameDrake muốn.

---------- Post added at 10:21 ---------- Previous post was at 10:19 ----------

Tham khảo ở đây thử xem.
Map demo.

Cool wa' ............................................................
 
Cách đó chỉ đảm bảo Target bị Stun đúng 0.8s chứ ko đảm bảo khoảng cách Target bị Knockback, đương nhiên với 0.8s Slide thì khoảng cách đều là 1 giá trị nhất định nhưng cái mà bạn FLAMEDRAKE muốn là khi thay đổi khoảng cách Slide thì Spell vẫn đúng.

Bạn thử map demo của anh Tom chưa. Mình làm slide nhiều rồi có thể đảm bảo cách thức tính của anh Tom thì khi thay đổi khoảng cách nó vẫn slide chuẩn. Như mình đã nói dù khoảng cách knockback có là bao nhiêu nhưng với cách tính "khoảng cách slide = khoảng cách knockback / số tick" vì khoảng cách là real (số thực) nên chả có sai lệch nào ở đây cả.

^
Bạn ơi, knock back thì cũng là slide nhưng khoảng cách di chuyển giảm dần, còn passive hay active thì bạn chỉ cần thay đổi event với condition là OK
 
Chỉnh sửa cuối:
sao trong game interface của mình không có cái dòng font nhỉ? Chỉ có icon, image, text, model, path, sound.

làm theo cái link bên dưới để có dòng font bạn ạ chắc chắn bạn p dùng đến JassNewGen còn dùng WE thì ko làm đc
 
Cái đó bạn phải dùng đến jassnewgen bạn à
Rồi mở map mình ra rồi tim chữ UMSWE đánh dấu Enable UMSWE
Tắt jassnewgen rồi mở lại jassnewgen load map mình lần nữa vào game interface sẽ thấy chữ font

Mình làm được rồi nhưng khi test map thì bị lỗi fatal error.
 
Mã:
Lava Way
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to |cffFF00CCTiÕng Gäi Quª H­¬ng|r 
    Actions
        Set LavaUnit = (Triggering unit)
        Set TempLavaUnit = (Position of LavaUnit)
        Set TempLavaTarger = (Target point of ability being cast)
        Set AngleWave = (Angle from TempLavaUnit to TempLavaTarger)
        For each (Integer A) from 1 to ((Level of |cffFF00CCTiÕng Gäi Quª H­¬ng|r  for LavaUnit) x 4), do (Actions)
            Loop - Actions
                Unit - Create 1 Lava Dummy for (Owner of LavaUnit) at (TempLavaUnit offset by ((Real((Integer A))) x 175.00) towards AngleWave degrees) facing (Facing of LavaUnit) degrees
                Set LavaDummy[(Integer A)] = (Last created unit)
                Set TempLavaDummy[(Integer A)] = (Position of LavaDummy[(Integer A)])
                Unit - Add a 2.00 second Generic expiration timer to LavaDummy[(Integer A)]
                Set LavaGroup = (Units within 180.00 of TempLavaDummy[(Integer A)] matching ((((Matching unit) belongs to an enemy of (Owner of LavaUnit)) Equal to True) and (((Matching unit) is alive) Equal to True)))
                Unit Group - Pick every unit in LavaGroup and do (Actions)
                    Loop - Actions
                        Unit - Cause LavaUnit to damage (Picked unit), dealing (((Real((Level of |cffFF00CCTiÕng Gäi Quª H­¬ng|r  for LavaUnit))) x 5.00) x (Real((Strength of LavaUnit (Exclude bonuses))))) damage of attack type Hero and damage type Defensive
                        Floating Text - Create floating text that reads ((String(((Real((Strength of LavaUnit (Include bonuses)))) x ((Real((Level of |cffFF00CCTiÕng Gäi Quª H­¬ng|r  for LavaUnit))) x 5.00)))) +  damage) at (Position of (Picked unit)) with Z offset 0.00, using font size 10.50, color (100.00%, 32.00%, 32.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 2.00 seconds
        Custom script:   call RemoveLocation(udg_TempLavaUnit)
        Custom script:   call RemoveLocation(udg_TempLavaTarger)
        Custom script:   call RemoveLocation(udg_TempLavaDummy[GetForLoopIndexA()])
        Custom script:   call DestroyGroup(udg_LavaGroup)
Remove leak và dummy mà cast khoảng 5 lần mà bắt đầu điệp khúc :|
P/s: BoyVip cái SD_Point[1] và SD_Point[2] remove leak ntn :|
 
Mình làm được rồi nhưng khi test map thì bị lỗi fatal error.

à. Cái này mình biết sửa rồi. Mình nghe nói đánh tiếng việt chỉ có hiệu lực khi vào game. Nhưng khi mình vào game thì nó vẫn thế. Mình làm theo hướng dẫn của Tom rồi mà sao vẫn không được.
 
^ Remove leak nhiều mà sai chỗ thì không lag mới lạ.

Cái hiện Dam mình hỏi nhiều lần rồi nhưng cuối cùng cũng chỉ kết luận là KO có cách nào hiện Dam chính xác cả.
Cách của bạn nghe thì thấy đúng nhưng nếu Target bị nhiều Unit đánh cùng 1 lúc thì Dam hiện lên sẽ là Dam tổng của Các Unit đó. Hơn nữa hiện 70 dam lên cũng là sai vì tất cả những dam hiện lên ở Spell hay dam vật lý ở Critical Strike đều là giá trị mặc định, chưa tính đến chuyện kháng gì cả.
Uhm, tại sao ko có cách nào ??
Còn cách của bạn ấy chuẩn thật, lí thuyết nói được chứ thử làm cái khắc biết ngay zzz
 
^^^ @FrameDrake
Bạn leak cái location trong vòng loop. Cho vào cuối vòng loop cái này để remove leak và xóa cái ở cuối đi
Custom script: call RemoveLocation(udg_TempLavaDummy[GetForLoopIndexA()])
Bạn để ngoài nên bị sai không remove hết
 
P/s: BoyVip cái SD_Point[1] và SD_Point[2] remove leak ntn :|
Thì: call RemoveLocation(udg_SD_Point[1]) chứ sao.
PS: nếu chuyển thành MUI thì phải chia point[mảng] thành point_1, point_2,... cụ thể rồi remove leek: call RemoveLocation(udg_SD_Point_1[udg_MUI]).

---------- Post added at 11:32 ---------- Previous post was at 11:14 ----------

Uhm, tại sao ko có cách nào ??
Còn cách của bạn ấy chuẩn thật, lí thuyết nói được chứ thử làm cái khắc biết ngay zzz

Nếu cách đó chuẩn thì trước tiên bạn giải thích hộ mình cái Spell "Enchant Totem" của ES trong Dota. Theo cách mình hiểu là khi Hero có buff tăng dam đó đánh 1 unit khác thì sau khi đánh sẽ remove luôn buff đó. Nhưng vấn đề là Unit nào cũng có Animation - Damage Point mang những giá trị khác nhau, vì vậy chắc chắn phải dùng Wait trong cái Trigger remove buff đó. Mà đã Wait thì trong thời gian Wait nều có các Unit khác tấn công Target kia hay đơn giản chính Target lại đang bị dính độc thì Dam hiện lên chắc chắn sẽ ko chính xác. Nếu như có cách làm khác đối với spell ET của ES (ví dụ như Action nhận biết Unit đó đã thực hiện thành công 1 đòn tấn công) thì cái cách nói trên của bạn DemonPrice sẽ đúng, còn ko thì sai.
 
Chỉnh sửa cuối:
Nếu cách đó chuẩn thì trước tiên bạn giải thích hộ mình cái Spell "Enchant Totem" của ES trong Dota. Theo cách mình hiểu là khi Hero có buff tăng dam đó đánh 1 unit khác thì sau khi đánh sẽ remove luôn buff đó. Nhưng vấn đề là Unit nào cũng có Animation - Damage Point mang những giá trị khác nhau, vì vậy chắc chắn phải dùng Wait trong cái Trigger remove buff đó. Mà đã Wait thì trong thời gian Wait nều có các Unit khác tấn công Target kia hay đơn giản chính Target lại đang bị dính độc thì Dam hiện lên chắc chắn sẽ ko chính xác. Nếu như có cách làm khác đối với spell ET của ES (ví dụ như Action nhận biết Unit đó đã thực hiện thành công 1 đòn tấn công) thì cái cách nói trên của bạn DemonPrice sẽ đúng, còn ko thì sai.
Về ET thì theo cá nhân mình làm :
1) Base từ roar lên nên cả cần gì quan tâm về damage.
2) (cái này mình vẫn chưa nắm được) Để trigger nhận việc đã attack thì dùng event unit takes damage, detect loại damage, và remove.
Việc bạn nói có vẻ như xài event unit is attacked, wait vài s rồi remove buff, nhưng bạn thử spam stop là sẽ biết.
Còn cách nhận damage để show như DemonPrince thì mình xin không có ý kiến thêm...
 
Chỉnh sửa cuối:
Mã:
Slide Dancing
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to |cffFFCCCCSlide Dancing|r 
    Actions
        Set SD_Caster = (Casting unit)
        Set SD_CasterPoint = (Position of SD_Caster)
        Set SD_Point[1] = (Position of SD_Caster)
        Set SD_TargetPoint = (Target point of ability being cast)
        Set SD_Angel = (Angle from SD_CasterPoint to SD_TargetPoint)
       [COLOR="Red"] Set SD_Distance = 24.00[/COLOR]
        Animation - Play SD_Caster's Attack Walk Stand animation
        Unit - Turn collision for SD_Caster Off
        Trigger - Turn on Slide Dancing Move <gen>
Mã:
Slide Dancing Move
    Events
        Time - Every 0.04 seconds of game time
    Conditions
    Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                [COLOR="Red"](Distance between SD_Point[1] and SD_TargetPoint) Greater than or equal to (SD_Distance / 2.00)[/COLOR]
            Then - Actions
                Set SD_Point[2] = (SD_Point[1] offset by SD_Distance towards SD_Angel degrees)
                Unit - Move SD_Caster instantly to SD_Point[2]
                Set SD_Point[1] = SD_Point[2]
            Else - Actions
                Unit - Turn collision for SD_Caster On
                Animation - Reset SD_Caster's animation
                Trigger - Turn off Slide Dancing Move <gen>
4 dòng remove leak này nên quang ntn vào 2 trigger trên đây :|
Custom script: call RemoveLocation(udg_SD_Point[1])
Custom script: call RemoveLocation(udg_SD_Point[2])
Custom script: call RemoveLocation(udg_SD_CasterPoint)
Custom script: call RemoveLocation(udg_SD_TargetPoint)
Cái SD_Distance mình cho 1 số mặc định là 24, có ảnh hưởng gì tới dòng đỏ trong trigger thứ 2 ko ? Và giải thix cho mình cái dòng đỏ trong trigger thứ 2 là sao ? Lẽ ra fải là SD_Distance thôi, sao lại còn chia cho 2.
 
Chỉnh sửa cuối:
Cho hỏi lỗi này khắc phục thế nào ??
Lỗi này xuất hiện khi mình test map = jassnewgen.
ErrorWE.jpg
 
Chả hiểu sao tớ bật sẵn war3 rồi test map nào vào map đấy còn nhanh hơn dùng crtl+F9. Á mà sao hồi xưa em có hỏi sao crlt F9 của em không vào được mà anh không trả lời. Đến bây h mới biết câu hỏi của mình được trả lời từ 2009 :-ss
Btw,
cái UMSWE có cái Custom Pathability mà dùng hẻm được, cũng chả báo lỗi. Restart WE cũng không thay đổi
 
à. Cái này mình biết sửa rồi. Mình nghe nói đánh tiếng việt chỉ có hiệu lực khi vào game. Nhưng khi mình vào game thì nó vẫn thế. Mình làm theo hướng dẫn của Tom rồi mà sao vẫn không được.

sao không ai tra lời mình hết vậy? Help me. Với lại cho mình xin cái font map thiên kiếm luôn.
 
Vn.Vogue
Lên fontchu.com mà kiếm. phải chỉnh font chữ hiển thị trong game. dùng unikey bảng mã TCVN3
 
Vn.Vogue
Lên fontchu.com mà kiếm. phải chỉnh font chữ hiển thị trong game. dùng unikey bảng mã TCVN3

Bạn hướng dẫn cụ thể dùm mình được không?
Giờ mình down font về rồi làm gì nữa. Chỉ mình chi tiết luôn nhé. Mấy cái đường dẫn đến font trong Jassnewgen bạn cũng chỉ rõ luôn nhé.
 
4 dòng remove leak này nên quang ntn vào 2 trigger trên đây

Cái SD_Distance mình cho 1 số mặc định là 24, có ảnh hưởng gì tới dòng đỏ trong trigger thứ 2 ko ? Và giải thix cho mình cái dòng đỏ trong trigger thứ 2 là sao ? Lẽ ra fải là SD_Distance thôi, sao lại còn chia cho 2.

_4 dòng remove leak để vào giữa 2 dòng "Animation - Reset SD_Caster's animation" và " Trigger - Turn off Slide Dancing Move <gen>":
Mã:
Animation - Reset SD_Caster's animation
[COLOR="Red"]Remove Leak[/COLOR]
Trigger - Turn off Slide Dancing Move <gen>
_Để SD_Distance = bao nhiêu là tùy bạn.
_Còn về giải thích phần kia hơi dài dòng, bạn cố hiểu cho:
+ Xét Khoảng Cách(KC) từ Caster(C) đến Target(T) khi: KC>36 => tiếp tục Move C.
+ Khi KC=36 thì trong 0.04s sau KC sẽ=36-24=12 (=24/2) => dừng C.
+ Khi 36<KC<12 thì trong 0.04s sau KC sẽ trong khoảng: -12<KC<12 => dù KC là số nào trong khoảng đó thì C cũng sẽ dừng.
+ Khi KC=12 hoặc KC=-12 thì đương nhiên dừng C (bạn nào thông minh sẽ biết ngay KC nhỏ nhất có thể đạt đc chỉ là -11, mình nói -12 là cho dễ hiểu hơn thôi).
Dù KC ở khoảng nào thì cũng rơi vào 1 trong 4 TH trên và kết quả là C sẽ phải dừng đúng thời điểm.
Sở dĩ có cái SD_Distance/2 đó là vì đó là giá trị thấp nhất có thể dùng, nếu dùng các giá trị cao hơn thì C sẽ dừng lại ở trước T 1 đoạn (dù là ngắn nhưng cũng ko hay)
Tất nhiên có nhiều người sẽ nghĩ là tai sao không phải dùng If thế này:
Mã:
(Distance between SD_Point[1] and SD_TargetPoint) Not equal to 0
Xin thưa rằng là ko đc vì KC đẹp lắm mới có thể =0 (khi Distance từ C đến T lúc bắt đầu cast spell là BỘI của SD_Distance).
 
Chỉnh sửa cuối:
Về ET thì theo cá nhân mình làm :
1) Base từ roar lên nên cả cần gì quan tâm về damage.
2) (cái này mình vẫn chưa nắm được) Để trigger nhận việc đã attack thì dùng event unit takes damage, detect loại damage, và remove.
Việc bạn nói có vẻ như xài event unit is attacked, wait vài s rồi remove buff, nhưng bạn thử spam stop là sẽ biết.
Còn cách nhận damage để show như DemonPrince thì mình xin không có ý kiến thêm...
EnchantTotemAttack
Events
Unit - A unit Is attacked
Conditions
((Attacking unit) has buff Enchant Totem ) Equal to True
Actions
Wait 1.00 seconds
Unit - Remove Enchant Totem buff from (Attacking unit)
base từ roar đấy =))
demo anh tom làm =)),1s sau khi phang vào người nó thì remove,còn không sẽ tồn tại trong 15s rồi sau đó remove theo mặc định của spell
 
Status
Không mở trả lời sau này.
Back
Top