Среда, 18.10.2017, 03:01

logo

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

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


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

Учебник по созданию карт CS HL. Авиаудар на карте de_torn



CS-MAPPER — Создание карт для
 CS. 
 
 
Ссылки 
Статьи

Учебник по созданию карт
Глава XX. Продвинутый маппинг.

§ 20.1 Авиаудар на карте de_torn

Из данного материала вы узнаете о том, как сделан авиаудар на de_torn. Возможно, вы не знаете, что на de_torn есть авиаудар... Тогда быстренько прочитайте о нём в разделе «Секреты» :-) От вас потребуется знание следующих энтити-объектов:

А вот так будет выглядеть авиаудар в игре:

Так будет выглядеть авиаудар в игре


Схема работы авиаудара будет такой (смотрите картинку ниже):

  • Игрок проходит через trigger_multiple, расположенный на мосту
  • Trigger_multiple активирует multi_manager
  • Multi_manager активирует все объекты, создающие эффект авиаудара
Схема действия авиаудара



1. Trigger_multiple

Что же, начнём с создания брашевого энтити-объекта trigger_multiple. Его мы расположим посередине моста (смотрите картинку ниже). Когда игрок пройдет через данный триггер, будет активирован multi_manager, расположенный чуть выше (местоположение его значения не имеет).

Создаем trigger_multiple


Trigger_multiple (активирует объект multi_manager)
Target: jet_multi (здесь мы указали название multi_manager'а)
Delay before trigger: 5 (время до активации multi_manager'а, в секундах)
Delay before reset: 360 (время в секундах, в течении которого триггер не может быть активирован повторно)


2. Multi_manager

Multi_manager, как видно из схемы, расположенной выше, запускает четыре энтити-объекта: сначала звук самолета, потом запускает сам самолет, после этого активирует встряску земли и, в конце концов, запускает подрыв разрушаемых ящиков.

Свойства multi_manager'а выглядят так:

Свойства объекта multi_manager

«Targetname» при отжатой кнопке «Smart Edit» означает название энтити-объекта multi_manager, то есть jet_multi. Ниже названия мы видим запуск звука jet_sound через 0.1 сек, запуск самолета jet через 1.0 сек, запуск встряски jet_shake через 1.0 сек и запуск взрыва ящиков jet_crate через 1.9 сек. Время запуска всех данных объектов рассчитано с учётом скорости полёта самолета (ведь нужно подорвать ящики, когда самолет будет пролетать над ними, но не раньше и не позже).


3. Звук самолета Ambient_generic

Самым 1-ым энтити-объектом запускаемым через 0.1 секунды является звук самолета. Конечно, это будет энтити-объект ambient_generic. А вот как выглядят его параметры и флаги:

Ambient_generic (звук самолета)
Name: jet_sound (название объекта)
Path: ambience/jetflyby1.wav (путь к звуку, это стандартный звук самолета)
Volume: 10 (громкость звука, максимальная)

Флаги:

Play Everywhere: играть по всему уровню
Start Silent: в начале нового раунда звук не играется
Not Toggled: играет один раз (затем его нужно запускать ещё раз)


4. Запуск самолета Func_door

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

Так и в нашем случае, дверь будет выполнять отличную от её прямого назначения функцию — она будет самолетом :-) В нашем тестовом уровне мы использовали текстуры самолета из de_torn.

На рисунке ниже видно, что самолет у нас будет плоским прямоугольным брашевым энтити-объектом func_door, повернутым на угол 45 градусов в направлении своего движения.

Создаем самолет из func_door и определяем направление его полета

Раскрасив браш текстурой самолета, поверните его на виде сверху (2D top). Советуем использовать ровные значения: 30 градусов, 45 градусов, 60 градусов и т.п.

Превратите браш нажатием комбинации клавиш [Ctrl-T] в энтити-объект func_door и выставьте в параметре «Angle» точно такой же угол, на который развернули самолет. В нашем случае самолет повёрнут на угол 45 градусов. Важно также указать параметр Delay before close: -1, чтобы самолет мог произвести авиаудар только один раз за раунд, то есть долетев до конечной точки своего пути, он останется там до конца раунда, чтобы с началом нового раунда вернуться в изначальную позицию.

Чтобы синие части текстуры стали в игре невидимыми, нужно указать такие режимы отображения:
Render Mode: Solid, FX Amount: 255.

Следующим значимым параметром нашего будущего самолёта (func_door) является «Lip», определяющий расстояние, на которое переместится самолет. Стандартно самолёт пролетит расстояние, равное своей длине (ширине). Дистанция при использовании параметра «Lip» вычисляется так: дистанция = длина самолета - Lip.

Эту дистанцию определяем на двумерном виде сверху (2D top). Так как градус, под которым летит наш самолет, равен 45, то расстояние легко высчитать по диагонали координатной сетки. Если у нас сетка разбита на квадраты 128х128 юнитов, то по теореме Пифагора (вы же её помните? :-) длина диагонали получается равной примерно 180 юнитов. Как Вы конечно же понимаете, теорема Пифагора применима к любому прямоугольному треугольнику, независимо от того, одинаковы катеты A и B или нет.

Расстояние для самолета определяем по теореме Пифагора

Считаем число квадратов с размером 128х128 юнитов от начального до конечного положения самолета. У нас получилось 9 квадратов, а значит дистанция равна примерно 1600 юнитов. Именно поэтому в параметр «Lip» мы вбили значение «-1600» («минус», так как отрицательное значение увеличивает дистанцию полёта. В самом деле, в формуле: дистанция = длина самолета - Lip перед параметром «Lip» стоит минус, а минус на минус дает плюс).

Func_door (самолет)
Angle: 45 градусов (направление полета самолета, определяется на двумерном виде сверху — 2D top)
Name: jet (название самолета)
Render mode: Solid (данный режим отображения вместе с fx amount: 255 делает синие части самолета невидимыми)
FX Amount: 255
Speed: 1600 (скорость самолета, высокая)
Lip: -1600 (дополнительная дистанция, на которую пролетит самолёт; значение никак не связано со скоростью, просто цифры совпали)
Wait before close: -1 (остаётся в конечном положении до конца раунда; затем в начале следующего раунда возвращается на место)


5. Встряска Env_shake

Данный спецэффект отсутствует на de_torn, но мы решили немного пошалить :-) и усилить восприятие низко летящего реактивного самолета, поэтому добавили маленькое землетрясение при помощи энтити-объекта env_shake.

Env_shake (объект, вызывающий встряску карты)
Name: jet_shake (название «встряски»)
Amplitude 0-16: 2 (амплитуда колебаний, маленькая)
Duration (seconds): 3 (длительность встряски в секундах)
0.1 jerk, 255.0 = rumble: 2 (частота толчков; чем больше значение, тем чаще трясет)

Флаги:

GlobalShake: землетрясение распространяется по всему уровню


6. Взрыв ящиков Func_breakable

Рядом с конечной точкой движения самолёта мы создали несколько ящиков, превратив их в энтити-объект func_breakable. На карте de_torn вместо ящиков используется крыша 1-ого из домов. Когда самолёт пролетает над крышей — раздается взрыв, и часть крыши разрушается.

Время активации (взрыва) ящиков func_breakable рассчитано с учётом скорости самолета (1600 юнитов в секунду) и дистанции, на которой он расположен от ящиков в начале раунда. Да, кстати, если вы не знаете, то энтити-объекты func_breakable при активации разрушаются, а установив параметр «Explode magnitude» мы добавляем к обычному разрушению еще и взрыв какой-либо силы.

Func_breakable (взрывающиеся ящики)
Strenght: 1 (прочность ящиков, можно оставить по умолчанию)
Material type: Wood (тип материала, дерево)
Explode magnitude: 170 (сила взрыва, значительная)

Флаги:

Only Trigger: взрывается только от активации (игрок расстрелять ящики не может)


Заключение:

При изготовлении данного самолета рекомендуется размещать его так, чтобы он не был виден с земли, иначе может получиться, что самолёт будет висеть над каким-либо домом и ждать, когда его активируют :-)

Также нужно учитывать следующую особенность энтити-объекта func_door: в начале следующего раунда func_door всегда возвращается в начальное положение, то есть можно увидеть, как самолет задом летит в изначальное положение. Зная эту особенность, не размещайте респауны рядом с траекторией полёта самолета, если вы не хотите, чтобы игроки увидели сей казусный маневр :-)


Ссылки

torn_airplane_32.zip [193Кб] — в архиве карта-пример в форматах BSP и RMF.

Глава XX. Продвинутый маппинг.

§ 20.1   Авиаудар на карте de_torn
§ 20.2   Активация объектов при рождении/смерти игрока
§ 20.3   Вентилятор
§ 20.4   Взрывы, мины и растяжки
§ 20.5   Вылетающие из трубы куски мяса
§ 20.6   Гром на карте de_aztec
§ 20.7   Дождь на карте
§ 20.8   Землетрясение
§ 20.9   Как отобрать оружие у игроков?
§ 20.10 Как поставить бомбу под водой?
§ 20.11 Канализация, туннель
§ 20.12 Катапульта на карте de_rats3
§ 20.13 Конвейер
§ 20.14 Курица на карте cs_italy
§ 20.15 Летающая птица на карте de_survivor
§ 20.16 Маятник
§ 20.17 Подсчет фрагов на табло
§ 20.18 Пузырьки
§ 20.19 Пулемет
§ 20.20 Скалы
§ 20.21 Снег на карте
§ 20.22 Табло с выбором фоновой мелодии
§ 20.23 Холмы
§ 20.24 Щит с вращающейся рекламой

К оглавлению Учебника

Категория: Создание карт CS | Добавил: SuperStart (03.03.2012)
Просмотров: 949 | Теги: Counter-Strike, counter strike, Half-Life, Halflife, counter-strike 1.6 | Рейтинг: 0.0/0 |


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

Copyright www.akksimo.net © 2017