Здрасьте =) Есть ли ошибка в данном коде в сетевой игре?
function Natsu_Kulak_B takes nothing returns nothing
  local timer t = GetExpiredTimer()
  local integer h = GetHandleId(t)
  local unit u = LoadUnitHandle(H,h,0)
  local real time = LoadReal(H,h,1)
  local unit c = LoadUnitHandle(H,h,2)
  local real r = LoadReal(H,h,3)
  local real x = GetWidgetX(c) + 100*Cos(GetUnitFacing(u) * 0.0174)
  local real y = GetWidgetY(c) + 100*Sin(GetUnitFacing(u) * 0.0174)
  if r < 0 then
  call SetUnitAnimation(u,"Stand")
  if IsTerrainPathable(GetUnitX(c),GetUnitY(c), PATHING_TYPE_WALKABILITY) == true then
  else
  call SetUnitPosition(c,x,y)
  endif
  else 
  call SetUnitAnimation(u,"Spell Channel")
  call UnitDamageTarget(u,c,5,true,true,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_FIRE,WEAPON_TYPE_WHOKNOWS)
  call SaveReal(H,h,3,r - 0.1)
  endif
  if time < 0 or GetWidgetLife(u)<40 or GetWidgetLife(c)<40 then
    call PauseUnit(c,false)
    call PauseUnit(u,false)
    call SetUnitAnimation(u,"Stand")
    if GetWidgetLife(c)<40 then 
    call KillUnit(c)
    endif
    call PauseTimer(t)
    call FlushChildHashtable(H,(h))
    call DestroyTimer(t)
  else
  call SaveReal(H,h,1,time - 0.1)
  endif
  set u = null
  set c = null
  set t = null
endfunction

function Natsu_Kulak_A takes nothing returns nothing
  local timer t = CreateTimer()
  local integer h = GetHandleId(t)
  local unit u = GetTriggerUnit()
  local unit c = GetSpellTargetUnit()
  call PauseUnit(c,true)
  call PauseUnit(u,true)
  call SaveUnitHandle(H,h,0,u)
  call SaveReal(H,h,1,6)
  call SaveUnitHandle(H,h,2,c)
  call SaveReal(H,h,3,5)
  call TimerStart(t,0.1,true, function Natsu_Kulak_B)
  set u = null
  set c = null
  set t = null
endfunction

function Natsu_Kulak_if takes nothing returns boolean 
     return GetSpellAbilityId() == 'A019'
endfunction


function Natsu_Kulak takes nothing returns nothing
     local trigger t = CreateTrigger()
     call TriggerRegisterAnyUnitEventBJ( t , EVENT_PLAYER_UNIT_SPELL_EFFECT )
     call TriggerAddCondition( t , Condition(function Natsu_Kulak_if) )
     call TriggerAddAction(t, function Natsu_Kulak_A)
     set t = null
endfunction

Nikolay36, сделай нормальный период, глазам же больно. И вообще для наземных юнитов лучше использовать проверку проходимости через предмет

А если не пытаться улучшать код, то проблем с сетью не должно быть
`
ОЖИДАНИЕ РЕКЛАМЫ...
32
Во первых стоило бы нормально офрмить код, + добавить кат. Во вторых - пауза по событию каста, приводит к багу - о чем я уже писал не раз, если вам нужно стопнуть юнита, сперва таймер на 0.00 сек, потом уже пауза. Так чето несовсем понятно что этот код делает? Это я так понял таргет спелл с перемещением, но период сильно большой, 0.1 сек, 10 раз в секунду + SetUnitPosotion всеравно будет сбивать все приказы, можно и без паузы было.
7
Nikolay36:
Пауза значит создает баг?
Вопрос не по теме, скажи пожалуйста, что за озвучка у тебя у героя? Можешь прикрепить карту, или сказать где ты ее взял?
2
mistwood, это русская озвучка официального варкрафт 3 Reforged
28
Nikolay36, сделай нормальный период, глазам же больно. И вообще для наземных юнитов лучше использовать проверку проходимости через предмет

А если не пытаться улучшать код, то проблем с сетью не должно быть
Принятый ответ
2
rsfghd, нормальный период от 0.02. Понял я уже сделал быстрее так намного реалистичнее. Да вместо паузы сделал для кастера обычный приказ "атаковать", а для цели обычный приказ "стоп". Проходимости предмет это? Понятно код работает в сети, благодарю за ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.