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

Status
Không mở trả lời sau này.
@ Tom : thế còn cái scope Multiboard của e anh ơi, lỗi ở đâu nhỉ
mà cái fatal error trigger thường do j hả anh ?

Mã:
public function Init takes nothing returns nothing
    local trigger a = CreateTrigger() // tao bang
    local trigger b = CreateTrigger() // creeping
    local trigger l = CreateTrigger() // player left
    local trigger t = CreateTrigger() // dem thoi gian
    local trigger k = CreateTrigger() // giet -> chan creep, tuong, cong exp
    local integer i
   // call TriggerRegisterTimerEvent(t,1,true)
    //call TriggerAddAction(t,function time)
    //set i = 1
    //loop
    //    exitwhen i > 10
    //    call TriggerRegisterPlayerEventLeave( l, Player(i) )
    //    set i = i + 1
    //endloop
    //call TriggerAddAction(l,function leftact)
    //call TriggerRegisterAnyUnitEventBJ(k,EVENT_PLAYER_UNIT_DEATH)
    //call TriggerAddCondition(k,Condition(function killcond))
    //call TriggerAddAction(k,function killact)
    //call TriggerRegisterTimerEvent(a,0.1,false)
    //call TriggerAddAction(a,function create)
    
    //call TriggerSleepAction(0.3)
    //call DestroyTrigger(a)
    set t = null
    set a = null
    set b = null
    set l = null
    set k = null
endfunction

phát sinh lỗi ở đây, nhg k hiểu, chả lẽ do local :o
 
Chỉnh sửa cuối:
@zzchaolegionzz Máy chưa reg war3 nên thế đấy. Thử chạy file .reg trong thư mục đó rồi thử lại xe sao. Không đc thì buộc phải download cái setup của war3 về thôi bạn ạ.
 
Mã:
DestroyEffect(AddSpecialEffect("", x, y))
Cho hỏi tại sao các effect tạo bằng jass tại sao ko hiện ra??
 
Ai chỉ mình viết câu lệnh để đợi 1 unit đánh xong 5 lần mới thực hiện 1 lệnh khác với !!!
 
@Dark Gamer, nếu bỏ comment thì lỗi? anh ko nghĩ trong "init function" có thể dùng "call TriggerSleepAction(0.3)" ngoài cái đó ra thì chưa thấy chỗ nào "lạ" cả

ngoài ra trigger "a" ko nên destroy luôn, nếu destroy luôn thì sao nó chạy đc

Mã:
DestroyEffect(AddSpecialEffect("", x, y))
Cho hỏi tại sao các effect tạo bằng jass tại sao ko hiện ra??

còn tùy effect, khi "add" và "destroy" luôn như vậy thì effect sẽ sử dụng animation "death", nếu ko có thì sẽ là "birth" (nếu chỉ có 1 animation thì ko nói)
và vì vậy, giả sử 1 effect có animation "stand" và "death", và chỉ thấy nó khi "stand" vậy với lệnh trên, effect này sẽ "death" nên ko nhìn thấy

ví dụ: effect Abilities\Spells\Orc\AncestralSpirit\AncestralSpiritCaster.mdl có "Birth, Stand, Death", nhg chỉ thấy nó khi "Birth", nếu dùng lệnh trên thì nó sẽ "Death" luôn => ko thấy effect

cách giải quyết thì... dùng wait (hoặc timer): add effect -> wait/timer -> destroy effect

Mã:
function DestroySFXWait takes effect e, real dur returns nothing
    call PolledWait(dur)
    call DestroyEffect(e)
endfunction

sử dụng hàm trên: truyền vào effect cần destroy và thời gian chờ
ngoài ra phải thêm .execute (chỉ JassNewGen mới có):

Mã:
call DestroySFXWait[B].execute[/B]( AddSpecialEffect("", x, y), 10. )

.execute làm cho hàm chạy ở một "luồng" (thread) khác do đó wait ko ảnh hưởng tới các lệnh đang chạy
 
Chỉnh sửa cuối:
Mã:
sau đây là map của em, ở trong đã có 1 W ghi những gì em cần làm. mọi người xem và chỉnh hộ nhé
http://www.mediafire.com/?rbdnwp4diapilf3

Who Can Help Me, làm hộ em với nhé, thank các anh nhiều
Của bạn đây, mình chỉ làm giúp bạn vài thứ mình biết.
Link: http://www.mediafire.com/?9youbwuuz46z9f8
- Unit 2 Force đi của Mid đã đi vào đường mòn cong của khu rừng
- Vụ EXP phạm vi 700 range mình pó tay :|
- Bảng điểm đã như yêu cầu
- Map bạn như DotA và X Hero thì sao, phần team 3 là thế nào, mình đọc ko hĩu ý là gì zzz
- Mini map là sao, nối 2 map lại như Map Camp của Rexxar Orc à, nếu là vậy thì mình chịu
- Rohan theo ý bạn, nếu Rohan ra khỏi vùng nước sẽ trở vào lại vùng nước và hồi phục 100% máu, nếu Rohan die thì sau 300 giây sẽ hồi sinh 1 Rohan khác trong vùng nước.
- Creep rừng mình đã làm cho 1 vùng sẵn, bạn vào coi và làm tương tự cho các vùng còn lại, mình random creep cho bạn từ Ashven > VillageFall
- Tôi tìm mãi ko ra cái Phù nào trong map, nên tôi làm thẳng 1 cái item Return Tree thay cho Phù của bạn, nó cũg có tác dụng di chuyển về Tree Eternity
 
@Tom : thế e mới bó tay chứ, nhưng đằng này e cho disable cả cái đoạn ấy rùi mà vẫn lỗi, pó tay luôn. mà e đập đt rồi, mất số của anh ùi, anh nháy lại đi, dạo này mất tăm kinh vãi, bận gì thế @@
destroy luôn vì nó chạy lúc 0.1s , e nghĩ chạy xong destroy lun chứ để chả làm gì cả. k thì cho vào function action destroy GetTriggeringTrigger là được
hôm nào e qua anh hỏi phát nhé :X

@ZhengHe : ngoài ra bạn phải để ý cái đường dẫn của nó, ví dụ bt có dòng "Abilities\Spells\Orc\AncestralSpirit\AncestralSpiritCaster.mdl" thì bạn phải đổi lại "Abilities\\Spells\\Orc\\AncestralSpirit\\AncestralSpiritCaster.mdl" ( Đừng hỏi vì sao vì jass nó là như thế :| )

@rag : làm 1 trigger
1 varible integer Count = 0

Mã:
    Events
        Unit - A unit Is attacked
    Conditions
        (Attacking unit) Equal to // Unit cần
    Actions
        Set Count = (Count + 1)
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Count Greater than or equal to 5
            Then - Actions
                Set Count = 0
                Trigger - Run // Trigger cần chạy// (ignoring conditions)
            Else - Actions
 
Chỉnh sửa cuối:
cho mình hỏi làm sao để cho dummy đi xuyên qua được cái "nền đen" , mình tạo spell slice cho Hero thì được nhưng với dummy ( base là con wisp) thi lại ko được , đến miền ngăn cách là nó bị khựng lại hoặc di chuyển dọc theo miền ngăn cách rất khó chịu :|
Đây là 1 ví dụ về trigger khởi tạo của mình , mọi người xem qua ko biết có thiếu cái hàm nào ko :(
Mã:
    Events
        Unit - A unit Starts the effect of an ability

    Conditions
        (Ability being cast) Equal to Shockwave 

    Actions
        Actions
    Set Casterabc = (Casting unit)
    Set LevelInteger = (Level of Shockwave  for Casterabc)
    Set ShockwavePoint[0] = (Position of Casterabc)
    Set Pointabc = (Target point of ability being cast)
    Set Angle = (Angle from ShockwavePoint[0] to Pointabc)
    Set Realabc = ((75.00 x (Real(LevelInteger))) + (Real((Strength of Casterabc (Include bonuses)))))
    Set ShockwavePoint[3] = (ShockwavePoint[0] offset by (650.00 + (100.00 x (Real(LevelInteger)))) towards Angle degrees)
    Unit - Create 1 Shockwave ( dummy ) for (Owner of Casterabc) at ShockwavePoint[0] facing Angle degrees
    Set Dummyabc = (Last created unit)
    Unit - Pause Dummyabc
    Unit - Turn collision for Dummyabc Off // mình đã thêm dòng này để giúp nó đi xuyên qua mà vẫn ko được.
    Wait 0.50 seconds
    Trigger - Turn on SW Move <gen>
    Trigger - Turn on SW KnockBack <gen>
@rag : cách của bạn DarkGamer thì cũng ko có gì sai về lí thuyết nhưng vẫn chưa thuyết phục lắm , bạn nên dùng hàm trigger unit take damage (như kiểu mấy spell autocast ý) để check việc nó có nhận dam hay ko rồi mới set biến Count = Count + 1 .
 
Chỉnh sửa cuối:
Cho hỏi
Wait 2.00 seconds.
Wait 2.00 game-time seconds.
khác nhau ở chỗ nào? Tại sao dùng Wait 2.00 seconds thì thoải mái còn dùng Wait 2.00 game-time seconds hay bị lỗi trigger?
 
> Wait 2.00 seconds.: thời gian thực
> Wait 2.00 game-time seconds.: thời gian "game"

nếu có lag, drop gì gì thì "game-time" sẽ dừng còn "thực" không dừng

còn việc:
Tại sao dùng Wait 2.00 seconds thì thoải mái còn dùng Wait 2.00 game-time seconds hay bị lỗi trigger?
thì bạn nghe ai nói vậy? :-/

giờ biết 2 cái này khác nhau thế nào rồi thì tự biết câu trả lời nhỉ?
 
Mình tạo 1 custom item ability trên nền ability bonnus amor và gán các giá trị
Art-Target là Crystal (variation 1) mục doodads
Art-Target Attachment Point 1 là chest
Art-Target Attachment chọn 1

Khi gán ability này cho item và mọi thứ diễn ra tốt đẹp: hero mang item có effec cục băng bao quanh người. Tuy nhiên khi mình đổi lại cái Art-Target Attachment Point sang vị trí là origin thì khi load game test thử, hero cầm item mà chả thấy hiệu ứng cục băng đâu. Ai biết nguyên nhân chỉ mình cách khắc phục với.

Ngoài ra cũng có rất nhiều model khác khi chọn ở mục Art target nhưng đều không hiển thị khi vào game hoặc chỉ hiển thị vài giây sau đó hết luôn (như cái doodad/eye of sargeras hay cái missile Death Tower...), không biết có quy tắc nào khi chọn Art target không ?
 
Với loại mà "dán" 1 model duy nhất lên creep thì nên làm từ những dạng spell AURA có sẵn của WE ( cánh cho vô đây tốt nhất), còn "dán" 2 hoặc nhiều model thì dùng spell SPHERE ( 3 cục lửa bay trên đầu) của con Blood Mage ( loại này cho các trượng hợp 2 tay sáng lên như Bloodlust hay 2 chân sáng lên của Dday).
 
Tuy nhiên khi mình đổi lại cái Art-Target Attachment Point sang vị trí là origin thì khi load game test thử, hero cầm item mà chả thấy hiệu ứng cục băng đâu. Ai biết nguyên nhân chỉ mình cách khắc phục với.

lạ nhỉ, mình thấy nó hiện ra mà
crystalatorigin.png


Ngoài ra cũng có rất nhiều model khác khi chọn ở mục Art target nhưng đều không hiển thị khi vào game hoặc chỉ hiển thị vài giây sau đó hết luôn (như cái doodad/eye of sargeras hay cái missile Death Tower...), không biết có quy tắc nào khi chọn Art target không ?

quy tắc thì theo tôi biết ko có quy tắc nào, tuy nhiên có một chú ý sau:

một số model khi chọn xong, ở đường dẫn của nó sẽ ko có .mdx (ví dụ: Eye of Sargeras: Doodads\Cinematic\EyeOfSargeras\EyeOfSargeras)
nên bạn phải thêm .mdx vào đường dẫn này (dòng "Custom") (ví dụ: Eye of Sargeras: Doodads\Cinematic\EyeOfSargeras\EyeOfSargeras.mdx)

doodadpatheffect.png
 
Cám ơn ban Kazansky, tớ làm theo và ok rồi, thành quả nè :D
effect.gif


Cho tớ hỏi thêm

Cái effct của Charm (ability) tớ cũng muốn dùng cho item như mấy cái kia nhưng khi vào game, nó chỉ xuất hiện 1 lần khi hero nhặt item đó xong rồi hết luôn, làm sao để nó duy trì effect đó liên tục được ?

Tớ làm skill multishot theo như cái tut này
http://world-editor-tutorials.thehelper.net/mshot.php
vào game chạy ngon lành rồi nhưng muốn edit nó giống như skill bắn split shot của Medusa trong dota ý, nghĩa là damg tính theo % damg của hero chứ không phải là 1 giá trị fixe như thế này
 
effect của "Charm" không "lặp" nên nó chỉ hiện một lần (muốn nó lặp thì phải edit model, đây lại là vụ khác :-??)

split shot thì:
  • tạo 1 custom ability từ "Defend", bỏ requirement, chỉnh level và chỉnh Data - Damage Dealt theo giá trị mong muốn( 1.00 = 100%)
  • tạo 1 custom ability từ Barrage (để có Multishot như trong tutorial trên)
  • cho hero sử dụng ability "Defend"

vào trigger editor, tạo trigger:
Mã:
Splitshot
    Events
        Unit - A unit Is issued an order with no target
    Conditions
        (Level of Defend for (Triggering unit)) Greater than 0
    Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Issued order) Equal to (Order(defend))
            Then - Actions
                -------- turn on Defend --------
                Unit - Add Barrage to (Triggering unit)
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Issued order) Equal to (Order(undefend))
            Then - Actions
                -------- turn off Defend --------
                Unit - Remove Barrage from (Triggering unit)
            Else - Actions

trong trigger trên, thay Defend,Barrage bằng Defend/Barrage của bạn
 
Các pro cho hỏi, mình muốn làm 1 spell = trigger mà muốn sử dụng spell đó, nhất định phải là trời tối mới đc dùng, còn trời sáng thì vô tác dụng.
 
cho mình hỏi làm sao để cho dummy đi xuyên qua được cái "nền đen" , mình tạo spell slice cho Hero thì được nhưng với dummy ( base là con wisp) thi lại ko được , đến miền ngăn cách là nó bị khựng lại hoặc di chuyển dọc theo miền ngăn cách rất khó chịu :|
Đây là 1 ví dụ về trigger khởi tạo của mình , mọi người xem qua ko biết có thiếu cái hàm nào ko :(
Mã:
    Events
        Unit - A unit Starts the effect of an ability

    Conditions
        (Ability being cast) Equal to Shockwave 

    Actions
        Actions
    Set Casterabc = (Casting unit)
    Set LevelInteger = (Level of Shockwave  for Casterabc)
    Set ShockwavePoint[0] = (Position of Casterabc)
    Set Pointabc = (Target point of ability being cast)
    Set Angle = (Angle from ShockwavePoint[0] to Pointabc)
    Set Realabc = ((75.00 x (Real(LevelInteger))) + (Real((Strength of Casterabc (Include bonuses)))))
    Set ShockwavePoint[3] = (ShockwavePoint[0] offset by (650.00 + (100.00 x (Real(LevelInteger)))) towards Angle degrees)
    Unit - Create 1 Shockwave ( dummy ) for (Owner of Casterabc) at ShockwavePoint[0] facing Angle degrees
    Set Dummyabc = (Last created unit)
    Unit - Pause Dummyabc
    Unit - Turn collision for Dummyabc Off // mình đã thêm dòng này để giúp nó đi xuyên qua mà vẫn ko được.
    Wait 0.50 seconds
    Trigger - Turn on SW Move <gen>
    Trigger - Turn on SW KnockBack <gen>
Mình đã thử thay base dummy là wisp = hero thì lại có thể đi qua nền đen được :o Tiện đây mình hỏi luôn là base dummy là con gì cũng ảnh hưởng đến trigger ư :-?
Nữa là công thức tính mấy cái hp regen vs mana regen.
vd : unholy aura có 100% hp regen , vậy là bao hp /s
brilliant aura có 100% mana regen , vậy là bao mp /s
 
@gold : 100% cộng thêm số HP regen của quân ấy thêm 1 lần
ví dụ 1 unit có HP regen ( trong F6 ) là 3 life/s , được 100% sẽ thành 6 life/s
1 hero có HP regen là 2 hp/s, str 30, mỗi str cộng 0.2hp/s -> 2 + 30x0.2 = 8hp/s -> 16hp/s

@Flame :
Conditions
(In-game time of day) Greater than or equal to 6.00
(In-game time of day) Less than or equal to 18.00
 
cho hỏi xài Custom Script nào để check player 1 có phải là Observer không ?
sẳn hỏi thêm Compatibility trong UMWSE tác dụng là gì :-?? và trigger Image củng tác dụng là gì :-s
 
Cho hỏi khi dung lượng map wá lớn không thể chạy được chế độ hai người chơi trở lên thì phải sử lý thế nào?
 
Status
Không mở trả lời sau này.
Back
Top