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

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

  1. DylandKyo

    DylandKyo Donkey Kong

    Tham gia ngày:
    28/10/10
    Bài viết:
    358
    Mã:
    library IceArrow initializer Init requires xedamage, xemissile
    
    globals
      private constant integer SPELLID = 'A003'
      private constant string MISSILE = "Abilities\\Weapons\\LichMissile\\LichMissile.mdl"
      private constant real SCALE = 2.
      private constant real OFFSET = 60.
      private constant real SPEED = 550.
      private constant real ARC = 0.25
    endglobals
    
    private function Damage takes unit caster returns real
      return I2R(GetUnitAbilityLevel(caster, SPELLID)/2)+I2R(GetHeroInt(caster, true))
    endfunction
    
    private function setupDamageOptions takes xedamage d returns nothing
      set d.dtype = DAMAGE_TYPE_MAGIC
      set d.atype = ATTACK_TYPE_HERO
      
      set d.exception = UNIT_TYPE_STRUCTURE
    endfunction
    
    globals
      private xedamage damageOptions
    endglobals
    
    struct IceArrowAct extends xemissile
      private unit caster
      private integer level
      static method create takes unit caster, integer level, real tx, real ty returns IceArrowAct
        local real x = GetUnitX(caster)
        local real y = GetUnitY(caster)
        local real z = GetUnitFlyHeight(caster)+OFFSET
        local IceArrowAct this = IceArrowAct.allocate(x,y,z,tx,ty,0.0)
        
        set this.caster = caster
        set this.level = level
        set this.fxpath = MISSILE
        set this.scale = SCALE
        call this.launch(SPEED, ARC)
      return this
      endmethod
      
      method onHit takes nothing returns nothing
        call damageOptions.damageTarget(.caster, .targetUnit, Damage(.caster))
      endmethod
    endstruct
    
    private function spellIdMatch takes nothing returns boolean
      return GetSpellAbilityId()==SPELLID
    endfunction
    
    private function onSpellEffect takes nothing returns nothing
      local real tx = GetSpellTargetX()
      local real ty = GetSpellTargetY()
      local unit hero = GetTriggerUnit()
      local integer level = GetUnitAbilityLevel(hero, SPELLID)
      local IceArrowAct fb = IceArrowAct.create(hero,level,tx,ty)
      set hero = null
    endfunction
    
    private function Init takes nothing returns nothing
      local trigger t = CreateTrigger()
      
      set damageOptions = xedamage.create()
      call setupDamageOptions(damageOptions)
      
      call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT)
      call TriggerAddCondition(t, Condition(function spellIdMatch))
      call TriggerAddAction(t, function onSpellEffect)
      set t = null
    endfunction
    
    endlibrary
    bác nào xem giúp e cái trigger này sao nó k hoạt động????
     
  2. findingmagic

    findingmagic Youtube Master Race

    Tham gia ngày:
    15/7/12
    Bài viết:
    42
    Cho mình hỏi một phát là cái item life steel (Mark Of Death) trong WE mình chuyển nó thành ability hero (tích true vào đó) cho hero học nhưng sao vào game khi click vào skill đó thì ko thấy icon đâu để mà học nữa, các bác nào pro chỉ mình cách làm item nó thành 1 skill bình thường dùm mình
     
  3. whisky137

    whisky137 Dragon Quest

    Tham gia ngày:
    7/2/07
    Bài viết:
    1,318
    Cho mình hỏi cái này:
    Một Hero mình cho 3 skill như thế này:
    Một skill dựa trên Impale.
    Một skill dựa trên Entanglingroots.
    Một skill tạo dummy, cast Impale ra các phía xung quanh.
    Các skill impale có airtime=0.01
    Tất cả skill hoạt động bình thường. Khi cast các skill trên vào một unit nào đó, unit đó vẫn mất máu, tuy nhiên khi unit đó chưa hết bị đơ hay trói, dùng tiếp 1 trong 2 skill còn lại thì unit đó không mất máu :|
    Nghĩa là một unit không nhận damage từ quá 1 skill cùng lúc. Trong khi trong dota, khi chơi wtf, tất cả skill ko có cooldown, cast Impale liên tục vẫn mất damage.
     
  4. Stork[gm]

    Stork[gm] Donkey Kong

    Tham gia ngày:
    29/5/09
    Bài viết:
    438
    Nơi ở:
    서울한국
    Đây gọi là impale system. dùng custom impale chứ k phải trong game nữa. Xem ở dưới. p/s: @Hunter, Leo: cái sound vẫn ko nghe thấy thành loop, để every x seconds thì nó bị ngắt quãng, làm thế nào để play 1 sound nào đó trong suốt cả game được mượt và nghe thấy trên toàn bản đồ?
     

    Các file đính kèm:

    whisky137 thích bài này.
  5. zZNightZz

    zZNightZz Youtube Master Race

    Tham gia ngày:
    9/12/12
    Bài viết:
    12
    vào chỉnh cái icon-research là đc
     
  6. Ngoc LeO

    Ngoc LeO Mario & Luigi

    Tham gia ngày:
    23/7/06
    Bài viết:
    839
    Nơi ở:
    Nothing...
    Ability đó ko hiện button,bạn nên sử dụng một dummy skill để làm "giả" button cho nó.
     
  7. Meepolisk

    Meepolisk Donkey Kong

    Tham gia ngày:
    8/2/08
    Bài viết:
    336
    Dota sử dụng 1 hệ thống giả lập skill impale lại, map mình cũng vậy, cho nên trong dota, khi unit "bay" lên cao, nó k bị invu (war3 original impale thì invu) và thời gian "stun" trong dota, nó tính cả thời gian bay lên (còn war3 original impale, khi đáp đất mới bắt đầu tính stun). Và cái quan trọng nhất là, impale của war3 k thể multi-cast liên tục vào 1 unit (như vấn đề của bạn)
     
  8. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    - Muốn nghe toàn bản đồ => bỏ chọn 3D sound
    - Muốn sound lặp đi lặp lại => chọn Looping
    Cái sound Monsoon đó nghe repeat liên tục cũng không được mượt lắm, cái này là do sound thôi, không thích thì import cái khác vào :-"
     
  9. whisky137

    whisky137 Dragon Quest

    Tham gia ngày:
    7/2/07
    Bài viết:
    1,318
    Nhìn cái đống System Impale thấy ngại quá :(

    Bác nào có cách set damage cho skill kiểu như Shockwave không ?
     
  10. Evil_Hunter

    Evil_Hunter Mario & Luigi

    Tham gia ngày:
    18/9/11
    Bài viết:
    786
    Nơi ở:
    Evil Forest
    ^ Set dmg là như thế nào ?
    F6 - Tìm ability => chỉnh dmg?
     
  11. DylandKyo

    DylandKyo Donkey Kong

    Tham gia ngày:
    28/10/10
    Bài viết:
    358
    Mã:
    library IceArrow initializer init requires xemissile, GroupUtils
    
    globals 
      private constant integer SPELLID = 'A003'
      private constant real RADIUS = 750.
      private constant real OFFSET = 60.
      private constant real SPEED = 550.
      private constant real SCALE = 2.
      private constant real ARC = 0.25
      private constant string MISSILE = "Abilities\\Weapons\\LichMissile\\LichMissile.mdl"
      private player TempPlayer
    endglobals
    
    private function Damage takes unit caster returns real
      return I2R(GetUnitAbilityLevel(caster, SPELLID))/2*I2R(GetHeroInt(caster, true))
    endfunction
    
    struct IceArrow extends xemissile
      private unit u
      private integer level
      static method create takes unit u, integer level, real tx, real ty returns IceArrow
        local real x = GetUnitX(u)
        local real y = GetUnitY(u)
        local real z = GetUnitFlyHeight(u)+OFFSET
        local IceArrow this = IceArrow.allocate(x,y,z,tx,ty,0.0)
        
        set this.u = u
        set this.level = level
        set this.fxpath = MISSILE
        set this.scale = SCALE
        call this.launch(SPEED,ARC)
      return this
      endmethod
      
      static method targetEnum takes nothing returns boolean
        local boolean b=true
        local unit u = GetFilterUnit()
        set b=b and GetWidgetLife(u)>.405
        set b=b and IsUnitType(u,UNIT_TYPE_STRUCTURE)==false
        set b=b and IsUnitEnemy(u,TempPlayer)
        set u = null
        return b
      endmethod
      
      static method Damage takes nothing returns nothing
        local group g = NewGroup()
        local unit u
        set TempPlayer = GetOwningPlayer(.u)
        call GroupEnumUnitsInArea(g,.x,.y,RADIUS, Condition(function thistype.targetEnum))
        loop
          set u = FirstOfGroup(g)
          exitwhen u==null
          call UnitDamageTarget(.u,u,Damage(.u),true,true,ATTACK_TYPE_HERO,DAMAGE_TYPE_MAGIC,WEAPON_TYPE_WHOKNOWS)
          call GroupRemoveUnit(g,u)
          set u=null
        endloop
        call ReleaseGroup(g)
        set TempPlayer = null
        set g = null
        set u = null
      endmethod
    endstruct
    
    private function Check takes nothing returns boolean
      return GetSpellAbilityId()==SPELLID
    endfunction
    
    private function Effect takes nothing returns nothing
      local real tx = GetSpellTargetX()
      local real ty = GetSpellTargetY()
      local unit u = GetTriggerUnit()
      local integer level = GetUnitAbilityLevel(u,SPELLID)
      local IceArrow fb = IceArrow.create(u,level,tx,ty)
      set u = null
    endfunction
    
    private function init takes nothing returns nothing
      local trigger t = CreateTrigger()
      call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
      call TriggerAddCondition(t, Condition(function Check))
      call TriggerAddAction(t, function Effect)
      set t = null
    endfunction
    
    endlibrary
    
    bác nào xem giúp e cái trigger này, lúc save nó báo lỗi:
    Line 5993: Undeclared variable this
    Line 5998: Too many arguments passed to function
    Linh 5998: cannot convert nothing to real
     
  12. findingmagic

    findingmagic Youtube Master Race

    Tham gia ngày:
    15/7/12
    Bài viết:
    42
    làm như thế nào bạn chỉ mình dc ko nếu có map demo hay coretext thì càng tốt, sẵn tiện nếu ai chưa bík thì xem cho bik
     
  13. Evil_Hunter

    Evil_Hunter Mario & Luigi

    Tham gia ngày:
    18/9/11
    Bài viết:
    786
    Nơi ở:
    Evil Forest
    Tức ability đó là của item => cho dù có add đủ kiểu nó cũng ko hiện button okay?
    Giờ phải làm một skill giả, Lấy từ Storm Hammer hay bất cứ skill nào ko có tác dụng, add nó cho hero.Code vd thế này
    Mã:
    Melee Initialization
        Events
            Unit - A unit Learns a skill
        Conditions
            (Learned Hero Skill) Equal to Human Archmage - Blizzard
        Actions
            Unit - Add Item Life Steal to (Triggering unit)
    
    Nhân tiện: ai MUI giúp mình spell này được ko? :)
    http://www.mediafire.com/?kx496mv69tsvcuk

    Quote quote :(
     
  14. heroes1412

    heroes1412 Youtube Master Race

    Tham gia ngày:
    4/8/06
    Bài viết:
    57
    Ai cho mình hỏi cách viết trigger:

    + Đếm được số Hero (Còn Sống) của 1 Player
    hoặc
    + Đếm được số Hero (còn sống) của 1 Group Player????

    Ưu tiên cái thứ 2 hơn mọi ng nhé :). Thanks
     
  15. Drakkar Knight

    Drakkar Knight Mr & Ms Pac-Man Lão Làng GVN

    Tham gia ngày:
    13/11/11
    Bài viết:
    270
    Nơi ở:
    Hà Nội
    - 1 players:

    Mã:
    Trigger 1
        Events
        Conditions
        Actions
            Set HeroGroup = (Units owned by Player 1 (Red) matching ((((Matching unit) is A Hero) Equal to True) and (((Matching unit) is alive) Equal to True)))
            Set Count = (Number of units in HeroGroup)
            Custom script:   call DestroyGroup(udg_HeroGroup)
    - Group Players:

    Mã:
    Trigger 2
        Events
        Conditions
        Actions
            Player Group - Pick every player in (All players) and do (Actions)
                Loop - Actions
                    Set HeroGroup = (Units owned by (Picked player) matching ((((Matching unit) is A Hero) Equal to True) and (((Matching unit) is alive) Equal to True)))
                    Set Count = (Number of units in HeroGroup)
                    Custom script:   call DestroyGroup(udg_HeroGroup)
    Trong đó biến Count là số hero còn sống
     
  16. whisky137

    whisky137 Dragon Quest

    Tham gia ngày:
    7/2/07
    Bài viết:
    1,318
    Ý mình là set damage theo kiểu Agi, Strength cho Shockwave :)
    Chưa biết làm thế nào set group dính damage cho nó cả ?
     
  17. Drakkar Knight

    Drakkar Knight Mr & Ms Pac-Man Lão Làng GVN

    Tham gia ngày:
    13/11/11
    Bài viết:
    270
    Nơi ở:
    Hà Nội
    Cái này bạn chỉ có thể tạo trigger skill Shockwave giả thôi. Làm dummy có model là shockwave rồi gây damage cho bọn xung quanh nó đấy.
     
  18. Evil_Hunter

    Evil_Hunter Mario & Luigi

    Tham gia ngày:
    18/9/11
    Bài viết:
    786
    Nơi ở:
    Evil Forest
    Hive tìm với từ khóa shockwave or custom shockwave
    Advanced Shockwave [Paladon] + Documentation
     
  19. 0978788673

    0978788673 Youtube Master Race

    Tham gia ngày:
    10/1/12
    Bài viết:
    47
    Ai đó tạo dùm mình cái Trigger có nội dung dư này với :D

    Đồng Minh thì k thể phá, giết unit của nhau.
    Tất cả unit thuộc 1 Player thì k dc giết con Ghost. Nhưng con Ghost lại có thể đập dc những unit khác của Player đó
     
  20. Evil_Hunter

    Evil_Hunter Mario & Luigi

    Tham gia ngày:
    18/9/11
    Bài viết:
    786
    Nơi ở:
    Evil Forest
    Mã:
    Melee Initialization
        Events
            Unit - A unit Is attacked
        Conditions
            ((Attacked unit) belongs to an ally of (Owner of (Attacking unit))) Equal to True
        Actions
            Unit - Order (Attacking unit) to Stop
    
    Cho con ghost bất tử (Inlvunerable)?
     

Chia sẻ trang này