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

Status
Không mở trả lời sau này.
Mình thì thấy đâu có khó như ý bạn,bạn chưa thử thì sao biết ?

Thử dùng ability Roar (Aroa) với AOE là 99999999 target là allies,friend,structure rồi cast thử xem,còn tăng giáp cho trụ mãi thì add cái Item Armor Bonus set level + 1 hoặc dùng Upgrades mà tăng armor thôi. Hay trong map 9xHeroDefense nó như nào nữa ?
trong 9x Hero Defense VN của FlameDrake thì bỏ 100000 vàng mua cái nâng cấp phòng ngự tăng 100 giáp max lần nâng là 6 lần
 
Vậy thì tạo một ability từ Item Armor Bonus với 6 level,mỗi level hơn nhau 100 đơn vị armor.

Khi một unit use item thì pick every unit là structure và là alies của owner of triggering unit rồi set level cho Item Armor Bonus +1
 
^Cái gì đấy. Ko phải Item Armor Bonus là unleveling ability.

^^ thì vẫn như Trigger kia thôi.
Mỗi lần sell item thì add cái Item Armor Bonus +100 vào.
Sao ko thử đi :-??
 
trong 9x Hero Defense VN của FlameDrake thì bỏ 100000 vàng mua cái nâng cấp phòng ngự tăng 100 giáp max lần nâng là 6 lần
1 trong các cách:
  • Tạo 1 upgrade base từ Glyph of Fortification, 6 levels, Effect là Defense upgrade bonus.
  • Tạo 1 ability base từ Glyph of Fortification, Upgrade Type Glyph of Fortification trên.
  • Tạo 1 Item base từ Glyph of Fortification, 6 stock max, Replenish Interval lớn nhất có thể, có Ability trên.
  • Chỉnh Defense Upgrade Bonus của các unit cần nâng cấp là 100, thêm vào Upgrade used là Glyth of Fortification đã tạo.
  • Cho item vào shop bán.
 
Chỉnh sửa cuối:
1 số model ko thể gắn thêm effect vào những điểm thông thường, như origin, chest, head,... Vậy có cách nào đại loại như thêm những "điểm" ấy vào model đó để có thể gắn effect vào ko?
 
YAN[asian];21909921 nói:
1 số model ko thể gắn thêm effect vào những điểm thông thường, như origin, chest, head,... Vậy có cách nào đại loại như thêm những "điểm" ấy vào model đó để có thể gắn effect vào ko?

dùng War3 Model Editor mở model đó ra, vào Windows \ Node Manager, ấn chuột phải -> Create Attachment, ấn chuột phải vào cái vừa tạo -> Edit Node, đặt tên nó là: <điểm> ref, ví dụ: origin ref, chest ref, head ref,...
ngoài ra vị trí cái attachment này: vị trí tương đối với các node khác hay vị trí x, y, z thì tùy, đặt sao cho effect hiện ra đúng ý. Nên tham khảo các model có sẵn.

ngoài ra, chuột phải -> Edit, có "Visiblility" là điều chỉnh ẩn/hiện theo animation, "Path" ở đây đặt vào path của một model, cái model này sẽ đựoc hiện ở vị trí attachment này.
 
Chỉnh sửa cuối:
YAN[asian];21909921 nói:
1 số model ko thể gắn thêm effect vào những điểm thông thường, như origin, chest, head,... Vậy có cách nào đại loại như thêm những "điểm" ấy vào model đó để có thể gắn effect vào ko?

Nên dùng thêm mdlvis để move attachment.
Xem bài này, việc tạo attachment cũng tương tự ribbon.
 
cho hỏi tại sao sau khi mình chép 1 system trên Hiveworkshop về ( JASS ) thì mỗi lần test nó ko chạy luôn mà chạy từ menu lúc mới vào warcraft, mỗi lần mún test fải save lại rùi mới chạy luôn đc
 
Ý cậu ấy là ở vị trí chest ( ngực ), là phần giữa của unit đấy

Không. Ý tôi là tạo floating text trên đầu và căn giữa unit, nếu tạo theo cách thông thường thì text bị lệch qua bên phải của unit.
Như ảnh này:
4-1.jpg

Edit: hình như tôi tìm được cách giải quyết rồi. Có điều hơi thủ công tí :|
 
Chỉnh sửa cuối:
Dùng 2 cái này nó sẽ xuất hiện ngay trên đầu Unit và ko bị lệch qua trái hay phải mà sẽ bay thẳng lên
Mã:
Floating Text - Create floating text that reads [B]Thông tim[/B] above [B]Unit muốn hiện[/B] with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency

Floating Text - Set the velocity of (Last created floating text) to 90.00 towards 90.00 degrees
 
Mọi người có ai gặp tình trạng này không ? Sau khi save = War III,load chơi rồi lại save tiếp thì những save sau đó đều bị crash.
 
1/Khi làm 1 skill passive có giá trị âm trong F5 (dùng dấu trừ or dấu gạch là ra) nhưng sao em làm trong máy khi set giá trị âm nó lại nhảy về 0 ?????
2/Với skill war club (cái skill nhặt cây của con người đá) có dòng mấy dòng khó hiểu:
attach delay: xxx
remove delay: xxx
mấy dòng này có tác dụng gì vậy ?
 
Instant Movement <~~~~~ skill blink AM của a Tom làm, ai có thể MUI giúp dc k? ... thật sự là skill này............ chả hĩu zì để làm MUI :|
 
1/Khi làm 1 skill passive có giá trị âm trong F5 (dùng dấu trừ or dấu gạch là ra) nhưng sao em làm trong máy khi set giá trị âm nó lại nhảy về 0 ?????
2/Với skill war club (cái skill nhặt cây của con người đá) có dòng mấy dòng khó hiểu:
attach delay: xxx
remove delay: xxx
mấy dòng này có tác dụng gì vậy ?

1-Shift + Enter hoặc Shift + double click chuột trái


Instant Movement <~~~~~ skill blink AM của a Tom làm, ai có thể MUI giúp dc k? ... thật sự là skill này............ chả hĩu zì để làm MUI :|



[spoil]
Mã:
InstantMovementBegin
    Events
        Unit - A unit Begins casting an ability
    Conditions
        (Ability being cast) Equal to Instant Movement 
    Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                InstantMovement_Int[1] Equal to 0
            Then - Actions
                Trigger - Turn on InstantMovementTimer <gen>
            Else - Actions
        Set InstantMovement_Int[1] = (InstantMovement_Int[1] + 1)
        Set InstantMovement_Int[2] = (InstantMovement_Int[2] + 1)
        Set InstantMovementCaster[InstantMovement_Int[1]] = (Casting unit)
        Set TempLoc = (Position of (Triggering unit))
        Set TempLoc2 = (Target point of ability being cast)
        Unit - Create 1 Dummy Instant Movement for (Owner of InstantMovementCaster[InstantMovement_Int[1]]) at TempLoc facing (Angle from TempLoc to TempLoc2) degrees
        Set InstantMovementDummy[InstantMovement_Int[1]] = (Last created unit)
        Animation - Play InstantMovementDummy[InstantMovement_Int[1]]'s spell throw animation
        Animation - Change InstantMovementDummy[InstantMovement_Int[1]]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency
        Custom script:   call RemoveLocation( udg_TempLoc )
        Custom script:   call RemoveLocation( udg_TempLoc2 )
Mã:
InstantMovementBlink
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Instant Movement 
    Actions
        For each (Integer A) from 1 to InstantMovement_Int[1], do (Actions)
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Triggering unit) Equal to InstantMovementCaster[(Integer A)]
                    Then - Actions
                        Set InstantMovementFade[(Integer A)] = 50.00
                        Set InstantMovementBlink[(Integer A)] = True
                        Animation - Change InstantMovementCaster[(Integer A)]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
                        Animation - Change InstantMovementDummy[(Integer A)]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
                        Skip remaining actions
                    Else - Actions
Mã:
InstantMovementStop
    Events
        Unit - A unit Stops casting an ability
    Conditions
        (Ability being cast) Equal to Instant Movement 
    Actions
        For each (Integer A) from 1 to InstantMovement_Int[1], do (Actions)
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Triggering unit) Equal to InstantMovementCaster[(Integer A)]
                    Then - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                InstantMovementBlink[(Integer A)] Equal to False
                            Then - Actions
                                Unit - Remove InstantMovementDummy[(Integer A)] from the game
                            Else - Actions
                    Else - Actions
Mã:
InstantMovementTimer
    Events
        Time - Every 0.01 seconds of game time
    Conditions
    Actions
        For each (Integer A) from 1 to InstantMovement_Int[1], do (Actions)
            Loop - Actions
                Set InstantMovementFade[(Integer A)] = (InstantMovementFade[(Integer A)] + 1.00)
                Animation - Change InstantMovementCaster[(Integer A)]'s vertex coloring to (100.00%, 100.00%, 100.00%) with (100.00 - InstantMovementFade[(Integer A)])% transparency
                Animation - Change InstantMovementDummy[(Integer A)]'s vertex coloring to (100.00%, 100.00%, 100.00%) with InstantMovementFade[(Integer A)]% transparency
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        InstantMovementFade[(Integer A)] Equal to 100.00
                    Then - Actions
                        Unit - Remove InstantMovementDummy[(Integer A)] from the game
                        Set InstantMovement_Int[2] = (InstantMovement_Int[2] - 1)
                    Else - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        InstantMovement_Int[2] Equal to 0
                    Then - Actions
                        Trigger - Turn off (This trigger)
                        Set InstantMovement_Int[1] = 0
                    Else - Actions
[/spoil]

 
Chỉnh sửa cuối:
Mã:
function SoulWaveCon takes nothing returns boolean
    return GetSpellAbilityId() == 'A0A4'
endfunction

function SoulWaveAct takes nothing returns nothing
    local unit cas = GetTriggerUnit()
    local location casloc = GetUnitLoc(cas)
    local location tarloc = GetSpellTargetLoc()
    local integer lvl = GetUnitAbilityLevel(cas,'A0A4')
    local real dis = DistanceBetweenPoints(casloc,tarloc)
    local integer point = R2I(dis/250)
    local real angle = AngleBetweenPoints(casloc,tarloc)
    local location dumpoint
    local unit dummy
    if point < 1 then 
    set point = 1
    else
    endif
    
    set bj_forLoopAIndex = 1
    set bj_forLoopAIndexEnd = point
    loop
        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        set dumpoint = PolarProjectionBJ(casloc,I2R(bj_forLoopAIndex*250),angle)
        call CreateUnitAtLoc(GetOwningPlayer(cas),'h01A',dumpoint,0.00)
        set dummy = GetLastCreatedUnit()
        call UnitApplyTimedLife(dummy,'BTLF',1.0)
        call UnitAddAbility(dummy,'A0A3')
        call SetUnitAbilityLevel(dummy,'A0A3',lvl)
        call IssueImmediateOrder( dummy,"howlofterror")
        call DestroyEffect(AddSpecialEffect("Abilities\Spells\Other\HowlOfTerror\HowlCaster.mdl",GetLocationX(dumpoint),GetLocationY(dumpoint)))
        set dummy = null
        call RemoveLocation(dumpoint)
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
    call RemoveLocation(casloc)
    call RemoveLocation(tarloc)
endfunction

//===========================================================================
function InitTrig_Soul_Wave takes nothing returns nothing
    local trigger SoulWave = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( SoulWave, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( SoulWave, Condition( function SoulWaveCon ) )
    call TriggerAddAction( SoulWave, function SoulWaveAct )
endfunction
cho hỏi sai chỗ nào mà nó cứ báo lỗi v. ạ :|
 
Nó báo như nào,post lên cho mọi người xem với chứ ?



Mã:
function SoulWaveCon takes nothing returns boolean
    return GetSpellAbilityId() == 'A0A4'
endfunction

function SoulWaveAct takes nothing returns nothing
    local unit cas = GetTriggerUnit()
    local location casloc = GetUnitLoc(cas)
    local location tarloc = GetSpellTargetLoc()
    local integer lvl = GetUnitAbilityLevel(cas,'A0A4')
    local real dis = DistanceBetweenPoints(casloc,tarloc)
    local integer point = R2I(dis/250)
    local real angle = AngleBetweenPoints(casloc,tarloc)
    local location dumpoint
    local unit dummy
    if point < 1 then 
    set point = 1
    else
    endif
    
    set bj_forLoopAIndex = 1
    set bj_forLoopAIndexEnd = point
    loop
        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        set dumpoint = PolarProjectionBJ(casloc,I2R(bj_forLoopAIndex*250),angle)
        call CreateUnitAtLoc(GetOwningPlayer(cas),'h01A',dumpoint,0.00)
        set dummy = GetLastCreatedUnit()
        call UnitApplyTimedLife(dummy,'BTLF',1.0)
        call UnitAddAbility(dummy,'A0A3')
        call SetUnitAbilityLevel(dummy,'A0A3',lvl)
        call IssueImmediateOrder( dummy,"howlofterror")
        [COLOR="#FF0000"][B]call DestroyEffect(AddSpecialEffect("Abilities\Spells\Other\HowlOfTerror\HowlCaster.mdl",GetLocationX(dumpoint),GetLocationY(dumpoint)))[/B][/COLOR]  [I]call AddSpecialEffectLocBJ(dumpoint,"Abilities\\Spells\\Other\HowlOfTerror\\HowlCaster.mdl")
         call DestroyEffectBJ(GetLastCreatedEffectBJ())[/I]
        set dummy = null
        call RemoveLocation(dumpoint)
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
    call RemoveLocation(casloc)
    call RemoveLocation(tarloc)
    [COLOR="#0000FF"]set dumpoint = null
    set casloc = null
    set tarloc = null
    set cas = null
[/COLOR]
endfunction

//===========================================================================
function InitTrig_Soul_Wave takes nothing returns nothing
    local trigger SoulWave = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( SoulWave, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( SoulWave, Condition( function SoulWaveCon ) )
    call TriggerAddAction( SoulWave, function SoulWaveAct )
endfunction
cho hỏi sai chỗ nào mà nó cứ báo lỗi v. ạ :|

TOM: trong JASS, "\" phải viết là "\\" chứ: "Abilities\\Spells\\Other\\HowlOfTerror\\HowlCaster.mdl"

ngoài ra, các biến local kiểu: unit, location, effect, item,... phải "null" sau khi dùng xong
 
Chỉnh sửa cuối:
Status
Không mở trả lời sau này.
Back
Top