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

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

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

    game_war48 Dragon Quest

    Tham gia ngày:
    7/9/08
    Bài viết:
    1,320
    Nơi ở:
    Ice City
    @Kingwar:
    [spoil]
    Mã:
    globals
        unit array UNITP
    endglobals
    
    scope CreateUnits initializer IntCreateUnit
    function Create_Actions takes nothing returns nothing
        local integer i = 1
        
        loop
            exitwhen i > 50
            
            set UNITP[i] = CreateUnitAtLoc(Player(0),'hpea',Location(320,25),270) 
            call TriggerSleepAction( 0. )
            
            set i = i + 1
        endloop
    endfunction
    
    function IntCreateUnit takes nothing returns nothing
        local trigger Create = CreateTrigger()
        call TriggerRegisterTimerEventSingle( Create, 5 )
        call TriggerAddAction(Create, function Create_Actions)
    endfunction
    endscope
    
    scope GameInfo initializer InitTrig
    function Trig_Actions takes nothing returns nothing
        local integer i
        
        call DisplayTimedTextToPlayer( Player( 0 ), 0., 0., 30., "Create Peasant !")
        
        call TriggerSleepAction( 3. )
        
        call DisplayTimedTextToPlayer( Player( 0 ), 0., 0., 30., "Kill Peasant !")
    
        set i = 1
        loop 
            exitwhen i > 50
            
            call KillUnit( UNITP[i] )
            call DisplayTimedTextToPlayer( Player( 0 ), 0., 0., 30., "Killed " + I2S( i ) + " Peasant !")
            
            call TriggerSleepAction( 0.1 )
            
            set i = i + 1
        endloop
    endfunction
    
    function InitTrig takes nothing returns nothing
        local trigger Trig = CreateTrigger()
        call TriggerRegisterTimerEventSingle(Trig,3)
        call TriggerAddAction(Trig, function Trig_Actions)
    endfunction
    endscope
    Như đoạn code trên, Sau khi mỗi Peasant create ở trong loop (scope 1) thì đc "save" vào biến globals array UNITP. Và Peasant sẽ bị kill ở scope 2. [/spoil]

    ----------------------------------------------

    @Zhenghe: Xem post này: http://forum.gamevn.com/showpost.php?p=15877471
    [spoil]Đoạn code đấy thiếu và sai rất nhiều.

    Dùng Jassnewgen, native này kô có
    Mã:
       call [B]AddSpecialEffectTargetUnit[/B]( "chest", data.target, data.sfx)
    thì nó kô hiện lên màu (ngoại trừ một số native ở 1.24, jassnewgen chưa cập nhật). Native đúng của nó phải là
    Mã:
        call[B] AddSpecialEffectTarget[/B]( "chest", data.target, data.sfx)
    Và function này:
    Mã:
    function Thunder_Wraith_Setup takes unit caster, unit target, unit dummy, integer int, string sfx, location loc returns nothing
       local TS data = TS.create()
       local timer t1 = NewTimer()
       local timer t2
       set data.caster = GetSpellAbility()
       set data.target = GetSpellTargetUnit()
       set loc = GetUnitLoc (data.target)
       set data.sfx = "Abilities\Spells\Orc\LightningShield\LightningShieldBuff.mdl"
       set data.int = 3
       set data.dummy = CreateNUnitsAtLoc ( 1, 'e001', GetOwningPlayer(data.caster), GetUnitLoc(data.target), 0.00)
       call TimerStart( t1, (I2R(4/3) ), true, function Thunder_Wraith_Count)
       call TimerStart( t2, 0.03 ), true, function Dummy_Attach_Target)
       set t1 = null
       set t2 = null
    endfunction
    có:

    Tiếp, 2 function còn lại. Xem sơ qua thì function Dummy_Attach_Target là để move dummy unit sát với target, function Dummy_Wraith_Count là để deals damage. Có thể gộp 2 function này lại làm 1. Nhưng trước hết sửa lỗi ở function Dummy_Wraith_Count đã.
    Mã:
    function Dummy_Wraith_Count takes nothing returns nothing
       local timer t1 = GetExpiredTimer()
       call UnitAddAbility( 'A006', data.dummy)
       call IssueTargetOrder( data.dummy, "chainlightning", data.target)
       call AddSpecialEffectTarget( "chest", data.target, data.sfx)
       call DestroyEffect( GetLastCreatedEffect() )
       call UnitDamageTarget( data.caster, data.target, ((35*I2R(GetUnitAbilityLevel(data.caster, 'A004')))+ 15),true,false,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS) 
       set data.int = (data.int - 1)
       if data.int <= 0 then
          call data.destroy()
          call ReleaseTimer(t1)
       endif
       set t1 = null
    endfunction   
    Trở lại việc gộp 2 function kia. Spell này mỗi 1 giây deals damage 1 lần đúng kô ? Giờ tạo thêm 1 biến integer ở struct, đặt tên là tick.
    Mã:
     struct TW
       unit caster
       unit target
       unit dummy
       location loc // Giờ mới để ý cái này, bỏ đi, kô dùng đến mà.
       integer int
       string sfx
    endstruct
    Thêm tick, bỏ loc đi:

    Mã:
    truct TW
       unit caster
       unit target
       unit dummy
       
       integer int
       integer tick
       
       string sfx
    endstruct
    Ngừng ở đây, kô chữa nữa, làm lại cái mới thôi.
    [/spoil]
     
    Chỉnh sửa cuối: 31/7/10
    kingwar2010 thích bài này.
  2. KuKulKan

    KuKulKan T.E.T.Я.I.S

    Tham gia ngày:
    2/8/09
    Bài viết:
    629
    Nơi ở:
    Quận Thủ Đức, Thành phố Hồ Chí Minh
    dùng Global, nếu dùng Global trong jass thi khỏi cần udg, các function đều có thể dùng

    globals
    integer i
    real a
    endglobals

    nếu

    globals
    private integer i
    private real a
    endglobals

    thì chỉ xài được cho các function trong scope đó thôi
     
  3. King War

    King War

    Tham gia ngày:
    23/7/10
    Bài viết:
    2,136
    Nơi ở:
    kw_corp@yh
    bài giảng rất hay, nhưng rep hết dc (spam bên trại rep hết rùi):D
     
    kingwar2010 thích bài này.
  4. Andien

    Andien Youtube Master Race

    Tham gia ngày:
    13/6/10
    Bài viết:
    9
    cách trên mình đã thử rồi, nó có bug là khi sử dụng skill gây damage thì passive này tự họat động luôn
     
  5. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    Demo Map đây, chỉ cần 1 trigger là đủ:)
     
  6. TranTrongTin

    TranTrongTin Youtube Master Race

    Tham gia ngày:
    31/7/10
    Bài viết:
    32
    Mong mấy anh chị chỉ dạy thêm về điều này: Trong Warcraft có khá nhiều Event Response (trong trigger í) như Entering Unit, Dying Unit,... mấy anh chị vui lòng giải nghĩa hết giùm em đc ko?
    Còn nữa, muốn tạo một item mà chỉ cần mua nó là biến (như trong KT chủa anh Rex) thì làm thế nào?


    Em ko có thời gian để lục diễm đàn. Hu hu

    ---------- Post added at 16:28 ---------- Previous post was at 16:26 ----------

    Mong mấy anh chị chỉ dạy thêm về điều này: Trong Warcraft có khá nhiều Event Response (trong trigger í) như Entering Unit, Dying Unit,... mấy anh chị vui lòng giải nghĩa hết giùm em đc ko?
    Còn nữa, muốn tạo một item mà chỉ cần mua nó là biến (như trong KT chủa anh Rex) thì làm thế nào?;));))


    Em ko có thời gian để lục diễm đàn. :(:(
     
  7. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    http://forum.gamevn.com/showpost.php?p=6613167
     
  8. dh-g

    dh-g Fire in the hole!

    Tham gia ngày:
    29/8/09
    Bài viết:
    2,654
    Nơi ở:
    Q1 TP.HCM
    con unti bên cạnh phải bỏ vào cho nó có chế độ thấy và là có inventory
    mơi ok

    ---------- Post added at 17:05 ---------- Previous post was at 17:04 ----------

    cái kia là vô khả giải thích
    có rất là nhiều unit khác nhau nếu bạn muốn học thì phải hỏi từ từ
     
  9. King War

    King War

    Tham gia ngày:
    23/7/10
    Bài viết:
    2,136
    Nơi ở:
    kw_corp@yh
    item loại power up :|
    và có thể nói rõ item nào trong map :|
     
  10. TranTrongTin

    TranTrongTin Youtube Master Race

    Tham gia ngày:
    31/7/10
    Bài viết:
    32
    Giả sử item tên tome of streng và cần biến đến Move <gen> thì phải làm trigger như thế nào?

    ---------- Post added at 17:51 ---------- Previous post was at 17:47 ----------

    À quên mất, nếu làm camera mà nó chỉ hiển thị phần phía trước của nhân vật (nghĩa là nhân vật quay sang phải thì nó cũng sang phải) thì làm cách nào?

    Có bài viết nào tổng hợp đầy đủ các Action trong trigger ko?
     
  11. King War

    King War

    Tham gia ngày:
    23/7/10
    Bài viết:
    2,136
    Nơi ở:
    kw_corp@yh
    http://forum.gamevn.com/showpost.php?p=15781889

    ko có
    tùy theo sự edit của người làm map mà action công dụng khác nhau :|
     
  12. TranTrongTin

    TranTrongTin Youtube Master Race

    Tham gia ngày:
    31/7/10
    Bài viết:
    32
    sao em vô một map mà vô map thì nó cho trở lại màn hình đánh tên, làm sao đây?
     
  13. King War

    King War

    Tham gia ngày:
    23/7/10
    Bài viết:
    2,136
    Nơi ở:
    kw_corp@yh
    save = jngp mới hết bị
    nếu trong map jass k có vấn đề
    --------
    nếu test vẫn k dc thì save map đễ cho jasshelp sữa lại, xong mới test lại
     
    Chỉnh sửa cuối: 31/7/10
  14. conga12

    conga12 Mr & Ms Pac-Man

    Tham gia ngày:
    4/7/10
    Bài viết:
    164
    làm thế nào khi lụm đồ ma full thùng thì đồ bay về thùng đồ vậy
     
  15. TranTrongTin

    TranTrongTin Youtube Master Race

    Tham gia ngày:
    31/7/10
    Bài viết:
    32
    Chắc chắn có. Em có một map làm đc như thế( quên mất rồi:((:(()
    Thế có ai chỉ làm camera thế này không:
    Đầu tiên, từ vị trí camera 1 chuyển đến camera 2 và quay 90 độ theo chiều kim đồng hồ.
    Sau đó nó sẽ mở rộng. thu nhỏ màn hình hệt như đất đang rung vậy đó (em ko bik cách viết thế nào cho rõ) như map Võ Lâm Thất Hiệp lúc đánh trùm chết
    .

    Nếu được chỉ dẫn toàn bộ về camera thì càng tốt (phần đối thoại trong cinematic thì bik rồi, chỉ còn camera cho hoàng tráng thôi)
     
  16. tinhle87

    tinhle87 Mr & Ms Pac-Man

    Tham gia ngày:
    22/8/08
    Bài viết:
    127
    cho mình hỏi cí/ mình replace unit chỉnh thời gian wait là 2s thì đc mà chuyển thành 60s thì kô đc
    A unit owned by Player 12 (Brown) Dies
    Dying unit is A Group unit Equal True
    Wait 60.00 seconds
    Unit _ Replace( Dying unit) with a ( Unit-tyoe of ( Dying unit)) using The new units max life and mana
    Có cách nào hồi sinh hoặc tạo unit mới sau khi chết kô...hero thì làm đc rôi
     
  17. ZhengHe

    ZhengHe T.E.T.Я.I.S

    Tham gia ngày:
    4/1/09
    Bài viết:
    623
    @tinhle87: tốt nhất nên Create thay cho Replace
    Unit - Create 1 Foot man at point .....
     
  18. tinhle87

    tinhle87 Mr & Ms Pac-Man

    Tham gia ngày:
    22/8/08
    Bài viết:
    127
    ngay cả creat cũng không đc rôi ý. vấn đề là wait time thôi. để 2s thì đc mà để hơn thì kô đc
     
  19. King War

    King War

    Tham gia ngày:
    23/7/10
    Bài viết:
    2,136
    Nơi ở:
    kw_corp@yh
    local unit unitit = GetDyingUnit()
    call CreateNUnitsAtLoc( 1, GetUnitTypeId(unitit), Player(0), GetUnitLoc(unitit), bj_UNIT_FACING )
    bị leak rùi
     
    Chỉnh sửa cuối: 1/8/10
  20. kingwar2010

    kingwar2010 T.E.T.Я.I.S

    Tham gia ngày:
    6/11/09
    Bài viết:
    554
    Nơi ở:
    TP.HCM
    coi kỹ trong này : http://forum.gamevn.com/showthread.php?103123
     
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này