Добавлен
call IssueImmediateOrder( GetLastCreatedUnit(), "stomp" ) вот эта команда меняет значение в нутри глобалиной переменой как это возможно и почему Тип Unit

мне это не нужно я и сам могу это написать всё мне нужен был ответ на мой вопрос
проблема была решена но я не понимаю почему она смогла лешыца тригер который не как не взаимодействуеть с другим тригерам поменял в нём кое что то что не взаимодействуеть и всё стало норм
`
ОЖИДАНИЕ РЕКЛАМЫ...
18
Внутри какой переменной?
Весь код в студию
14
function Trig_Kenpatshi_Rivok_Actions takes nothing returns nothing
set udg_Move = GetUnitLoc(GetTriggerUnit())
set udg_Target0[udg_Index] = GetSpellTargetUnit()
call CreateNUnitsAtLoc( 1, 'h010', GetOwningPlayer(udg_TrigerUnit), udg_Move, 0.00 )
call GroupAddUnitSimple( GetLastCreatedUnit(), udg_OtratALL[11] )
call SetUnitLifeBJ( GetLastCreatedUnit(), 3000.00 )
call SetUnitManaBJ( GetLastCreatedUnit(), 3000.00 )
call SetUnitUserData(GetLastCreatedUnit(),udg_Index)
call PlaySoundBJ( gg_snd_KenpatchiRivok )
call AddSpecialEffectLocBJ( udg_Move, "Abilities\\Spells\\NightElf\\Taunt\\TauntCaster.mdl" )
call DestroyEffect( GetLastCreatedEffectBJ() )
call AddSpecialEffectTargetUnitBJ( "origin", GetTriggerUnit(), "Abilities\\Spells\\Human\\ManaFlare\\ManaFlareBoltImpact.mdl" )
call DestroyEffect( GetLastCreatedEffectBJ() )
call AddSpecialEffectLocBJ( udg_Move, "Abilities\\Spells\\Orc\\TrollBerserk\\HeadhunterWEAPONSLeft.mdl" )
call DestroyEffect( GetLastCreatedEffectBJ() )
call RemoveLocation(udg_Move)
endfunction
===========================================================================
function InitTrig_Kenpatshi_Rivok takes nothing returns nothing
set gg_trg_Kenpatshi_Rivok = CreateTrigger( )
call TriggerAddAction( gg_trg_Kenpatshi_Rivok, function Trig_Kenpatshi_Rivok_Actions )
endfunction
function Trig_Kenpatchi_Rivok_1_Func001Func005C takes nothing returns boolean
if ( not ( IsUnitInGroup(udg_TrigerUnitMass[udg_Index], udg_Otrat) == true ) ) then
return false
endif
return true
endfunction
function Trig_Kenpatchi_Rivok_1_Func001A takes nothing returns nothing
set udg_TrigerUnit = GetEnumUnit()
set udg_Index = (GetUnitUserData(udg_TrigerUnit))
set udg_Move1 = GetUnitLoc(udg_Target0[udg_Index])
set udg_Otrat = GetUnitsInRangeOfLocAll(55.00, udg_Move1)
if ( Trig_Kenpatchi_Rivok_1_Func001Func005C() ) then
call TriggerExecute( gg_trg_Stan2 )
call DisplayTextToForce( GetPlayersAll(), GetUnitName(udg_TrigerUnit) )
call UnitDamageTargetBJ( udg_TrigerUnitMass[udg_Index], udg_Target0[udg_Index], ( I2R(GetHeroStatBJ(bj_HEROSTAT_STR, udg_TrigerUnitMass[udg_Index], true)) * 30.00 ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC )
call RemoveUnit( udg_TrigerUnit )
else
set udg_Move2 = GetUnitLoc(udg_TrigerUnitMass[udg_Index])
set udg_Move = PolarProjectionBJ(udg_Move2, 55.00, AngleBetweenPoints(udg_Move2, udg_Move1))
call SetUnitPositionLoc( udg_TrigerUnitMass[udg_Index], udg_Move )
call RemoveLocation(udg_Move)
call RemoveLocation(udg_Move2)
call RemoveLocation(udg_Move1)
endif
call DestroyGroup(udg_Otrat)
endfunction
function Trig_Kenpatchi_Rivok_1_Actions takes nothing returns nothing
call ForGroupBJ( udg_OtratALL[11], function Trig_Kenpatchi_Rivok_1_Func001A )
endfunction
===========================================================================
function InitTrig_Kenpatchi_Rivok_1 takes nothing returns nothing
set gg_trg_Kenpatchi_Rivok_1 = CreateTrigger( )
call TriggerAddAction( gg_trg_Kenpatchi_Rivok_1, function Trig_Kenpatchi_Rivok_1_Actions )
endfunction
function Trig_Stan2_Actions takes nothing returns nothing
call CreateNUnitsAtLoc( 1, 'h019', GetOwningPlayer(udg_TrigerUnit), udg_Move1, 0.00 )
call UnitAddAbilityBJ( '0022', GetLastCreatedUnit() )
call IssueImmediateOrder( GetLastCreatedUnit(), "stomp" )
call UnitApplyTimedLifeBJ( 0.01, 'BTLF', GetLastCreatedUnit() )
call RemoveLocation(udg_Move1)
endfunction
===========================================================================
function InitTrig_Stan2 takes nothing returns nothing
set gg_trg_Stan2 = CreateTrigger( )
call TriggerAddAction( gg_trg_Stan2, function Trig_Stan2_Actions )
endfunction
18
у меня ща глаза сломаются, кинь код нормально, т.е пишешь сначала "((код" далее переходишь на новую строку, вставляешь свой код, а в конце переходишь на новую строку и пишешь "))"
14
все работает нормалино если вот эту команду удалить
call IssueImmediateOrder( GetLastCreatedUnit(), "stomp" )
я это на тригерах делал
18
MATRITSA:
все работает нормалино если вот эту команду удалить
call IssueImmediateOrder( GetLastCreatedUnit(), "stomp" )
кинь код в нормальном виде позырю на твой баг
14
происходить следушия
if ( Trig_Kenpatchi_Rivok_1_Func001Func005C() ) then
call TriggerExecute( gg_trg_Stan2 )
call DisplayTextToForce( GetPlayersAll(), GetUnitName(udg_TrigerUnit) )
call UnitDamageTargetBJ( udg_TrigerUnitMass[udg_Index], udg_Target0[udg_Index], ( I2R(GetHeroStatBJ(bj_HEROSTAT_STR, udg_TrigerUnitMass[udg_Index], true)) * 30.00 ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC )
call RemoveUnit( udg_TrigerUnit )
Вот на этом куске кода udg_Target0[Index] становица перезаписоваеца в udg_TrigerUnit
А как это в нормалином виде что тут не так
18
MATRITSA:
происходить следушия
if ( Trig_Kenpatchi_Rivok_1_Func001Func005C() ) then
call TriggerExecute( gg_trg_Stan2 )
call DisplayTextToForce( GetPlayersAll(), GetUnitName(udg_TrigerUnit) )
call UnitDamageTargetBJ( udg_TrigerUnitMass[udg_Index], udg_Target0[udg_Index], ( I2R(GetHeroStatBJ(bj_HEROSTAT_STR, udg_TrigerUnitMass[udg_Index], true)) * 30.00 ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC )
call RemoveUnit( udg_TrigerUnit )
Вот на этом куске кода udg_Target0[Index] становица перезаписоваеца в udg_TrigerUnit
не совсем понял что делает этот триггер (код нечитабелен), но одно я нашёл. Ты убиваешь юнита сразу как даешь приказ кастовать стомп.
Увеличь в UnitApplyTimedLifeBJ с 0.01 хотябы до 3.00
14
в этот куске кода как тока выполнелоси вот это условие
if ( Trig_Kenpatchi_Rivok_1_Func001Func005C() ) then
стартует стан наносица дамаг и удаляеца Пустышка Исполизуещися как Двигатели для ЮНита в переменой TrigerUnitMass
18
MATRITSA:
в этот куске кода как тока выполнелоси вот это условие
if ( Trig_Kenpatchi_Rivok_1_Func001Func005C() ) then
стартует стан наносица дамаг и удаляеца Пустышка Исполизуещися как Двигатели для ЮНита в переменой TrigerUnitMass
ох... Кинь скрины триггеров в GUI, не надо переводить триггеры в JASS
18
MATRITSA:
я так и не понял что именно не работает? Сижу смотрю и не могу разобраться в этой путанице
MATRITSA:
короче, скажи что должны делать все эти триггеры. Я напишу одну функцию
14
мне нужно что юнит не удалялся в переменой udg_Targer 0
Я выше написал магия ве какимто раком юнит из Target 0 в TrigerUnit перекачевряжылся
я могу лешыть проблему добавлением еше одного отряда но я хочю в проблеме разабраца
кастыли могут и помочи отсрочить неизбежное которое потом тока усилица
18
MATRITSA:
мне нужно что юнит не удалялся в переменой udg_Targer 0
Я выше написал магия ве какимто раком юнит из Target 0 в TrigerUnit перекачевряжылся
я могу лешыть проблему добавлением еше одного отряда но я хочю в проблеме разабраца
кастыли могут и помочи отсрочить неизбежное которое потом тока усилица
здесь всё очень запутанно, лучше такие вещи писать на jass
14
Окей если для тебя кажеца удобние пишы я лично Испытовую болишы трудности в запоминание написание команд
18
MATRITSA:
что вообще должна делать эта способность триггерная? Чтобы я знал что делать
14
Двигает TriggerUnitMass к целе и как тока до цели докаснуласи даёца стан и наносица урон
18
MATRITSA:
чтобы вызвать прыжок нужно написать "call jump (прыгающий юнит, юнит-цель)"
Не забудь поставить равкод твоего дамми юнита для стомпа (я там комментарий оставил)
Для сохранения нужен JNGP
Саму наработку кидай в кастом код карты
globals
    hashtable hash = InitHashtable()
    real jumpSpeed = 400 //Здесь можно задавать скорость прыжка
    real jumpDamage = 100 //Наносимый урон
endglobals

function RemoveStomp takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local unit u = LoadUnitHandle(hash, GetHandleId(t), StringHash("stomp"))
    call RemoveUnit(u)
    call FlushChildHashtable(hash, GetHandleId(t))
    call DestroyTimer(t)
    set t = null
    set u = null
endfunction

function jumpMove takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local unit u = LoadUnitHandle(hash, GetHandleId(t), StringHash("u"))
    local unit target = LoadUnitHandle(hash, GetHandleId(t), StringHash("target"))
    local unit stomp
    local location pU = GetUnitLoc(u)
    local location pTarget = GetUnitLoc(target)
    local real x = GetLocationX(pU) + jumpSpeed*0.02 * Cos(AngleBetweenPoints(pU, pTarget) * bj_DEGTORAD)
    local real y = GetLocationY(pU) + jumpSpeed*0.02 * Sin(AngleBetweenPoints(pU, pTarget) * bj_DEGTORAD)
    call SetUnitFacing(u, AngleBetweenPoints(pU, pTarget))
    if ((IsUnitInRange(u, target, 72) == true) or (GetUnitState(u, UNIT_STATE_LIFE) <= 0)) then
        //Там где 'hfoo' это равкод твоего дамми юнита который будет стомп юзать
        set stomp = CreateUnitAtLoc(GetOwningPlayer(u), 'hfoo', pU, 0)
        call IssueImmediateOrder(stomp, "stomp")
        call UnitDamageTargetBJ( u, target, jumpDamage, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL )
        call SetUnitTimeScale(u, 1)
        call SaveUnitHandle(hash, GetHandleId(t), StringHash("stomp"), stomp)
        call DestroyEffect(LoadEffectHandle(hash, GetHandleId(t), StringHash("effect")))
        call TimerStart(t, 5.00, false, function RemoveStomp)
    else
        call SetUnitPosition(u, x, y)
    endif
    call RemoveLocation(pU)
    call RemoveLocation(pTarget)
    set t = null
    set u = null
    set stomp = null
    set target = null
    set pU = null
    set pTarget = null
    set x = 0
    set y = 0
endfunction

function jump takes unit u, unit target returns nothing
    local timer t = CreateTimer()
    local effect e
    //Это спеэффект который прикрепится к твоему юниту
    set e = AddSpecialEffectTarget("Abilities\\Spells\\Undead\\Darksummoning\\DarkSummonTarget.mdl", u, "origin")
    //================================================
    call SaveEffectHandle(hash, GetHandleId(t), StringHash("effect"), e)
    call SetUnitTimeScale(u, 0)
    call SaveUnitHandle(hash, GetHandleId(t), StringHash("u"), u)
    call SaveUnitHandle(hash, GetHandleId(t), StringHash("target"), target)
    call TimerStart(t, 0.02, true, function jumpMove)
    set t = null
    set e = null
endfunction
14
мне это не нужно я и сам могу это написать всё мне нужен был ответ на мой вопрос
проблема была решена но я не понимаю почему она смогла лешыца тригер который не как не взаимодействуеть с другим тригерам поменял в нём кое что то что не взаимодействуеть и всё стало норм
Принятый ответ
Этот комментарий удален
Чтобы оставить комментарий, пожалуйста, войдите на сайт.