Home Random Page


CATEGORIES:

BiologyChemistryConstructionCultureEcologyEconomyElectronicsFinanceGeographyHistoryInformaticsLawMathematicsMechanicsMedicineOtherPedagogyPhilosophyPhysicsPolicyPsychologySociologySportTourism






Short AllowWerewolfForceGreeting 3 page

Facex_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

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

AiActivate"Object ID"

AiActivate , ObjectID, [reset]

 

Actor -> 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

Следование и эскорт

AiFollow, "Actor ID", duration_f_enum, x_f_enum, y_f_enum, z_f_enum, [reset]

 

AiFollowCell, "Actor ID", "Cell ID", duration_f_enum, x_f_enum, y_f_enum, z_f_enum, [reset]

 

Actor -> AIFollow, "Mob2ID", 0,0,0,0

 

Пакет ИИ «Следовать» (Follow) приказывает одному актеру идти за другим. Это можно использовать, чтобы NPC или существо пошло за игроком, а можно составить из NPC и существ караван. Следующий отрывок из моего собственного скрипта показывает использование функции с нулевыми параметрами:

elseif ( state == 20 ) HB_guar_pack_adros_ -> AIFollow, HB_adros_darani, 0, 0, 0, 0 AITravel -8144, -19409, 728 ;new coords point 1 set state to 30

 

Поскольку точка назначения и длительность не заданы, гуар будут следовать за NPC до тех пор, пока не будет дана другая команда. Также как и с другими командами ИИ, убедитесь, что каждая команда вызывается только раз, а не каждый фрейм.

Длительность, CellID и координаты x, y, z точки назначения ставят условия, при которых AIFollow завершится (что можно отследить функцией GetAIPackageDone). AiFollowCell позволяет указать интерьер в качестве точки назначения.

Значение необязательного флага reset неизвестно.

 

AIEscort, "Actor ID", duration, x, y, z, [reset]

AIEscortCell, "Actor ID", "Cell ID", duration, x, y, z, [reset]

 

Эта функции позволяет Актеру привести игрока в определенную точку. Актер будет ждать игрока, если расстояние окажется слишком большим, и продолжит путь, когда игрок приблизится (Спасибо Kir за эту инфу). Смотрите примерв создании персонажа – страж эскортирует вас из трюма судна на второй уровень к выходу. (Спасибо MisterSmileyFaceDude). Значение необязательного флага reset неизвестно.

Определение текущего пакета ИИ


Date: 2015-12-17; view: 641


<== previous page | next page ==>
Short AllowWerewolfForceGreeting 2 page | Short AllowWerewolfForceGreeting 4 page
doclecture.net - lectures - 2014-2024 year. Copyright infringement or personal data (0.013 sec.)