Новости/News | | Туториалы/Tutorials | | Форум/Forum | | ЧаВо/FAQ | | Патчи/Patches | | Файлы/Downloads | | Ссылки/Links | | Авторы/About |

ScriptedSequence

Содержание

Введение

ScriptedSequences предназначены для управления Pawn (живыми существами) в скриптовых сценках. У актера ScriptedSequence в разделе AIScript находится динамический массив Действий (Actions).

Использование динамического массива

Изначально, массив действий пуст. Для того, чтобы добавить новое действие в массив, нажмите кнопку Add. При этом будет создан пустой элемент массива (кнопка Add всегда добавляет элементы в конец массива). Если, в любой момент, Вы нажмете кнопку Empty, весь массив будет очищен и все его элементы удалены.

Когда Вы добавили пустой элемент, Вы можете зайти в него и открыть выпадающее меню, в котором указаны все доступные типы действий. Для того, чтобы заполнить пустой элемент, выберите необходимое действие и нажмите кнопку New. После того, как выбранное Вами действие будет добавлено в ячейку массива, можно перейти в его свойства.

Для того, чтобы очистить какой-либо элемент массива, выделите его заголовок (там, где написан номер его ячейки, например [1]) и нажмите кнопку Clear. Таким образом, элемент останется, но все его содержимое будет удалено. Если же Вы нажмете Delete, то элемент будет удален полностью. Для того, чтобы вставить в середину массива новый элемент, воспользуйтесь кнопкой Insert. Обратите внимание на то, что кнопка Insert вставляет новый элемент перед текущей ячейкой, а не после.

Если Вы хотите изменить содержимое определенной ячейки, Вы должны, сперва, очистить ее, а затем создать новое содержимое.

Использование ScriptedSequence

Для того, чтобы привязать Pawn к массиву, необходимо открыть свойства Pawn и указать в поле AIScriptTag имя (Tag) ScriptedSequence актера. Таким образом, активация ScriptedSequence актера произойдет сразу же после "рождения" (spawn) Pawn (обычно это происходит при старте уровня). По этой причине, первой командой в массиве ScriptedSequence действий зачастую выступает WaitForEvent. При установке WaitForEvent действия, актер будет ожидать внешнего события для запуска остальной части своих действий.

Действия (Actions)

Действия, которые используются в ScriptedSequence массивах, представляют собой определенные скриптовые команды. Ниже, более или менее подробно, описано каждое действие, что оно делает и для чего предназначено, а также как оно влияет на Pawn, который контролирует текущий скрипт. Обратите внимание на то, что вследствие специфики некоторых действий, не все типы можно использовать в ScriptedTrigger актере. Такие действия специально помечены в колонке Trigger. В таблице, также, отмечены так называемые латентные действия. Латентные, в отличие от обычных действий, прерывают общий ход скрипта до тех пор, пока текущее действие не прекратит свою работу.

Действия контролирующие Pawn

Тип действия Описание Latent Trigger
ChangeWeapon заставляет ScriptedController Pawn переключить текущее оружие на оружие указанное в поле NewWeapon; нет да
ChangeTeam изменяет текущую команду Pawn на команду, указанную в поле Team; нет да
Crouch заставляет Pawn присесть; нет нет
DamageInstigator наносит контролируемому Pawn повреждение. Величина урона указывается в поле Damage, а тип наносимого повреждения - в поле DamageType; нет да
DestroyPawn это действие уничтожит как Pawn, так и соответствующего ему ScriptedController. Без ScriptedController или Pawn, действия не будут работать; нет нет
FinishRotation если у Pawn есть цель, но он не развернут в ее направлении, этот тип действия будет ждать, пока Pawn не закончит разворачиваться; да да
FireWeapon этот тип действия заставляет Pawn начать стрельбу. Если, при этом, у Pawn нет оружия, это действие работать не будет. Если для переменной bPressFire указано значение true, то Pawn воспользуется первым (primary) типом стрельбы, если же bPressAltFire равен true - при стрельбе будет использован второй тип (secondary). В ситуациях, когда будет активирована primary стрельба и у игрока находится в руках мяч (используется в BombingRun играх), он выкинет его на расстояние 1500 юнитов перед собой; нет да
ForceMoveToPoint мгновенно перемещает Pawn к актеру, имя (Tag) которого указывается в поле DestinationTag. Если актера с таким именем не существует на уровне, то Pawn мгновенно переместится в точку, куда он в это время направлялся. Если поле DestinationTag оставить пустым, то в качестве конечной цели будет использован сам актер ScriptedSequence; нет да
Freeze делает полную остановку Pawn, "замораживая" его посредине анимации и движения; да да
FreezeOnAnimEnd этот тип действия подождет, пока Pawn завершит текущую анимацию и только затем остановит его; нет да
Jump заставляет игрока произвести прыжок. Тип прыжка указывается в поле JumpAction:
  • Normal - обычный прыжок;
  • Double - двойной прыжок;
  • DodgeLeft - додж влево;
  • DodgeRight - додж вправо;
нет да
KillInstigator убивает Pawn наповал, используя, при этом, тип повреждения, указанный в поле DamageType; нет да
LocalizedMessage выводит на экран LocalMessage сообщение, тип которого указывается в поле MessageClass. Номер сообщения, соответственно, указывается в поле MessageNum; нет да
MoveToPlayer этот тип действия заставляет контролируемого Pawn переместиться к игроку, ответственному за запуск ScriptedSequence; да нет
MoveToPoint делает то же самое, что и MoveToPlayer, но при этом Pawn будет перемещаться к актеру, имя (Tag) которого указано в поле DestinationTag. Если это поле пусто или актера с указанным именем не существует, то Pawn будет перемещен в точку расположения ScriptedSequence актера; да нет
PlayAnim заставляет Pawn проиграть определенную анимацию. Имя анимации указывается в поле BaseAnim. Переменная BlendInTime отвечает за время перехода от текущей анимации к указанной. BlendOutTime на данный момент не используется. Свойство AnimIterations определяет, сколько раз будет проигрываться анимация. Для того, чтобы анимация не прекращалась, установите для переменной bLoopAnim значение равное true. При помощи переменной StartFrame можно указать стартовый кадр анимации. За скорость анимации отвечает поле AnimRate; нет нет
Run это действие указывает контролируемому Pawn, что ему необходимо будет бежать при следующем перемещении. Визуально, это действие на Pawn никак не влияет; нет нет
SetAlertness указывает Pawn как реагировать на врагов:
  • IgnoreAll - Pawn будет полностью игнорировать врагов, любые наносимые ему повреждения (включая физику - он будет вести себя так, как будто ничего не произошло);
  • IgnoreEnemies - Pawn будет полностью игнорировать врагов, но будет реагировать на повреждения. Тем не менее, отстреливаться он не будет;
  • StayOnScript - Pawn будет продолжать выполнять указанные ему скриптовые действия, но при любой возможности будет отстреливаться;
  • LeaveScriptForCombat - когда Pawn увидит врага, он закончит выполнение скриптовых действий и перейдет к атаке врага;
нет нет
SetHidden делает актера, имя (Tag) которого указано в поле HideActorTag невидимым (установите bHidden равным true) или, наоборот, видимым (установите bHidden равным false). Если поле HideActorTag пусто, то в качестве актера используется контролируемый Pawn; нет да
SetPhysics указывает Pawn как следует реагировать и двигаться. Это позволяет переключить физику Pawn на любую доступную, но, тем не менее, из-за того, что почти каждый тип физики требует тонкой настройки, не все типы следует использовать:
  • None - Pawn не будет двигаться, не смотря ни на что;
  • Walking - Pawn будет всегда на земле (в противном случае физика автоматически поменяется на Falling). Pawn при этом может перемещаться по поверхности земли;
  • Falling - на Pawn будет действовать силы гравитации;
  • Swimming - физика имитирующая нахождение Pawn под водой, т.е. он будет плавать;
  • Flying - на Pawn не действуют силы гравитации, поведение схоже со Swimming, но действует вне воды;
  • Rotating - заставляет Pawn постоянно крутиться - этот тип физики может не работать, т.к. для него может быть не установлено соответствующее значение RotationRate;
  • Projectile - не используйте этот тип физики;
  • Interpolating - не используйте этот тип физики - он не будет работать, т.к. нет возможности указать точку интерполяции, к которой необходимо переместиться;
  • MovingBrush - не используйте этот тип физики;
  • Spider - этот тип физики позволяет Pawn перемещаться по любой поверхности - полу, стенам или потолку. К сожалению, на данный момент, этот тип физики не работает;
  • Trailer - не используйте этот тип физики;
  • Ladder - этот тип физики предназначен для ситуаций, когда Pawn взбирается по лестнице;
  • RootMotion - не используйте этот тип физики;
  • Karma - не используйте этот тип физики - это используется для актеров, обладающих Karma свойствами. Не смотря на это, он не будет работать для Pawn;
  • KarmaRagDoll - не используйте этот тип физики - см. Karma;
нет да
SetViewTarget говорит Pawn обрести цель в виде указанного в поле ViewTargetTag актера. Если в поле ViewTargetTag указано 'enemy' в качестве цели будет выбран текущий враг Pawn-а. Если поле ViewTargetTag пусто или актера, указанного в этом поле не существует, то назначенная ранее цель будет отключена (т.е. равна None); нет нет
ShootTarget говорит Pawn стрельнуть в актера, назначенного действием SetViewTarget. Тип стрельбы зависит от текущего оружия. NumShots поле отвечает за количество выстрелов. Информация для скриптеров: за конечную стрельбу отвечает функция BotFire() в классе Weapon; нет да
StopAnimation останавливает текущую анимацию Pawn; нет нет
StopShooting если Pawn в данный момент стреляет, то этот тип действия остановит стрельбу. Очень удобно использовать в ситуациях, когда Вы хотите, чтобы Pawn стрелял до тех пор, пока не будет возбуждено определенное событие; нет да
TeleportToPoint мгновенно перемещает Pawn в место расположения актера, имя (Tag) которого указано в поле DestinationTag. Если поле DestinationTag оставить пустым, то в качестве конечной цели будет выбран сам актер ScriptedSequence. Если для переменной bPlaySpawnEffect будет указано значение равное true, будет, также, отображена анимация телепорт эффекта. Единственное отличие этого типа действия от ForceMoveToPoint заключается в том, что в случае отсутствия контролируемого Pawn, перемещен будет игрок; нет да
ThrowWeapon заставляет Pawn выкинуть текущее оружие. Скорость оружия, при этом, определяется значением переменной WeaponVelocity. Если WeaponVelocity установлен равным (0, 0, 0), то оружие будет иметь исходную скорость равную скорости игрока, плюс 250 по вертикали и плюс 300 по направлению движения Pawn. Если при этом контролируемого Pawn не существует или у Pawn нет оружия, это действие просто не будет работать; нет да
TurnTowardPlayer заставляет Pawn развернуться в сторону игрока, ответственного за ScriptedSequence; нет нет
Walk это действие указывает контролируемому Pawn, что ему необходимо будет идти при следующем перемещении. Визуально, это действие на Pawn никак не влияет; нет нет

Действия скриптового характера

Тип действия Описание Latent Trigger
ChangeLevel загружает новый уровень (указывается в поле URL). bShowLoadingMessage отвечает за появление надписи 'LOADING' при загрузке; нет да
ChangeScript находит и запускает скрипт, указанный в поле NextScriptTag. Если скрипт, указанный в поле NextScriptTag не найден, игра вылетит с ошибкой; нет нет
EndSection этот тип действия используется в совокупности с IfCondition и IfRandomPct. Если одно из этих действий "решит", что следующее действие запускать не нужно, то выполнение скрипта переходит к первому, попавшемуся в последующей части списка EndSection действию; нет да
GotoAction перекидывает выполнение скрипта к действию, номер которого определяется переменной ActionNumber. Если для номера действия указать отрицательное значение, скрипт перейдет к самому первому действию (т.е. к действию под номером 0); нет да
IfCondition если TriggeredCondition соответствующий имени, указанному в поле TriggeredConditionTag активирован (т.е. для него переменная bEnabled возвращает значение true), то скрипт нормально будет продолжать свое выполнение. Если же это значение равно false, скрипт перейдет к очередному EndSection действию, пропустив, при этом, все промежуточные; нет да
IfRandomPct значение, указанное в поле Probability отвечает за вероятность того, что последующие действия текущей секции будут пропущены. Во время выполнения скрипта, генерируется случайное число в диапазоне от 0 до 1. Если это число меньше чем значение переменной Probability, то скрипт будет нормально продолжать свое выполнение. В противном случае скрипт перейдет к очередному EndSection действию, пропустив, при этом, все промежуточные; нет да
LeaveSequence прекратит выполнение данного ScriptedSequence; нет да
WaitForAnimEnd скрипт будет ожидать окончания текущей анимации. В поле Channel указывается необходимый канал анимации. Чаще всего используется 0 канал, который является основным каналом; да нет
WaitForEvent действие будет ожидать возбуждения события, указанного в поле ExternalEvent. Если, при этом, TriggerdeCondition соответствующий имени (Tag) указанном в поле ExternalEvent был уже активирован, действие работать не будет; да да
WaitForPlayer скрипт будет ожидать, пока игрок не приблизиться к Pawn на расстояние, указанное в поле Distance; да нет
WaitForTimer выполнение скрипта прекратится на время, определяемое переменной PauseTime; да да

Другие действия

Тип действия Описание Latent Trigger
ConsoleCommand выполняет консольную команду, указанную в поле CommandStr. Если поле CommandStr оставить пустым, действие выполняться не будет; нет да
DestroyActor уничтожает все актеры, имя (Tag) которых указано в поле DestroyTag (просто удаляет актера из уровня, никаких взрывов); нет да
DisplayMessage выводит сообщение на экран. Если для переменной bBroadcast указано значение true, то сообщение будет отображаться для всех игроков. В противном случае, сообщение будет выведено только на экран игрока, у которого был активирован данный ScriptedSequence. Тип сообщения задается в поле MessageType, а текст - в поле Message. На данный момент, большинство типов сообщений не отличаются друг от друга. Единственное исключение - это 'Say' и 'TeamSay', которые добавляют в начало сообщения имя игрока; нет да
FadeView затемняет (fade) экран игрока до указанного в поле TargetFlash цвета за FadeTime секунд; да да
GotoMenu открывает меню, указанное в поле MenuName для первого попавшегося игрока на уровне. Если, при этом, для переменной bDisconnect указано значение равное true, этого игрока отключит от сервера; нет да
PlayAmbientSound проигрывает AmbientSound звук. В полях SoundVolume, SoundPitch и SoundRadius указывается, соответственно, громкость звука, его высота и радиус. Для того, чтобы остановить воспроизведение звука, необходимо вызвать это действие еще раз, указав громкость в поле SoundVolume равной 0. Если Вы оставите поле AmbientSound пустым, действие просто не будет работать; нет да
PlayLocalSound воспроизводит звук для всех игроков на уровне; нет да
PlayMusic включает музыку, указанную в поле Song. Если для переменной bAffectAllPlayers указано значение true, то музыка будет слышна всем игрокам на уровне. В противном случае, музыку услышит только игрок, ответственный за ScriptedSequence. Значение переменной Transition может принимать одно из следующих значений:
  • None - музыка не будет изменяться;
  • Instant - предыдущая музыка резко прекратится, а новая сразу начнет играть;
  • Segue - при переключении музыки, они будут почти накладываться друг на друга в результате скорости переключения;
  • Fade - предыдущий трек постепенно утихнет, а новый - наоборот, наберет силу;
  • FastFade – то же самое, что и Fade, только предыдущий трек затихнет быстрее;
  • SlowFade – то же самое, что и Fade, только предыдущий трек будет затихать медленнее;
нет да
PlaySound включает соответствующий звук. Источником звука является Pawn. Если, при этом, контролируемый Pawn равен None в качестве источника звука будет выступать сам актер ScriptedSequence. Если для переменной bAttenuation указано значение равное true, звук будет ослабляться по мере отдаления от источника; нет да
SetCorona устанавливает актерам, имя (Tag) которых указано в поле HideActorTag, значение переменной bCorona равным значению bCorona у данного действия; нет да
SpawnActor в результате этого типа действия, на уровне будет "рожден" (spawn) новый актер, класс которого указывается в поле ActorClass. При "рождении" ему можно назначить имя (Tag), указав его в поле ActorTag. Если для переменной bOffsetFromScriptedPawn указано значение true, то значение LocationOffset (смещение координат) и значение RotationOffset (изменение ротации) будет использовано относительно контролируемого Pawn, иначе - относительно положения и ротации ScriptedSequence актера; нет да
TriggerEvent возбуждает событие, указанное в поле Event; нет да

Автор

Tyoma '32_Pistoleta'
www.unrealscript.ru

Хостинг от uCoz