Не хочет правильно запоминать переменную local location l = GetSpellTargetLoc() . Вместо правильной позиции запоминает центр карты, пересмотрел почти весь код, вроде все нормально, не пойму в чем проблема.

Принятый ответ

Попробуй заменить,
EVENT_PLAYER_UNIT_SPELL_ENDCAST
на
EVENT_PLAYER_UNIT_SPELL_EFFECT
И да, nvc123 прав на счёт координат.
Зачем использовать наркоманский wait, когда можно всё сделать в таймере?
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
29
8 лет назад
Отредактирован Волчачка
0
nvc123:
Fa1korn, это типо быстрый способ забить оперативку?
если да то создать 10000 юнитов циклом будет быстрее
Скорее он не знает о существовании (пр. ниже), али просто троллит.
GetSpellTargetX()
GetSpellTargetY()
0
5
8 лет назад
Отредактирован Megacomp
0
KingMaximax, Способность сделана на основе канал, с параметром точка . Скинул скриншот моего кода.
Загруженные файлы
0
29
8 лет назад
0
Megacomp:
KingMaximax, Способность сделана на основе канал, с параметром точка . Скинул скриншот моего кода.
В вашем много утечек и лишнего мусора. А ещё хотел бы увидеть что в TrigUltra_Conditions и InitTrig_ultra

// Будьте любезны добавить свой код:
// В блоке переменных
local real x = GetSpellTargetX()
local real y = GetSpellTargetY()

// ниже блока
call BJDebugMsg("SX: " + R2SW(x,8,2) + "SY: " +  R2SW(y,8,2) )
call BJDebugMsg("LX: " + R2SW(GetLocationX(l),8,2) + "LY: " + R2SW(GetLocationY(l),8,2) )
Потом покажите результат, выведенный на экране.
0
9
8 лет назад
0
KingMaximax:
GetSpellTargetX()
GetSpellTargetY()
О.о действительно не знал, в jngp почему-то нет этой функции
0
28
8 лет назад
0
Fa1korn, вообще то есть
0
5
8 лет назад
0
Сделал как и сказал, всё осталось по прежнему. С этой переменной local location l = location( GetLocationX(GetSpellTargetLoc()), GetLocationY(GetSpellTargetLoc()) ) выдаёт ошибку, с обычной l location = GetSpellTargetLoc() идёт без ошибок, но область по прежнему не заноситься в переменную. Прилагаю карту с кодом, если не сложно можете указать на мою ошибку и что я делал не так.
Загруженные файлы
0
28
8 лет назад
0
Megacomp, скинь код триггера в текстовый файл и скинь
Megacomp, и попробуй юзать координаты вместо локейшинов
намного удобнее и память не утекает
0
5
8 лет назад
Отредактирован Megacomp
0
function Fly_Timer takes nothing returns nothing
local timer t = GetExpiredTimer()
local effect e
local unit dumma = LoadUnitHandle(udg_Hesh, GetHandleId(t),0)
  if (  (GetUnitFlyHeight(dumma) > 30) ) then
     call SetUnitFlyHeight( dumma , ( GetUnitFlyHeight(dumma)-10),0)
      else
     call DestroyTimer(t)
   call AddSpecialEffectLocBJ( GetUnitLoc(dumma), "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl" )
   set e = GetLastCreatedEffectBJ()
   call TriggerSleepAction ( 0.5 )
   call DestroyEffect(e)
   endif 
endfunction  
function Trig_ultra_Actions takes nothing returns nothing
local location l = GetSpellTargetLoc()
local real x = GetSpellTargetX()
local real y = GetSpellTargetY()
local integer ablevel = GetUnitAbilityLevelSwapped('A004', GetSpellAbilityUnit())
local integer damag = 10
local integer radius = 200
local timer t = CreateTimer()
local integer str = GetHeroStatBJ(bj_HEROSTAT_STR, GetSpellAbilityUnit(), true)
local effect e
local unit u = GetSpellAbilityUnit()
local unit dumma
call BJDebugMsg("SX: " + R2SW(x,8,2) + "SY: " +  R2SW(y,8,2) )
call BJDebugMsg("LX: " + R2SW(GetLocationX(l),8,2) + "LY: " + R2SW(GetLocationY(l),8,2) )
call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_286" )
     
call CreateFogModifierRadiusLocBJ( true, GetOwningPlayer(u), FOG_OF_WAR_VISIBLE, l, 1000.00 )
    
call CreateNUnitsAtLoc( 1, 'h005', GetOwningPlayer(u), GetUnitLoc(u), GetUnitFacing(u) )
set dumma  = GetLastCreatedUnit()
call IssuePointOrderLocBJ( dumma, "move", l )
loop
    exitwhen( DistanceBetweenPoints( l, GetUnitLoc( dumma )) <= 50.00 )
    call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.10))
endloop
      
    call SaveUnitHandle(udg_Hesh,GetHandleId(t),0,dumma)
    call TimerStart(t,0.05,true,function Fly_Timer)
  
    call UnitDamagePointLoc( dumma, 0.00, ( ablevel * radius ), l, ( str * damag ), ATTACK_TYPE_CHAOS, DAMAGE_TYPE_NORMAL )
      
endfunction
function Trig_ultra_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A004' ) ) then
        return false
    endif
    return true
endfunction
//===========================================================================
function InitTrig_ultra takes nothing returns nothing
    local trigger t = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_ENDCAST )
    call TriggerAddCondition( t, Condition( function Trig_ultra_Conditions ) )
    call TriggerAddAction( t, function Trig_ultra_Actions )
    set t = null
endfunction
1
29
8 лет назад
1
Попробуй заменить,
EVENT_PLAYER_UNIT_SPELL_ENDCAST
на
EVENT_PLAYER_UNIT_SPELL_EFFECT
И да, nvc123 прав на счёт координат.
Зачем использовать наркоманский wait, когда можно всё сделать в таймере?
Принятый ответ
0
5
8 лет назад
0
KingMaximax, только начал изучать Jass, можно сказать как неделю назад начал, многое не знал, так что потихоньку исправляюсь.
Спасибо помогло, изменил EVENT_PLAYER_UNIT_SPELL_EFFECT, и всё работает как надо.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.