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

Thảo luận trong 'World Editor' bắt đầu bởi Tom_Kazansky, 12/6/12.

Trạng thái chủ đề:
Không mở trả lời sau này.
  1. zZShinryuZz

    zZShinryuZz Youtube Master Race

    Tham gia ngày:
    7/9/05
    Bài viết:
    70
    Mình hỏi trigger này có lỗi hay nên sửa gì không vậy ? Với lại vì sao mình destroy trigger thì nó không chạy ?
    Mã:
    function Add_charge_cond takes nothing returns boolean
        return GetItemType(GetManipulatedItem()) == ITEM_TYPE_CHARGED
    endfunction
    
    function check_Item_in_loop takes item x, item y returns boolean
        return ( x != y ) and ( GetItemTypeId(x) == GetItemTypeId(y) ) 
    endfunction
    
    function Trig_Add_charge_Actions takes nothing returns nothing
        local unit owner = GetManipulatingUnit()
        local item x = GetManipulatedItem()
        local item y
        local integer i = 0
        local integer b
        local boolean h = false
        loop
            exitwhen (i > 5) or (h == true)
            set y = UnitItemInSlot(owner,i)
            if ( check_Item_in_loop(x,y) ) then
                if (GetItemCharges(y) != 99 ) then
                    set b = ( GetItemCharges(x) + GetItemCharges(y) )
                    if ( b <= 99 ) then
                        call SetItemCharges( y, b )
                        call RemoveItem(x)
                    else
                        call UnitRemoveItem( owner, x )
                        call SetItemCharges( x, b-99 )
                        call SetItemCharges( y, 99 )
                    endif
                else
                    call UnitRemoveItem( owner, x )
                endif
            set h = true
            endif
            set i = i + 1
        endloop
        set x = null
        set y = null
        set owner = null
    endfunction
    
    //===========================================================================
    function InitTrig_Add_charge takes nothing returns nothing
        local trigger t
        set t = CreateTrigger(  )
        call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_PICKUP_ITEM )
        call TriggerAddCondition( t, Condition( function Add_charge_cond ) )
        call TriggerAddAction( t, function Trig_Add_charge_Actions )
    //    call DestroyTrigger(t)
    //    set t = null
    endfunction
    
     
  2. game_war48

    game_war48 Dragon Quest

    Tham gia ngày:
    7/9/08
    Bài viết:
    1,320
    Nơi ở:
    Ice City
    Destroy rồi thì tất nhiên trigger k chạy được nữa vì đâu còn cái trigger đó nữa. Như kiểu cậu Disable trigger trong GUI ấy :)).
    Tự test xem có lỗi không đi. Chả ai rảnh xem dùm đâu :)).
     
  3. zZShinryuZz

    zZShinryuZz Youtube Master Race

    Tham gia ngày:
    7/9/05
    Bài viết:
    70
    Cám ơn bạn :) vì mình lấy của người khác nên ko rành lắm
     
  4. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    Hiện tượng này là do không sử lí kĩ các biến, khiến chúng đè lên nhau đặc biệt là các biến của dummy, hoặc một số lí đo khiến trigger bị tắt, không thực hiện nữa.
    Tham khảo spell này. Có đầy đủ MUI, slide, dummy.
     
  5. truongdzuy

    truongdzuy Mr & Ms Pac-Man

    Tham gia ngày:
    25/1/09
    Bài viết:
    274
    Nơi ở:
    Tp.HCM
    [spoil]
    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 dumpoint = null
            set bj_forLoopAIndex = bj_forLoopAIndex + 1
        endloop
        call RemoveLocation(casloc)
        call RemoveLocation(tarloc)
        set casloc = null
        set tarloc = null
        set cas = null
    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
    
    
    [/spoil]
    Hỏi trigger này, tại s xài nh` lần liên tục k hiểu s đôi khi caster tự động có expire timer và die :| .............. 2 nữa là cho dummy cast howl of terror k dc, k thấy - armor và - damg :((.
     
  6. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    GetLastCreatedUnit() không lấy được unit được tạo ra bởi CreateUnitAtLoc

    Mã:
    call CreateUnitAtLoc(GetOwningPlayer(cas),'h01A',dumpoint,0.00)
    set dummy = GetLastCreatedUnit()
    phải là:

    Mã:
    set dummy = CreateUnitAtLoc(GetOwningPlayer(cas),'h01A',dumpoint,0.00)
    do biến dummy chứa "last created unit" nào đó chứ không chứa unit 'h01A' nên mấy spell ko cast, sửa lại như trên là đc
     
  7. WordEditor

    WordEditor C O N T R A

    Tham gia ngày:
    8/9/08
    Bài viết:
    1,509
    Nơi ở:
    Leaf Village
    ...xin cho tại hạ hỏi là có cách nào "un-learn" cái upgrade tăng range không...,disable, hay là giảm level của nó cũng được :-ss (đang đau đầu với vụ này :-s)
     
  8. Ngoc LeO

    Ngoc LeO Mario & Luigi

    Tham gia ngày:
    23/7/06
    Bài viết:
    839
    Nơi ở:
    Nothing...
    Tạo hai cái Upgrades,một cái với số Dương,một cái với số Âm có giá trị tương đương. Khi cần thì un-learn thì set cái Upgrades Âm +1. Sau đó set Player - Set the current research level of của hai cái đó về 0 để lần sau vẫn có thể upgrades mà không sợ max level
     
    Chỉnh sửa cuối: 14/8/12
  9. kissofaries

    kissofaries Dragon Quest

    Tham gia ngày:
    11/3/07
    Bài viết:
    1,463
    Nơi ở:
    Kalimdor
    Mã:
    UnitTakeDamage
        Events
        Conditions
        Actions
            Trigger - Turn off (This trigger)
            -------- Setup Variables --------
            Set UnitTakeDamage = (Triggering unit)
            Set UnitDamageSource = (Damage source)
            Set UnitTakeDamageReal = (Damage taken)
            -------- Setup Integer --------
            Set SnakeDamageInt = (Level of Charge (Snake Aes) for UnitDamageSource)
            Set MummrahTakeDamageInt = (Level of Charge (Rah) for (Triggering unit))
            -------- Main Trigger --------
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    SnakeDamageInt Greater than 0
                    (UnitTakeDamage has buff Mana Attack (Non-stacking)) Equal to True
                Then - Actions
                    Unit - Remove Mana Attack (Non-stacking) buff from UnitTakeDamage
                    Unit - Set mana of UnitDamageSource to ((Mana of UnitDamageSource) + (2.00 + (0.10 x UnitTakeDamageReal)))
                    Floating Text - Create floating text that reads ((|cffd4d0c8 + + ((String((2 + (Integer((0.10 x UnitTakeDamageReal)))))) + Mana)) + |r) above UnitDamageSource 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 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 1.50 seconds
                    Special Effect - Create a special effect attached to the chest of UnitDamageSource using Abilities\Spells\Items\AIma\AImaTarget.mdl
                    Special Effect - Destroy (Last created special effect)
                Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    MummrahTakeDamageInt Greater than 0
                    (UnitTakeDamage has buff Charge (Rah)) Equal to True
                Then - Actions
                    Unit - Set mana of UnitTakeDamage to ((Mana of (Triggering unit)) + (0.15 x UnitTakeDamageReal))
                    Floating Text - Create floating text that reads ((|cffd4d0c8 + + ((String((Integer((5.00 + (0.15 x UnitTakeDamageReal)))))) + Mana)) + |r) above UnitTakeDamage 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 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 1.50 seconds
                    Special Effect - Create a special effect attached to the chest of UnitTakeDamage using Abilities\Spells\Items\AIma\AImaTarget.mdl
                    Special Effect - Destroy (Last created special effect)
                Else - Actions
            -------- Turn On trigger --------
            Trigger - Turn on (This trigger)
    mọi người cho hỏi tại sao cái đoạn mana attack lại ko hồi mana nhỉ @@, đoạn thứ 2 thì ok ko có vấn đề gì... (nếu ra là do buff thì em bó tay, làm y hệt tut của anh tom mà ...)
     
  10. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    không =)

    set current research level được thì nói làm gì =))

    vẫn phân biệt "stacking" và "non-stacking" ? cái "poison" đòi 3 slot buff thì để cả 3 slot là một custom buff cho dễ, đỡ phải phân biệt?
     
    Chỉnh sửa cuối: 14/8/12
  11. kunbuzz1990

    kunbuzz1990 Youtube Master Race

    Tham gia ngày:
    26/3/12
    Bài viết:
    89
    giúp mình cái này với,

    Trigger 1:
    Mã:
        Events
            Unit - A unit Dies
        Conditions
            ((Triggering unit) is A Hero) Equal to True
            ((Owner of (Triggering unit)) is an enemy of Player 7 (Green)) Equal to False
        Actions
            Countdown Timer - Start DeadTimer[(Player number of (Owner of (Triggering unit)))] as a One-shot timer that will expire in 10 seconds
            Trigger - Add to Triiger 2 <gen> the event (Time - (Last started timer) expires)
    
    vậy ở Trigger 2 làm sao để biết DeadTimer số mấy?

    mình làm cái hồi sinh hero đó có đúng ko? ai có cách hay hơn chỉ với
     
  12. Ngoc LeO

    Ngoc LeO Mario & Luigi

    Tham gia ngày:
    23/7/06
    Bài viết:
    839
    Nơi ở:
    Nothing...
    Vậy thì chỉ có cách dùng cái upgrades với giá trị âm để giảm giá trị cái kia thôi vậy :(

    Mã:
    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 // thao tác ở đây
    
     
    Chỉnh sửa cuối: 14/8/12
  13. minhtronglam90

    minhtronglam90 Donkey Kong GameOver

    Tham gia ngày:
    5/6/12
    Bài viết:
    422
    các bạn ơi nảy mình vừa làm xong spell vào map test thấy nó ko cooldown khi sử dụng khi bật worldeditor coi lại thì thấy có để cooldown là 20 nhưng khi vào game lại nó vẫn ko cooldown
    => sử dụng liên tục => lag
    mọi người ai biết cách fix chỉ giúp mình với
     
  14. WordEditor

    WordEditor C O N T R A

    Tham gia ngày:
    8/9/08
    Bài viết:
    1,509
    Nơi ở:
    Leaf Village
    Không ổn đâu bạn à, nếu như bạn nói thì nó chỉ tăng-giảm được đúng một lần, còn nếu nhiều hơn thì phải đòi hỏi cả trăm cái upgrades... X_X
    ...mình định làm một skill khi active sẽ tăng range 1 lúc, sau đó thì trở lại như cũ...(lúc đầu định dùng mấy skill transform có sẵn mà nó lại gây bug #-o)

    Copy hay cho cái hình lên đi bạn, nói suông thế ai mà giúp được :-"
     
  15. minhtronglam90

    minhtronglam90 Donkey Kong GameOver

    Tham gia ngày:
    5/6/12
    Bài viết:
    422
    Magma Hand
    Events
    Unit - A unit Starts the effect of an ability
    Conditions
    (Ability being cast) Equal to Magma Hand
    Actions
    Set Caster = (Casting unit)
    Set Target = (Target unit of ability being cast)
    Special Effect - Create a special effect attached to the origin of Caster using Flame Aura.mdx
    Unit - Move Caster instantly to (Position of Target)
    Special Effect - Destroy (Last created special effect)
    Unit Group - Pick every unit in (Units within 800.00 of (Position of Caster)) and do (Actions)
    Loop - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
    ((Picked unit) is alive) Equal to True
    ((Picked unit) belongs to an enemy of (Owner of Caster)) Equal to True
    Then - Actions
    Special Effect - Create a special effect at (Position of (Picked unit)) using NuclearExplosion.mdx
    Unit - Cause Caster to damage (Picked unit), dealing (((Real((Level of Magma Hand for (Casting unit)))) x 100.00) + ((Real((Strength of (Casting unit) (Include bonuses)))) x 40.00)) damage of attack type Spells and damage type Normal
    Else - Actions
    bạn xem thử
     
  16. Ngoc LeO

    Ngoc LeO Mario & Luigi

    Tham gia ngày:
    23/7/06
    Bài viết:
    839
    Nơi ở:
    Nothing...
    Leak nhiều. Một số spell ngay lập tức move instantly caster thì sẽ không cd,bạn thử wait sau đó move sẽ ko bị
     
  17. kunbuzz1990

    kunbuzz1990 Youtube Master Race

    Tham gia ngày:
    26/3/12
    Bài viết:
    89
    cho hỏi ko set TempUnit = Triggering Unit mà để Triggering Unit lun có đc ko ? vd Unit - move Triggering unit to ....
     
  18. vuongkkk

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    ^ được

    BonusMod có bonus sight range đấy. Có thể tăng giảm tùy ý.
    Base từ Ability Item Sight Range Bonus
     
  19. truongdzuy

    truongdzuy Mr & Ms Pac-Man

    Tham gia ngày:
    25/1/09
    Bài viết:
    274
    Nơi ở:
    Tp.HCM
    bạn k set point nên nó gây nh` leak, sử dụng Ability mà có move instant nên nó sẽ k CD ( trừ khi làm Loop thì sẽ CD như bt )...........
    để tránh Leak, bạn có thể import đoạn custom script trên vào đầu trigger action:
    Mã:
    local real xtar
    local real ytar
    
    và đoạn sau vào dưới Set Caster = Triggering Unit :
    Mã:
    set xtar = GetUnitX(udg_Target)
    set ytar = GetUnitY(udg_Target)
    call SetUnitX(udg_Caster,xtar)
    call SetUnitY(udg_Caster,ytar)
    
    nếu sử dụng như trên thì pạn khỏi fải Remove Leak từ Location nữa, chỉ cần Destroy Group là sẽ hết leak và k lag :)
     
  20. lonewolf020291

    lonewolf020291 T.E.T.Я.I.S

    Tham gia ngày:
    16/3/07
    Bài viết:
    579
    Nơi ở:
    Toy Box
    ^ Attack Range đâu có mod đc.
    ...............................
     
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này