Дело в том, что недавно(буквально 3 дня назад), я стал изучать JASS. Естественно, как у новичка сразу начли возникать проблемы. Я составил триггер, подправил на джассе, редактор ошибок не нашел. Но как только я использую способность, для которой предназначен тригер, игра вылетает с ошибкой. Прошу, подскажите, как исправить. Вот текст:
function Trig_Kupol_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A013' ) ) then
return false
endif
return true
endfunction
function PC_action takes unit PC_unit returns nothing
if ( not ( IsUnitAlly(GetEnumUnit(), GetOwningPlayer(PC_unit)) == true ) ) then
call SetUnitLifeBJ( GetEnumUnit(), ( GetUnitStateSwap(UNIT_STATE_LIFE, GetEnumUnit()) + 50.00 ) )
else
call UnitDamageTargetBJ( PC_unit, GetEnumUnit(), 50.00, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FORCE )
endif
endfunction
function Trig_Kupol_Actions takes nothing returns nothing
local unit PC_unit= GetTriggerUnit()
local location PC_point= GetUnitLoc(GetTriggerUnit())
local integer PC_int
set PC_int = 1
loop
exitwhen PC_int > ( 1 + GetUnitAbilityLevelSwapped('A013', PC_unit) )
call CreateNUnitsAtLoc( 1, 'h004', GetOwningPlayer(PC_unit), PC_point, bj_UNIT_FACING )
call SetUnitScalePercent( GetLastCreatedUnit(), 200.00, 100, 100 )
call UnitApplyTimedLifeBJ( 1.00, 'BTLF', GetLastCreatedUnit() )
call ForGroupBJ( GetUnitsInRangeOfLocAll(300.00, PC_point), function PC_action )
call TriggerSleepAction( 1.00 )
set PC_int = PC_int + 1
endloop
endfunction
===========================================================================
function InitTrig_Kupol takes nothing returns nothing
set gg_trg_Kupol = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Kupol, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_Kupol, Condition( function Trig_Kupol_Conditions ) )
call TriggerAddAction( gg_trg_Kupol, function Trig_Kupol_Actions )
endfunction
Вот скрин ошибки(не, ну мало ли):

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

так как я неспособен понять такую гору ненужных строк советую раскрыть бж и хотя бы немного уменьшить количество кода,например:
function Trig_Kupol_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A013' ) ) then
return false
endif
return true
endfunction
заменить на
function Trig_Kupol_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A013' 
endfunction
судя по всему фатал вызывает то что функция function PC_action берёт юнита хотя должна быть
function PC_action takes nothing returns nothing
странно что редактор ошибку не выдал
джнгп используешь?
и запомни функции которые вызываются :
TriggerAddAction
ForGroup
и прочими должны быть takes nothing returns nothing
исключение: функции вызываемые из Condition которые должны takes nothing returns boolean
плохо читал статьи
или не все прочитал а только базовый курс 2005 года
2
28
11 лет назад
2
так как я неспособен понять такую гору ненужных строк советую раскрыть бж и хотя бы немного уменьшить количество кода,например:
function Trig_Kupol_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A013' ) ) then
return false
endif
return true
endfunction
заменить на
function Trig_Kupol_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A013' 
endfunction
судя по всему фатал вызывает то что функция function PC_action берёт юнита хотя должна быть
function PC_action takes nothing returns nothing
странно что редактор ошибку не выдал
джнгп используешь?
и запомни функции которые вызываются :
TriggerAddAction
ForGroup
и прочими должны быть takes nothing returns nothing
исключение: функции вызываемые из Condition которые должны takes nothing returns boolean
плохо читал статьи
или не все прочитал а только базовый курс 2005 года
Принятый ответ
0
9
11 лет назад
0
nvc123:
function Trig_Kupol_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A013'
endfunction
Все, оптимизировал
""
судя по всему фатал вызывает то что функция function PC_action берёт юнита хотя должна быть
function PC_action takes nothing returns nothing
Помогло :) Сделал именно так, и кое-что добавил.
""
Большое спасибо, твой ответ мне очень помог :)
плохо читал статьи
или не все прочитал а только базовый курс 2005 года
Похоже именно так :( Пойду читать-перечитывать. Еще раз спасибо.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.