×
Меню
Индекс

MSFD Актеры активируют объекты

AiActivate "Object ID"
AiActivate , ObjectID, [reset]
 
     "Actor_ID" -> AIActivate "Object"
 
Процитирую Bethesda: «Этот пакет указывает Актеру активировать ObjectID. Мощный и не протестированный, не использующийся пакет».
 
В обычном Морре эта функция практически сломана, кроме того, что ею можно заставить NPC выпить зелье.
С Трибуналом она, похоже, исправлена, до определенной степени.
Я мог заставить NPC поднять оружие, открыть обычную дверь и пройти через загружающую дверь.
Загружающие двери работают, только  если телепортирующий маркер находится в том же интерьере, или загруженных (текущий и вокруг) экстерьерах – иначе игра вылетает.
Я также успешно тестил ее с активатором (переключателем у Призрачных Врат)
 
Нужны обычные предосторожности с функциями ИИ (убедитесь, что Актер не слишком далеко, что сетка ИИ на месте – нормальная, что ничего не загораживает путь, и т.д.)
Хотя я не достаточно тестил, я не заметил, что появлялся сигнал от AIPackageDone, но есть и другие способы установить для NPC новый пакет (см примеры ниже).
 
Пример: Это тестовые скрипты, которые я сделал.
Они показывают, как задавать условия, чтобы определить, закончил ли NPC выполнять действие.
 
Begin TT_opendoor
short doonce
short AIState
 
if ( doonce == 0 )
     if ( GetDistance, Player < 400 )
          AIActivate TT_door
          set doonce to 1
     endif
elseif ( doonce == 1 )
     set AIState to GetCurrentAIPackage
     MessageBox "Package = %g", AIState
     if ( TT_door->GetAngle, z != 180 ); Как только дверь начала вращаться
          MessageBox "Done"
          AIWander 30, 5, 0, 0,20,0,0,10,30,0,0
          set doonce to 2
     endif
endif
 
end
 
Begin TT_pickmace
short doonce
short AIState
if ( doonce == 0 )
     if ( GetDistance, Player < 400 )
          AIActivate TT_daedric_mace
          set doonce to 1
     endif
elseif ( doonce == 1 )
     set AIState to GetCurrentAIPackage
     MessageBox "Package = %g", AIState
     if ( GetItemCount, TT_daedric_mace >= 1 ); когда в инвентаре NPC появидась булава
          MessageBox "Done"
          AIWander 512, 5, 0, 0,20,0,0,10,30,0,0
          set doonce to 2
     endif
endif
 
end
 
Begin TT_openloaddoor
short doonce
short AIState
 
if ( doonce == 0 )
     if ( GetDistance, Player < 400 )
          AIActivate TT_door
          set doonce to 1
     endif
elseif ( doonce == 1 )
     set AIState to GetCurrentAIPackage
     MessageBox "Package = %g", AIState
     if ( GetPos, y > 2000 ); позиция изменилась. Телепортация в ту же ячейку
          MessageBox "Done"
          AIWander 30, 5, 0, 0,20,0,0,10,30,0,0
          set doonce to 2
     endif
endif
 
end