Добавлен Naadir
GUI один раз - GUI навсегда, но для удобства переведу в код.
По причине своей некомпетентности в вопросах фатала не могу разобраться сам, почему и прошу помощи. Где-то в этом коде вызывается фатал. Про блок я уверен абсолютно, так как это способности, принадлежащие одному герою. Без него карта не фаталит, с ним - через некоторое время после начала игры. Закономерный вопрос: что же не так?
Код:
Код:
function Trig_ElementsHammer1_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A02C' ) ) then
return false
endif
return true
endfunction
function Trig_ElementsHammer1_Func005Func002Func002C takes nothing returns boolean
if ( not ( GetRandomInt(1, 2) == 1 ) ) then
return false
endif
return true
endfunction
function Trig_ElementsHammer1_Func005Func002C takes nothing returns boolean
if ( not ( GetRandomInt(1, 3) == 1 ) ) then
return false
endif
return true
endfunction
function Trig_ElementsHammer1_Func005C takes nothing returns boolean
if ( not ( GetRandomInt(1, 4) == 1 ) ) then
return false
endif
return true
endfunction
function Trig_ElementsHammer1_Actions takes nothing returns nothing
call TriggerSleepAction( ( ( DistanceBetweenPoints(GetUnitLoc(GetSpellAbilityUnit()), GetUnitLoc(GetSpellTargetUnit())) / 1350.00 ) + 0.50 ) )
call CreateNUnitsAtLoc( 1, 'e009', GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(GetSpellAbilityUnit()), bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 3.00, 'BTLF', GetLastCreatedUnit() )
if ( Trig_ElementsHammer1_Func005C() ) then
call IssueTargetOrderBJ( GetLastCreatedUnit(), "cyclone", GetSpellTargetUnit() )
else
if ( Trig_ElementsHammer1_Func005Func002C() ) then
call IssueTargetOrderBJ( GetLastCreatedUnit(), "chainlightning", GetSpellTargetUnit() )
else
if ( Trig_ElementsHammer1_Func005Func002Func002C() ) then
call IssuePointOrderLocBJ( GetLastCreatedUnit(), "breathoffire", GetUnitLoc(GetSpellTargetUnit()) )
else
call IssuePointOrderLocBJ( GetLastCreatedUnit(), "carrionswarm", GetUnitLoc(GetSpellTargetUnit()) )
endif
endif
endif
endfunction
//===========================================================================
function InitTrig_ElementsHammer1 takes nothing returns nothing
set gg_trg_ElementsHammer1 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_ElementsHammer1, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_ElementsHammer1, Condition( function Trig_ElementsHammer1_Conditions ) )
call TriggerAddAction( gg_trg_ElementsHammer1, function Trig_ElementsHammer1_Actions )
endfunction
function Trig_ThunderStrike1_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A02H' ) ) then
return false
endif
return true
endfunction
function Trig_ThunderStrike1_Func004Func001Func001C takes nothing returns boolean
if ( not ( IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(udg_ThinderStrikeCaster)) == true ) ) then
return false
endif
if ( not ( IsUnitAliveBJ(GetEnumUnit()) == true ) ) then
return false
endif
return true
endfunction
function Trig_ThunderStrike1_Func004Func001C takes nothing returns boolean
if ( not Trig_ThunderStrike1_Func004Func001Func001C() ) then
return false
endif
return true
endfunction
function Trig_ThunderStrike1_Func004A takes nothing returns nothing
if ( Trig_ThunderStrike1_Func004Func001C() ) then
set udg_ThunderStrikeInt = ( udg_ThunderStrikeInt + 1 )
else
call DoNothing( )
endif
endfunction
function Trig_ThunderStrike1_Actions takes nothing returns nothing
set udg_ThunderStrikeInt = 0
set udg_ThinderStrikeCaster = GetSpellAbilityUnit()
call ForGroupBJ( GetUnitsInRangeOfLocAll(300.00, GetUnitLoc(udg_ThinderStrikeCaster)), function Trig_ThunderStrike1_Func004A )
call StartTimerBJ( udg_ThunderStrikeTimer, false, 2.50 )
endfunction
//===========================================================================
function InitTrig_ThunderStrike1 takes nothing returns nothing
set gg_trg_ThunderStrike1 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_ThunderStrike1, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_ThunderStrike1, Condition( function Trig_ThunderStrike1_Conditions ) )
call TriggerAddAction( gg_trg_ThunderStrike1, function Trig_ThunderStrike1_Actions )
endfunction
function Trig_ThunderStrikeTimer1_Actions takes nothing returns nothing
call AddSpecialEffectTargetUnitBJ( "chest", udg_ThinderStrikeCaster, "Abilities\\Spells\\Human\\Heal\\HealTarget.mdl" )
call SetUnitLifePercentBJ( udg_ThinderStrikeCaster, ( GetUnitLifePercent(udg_ThinderStrikeCaster) + I2R(udg_ThunderStrikeInt) ) )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
endfunction
//===========================================================================
function InitTrig_ThunderStrikeTimer1 takes nothing returns nothing
set gg_trg_ThunderStrikeTimer1 = CreateTrigger( )
call TriggerRegisterTimerExpireEventBJ( gg_trg_ThunderStrikeTimer1, udg_ThunderStrikeTimer )
call TriggerAddAction( gg_trg_ThunderStrikeTimer1, function Trig_ThunderStrikeTimer1_Actions )
endfunction
function Trig_ElementsAura1_Func001C takes nothing returns boolean
if ( not ( GetUnitAbilityLevelSwapped('A02I', GetAttackedUnitBJ()) >= 1 ) ) then
return false
endif
if ( not ( GetRandomInt(1, 100) <= ( 5 * GetUnitAbilityLevelSwapped('A02I', GetAttackedUnitBJ()) ) ) ) then
return false
endif
return true
endfunction
function Trig_ElementsAura1_Conditions takes nothing returns boolean
if ( not Trig_ElementsAura1_Func001C() ) then
return false
endif
return true
endfunction
function Trig_ElementsAura1_Func004Func002Func002C takes nothing returns boolean
if ( not ( GetRandomInt(1, 2) == 1 ) ) then
return false
endif
return true
endfunction
function Trig_ElementsAura1_Func004Func002C takes nothing returns boolean
if ( not ( GetRandomInt(1, 3) == 1 ) ) then
return false
endif
return true
endfunction
function Trig_ElementsAura1_Func004C takes nothing returns boolean
if ( not ( GetRandomInt(1, 4) == 1 ) ) then
return false
endif
return true
endfunction
function Trig_ElementsAura1_Actions takes nothing returns nothing
call CreateNUnitsAtLoc( 1, 'e009', GetOwningPlayer(GetAttackedUnitBJ()), GetUnitLoc(GetAttackedUnitBJ()), bj_UNIT_FACING )
call UnitApplyTimedLifeBJ( 3.00, 'BTLF', GetLastCreatedUnit() )
if ( Trig_ElementsAura1_Func004C() ) then
call IssueTargetOrderBJ( GetLastCreatedUnit(), "cyclone", GetAttacker() )
else
if ( Trig_ElementsAura1_Func004Func002C() ) then
call IssueTargetOrderBJ( GetLastCreatedUnit(), "chainlightning", GetAttacker() )
else
if ( Trig_ElementsAura1_Func004Func002Func002C() ) then
call IssuePointOrderLocBJ( GetLastCreatedUnit(), "breathoffire", GetUnitLoc(GetAttacker()) )
else
call IssuePointOrderLocBJ( GetLastCreatedUnit(), "carrionswarm", GetUnitLoc(GetAttacker()) )
endif
endif
endif
endfunction
//===========================================================================
function InitTrig_ElementsAura1 takes nothing returns nothing
set gg_trg_ElementsAura1 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_ElementsAura1, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_ElementsAura1, Condition( function Trig_ElementsAura1_Conditions ) )
call TriggerAddAction( gg_trg_ElementsAura1, function Trig_ElementsAura1_Actions )
endfunction
function Trig_RandomTotem1_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A02K' ) ) then
return false
endif
return true
endfunction
function Trig_RandomTotem1_Func002Func001Func001Func001C takes nothing returns boolean
if ( not ( GetRandomInt(1, 2) == 1 ) ) then
return false
endif
return true
endfunction
function Trig_RandomTotem1_Func002Func001Func001C takes nothing returns boolean
if ( not ( GetRandomInt(1, 3) == 1 ) ) then
return false
endif
return true
endfunction
function Trig_RandomTotem1_Func002Func001C takes nothing returns boolean
if ( not ( GetRandomInt(1, 4) == 1 ) ) then
return false
endif
return true
endfunction
function Trig_RandomTotem1_Func002C takes nothing returns boolean
if ( not ( GetRandomInt(1, 5) == 1 ) ) then
return false
endif
return true
endfunction
function Trig_RandomTotem1_Actions takes nothing returns nothing
if ( Trig_RandomTotem1_Func002C() ) then
call CreateNUnitsAtLoc( 1, 'n00L', GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(GetSpellAbilityUnit()), bj_UNIT_FACING )
else
if ( Trig_RandomTotem1_Func002Func001C() ) then
call CreateNUnitsAtLoc( 1, 'n00M', GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(GetSpellAbilityUnit()), bj_UNIT_FACING )
else
if ( Trig_RandomTotem1_Func002Func001Func001C() ) then
call CreateNUnitsAtLoc( 1, 'n00N', GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(GetSpellAbilityUnit()), bj_UNIT_FACING )
else
if ( Trig_RandomTotem1_Func002Func001Func001Func001C() ) then
call CreateNUnitsAtLoc( 1, 'n00O', GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(GetSpellAbilityUnit()), bj_UNIT_FACING )
else
call CreateNUnitsAtLoc( 1, 'n00P', GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(GetSpellAbilityUnit()), bj_UNIT_FACING )
endif
endif
endif
endif
call UnitApplyTimedLifeBJ( 40.00, 'BFig', GetLastCreatedUnit() )
endfunction
//===========================================================================
function InitTrig_RandomTotem1 takes nothing returns nothing
set gg_trg_RandomTotem1 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_RandomTotem1, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_RandomTotem1, Condition( function Trig_RandomTotem1_Conditions ) )
call TriggerAddAction( gg_trg_RandomTotem1, function Trig_RandomTotem1_Actions )
endfunction
Принятый ответ
проверь настройки A01P, возможно, там кривые данные выше 3-го уровня
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Raised
Отредактирован Hate
Нашёл .bin файл, возможно, он поможет? И дамп+txt файлы от последнего фатала.
Отредактирован Naadir
Поля я проверил, всё чин-чином: отсутствует суффикс редактора и классификация (не герой, не предмет), переделано название. Остальные поля - без изменений.
ну либо движок решил пустить меня по ложному следу, как опытный маньяк
Отредактирован Naadir
Отредактирован Naadir