Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скрипты Morrowind.doc
Скачиваний:
92
Добавлен:
29.10.2018
Размер:
2.81 Mб
Скачать

Поворачиваем актера в нужном направлении

Face x_enum, y_enum

"ActorID" -> Face, -1334, 334

Согласно моим данным эта функция не принимает переменные (по крайней мере, в версии 1.6.1820), но были сообщения, что принимает – возможно, это зависит от версии. Эта функция заставляет NPC посмотреть на указанные координаты. Это прерывает текущую анимацию. На перемещающихся NPC это вызывает прекращение движения, поворот в нужном направлении, затем продолжение движения после того, как поворот закончен. (Информация с форумов / JOG, Dan_Wheeler)

Задание случайного перемещения Актера

AiWander, range_enum, duration_enum, time_enum, [idle1], [idle2], [idle3], …[idle9], [reset]

"Actor_ID" -> AIWander, 512, 5, 0, 0,20,0,0,10,30,0,0,0

Это алгоритм случайных перемещений, который используют практически все NPC в игре. NPC перемещается вдоль сетки пути, случайно меняет направление и совершает действия простоя (idle).

  • Range: определяет дистанцию, на которую Актер и существо может отходить от первоначального положения.

  • Duration: возможно время (в часах) выполнения Актером данного пакета (до его сброса, что, похоже, происходит, когда игрок или уходит, или спит, не уверен28?)

  • time: возможно определяет время начала исполнения пакета, если у него есть продолжительность.

  • [idle1], …[idle9]: шансы для движений простоя Простои бывают (тестировалось в игре):

  • Человек мужчина: Idle1: Стоять смирно Idle2: Перенос веса с одной ноги на другую Idle3: Посмотреть назад Idle4: Почесать голову, потрясти головой Idle5: Поправить одежду или броню на плече Idle6: Зевать и потягиваться Idle7: Посмотреть на пальцы и оглянуться вокруг Idle8: Положить руку на грудь, как при боли в сердце Idle9: Потянуться за оружием, затем дотронуться до головы.

  • Человек женщина – как и выше, кроме: Idle5: Рука на бедро

  • Хаджит женщина – как Человек мужчина, кроме: Idle9: Почесать голову, потрясти головой

Чтобы актер стоял на одном место, используйте: AIWander, 0, 0, 0

Примечание: Количество простоев и некоторые описания в предыдущих версиях были обозначены неверно (исправлено с 8-ой версии – спасибо Whoopa).

Вот пример, который показывает все простои сериями (это может быть полезно, чтобы узнать, какую анимацию вы хотите использовать для NPC)

Begin Animtest

float timer

short count

set timer to ( timer + GetSecondsPassed )

if ( timer > 10 )

set timer to 0

set count to ( count + 1 )

if ( count >= 18 )

set count to 0

endif

endif

if ( count == 1 )

AIWander 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0

MessageBox "Idle 1 , 100"

set count to ( count + 1)

elseif ( count == 3 )

AIWander 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0

MessageBox "Idle 2 , 100"

set count to ( count + 1)

elseif ( count == 5 )

AIWander 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0

MessageBox "Idle 3 , 100"

set count to ( count + 1)

elseif ( count == 7 )

AIWander 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0

MessageBox "Idle 4 , 100"

set count to ( count + 1)

elseif ( count == 9 )

AIWander 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0

MessageBox "Idle 5 , 100"

set count to ( count + 1)

elseif ( count == 11 )

AIWander 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0

MessageBox "Idle 6 , 100"

set count to ( count + 1)

elseif ( count == 13 )

AIWander 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0

MessageBox "Idle 7 , 100"

set count to ( count + 1)

elseif ( count == 15 )

AIWander 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0

MessageBox "Idle 8 , 100"

set count to ( count + 1)

elseif ( count == 17 )

AIWander 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100

MessageBox "Idle 9 , 100"

set timer to 0

set count to ( count + 1)

endif

End