Добавлен Leys
При использовании loop перестает работать функция, без loop все работает отлично
В чем может быть проблема?
Код:
scope Spell3 initializer Spell3Init {
bool Spell3Cond() {
return GetSpellAbilityId() == 'A002'
}
void Spell3Act2() {
timer t = GetExpiredTimer()
int id = GetHandleId(t)
unit c = LoadUnitHandle( h, id, 1 )
float x = LoadReal( h, id, 2 )
float y = LoadReal( h, id, 3 )
unit d = LoadUnitHandle( h, id, 4 )
float x1 = GetUnitX(d)
float y1 = GetUnitY(d)
player p = GetOwningPlayer(c)
GroupEnumUnitsInRange( G, x1, y1, 500, null )
loop
E = FirstOfGroup(G)
exitwhen E == null
if IsUnitEnemy(E,p) and IsUnitType(E,UNIT_TYPE_DEAD) == false and IsUnitType(E,UNIT_TYPE_STRUCTURE) == false
UnitDamageTarget( c, E, 500, false, false, null, null, null )
endif
GroupRemoveUnit( G, E )
endloop
KillUnit( d )
FlushChildHashtable( h, id )
c = null
d = null
t = null
p = null
}
void Spell3Act() {
unit c = GetSpellAbilityUnit()
timer t = CreateTimer()
int id = GetHandleId(t)
float x = GetUnitX(c)
float y = GetUnitY(c)
float f = GetUnitFacing(c)
player p = GetOwningPlayer(c)
unit d = CreateUnit( p, 'hfoo', x, y, f )
UnitAddAbility(d, 'A001' )
SaveUnitHandle( h, id, 1, c )
SaveReal( h, id, 2, x )
SaveReal( h, id, 3, y )
SaveUnitHandle( h, id, 4, d )
TimerStart( t, 10.00, false, function Spell3Act2 )
c = null
t = null
p = null
}
void Spell3Init() {
trigger t = CreateTrigger( )
int i
i = 0
loop
TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
i = i + 1
exitwhen i == bj_MAX_PLAYER_SLOTS
endloop
TriggerAddCondition( t, Condition( function Spell3Cond ) )
TriggerAddAction( t, function Spell3Act )
t = null
}
}
Помогите пожалуйста!!!
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
и ты про какую функцию
Ред. Leys
group G
unit E
во вторых
так же проблемма может быть в препроцесере/либах
советую сначала сделать дебаг(отладочные сообщения)
потом глянуть джи файл карты
и если опасения по поводу препроцесора подтвердятся то переустановить джнгп
Ред. Leys
зашел в cj_types.j удалил строку while(cond) ..... ошибку выдавать перестало. Может быть из за этого loop не работает?
она баганая слегка
ты отладку покажи
без неё говорить бессмысленно
просто перед каждым вызовом функции сообщай о вызове
например вместо
когда узнаешь место где останавливается выполнение кода проверь значение переменных используемых в месте остановки
Ред. nvc123
и нету ли в ней битых юнитов
если с ней всё в порядке но надо брать j файл и смотреть его
BJD( "G == null" )
else
BJD( "G! == null" )
if ( FirstOfGroup(G) == null ) {
BJD ( "FirstOfGroup(G) == null" )
else
BJD(GetUnitName(FirstOfGroup(G)))
}
}
))
кинь скрин журнала
Ред. Волчачка
А ещё она в заголовке globals не null'ась
Ред. Leys
KingMaximax, ох тыж епт заработало
такую дыру сделал
в глобалке группу написал но не прописал CreateGroup()
KingMaximax, Благодарю