Сейчас 18:32:00 Четверг, 28 марта, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » Не работает способность
Не работает способность
Kr0nusДата: Вторник, 09 Августа 2011, 12:35:17 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
Пытался сделать способность на jass'e : Герой бросает сеть в указанную область,сеть летит,если по пути встречает цель,на него кастуется сеть,а дамми-сеть(который летит) удаляется.Проблема в том,что при использовании у меня вылетает фатал.Прошу,помогите исправить способность,чтобы работала корректно,ну или покажите как надо делать.
Code
function Trig_CeTb_Conditions takes nothing returns boolean
      return GetSpellAbilityId() == 'A000'
endfunction

function CeTbCast takes nothing returns nothing
      local unit cast
      if  ( IsUnitType(GetEnumUnit(), UNIT_TYPE_GROUND) == true ) then   
      set udg_CeTb_bool = true
      set cast = CreateUnit( Player(16), 'h001' , GetUnitX(GetEnumUnit()), GetUnitY(GetEnumUnit()), GetUnitFacing(GetEnumUnit()) )
      call UnitAddAbility( cast, 'A001' )
      call IssueTargetOrder( cast, "ensnare", GetEnumUnit() )
      endif
      set cast = null
endfunction

function Move takes nothing returns nothing
      local timer t = GetExpiredTimer()
      local real X
      local real Y
      local unit dammy = udg_CeTb_dammy
      local location point = udg_CeTb_point
      if udg_CeTb_bool == false then
      if DistanceBetweenPoints( GetUnitLoc(dammy), point ) <= 50 then
      call RemoveUnit(dammy)
      set dammy = null
      set t = null
      call DestroyTimer(t)
      endif
      set X = ( GetUnitX(dammy) + ( 50 *  Cos( GetUnitFacing(dammy) * 0.0174 ) ) )
      set Y = ( GetUnitY(dammy) + ( 50 *  Sin( GetUnitFacing(dammy) * 0.0174 ) ) )
      call SetUnitPosition( dammy, X, Y )
      call ForGroup( GetUnitsInRangeOfLocAll( 100, Location( X, Y ) ) , function CeTbCast )
      set dammy = null
      set t = null
      endif
endfunction

function Trig_CeTb_Actions takes nothing returns nothing
      local unit caster = GetSpellAbilityUnit()
      local unit dammy = CreateUnit( GetOwningPlayer(caster), 'h000', GetUnitX(caster), GetUnitY(caster), GetUnitFacing(caster) )
      local location point = GetSpellTargetLoc()
      local timer t = CreateTimer()
      set udg_CeTb_dammy = dammy
      set udg_CeTb_point = point
      call TimerStart( t, 0.05, true, function Move )
      set caster = null
      set dammy = null
      set t = null
endfunction

//===========================================================================
function InitTrig_CeTb takes nothing returns nothing
      local trigger CeTb = CreateTrigger(  )
      local integer index = 0
      loop
      exitwhen index > 16
      call TriggerRegisterPlayerUnitEvent( CeTb, Player(index), EVENT_PLAYER_UNIT_SPELL_CAST, null )
      set index = index + 1
      endloop
      call TriggerAddCondition( CeTb, Condition( function Trig_CeTb_Conditions ) )
      call TriggerAddAction( CeTb, function Trig_CeTb_Actions )
endfunction




Сообщение отредактировал Kr0nus - Вторник, 09 Августа 2011, 12:35:45
 

HexingДата: Вторник, 09 Августа 2011, 13:50:09 | Сообщение # 2
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Code
set t = null
       call DestroyTimer(t)
наоборот :/
Code
set cast = CreateUnit( Player(16), 'h001' , GetUnitX(GetEnumUnit()), GetUnitY(GetEnumUnit()), GetUnitFacing(GetEnumUnit()) )
       call UnitAddAbility( cast, 'A001' )
       call IssueTargetOrder( cast, "ensnare", GetEnumUnit() )
проверь чтобы 'A001' была заимствована от способности esnare
а серьезного ничего не нашел... Кинь исходник мб.
p.s. код сделан мега криво и если 2-ое кастанут это однавременно, будет огромная каша неразгребаемая(я уж не говорю о ссылочных локалках на глобалки)


 

[DS]Дата: Вторник, 09 Августа 2011, 14:27:07 | Сообщение # 3
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
Я же говорил паузит, дестройть и нуллить таймер.
Походу из-за этого и фаталить.
И да
"код сделан мега криво и если 2- ое кастанут это однавременно, будет огромная каша неразгребаемая(я уж не говорю о ссылочных локалках на глобалки)"
что сказали выше.


 

lawsonДата: Вторник, 09 Августа 2011, 15:03:29 | Сообщение # 4
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Kr0nus,
Какойто бредовый триг у тебя.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » Не работает способность
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz