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. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    Cách kiểm tra một skill đang cooldown và làm một skills passive có thể cooldown
     
  2. Ryanpzo9

    Ryanpzo9 Donkey Kong

    Tham gia ngày:
    20/10/08
    Bài viết:
    326
    Thanks a Tom. Nãy toàn tìm trong Action - Items mà quên k để ý đến mục Hero :D

    @andy_bi
    1. Thế thì làm ra làm cái gì cho phí công? Dù có ngu nó cũng phải biết đi farm, giết nhau, lên đồ, chạy khi yếu thế và dùng skill.

    Lệnh Order Item On A Unit chỉ tác dụng khi có target. Với item no target như Arcane Boots thì vô dụng rồi.
     
  3. vuongkkk

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

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    Dùng jass: Issue<type>Order returns boolean
    Nếu false có nghĩa skill bạn đã order:
    - Ko tồn tại
    - Đang bị silent
    - Đang cooldown
    Nếu true thì order stop là ko cast skill đó nữa

    Skill passive mà có cooldown
    Nếu ko MUI thì chỉ đơn giản là disable trigger của skill passive đó rồi dùng timer để hết time thì bật lại skill
    Nếu MUI thì mình dùng wait/timer + boolean để lưu coi đã cooldown skill chưa (Trigger event unit generic)
    Nếu MUI thì mình dùng wait/timer + disable/enable trigger (Trigger event unit specific)
     
  4. andy_bi

    andy_bi Mr & Ms Pac-Man

    Tham gia ngày:
    17/5/12
    Bài viết:
    106
    bạn làm AI 1 mình bạn hay là nhiều ng
    nếu 1 mình bạn thì mình khuyên nên... từ bỏ đi :))
    vì... cái như bạn nói: biết farm, giết ng, chạy khi yếu thế,... tóm lại là... tá lả
    IF làm mất 1 tháng hơn đấy bạn (kể từ khi ra bản gốc v6.74c, 1 tháng sau mới có AI :|), mà cũng chả biết có phải IF làm ko nữa (vì lúc đề tên là... PBMN - Please Bug Me Not) và AI... còn nhiều lúc bị lỗi nữa chứ (mắc cười, nhớ có ver của AI, bara dúng skill 1 xong invulable armor =)))
    hãy suy nghĩ thật kĩ nhé bạn \m/, coi chừng mâdt nhiều thòi gian mà ko đc gì (như mình, đã... bỏ WE) :))
     
  5. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    hơi một tí là lôi IF vào, ghê vậy? :-o

    không giúp thì thôi, ai cần vào bốc phét đâu?
     
  6. Killer.V.Lord01

    Killer.V.Lord01 Mr & Ms Pac-Man

    Tham gia ngày:
    30/6/12
    Bài viết:
    152
    Nơi ở:
    Đăk Lăk
    nói giảm cái gì thế. cái gì mà 1 mình bạn thì nghỉ đi. cái gì mà sũy nghĩ thật kĩ. làm cụt chí người ta à. bạn minhtronglam kìa. học tringger năm lớp 5. năm nay lớp 7. làm được AI. đấy. nếu là cao nhân GUI hoặc JAss thì hãy nói. còn không thì cứ học hỏi đi. còn dota sao lại 1 tháng sau mới có AI. thế những ver trước AI không có à. (còn bỏ WE thì bỏ đi việc gì phải rủ người ta. hay là làm không nổi rồi bỏ :)))
     
  7. andy_bi

    andy_bi Mr & Ms Pac-Man

    Tham gia ngày:
    17/5/12
    Bài viết:
    106
    có hiểu ko? :-/
    kể từ khi ra v6.74c, 1 tháng sau mới có v6.74c AI chứ ko phải là mấy ver trước ko có AI :-/
    còn cái post ấy là chỉ khuyên, góp ý thôi chú ko có ý làm lung lay ý chí bạn ấy :)
     
  8. Ryanpzo9

    Ryanpzo9 Donkey Kong

    Tham gia ngày:
    20/10/08
    Bài viết:
    326
    @andy_bi

    Tôi làm 1 mình và tôi có nỗ lực của riêng tôi. Tôi k đủ trình độ để làm đc AI khủng bố như Dota nên tôi làm theo quan điểm của tôi. Còn cái thứ lười nhác động tí là nản như cậu thì chả làm nên trò trống gì đâu. :)
     
  9. zZShinryuZz

    zZShinryuZz Youtube Master Race

    Tham gia ngày:
    7/9/05
    Bài viết:
    70
    Repost 3rd. Có ai giúp được k ? (K thì xin đừng rãnh rỗi spam)
     
  10. Killer.V.Lord01

    Killer.V.Lord01 Mr & Ms Pac-Man

    Tham gia ngày:
    30/6/12
    Bài viết:
    152
    Nơi ở:
    Đăk Lăk
    lại thích cãi nhau à. cứ cho là 6.74c mới có AI đi, vậy các ver trước AI IF nó xóa tringgfer đi làm lại à :s.
    cứ ra ver mới là xóa tringger AI của ver cũ đi xong viết lại tringger mới để mất 1 tháng mới ra 6.74c AI à. cứ thích cãi cố nhỉ.

    ---------- Post added at 15:00 ---------- Previous post was at 14:59 ----------

    có thể do bận bịu để phát triển các phiên bản tiếng khác. tiếng trung hoặc nga chẳng hạn. mất 1 tháng là con nhanh đấy. tưởng tượng viết lại toàn bộ tooptip. rồi nó bận công việc gì thì mặc bố nó. chứ đâu phải nó bỏ ra 1 tháng để phát triển AI
     
  11. Ngoc LeO

    Ngoc LeO Mario & Luigi

    Tham gia ngày:
    23/7/06
    Bài viết:
    839
    Nơi ở:
    Nothing...
    Ai xem hộ mình cái này sao mình pick every unit rồi gây damage không được =-=

    Mã:
    function Trig_Thoi_Son_Conditions takes nothing returns boolean
        if ( not ( GetSpellAbilityId() == 'A091' ) ) then
            return false
        endif
        return true
    endfunction
    
    function Group takes nothing returns boolean
        local unit uc = GetTriggerUnit()
        local unit up = GetFilterUnit()
        local real dmg = (80.00 * I2R(GetUnitAbilityLevelSwapped('A091', uc)))
        local location p = GetUnitLoc(up)
        if ( IsUnitType(up, UNIT_TYPE_STRUCTURE) == true ) and ( IsUnitAliveBJ(up) == true) and ( IsUnitEnemy(up, GetOwningPlayer(uc)) == true) and ( IsUnitType(up, UNIT_TYPE_MAGIC_IMMUNE) == false) then
        call UnitDamageTargetBJ( uc, up, dmg, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL )
        call AddSpecialEffectLocBJ( p , "Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl" )
        call DestroyEffectBJ( GetLastCreatedEffectBJ() )
        call RemoveLocation (p)
        endif
        set uc = null
        set up = null
        set p = null
        return true
    endfunction
    
    function Trig_Thoi_Son_Actions takes nothing returns nothing
        local unit uc = GetTriggerUnit()
        local unit ut = GetSpellTargetUnit()
        call UnitAddAbility(ut,'A172')
        call TriggerSleepAction( ( 1 * I2R(GetUnitAbilityLevelSwapped('A091', uc)) ) )
        call UnitRemoveAbility(ut,'A172')
        set udg_TempLoc = GetUnitLoc(ut)
        set udg_TempGroup = GetUnitsInRangeOfLocAll (500,udg_TempLoc)
        call ForGroupBJ( udg_TempGroup, function Group )
        call DestroyGroup (udg_TempGroup)
        set uc = null
        set ut = null
    endfunction
    
    //===========================================================================
    function InitTrig_Thoi_Son takes nothing returns nothing
        set gg_trg_Thoi_Son = CreateTrigger(  )
        call TriggerRegisterAnyUnitEventBJ( gg_trg_Thoi_Son, EVENT_PLAYER_UNIT_SPELL_EFFECT )
        call TriggerAddCondition( gg_trg_Thoi_Son, Condition( function Trig_Thoi_Son_Conditions ) )
        call TriggerAddAction( gg_trg_Thoi_Son, function Trig_Thoi_Son_Actions )
    endfunction
    
     
  12. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    function callback của ForGroup chính là cái "Loop - Actions", trong này phải dùng Picked Unit chứ sao lại dùng Matching Unit?
     
  13. Ngoc LeO

    Ngoc LeO Mario & Luigi

    Tham gia ngày:
    23/7/06
    Bài viết:
    839
    Nơi ở:
    Nothing...
    Cám ơn anh em mày mò làm thử nên còn nhiều cái nhầm lẫn,em còn đặt nhầm điều kiện picked unit là STRUCTURE nữa :">

    P/s: vậy là mỗi lần dùng Loop - Actions như pick every unit .v.v. đều phải dùng một function riêng và gọi nó đúng không anh ?

    Và em thắc mắc một điều là mỗi hàm trả cho ta một giá trị (ví dụ boolean trả là true hoặc false) thì cái giá trị đó để làm gì vậy anh ?
     
  14. truongdzuy

    truongdzuy Mr & Ms Pac-Man

    Tham gia ngày:
    25/1/09
    Bài viết:
    274
    Nơi ở:
    Tp.HCM
    cho em hỏi cách kiểm tra Damage hiện tại của mình để từ đó deal damg, như map Thiên Kiếm là skill gây damg = 520% sát thương ..... ấy :D
     
    Chỉnh sửa cuối: 27/7/12
  15. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    - thật ra có thể lặp kiểu này:

    Mã:
    function Trig_Thoi_Son_Conditions takes nothing returns boolean
        if ( not ( GetSpellAbilityId() == 'A091' ) ) then
            return false
        endif
        return true
    endfunction
    
    function Trig_Thoi_Son_Actions takes nothing returns nothing
        local unit uc = GetTriggerUnit()
        local unit ut = GetSpellTargetUnit()
    	local unit up
    	local location p
        call UnitAddAbility(ut,'A172')
        call TriggerSleepAction( ( 1 * I2R(GetUnitAbilityLevelSwapped('A091', uc)) ) )
        call UnitRemoveAbility(ut,'A172')
        set udg_TempLoc = GetUnitLoc(ut)
        set udg_TempGroup = GetUnitsInRangeOfLocAll (500,udg_TempLoc)
    	loop
    		set up = FirstOfGroup( udg_TempGroup )
    		exitwhen up==null
    		call GroupRemoveUnit( udg_TempGroup, up)
    		if ( IsUnitType(up, UNIT_TYPE_STRUCTURE) == true ) and ( IsUnitAliveBJ(up) == true) and ( IsUnitEnemy(up, GetOwningPlayer(uc)) == true) and ( IsUnitType(up, UNIT_TYPE_MAGIC_IMMUNE) == false) then
    			set p = GetUnitLoc(up)
    			call UnitDamageTargetBJ( uc, up, dmg, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL )
    			call AddSpecialEffectLocBJ( p , "Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl" )
    			call DestroyEffectBJ( GetLastCreatedEffectBJ() )
    			call RemoveLocation (p)
    			set p = null
    		endif
    	endloop
        call DestroyGroup (udg_TempGroup)
        set uc = null
        set ut = null
    endfunction
    
    //===========================================================================
    function InitTrig_Thoi_Son takes nothing returns nothing
        set gg_trg_Thoi_Son = CreateTrigger(  )
        call TriggerRegisterAnyUnitEventBJ( gg_trg_Thoi_Son, EVENT_PLAYER_UNIT_SPELL_EFFECT )
        call TriggerAddCondition( gg_trg_Thoi_Son, Condition( function Trig_Thoi_Son_Conditions ) )
        call TriggerAddAction( gg_trg_Thoi_Son, function Trig_Thoi_Son_Actions )
    endfunction
    
    - cái này còn tùy hàm, ví dụ:
    IssueTargetOrderBJ là hàm lệnh cho một unit thực hiện order vào một mục tiêu, hàm này trả về true nếu order có thể thực hiện, false nếu không thể.
     
  16. Daric™

    Daric™ C O N T R A

    Tham gia ngày:
    7/3/12
    Bài viết:
    1,853
    Nơi ở:
    Porizon
    Anh Tom-sama này cho em hỏi há
    mình trong Jass mà tận dụng các biến real x,y của một unit hay location (mà ko dụng GetLocationX(typelocation) và GetLocationY(typelocation)) thì sẽ đỡ chiếm leak hơn là xài trực típ location hả anh? :cuteonion27: (vì thấy đỡ phải remove :-* )

    p.s thank anh :-*
     
    Chỉnh sửa cuối: 27/7/12
  17. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    đơn giản là: real không leak, location là một "handle", không remove thì leak, vậy thôi
    ngoài ra: tạo location, dùng, xóa -> dùng real thì đỡ đc vụ "tạo + xóa".
     
  18. fantom2409

    fantom2409 Mr & Ms Pac-Man

    Tham gia ngày:
    15/8/11
    Bài viết:
    194
    cho mình hỏi làm sao sau khi cast skill, tất cả những gì trong một AoE nhất định đều bị slow?? kể cả missle,...
     
  19. game_war48

    game_war48 Dragon Quest

    Tham gia ngày:
    7/9/08
    Bài viết:
    1,320
    Nơi ở:
    Ice City
    Không có cách. Trừ khi "trigger" hết tất cả các missile có trong map, từ missile được tạo ra khi attack, missile được tạo ra từ spells (các missiles này sẽ là những dummy units).
    Nếu giỏi Jass có thể dùng system này: System - Projectile
     
  20. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    ý tớ không phải cái này. Bạn biết skil 3 của kiến trong dota chứ? Mình muốn hỏi cách làm cooldown như vậy.
     
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này