Еще немного доработал скрипт. Но это, скорее, для моих нужд.
Begin OnActivate
if (IsActionRef Player // поставил проверку на запуск от игрока
if (IsFormValid rMe == 0)
Let rMe := GetSelf
Endif
Let sCount := GetNumChildRefs
while (sCount > 0)// было >= 0, поэтому была лишняя проверка с индексом -1. Ошибка ловится, но зачем, когда можно избежать
Let sCount -= 1
Let rChild := GetNthChildRef sCount
if (IsFormValid rChild == 0) || (IsRefDeleted rChild)
continue
Endif
rChild.Activate rMe, 1
loop
; Перенес в конец, т.к. изначально весь свет включен и рубильник срабатывал со второго раза.
; Убрал анимацию, просто не нужна.
if (sFlag == 0)
Let sFlag := 1
Else
Let sFlag := 0
Endif
Return
Endif
End