Четверг, 21.11.2024, 19:03

logo

Пользовательский поиск

Меню сайта
Категории раздела
Разное [15]
Tutorials
Создание карт [13]
Создание моделей [2]
Кодинг [14]
Создание карт CS [197]
Учебник cs-mapper
Свойства entity HL-CS [117]
Форма входа
Наш сервер CS 1.6
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 167
Друзья сайта


Главная » Статьи » HL Development » Создание карт


Создание скриптов

Создание скриптов

Для создания скриптов в Half-Life существуют две энтити: scripted_sequence и scripted_sentence. Первая отвечает за движения, выполняемые монстром, будь то ходьба, бег, нажатие кнопки, тряска атомата с кока-колой, или почесывание подбородка. Вторая служит для того, чтобы монстр произнес какую-то фразу. При этом его голова повернется в сторону слушателя, и рот будет открываться в соответствии с частотой звука.

scripted_sequence


Эта энтитя размещается там, куда пойдет или побежит объект, на которого она настроена. Её можно подставить вплотную к полу, но следите, чтобы никакие посторонние браши не пересекали ее, пускай даже краешком.

Основные параметры настраиваются следующим образом:

Name - имя, используемое для активации скрипта. Активатором, как и везде, может быть любая энтитя, включая самого монстра.

Angle - сторона, куда повернется лицом монстр, когда доберется до нужной точки.

Target - энтитя, которая активируется после завершения этого скрипта, т.е., после того, как монстр доберется до точки и проделает необходимую анимацию. Обычно этой энтитей бывает другой scripted_sequence для этого же монстра, или кнопка, на которую он нажал.

Delay before trigger - задержка между завершением анимации и срабатыванием target-энтити.

Kill Target - энтитя, которая будет удалена с карты после завершения скрипта (часто сюда ставят имя этого-же монстра, если нужно сделать так, чтобы тот зашел за угол и исчез)

Target Monster - имя того самого монстра, который выполняет скрипт. Это может быть также имя класса (например, moster_scientist) - в таком случае scripted_sequence выберет любого монстра этого класса в пределах радиуса, задаваемого в поле Search Radius

Action Animation - имя анимации, которую монстр проделает, когда доберется до расположения этого scripted_sequence. Если вам нужно, чтобы монстр просто подошел куда-то без дополнительной анимации, то оставьте это поле пустым.

Idle Animation - имя зацикленной анимации, которую монстр будет выполнять до тех пор, пока scripted_sequence не активируется. Например, падение ученого в шахте лифта - пока вы не добрались до верху, он будет дергаться, а при прохождении игроком триггера, он выполнит анимацию падения. Или поедающий труп зомби, подскакивающий при виде игрока. Если вам нужно, чтобы монстр всегда выполнял Idlе-анимацию (как сидящий с кружкой кофе профессор в самом начале), то оставьте поля Name и Action animation пустыми.

Search Raduis - если в поле Target Monster задан класс монстра, то монстр будет выбираться внутри радиуса, задаваемом в этом поле. Также это применяется для создания ученых и барней, который надо подвести к кнопке или сканнеру, чтобы они их активировали - поле Name оставляется пустым, в поле Target Monster указывается класс монстра (ученый или барни), здесь указывается радиус, и устанавливается некое значение поля Repeat Rate ms (например, 10).

Repeat Rate ms - поиск монстра в радиусе, задаваемом выше, производится с указываемой в этом поле частотой в милисекундах.

Move to position - опередляет способ передвижения монстра на пути к позиции.
- No - монстр не пойдет к scripted_sequence, а выполнит анимацию там, где стоит.
- Walk - подойдет, и затем выполнит анимацию.
- Run - подбежит, и выполнит анимацию.
- Instantaneous - он телепортируется в место scripted_sequence и выполнит анимацию (это хорошая альтернатива монстермейкеру, если монстры должны иметь какие-то настройки, типа имени и т.д.).
- No, Turn o Face - то же, что и No, правда перед анимацией он повернется в направлении, указываемом в angle.


Теперь её флаги:

Repeatable - поставьте, если скрипт нужно активировать много раз (например, ходящие ученые между компами в начале игры)

Leave corpse - если в конце анимации монстр умирает (например, падение), то с этим флагом труп не исчезнет.

No interruptions - если в момент проигрывания скрипта игрок попытается повести монстра за собой или выстрелить в него, то скрипт не прервется.

Override AI - обычно скрипты игнорируются, если монстр в состоянии боя. Но этот флаг заставляет монстра выполнить скрипт независимо от того, чем тот занимается.

No script move - после проигрывания анимации монстр сместится обратно туда, где он был в ее начале.


Чтобы задать анимацию, вам необходимо знать ее имя. Для этого возьмите PakExplorer и из pak0.pak/models извлеките нужную вам модель. Просматривается она с помощью Model Viewer. Внимание - некоторые модели, например, ученые или барни, состоят из нескольких mdl-файлов (barney.mdl, barney01.mdl, barneyt.mdl), если вы не извлекете их все, то при открытии главного файла Model Viewer'ом возникнет ошибка.
Примечание: с определенных пор Model Viewer научился открывать модели прямо из pak-файлов.


Есть одна небольшая хитрость - если есть две scripted_sequence с одинаковыми именами, и действующие на разных монстров, то поведение монстров будет синхронизировано следующим образом - тот из монстров, кто раньше подошел к своей scripted_sequence, не будет сразу выполнять анимацию, а подождет, пока другой тоже не достигнет своей точки, и потом они вместе выполнят свои анимации. Пример этого можно увидеть прямо перед реактором, когда ученые одновременно включают сканнеры. Если один из монстров прервал выполнение скрипта, то и другой прервет тоже.


Отдельный вопрос, имеющий косвенное отношение к скриптам - сидящие в креслах ученые. Для этого используется энтитя monster_sitting_scientist. Теоретически, располагать ее можно на любой высоте от сиденья (желательно где-то на высоте около ста пикселей), она все-равно опустится до нужного уровня, главное проследите, чтобы под ней и на некотором расстоянии от нее (~4 пикс.) было только седалище, а не ручки или спинка, иначе игра неправильно определит высоту и ученый окажется либо слишком высоко, либо слишком низко.


При передвижении монстра в нужную точку он всегда пытается использовать сетку из нодов, даже если движение вызвано скриптом. Ноды - это своеобразные вейпоинты, наподобие тех, по которым бегают боты в мультиплеере. Ставить их довольно просто - выбираете энтитю info_node и кидаете.
Высота над полом может быть любая, игра их все-равно опустит их до его уровня самостоятельно. Параметров никаких не нужно, игра, опять же, сама просчитает, какой нод из какого виден (появится надпись при загрузке карты - "Node graph is out of date. Rebuilding...") и сохранит в папочку nodes. Ставьте их в основном на перекрестках и углах. Не делайте расстояние между ними слишком большим и не наваливайте их в кучу. Около дверей ставьте под два нода - с одной стороны, и с другой. Если будет проблема с лестницами, то сделйте ступеньки пониже (8-12 пикс.) и на каждой поставьте по ноду, хотя это не всегда обязательно.


scripted_sentence


Местоположение энтити не имеет значения. Настраивается схожим образом с предыдущей.

Name - имя для активации.

Target - имя энтити, которая сработает после завершения фразы. Это часто используют для активации ответной реплики другого монстра.

Sentence Name - имя звукового события, т.е., описание звукового файла для фразы. Важно - в начале надо поставить восклицательный знак и писать имя события заглавными буквами.

Speaker Type - имя монстра, который произносит фразу

Sentence Time - время звучания. Скорее всего, служит показателем, как долго объект будет смотреть на слушающего.

Lishtener Type - имя слушающего монстра, к которому этот, обращаясь с репликой, повернет голову. Как правило, тот тоже повернется, слушая реплику. Если реплика обращена к игроку, то напишите здесь player.

Если слушатель будет слишком далеко, то реплика не прозвучит.


Как и в случае со scripted_sequence, нам надо знать специальное имя звукового события. Это не совсем то же, что и имя wav-файла, а, скорее, их группа. Опять лезем в pak0.pak и в папке sound находим файл sentences.txt, внутренности которого имеют примерно такой вид:

SC_IDLE0 scientist/ipredictedthis
SC_IDLE1 scientist/containfail
SC_IDLE2 scientist/chaostheory

Сначала заглавными буквами идет имя самого звукового события, которое мы подставим в scripted_sentence, а потом, через пробел, список wav-ок без расширения, которые по очереди програются в этом событии. В данном примере их только по одному, но в звуковых событиях десантников вы увидите их массовое использование. Учтите, что для каждого монстра существует своя группа событий - для ученых их имена начинаются на SC, для барни - на BA, для десов - HG, и так далее.
Если вы будете добавлять свои речи, не забудте их также прописать по аналогии в этом файле, который приложите к своему моду.



Вот вроде и все, удачных и интересных вам скриптов!


Категория: Создание карт | Добавил: SuperStart (17.10.2010)
Просмотров: 3820 | Рейтинг: 0.0/0 |



Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Copyright www.akksimo.net © 2024