Добро пожаловать в VHEH

Copyright© by Poligon


Учебник

Добро пожаловать в офф-лайн версию учебника по картостроению в редакторе HAMMER. Этот учебник создан на основе большинства статей, расположенных на нашем сайте poligon.counter-strike.ru. Учитывая то, что этот учебник собрал в себе все статьи, хинты, подсказки, правила и тд. можно заключить, что прочитав его от начала и до конца вы будете иметь полные знания о картостроении и всему, что связано с ним. Так же этот учебник может помочь как новичку, так и продвинотому мапмейкеру.

И так, Вы узнаете:

  • Вы получите общие понятия о VHE (VALVe HAMMER EDITOR)
  • Какие программы нужны для создания полноценной карты и где их брать
  • Что такое компиляция, зачем она нужна и как ее правильно настроить
  • Примеры создания отдельных частей карты (неровные поверхности, вода, двери, продвинутое небо и тд.)
  • Списог всех энтитей из expert_counter-strike.fgd

И многое другое!

Но помните, что Полигон посвящен только моду для Half-life - counter-strike. Следовательно мы и будем работать для вас по этой игре, но будут статьи и не только по CS. Удачи в создании настоящих карт!


введение

Основа картостроения

Блоки, цилиндры, конусы - все эти фигуры можно смело назвать "простыми геометрическими фигурами". И правда, в них нет ничего сложного, но этих фигур вполне хватит, что бы создать с помощью Valve Hammer Editor настоящий шедевр! Они являются основными фигурами в Hammer, более сложных нет. Но вы можете "резать" их, растягивать, перемещать, группировать и тд. для получения более сложной фигуры.

Создав такую фигуру вы можете нанести на нее определенную текстуру, таким образом заставив походить ваше творение на какую нибудь реальную вещь (стена, потолок, шкаф, лампа и тд.).

Энтити (Объекты)

Но этого мало для полноценной карты. На каждой карте есть что то живое: взрывы, техника, патроны, открывающиеся двери, монстры и сам игрок наконец! Этого не создать с помощью фмгур. Все это - отдельные объекты или энтити (Entities). Энтити отвечают за все действия, происходящие на вашей карте.

Типы объектов

Существует два вида объектов: точечные и браш-объекты.

Точечные объекты

Точечные объекты - это объекты которые определены в одной точке и их размеры не могут изменятся. Такие объекты могут быть монстрами, светом, спрайтами и тд. На-пример: env_beam - точечный. Отвечает за луч. Если на карте разместить два таких энтити то мы получим начало и конец луча.

Браш-объекты

Эти объекты создаются из обычных фигур (Брашей) и способны менять свой размер. На-пример: дверь, разрушающаяся стена, стекло и тд являются браш-объектами.

Все вместе

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


Термины

Браш (brush - кисть) - самый мелкий элемент "виртуального мира", из которого строится карта. Может быть любого размера и формы с одним условием: браш не должен имет вогнутостей. Стена, потолок, скалы, небо, ящики - состоят из брашей. Сложные объекты (стулья, столы, грузовики) состоят из множества брашей.
Текстура (texture) - изображение, накладываемое на поверхность браша. Определяет внешний вид браша (так мы знаем, что это деревянный ящик, а не стиральная машина, даже если у обоих одинаковая форма).
Объект (entity) - элемент на карте, который могжет взаимодействовать с игроком во время игры. К объектам относятся двери, окна, лифты, лестницы и т.д. Объекты подразделяются на два вида: браш-объекты (brush-based) и точечные объекты (point-based).
браш-объекты - объекты, созданные из брашей. Изначально создается какое-либо сооружение заданной формы, которое затем бращается в браш-объект с заданными свойствами. К таким объектам относятся двери, стекла, лифты. Для создания, выделите необходимые браши, нажмите кнопку To Entity (обратить в объект) или щелкните правой кнопкой мыши, выберите пункт Tie to Entity и укажите название объекта и его свойства. Для изменения свойств готового объекта, нажмите кнопку To World или правую кнопку мыши, пункт Tie to World.
точечные объекты - объекты, внешний вид/форма которых заранее предопределены. К таким объектам относятся заложники, игроки, а также невидимые объекты, помогающие определить параметры отображения или поведение браш-объектов или окружающего мира.
Браши со специальными текстурами - это браши, покрытые указанной текстурой со всех сторон. К таким брашам можно отнести следующие:
ORIGIN браш - этот браш определяет ось вращения для вращающихся объектов (дверей, например). Такой браш обязателен для вращающихся объектов. В игре не видим в составе объектов.
CLIP браш - этот браш ограничивает движение, не ограничивая поле зрения или полет пуль. В игре не видим.
AATRIGGER браш - этот браш используется для создания многих невидимых браш-объектов, таких как триггеры.
SKY браш - браш, из которого состоит небо. Закройте свой уровень в "коробке" из SKY брашей, и у вас будет готовое небо.
Триггер (trigger) - переключатель. Специальный объект, который активирует событие в ответ на действия игрока. Примером может служить простая кнопка, нажатие на которую включает свет.
Событие (event) - к событиям я отношу действия с тем или иным объектом. Например, отгрытие двери или включение света.
Декали (decals) - специальные текстуры, которые накладываются на поверхность брашей для имитации царапин, дырок от пуль, кровавых пятен и т.д.
Имя (Name) - для некоторых объектов имя необязательно. Но указание имени позволяет активировать эти объекты триггером, а не непосредственно игроком. Для других же, указание имени обязательно. А для каких? Смотрите в справочнике.
Прямой слэш (/) - вообще-то это не понятие, а символ :). Важно использовать прямой слэш, а не обратный (\) при указании пути доступа к тому или иному файлу в свойствах объектов (если таковые присутствуют, например ambient_generic). В противном случае, карта не будет загружаться.


Перемещение в VHE

Вы наверное уже заметили четыре окна в Hammer? Одно 3D и три других 2D изображения. Премещаться по вашей карте вам поможет трехмерное верхнее левое окошко (по умолчанию), остальные же служат для создания карт. Одно - вид сверху, другое с одного бока, третье с другого. Вы конечно можете пользоваться инструментом camera (shift-C) которая находится на панеле инструментов слева, но это не самый лучший выход. Мы вас научим "летать" по вашей карте с помощью Горячих клавиш.

Горячие клавиши перемещения

W - Вперед

S - Назад

A - Влево

D - Вправо

space - Только при нажатом пробеле возможно перемещение. Зажмите пробел и "двигайтесь".

C - Уменьшить

D - Увеличить

Мышка так же играет большую роль. Помните! Активно то окно в котором находится курсор мыши!


Интерфейс

Так выглядит общий вид редактора HAMMER по умолчанию:

Но не обязательно так, настроить его внешний вид не составит ни какого труда.

Рабочий экран составляют : несколько менюшек , панелей , и 4 рабочих поля (вид сверху, сбоку , спереди и перспектива (3D вид).

Теперь рассмотрим панели. 1-ая -панель инструментов:

Стрелка: позволяет выделять объекты .

Лупа: увеличивать/уменьшать изображения в рабочих областях.

Камера: позволит летать по карте (в 3д виде)(любимые кнопки w s a d вам помогут :) .

Лампочка - позволит вставлять на карту ентити (entity).

Белый квадрат: позволяет вставлять на карту браши (brush), префабы (prefab).

Разноцветный квадрат: применить текстуру к стороне объекта.

Краснй квадрат : применить текстуру к выделеному объекту , группе объектов (все стороны объекта(ов) будут окрашены текущей текстурой).

Кружочек на квадрате : применить декаль (decal) (декаль-изображение наносимое на текстуру (следы крови, следы взрывов и т.д.)).

Обрезанный квадрат: обрезать часть объекта (примечание : когда вы закончили с выбором того что надо обърезать нажмите клавишу Enter чтоб применить обрезку). Попробуйте нажать на иконку несколько раз и заметите, что есть несколько вариантов деления фигуры на части.

Пустой квадрат: позволяет манипулировать вертексами (создавать более сложные объекты : например отколовшийся от скалы камень и т.д.) . Попробуйте нажать на иконку несколько раз и заметите, что есть несколько вариантов "растягивания" фигуры.

Квадраты связанные между собой: создание путей (для сингла : пути хождения монстров , поездов. для КС : не рекомендуется использовать. (пример: de_railroad - скажем так, на ней пути почти не глючат, но для начинающих рекомендуем пока эту штуку не трогать) .

Вторая панель :

Сетка: включает - выключает отображение сеточки на видах .

3D - сетка: включает - выключает отображение сеточки на 3д виде.

Сетка минус и сетка плюс: увеличивает - уменьшает сетку на видах.

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

Третья:

1-ая : применить карв (carve) к выделенному объекту. (значение карва рассмотрим позже)

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

Разгруппировка объектов (тоже самое только наоборот ).

4-ая : игнорировать группу (пример: у вас 3 объекта объединены в группу , а выделить вам надо только один из них, но разгруппирововать объекты вы не хотите. тогда вы и должны включить эту опцию)

5-ая, 6-ая и 7-ая: спрятать выделенные объекты (если вы закончили работу с какой либо группой объектов и не хотите загромождать ими карту то их можно "спрятать").

Скрыть все объекты кроме выделеных (см выше).

Показать все спрятанные оъекты .

8-ая, 9-ая и 10-ая: вырезать выделенное в буфер.

Копировать выделенное в буфер.

Вставитьиз буфера.

11-ая и 12-ая: применить кардонное выделение (для компиляции какого либо участка карты , а не целиком) .

Редактировать границы кардонного выделения.

13-ая: при включённой можно выделить объект только выделив/выбрав его крестик.

14-ая: включает-выключает авто выбор объектов.

15-ая: если она выключена то при передвижении объекта текстуры на нём будут сдвигаться, включить обязательно (но не желательно в том случае если вы красите разные браши одной тайлищайся(текстура при соединении самой с собой не видно границ) текстурой).

16-ая: замечательное нововведение ВК 3.3, позволяет как и в предыдущем случае, прикреплять текстуру к объекту "намертво" , когда вы пытаетесь покрутить объект, поставить его ребром и т.д.

17-ая: запустить карту (поправде запустить компиляцию).

p.s. рекомендуем включить всё как на рисунке.

Теперь рассмотрим панель работы с объектами:

toWorld: эта кнопка обращяет все выделенные браш-энтити в обычные браши. Рассмотрим на примере - если вы хотите чтоб префабы ящиков не двигались и не разбиались то их надо отправить toWorld.

toEntity: сделать из выделенного объекта энтити.

при создании брашей можно задать им форму . В поле objects . Прямоугольник или цилиндр , конус или арка решать вам :)

faces - стороны фигуры. Указываются только на конусе и цилиндре.Чем их больше тем цилиндр круглее, но не рекомендуем задавать много сторон, так как приведет к плачевным последствиям.

Categories: категории :) Приметивы , сложные объекты , префабы , префабы ящиков и ваши префабы... всё там.

Create Prefab - создать из выделенных объектов префаб (если вы очень часто работаете с группой сложных объектов то можете объединить их в префаб)

если вы в категории с префабами, то есть ещё одна кнопка Insert Original Prefab - вставить префаб оригинальных для него размеров а не заданных вами.

Следующая панель : Текстуры

Достаточно простая панель.

Texture group : здесь можно выбрать либо все текстуры либо отдельный WAD.

Curent texture: текущая текстура.

Browse... : найти текстуру задав название.

Replace... : меню замены текстур (указываем каую текстуру заменить на какую и происходит авто замена).

Следующая панель :работа с группами визуализации.

Здесь будут отображатся, спрятанные вами, виз группы.

Apply: Эта кнопка скрывает видимую группу и в окне виз групп появляется маленькая рука напротив скрытой группы.

Edit: Дает возможность редактирования виз групп.

Mark: При нажатии этой кнопки группа объектов станет видимой.

Purge: Удалить группы не содержащие в себе объектов.


Настройка VHE

Перед вами конфигурационное окно VHE. Его можно вызвать через меню Tools, но программа сама попросит вас настроить при первом запуске, так что лучше настроить и потом ничего там не трогать (исключение: закладка textures).

Итак, перед нами шесть закладок:

General: Тут ничего нет интересного за исключением "кол-ва отмен" (Undo levels) и флажка "Allow grouping/ungrouping while Ignore Groups is checked". Этот влажок допускает группировку объектов при включенном игнорировании групп.

2D views:

Тут тоже нечего не нужно трогать. Можете только для удобства убрать флажок с "Use Visgroup colors for objects lines", так же в разделе "Grid" -> size поставьте минимум, это размер сетки. Ползунок "Intensity" отвечает за интенсивность контраста сетки (чем больше тем белее сетка).

3D views:

Тут меняется скорость движения камеры и некоторые другие параметры. Оставьте все как есть.

Textures:

Здесь все просто. Это окно служит для добавления библиотек с текстурами. Чаще всего эти файлы (*:WAD) находятся или в директории мода или в папке /valve/.

Game Configurations:

Cоздайте новую конфигурацию (Edit). Game data files - это путь к ФГД (*:fgd) файлу. Ниже следует указать пути которые требуются для правильной работы. Стоит отметить, что RMF Directory это путь к папке где лежат иходники карт.

Build Programs:

В этом окне стоит указать пути к каждой программе компиляторов соответственно. Вот собственно и все, что требует установка.


Текстуры

В этом параграфе мы рассмотрим как накладывать текстуры. Если же вас интерисует как делать свои текстуры , ВАДы то може обратиться к ФАКу Ники.

Основы текстурирования были описаны в первых главах. Так шо рассмотрим продвинутое текстурирование.

По нажатию кнопки Toggle texture application (разноцветный куб) вы узреете вот это :

Начнём рассмотрение.

Scale: короче умножение . (пример : размер объекта 128 по иксу а размер текстуры 64 по иксу , в этом случае надо ставить 2.00 )

Shift: сдвиг текстуры (сдвиг он и в Африке сдвиг)

Rotation: повернуть текстуру на угол . (ну тут и объяснять нечего)

Justify: крутое нововведение ВК 3.3 : L - выровнят текстуру по левому краю объекта R - по правому T - по верхнему B - по нижнему C - по центру . А вот Fit сам выставит нужный scale и shift : короче подгонит размер текстуры под размер объекта. Полезная штука чёрт побери.

Align : можно так сказать развернуть текстуру , вобщем сами поймёте :)

Texture group : выбрать все текстуры или отдельный ВАД.

Current texture : текущая текстура , разумеется

Hide mask : короче когда вы выделяете сторону (ы) объекта (ов) то они становятся красными , и вот эта кнопка убирает красноту но не снимает выделение.

Apply : применить . После того как вы что либо сделаете нажмите эту кнопку чтоб применить изменения.

Browse: найти текстуру по имени.

replace : заменить . К примеру вы хотите заменить на вашей карте все текстуры aaatrigger на crate23.

Mode : режим . Советую не трогать . Ну это режимы работы с текстурами (мало полезно).


Карты CS

Что нужно чтоб сделать карту CS_

Что нужно чтоб сделать карту CS_xxx?

Вопервых нужно желание , во вторых вот эти энтити (entity) :

1. info_player_start - место появление контров (на карте их должно быть ровно 10)

2. info_plaer_deathmatch - место появление тероров (на карте их должно быть ровно 10)

3. hostage_entity - место появление заложников (минимум одно)

4. info_hostage_rescue - место где спасаются заложники (минимум одно)

4a. Сделайте браш (brush) , затестурируйте его полностью текстурой aaatrigger (это спец. текстура) и отправьте toEntity (это кнопка такая) , и выберите из всех энтитей func_hostage_rescue. Вот и всё. У вас есть место спасения заложников таких размеров каких хотите. (служит как альтернатива info_hostage_rescue)

и ради прикола можете поставить info_map_parameters (там можно указать кто может покупать оружие а кто нет)

Вот и всё , всё просто как белый день. естественно всё это вы должны сбалансировано разместить на карте .

Важное дополнение : оружие можно покупать тока в buy zone по дефолту она распалорена прям на месте появления , но если вы хотите сделать её больше то вот что:

Сделайте браш (brush) , затестурируйте его полностью текстурой aaatrigger (это спец. текстура) и отправьте toEntity (это кнопка такая) , и выберите из всех энтитей func_buyzone. Вот и всё. У вас есть место покупки оружия таких размеров каких хотите. (главное укажите для какой это команды вы забабахали)


Карты DE

Что нужно чтоб сделать карту DE_

Что нужно чтоб сделать карту DE_xxx?

Хех , вот что вам нужно знать :

1. info_player_start - место появление контров (на карте их должно быть ровно 10)

2. info_plaer_deathmatch - место появление тероров (на карте их должно быть ровно 10)

3. info_bomb_target - место где надо закладывать бомбу (минимум одно , на de_dust - 2)

и ради прикола можете поставить info_map_parameters (там можно указать кто может покупать оружие а кто нет и указать радиус взрыва , по дефолту 500)

Важное дополнение : оружие можно покупать тока в buy zone по дефолту она распалорена прям на месте появления , но если вы хотите сделать её больше то вот что:

Сделайте браш (brush) , затестурируйте его полностью текстурой aaatrigger (это спец. текстура) и отправьте toEntity (это кнопка такая) , и выберите из всех энтитей func_buyzone. Вот и всё. У вас есть место покупки оружия таких размеров каких хотите. (главное укажите для какой это команды вы забабахали)

Есть ещё один прибомбас func_bomb_target . Там можно указать цель когда взрывается бомба. Вроде того что как на дасте : ящики тоже рушатся при взрыве. Но это всего лишь прибомбас а не необходимость.


Карты ES

Что нужно чтоб сделать карту ES_

Что нужно чтоб сделать карту ES_xxx?

Вообще не популярный класс карт.

1. info_player_start - место появление контров (на карте их должно быть ровно 10)

2. info_plaer_deathmatch - место появление тероров (на карте их должно быть ровно 10)

3. info_map_parameters - обязательно поставьте (сделайте так чтоб оружие могли покупать тока контры)

4. func_escapezone - ставится как func_vip_safetyzone из предыдущего параграфа (место спасения тероров . минимум одно)

5. armory_entity - оружейная , раз тероры оружие не покупают , то пусть они его находят. (написать чтоль минимум ноль ?)

Важное дополнение : оружие можно покупать тока в buy zone по дефолту она распалорена прям на месте появления , но если вы хотите сделать её больше то вот что:

Сделайте браш (brush) , затестурируйте его полностью текстурой aaatrigger (это спец. текстура) и отправьте toEntity (это кнопка такая) , и выберите из всех энтитей func_buyzone. Вот и всё. У вас есть место покупки оружия таких размеров каких хотите. (главное укажите для какой это команды вы забабахали)

Как заключение раздела о типах карт хочу сказать о гибридах. Гибрид это такой тип карт в котором совмещены несколько сценариев , восновном получается неразбериха , ну представьте себе такое : команда Т бежит из тюрьмы со взрывчаткой С4 , и как тока они набрали в оружейной оружия в тюрьму заваливается отряд СТ с криками гре место спасения ВИПа и где эти чёртовы заложники . Найдя в одной из камер заложников они обнаруживают что их ВИП исчез . Он решил отправиться на поиски места спасения один но по дороге был схвачен отрядом Т ,которые тоже искали это место спасения . Злобные Т свызали випа прилепи ему к жопе С4 , но достав именной нож ВИП сумел рвсправиться с Т и побежал искать СТ , обнаружив что СТ нашли заложников ВИП на мгновение обрадовался , но сразу вспомнил что у него в жопе С4 . Хотел он , было, попросить одного из СТ разминировать себя как вдруг рванул и унёс на тот свет всех СТ. В итоге : Hostages has been resqued. Target sucsesfully bombed. Vip has been assasinated. и Terorists has escaped в одном флаконе. Но правда есть и достойный пример : карта cs/de_rush .


инструменты

"мы пользуемся именно ими"

Итак, господа, вдоволь наигравшись на стандартных и самодельных буржуйских картах, вы задалисьсовершенно справедливым вопросом: «А почему бы мне ни сделать карту в виде торговогокомплекса/школы/больницы/еще-чего-нибудь в моем городе? Зачем мне все эти ненавистные русскомувзгляду пейзажи?» И вы абсолютно правы! Сегодня, когда западная культура заполнилакаунтестрайковские просторы, когда простой русский геймер вынужден робко обтираться срединезнакомого и непонятного ему окружения, нам нужны свои собственные российские карты, где русский игрок смог бы высоко поднять свою голову, распрямить плечи и показать всем кузькину мать во всю ширь своей натуры. Ага, я вижу, у вас уже руки чешутся засесть за компьютер и начать построение своей собственной военной базы! Куда вы так быстро побежали?! Вам ещепонадобится несколько программ для этого! Например, вот этих!

1. VALVe Hammer Editor (Valve Software)

VALVe Hammer Editor – это программа, с помощью которой создается сама карта. Из обыкновенных блоковсоздается геометрия – стены, дома, улицы, а также объекты – двери, окна, точки появления террористов, спецназовцев и глупых заложников. В ней, также, вы можете определять материал, из которого создан тот или иной объект (а попросту – текстуру). Последняя версия VALVe Hammer Editor – 3.4 – предназначена для создания карт исключительно для Half-life и модификаций для этой игры (в первую очередь, Counter-Strike).

Скачать (1,91 Mb):
poligon.counter-strike.ru
ftp.download.com

2. Cstrike FGD (Gooseman & Cliffe)

Это файл, содержащий информацию об объектах и правилах модификации Half-life – Counterstrike.С помощью этого файла настраивается Worldcraft чтобы в результате можно было создать карту сзаложниками и террористами, а не с десантниками и монстрами. Этот файл входит в комплектCounterstrike (начиная с версии 7.0).

Читать:
Как настроитьWorldcraft

Скачать (85,1 Kb):
poligon.counter-strike.ru

3. Cstrike Expert FGD (Tim Holt aka Waldo)

Это расширенный и усовершенствованный файл для создания карт для Half-life – Counterstrike. Используется для профссионального создания карт, содержит большее коичество настроек объектов. Если вам это не надо, воспользуйтесь обычным Cstrike.FGD, однако экспертные настройки вам в любом случае не помешают.

Скачать (118 Kb):
poligon.counter-strike.ru

4. Wally (Ty Metthews & Neal White III)

Эта программа позволит вам просматривать WAD файлы, содержащие текстуры к стандартным и самодельным картам, а также добавлять/удалять/создавать новые текстуры и WAD файлы. Каждый левел-дизайнер, достигнув определенного уровня, обращается к созданию и использованию собственных не стандартных текстур, и Wally – это программа, которая позволяет оптимизироватьработу с текстурами. Начиная с версии 152b программа имеет встроеный визард для создания цветных декалей, распыляемых балончиком на стенах.

Скачать (1,09 Mb):
poligon.counter-strike.ru

5. Zoner’s Half-life Compiling Tools (Sean'Zoner' Cavanaugh)

В комплекте с Worldcraft поставляются стандартные программы компиляции карты из исходников вготовый .BSP файл. Zoner расширил возможности стандартных компиляторов, добавил более удобный интерфейс, более подробное описание ошибок и т.д. Авторы всех известных карт пользуютсяименно этими компиляторами.

Читать:
Отличие ZHLT отстандартных Quick Tools

Скачать (530 Kb):
poligon.counter-strike.ru

6. SprView (Mach III Enterprises)

Эта программа предназначена для просмотра спрайтов. Worldcraft 3.3 умеет показывать спрайты вокне 3D, но гораздо удобнее воспользоваться утилитой SprView, чтобы выбрать именно тот спрайт,который вам нужен.

Скачать (34 Kb):
poligon.counter-strike.ru

7. PakExplorer (QuakeStuff)

Без этой программы невозможно создать ни одной более или менее приличной карты. Файл pak0.pakв директории Half-life содержит более 300 мегабайт запакованных ресурсов: варианты неба,спрайты, звуки, модели и т.д.

Скачать (86 Kb):
poligon.counter-strike.ru

8. Half-life Model Viewer (chUmbaLum sOft)

Эта программа не так важна для создания карт, как для создания собственных моделей иперсонажей в игре. Тем не менее, в картах для Counterstrike тоже можно найти применениемоделям. Пример – курицы на карте cs_italy или вертолет на as_oilrig. А вы думали,спасительный вертолет сделан из брашей?! А вот и нет! Чтобы посмотреть, какие стандартныемодели имеются у вас в наличие, используйте Model Viewer.

Скачать (111 Kb):
poligon.counter-strike.ru

9. Milkshape 3D 1.5 (chUmbaLum sOft)

Самая простая и небольшая программа для создания моделей. Однако с ее помощью можно создать практически любую модель для Halflife, будь то винтовка или цыпленок на карте.

Скачать (965 Kb):
poligon.counter-strike.ru

10. WinBSP 1.3

Эта программа позволяет декомпилировать готовые карты (в том числе и стандартные), в исходныйформат MAP. Я не думаю, что кто-то из вас захочет использовать эту программу для нарушенияавторских прав, но, тем не менее, считайте себя предупрежденными об ответственности. С точкизрения дизайнера уровней, эта программа полезна для самообучения. Вы можете декомпилировать туили иную карту и посмотреть, как технически реализованы интересующие вас моменты.

Скачать (116 Kb):
poligon.counter-strike.ru

11. textract

Самая желанная программа в арсенале маппера-эстета; она позволяет извлекать текстуры из .bsp файлов. В нашей стране в связи с крайне ограниченным количеством цифровых фотокамер и сканеров, такая программа, как говорится, "a must-have" в арсенале любого картостроителя.

Скачать (15 Kb):
poligon.counter-strike.ru

12. Terrain Generator 2.00 (Ryan "NEMESIS" Gregg)

Данная программа позволяет вам создавать природные ландшафты в удобном редакторе, а затем использовать их при создании своей карты.

Скачать (3,49 Mb):
poligon.counter-strike.ru


Диалоговые окна

Теперь разберем диалоговые окна VALVe Hammer Editor.

В редакторе существуют следующие окна:

  • Окно Check For Problems
  • Окно Entity Report
  • Окно Face Properties
  • Окно Go To Brush
  • Окно Hollow
  • Окно Map Information
  • Окно Object Properties
  • Окно Prefab Factory


Check For Problems

Это окно выглядит так:

Гарячие клавиши: ALT-P

С помощью такого окна вы можете увидеть какие и где вы допустили грубые ошибки. К сожалению только грубые так как более мелкие ошибки это окно не показывает (но их возможно найти при компиляции).

При выборе в окне одной любой ошибки будут доступны три кнопки:

Go to error - показывает и выделяет на 2D окнах местоположение ошибочного браша или энтити.

Fix - фиксит ошибку (не советуем, так как в большинстве случаев браш или энтити просто удалятся)

Fix all (of type) - профиксить весь тип ошибки.


Entity Report

Это окно выглядит так:

Это окно является менеджером всех объектов, использованных на вашей карте.

Вроде ничего сложного здесь нет.


Face Properties

Это окно выглядит так:

Гарячие клавиши: Shift+A

Это окно предназначено для управления текстурами.

Параметр scale x\y предназначен для растягивания текстуры по соответственным осям координатной плоскости.

Параметр shift x\y нужен для "подгона" или перемещения текстуры по осям.

Rotqtion - вращение (в градусах)

Justify - выравнивание текстуры по центру, левому боку, по низу и тд.

Align - переворот текстуры на другую сторону

Texture group - ВАД файл из которого взята текстура

Hide mask - не выделять визуально текстуру (не закрашивать в красный цвет)

Browse... - менеджер всех подключенных текстур

Replace - Заменяет одну текстуру на другую

Mode: - различные способы наложения текстур


Go To Brush

Это окно выглядит так:

Гарячие клавиши: CTRL-Shift-G

Иногда при компиляции может выпасть к примеру такая ошибка:

Entity #, Brush #: plane with no normal

То есть нам говорят, что браш №# или энтити №# не правильны. Тогда мы вызываем такое окошко и ищем с помощью номера браш или энтити. Соответственно если ищем браш, то в поле энтити нужно поставить 0 и наоборот.


Hollow

Это окно выглядит так:

Гарячие клавиши: CTRL-H

Это окно дает нам возможность "опустошить" любой браш заданой толщиной стенок. То есть:

Заданое число будет ровнятся толщине стенки.


Map Information

Это окно выглядит так:

Это окно дает некоторую статистическую информацию по данной карте.


Object Properties

Это окно выглядит так:

Обычный вид и

сложный вид

Гарячие клавиши: Alt+Enter

Будем рассматривать обычный вид ибо сложный на пока не нужен. Итак перед нами три закладки:

Class info: эта закладка показывает свойства определенного объекта (естественно только энтити). Параметр Angle задает направление объекта (его взгляд, движение и тд.). В поле Attributies представлены атрибуты (возможности) объекта.

Flags: Тут находятся параметры объекта ввиде да\нет.

Visgroup: показывает принадлежность объекта к определенной визгруппе.


Prefab Factory

Это окно выглядит так:

Это окно подобно окну Entity Report. Это окно тоже является в своем роде менеджером для префабов


Объекты

Данный документ содержит описание объектов (entities), используемых при создании карт для Counter-Strike. Подробное описание этих объектов на английском языке можно найти на Valve Editing Resource Center. Справочник содержит описание объектов, используемые только для Counter-Strike начиная с версии 1.0-1.1 на основе halflife-cs_expert.fgd, поэтому вы не найдете объектов для монстров и аналогичных атрибутов однопользовательской игры. Если вы не найдете у себя какой-либо объект, представленный в настоящем справочнике, не переживайте! Помните, de_dust был создан с использованием старого counterstrike.fgd и, тем не менее, остается одной из лучших имеющихся карт для Counter-Strike. В справочнике представлена информация о самих объектах (на то он и справочник), о том, как создать тот или иной эффект.

Итак, объекты существуют разных видов:

Объекты Env_
Объекты Func_
Объекты Game_
Объекты Info_
Объекты Trigger_
Дополнительные объекты
Параметры отображения объектов

С уважением, deadman.


Env_ объекты

Env_ объекты, используемые в Counter-Strike.

env_beam
env_beverage
env_blood
env_bubbles
env_explosion
env_funnel
env_global
env_glow
env_laser
env_message
env_render
env_shake
env_shooter
env_sound
env_spark
env_sprite

env_beam - точечный объект

Что это такое
Env_beam используется для создания различных эффектов луча, от электрического до лазерного.
Name (targetname) – Если Вы хотите активировать данный объект другим триггером, необходимо указать имя объекта.
Start Entity (LightningStart) – луч рисуется между двух точек (объектов). Данный параметр указывает на начальный объект. Для статичного луча достаточно использовать info_target.
Ending Entity (LightningEnd) – Данный параметр указывает на конечный объект. Для статичного луча достаточно использовать info_target.
Render FX (renderfx) – смотри параметры отображения для информации по Render FX.
Brightness (1 - 255) (renderamt) – данный параметр устанавливает яркость луча. Он работает также как и прозрачность – чем выше уровень яркости, тем отчетливее виден луч.
Beam color (R G B) (rendercolor) – цвет луча. Используйте значения RGB для установки цвета луча.
Radius (Radius) – х.з. Надо поэкспериментировать.
Life (seconds 0 = infinite) (life) – данный параметр устанавливает время активности луча в секундах. Чтобы сделать луч все время включенным, установите параметр в ноль (0).
Width of beam (BoltWidth) – ширина луча. Может быть от 0 до 255. В игре ширина луча составит n * 0.1 пиксель (чтобы сделать луч шириной 10 пикселей, истановите данный параметр в 100).
Amount of noise (0 - 255) (NoiseAmplitude) – Определяет тип луча. Используется для эмуляции электрической дуги. Значение 0 создаст обычный ровный лазерный луч.
Sprite name (texture) – спрайт для луча (по умолчанию это sprites/laserbeam.spr).
Texture scroll rate (TextureScroll) – скорость смены кадров текстуры спрайта.
Frames per 10 seconds (framerate) – скорость анимации текстуры луча.
Starting frame (framestart) – начальный кадр. Позволяет начинать анимацию луча с разных кадров. Полезно, когда есть несколько лучей рядом, чтобы сделать их немножко разными.
Strike again time (secs) (StrikeTime) – время в секундах до повторения луча (используется в том случае, если луч активен не постоянно = life > 0).
Damage / second (damage) – повреждения за секунду в случае попадания в игрока.

Флаги
Для данного объекта есть несколько флагов
Start On (1) – начинать включенным. Если указано имя (Name), луч по умолчанию отключен в начале уровня. Чтобы сделать его включенным, используйте Start On.
Toggle (2) – переключаемый. В случае активации, можно включать и выключать луч много раз
Random Strike (4) – случайный удар. При активации данного флага, луч будет повторяться через случайные промежутки времени от 0 до указанной задержки (Strike again time).
Ring (8) – не используется
Start Sparks (16) – если активирован, из объекта Start Entity будут сыпаться искры.
End Sparks (32) – тоже, только сыпаться будут из Ending Entity.
Decal End (64) – если активирован, луч будет оставлять следы ожога на цели.
Shade Start (128) – если активирован, начало луча будет затенено.
Shade End (256) – тоже, только затеняется конец луча.
Примечание: Некоторые флаги пока глючат (random strike, ring, start sparks, end sparks, and shade end). Выясню почему, скажу.
Примечания:
Луч можно сделать случайным. Если Вы не укажите конечный объект, луч будет выходить из начального объекта в случайном направлении пока не ударит в стену. Можно использовать это для телепортеров, а можно и для молний, как это и сделали в новой карте в КС 6.5. Можно вообще не указывать ни начальный, ни конечный объекты, что приведет к возникновению совершенно случайных лучей.

См. также:
env_laser

env_beverage - точечный объект

Что это такое
При активации, env_beverage создает банку с напитком указанного типа, которая вываливается с характерным звуком. Напиток восстанавливает 1 пункт здоровья.
Name (targetname) – имя. Присвойте объекту имя, чтоб его можно было активировать.
Capacity (health) – емкость. Сколько банок всего можно вытрясти. Как только все банки забраны, бесполезно трясти еще.
Beverage Type (skin) – вид напитка. Установите значение от 0 до 6 чтобы получить следующие банки: Coca-Cola, Sprite, Diet Coke, Orange, Surge, Moxie и случайный вид.

env_blood - точечный объект

Что это такое
Объект env_blood позволяет симулировать кровь как при повреждении/попадании…
Name (targetname) – имя. Данный объект должен иметь имя чтобы его можно было включить.
Blood color (color) – цвет крови. 0 – красная, 1 – желтая.
Amount of blood (damage to simulate) (amount) – количество крови. Чем больше значение, тем больше крови!

Флаги
Random Direction () – разбрасывает кровь случайным образом (иначе будет брызгать в сторону, определяемую углом объекта (angle).
Blood Stream () – поток крови. Вместо брызг и ошметков мозгов кровь будет литься струей.
On Player () – вместо разбрызгивания крови из объекта env_blood, кровь будет литься из игрока, который активирует объект.
Spray Decals () – кроме эффекта разбрызгивания крови, на стенах будут оставаться следы.

env_bubbles - браш-объект

Что это такое
Объект env_bubbles создает область с всплывающими пузырьками.
Name (targetname) - имя. Если присвоить объекту имя, его можно будет активировать и деактивировать с помощью триггера.
Bubble Density (density) - плотность. количество создаваемых пузырьков.
Bubble Frequency (frequency) - частота возникновения. чем выше этот параметр, тем чаще будут возникать пузырьки.
Speed of Current (current) - скорость течения. чем выше скорость, тем быстрее будут двигаться пузырьки в направлении, определяемым углом объекта. по умолчанию пузырьки двигаются снизу вверх.

Флаги
Объект env_bubble имеет один флаг: Start Off (1). Если его включить, нужно будет активировать объект env_bubble триггером, чтобы получить эффект пузырьков.

env_explosion- точечный объект

Что это такое
Объект env_explosion позволяет Вам устраивать взрывы на карте когда и где Вы захотите.
Name (targetname) - имя. обязательный параметр для этого объекта чтобы можно было активировать.
Magnitude (iMagnitude) - мощность взрыва. определяет силу/радиус взрыва

Флаги
No Damage (1) - не причиняет вреда
Repeatable (2) - можно взрывать несколько раз
No Fireball (4) - нет вспышки
No Smoke (8) - нет дыма
No Decal (16) - не оставляет следов на стенах/земле
No Sparks (32) - без искр

env_funnel - точечный объект

Что это такое
Объект env_funnel создает кучу спрайтов-частиц, которые появляются разрозненными, а потом все собираются в одной точке (в том месте, где находится сам объект). Единственным параметром является имя – Name (targetname) – так как объект нужно активировать триггером. Объект можно активировать только один раз.

Единственны флаг – Reverse (1) – в обратном порядке – позволяет создать эффект взрыва (частицы разлетаются). Жалко только цвет поменять нельзя.

env_global - точечный объект

Что это такое
Объект env_global используется для запоминания информации на уровнях.
Свойства:
Name (targetname) – имя. Обычно объект env_global нужно активировать для активации установок. (Вы можете обойти это, установив флаг Set Initial State, см. ниже). Присвойте объекту имя и активируйте его кнопкой.
Global State to Set (globalstate) – имя глобальной переменной. Это те установки, которые вы хотите изменить. Это также значение для других объектов, которые запрашивают глобальные установки (Global State to Read) (например multisource).
Trigger Mode (triggermode) – режим переключения. С его помощью устанавливаются значения переменных в момент активации объекта env_global. Значения ранжируются от 0 до 3 (off (выкл), on (вкл), dead (труп) и toggle(переключить) соответственно).
Примечание:
Если вы установите режим переключения Trigger Mode в «переключать» toggle, каждый раз при активации объекта env_global другие объекты, использующие глобальные установки, будут переключаться вкл/выкл, начиная с начального значения initial state (см. ниже). Значение труп используется для монстров.
Initial State (initialstate) – начальное значение. Устанавливает начальное значение глобальных переменных. От 0 до 2, со значениями выкл, вкл и труп.

Флаги
Только один: Set Initial State – установить начальное значение. Если установить этот флаг, глобальные установки активируются в момент загрузки уровня.

См. также
multisource

env_glow - точечный объект

Что это такое
Объект env_glow напоминает env_sprite, но используется исключительно для создания дымки/размытия вокруг источников света. Чем дальше вы от источника света, тем более расплывчатым становится эффект.
Name (targetname) – имя. Как и в других объектах, используется для активации. Я больше не буду об этом говорить, буду указывать только тогда, когда имя обязательно. Договорились?
Примечание:
Вы не можете переключать (вкл/выкл) размытие, но вы можете использовать объект env_sprite для создания такого же эффекта, который в последствии можно включать/выключать.
Rendering Properties – параметры отображения.
Примечание:
Для объекта env_glow параметр Render Mode (rendermode) должен быть установле в Glow (3). Значение FX Amount (renderamt) определяет прозрачность дымки.
path/filename.spr of sprite (model) – файл со спрайтом дымки. Всегда должно быть в формате sprites/spritename.spr. Обратите внимание на слэш (/). Работать не будет, если поставите бэкслэш (\)!

См. также:
env_sprite

env_laser - точечный объект

Что это такое
Объект env_laser похож на env_beam, но с некоторыми отличиями.
Name (targetname) – если есть имя, объект появляется выключенным, если только не установить флаг Start On – начинать включенным.
Target of laser (LaserTarget) – цель лазера. Сам лазер будет вылетать из объекта env_laser в объект, указанный в этом поле.
Примечание:
Обычно в качестве цели используют объект info_target, но можно юзать и другие объекты. Любой объект с именем может служить мишенью. Если вы используете объект-браш, необходимо вкличить в объет браш с текстурой ORIGIN, центр которого (браша) и будет мишенью для лазера.
Если у вас есть несколько объектов с именем мишени, лазер будет случайным образом перескакивать на них. Однако начало лазера всегда в одном и том же месте – в объекте env_laser.
Render FX (renderfx) – см. параметры отображения.
Brightness (1 - 255) (renderamt) – яркость луча. Больше – ярче.
Beam color (R G B) (rendercolor) – цвет луча в RGB.
Width of beam (width) – ширина луча (от 0 до 255). В игре равняется (n * 0.1) пикселей.
Amount of noise (0 - 255) (NoiseAmplitude) – Определяет тип луча. Используется для эмуляции электрической дуги. Значение 0 создаст обычный ровный лазерный луч.
Sprite name (texture) – спрайт для луча (по умолчанию это sprites/laserbeam.spr).
End sprite (EndSprite) – конечный спрайт. Этот спрайт будет рисоваться на конце лазерного луча.
Texture scroll rate (TextureScroll) – скорость смены кадров текстуры спрайта.
Starting frame (framestart) – начальный кадр. Позволяет начинать анимацию луча с разных кадров. Полезно, когда есть несколько лучей рядом, чтобы сделать их немножко разными.
Damage / second (damage) – повреждения за секунду в случае попадания в игрока.

Флаги:
Start On (1) – начинать включенным. Если указано имя (Name), луч по умолчанию отключен в начале уровня. Чтобы сделать его включенным, используйте Start On.
Start Sparks (16) – если активирован, из объекта Start Entity будут сыпаться искры.
End Sparks (32) – тоже, только сыпаться будут из Ending Entity.
Decal End (64) – если активирован, луч будет оставлять следы ожога на цели.

См. также:
env_beam

env_message - точечный объект

Что это такое
Объект env_message позволяет выводить текст на экран.
Инструкции по использованию:
1. Установите объект env_message на карту.
2. Присвойте имя targetname.
3. Используя PakExplorer, откройте пак-файл в директории Valve, найдите titles.txt. Там есть все сообщения, которые можно использовать. Выглядят они так:
CR27
{ Black Mesa Research Facility
Black Mesa, New Mexico
}

4. В объекте env_message, установите Message Name (message) – сообщение – CR27.
Я не думаю, что этот объект кому-то интересен и полезен. Если что – пишите, разберемся.

env_render - точечный объект

Что это такое
Объект env_render позволяет изменять параметры отображения практически всех объектов в игре (как самодельных, так и стандартных).
Самый простой пример – создание исчезающей стены.
1. Создайте стену (func_wall) и присвойте ей имя Name (targetname) – crate1.
2. Поставьте объект env_render рядом со стеной. Присвойте ему имя Name – crate1_render. Установите render mode в texture (2) и fx amount в 0.
3. Создайте func_button и установите ее целью target – crate1_render.
Если нажать кнопку, стена «исчезнет».

См. также:
Rendering Properties – параметры отображения

env_shake - точечный объект

Что это такое
Объект env_shake заставляет экран трястись, симулирую сейсмическую активность.
Name (targetname) – обязательный параметра, нужно активировать.
Amplitude (amplitude) – амплитуда – размер сдвигов экрана.
Frequecy (frequency) – частота – 0.1 = толчок, 255.0 = серьезная встряска.
Effect radius (radius) – радиус землетрясения.
Duration (duration) – длительность землетрясения в секундах.

См. также:
func_tankmortar

env_shooter - точечный объект

Что это такое
Объект env_shooter позволяет выбрасывать различные модели или спрайты. Вам необходимо указать модель или спрайт для выбрасываемых кусков.
Name (targetname) – имя (обязательно).
Number of gibs (m_iGibs) – количество кусков, выбрасываемых за один раз (одну активацию).
Delay between shots (delay) – задержка между кусками.
Gib velocity (m_flVelocity) – скорость кусков.
Course variance (m_flVariance) – отклонение траектории полета кусков от прямой.
Gib life (m_flGibLife) – продолжительность жизни кусков прежде чем они растают.
Rendering Properties – см. параметры отображения. Определяют параметры отображения для каждого спрайта.
Model or Sprite name (shootmodel) – определяет модель или спрайт для кусков, вылетающих из объекта env_shooter. Должен быть в формате models/modelname.mdl или sprites/spritename.spr.
Material sound (shootsounds) – звук, издаваемый кусками при столкновении с землей.
None (-1) – нет звука
Glass (0) – стекло
Wood (1) – дерево
Metal (2) – металл
Flesh (3) – плоть
Concrete (4) – бетон
Gib Sprite Scale (scale) – масштаб выбрасываемого спрайта
Gib Skin (skin) – шкурки для моделей (результат зависит от модели).

Флаги:
Только один: Repeatable (1 – повторяемый). Можно активировать несколько раз.

См. также:
gibshooter

env_sound - точечный объект

Что это такое
Объект env_sound позволяет изменять способ проигрывания звуков.
Radius (radius) – радиус вокруг объекта, который определяет область переключения. Когда игрок заходит в эту область, звук меняется в зависимости от установок типа помещения Room Type.
Room Type (roomtype) – тип помещения со следующими свойствами:
0 = Normal (off) – выкл
1 = Generic – обычный
2 = Metal Small – маленькое, с металлическими стенами
3 = Metal Medium – среднее, с металлическими стенами
4 = Metal Large – большое, с металлическими стенами
5 = Tunnel Small – маленький туннель
6 = Tunnel Medium – средний
7 = Tunnel Large – большой
8 = Chamber Small
9 = Chamber Medium
10 = Chamber Large
11 = Bright Small
12 = Bright Medium
13 = Bright Large
14 = Water 1
15 = Water 2
16 = Water 3
17 = Concrete Small
18 = Concrete Medium
19 = Concrete Large
20 = Big 1
21 = Big 2
22 = Big 3
23 = Cavern Small
24 = Cavern Medium
25 = Cavern Large
26 = Weirdo 1
27 = Weirdo 2
28 = Weirdo 3
Попробуйте разные значения на слух и выберите то, что вам подходит.
Примечание:
Когда игрок прошел через область действия объекта env_sound, установки звука изменяются и остаются в действии куда бы он не пошел. Необходимо переключить их обратно в нормальные с помощью другого env_sound с типом помещения Room Type = 0 (Normal).

См. также:
ambient_generic
speaker

env_spark - точечный объект

Что это такое
Объект env_spark создает электрическую искру через промежутки времени, определенные свойством MaxDelay.
Name (targetname) – имя.
MaxDelay (MaxDelay) – максимальная задержка между искрами.

Флаги:
Toggle (32) – переключать. Когда установлен, искры можно включать/выключать.
Start On (64) – если есть имя, установите этот флаг, чтобы объект появлялся включенным.

env_sprite - точечный объект

Что это такое
Объект env_sprite позволяет вставлять спрайты в уровень.
Name (targetname) – имя. Позволяет включать/выключать спрайт.
Rendering Properties – параметры отображения.
Примечание:
Чтобы избавиться от черной каемки вокруг спрайта, измените Render Mode в Additive или Glow.
Framerate (framerate) – если спрайт анимированный (например sprites/steam1.spr), этот параметр контролирует количество кадров в секунду. По умолчанию = 10.
path/filename.spr of sprite (model) – файл со спрайтом дымки. Всегда должно быть в формате sprites/spritename.spr. Обратите внимание на слэш (/). Работать не будет, если поставите бэкслэш (\)!
Sprite Scale (scale) – масштаб спрайта. По умолчанию = 1:1. (Если хотите изменить масштаб, поставьте Render Mode в Additive)
Примечание:
Угол (angle) объекта env_sprite определяет ориентацию спрайта.

Флаги:
Start On (1) – начинать включенным. Если указано имя (Name) объекта, он по умолчанию невидим в начале уровня. Чтобы сделать его видимым, используйте Start On.
Play Once (2) – проигрывать только один раз. для анимированных спрайтов, этот флаг контролирует повтор анимации.
См. также:
env_glow


Func_ объекты

Func_ объекты, используемые в Counter-Strike

func_bomb_target
func_breakable
func_button
func_buyzone
func_conveyor
func_door
func_door_rotating
func_escapezone
func_vip_safetyzone
func_friction
func_hostage_rescue
func_illusionary
func_ladder
func_mortar_field
func_pendulum
func_plat
func_plat_rot
func_pushable
func_rot_button
func_rotating
func_tank
func_tankcontrols
func_tankmortar
func_tankrocket
func_trackautochange
func_trackchange
func_tracktrain
func_train
func_traincontrols
func_vehicle
func_vehiclecontrols
func_wall
func_wall_toggle
func_water

func_bomb_target - браш-объект

Что это такое
Этот объект позволяет более точно, чем info_bomb_target определять объекты для подрыва на картах с бомбами. Если присутствует этот объект, то объект info_bomb_target не действует.

См. также:
info_bomb_target

func_breakable - браш-объект

Что это такое
Объект func_breakable позволяет создать разрушаемый браш.

Name (targetname) – имя. Если есть имя, можно разрушать браш с помощью триггера, а не только стреляя в него.
Target on break (target) – когда браш разрушается, он активирует объект, указанный здесь.
Strength (health) – прочность. Этот параметр определяет, какое повреждение браш способен вынести прежде чем сломаться.
Material Type (material) – материал браша.

0 – Glass – стекло
1 – Wood – дерево
2 – Metal – металл
3 – Flesh – плоть
4 – Cinder Block – пенобетон?
5 – Ceiling Tile – подвесной потолок
6 – Computer – компьютер
7 – Unbreakable Glass – неразбиваемое стекло
8 – Rocks – скала
Delay before fire (delay) – задержка между разрушением браша и активацией объекта Target on break.
Gib Model (gibmodel) – модель обломков, используемая при разрушении браша. Можно не указывать.
Spawn on break (spawnobject) – указывает предмет, вываливающийся из разрушенного браша. В КС ничего не вывалится ? (0 – Nothing).
Explosion Magnitude (explodemagnitude) – мощность взрыва, вызванного разрушением браша. Если взрыва не надо, оставьте 0.
Render Properties – параметры отображения, для того, чтобы сделать браш прозрачным (стекло) и т.д.

Флаги:

Only Trigger (1) – браш разрушится только если активирован другим объектом (триггером), но не от выстрела.
Touch (2) – браш разрушится от прикосновения.
Pressure (4) – браш разрушится от давления.
Instant Crowbar (256) – браш разрушится мгновенно от удара монтировкой.

См. также:
func_pushable

func_button - браш-объект

Что это такое
Объект func_button создает кнопку. Кнопку можно использовать для активации тех или иных событий или объектов. Кнопка можно использовать или дотрагиваться – при этом она будет двигаться в направлении, указанном углом (angle).

Name (targetname) - имя.
Render Properties – параметры отображения.
Speed (speed) – скорость «вдавливания» кнопки в стену.
Targeted object (target) – объект, активируемый кнопкой.
Health (shootable if > 0) (health) – упругость/прочность кнопки. Если этот параметр больше 0, в кнопку нужно стрелять, а не давить. При этом, кнопка активирует объект когда уровень повреждений превысит значение данного параметра.
Master (master) - имя (Name) объекта multisource.
Delay before reset (wait) – задержка перед сбросом. Промежуток времени после нажатия, когда кнопку нельзя использовать.
Delay before trigger (delay) – задержка между нажатием и активацией объекта.

Флаги:

Don`t move (1) – не двигаться. Кнока не «вдавливается» при нажатии.
Toggle (32) – кнопка «зависает» в нажатом положении. Нужно «юзать» ее еще раз чтобы отключить.
Sparks (64) – искры. Если установить этот флаг, из «неактивной» кнопки будут сыпать искры.
Touch activates (256) – если установлен, достаточно задеть кнопку для запуска.

См. также:
func_rot_button

func_buyzone - браш-объект

Объект func_buyzone определяет область, в которой можно покупать оружие и аммуницию. Этот объект отменяет область покупки на месте возникновения игроков. Параметр Team - команда - определяет, кто может покупать оружие в данной зоне (Террористы, Контр-террористы или и те, и другие).

func_conveyor - браш-объект

Что это такое
Объект func_conveyor создает эффект конвейерной ленты, которая двигает игрока со скоростью и в направлении, определяемых свойствами объекта.

Render Properties – параметры отображения.
Name – имя. Позволяет переключать направление движения на обратное.
Conveyor speed – скорость ленты.
Флаги:

Not push – не двигает другие объекты.
Not solid – не твердый (как вода).
Для того, чтобы поверхность двигалась, используйте текстуру, содержащую SCROLL в названии (например SCROLL_CONV3, SCROLLTOXIC, and SCROLLWATER1).

См. также:
trigger_push

func_door - браш-объект

Что это такое
Это сдвигающаяся дверь. Для того, чтобы сделать дверь, создайте браш двери в дверном проеме и обратите его в объект func_door. Дверь готова!

Name – имя. Позволяет открывать дверь например кнопкой.
Render Properties – параметры отображения (например, прозрачная дверь).
Speed – скорость движения двери.
Move sound, stop sound – звуки, издаваемые дверью во время движения/остановки.
Delay before close – задержка перед закрытиме. Промежуток времени между открытием и авто-закрытием двери. Установите в –1 чтобы дверь сама не закрывалась.
Lip – какая часть двери (в юнитах) останется видимой. По умолчанию дверь сдвигается на расстояние своей ширины/высоты. Можно поставить отрицательное значение для большего сдвига.
Damage inflicted when blocked – уровень повреждений игрока, попавшего под закрывающуюся дверь. Может и убить ведь дверью-то.
Health (shoot open) – прочность двери. Если этот параметр больше 0, в дверь можно стрелять. При этом, дверь откроется когда уровень повреждений превысит значение данного параметра.

Остальные параметры не столь важны. Если кому-то надо будет более подробное объяснение – пишите.

Флаги:

Starts open – дверь открыта в начале уровня.
Don’t link – ??
Passable – можно ходить сквозь такую «дверь».
Toggle – дверь будет «замерзать» в открытом/закрытом положении до повторной активации.
Use only – нужно нажать кнопку «use» (использовать) рядом с дверью чтобы открыть ее.

См. также:
func_door_rotating
momentary_door
func_water

func_door_rotating - браш-объект

Что это такое
Это «нормальная» дверь (вращающаяся). Чтобы сделать дверь, создайте браш двери, затем браш оси вращения (используйте текстуру ORIGIN для любого вращающегося объекта), выделите оба браша и обратите их в объект func_door_rotating. Вращающаяся дверь готова!
Кроме угля объекта и параметра Lip, свойства func_door также применимы и к func_door_rotating. Кроме того, действуют следующие свойства:

Distance – угол вращения в градусах в сторону, противоположную от игрока.
Флаги:
Те же, что и у func_door, но также и:

Reverse dir – дверь будет открываться в другую сторону, чем обычно (например, на игрока).
One-way – дверь открывается только в одну сторону, неважно, откуда подходит игрок.
X Axis, Y Axis – уточняют положение оси вращения (если нужно, чтобы дверь открывалась не вбок а вверх).

См. также:
func_door
momentary_door

func_escapezone - браш-объект
func_vip_safetyzone - браш-объект

Что это такое

Эти объекты определяют зону спасения VIP игрока и команды Терористов соответственно.(на соответствующих сценариях assasination и escape).

func_friction - браш-объект

Что это такое
Объект func_friction позволяет создать скользкую область для симуляции льда. Чтобы создать такой объект:
1. Создайте браш, который будет служить скользкой поверхностью, и обратите его в объект func_friction.
2. В поле свойства Percentage of standard (0 - 100) – уровень сцепления от стандартного - введите то значение, которое хотите.

func_hostage_rescue - браш-объект

Этот объект позволяет более точно контролировать область спасения заложников. Если такой объект присутствует на карте, он отменяет действие объекта info_hostage_rescue и спасение заложников на точке появления контр-террористов.

См. также:
info_hostage_rescue

func_illusionary - браш-объект

Что это такое
Объект func_illusionary имеет все те же свойства что и объект func_wall, кроме того, что он «пустой». Это позволяет создавать некоторые спецэффекты:

1. Препятствия
При создании препятствий или заборов с помощью текстур с битовой маской, можно сделать их «простреливаемыми». Для этого, обратите браш с таким препятствием в объект func_illusionaryи установите Render Mode (rendermode) в Solid (4), а FX Amount (renderamt) в 255. Потом создайте браш с текстурой CLIP поверх объекта func_illusionary. У вас получится объект, сквозь который можно стрелять, но нельзя ходить.
2. Мелкие детали, не препятствующие движению
Небольшие предметы, крепящиеся на стенах (лампы, болты, заклепки, картины в рамах), могут мешать при движении вплотную к стене. Обратите браши, образующие эти предметы, в объекты func_illusionary, чтобы они не мешали ходить.
3. Стены, через которые можно смотреть только в одну сторону
Создайте браш стены в нужном месте. К поверхности, через которую вы хотите смотреть, примените текстуру {BLUE. Обратите всю структуру в объект func_illusionary и установите параметры отображения как в пункте про препятствия. Если не хотите, чтоб через такую стену можно было ходить, используйте объект вместо func_illusionary. Вы только подумайте, какие это дает возможности для КС-маппера! (и КС кампера ? ). func_wall

См. также:
func_wall

func_ladder - браш-объект

Что это такое
Это объект-лестница. Вообще-то объект func_ladder создает невидимое поле, по которому можно подниматься вверх. Самый простой способ сделать лестницу – сконструировать видимые элементы из нескольких брашей (или с помощью текстур с битовой маской), а затем разместить невидимый объект func_ladder поверх нарисованной лестницы, по которому фактически и поднимается игрок.

См. также:
ВОПРОС: Как использовать текстуры с битовой маской? - см. параметры отображения, режим отображения Solid (4)

func_mortar_field - браш-объект

Что это такое
Объект func_mortar_field определяет область, куда можно вызвать «поддержку с воздуха» – авиаудар.

Name (targetname) – имя. Как обычно – нужно для того, чтобы можно было активировать.
Spread radius (m_flSpread) – радиус разброса бомб. Определяет точность наносимого авиаудара.
Repeat count (m_iCount) – количество бомб, сбрасываемых за один налет.
Targeting (m_fControl) – способ наведения: 0 – случайно, 1 – точка активирования, 2 – стол (как в Халф-Лайф).
X controller и Y controller (m_iszXController и m_iszYController) должны совпадать с именами объектов momentary_rot_button, используемых для наведения с помощью «стола».

См. также:
momentary_door
momentary_rot_button

func_pendulum - браш-объект

Что это такое
Объект func_pendulum создает маятник (как в часах с кукушкой). Так как маятник является вращающимся объектом, необходимо использовать как его составную часть браш с текстурой ORIGIN для определения оси вращения.

Name (targetname) – имя.
Render Properties – параметры отображения.
Speed (speed) – скорость движения маятника.
Distance (distance) – расстояние, на которое маятник будет качаться (в градусах).
Damping (0 - 1000) (damp) – замедляющийся. Если указать значение здесь, маятник будет замедлять свое движение и остановится на середине своего движения (если расстояние равно 90 градусам, маятник остановится на 45 градусов).
Damage inflicted when blocked (dmg) – уровень повреждения. Если игрок будет на пути маятника, «его здоровью будет нанесен ущерб», равный этому значению.

Флаги:

Start on () – начинает раскачиваться с начала уровня.
Passable () – маятник «безтелый» (можно ходить сквозь него).
Auto-return () – возвражает маятник на начальную позицию при активации. Глючит что-то, пока не понятно, зачем этот флаг вообще?
X Axis, Y Axis () – уточняют положение оси вращения (не только по вертикали).

func_plat - браш-объект

Что это такое
Объект func_plat создает платформу, которая поднимается вверх, когда игрок встает на нее. Платформу необходимо рисовать в верхней позиции, но она появится в нижней позиции в уровне.

Name (targetname) – имя (для активации, можно не давать).
Render Properties – параметры отображения.
Travel altitude (can be negative) (height) – высота подъема платформы (положительное значение – платформа появится ниже на n юнитов и будет двигаться вверх; минус – выше).

Флаги:

Toggle – если указано имя, установка этого флага позволит двигать платформу вверх/вниз при активации.

См. также:
func_platrot

func_platrot - браш-объект

Что это такое
Объект func_platrot создает платформу, которая поднимается вверх, когда игрок встает на нее. При движении, платформа поворачивается на определенный угол. Платформу необходимо рисовать в верхней позиции, но она появится в нижней позиции в уровне. Так как это вращающийся объект, в нем необходимо присутствие браша с текстурой ORIGIN (ось вращения).

Name (targetname) – имя.
Render Properties – параметры отображения.
Travel altitude (can be negative) (height) – высота подъема платформы (положительное значение – платформа появится ниже на n юнитов и будет двигаться вверх; минус – выше).
Spin amount (rotation) – угол поворота. Платформа будет поворачиваться на указанный угол (можно больше 360 градусов).

Флаги:

Toggle – если указано имя, установка этого флага позволит двигать платформу вверх/вниз при активации.
X Axis (64) – по умолчанию платформа вращается вокруг оси Z. Если установить этот флаг, она будет вращаться вокруг оси X.
Y Axis (128) – то же, только вокруг оси Y.

См. также:
func_plat

func_pushable - браш-объект

Что это такое
Объект func_pushable позволяет создавать передвигаемые предметы. Свойства во многом схожи со свойствами объекта func_breakable с некоторыми дополнениями:

Hull size (size) – размер объекта. Оставьте значение 0 (Point Size).
Friction (friction)– трение. Определяет «сопротивление» объекта когда игрок пытается толкнуть его.
Buoyancy (buoyancy) – плавучесть. Определяет, насколько утонет объект, если его столкнуть в воду.

Флаги:

Breakable (128) – разрушаемый. Если установлен, объект будет вести себя в точности как func_breakable (только его еще двигать можно!).

См. также:
func_breakable

func_rot_button - браш-объект

Что это такое
Объект func_rot_button создает кнопку, которая вращается, а не сдвигается («рубильник»). Обязательно использование браша ORIGIN для центра.

Name (targetname) – имя. Если есть имя, можно активировать рубильник, как самим игроком, так и другим триггером.
Targetted object (target) – имя объекта, который нужно активировать.
Master (master) – здесь можно указать имя объекта multisource.
Speed (speed) – скорость вращения.
Health (shootable if > 0) (health) – если указать значение, отличное от 0, в «рубильник» нужно будет выстрелить, чтобы включить.
Delay before reset (waity) – время, через которое кнопку можно будет опять использовать.
Delay before trigger (delay) – время между нажатием кнопки и активацией объекта.
Distance (deg) (distance) – угол в градусах, на который поворачивается рубильник.

Флаги:

Not Solid (1) - безтелый.
Reverse Dir (2) – вращается в обратном направлении.
Toggle (32) – если установлен, рычаг будет двигаться между двух позиций.
X-Axis (64) – по умолчанию рычаг вращается вокруг оси Z. Если установить этот флаг, он будет вращаться вокруг оси X.
Y Axis (128) – то же, только вокруг оси Y.
Touch Activates (256) – если установлен, можно не использовать – достаточно просто «коснуться» рычага чтобы активировать его.

См. также:
func_button

func_rotating - браш-объект

Что это такое:
Объект func_rotating позволяет создать вращающийся объект. При создании необходимо использовать ORIGIN браш как центр вращения.

Name (targetname) - имя.
Render Properties - параметры отображения.
Rotation Speed (speed) - максимальная скорость вращения.
Volume (10 = loudest) (volume) - громкость издаваемого звука (10 - самый громкий).
Friction (0 - 100%) (fanfriction) - трение покоя. Для симуляции разгона/торможения при активации/деактивации пропеллера.
Fan Sounds (sounds) - издаваемый .

0 - no sound - нет звука. Из остальных выбирайте на слух.
1 - fast whine
2 - slow rush
3 - medium rickety
4 - fast beating
5 - slow smooth
Path/filename.wav of WAV (message) - имя файла со "своим" звуком, если вам не нравятся стандартные.
Damage inflicted when blocked (dmg) - повреждения игроку, если попадется по лопасть.
Флаги:

Start On (1) - начинать включенным для пропеллера с именем (без имени, он сам будет вращаться сразу же).
Reverse Direction (2) - вращать в противоположную сторону.
X Axis (4) - вращать по оси X (а не Z, как по умолчанию).
Y Axis (8) -вращать по оси Y.
Acc/Dcc (16) - разгоняться/замедляться.
Fan Pain (32) - если установлен, пропеллер причиняет повреждения.
Not Solid (64) - безтелый.
Small Radius (128) - малый радиус распространения звука.
Medium Radius (256) - средний радиус.
Large Radius (512) - большой радиус.

См. также:
func_door_rotating
func_rot_button

func_tank - браш-объект

Что это такое
Используйте данный объект чтобы создать управляемую пушку (пулемет). Модель пулемета должна буть спроектирована так, чтобы ее ствол указывал строго направо (угол 0 градусов при виде сверху). После того, как вы обратите всю модель в объект func_tank, используйте поле angle (угол) чтобы определить реальное направление ствола в игре.
1. Шаг первый – создайте модель пулемета. Хорошо если он будет похож на реальный, а так это может быть все что угодно.

Не забудте использовать ORIGIN браш для определения точки вращения пулемета.

ORIGIN браш – это браш, созданный полностью из текстуры ORIGIN. Любой вращающийся объекта должен иметь такой браш для определения центра вращения.
Важно: модель объекта func_tank должна быть сконструирована дулом направо. Реальный угол определяется полем angle самого объекта.
2. Обратите модель пулемета в объект func_tank.

Name (targetname) – имя (обязательно). Используется для управления пулеметом с помощью объекта func_tankcontrols.
Target (target) – имя (Name (targetname)) объекта ambient_generic. Это звук, издаваемый пулеметом во время стрельбы.
Yaw Rate (yawrate) – скорость горизонтального вращения пулемета (600 подойдет для начала).
Yaw Range (yawrange) – сектор горизонтального вращения в градусах.
Pitch Rate (pitchrate) – скорость вертикального вращения (600 подойдет для начала).
Pitch Range (pitchrange) – угол обстрела по вертикали.
Barrel Length (barrel) – длина ствола. Расстояние в юнитах от центра вращения до конца ствола.
Barrel Horizontal (barrely) – расстояние от центра вращения до центра ствола по горизонтали.
Barrel Vertical (barrelz) – расстояние от центра вращения до центра ствола по вертикали.
Flash Sprite (spriteflash) – имя файла-спрайта, имитирующего огонь на конце ствола (sprites/muzzleflash2.spr).
Sprite Scale (spritescale) – масштаб спряйта.
Rate of Fire (firerate) – скорострельность, выстрелов/секунду.
Damage per Bullet (bullet_damage) – убойная сила ?.
Persistance (persistance) – «настойчивость» пулемета. Используется для автоматических пушек (без управления, стреляющих во все, что движется). Пулемет будет продолжать стрелять, несмотря на то, что игрок уже скрылся с поля зрения.
Bullet Accuracy (firespread) – точность выстрелов.
Bullets (bullet) – тип пуль.
3. Установите флаги. Для управляемого пулемета поставьте флаг Controllable.
4. Создайте объект func_tankcontrols прямо позади объекта func_tank. В качестве цели (target) укажите имя (Name (targetname)) объекта func_tank.
5. Установите CLIP браш поверх объекта func_tank так, чтобы игрок не мог препятствовать движению пулемета.
CLIP браш – браш из текстуры CLIP. В игре он не видим, но блокирует движение игрока. Однако пули свободно проходят через него.
6. Если вы еще не создали объект ambient_generic с именем, указанным в поле Target объекта func_tank, то сейчас самое время. Хорошо подходит звук ambience/biggun1.wav. Укажите радиус звука и установите флаги Start Silent (начинать без звука) и Not Looped (не повторять).
Флаги:

Active – используется для автопушек стреляет во все, что движется.
Only Direct – стреляет только по видимым целям.
Controllable – определяет, что управляемую пушку.

См. также:
func_tankrocket
func_tankmortar
func_tankcontrols

func_tankcontrols - браш-объект

Что это такое
Этот объект определяет область, из которой игрок может управлять пулеметом func_tank. В поле Tank entity name укажите имя пулемета.

См. также:
func_tank

func_tankmortar - браш-объект

Что это такое
Объект func_tankmortar очень похож на объект func_tank с одним отличием: при выстрелах не видно траектории полета пуль.

Explosion Magnitude (iMagnitude) – сила взрыва, производимого при выстрелах.

См. также:
env_shake
func_tank
func_tankrocket

func_tankrocket - браш-объект

Что это такое
То же, что и func_tank, только стреляет ракетами.

См. также:
func_tank
func_tankmortar

func_trackautochange - браш-объект

Что это такое
Объект func_trackautochange позволяет автоматически переместить поезд/платформу с одного пути на другой – обычно с конца одного пути на начало другого (можно на разных этажах).
Важно: Т.к. это вращающийся объект, необходимо использовать ORIGIN браш при его моделировании.

Name (targetname) – имя. Обязательный параметр.
Render Properties – параметры отображения.
Travel altitude (height) – высота подъема/опускания. По умолчанию будет опускаться на указанное расстояние, но можно изменить с помощью флагов.
Spin amount (rotation) – угол поворота в градусах.
Train to switch (train) – имя поезда, для которого изменяется путь.
Top track (toptrack) – имя последнего объекта path_corner, определяющего конец одного пути.
Bottom track (bottomtrack) – имя первого объекта path_corner, определяющего начало нового пути.
Move/Rotate speed (speed) – скорость подъема/вращения, юнитов в секунду.

Флаги:

Auto Activate train (1) -
Relink Track (2) - (? Не работает?)
Start at bottom (8) – если установлен, платформа появится в нижней позиции и будет подниматься при активации.
Rotate only (16) – только вращаться – без подъемов/опусканий. Если установить этот флаг, переключатель будет работать как нормальная ж/д стрелка – используйте в КС, так как других вариантов в реале не наблюдается.
X Axis (64) – вращать по оси Х. По умолчанию вращается по оси Z.
Y Axis (128) – вращать по оси Y. По умолчанию вращается по оси Z.
Способ применения:

В конечном объекте path_track первого пути (по которому платформа двигается изначально) не должен быть указан параметр Next stop target (target) – следующаа точка назначения. Вместо этого, введите параметр Fire on dead end (netname) – запускать при достижении конца пути – имя стрелки func_trackautochange. Теперь, когда платформа подъедет к данной точке (path_track), она остановится и активирует стрелку func_trackautochange. После поворота/подъема на нужное расстояние, платформа продолжит движение по новому пути, определенному параметром Bottom track (bottomtrack) объекта func_trackautochange.

См. также:
func_trackchange
func_tracktrain
func_traincontrols
path_track

func_trackchange - браш-объект

Что это такое
Объект func_trackchange позволяет перемещать «управляемый» поезд (func_tracktrain) с одного пути на другой. Поезд не будет двигаться после переключения пути, поэтому важно использовать управляемый поезд (func_tracktrain).
Важно: Т.к. это вращающийся объект, необходимо использовать ORIGIN браш при его моделировании.

Name (targetname) – имя. Обязательный параметр.
Render Properties – параметры отображения.
Travel altitude (height) – высота подъема/опускания. По умолчанию будет опускаться на указанное расстояние, но можно изменить с помощью флагов.
Spin amount (rotation) – угол поворота в градусах.
Train to switch (train) – имя поезда, для которого изменяется путь.
Top track (toptrack) – имя последнего объекта path_corner, определяющего конец одного пути.
Bottom track (bottomtrack) – имя первого объекта path_corner, определяющего начало нового пути.
Move/Rotate speed (speed) – скорость подъема/вращения, юнитов в секунду.
Флаги:

Auto Activate train (1) - (? Не работает?)
Relink Track (2) - (? Не работает?)
Start at bottom (8) – если установлен, платформа появится в нижней позиции и будет подниматься при активации.
Rotate only (16) – только вращаться – без подъемов/опусканий. Если установить этот флаг, переключатель будет работать как нормальная ж/д стрелка – используйте в КС, так как других вариантов в реале не наблюдается.
X Axis (64) – вращать по оси Х. По умолчанию вращается по оси Z.
Y Axis (128) – вращать по оси Y. По умолчанию вращается по оси Z.

См. также:
func_trackautochange
func_tracktrain
func_traincontrols
path_track

func_tracktrain - браш-объект

Что это такое
Объект func_tracktrain создает управляемую платформу/поезд, способную передвигаться по заранее определенному пути. При создании модель платформы необходимо ориентировать на запад. В самой игре, платформа появится на начальной точке движения, определяемой объектом path_track, и будет направлена на вторую точку пути.

Примечание: Объект func_tracktrain может включать CLIP браши. Вы можете использовать CLIP браши для блокирования движения игрока, – например, для предотвращения его выхода из поезда.

Важной частью объекта func_tracktrain является ORIGIN браш. Его месторасположение определяет как поезд будет будет двигаться по точкам пути (path_track).
Другой важной частью поезда является объект func_traincontrols (органы управления). Он позволяет игроку определять скорость и направление (вперед/назад) движения. Органы управления не являются частью объекта; с помощью объекта func_traincontrols вы просто определяете место, где они должны находиться относительно самой платформы, и это место остается неизменным во время движения поезда.
Name (targetname) – имя обязательно. Render Properties – параметры отображения. Global entity name (globalname) – глобальное имя, для проезда по разным уровням. В КС не нужно. First stop target (target) – имя начальной точки пути (объекта path_track). Платформа появится на этой точке, «нацелившись» на следующую точку пути. Distance between the wheels (wheels) – расстояние между колесами. Определяет, как поезд будет поворачивать вокруг углов. Обычно, длина поезда подойдет. Height above track (height) – высота поезда над объектами path_tracks (у поезда считается центр ORIGIN браша). Initial speed (startspeed) – начальная скорость. На этой скорости поезд будет двигаться в игре после начала раунда. Для неуправляемых платформ, это их постоянная скорость движения (можно изменить с помощью свойств объектов path_track). Speed (units per second) (speed) – максимальная скорость для управляемых поездов, юнитов в секунду. Damage on crush (dmg) – сила повреждения игроку, если он попал между поездом и препятсвием. Bank angle on turns (bank) – угол наклона при поворотах.

Флаги:

No Pitch (X-rot) (1) – если установлен, поезд поворачивается только по оси Z.
No User Control (2) – игрок не может управлять поездом.
Passable (8) – можно ходить сквозь поезд. ?

См. также:
func_traincontrols
func_trackchange
func_trackautochange
path_track
func_train

func_train - браш-объект

Что это такое
Объект func_train создает движущуюся платформу (неуправляемую), которая двигается по пути, определенному с помощью объектов path_corner. Когда вы определяете путь из объектов path_corner, имейте ввиду, что платформа при движении будет ориентироваться на них своим центром.
Способ применения:
Укажите в параметре First Stop Target (target) имя первого объекта path_corner, укажите скорость движения (speed). Это создаст рабочую платформу, которая сразу начнет двигаться. Чтобы иметь возможность запускать/останавливать ее, укажите имя Name (targetname), и активируйте ее с помощью кнопки.

См. также:
path_corner
func_tracktrain

func_traincontrols - браш-объект

Что это такое
Определяет область, в которой игрок может управлять поездом. В параметре target укажите имя поезда для управления. Эта область будет передвигаться вместе с поездом.

См. также:
func_tracktrain
func_trackchange
func_trackautochange
path_track

func_vehicle - браш-объект

Что это такое
Объект func_vehicle создает управляемую платформу/автомобиль, способную двигаться в любом направлении по желанию водителя. Кроме того, понадобится еще объект func_vehiclecontrols и два объекта path_track, с помощью которых осуществляется движение вперед и назад. При создании модель автомобиля необходимо ориентировать на запад (направо). В самой игре, платформа появится на начальной точке движения, определяемой объектом path_track, и будет направлена на вторую точку пути.
Примечание:
По аналогии с func_tracktrain, объект func_vehicle может включать CLIP браши. Вы можете использовать CLIP браши для блокирования движения игрока, например, через имитируемые окна. Важной частью объекта func_vehicle является ORIGIN браш. Разместите небольшой ORIGIN браш в центре модели автомобиля - модель будет поворачиваться относительно этого браша. Другой важной частью поезда является объект func_vehiclecontrols (органы управления). Он позволяет игроку определять скорость и направление движения. Органы управления не являются частью объекта; с помощью объекта func_vehiclecontrols вы просто определяете место, где они должны находиться относительно самого автомобиля, и это место остается неизменным во время его движения.

Name (targetname) - имя обязательно.
Render Properties - параметры отображения
Pitch Yaw Roll - угол, вроде как не нужен.
First stop target (target) - имя начальной точки пути (объекта path_track). Автомобиль появится на этой точке, "нацелившись" на вторую. У самого объекта path_track необходимо кроме имени указать в параметре Next stop target имя второго объекта path_track, а у второго - в параметре Next stop target указать имя первого. Более подробно об использовании func_vehicle и иже с ними можно прочитать здесь.
Sound - звук. Этот параметр позволяет выбрать тип звука, издаваемого при движении машины. Для определения подходящего звука придется поэксперементировать.
Length of the vehicle - длина машины в юнитах.
Width of the vehicle - ширина машинки. Рекомендую ставить реальные размеры модели машины, чтобы не получилось как в cs_siege_apc: при заносах корпус машины проходит сквозь столб, прямо как жидкий терминатор сквозь тюремную решетку. Для больших машин, эти параметры можно сделать чуть меньше реальных, чтобы облегчить управление на узких улочках с кучей мелких препятствий.
Height above track - высота над дорогой, т.е. дорожный просвет. Хитрый параметр. Если браш ORIGIN расположен на одной высоте с объектами path_track, то менять этот параметр вам не стоит. Сделайте его равным 0 и ездите на здоровье!
Initial speed - начальная скорость. Чтобы стояла на месте, оставьте 0.
Speed (unit per second) - скорость движения (юнитов в секунду).
Damage on crash - повреждения, наносимые при столкновении. Действует на людей и func_breakable.
Volume (10 = loudest) - громкость шума, издаваемого при движении (от 1 до 10, 10 = самый громкий).
Bank angle on turns - угол крена в градусах при повороте. Рекомендую изменять для мотоциклов, большие четырех- и более- колесные машины сильно не кренятся.
Minimum light level - освещенность машины, вне зависимости от внешнего освещения.

Флаги:
No Pitch (X-rot) (1) - если установлен, поезд поворачивается только по оси Z.
No User Control (2) - игрок не может управлять машиной.
Passable (8) - можно ходить сквозь машину.

См. также:
func_vehiclecontrols
func_traincontrols
func_trackchange
func_trackautochange
path_track
func_tracktrain

func_vehiclecontrols - браш-объект

Что это такое
Определяет область, в которой игрок может управлять машиной func_vehicle. В параметре target укажите имя машины для управления. Эта область будет передвигаться вместе с автомобилем.

См. также:
func_vehicle
func_tracktrain
func_trackchange
func_trackautochange
path_track

func_wall - браш-объект

Что это такое
Объект func_wall позволяет создать стену. С его помощью можно менять параметры отображения данной стены.

1. Текстуры с битовыми масками
Такие тестуры нужно использовать с объектами, чтобы сделать их синие области прозрачными. Если у вас есть браш с текстурой {LADDER1, синие области между ступеньками в игре будут черными. Чтобы сделать их прозрачными, обратите этот браш в объект func_wall и отрегулируйте параметры отображения (Render Mode (rendermode) = Solid (4), FX Amount (renderamt) = 255).

2. Небъющиеся окна
Для этого создайте объект func_wall и отрегулируйте параметры отображения (Render Mode (rendermode) = Texture (2), FX Amount (renderamt) = (0-255), где 0 – полностью прозрачно, 255 – полностью непрозрачно).

3. Дополнительно

Рекомендуется использовать объекты func_wall для создания небольших ламп на стенах. Такие объекты не «разбивают» браши стен на мелкие браши (свойства движка халф-лайф), что предотвращает проблемы с освещением стен.
Если дать объекту func_wall имя Name (targetname) и использовать переключаемые текстуры, то можно переключать эти текстуры в игре с помощью триггеров (как, например, свет).

См. также:
func_wall_toggle

func_wall_toggle - браш-объект

Что это такое
Объект func_wall_toggle во многом схож с объектом func_wall, кроме того, что при активации/деактивации его с помощью триггера, объект будет появляться/изчезать. С помощью флага можно контролировать его начальное состояние.

См. также:
func_wall

func_water - браш-объект

Что это такое
Объект func_water создает воду. Вообще же есть три способв создать воду:

1. Самый простой, создайте браш с текстурой воды (текстуры, начинающиеся на «!», например !WATERBLUE). Это создаст «жидкий» браш. Основное отличие от объекта func_water в том, что этот браш не будет двигаться и не имеет волн.
2. Второй способ – создать «жидкий» браш, как в первом способе, и обратить его в объект func_water. Теперь вода будет иметь волны (на машинах с акселераторами), а объекты внутри воды будут освещаться светом снаружи. Большим различием является способность объекта func_water двигаться как объект func_door.
3. Третий способ более сложный, но и более интересный. Он позволяет создать воду с течением. Для этого нужно использовать три объекта: func_water, func_conveyor и trigger_push.

Создайте браш с водой. Используйте тесктуру, начинающуюся на scroll, напрмер SCROLLWATER1. Обратите этот браш в объект func_conveyor и установите соответствующую скорость. Укажите направление движения с помощью угла объекта, затем установите параметр rotation в то же значение. Установите флаги func_conveyor no push и not solid.
Сделайте копию объекта func_conveyor и обратите его в объект func_water. Установите параметры отображения (Render Mode (rendermode) = "Texture" (2) и FX Amount (renderfx) = 0). После этого объект func_water будет невидимым. Нам нужен только эффект воды, а не сам браш, так как его тестура будет мешать текстуре объекта func_conveyor.
Сделайте еще одну копию объекта func_conveyor и обратите его в объект trigger_push. Укажите скорость движения объектов и все..

См. также:
trigger_push
func_conveyor
func_door


Game_ объекты

Game_ объекты, используемые в Counter-Strike

game_counter
game_counter_set
game_end
game_player_equip
game_player_hurt
game_player_team
game_score
game_team_master
game_team_set
game_text
game_zone_player

game_counter - точечный объект

Что это такое
Объект game_counter считает количество своих активаций и срабатывает, когда это количество достигает определнного параметра.
Name (targetname) - имя. Обязательно для использования.
Target (target) - имя объекта-мишени, который активируется при заданном числе активаций game_counter'а.
Killtarget (killtarget) - имя объекта, удаляемого из игры после заданного числа активаций. ВНИМАНИЕ: объект будет удален на все раунды!
Delay (delay) - задержка в секундах перед активацией.
Master (master) - имя объекта multisource или game_team_master для создания логических цепочек.
Initial Value (frags) - начальное значение счетчика.
Limit Value (health) - значение, при достижении которого счетчик срабатывает.

Флаги:
Remove on fire (1) - удалять объект после активации. ВНИМАНИЕ: объект будет удален на все раунды!
Reset on fire (2) - сбрасывать значение счетчика на начальное после активации.

См. также:
trigger_counter

game_counter_set - точечный объект

Что это такое
Объект game_counter_set используется для изменения значения счетчика game_counter.
Name (targetname) - имя необходимо.
Target (target) - имя объекта game_counter, который планируется изменять.
Master (master) - имя объекта multisource или game_team_master для создания логических цепочек.
New Value (frags) - новое значение, которое будет передано в game_counter.

Флаги:
Remove on fire (1) - удалять объект после активации. ВНИМАНИЕ: объект будет удален на все раунды!

См. также:
game_counter

game_end - точечный объект

Что это такое
Объект game_end при активации заканчивает игру на данной карте и загружет следующую карту из mapcycle.txt. Не вижу особого смысла в данном объекте, разве то поместить кнопку за мощной стеной, что, при желании игроков сменить карту, позволит им вместо голосования расстрелять ее и нажать кнопку.
Name (targetname) - имя для активации. А как еще сменить карту?!
Master (master) - имя объекта multisource или game_team_master для создания логических цепочек.

game_player_equip - точечный объект

Что это такое
Очень интересный объект, game_player_equip позволяет выдавать игрокам оружие указанного вида и в указанном количестве. Работает примерно как armoury_entity, однако позволяет полностью экипировать бойца в рамках одного объекта, а также позволяет снаряжать игроков только одной команды и игнорировать игроков другой. Кроме того, в отличие от armoury_entity, объект game_player_equip позволяет снаряжать игроков не в определенной точке, а в ответ на какие-то действия, так как он активируется триггером.
Name (targetname) - имя объекта для активации.
Team Master (master) - имя объекта multisource или game_team_master для создания логических цепочек.
Для указания снаряжения (оружия и брони), отключите SmartEdit и добавляйте параметры вручную. Key - это название предмета, Value - количество единиц (Flash-гранат может быть две). Посмотреть названия оружия можно в объекте от armoury_entity, напишу их также здесь, чтобы вам было удобнее (думаю, переводить смысла нет):
weapon_mp5
weapon_tmp
weapon_p90
weapon_mac10
weapon_ak47
weapon_sg552
weapon_m4a1
weapon_aug
weapon_scout
weapon_g3sg1
weapon_awp
weapon_m3
weapon_xm1014
weapon_m249
weapon_flashbang
weapon_hegrenade
item_kevlar
item_assaultsuit
weapon_smokegrenade

См. также:
armoury_entity

game_player_hurt - точечный объект

Что это такое
Этот объект действует подобно trigger_hurt, однако скорее в ответ на действия игрока, а не на его расположение в определенном месте. С его помощью можно также лечить игрока, если использовать отрицательные значения параметра Damage.
Name (targetname) - имя обязательно.
Damage to Apply (dmg) - уровень повреждений. Используйте отрицательные значения для лечения.
Master (master) - имя объекта multisource или game_team_master для создания логических цепочек.

Флаги:
Remove on fire (1) - удалять объект после активации. ВНИМАНИЕ: объект будет удален на все раунды!

См. также:
trigger_hurt

game_player_team - точечный объект

Что это такое
Объект game_player_team позволяет сменить команду игроку, активировавшему данный объект.
Name (targetname) - имя обязательно.
Game_team_master to use (target) - имя объекта game_team_master, в котором указывается новая команда игрока.
Master (master) - имя объекта multisource или game_team_master для создания логических цепочек.

Флаги:
Remove on fire (1) - удалять объект после активации. ВНИМАНИЕ: объект будет удален на все раунды!
Kill Player (2) - убивать игрока при смене команды.
Gib Player (4) - при смене команды игрока "порвет на кусочки".

game_score - точечный объект

Что это такое
Объект game_score entity позволяет добавлять или отнимать фраги у игрока.
Name (targetname) - имя обязательно для активации.
Points to add (points) - количество фрагов ("+" - добавить, "-" - отнять).
Master (master) - имя объекта multisource или game_team_master для создания логических цепочек.

Флаги:
Allow Negative (1) - может сделать количество фрагов у игрока отрицательным.
Team Points (2) - добавляет/отнимает фраги у всей команды, к которой принадлежит игрок.

game_team_master - точечный объект

Что это такое
Объект game_team_master действует в качестве реле или как условие выполнения действия для разных команд (террористы или спецназ). Он может заменять объект multisource для любого другого объекта, где это применимо. Он запускает указанный объект только в том случае, когда команда, к которой принадлежит игрок, активирующий объект, совпадает с заранее указанной. Это позволяет создавать объекты, активируемые только одной командой и недоступные для другой. Более подробно о действии данного объекта можно почитать в описании multisource, так как эти объекты идентичны с той разницей, что с помощью game_team_master можно разделять объекты для разных команд.
Name (targetname) - имя. Если использовать этот объект как реле, необходимо активировать его по имени для включения требуемого объекта.
Target (target) - имя объекта-мишени, который в результате будет запущен.
Killtarget (killtarget) - указанный объект будет удален из игры при активации game_team_master.
Delay (delay) - задержка перед активацией мишени.
Trigger State (triggerstate) - состояние переключателя. При активации объекта-мишени, он может быть включен, выключен или переключен. Более подробно об этом можно прочитать в описании объекта trigger_relay.
Team Index (-1 = no team) (teamindex) - индекс нужной команды (-1 = доступно для обеих команд).
Master (master) - имя объекта multisource или game_team_master для создания логических цепочек.

Флаги:
Remove on fire (1) - удалять объект после активации. ВНИМАНИЕ: объект будет удален на все раунды!

См. также:
trigger_relay
game_team_set
multisource

game_team_set - точечный объект

Что это такое
Когда этот объект активируется, он изменяет номер команды в объекте game_team_master на номер команды игрока, активировавшего данный объект.
Name (targetname) - имя обязательно для активации.
Target (target) - имя объекта game_team_master, который нужно изменять.
Killtarget (killtarget) - указанный объект будет удален из игры при активации game_team_set.
Delay (delay) - задержка перед изменением свойств game_team_set.
Master (master) - имя объекта multisource или game_team_master для создания логических цепочек.
Флаги:
Remove on fire (1) - удалять объект после активации. ВНИМАНИЕ: объект будет удален на все раунды!

См. также:
game_team_master

game_text - точечный объект

Что это такое
С помощью этого объекта можно выводить текстовые сообщения на экран. Для вывода нескольких строк, используйте символ "\n" в конце каждой строки. (Например: "Строка 1\nСтрока 2") ПРИМЕЧАНИЕ: Не используйте сообщения длиннее 127 букв, так как это может привести к зависанию Worldcraft'а.
Name (targetname) - имя обязательно.
Target (target) - имя объекта-мишени, который запустится после запуска game_text.
Message Text (message) - текст сообщения.
X (0 - 1.0 = left to right, -1 = center) (x) - позиция по оси X (-1 - по центру).
Y (0 - 1.0 = top to bottom, -1 = center) (y) - позиция по оси Y (-1 - по центру).
Text Effect (effect) - 0 = Fade In/Out, 1 = Credits, 2 = Scan Out - эффекты отображения
Color #1 (color) - конечный цвет текста.
Color #2 (color2) - цвет подсветки.
Fade-In Time (or character scan time) (fadein) - время появления текста.
Fade-Out Time (fadeout) - время исчезания текста.
Hold-Time (holdtime) - время отображения текста на экране.
Scan time (scan effect only) (fxtime) - задержка между прорисовкой букв и строк при использовании эффекта Scan Out.
Text Channel (channel) - один из четырех каналов отображения текста. При использовании одного и того же канала, предыдущая информация стирается.
Master (master) - имя объекта multisource или game_team_master для создания логических цепочек.

Флаги:
All Players (1) - показывает сообщение всем игрокам.

См. также:
env_message

game_zone_player - браш-объект

Что это такое
Объект game_zone_player используется для запуска событий на основе месторасположения игроков.
Name (targetname) - имя обязательно для запуска.
Target for IN players (intarget) - имя объекта-мишени, запускаемого для всех игроков внутри зоны действия объекта game_zone_player.
Target for OUT players (outtarget) - имя объекта-мишени, запускаемого для всех игроков вне зоны действия объекта game_zone_player.
Counter for IN players (incount) - имя Name (targetname) объекта game_counter. Значение такого объекта будет равно числу игроков внутри зоны.
Counter for OUT players (outcount) - имя Name (targetname) объекта game_counter. Значение такого объекта будет равно числу игроков снаружи зоны.
Master (master) - имя объекта multisource или game_team_master для создания логических цепочек.
ПРИМЕР: Объект game_zone_player активируется, например, кнопкой. Параметр IN target активирует объект game_score, который добавляет фраги; параметр OUT target активирует объект game_score, который отнимает фраги. Теперь, любой игрок внутри зоны получает фраг, а тот, кто находится вне зоны, теряет один фраг. Весело, неправда ли?

См. также:
game_counter


Info_объекты

Info_ объекты, используемые в Counter-Strike

info_null
info_player_start
info_player_deathmatch
info_vip_start
info_hostage_rescue
info_bomb_target
info_map_parameters
info_target
info_compile_parameters
info_lights_rad
info_teleport_destination

info_null - точечный объект

Что это такое:
Объект info_null является мишенью для объекта light_spot. Просто дайте ему имя name (targetname), и его можно использовать в качестве мишени.

См. также:
light_spot

info_player_* - точечный объект

Что это такое:
Эти объекты определяют, где появляется игрок после загрузки уровня.
info_player_start – определяет точку появления контр-террориста. Максимум - 16.
info_player_deathmatch – определяет точку появления террориста. Максимум - 16.

Angle - указывает направления взглята при появлении игрока.

info_vip_start - точечный объект

Этот объект определяет точку появления VIP игрока на картах типа "assasination"

info_hostage_rescue - точечный объект

Этот объект определяет точку, в которую нужно привести заложников для их "спасения".

См. также:
func_hostage_rescue

info_bomb_target - точечный объект

Этот объект определяет точку для закладки бомбы на соответствующих картах.

См. также:
func_bomb_target

info_map_parameters - точечный объект

Объект info_map_parameters определяет, какая из команд (или обе) может покупать оружие и радиус взрыва бомбы на картах с разминированием.

info_target - точечный объект

Что это такое:
Объект info_target используется для определения мишени для других объектов, таких как trigger_camera или env_beam. Просто присвойте ему имя Name (targetname), и он готов к использованию.
Примечание: этот объект дан для удобства. Например, объект trigger_camera может использовать любой другой объект в качестве мишени, но если нет такой необходимости, то проще использовать объект info_target.

См. также:
trigger_camera
env_beam

info_compile_parameters - точечный объект

Что это такое:
Данный объект, судя по всему, должен определять параметры компиляции карты. Он содержит следующие свойства:

Texture Data Memory - размер памяти в байтах, выделяемый для текстур (обычно 4 Мб)
Display Estimated Compile Times - показывать ожидаемое время компиляции (да/нет).
Direct lighting oversampling (extra) - более полный обсчет освещения.
Number of radiosity bounces - количество просчтитываемых отражений света (больше - лучше качество, но дольше компиляция).
Ambient world light - уровень яркости карты в формате R G B со значениями от 0.0 до 1.0.
Smoothing threshold for blending - угол между поверхностями (брашами), который компилируется ввиде плавного перехода.

Флаги:

Run CSG - запускать CSG
No Clip - то же, только не «обрезать» по границам карты - можно «выпрыгнуть» за карту
Only Ents - то же, только перекомпилировать только объекты
No Sky Clip - то же, только небо не ограничивает движения
Run BSP - запускать BSP
Leak Only - то же, только делать только проверку на наличие утечки LEAK
Run VIS - запускать VIS
Fast - то же, только в быстром режиме
Run RAD - запускать RAD
Sparse - то же, только с алгоритмом для компьютеров с небольшим объемом оперативной памяти.

Как видите, параметры этого объекта совпадают с параметрами компиляторов. Однако я не смог заставить работать этот объект (я использовал ZHLT), хотя и пробовал запускать компиляцию и из Worldcraft, и с помощью bat-файла. В описании halflife_cs-expert.fgd сказано, что этот (и следующий) объект еще не используется компиляторами (но скоро, видимо, будет).

info_lights_rad - точечный объект

Пока бесполезен. Планируется, что этот объект заменит файл lights.rad и будет определять светящиеся текстуры, их яркость и цвет.

info_teleport_destination - точечный объект

Что это такое:
Этот объект работает совместно с trigger_teleport и определяет точку назначения телепортера (или телепорта). Я думаю, не стоит злоупотреблять этими объектами в Counterstrike из-за проблем с реалистичностью.

См. также:
trigger_teleport


Trigger_ entities

Trigger_ объекты, используемые в Counter-Strike

trigger_auto
trigger_camera
trigger_changetarget
trigger_counter
trigger_hurt
trigger_gravity
trigger_multiple
trigger_once
trigger_push
trigger_relay
trigger_teleport

trigger_auto - точечный объект

Что это такое:
Объект trigger_auto позволяет активировать событие, как только начинается уровень. Рекомендуется установить задержку в пол секунды, чтобы все остальные объекты на карте успели появиться наверняка.

См. также:
multi_manager

trigger_camera - точечный объект

Что это такое:
Объект trigger_camera создает камеру. Есть несколько видов камер:

1. Неподвижная камера, неподвижная мишень
Простейший способ сделать камеру. Используется для просмотра того, что происходит в фиксированном другом месте. Экран неподвижно закреплен на одном месте.
1. Вставьте объект trigger_camera. Он будет использован как «глаз», поэтому расположите его в том месте, откуда бы вы ходели видеть картинку.
2. Вставьте объект info_target в том месте, куда камера будет «смотреть». Присвойте ему имя Name (targetname).
Примечание: можно использовать любой другой объект вместо info_target.
3. В параметрах trigger_camera, присвойте полю Target имя объекта info_target. Также дайте имя Name (targetname) самой камере.
4. Установите параметр Hold Time (wait) объекта trigger_camera. Этот параметр определяет период времени, пока игрок смотрит в камеру.
5. В флагах объекта trigger_camera установите Freeze Player, чтобы игрок не мог двигаться пока смотрит в камеру.
Чтобы посмотреть в камеру, необходимо активировать ее с помощью, например, кнопки в виде монитора.

2. Неподвижная камера, подвижная мишень
Используется для создания охранных камер.
1. Создайте камеру как в первом случае.
2. Используйте движущийся объект в качестве мишени.

3. Подвижная камера, неподвижная мишень
1. Создайте камеру как в первом случае.
2. Содайте траекторию движения с помощью объектов path_corner.
3. Установите параметр Path Corner (moveto) объекта trigger_camera равный имени Name (targetname) первого объекта path_corner, куда начнет двигаться объект trigger_camera после активации.
Примечание: камера появится там, где вы ее установили, и начнет двигаться в направлении первого объекта path_corner со скоростью Initial Speed (speed).
4. Как и в первом случае, нужно активировать камеру (только объект trigger_camera).
Примечание: обязательно установите флаг Freeze Player.

4. Подвижная камера, подвижная мишень
1. Создайте камеру как в случае с камерой №3.
2. Создайте движущуюся мишень. Используйте имя мишени в качестве target объекта trigger_camera.

Флаги:
Start at player – камера появится на месте глаз игрока, прежде чем двигаться куда-либо.
Follow player – камера будет использовать игрока в качестве мишени.
Freeze player – игрок не может двигаться, пока камера активна.
Примечание: Камера должна находиться в потенциально видимой области, иначе для движка Халф-Лайфа эта область просто не существует!

См. также:
info_target
path_corner

trigger_changetarget - точечный объект

Что это такое:
Объект trigger_changetarget позволяет изменять значение параметра target (мишень) любого объекта.
Target (target) – имя объекта, для которого вы хотите сделать изменения.
Delay before trigger (delay) – задержка в секундах до изменения свойств после активации триггера.
KillTarget (killtarget) – имя объекта, который будет удален из игры после активации данного триггера.
Name (targetname) – имя обязательно.
New Target (m_iszNewTarget) – новое значение мишени для изменяемого объекта.

trigger_counter - браш-объект

Что это такое:
Объект trigger_counter действует как реле, которое нужно активировать определенное количество раз, прежде чем оно выполнит указанные действия.
Target (target) – мишень. Имя объекта, который будет активирован данным триггером.
Name (targetname) – имя. Если указано, данный триггер можно активировать кнопкой, иначе можно просто «пройтись» по нему.
Master (master) – имя multisource
Delay before trigger (count) – задержка перед активацией мишени в секундах.
Count before activation (count) – количество активаций объекта trigger_counter, прежде чем он активирует мишень.

trigger_hurt - браш-объект

Что это такое:
Объект trigger_hurt вызывает боль и повреждения.
Name (targetname) – имя. Для включени/выключения.
Target (target) – каждый раз, когда объект trigger_hurt вызывает повреждения, он может активировать указанный здесь объект.
Master (master) – имя объекта multisource.
Damage (dmg) – уровень повреждений.
Delay before trigger (delay) – задержка перед активацией объекта-мишени.
Damage Type (damagetype) – тип повреждения:
0 (GENERIC) – общее
1 (CRUSH) – раздавлен
2 (BULLET) – пулевое ранение
4 (SLASH) – ?
8 (BURN) – ожог
16 (FREEZE) – замерзать
32 (FALL) – падение
64 (BLAST) – взрыв
128 (CLUB) – перелом
256 (SHOCK) – шок
512 (SONIC) – оглушение
1024 (ENERGYBEAM) – облучение
16384 (DROWN) – тонуть
32768 (PARALYSE) – парализован
65536 (NERVEGAS) – нервный газ
131072 (POISON) – отравление
262144 (RADIATION) – радиация
524288 (DROWNRECOVER) – всплыл
1048576 (CHEMICAL) – химическое
2097152 (SLOWBURN) –медленный ожог
4194304 (SLOWFREEZE) – медленная заморозка

Флаги:
Target Once (1) – активирует мишень только один раз
Start Off (2) – триггер появится неактивным
FireClientOnly (16) – в КС не нужен
TouchClientOnly (32) – в КС не нужен

trigger_gravity - браш-объект

Что это такое:
Объект trigger_gravity позволяет изменять уровень гравитации на карте. Чтобы сделать такие изменения, игрок должен пройти по области, где расположен брашевый объект trigger_gravity. Уровень гравитации может варьироваться между 0 и 1, где 1 означает нормальный обычный уровень гравитации. Имя позволяет включать/выключать данный триггер, а флаг Pushables позволяет распространять эффект гравитации на передвигаемые предметы.

Внимание: использовать данный объект нужно с осторожностью. Необходимо минимум два таких объекта: один для включения, и один для восстановления гравитации при выходе из зоны действия пониженной гравитации. Имейте также ввиду, что если игрок гибнет в поле действия пониженной гравитации, в следующем раунде он будет иметь меньший вес по всей карте до тех пор, пока не пройдет через триггер, восстанавливающий нормальный уровень гравитации.

trigger_multiple - браш-объект

Что это такое:
Объект trigger_multiple полностью эквивалентен объекту trigger_once, за исключением того, что он имеет параметр wait, который определяет время неактивности после того, как объект trigger_multiple был использован последний раз.

См. также:
trigger_once

trigger_once - браш-объект

Что это такое:
Объект trigger_once позволяет активировать событие в момент, когда игрок находится в области действия триггера. Для использования укажите имя объекта мишени в параметре Target. Также можно изменить время задержки перед активацией Delay.

См. также:
trigger_multiple
trigger_relay

trigger_push - браш-объект

Что это такое:
Этот объект создает невидимое поле, которое толкет игрока (и передвигаемые объекты func_pushable). Укажите направление давления Angle и скорость Speed. Из флагов можно использовать start off – начинать выключенным (требует имя для возможности активации), only once – толкать только один раз и breakables – толкать объекты.

См. также:
func_conveyor

trigger_relay - точечный объект

Что это такое:
Объект trigger_relay действует как реле между триггером и событием. Особенно полезен для активации нескольких событий одним триггером. Для этого создайте несколько объектов trigger_relay с одинаковыми именами, и укажите разные мишени.
Примечание: можно более эффективно использовать объект multi_manager для активации цепочки событий.

Name (targetname) – имя обязательно.
Target (target) – имя объекта-мишени.
Killtarget (killtarget) – имя объекта, удаляемого при активации реле.
Delay (delay) – задержка перед активацией мишени.
Trigger State (triggerstate) – состояние триггера. Может быть off (0) – выкл., on(1) – вкл. или toggle(2) – перекл. Если установлен в toggle, реле действует как обычный триггер. Если установлен в on, действует только на выключенные объекты (включает), off действует наоборот (выключает).

Флаги:
если установлен флаг Remove on fire (1), реле срабатывает только один раз, а затем удаляется из игры.

См. также:
trigger_once
trigger_multiple
multi_manager

trigger_teleport - браш-объект

Что это такое:
Этот объект позволяет телепортировать игрока в точку, указываемую соответствующим info_teleport_destination. Есть два способа создания телепортеров: простой и сложный; используем простой способ, так как в Counterstrike мы хотим реалистичности, что плохо стыкуется с телепортацией. Создайте объект info_teleport_destination в месте, куда нужно телепортировать игрока, присвойте ему уникальное имя (Name). Создайте сам телепорт и укажите в качестве мишени имя объекта info_teleport_destination - работающий телепорт создан!

См. также:
info_teleport_destination


Разные объекты

Miscellaneous entities – вспомогательные объекты, используемые в Counter-Strike

ambient_generic
armoury_entity
button_target
cycler_sprite
hostage_entity
infodecal
light
light_environment
light_spot
momentary_door
momentary_rot_button
multi_manager
multisource
path_corner
path_track
player_weaponstrip

ambient_generic - точечный объект

Что это такое:
Этот объект позволяет воспроизвести звуковой файл.
Name (targetname) – имя. Если присутствует, можно активировать триггером.
Path/filename.wav of WAV (message) - имя .wav файла для воспроизведения. Используйте файл pak0.pak, папку Sound по умолчанию. При указании пути, используйте прямой слэш (например, если используете звук sound\ambience\sound.wav, введите значение ambience/sound.wav в этом поле).
Volume (10 = loudest) (health) – громкость, 10 самый громкий.
Следующие значения влияют на способ вопроизведения звука. Их сложно объяснить, поэтому поэксперементируйте лучше сами?.
LFO type 0)off 1)sqr 2)tri 3)rnd (lfotype) -
LFO rate (0-1000) (lforate) –
LFO mod pitch (0-100) (lfomodpitch)
LFO mod vol (0-100) (lfomodvol)

Флаги:
Play Everywhere (1) – звук слышен по всему уровню
Small Radius (2) – малый радиус распространения звука
Medium Radius (4) – средний радиус
Large Radius (8) – большой радиус
Start Silent (16) – в начале уровня беззвучный.
Is NOT Looped (32) – не повторять. Воспроизводит файл только один раз. Если флаг установлен, каждый раз, когда объект активирован, он будет проигрывать этот файл. Если же нет, то активация объекта будет включать/выключать звук.

См. также:
env_sound

armoury_entity - точечный объект

Этот объект позволяет положить оружие того или иного типа на карту.
Item - вид оружия или аммуниции (автомат или винтовка или еще что хотите!)
Count - количество экземпляров

button_target - браш-объект

Что это такое:
Объект button_target позволяет создать предмет, который ведет себя как кнопка при попадании в него из оружия (он не "вдавливается" в стену как кнопка, но меняет текстуру при необходимости) и активирует указанный объект.
Targeted object (target) - объект-мишень, который активируется при попадании в кнопку.
Master (master) - имя объекта multisource.

Флаги:
Use Activates (1) - если установлен, кнопку можно активировать нажатием клавиши +use во время игры.
Start On (2) - если установлен, в начале уровня кнопка будет использовать текстуру, соответствующую нажатому состоянию.

См. также:
func_button

cycler_sprite - точечный объект

Что это такое:
Объект cycler_sprite позволяет вопроизводить последовательность кадров анимированного спрайта. Выстрел по объекту во время паузы привeдет к смене кадра на следующий.
Name (targetname) - имя. При активации, анимация будет останавливаться/продолжаться. Если пауза включена, стрельба по объекту будет менять кадр на следующий.
Sprite (model) - модель спрайта. Необходимо указать имя файла со спрайтом в формате sprites/spritename.mdl.
Frames per second (framerate) - кадры в секунду - скорость воспроизведения анимации.
Rendering Properties - параметры отображения.
Примечание: клавиша +use имеет то же действие на объект cycler_sprite что и активация его с помощью триггера.

hostage_entity - точечный объект

Этот объект позволяет указать точку появления заложника на карте.

infodecal - точечный объект

Что это такое:
Объект infodecal позволяет вставлять в карту декали, такие как царапины, кроваве пятна, дырки от пуль и т.д. Вы можете вставлять их как обычные объекты, так и с помощью Worldcraft.

Определите в окне 3D место, куда хотите поставить декаль. Выберите интсрументы SELECT и DECAL. В поле выбора файлов с текстурами, выберите файл decals.wad, и выберите соответствующую текстуру.
Примечание: тектура должна быть из файла decals.wad.

light - точечный объект

Что это такое:
Этот объект создает точку освещения. Вставьте в карту в нужном месте и укажите цвет и яркость (brightness). Чтобы иметь возможность включать/выключать, присвойте объекту имя.
Name (targetname) - имя.
Brightness (_light) - яркость/цвет. Это значение RGB-цвета и уровень яркости (первые три числа - уровни красного, зеленого и синего, а четвертое - яркость).
Примечание: значение "0 0 0 0" фактически приведет к выбору цвета"255 255 255" и средней яркости.
Custom Appearance (pattern) - внешний вид. Если желаете настроить внешний вид источника цвета (шаблон), укажите строку из букв от a до z. a - темный, z - светлыйt. Например, строка abcdefghijklmlkjihgfedcba создаст свет, начиная от темного до яркого (затем повтор). Также необходимо указать имя объекта, даже если вы на него нигде не ссылаетесь.

См. также:
light_environment
light_spot

light_environment - точечный объект

Что это такое:
Объект light_environment управляет угол, направление, цвет и яркость света, исходящего из неба. Только один объект нужен для одного участка карты.
Просто укажите угол, направление (отрицательное - вниз), цвет и яркость. Также важно упомянуть, что браши неба должны иметь текстуру "SKY" на всех сторонах.

См. также:
light
light_spot

light_spot - точечный объект

Что это такое:
Объект light_spot позволяет создать направленный источник света, регулируя угол, направление, цвет и яркость света.Направление указывается углом, а отклонение от горизонтали с помощью поля pitch (значения > 0 - отклонение вверх, < 0 - отклонение вниз).
Name (targetname) - имя.
Target (target) - укажите имя объекта info_target, если хотите чтобы свет был направлне на него.
Inner (bright) angle (_cone) - угол отклонения от центральной оси внутри луча, который определяет более яркий участок света.
Outer (fading) angle (_cone2) - угол отклонения от центральной оси снаружи луча, который определяет более темный участок луча.
Pitch (pitch) - угол отклонения луча от горизонтали
Brightness (_light) - цвет и яркость как в объекте light.
Is Sky? (_sky) - это небо? Может быть 0 (нет) или 1 (да). Если установлен в (1) да, то объект будет определять свойства неба, а не создавать направленный свет.

Флаги:
Initially dark (1) - изначально выключен.

См. также:
light
light_environment
info_null

momentary_door - браш-объект

Что это такое:
Объект momentary_door создает обычную сдвигающуюся дверь, которая, однако, иожет открываться только при активации объектом momentary_rot_button. Параметры такие же как и у обычной двери func_door, только укажите имя (Name targetname) и активируйте ее с помощью momentary_rot_button.

См. также:
func_door
momentary_rot_button

momentary_rot_button - браш-объект

Что это такое:
Объект momentary_rot_button используется только для активации объекта momentary_door. Настройка достаточно проста. Укажите центр объекта с помощью ORIGIN браша, укажите имя объекта-мишени и ось вращения, если это не ось z (по умолчанию).

См. также:
momentary_door

multi_manager - точечный объект

Что это такое:
Объект multi_manager действует как реле. Он может контролировать до 16 различных событий/объектов. Активируюя этот объект, вы активируете все указанные в нем объекты.
Для включения объектов в состав multi_manager, добавьте новые ключи (keys). (Выключите кнопку Smart Edit и добавляйте с помощью Add). Каждый ключ - это имя объекта для активации, а значение ключа - задержка перед активацией.

См. также:
multisource
trigger_relay

multisource - точечный объект

Что это такое:
Объект multisource позволяет создавать ситуации, когда необходимо выполнение нескольких условий, прежде чем событие произойдет.
Name (targetname) - имя обязательно. Укажите это имя в параметре Master для тех объектов, которые должны зависеть от состояния данного объекта.
Target (target) - имя объекта-мишени (см. ниже)
Global State Master (globalstate) - имя глобальной переменной, устанавливаемой с помощью объекта env_global, которую можно использовать для управления состоянием объекта multisource.
Target - имя объекта, которое нужно активировать
Это свойство позволяет использовать объект multisource как специальное реле. Например, вы хотите воспроизвести звук только тогда, когда четыре кнопки будут нажаты. Если одна из кнопок "отожмется", звука не будет.
С помощью объекта multisource это очень просто сделать. Укажите у всех кнопок имя объекта multisource в качестве мишени. Укажите мишенью объекта multisource имя объекта ambient_generic (для звука). Теперь, пока все кнопки не нажаты, звука не будет.

См. также:
multi_manager
env_global

path_corner - точечный объект

Что это такое:
Вы можете использовать этот объект для создания связанного списка точек движения, по которым будет двигаться платформа func_train. Просто дайте уникальное имя и укажите следующую точку движения в поле Target .
Чтобы указать длительность остановки, укажите значение Wait, а для задания новой скорости, укажите параметр new speed.

Флаги:
Wait retrigger - платформа будет ждать, пока вы не активируете ее еще раз чтобы продолжить движение

См. также:
func_train
path_track

path_track - точечный объект

Что это такое:
Объект path_track определяет путь движения для поезда func_tracktrain. Расположение объектов path_track будет соответствовать положению ORIGIN браша объекта func_tracktrain.
Name (targetname) - имя.
Next stop target (target) - имя следующего объекта path_track. Если не указано, поезд остановится здесь.
Fire on pass (message) - имя объекта, запускаемого при прохождении поезда через эту точку.
Branch Path (altpath) -имя альтернативного объекта path_track. Используется для смены пути (переключения рельсов). Если здесь указано значение, то при активации этого объекта, поезд поедет по альтернативному пути, а не к следующей точке движения.
Fire on dead end (netname) - имя объекта, запускаемого при достижении конца пути.
New Train Speed (speed) - новая скорость поезда, применяемая после прохождения данной точки движения.

См. также:
func_tracktrain
func_traincontrols
func_trackchange
func_trackautochange
path_corner

player_weaponstrip - точечный объект

Что это такое:
Объект player_weaponstrip отбирает у игрока, активировавшего данный объект, все имеющееся оружие (включая нож!). Для использования присвойте объекту player_weaponstrip имя Name (targetname) и настройте какой-либо триггер для его активации.


Rendering Properties

Rendering Properties - параметры отображения

Большинство браш-объектов позволяют регулировать параметры отображения. Эти параметры можно разделить на четыре категории: Render FX (renderfx) - эффекты, Render Mode (rendermode)- режим, FX Amount (renderamt) -уровень эффектов и FX Color (rendercolor) - цвет эффекта.

Render FX (renderfx) - эффекты при отображении

Параметр Render FX управляет визульным поведением объекта. Свойтсва включают мигание, затемнение, искажение и др.
Normal (0)
Slow Pulse (1)
Fast Pulse (2)
Slow Wide Pulse (3)
Fast Wide Pulse (4)
Slow Fade Away (5)
Fast Fade Away (6)
Slow Become Solid (7)
Fast Become Solid (8)
Slow Strobe (9)
Fast Strobe (10)
Faster Strobe (11)
Slow Flicker (12)
Fast Flicker (13)
Constant Glow (14)
Distort (15)
Hologram (Distort + fade) (16)

Render Mode (rendermode) - режим отображения

Параметр Render Mode определяет, как будет отображаться объект. Существует шесть режимов отображения:
Normal (0)
По умолчанию
Color (1)
В этом режиме текстуры объекта изменяются в зависимости от цвета, указанного в параметре FX Color. Уровень прозрачности контролируется параметром FX Amount.

Texture (2)
Этот режим позволяет изменять прозрачность объекта. Используется для создания стекол. Уровень прозрачности указывается в параметре FX Amount.

Glow (3)
Совместно с объектом env_glow, позволяет создавать эффект размытой дымки вокруг источников света. Параметр FX Amount определяет прозрачность дымки, а FX Color определяет ее цвет.

Solid (4)
Этот режим используется для объектов с текстурами с битовыми масками (например "{FENCE" ). Объекты типа func_wall (или другие), использующие текстуры с прозрачными областями, должны использовать этот режим отображения и параметр FX Amount равный 255.

Additive (5)
Этот режим похож на предыдущий за исключением того, что игрок может видеть, что находится за указанным объектом. Используется, например, для создания воды.

FX Amount (renderamt) - уровень эффектов
Оьбычно параметр FX Amount используется для определения уровня прозрачности объекта. Значения варьируются от 0 до 255, где 0 - абсолютно прозрачный, а 255 - абсолютно непрозрачный.
FX Color (rendercolor) - цвет эффекта
Для режимов отображения, которые требуют цвет (Color и Glow), параметр FX Color определяет необходимый цвет.


Статьи

В этом разделе представлено большинство всевозможных случаев по картостроению. Например как создать свет, воду или двери на вашей карте.

Стёкла

Лесенки

Небо

Продвинутое небо

Двери

Свет

R_SPEEDS

Вода

Clip браши

Световые лучи

Звук на вашей картe

Цыпленок по-итальянски

Поезда и иллюзия бесконечного движения

Создание "живой" техники

Гром и молния на вашей карте

Дождь на карте

Камеры на картах

Двери со стеклом

Одностороннее стекло

Clip и origin браши

Водопад

Создание земли и холмов

WADы и текстуры

ЧаВО: частые вопросы и ответы на них. Советы


Стекло

Что такое стекло? Стекло это энтити.

Стёкла бывают 1разбиваемые 2неразбиваемые 3разбиваемые от тригера.

1.Разбиваемые . Создайте браш который у вас будет стеклом , полностью затекстурируйте его стеклянной текстурой (пример glass_bright) отправьте toEntity поставьте func_breakable.

В пропертис вашего стекла поставьте : strenght - жизни стекла :)

Material type : тип материала , glass

Render mode : texture

FX amount : степень прозрачности (100 - оптимально)

Вот у вас стекло :)

2.Неразбиваемое .Создайте браш который у вас будет стеклом , полностью затекстурируйте его стеклянной текстурой (пример glass_bright) отправьте toEntity поставьте func_wall

В пропертис вашего стекла поставьте :

Render mode : texture

FX amount : степень прозрачности (100 - оптимально)

Вот у вас стекло :) бессмертное :))

3.Разбиваемые от тригера .Создайте браш который у вас будет стеклом , полностью затекстурируйте его стеклянной текстурой (пример glass_bright) отправьте toEntity поставьте func_breakable.

В пропертис вашего стекла поставьте :

name : имя в таком случае обязательно

strenght - жизни стекла :)

Material type : тип материала , glass

Render mode : texture

FX amount : степень прозрачности (100 - оптимально)

Flags : Здесь поставьте only trigger.

Ну и главное поставьте тригер (это может быть бомба , тригер ванс) и в поле таргет (цель тобиш) поставьте имя вашего стекла.

вот и всё.


Лесенка

Лесенка это 2 энтити : func_wall и func_ladder. Причём расположены они должны быть вот так :

тоесть func_ladder`ом к игроку , func_wall`ом к стене.

Теперь раассмотрим как это делается.

Func_wall. Делаем браш , отправляем toEntity , ставим func_wall. Затекстурируем. (к примеру текстурой {ladder1 )

Затем в пропертис func_wall`а ставим :

Render mode : solid

FX amount : 255

p.s. это для того чтоб сделать синие части прозрачными (подойдёт не только для лесниц)

Func_ladder . Это собсно и есть лесенка :) . Делаем ещё один браш , ставим перед func_wall`ом (как на рисунке) , затекстурируем aaatrigger`ом (обязательно aaatrigger`ом) и отправляем toEntity . Там выбираем func_ladder и ВСЁ ГОТОВО.

p.p.s. можно ставить func_ladder по обоим сторонам func_wall`а , тогда (если к вашей леснице можно подойти с обоих сторон) можно будет залезать по ней с обеих сторон. (пример : карта ассаулт . Там в самом здании есть такая)

p.p.p.s. пока не забыл : стандартная ширина (не путайте с толщиной) лестниц 16 юнитов.


Небо

Давно надо было про небо рассказать...

1 - что такое небо? в ХЛ небом являются картинки (tga). Для каждого неба должно быть 6 картинок.(передняя , задняя , левая , правая , верхняя и нижняя)

2 - что такое небо? в ВК небом является браш затекстурированный текстурой sky.

А теперь рассмотрим как это делается.

Сначала рисуйте свой уровень . Потом (когда уровень нарисуете :) сделайте офигенный браш , в который должен поместиться весь уровень. Теперь надо сделать браш пустым. выделяйте его и жмите ctrl + h . В появившемся меню выбирайте размер стенок (я люблю 16) и вперёд. Теперь у нас есть "коробка" . Выделяйте её ("коробку") и полностью затекстурируёте текстурой sky. Теперь "разместите в коробке" свой уровень.

Теперь давайте ка выберем небо. Зайдите в меню Map там выберите map properties.

Вылезет вот это :

вот тут то и пишите (в environment map) имя неба . пример city1 (assault) desert (militia вроде...)

Это простой способ построения неба. Я им не пользуюсь т.к. в этом случае сильно увеличивается врямя компиляции. (к тому же тут можно за пределы карты выпрыгнуть). Но для начинающих сайдёт. Может в последующих параграфах опишу как делать "Продвинутое" небо.


Продвинутое небо

Вот блин и добрались! многие из вас уже успели нахотеться узнать об этом вдоволь. Ну поехали ...

Вспомним параграф небо и параграф свет . А конкретнее вспомните пожалуйста о light_environment .

Вспомнили чё это такое? Ну и слава богу. как я его окрестил "солнышко". Но вы нарно не раз задавали вопрос : А почему блин на картах без неба "солнышко" не пашет?

Хехе. ответ прост : "солнышко" проэцирует свет именно с неба!

и от сюда проблемы! ведь если мы уровень поместили в "небесную коробку" то и вншняя часть будет освещена! Ну в принципе это не трагедия ... это всего лишь означает что время компиляции "немного" увеличится и карта будет потормознее.

Ну давайте объясню суть! (на примере)

ну такой грубый пример но всё же

1. сделайте браш 512-512-512

2. закрасьте чем хотите (кроме неба, воды, и всяких "спец" и движущихся текстур ну например -2babfl)

3. примените к брашу Холлоу (hollow, ctrl+h), толщину задайте 32.

4. выделите нашу коробочку и нажмите ungroup (ctrl+u)

5. на виде side (x/z) выделите самый верхний браш и удалите его

7. скопируйте наш "браш" в буфер. и вставьте его рядом.

8. выделите то что вставили (я копию этого "браша" имел в виду :) ) и нашмите на него разок мышью

а теперь зажмите шифт и хватайте мышью за кружок (какой угодно) и переверните нашу конструкцию (вот так)

10. теперь состыкуйте наши "конструкции" и верхнюю закрасьте текстурой sky /

11. поздравляю вас товарищи! ставьте "солнышко" и места респауна. надеюсь что принцип вам ясен ..

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

таким образом компилятор не обсчитывает свет на "изнанке" карты , и это есть гуд!

зыы. для сравнения. на однй моей карте я сначала проводил компиляцию с обычным небом, а потом с продвинутым. время компиляции hlrad'ом уменьшилось с 534 до 147 секунд. факт.


Двери

"двери бывают разные ...."

основных типов дверей - 2

это : отккрывающиеся (как на милиции) и отъезжающие (как на сьедже и на продиджи)

Стандартный размер двери 64x4x96 юнитов.

Начнём с отъезжающих т.к. они проще

1-ый подтип - обычные/от use`а

2-ой подтип - от кнопки/рычага

3-ий подтип - от триггера

Итак 1-ый подтип....

начнём с дверного проёма . Делать его будем с помощью утилиты carve

потом построим браш который и будет дверью (естественно браш должен быть тоньше чем проём)

ну и отправить этот браш toEntity и выбрать func_door.

в пропертис :

важно!

speed - скорость движения (обычно 100)

delay befor close ... - время до закрытия , если -1 то открыта всегда (Прим. Липа: ну не всегда, а при первом открытии дверь остается открытой до конца раунда) (раньше так было на сьедже в бете 5 и раньше) я обычно ставлю 4

angle : стрелочка указывает куда дверь будет отъезжать в плоскости x/y (по дефолту с боку от 3д вида), также можно поставить up/down - ну вверх вниз

менее важно :

move sound - звук при движении

stop sound - звук во время остановки двери

остальное я вообще не использую ну кроме :

в разделе флагс можете поставить чтоб дверь открывалась тока по нажатию use`а (use only) и вот это

- Stay Open: Не позволяет двери закрытся, после того как она открыта один раз.
- Passable: Делает объект не материальным. Через него можно пройти.

(Прим. Липа: более подробно о свойствах дверей смотрите здесь)

всё... у вас дверь !

2-ой подтип от кнопки/рычага

делается почти как предъидущая но с некоторыми добавками:

нужна кнопка или рычаг (как на милиции) :

кнопка это браш отправленный toEntity в func_button...

стоит сказать что в пропертис функ_дор`а надо будет указать :

name - имя ... ну door_1

и во флагах убрать use only нафиг

а в пропертис кнопки :

targetted object - ту самую дверь door_1 (например :) )

и во флагах поставить : Don`t move - чтоб кнопка не двигалась

ну вроде и всё...

а если хотите рычаг то порядочно надрочитесь перед этим так шо лучше и удобней кнопка... но для желающих :

ну чё смотрите...

дверь делаем как в первом случае и убираем флаг use only и даём двери имя (door_2)

теперь сделайте то что у вас рычагом будет...

сделайте ось вращения рычага из текстуры origin (текстура специально для осей вращения) и выделив рычаг и ось вращения отправляем это toEntity в func_rot_button.

теперь пропертис func_rot_button`а :

angle - в данном случае зависит от вас ... если как на рисунке то 0

targetted object - от вас зависит ... пример door_2

speed - у меня 100

sounds - ставьте чё хотите... у меня вроде сквики

distance(deg) - дистанция в градусах .... у меня 90

теперь флаги (flags):

not solid - не солид ... ну всмысле вас "задевать не будет... рекомендую

reverse dir - крутиться в обратную сторону...(вроде по дефолту кручение происчодит против часовой стрелки) если вам не нравится что рычаг поворачивается против часовой то поставьте

X axis и Y axis - собсно по какой из осей будет крутиться (если как на рисунке то Y)

Ну и третий подтип от триггера:

как видите проще пареной репы

делаем браш который является зоной войдя в которую дверь откроется...

отсылаем браш toEntity и ставим trigger_multiple а в пропертис указываем лишь имя двери (поле target) например door_4

смотрите не переборщите с размерами браша :))))

мдааа а помните в 5-ой бете на сьедже (cs_siege) в домике снизу была дверь которая открывалась тока изнутри ? ну конечно помните !

так вот как она была устроена

этот самый триггер_мультипле стоял тока с внутренней части соответственно открывается дверь тока с одной стороны ! вот так

Второй же тип дверей которые именно открываются (cs_millitia).

естественно и подтипов их 3 :

1 обычные/use

2 кнопка/рычаг

3 триггер

делаются подтипы так же как и в случае с отъезжающими дверями

так шо мусолить по 10 раз не буду, принцип один и тот же ...

Принцип построения :

стена - проём - браш/дверь - браш/ось

ну стоит сказать лишь что ось надо строить из текстуры origin

теперь выделяем ось и дверь и отправляем это toEntity а там func_door_rotating... (тока не забудьте что выделять надо _оба_ объекта . ну чтоб они оба покраснели)

теперь пропертис :

обычные пропертис func_door`а плюс вот ещё что

distance(deg) - это дистанция в градусах обычто чтото типа 90~120

- Pitch Yaw Roll (XYZ): Настройки на поворот в любом направлении.

плюс куча ненужных флагов (кроме use only ну и ещё кой чего) вот :

- Reverse Dir: Двери будет открываться в противоположную от вас сторону.
- One-way: Дверь можно открывать только с одной стороны..
- X Axis: Обычно WC вращает дверь относительно оси Z. Это опция позволяет вращать её относительно X.

а так всё


Свет

".... да будет свет.... "

Пришла пора поведать вам о том без чего не обходится ни один уровень. Да, это свет.

но свет бывает разный

есть 3 вида : обычный, направленный и окружающий

1. Обычный.

самый простой, самый распространённый: light

собсно надо то всего энтитю light поставить туда, где вы хотите чтоб был свет

вот:

обычный всенаправленный свет как любая лампочка...

(Прим. Липа: Следует сказать, что свет всего напросто сфера с определенным цветовым оттенком и фиксированным размером (деаметром). Так что ставьте ее не высако от стенок и потолка, а то свет просто не отобразится на поверхности, так как будет слишком далеко находится)

проперти ентой энтити тоже простые

target - цель (укажите тут имя цели), это если хотите чтоб свет использовался как прожектор

ну вот как здесь :

на этом рисунке энтитя light находится там где стою я , а перед стенкой на которую я смотрю стоит info_target . и поэтому свет становится как бы прожекторным (в пропертях энтити info_target надо обязательно дать ей имя и вписать его в графу target в пропертях light`а)

name - имя "лампочки" . Используется для включения/выключения от кнопки/рычага/триггера . Самое распространённое это кнопка . просто сделайте браш (маленький , это ж кнопка)окрасьте его "кнопочной текстурой" (например +abutton3) ,отправьте его toEntity и поставьте func_button . В пропертях func_button`а поставьте в поле targetted object имя вашей "лампочки" и во флагах don`t move чтоб она не двигалась. а если хотите знать о кнопках-рычагах больше то читайте параграф о дверях . Всё что там написано для дверей подойдёт и для "лампочек" )

(а вот и свет пропал :) это я кнопочку нажал :)

Brightnes - переводится яркость , но на деле цвет света (просто нажмите pick colour и выберайте наздоровье но никогда не ставьте "разноцветные лампочки" рядом да и вообще пользуйтесь белым цветом , он круче :) последние три цифры - это яркость

Appearance - стиль, так скажем... можно сделать "лампочку" мигающей , мерцающей и тд . но я чёто на КСовских картах кроме normal нифига не замечал...

вот и всё...

2. Дальше идёт направленный но я сначала возьму окружающий.

это light_environment .

используется он на открытых картах типа милиции или даста.

(Прим. Липа: открытой картой является карта, имеющая кусок неба (браш с текстурой sky). А почему отрицательный, да что бы солнце сверху светило, а не снизу)

из его пропертей стоит знать лишь brightnes тобишь цвет и яркость.

Pitch в любом случае должен быть отрицательным/

(Прим. Липа: это угол под которым будет свет. Нужно для направления теней (что бы красиво было :))

и ещё одно зайдите вот сюда :

и тут поставьте

default light level - тобиш уровень света . я люблю 75

default Wave Height - у меня равна одному (1)

.. ну environment map я рассматривал в параграфе о небе.

вот и всё у вас есть light_environment тобиш "солнышко" :)

примечание : на дасте "солнышек" несколько поэтому он такой "светлый"

(Прим. Липа: вранье чистой воды :). Оно там одно, но яркое)

3. Теперь направленный ака light_spot.

вот на что похож направленный свет:

и

как видите он своё название оправдывает...

проперти у него сложные так шо советую туда не суваться....

и вообще лично я этим типом света не пользуюсь

скажу лишь что если ничего не трогать (в пропертях) то будет как на предпоследней картинке...

но если у вас есть желание поэксперементировать с углами и наклонами то может получиться неплохой прожектор ... дерзайте

И ещё - напоследок 8-)

4. Световые текстуры.

Т.е. текстуры которые испускают свет.

всё предельно просто . Обычно на картах много света и приходится применять много энтить light . Но если мне память не изменяет о бщей сложности должно быть не более 256 (Прим. Липа: Автор не прав. Допустимое количество точечных (MAX_MAP_ENTITIES) или энтитей-брашей (MAX_ENGINE_ENTITIES) на карте - 1024. Соответственно в сумме и тех и тех можно наделать - 2048.) энтить на карту. Вот поэтому световые текстуры и предпочтительней (конечно же не только поэтому . и не нужно думать что световая текстура может заменить light , ведь она не может включаться и выключаться от кнопки или ещё чего либо и к томуже если вы хотите сделать 2-е потолочные лампы окрашеные текстурой (ну какой нито lamp) то они будут светить совершенно одинаково , а что если вы хотите чтоб одна из них светила чуть ярче ? В общем это неплохая вещь (свет.текстуры) но не слишком универсальная.

список световых текстур находится в файле valve.rad в корневой директории ВК.

Содержит он следующее :

+0~GENERIC65 255 255 255 750
+0~GENERIC85 110 140 235 20000
+0~GENERIC86 255 230 125 10000
+0~GENERIC86B 60 220 170 20000
+0~GENERIC86R 128 0 0 60000
GENERIC87A 100 255 100 1000
GENERIC88A 255 100 100 1000
GENERIC89A 40 40 130 1000
GENERIC90A 200 255 200 1000
GENERIC105 255 100 100 1000
GENERIC106 120 120 100 1000
GENERIC107 180 50 180 1000
GEN_VEND1 50 180 50 1000
EMERGLIGHT 255 200 100 50000
+0~FIFTS_LGHT01 160 170 220 4000
+0~FIFTIES_LGT2 160 170 220 5000
+0~FIFTS_LGHT4 160 170 220 4000
+0~LIGHT1 40 60 150 3000
+0~LIGHT3A 180 180 230 10000
+0~LIGHT4A 200 190 130 11000
+0~LIGHT5A 80 150 200 10000
+0~LIGHT6A 150 5 5 25000
+0~TNNL_LGT1 240 230 100 10000
+0~TNNL_LGT2 190 255 255 12000
+0~TNNL_LGT3 150 150 210 17000
+0~TNNL_LGT4 170 90 40 10000
+0LAB1_W6D 165 230 255 4000
+0LAB1_W6 150 160 210 8800
+0LAB1_W7 245 240 210 4000
SKKYLITE 165 230 255 1000
+0~DRKMTLS1 205 0 0 6000
+0~DRKMTLGT1 200 200 180 6000
+0~DRKMTLS2 150 120 20 30000
+0~DRKMTLS2C 255 200 100 50000
+0DRKMTL_SCRN 60 80 255 10000
~LAB_CRT9A 225 150 150 100
~LAB_CRT9B 100 100 255 100
~LAB_CRT9C 100 200 150 100
~LIGHT3A 190 20 20 3000
~LIGHT3B 155 155 235 2000
~LIGHT3C 220 210 150 2500
~LIGHT3E 90 190 140 6000
C1A3C_MAP 100 100 255 100
FIFTIES_MON1B 100 100 180 30
+0~LAB_CRT8 50 50 255 100
ELEV2_CIEL 255 200 100 800
YELLOW 255 200 100 2000
RED 255 0 0 1000

Это световые текстуры использованые самим Вальвом при изготовлении ХЛ.

первый элемент - название текстуры

второй - красный цвет

третий - зелёный

четвёртый - синий

пятый - яркость

Чтоб ваши свет.текстуры засветились - нужно переименовать этот файл в lights.rad и поместить в одну директорию с Зонерами а потом скомпилить свою карту.

(я компилю бат файлами поэтому у меня и зонеры и исходники - и lights.rad в одной директории)

Вы можете редактировать и изменять свой lights.rad файл как вам угодно (можете добавить новые текстуры , отредактировать свойства старых и тд.)

вот и хватит вам про свет рассказывать...

(Прим. Липа: Вывод: Используйте рад файл для простого света, и световые энтити для динамичного.)


R_speeds...

"R_speeds как много в этом звуке ..."

так что же это такое и с чем его кушают ?

Во первых это консольная команда r_speeds 1

Чтоб глянуть r_speeds на своём или каком либо другом уровне, создайте игру на карте, р_спидс которой вы хотите глянуть.

затем в консоли введите команды : developer 1 и затем r_speeds 1 и вверху экрана побегут цифры

1. это ФПС (frame_per_second) кадры в секунду... нас это практически не интерисует

2. ваш ээээээээ пинг?... не ... вроде нет ..... короче это нам не интересно

3. а вот это wpoly . тобиш то что нужно

4. а это epoly тобиш то что не нужно :) (Прим. Липа: на самом деле это кол-во полигонов моделей (игроки, пушки, осколки стекла или дерева. Так что не переборщите с ними, хотя их допускается намного больше чем вполей.))

Что же такое wpoly ? а это батенька world_polygon то есть количество полигонов которые в данный момент обрабатывает движок Халфа (и как следствие которые вы видите) (Прим. Липа: фишка в том, что иногда получается так, что комп обрабатывает ту часть карты которую не видит игрок, но машина думает наоборот (такой вот парадокс), но пока не грузитесь, это уже более сложная часть и читайте об этом в моей статье о Хинт брашах)

для любопытных epoly это entity_polygon тоесть энтитевые полигоны... (тобиш полигоны 3д моделей - рука с оружием , другие игроки и тд)

итак world_polygon... как написал великий Клиф : ни в одном месте карты этот паказатель не должен привысить 600. Тоесть вам надо пробежаться по всей карте и облазить все углы чтоб выяснить где у вас полигонов больше чем нужно... (ну стоит отметить что Клиф вам не указ :-) лично у меня бывает и 750 wpoly )

фууу вроде описал вам суть проблемы ...

И ещё face или фэйс - это отдельная сторона\грань браша. Например квадрат это 6 фэйсов.

А теперь _РеальныЕ_ советы по снижению кол-ва World_Polygon'ов !

Самые простые и не практичные :

1.не делайте больших открытых поверхностей с большим количеством мелких предметов

2.блокируйте вид различными препятствиями , стенами , ящиками . Не позволяйте игроку видеть слишком много.

это основное что вам ответят на вопрос о снижении р_спидс , но эти советы не универсальны ведь каждая карта уникальна и нужен соответственный подход к решению этого вопроса.

а вот советы универсальные :

Совет №1

1. Сперва советую вам глянуть вот сюда :

это структура бсп постаралась ! как видете в этой самой сис-ме БСП соприкасающиеся world браши бьются на дополнительные полигоны ... эт очень прискорбно , особенно учитывая что на картах бывает много мелких предметов и ящиков...

решений 2 - какое выбирать - ваше дело (в некоторых случаях предпочтительней одно , в некоторых другое)

итак решение 1 - сделать мелкий браш энтитей (функ_вол например) Получим:

круто не так ли ? как видите браш бэйзд энтити могут сослужить вам хорошую службу в деле снижения р_спидс . а теперь кое что от Зонера ! - помните раньше нельзя было делать так чтоб энтитя отбрасывала тень.

А с появлением ЗХЛТ > 2.2 можно !

Достаточно указать в пропертях энтити :

Новый лайт флаг и всё ! тока не перетрудитесь - ведь если вы заставите отбрасывать тень функ_пушейбл или функ_брекейбл - то и после сдвига\уничтожения тень останется %-)

Подсказка : движек прекрасно видит всё что находится за энтитями ... так что не делайте стены и прочие элементы каркаса карты энтитями...

Метод 2 - аналог первого но суть в том что можно этот браш и не делать энтитей а сделать зазор в 1 юнит. Т.е. он не будет соприкасаться со стеной а следовательно не будет бить на ней полигоны.

Этот метод широко распространён (лично я видел это на Кобле , Трэйне , Бэкаллее и тд)

это лампа которая весит на расстоянии 1юнит от потолка.

Во всех местах соединений между объектами можно делать зазоры размером в 1 (один) юнит. Например между проводом от лампы и потолком или асфальтом и колесами автомобиля. Такие зазоры не видны, но они сильно помогают. (Прим. Липа: только не делайте эти зазоры на уровне глаз игрока, а то получится, что объект висит в воздухе, а это не есть гуд)

Эти 2 описаные выше метода применимы лишь к ящикам столам и прочим мелочам.

Идём дальше . пора вам узнать что один полигон это одна сторона браша либо одна текстура на стороне браша (если сторона например 128 на 128 а размер текстуры 64 на 64 по получим 4 полигона на стену) (Прим. Липа: Берут меня сомнения для данного примера. А не 5 ли полигонов выходит? 4 текстуры и плюс одна сторона!)

поправочка : Не знаю что сказать но я не полностью уверен в том что один фэйс - 1 полигон . Т.к DaveJ говорил что 1 фэйс\текстура на фэйсе - 2 полигона .В принципе ДэйвДж авторитетный мапер и у меня не должно быть оснований ему не доверять.

Стоит упомянуть что небо (браши с тексурой sky ) не добавляет wpoly (на этом построен один из принципов снижения wpoly - о нём чуть попозже) - так что вы можете совершенно отчётливо видеть всего 1 фэйс текстура на котором Fit'нута - дающий всего один wpoly...

вот смотрите... всё что обведено - func_wall. а лампы висят на расстоянии 1юнит от потолка.

когда это не было сделано р_спидс был ~225 (я замерял стоя на месте) а после "улучшений" ~145 ....

цифры говорят сами за себя...

Следующий способ - То что не видим - не рисуем ! всё просто как день (выше я говорил о том что sky-ные фэйсы полигонов не добавляют)

Этот метод оч сильно применялся DaveJ-ем на дасте и ацтеке

вы нарно замечали что если взлететь достаточно высоко, то крыш его построек нет - хотя с земли кажется что они есть !

всё просто - он наложил на верхние фэйсы ( которые и кажутся вам прозрачными с высоты птичьего полёта) текстуру sky (ну это счас - с новыми Зонерами вы можете наложить текстуру SKY а до этого нужно было состыковывать целый sky браш с отдельным фэйсом) (Прим. Липа: Не совсем так! В принципе даст и ацтек - коридорные карты, то есть это коридоры потолки которых - небо. А крыши не видимы, так как прикомпиляции удоляются все стороны, соприкосающиеся с внешней частью)

Простейший пример - у вас высокий ящик забраться на который игрок ну никак не может. - Вы окрашиваете верхний фэйс (стену - грань вобщем как угодно будет) текстурой sky и движек этот фэйс не отрисовывает ! (Прим. Липа: В последних версиях Зонеров эту роль играет текстура null. А насчет примера про ящик советую помнить и о тим-джампах)

Ещё один метод (сомнительный правда)

Принцип является аналогом hollow. Вы нарно слышали что ВК лучше не доверять такие вещи как carve и hollow. Смотрите сюда :

Ну и конечно !

Незабвенные хинты ( быстро не опишешь ! вобщем эти брашики очень ловко вмешиваются в систему БСП и ломают её так как нужно ! (варнинг ! -неокуратное использовани может повлечь кратное увеличение времени компиля и полигонов в кадре ) Полезно использовать во всёких там коридорах с крутыми поворотами ну и на продолжительных (по размерам) брашах .)

Ну и помелочи там....

мелкие хитрости и фокусы (к примеру вы хотите сделать в стене закрытое окно а энто куча брашей ! чем легче нарисовать текстуру стены с закрытым окном ! ещё прикол ! - модели 3д макса идут в е_поли ! так шо можно и максом побаловаться ! (а имея экспортилку можно без особых знаний макса запросто нарисовать в ВК сложную конструкцию а потом в максе сляпать из етого МДЛ'ку и запросто пользовать потом в Халфе))

Ну и почаще блокируйте видимость игрока ... Делается это брашами (не энтити) которые своей массивной тушей загораживают игроку вид (ну типа большие ящики ака контейнеры ...)

А самый главный способ энто сначала думать а потом делать ! хорошенько продумывайте и прорабатывайте карту ! и когда вас посетит воображение и вам вдруг представится офигенной красоты судно , и вы уже мчитесь к заветному ВК , вспомните страшное слово ПоЛиГоНы ! и обдумайте : реально ли то что вы задумали реализовать на нашем хлипком движке ! (анрыл рулит 8-) )

p.s. ести хотите посмотреть что в данный момент обрабатывает движок то запустите карту в обычном халфе в режиме сингл и на софте. в консоли введите r_draworder 1 и увидите ... в этом случае стены станут прозрачные (привет читерам !) . и ещё можете попробовать r_drawflat 1 , забавная команда .

p.p.s. продолжая тему читерства r_drawentitys 0 и узреете сквозь двери !!! правда в этом случае вы не увидете моделей игроков (хехехе) :) :) а ещё одна команда но не для читеров которым уже хватило bind mouse1 "kill" / это R_drawviewmodel 0 или в этом роде (мож s на конце забыл...) ... короче она вам ФПС поднимет... правда вы не сможете лицезреть свой ствол :( ну помните в кваке можно было убрать модель оружия с экрана ... так вотэто оно (реально +10~20 ФПС на openGL'е)

p.p.p.s. Огромное спасибо Вальву за введение gl_wireframe'а ! Великолепная команда ! значение 0 - выкл , 1-вкл ( показывает те объекты которые реально видит игрок) , 2- вкл , моё любимое ! (показывает всё что рисует движек в данный момент. Поправочка - то что рисует движек за вами (за спиной) вы всё равно не увидете ... )


Вода

да-да именно та вода которая в КС встречается столь редко....

так шо давайте помолимся чтоб cs_docks не убрали с серваков

итак Главное - у всех водных (кислотных и т.д.) текстур название начинается с восклицательного знака.

для воды нужен "сосуд" русла "стакан" бассейн да назовите как хотите

в данном случае наш бассейн это всего лишь яма.

теперь зальём яму водой .

вода это браш полностью окрашенный "водяной" текстурой (например !waterblue )

и отправленный toEntity в func_water

из нужных пропертей :

render mode - ставим texture чтоб вода была прохрачной... (если хотите чтоб вода была непрозрачной ставьте normal)

FX Amount - степень прозрачности я люблю 100

Wave Height - высота колыхания волн . надо полагать в юнитах .... собсно для этого я и делаю отспуп , чтоб "волны на берег на захлёстывали"

и ещё забавная штука contents - походу дела выбирать между лавой кислотой и водой.

вот у вас и вода .


Clip браши

Что это такое?" - с удивлением спросите вы. "Это - одна из самых важных вещей в левел-дизайне", - гордо отвечю я.

Краткое объяснение:

В этом параграфе речь идёт о clip брашах.

Зачем это нужно?

Нужно это затем, что clip браши позволяют создать зону, через которую игрок просто не сможет пройти. Это не entity, а обычный браш целиком закрашенный текстурой clip. Вспомните например as_oilrig или cs_estate: в обоих этих картах есть места, через которые нельзя пройти.

Вот и всё. А использовать это можно на концах карты. В смысле, в том месте, где кончается игровая поверхность. Enjoy!


Световые лучи

А вот охота сделать такие же лучи света, как в cs_estate или es_trinity?

А сейчас можно узнать как сделать это ;)

1. Первым делом нужно создать источник света. У нас это будет фонарь.

2. Затем мы создаём сам луч. Сделайте браш такой формы как вам нравится. (Прим. Липа: чаще всего это трапеция)

3. Затем раскрашиваем браш. Лучше всего подойдёт текстура fade2 (можно fade1, но fade 2 лучше ;))

Нижнюю сторону закрашиваем текстурой black.

4. А теперь делаем toEntity.

Class: func_illusionary
Name: - (Прим. Липа: нужно если есть тригер)
Render FX: Normal
Render Mode: Additive
FX Amount (1 - 255): 20 - чем эта цифра ниже, тем луч прозрачнее
FX Color (R G B): -
Contents: -
Minimum light level: -

Вот и всё.


Звук на вашей карте

Хе ! До звука добрались блин ! Ну начнём . Сразу скажу что особо сложного тут нет, ну а имея интеллект выше 6-и (по шкале Фолаута :) ) вы могли догадаться обо всём прочтя справочник по энтитям.

Что есть звук в своей сути ? Это либо сама энтитя звука (ambient_generic) либо энтитя управления звуковыми эфектами (env_sound).

Рассмотрим звук.

вот так выглядит спрайт энтити ambient_generic в ВК. (с особым .fgd файлом)

управлять звуком можно по принципу описанному в параграфе о дверях. (кнопка\триггер\рычаг\и тд)

хотите чтоб на вашей карте пела опера из италии ?

вставьте энтитю ambient_generic и в пропертях :

name : думаю ясно. имя звука для активации чем либо...

Path/filename.wav of WAV : путь к файлу звука . в нашем случае ambience/Opera.wav (обратите внимание на косую !)

Volume (10 = loudest) : громкость 10- максимум

и ещё куча всякой фигни управляющей воспроизведением ... ну например

Start Volume : громкость при активации\начале звучания

Fade in time (0-100) : время перехода в секундах , от стартовой громкости до обычной (от Start Volume до Volume (10 = loudest)

Fade out time (0-100) : наоборот , от обычной до стартовой громкости.

Флаги :

да простит меня Дэд :)

Play Everywhere – звук слышен по всему уровню

Small Radius – малый радиус распространения звука

Medium Radius – средний радиус

Large Radius – большой радиус

Start Silent – в начале уровня беззвучный. (прим. : значит что нужно звук активировать)

Is NOT Looped – не повторять. Воспроизводит файл только один раз. Если флаг установлен, каждый раз, когда объект активирован, он будет проигрывать этот файл. Если же нет, то активация объекта будет включать/выключать звук.

(прим.: я со звуком не особо работаю , верней совсем не работаю . поэтому приходится верить словам нашего форума : Если при создании звука (самого файла ) он не был LOOP'лен то повторяться он не будет (как вы знаете Опера закончившись начинается снова. тк она ЛУПлена. Проверить файл на луплёность можно в СаундФордже (вроде. ну вобщем во многих прогах обработки звука)

Вот так ! давайте включим нашей опере медиум радиус и волюм 7 остальное трогать не будем.

попробуйте скомпилить карту. должно работать. Небольшой рецепт от меня :

попробуйте связку триггер_мультипл и амбиент_дженерик.

тоесть ... ну к примеру сделайте 2-е комнаты соединённые дверным проходом (без двери)

в проходе поставьте триггер_мультипл и в пропертях :

target - имя звука . у нас будет sound1

delay before trigger - задержка перед активацией . в секундах .ну 1

delay befre reset - интересная штука . время до сброса. тоесть до того момента как триггер может быть активирован вновь. поставим 15

.... где нито во второй комнате поставьте амбиент_дженерик .

в пропертях .

name - sound1

path/filename - к примеру .... ambience/zipmachine.wav (такой пищащий звук.) стоим упомянуть что звуки находятся не только в папке саунд поддиректории кстрайк... но и в паках . Например откройте pak0.pak и гляньте на директорию саунд . там тоже есть чем поживиться (прим. : чтоб открыть ПАК нужна утилита ПакЭксплорер (смотрите в разделе файлов) )

volume - 10

флаги :

play everywhere - играть повсюду

start silent - ждать активации (нашим триггером)

is not looped - не повторять , проиграть 1 раз и не повторять.

пример готов к употреблению !

Стоит упомянуть ещё одну фишку ! Вы нарно замечали что когда ходиш по дереву слышиш характерный звук. По железу - тоже. а как это делается ? Дык просто !

вот вам кусман файла materials.txt из папки cstrike\sound\

//-----------------------------------------------------------
// Counter-Strike
//-----------------------------------------------------------
// In this file you can modify the sound the textures give
// when the player walks on them
//
// Location: X:\halflife\valve\sound\materials.txt
//
// NOTE: only the first 12 characters of the texture name are used
// NOTE: a maximum of 512 textures may be tagged in this file
//
// 'M' metal
// 'V' ventillation
// 'D' dirt
// 'S' slosh liquid
// 'T' tile
// 'G' grate (Concrete is the default)
// 'W' wood
// 'P' computer
// 'Y' glass
// 'N' snow

N A_Snow
N znow1

// AS_OILRIG

G TSBgVent
M TSCaution
M TSCprFlr
M TSCrteSd

Кто знает английский уже прочли а для остальных поясню . тут список -"звучащих" тукстур и значение звука (ну там n , m , g и тд)

чё же буквы то значат ?

M - метал

V - вентиляция

D - грязь

S - жидкость

W - дерево

Y - стекло

N - снег

и тд

От сюда правило : если хочеш дать звук созданной тобой текстуре , то не лезь своими руками в этот файл !

Делай проще : перед финальной компиляцией своей мапы скопируй все использованные тобой текстуры в новый ВАД (ну просто в Вали скопируйте их из , ну там халфлайф.вад и тд) , а в ВК подключи тока его , только вот этот - новый ВАД.

Теперь поясню : в этом вашем ВАДе есть все текстуры которые используются на вашей карте . И если вы создали крутую текстуру снега и назвали её ну.... sneg1 / гляньте в файл материалс.тхт и найдите имя текстуры которой присвоена буковка N/ например znow1 / теперь просто переименуйте в Вали вашу текстуру sneg1 в znow1 (прим. Ну а если вы всётаки задействовали на вашей карте ещё и оригинальную текстуру znow1 то просто переиминуйте её (оригинальную) (опять же в Вали)) . Дальше всё просто : в ВК используйте утилиту замены всех текстур. ( sneg1 на znow1 ) и радуйтесь . советую закомпиливать ваши текстуры в кару чтоб никаких глюков не было. (hlcsg.exe -nowadtextures yourmap.map)

Надеюсь с присвоением звука текстуре - всё ясно.

Рассмотрим теперь env_sound .

Используется это чудо для изменения типа звучания

проперти - проще некуда !

Radius - радиус действия. Ну например радиус 128 . это значит что если игрок находится в менее чем 128 юнитах от этой энтити то все издаваемые им звуки будут воспроизведены по указанному сценарию. (например звук будет эхообразный)

Привет Дэду :)

Room Type (roomtype) – тип помещения со следующими свойствами:

0 = Normal (off) – выкл
1 = Generic – обычный
2 = Metal Small – маленькое, с металлическими стенами
3 = Metal Medium – среднее, с металлическими стенами
4 = Metal Large – большое, с металлическими стенами
5 = Tunnel Small – маленький туннель
6 = Tunnel Medium – средний
7 = Tunnel Large – большой
8 = Chamber Small
9 = Chamber Medium
10 = Chamber Large
11 = Bright Small
12 = Bright Medium
13 = Bright Large
14 = Water 1
15 = Water 2
16 = Water 3
17 = Concrete Small
18 = Concrete Medium
19 = Concrete Large
20 = Big 1
21 = Big 2
22 = Big 3
23 = Cavern Small
24 = Cavern Medium
25 = Cavern Large
26 = Weirdo 1
27 = Weirdo 2
28 = Weirdo 3

Ну думаю тут всё ясно ! если длинный тонель то эхо , металлическое помещение - соответствуючий "металлический" звук и тд.

Попробуйте разные значения на слух и выберите то, что вам подходит.
Примечание:
Когда игрок прошел через область действия объекта env_sound, установки звука изменяются и остаются в действии куда бы он не пошел. Необходимо переключить их обратно в нормальные с помощью другого env_sound с типом помещения Room Type = 0 (Normal).

Стоит привести пример канализационных труб на кс_сиедж.

Фууууууу разобрались со звуком.


Цыпленок по-итальянски

Цыпленок по-итальянски (chickens a’la cs_italy).

Автор: deadman

Итак, все мы с удовольствием отведали итальянской кухни с момента выхода в свет седьмой версии Counter-Strike. Особенной популярностью пользуются цыплята, приготовленные в перьях на итальянский манер. О том, как их приготовить в купе с вашим любимым гарниром (читай, реализовать подобное в ваше карте) и пойдет речь.

Итак, для того, чтобы приготовить цыпленка по-итальянски, вам понадобятся:

  • Один цыпленок свежий (файл models/chick.mdl из папки Half-life\cstrike).
  • Пучок перьев куриных (файл models/feather.mdl из папки Half-life\cstrike).
  • Соответствующая атмосфера из итальянских текстур и оперной музыки.

Примечание: вместо цыпленка вы можете использовать любую другую модель (а также свою собственную, предварительно поместив ее в папку Half-life\cstrike\models). О том, как создавать модели вы узнаете из других выпусков кулинарной книги.

Возьмите свежего цыпленка в перьях и, не обдирая его, поместите в нужное место на карте. Для этого вставьте точечный объект (point-based entity) cycler_sprite, ориентируя по вертикали центр объекта по уровню плоскости, на которой будет стоять курица.

После чего, необходимо нафаршировать цыпленка соответствующим образом. Для этого надо изменить свойства спрайта. Нам интересны свойства Sprite и Frames per second. В поле Sprite укажите имя файла-модели models/chick.mdl, а поле Frames per second оставьте скорость воспроизведения анимации модели равной 1 кадру в секунду. Также укажите имя модели Name=chicken. Эти нехитрые действия придадут вашему спрайту вид курицы, которую вы сможете лицезреть, откомпилировав свой уровень. Выглядит это примерно так:

Приятное зрелище, неправда ли? Однако наш цыпленок, хоть и полностью приготовлен, еще не обладает тем особым итальянским вкусом, который мы все от него ждали. А именно, наша курица абсолютно "пустотела", то есть можно ходить сквозь нее, стрелять сквозь нее, и т.д. Не слишком реально? Давайте попробуем исправить это.

Создайте еще четыре точечных объекта где-нибудь рядом с курицей: два объекта env_render, один объект env_shooter и один ambient_generic. Давайте разберем каждый объект подробно.

Первый объект env_render отвечает за "рождение" цыпленка. Этот объект способен изменять параметры отображения модели. Дело в том, что в Counter-Strike невозможно включать/выключать модель с помощью триггера. Чтобы реализовать появление/исчезание модели cycler_sprite необходимо регулировать ее параметры отображения. Для включения модели делаем ее полностью непрозрачной, а для выключения – полностью прозрачной. Поэтому для рождения цыпленка устанавливаем следующие параметры объекта env_render:

Name – chickenrespawn. С помощью имени мы сможем активировать рождение цыпленка в любой момент.
Target – цель для изменения параметров отображения. Мы хотим сделать видимой нашу модель курицы, поэтому укажем chicken.
Параметры отображения -- определяют непрозрачность объекта.
Render FX -- Normal
Render Mode -- Solid
FX Amount -- 255
FX Color -- 0 0 0
Второй объект env_render отвечает за исчезание цыпленка, то есть имитирует его смерть. Свойства его следующие:

Name – chickenkill. С помощью имени мы сможем активировать смерть цыпленка в любой момент.
Target – Мы хотим сделать видимой нашу курицу, поэтому укажем chicken.
Параметры отображения -- определяют прозрачность объекта.
Render FX -- Normal
Render Mode -- Solid
FX Amount -- 0 -- Именно здесь цыпленок становится невидимым!
FX Color -- 0 0 0
И оставьте в покое флаги обоих объектов -- они вам не понадобятся!

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

Name -- перья должны вылетать при убийстве курицы, поэтому имя совпадает с именем второго объекта env_render -- chickenkill.
Number of Gibs -- количество перьев, например 20.
Delay between shots -- не нужен. Оставьте равным 0.
Gib velocity -- скорость вылета перьев, например 150.
Course Variance -- отклонение от прямой. Так как это перья, отклонение должно быть значительным, например 4 или 5.
Gib life -- продолжительность жизни перьев в секундах, после чего они савми изчезнут, например 10.
Параметры отображения -- не меняем.
Model -- модель перьев, models/feather.mdl.
Repeatable -- установите этот флаг, чтобы можно было потрошить курицу в каждом раунде.
Последни точечным объектом является ambient_generic. С его помощью имитируется предсмертный крик цыпленка, который так греет душу каждого проходящего по итальянскому базарчику террориста. Для нашего случая важны два параметра -- Name=chickenkill и filename=misc/killChicken.wav, а также два флага -- Medium radius и Is NOT Looped. Имя такое же, как и у предыдущих двух объектов, так как все три срабатывают одновременно при смерти курицы.

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

Итак, поверх модели курицы создаем невидимый разбиваемый, брашевый (brush-based) объект func_breakable. Для этого рисуем прямоугольник из текстуры AAATRIGGER, обращаем его в объект func_breakable и определяем его свойства:

Target on break -- chickenkill. При разрушении (выстрел в курицу, а попадание в невидимы разрушаемый объект), активируется процесс смерти цыпленка -- срабатывают все объекты chickenkill (невидимая курица, перья и похоронный марш).
Strength -- 1. Убивает с одного выстрела наверняка.
Material type -- Flesh. Объект состоит из плоти и крови.
Параметры отображения -- эти два параметра, совместно с текстурой AAATRIGGER делают объект невидимым.
Render Mode -- Texture
FX Amount -- 0
Расположение всех этих объектов выглядит следующим образом:

Теперь необходимо предусмотреть появление цыпленка. К сожалению в Counter-Strike некоторые объекты и их свойства не обнуляются с началом нового раунда, поэтому приходится делать это вручную. Например, наша курица, после первой смерти, будет появляться невидимой, что нас совершенно не устраивает. Чтобы вновь сделать ее вновь видимой, надо активировать первый env_render с именем chicken_respawn. Для этого, в месте появления контр- или просто террористов, надо создать невидимый объект trigger_multiple, указав в качестве мишени chicken_respawn. Только создать его нужно так, чтобы кто-нибудь обязательно задел или прошел сквозь него, иначе курица не появится. Также установите параметр Delay before reset примерно 180. При повторном заходе в область действия триггера после этого времени и до окончания раунда, убитая курица "воскреснет", и убить ее вы сможете только в следующем раунде.

Вот, собственно, и все, о том как приготовить настоящего цыпленка по-итальянски. Приятного аппетита!


Поезда и иллюзия бесконечного движения

Автор: tnt

Мдаааа... Урок продвинутого картостроения... ничего не скажешь. Начнём с объяснения что это такое "иллюзия бесконечного движения". Вы играли в Blood1, Sin, Soldier of Fortune? A видели там карты с поездами? Так вот сейчас я вас и научу делать такие же.

1. Текстуры. Текстуры нужны специальные. Видели в Халфе конвееры? Так вот нам нужны примерно такие же!

- Создайте в Wally свой WAD и перетащите туда какие-нибудь текстуры из halflife.wad или от куда-нибудь ещё. Ддя этого нажмите в Wally:

File > New > Type: Half-Life package [wad3] (.wad)

Задайте ему имя, откройте любой другой wad (например halflife.wad), перетащите подходящие текстуры в свой wad.

- Теперь надо сделать из обычных текстур движущиеся. Для этого просто переименуйте ваши текстуры путём приписывания пиставки scroll (например была у нас текстура с именем tnt , берём и переименовываем её в scroll_tnt и всё)

- Необходимо задать направление движения. Ну это зависит от карты, никто ведь не знает как вы расположите тунель. Но если всё будете делать как я, то направление текстуры должно быть горизонтальным. Если оно вертикально, то просто поверните текстуру нажав SHIFT + R (на глюк с изображением текстуры после поворота не обращайте внимания)

Воаля! Текстуры готовы к употреблению! Но учтите, что у вас их должно быть несколько и главное, чтобы они подходили. Помните, что этот wad надо будет подключить в WorldCraft (ну а nowadtextures тоже не забывайте). Кстати, стены нашего тоннеля должны быть как минимум из бетона.

2. Архитектура.

- Cоздайте длинный большой браш и сделайте его пустым. Этот браш и будет нашим тоннелем. отправьте его toEntity и поставьте func_conveyor.

FX Amount 255
conveyor speed 300
angle 180

- Необходимо создать оболочку. Всё наше творение поместим в полый куб. Так как стены тонеля у нас энтити, а движок прописывает всё что за энтитей (через закрытую дверь прорывается свет) нужна оболочка.

- Давайте сделаем какую-нибудь платформу на которой можно стоять. Как видите, я уже поставил light и info_player_start, чего и вам советую :) И ещё, обратите внимание! Отправьте наш func_conveyor toWorld, далее выделите все стены кроме дальних торцевых

и вот эту конструкцию уже и делаем func_conveyor'ом с теми же пропертями. C архитектурой всё.

3. Дизайн или наложение текстур.

Два этих дальних торца окрашиваем текстурой black. А наш func_conveyor обрадуем текстурой scroll_betn1 (из моего wad). Далее жмём SHIFT+A и удерживая ctrl выделяем все внутренние грани нашего конвеера (всего их 4) и в поле rotation ставим 180 (а не 270 как у меня на рисунке !). Для каждой стенки конвеера поставьте align : world

C текстурами всё, хотя можно добавить ещё один конвеер под платформой и разукрасить его рельсами :) но это не столь важно, важно описать вам принцип построения.

4. Звук

Вы видели бесшумные поезда? Я нет, тогда вперёд! ambient_generic - энтитя звука. Разместите одну такую под платформой, а в пропертях поставьте:

path/filename.wav - machine/train_snd.wav
volume - 7
flags : large radius

Осталось скомпилить и всё готово!


Создание "живой" техники

Автор: Freeman

Для того чтобы создать "живую" технику нужно создать самому или где-нибудь скачать уже готовую технику, которую предстоит "оживить". Техника может быть любой: танки, броневики, грузовики, автобусы и тд.

Размещаем технику на карте и создаем под ней два path_track

Выбираем один из них и в его свойствах ставим:
name="path1" и next stop target="path2".

В свойствах второго path_track'a ставим:
name="path2" и next stop target="path1".

Теперь, в центре транспортного средства размещаем браш, на который натягиваем текстуру origin. Почему в центре? Этот браш будет являться осью вращения при движении вашей машины.

Выделяем все браши, которые составляют технику, включая браш origin , и жмем Ctrl+T (или выбираем "tie to entity" в контекстном меню), ищем и выбираем func_vehicle из списка.

Теперь редактируем свойства техники:

Name: car1 - "имя" техники
First stop target: path1
Lenght of vehicle: ... - уст. длину техники
Width of vehicle: ... - уст. ширину техники
Speed: ... - скорость
Sound: ... - звук при работе
Damage on crush: ... - наносимые повреждения при столкновении

Создаем браш, используя текстуру AAAtriger. Браш должен иметь ширину 64 юнита. Поместите его на предполагаемое место водителя. И еще: этот браш должен быть невидимым в самой игре. Затем выделяем этот браш и в контекстном меню выбираем "tie to entity" (или жмем Ctrl+T); из списка выбираем vehicle_controls. В свойствах этого браша ставим vehicle name="car1".


Гром и молния

Гром и молния на вашей карте

Автор: Deadman

Ваша карта почти готова, осталось сделать всего несколько штрихов кистью, чтобы получить шедевр. Раздумываете, какие детали добавить в ваши карту? Подумайте о погоде – возможно, немного грозы совсем не повредит. Все знают карту de_aztec – гром и молнии приятно дополняют колорит древних развалин. Почему бы не реализовать подобный прием и на вашей карте? Возможно это как раз то, чего ей не хватало для завершенного сюжета.

Прежде всего, хочется предупредить вас о том, что метание молний возможно далеко не на всех картах. Для грома как минимум нужно небо. Да, небо! Практически на всех КС картах есть открытые пространства с небом, однако для реалистичной имитации грозы неба должно быть много. И уж совсем нереально устроить грозу в метро или подземном военном бункере.

Наличия неба, как такового, недостаточно. Небо должно быть пасмурным! Ну какая может быть гроза при таком солнце на de_dust! Правильно, никакой! Поэтому для грозы необходимо использовать соответствующие текстуры для неба. Хорошим примером является небо DrkG. В Worldcraft используйте меню Map/Map properties…/environment map (cl_skyname) (более подробно о том, как сделать небо можно прочитать здесь).

Кроме пасмурного неба, необходимо создать пасмурное освещение, исходящее от неба. Для этого используйте точечный объект light_environment. Поместите его рядом с небом (достаточно одного) и определите его цвет и яркость (угол и направление – на ваше усмотрение). Хорошо подходит следующие значения параметра Brightness = 128 128 128 50.

Теперь, когда у вас достаточно неба, и оно имеет предгрозовой оттенок, пора устроить светопреставление с громом и молнией. Для этого, определите место, где вы хотите поместить вашу молню (или одну из нескольких). В небе над этим местом (или чуть в стороне, чтобы молния ударяла под углом) разместите точечный объект env_laser. Определите его следующие свойства:

Name = lightning1 (имя)
Target of laser = target1 (цель для молнии)
Brightness (1-255) = 255 (максимальная яркость)
Beam color R G B = 255 255 255 (луч белого цвета)
Width of beam = 80 (ширина луча 8 пикселей)
Amount of noise = 100 (искривление луча среднее, чтоб был похож на молнию)
Sprite name = sprites/lgtning.spr (спрайт для молнии, обратите внимание на прямой слэш «/»)
Texture Scroll Rate = 1 (скорость сдвига текстуры спрайта, 1 работает отлично)
Damage / second = 10000 (повреждения максимальные, при попадании – убивает на месте)
Также установите флаг End Sparks для имитации искр при ударе молнии.

Остальные параметры и флаги оставьте без изменения.

Как вы видите, необходимо определить мишень для молнии с именем target1 (определен параметром Target of laser объекта env_laser). Для этого используйте точечный объект info_target. Разместите его на земле в том месте, кудаa должна бить молния и укажите параметр Name = target1. Теперь молния из объекта env_laser будет ударять точно в info_target

Кроме самой молнии, неплохо бы имитировать вспышку света. Для этого, рядом с местом, куда ударяет молния, на некоторой высоте от земли, разместите объект light, с именем (Name) = flash и яркостью (Brightness) = 255 255 255 10000 (очень яркий). Можно также поэкспериментировать со значением Appearance (способ отображения), установив, например, Fast Strobe. Установите флаг Initially dark, чтобы при запуске карты свет был выключен. Мы будем включать его на мгновение одновременно с лучом молнии.

Теперь позаботимся о громе. Это совсем просто. Используйте объект ambient_generic, установив следующие свойства:

Name = thunder1 (имя)
Path/filename.WAV = ambience/thunder_clap.wav (файл грома, прямой слэш «/»)
Volume = 10 (максимальная громкость)
Start volume = 10 (начинать громко сразу)

Также установите следующие флаги:

Play everywhere – слышно на всей карте
Start silent – при загрузке карты, не проигрывать
Is NOT Looped – без повторов

Остальные параметры и флаги оставьте без изменения.

У нас есть все компоненты молнии (сама молния, вспышка света и гром). Чтобы объединить их всех в одно событие, используйте объект multi_manager. Разместите где-нибудь рядом и настройте соответствующие свойства:

Name = thunder1 (имя совпадает с именем объекта-звука грома, запустятся одновременно после активации. Таким образом, multi_manager отвечает только за молнию и вспышку). В окне Object Properties (свойства объекта) для multi_manager отключите режим «Умного редактирования» (SmartEdit) и добавьте следующие параметры (используйте кнопку Add), Key – имя параметра (имя объекта для активации), Value – значение параметра (задержка в секундах перед активацией объекта):

Lightning1 = 0 (включить молнию сразу же)
Lightning1 = 0.5 (выключить ее через полсекунды)
Flash = 0 (включить вспышку света)
Flash = 0.4 (выключить ее через почти полсекунды)

При добавлении нескольких объектов с одним именем, ВК будет добавлять #1, #2 и т.д. к имени объекта, так что не пугайтесь. Выглядеть это будет примерно так:

Осталось самая малость – запустить грозу. Создайте trigger_multiple в том месте, проходя по которому вы хотите увидеть молнию. В моем случае я поставил триггер прямо на серой возвышенной площадке для увеличения риска получить молнией по темечку. Установите параметры Target = thunder1 (активировать объекты с именем thunder1, в нашем случае – гром и молнию) и Wait before reset = 60 (отключать триггер на 1 минуту, чтобы молния была не постоянной).

Вот и все, что требуется для реализации «плохой» погоды на вашей карте. Не так сложно, как видите, а, при грамотном использовании, позволяет достичь отличных результатов. От других! :)

Список используемых объектов:


Дождь на карте

Автор: LAM - rulezzz

При создании мапы не надо забывать об общей атмосфере: о звуках, текстурах. Одной из состовляющих данного аспекта может служить погода. В этой статье я постараюсь рассказать вам, как создать дождь. Однако модифицировав, изменив используемый спрайт, можно получить и снег, и град, и даже кровавый дождь :). Ладно, перейдем к сути:

1. Поместите файл rain.spr в директорию sprites (Прим. Липа: если его там нет, но он должен по определению там быть :)).

2. На карте нарисуйте для каждого потока капель следующие объекты (сколько делать таких потоков - решать вам, учтите, от них зависит "интенсивность" дождя) (Прим. Липа: и тормознутость карты :():

  • Разместите на вашей карте объект env_beam.
  • А также два объекта info_target, один там, где должен начать падать дождь(с неба вроде), а другой - где заканчивает (обычно на земле или чуть повыше) (назовем их, например: s1/e1, s2/e2). Вы можете разместить их паралельно, чтобы дождь падал прямо вертикально. Но для того, чтобы увеличить реалистичность дождя, сдвиньте конечные объекты на несколько юнитов в сторону от началных объектов в верхней рабочей панели в редакторе (Quark или WorldCraft).

    3.Объект env_beam должен иметь следующие свойства
  • установите параметр "Start Entity" (имена объектов начальной точки падения дождя) на s# и параметр "Ending Entity"(соответственно) на e#.
  • параметр "Life" должен быть равен 0.
  • проверьте, чтобы "Width of beam" был где-то от 16 до 32(зависит от "длины" капли).
  • в параметре "Sprite Name" введите "sprites/rain.spr".
  • у "Beam Color" значение может быть любым, но я советую ставить "255 255 255"
  • "Texture scroll", в нашем случае, определяет скорость падения капель. Установите этот парметр на -20 (Вы можете увеличить скорость падения или уменьшить изменяя цифру, но она в любом случае должна быть отрицательной).
  • наконец, надо создать тень. Для этого во вкладке "Flags" включите "Start On" и "Shade Start".

Советы.
Как вы уже наверное догадались, дождь лучше использовать на открытых пространствах, а не в закрытых комнатах, если это конечно не душевая :).
Чтобы дождь казался более эффектным, в качестве неба не рекомендуется использовать светлые, солнечные текстуры(например, как на милиции, дасте). Лучше всего для дождливой погоды подойдет "dusk" (облачно) или "night"(это, я думаю, и так понятно), а также можно использовать прикольные текстуры класса "alien".
Будет отлично, если вы вставите объект "light" со светлым, можно немного темным серо-голубым цветом(параметр Brightness).
Используйте объект "func_water" на неровной поверхности для создания "луж".
Наконец, неплохо "для понта" добавить звук. Для этого возмите ambient_generic с параметром "Path to WAV", равным, например, "ambience\*waterfall3.wav", и поместите его в "центр" дождя.
Советую побольше поэксперементировать с объектом env_beam для создания оптимальной погоды для вашей карты.

Упоминаемые объекты(entities) в статье:


Камеры на картах

Автор: LAM - rulezzz

Помните cs_mansion и ее многочисленные версии, cs_militia? Да что там вспоминать... наверняка вы сами не раз пользовались камерами, когда играли в Контр-Страйк :). Так вот в этом небольшом "тьюториале" я и попытаюсь объяснить "что это такое и с чем его едят" :).

Создание камеры займет немного времени, и понадобится всего лишь три браша. Что ж, перейдем к делу.

1. Создайте точечный объект trigger_camera там, где будем находиться собственно камера и установите следующие свойства:

Name: camera
Target: camera_target
Не забудьте во флагах поставить галочку напротив Freeze Player
2. Точечный объект info_target будет местом, куда камера направлена камера. Здесь исправьте лишь один параметр:

Name: camera_target
3. Теперь нам нужен обычный объект func_button. Он будет играть роль монитора, посему его расположение зависит от вашей фантазии. Ну и опять же установки объекта:

Targetted object : camera
Во флагах пометьте Dont move

Все, камера готова!

PS: Во время написания статьи мне пришла в голову мысль, что если разместить trigger_camera прямо рядом с объектом func_button, а info_target на стене напротив, то получится своеобразное зеркало. А если во флагах кнопки поставить Touch Activates....

Так кто там говорил, что зеркала в КС сделать нельзя?


Двери со стеклом

Автор: LAM - rulezzz

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

Краткая справка.
Создайте две двери с одинаковыми именами, одна из них будет дверью, другая стеклом, теперь нужен объект trigger_multiple, который и будет активизировать две двери одновременно.

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

Вращающиеся двери.

1. Создаем обычный браш размером 96х64х8 (толщину двери можно уменьшить и до 4 юнитов) и приклеиваем к нему текстуру FIFTIES_DR8, после чего делаем еще один браш с текстурой origin, который будет служить осью вращения. Выделяем два этих браша и превращаем их в объект: нажимаем Ctrl+T (можно выбрать "tie to entity" в контекстном меню), ищем и выбираем func_door_rotating из списка. Параметр Name должен иметь определенное значение, например rdoor1. Остальные поля заполните по вашему усмотрению. Более подробно этот шаг рассмотрен в учебнике(в разделе "Двери").

2. Создадим другой браш, который должен располагаться в том месте, где на текстуре FIFTIES_DR8 есть черная поверхность, и применяем к нему текстуру GLASSGREEN. Толщина может быть любая, в данном случае случае советую установить 8 или 4 юнита. Теперь выделите браш-стекло и примените к нему функцию carve. Не забуьте также создать браш с текстурой origin. Далее, выделив эти два браша, нажмите кнопку toEntity и снова выберете из списка func_door_rotating. Он должен иметь то же имя, что и у первой двери, то есть rdoor1. В остальных свойствах ставим:

Render Mode = Texture(2)
FX Amount = 96
Теперь стекло у нас прозрачное. Две двери готовы, осталось только изготовить триггер.
3. Новый браш должен быть немного шире самой двери и находиться примерно на уровне пояса. Преобразуем его в объект trigger_multiple и в свойствах поставим:

Target = rdoor1
Delay before reset = 1, чтобы объект активизировался только один раз за секунду
На этом первая часть статьи заканчивается, советую обратиться к описанию объекта func_door_rotating, если что-нибудь непонятно.

Отъезжающие двери.

1. Построение этой двери аналогично. Для начала нужен браш, окрашенный текстурой OUT_W1DR1. Он и будет дверью. Правратим его в объект func_door (в контекстном меню нажмите "tie to entity") и присвоим ему следующие параметры:

Name = door1
Lip = 4, это чтобы дверь не полностью уходила в стену

Angel поставьте в зависимости от направления, в котором будет открываться дверь.
2. Следующий объект func_door(размер выберете сами) и будет стеклом для нашей отъезжающей двери. Свойства объекта Render Mode, FX Amount должны быть настроены как и в случае с вращающейся дверью, в поле Name напишите door1, а вот параметр Lip придется отрегулировать самим.

3. Создайте объект trigger_multiple со следующими установками:

Target = door1
Delay before reset = 1, чтобы объект активизировался только один раз за секунду
Вот и все!

Упоминаемый объекты:


Размеренные размеры

Автор: Yarko[Aq]

I. Пропорция во главе угла

Любой художник, архитектор или мап-дизайнер, начиная работу над своим произведением (если это, конечно, не сюрреализм или абстракция типа Q3Arena :)) всегда думает о пропорциях изображаемого объекта на полотне, в гипсе, камне или в пикселях. Если создатель предполагает, что его творение должно отражать РЕАЛЬНОСТЬ, то он, несомненно, должен побеспокоиться о том, чтобы пропорции в его мире были такими же, как и в мире реальном.
Что же такое эта хитрая вещь - пропорции? Это просто численное соотношение размеров объектов. Именно пропорция, а не соответствие реальному размеру делает изображение РЕАЛЬНЫМ. Скажем, у вас есть фото 9х12, где вы стоите рядом со своим домом и собакой. Тот факт, что ваш фактический размер на фотографии не превышает нескольких сантиметров, нисколько не портит эффекта реальности изображения, т.к. на фотографии и дом тоже маленький, а собака все также меньше вас. С другой стороны, когда вы смотрите фильм в кинотеатре, на экране лица героев бывают просто гигантскими, - но опять же этот фактический размер не влияет на реальность восприятия.
Для чего же такое пространно-философское вступление? Я хотел лишь подчеркнуть, что для реальности восприятия важна именно пропорция размеров, а не размеры сами по себе.
В реальном мире для подсчета и соблюдения пропорций мы используем стандартизованные системы измерения. Французы, например, в конце XVIII века решили, что одна 40-миллионная доля меридиана Земли есть стандартная единица длины и назвали ее метром. И меряют этим самым метром необходимые им размеры. Другие люди используют иные стандарты измерения, но об этом позже.
Однако в мире нашем, мапперском, мы вольно-невольно определяем размеры не в обычных величинах, а в непонятных даже многим из нас мистических "юнитах".
Тут-то и встает вопрос: а как нам соблюсти все пропорции в мире WC? Мы ведь на уроках в школе не юнитами измеряли гипотенузу и катеты, а сантиметрами. Да и на физкультуре бегали стометровку, а не тысячеюнитовку.
Вот и получается, что нам непременно нужно знать, какому реальному размеру мы можем сопоставить этот самый юнит.

II. Юнит = ?!

Таким образом, перед нами стоит двуединая задача:

Сопоставить юнит некоему реальному размеру;
Соблюсти при этом пропорции реального мира.
Конечно, можно "от балды" назначить юнит равным чему угодно, но станет ли от этого "карточный" мир реальным? Нет. Значит "танцевать" нужно от соблюдения пропорций.
Как я уже говорил ранее, пропорция - это соотношение размеров объектов. Так вот для того чтобы соблюсти правильные пропорции в мире WC, нам необходимо определить некий объект с эталонным, так сказать, размером. Нечто существующее и в нашем, мапперском, и в реальном мирах. Да так, чтобы этот эталонный размер был известен и в юнитах, и в метрах.
С чем же человек привык соизмерять все вокруг? Правильно, с самим собой. В нашем случае наиболее полно, на мой взгляд, на роль эталонного размера подойдет рост игрока. На карте он всегда составляет ровно 72 юнита. А в реальности... Вот тут нас и поджидает настоящая засада. В реальности-то человек нестандартен! Какой рост выбрать для сопоставлений? Полный конфуз. Но не будем отчаиваться. Есть один способ решить и эту проблему.

III. Once upon a time...

Древние говорили, что для того чтобы победить противника, его нужно понять. И в нашем случае, чтобы "победить" размеры в WC, следует попытаться понять логику тех, кто придумал "юниты", т.е. логику создателей самой игры.
Не знаю уж кто конкретно в ID Software эти самые "юниты" придумал (кто не в курсе - CS, как и HL "произрастают" из продуктов IDS), но некая логика в его действиях должна была быть. Так почему же он, нехороший человек, - спросите вы - не сделал юнит эквивалентным сантиметру, метру или дециметру? Или, в крайнем случае, двум, трем, ..., n сантиметрам? Что он, нестандартно мыслящий индивидуум? А вот как раз наоборот: он мыслил очень даже стандартно. Вот только имеется одна тонкость. В какой стране, по всей видимости, жил этот человек? В США. В Соединенных Штатах я прожил больше года и был поражен тем, что в Америке, в отличие от Европы, люди почти не пользуются системой СИ, где длина измеряется в сантиметрах, дециметрах, метрах и километрах. В их традиционной системе - это дюйм, фут, ярд и миля (морская и сухопутная).
Как известно, дюйм, фут и ярд имеют следующую размерность:

1 дюйм = 2,54 см;
1 фут = 12 дюймов = 30,48см;
1 ярд = 3 фута = 36 дюймов = 91,44 см.

Теперь из приведенных выше американских единиц длины выберем наиболее подходящую на роль юнита.
И вот здесь я выдвигаю следующую гипотезу:

1 юнит = 1 дюйм

Попробую это продемонстрировать. Какой у нас основной критерий? Соответствие роста игрока в среде WC некоему стандартному росту в реальном мире. Кстати говоря, в той же Америке человеческий рост так и измеряется - в футах и дюймах.
Вот что мы имеем в случае юнит=дюйм.

Рост игрока = 72 юнита = 72 дюйма = 6 футов = 182,88 см

Итак, если юнит - это дюйм, то рост игрока в 72 юнита примерно соответствует 183 сантиментрам в реальности, что вполне адекватно размеру рослого спецназовца, рейнджера или десантника, "про которых", собственно, и игра.

IV. От теории к практике

Таким образом, мы определили, что 1 юнит = 2,54 см. Далее несложно узнать ответ на сакраментальный вопрос - сколько юнитов в одном метре:

1 м = 100 / 2,54 = 39,370... юнитов.

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

1 м = 40 юнитов

Исходя из данной практической формулы, получается, что

1 юнит = 100 / 40 = 2,5 см;
Рост игрока = 72 x 2,5 = 180 см.

Погрешность при этом небольшая - не более 1,6%, а удобства несравнимо большие, чем у точной формулы.
Мы все визуально представляем, что такое метр, дециметр и сантиметр. Что же такое юнит/дюйм или, в нашем практическом случае, его упрощенная версия - 2,5 сантиметра?
Очень просто. Слово "дюйм" происходит от голландского "duim" - буквально "большой палец". 2,5 см - это примерно ширина большого пальца руки взрослого человека (ростом в 72 юнита :)), толщина хоккейной шайбы или половина длины спичечного коробка. Длина того же коробка - уже 2 юнита. 4 юнита - это дециметр, 8 юнитов - 20 см. Таким образом, масштабная сетка в WC имеет следующее разрешение:

1 юнит = 2,5 см - ширина большого пальца руки, а также толщина хоккейной шайбы;
2 юнита = 5 см - длина спичечного коробка;
4 юнита = 1 дециметр - ширина дисковода для 3,5 - дюймовых дискет;
8 юнитов = 20 см - примерно ширина стандартного листа А4;
16 юнитов = 40 см - также примерно длина стандартного листа А3;
32 юнита = 80 см - средняя длина шага взрослого человека;
64 юнита = 1,6 м - два человеческих шага;
128 юнитов = 3,2 м - высота потолка в некоторых "сталинках";
256 юнитов = 6,4 м - высота двух этажей в доме стандартной планировки;
512 юнитов = 12,8 м - ориентировочно ширина баскетбольной площадки.

Полезной может также быть "обратная" таблица соответствия размеров в метрах и юнитах;

0,1 м = 4 юнита - на 4-х-юнитовой масштабной сетке - одно деление;
0,5 м = 20 юнитов - 10 дел. на сетке в 2 юн. или 5 дел. на сетке в 4 юн.;
1 м = 40 юнитов - 10 х 4 юн. или 5 х 8 юн.;
2 м = 80 юнитов - 10 х 8 юн. или 5 х 16 юн.;
3 м = 120 юнитов - 15 х 8 юн.;
4 м = 160 юнитов - 10 х 16 юн. или 5 х 32 юн.;
5 м = 200 юнитов - 25 х 8 юн.;
6 м = 240 юнитов - 30 х 8 юн.;
7 м = 280 юнитов - 35 х 8 юн.;
8 м = 320 юнитов - 10 х 32 юн. или 5 х 64 юн.;
9 м = 360 юнитов - 45 х 8 юн.;
10 м = 400 юнитов - 25 х 16 юн.;
15 м = 600 юнитов - 75 х 8 юн.;
16 м = 640 юнитов - 10 х 64 юн. или 5 х 128 юн.;
20 м = 800 юнитов - 25 х 32 юн.;
25 м = 1000 юнитов;
50 м = 2000 юнитов;
75 м = 3000 юнитов;
100 м = 4000 юнитов;
. . . . . . . . . .
Расстояние от полюса до экватора = 10 тыс. км = 0,4 млн. юнитов :).

Кстати говоря, такие понятия как "дюйм" и "фут" не настолько нам чужды, как это может показаться на первый взгляд. Эти две единицы, наряду с вершком, аршином, саженью, верстой и милей, входили в стандартную русскую систему измерений. Вот, например, "ворлдкрафтовские" эквиваленты некоторых из них:

1 фут = 12 дюймов = 12 юнитов (30 см по формуле 1 юнит = 2,5 см);
1 аршин = 28 дюймов = 28 юнитов (45 см, 1 юнит = 2,5 см);
1 сажень = 7 футов = 84 дюйма = 84 юнита (210 см, 1 юнит = 2,5 см).

Кстати, исходя из такого "древнерусского" прошлого дюйма и фута, можно предположить, что упомянутый ранее гипотетический автор "юнитов" был просто-напросто "ну очень старым" русским :).

V. Добавим немножко дегтя...

Ну что ж, имея готовые формулы и таблицы, можно было бы смело брать в руки рулетку, и, как говорят военные, "на местности" составлять точный план будущей карты. Но есть одно "но".
Если вы, скажем, собираетесь измерить и отобразить на карте точные копии достаточно объемных помещений и сооружений (туннели, склады, здания и т.д.), то у вас не должно быть проблем. Но если вы хотите сделать реальную модель своей квартиры, офиса или другого помещения с достаточно ограниченным объемом, при запуске такой карты у вас может возникнуть ощущение некоторой нереальности размеров получившихся комнат - они будут казаться меньшими, чем в реальности.
Почему же это происходит? Ответ, на мой взгляд, кроется уже не в особенностях WC, а в самом игровом интерфейсе.
При игре в 3D-action - игры мы пока еще почти не пользуемся виртуальными шлемами и костюмами. Наша визуальная связь с компьютерным миром происходит через экран монитора, который не только показывает нам окружающее плоским, но также значительно сокращает наш угол зрения, особенно угол бокового обзора. На больших пространствах это сильно не сказывается, однако в компактных объемах прилично влияет на восприятие виртуального мира. Попробуйте, например, надеть на голову картонную коробку с небольшим прямоугольным вырезом для глаз, соответствующим вашему углу взгляда на монитор (сантиметров 15 в диагонали) и попробуйте побегать в ней по квартире или офису, которые хотите смоделировать. Вы будете постоянно натыкаться на стены. Добавьте сюда большую неповоротливость компьютерного игрока (неспособность проходить и пролазить в достаточно узких местах, в которых обычный человек легко протиснется) а также тот факт, что изображение на мониторе плоское, а не объемное - и вы получите ответ на вопрос, почему малые объемы кажутся нам еще более малыми.
Таким образом, можно сформулировать еще одну "ловушку для мапперов", звучащую примерно так:
Господа, не делайте на карте слишком узких пространств с реальными размерами, - вы получите комнаты, которые будут казаться еще меньше, чем на самом деле. Но если вам все-таки необходимо сделать нечто подобное офису или квартире, смело искажайте размеры помещений в сторону увеличения.
И не забывайте, что стремление к реальности размеров важно лишь до тех пор, пока оно не убивает насмерть Его Величество Геймплей.


Одностороннее стекло

Автор: LAM - rulezzz

Стекло является важным компонентом некоторых карт. В основном оно играет роль заграждения, через которое можно смотреть. Как мапперу вам может понадобится одностороннее стекло, то есть с одной стороны оно прозрачное, с другой же - нет. Итак, начнем.

1. Создайте очень тонкий браш и окрасьте его с одной стороны текстурой {BLUE (там, где стекло будет прозрачным), а другую любой текстурой, которая начинается со слова glass.

2. Нажмите на кнопку toEntity и из списка выберите func_wall. Установите следующие свойства:

Render Mode - solid
FX Amount - 255
Текстура {BLUE при установленных параметрах должная стать прозрачной(в игре).

3. Нарисуем еще один браш, на этот раз это будет обычное стекло, он должен быть размещен с прозрачной стороны предыдущего браша. Кликаем toEntity и как и в предыдущий раз выбираем func_wall. Немного будут отличаться параметры:

Render Mode - Additive
FX Amount - 150

Все, стекло готово!

Упоминаемые объекты(entities) в статье:

func_wall


Clip и origin браши

Автор: LAM - rulezzz

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

Начнем с Clip брашей. Клип-браш - это браш, у которого с каждой стороны clip-текстура. Он блокирует движение игрока и в игре невидим.

Этот браш, можно сказать, выполняет четыре функции:
1. Создает препятствия, например при лампочках, выпирающих из стены.
2. Эмитирует конец карты, через который нельзя пройти
3. Третия фича схожа с предыдущей: браш делает так, что игрок не может выпрыгунть за пределы карты(в частности, с включенной гравитацией): поэтому лучше, даже наверху, перед брашем sky делать clip.
4. Позволяет создавать на карте "нормальные" решетки и перила. Дело в том, что при использовании обычного func_wall, пули не только плохо пробивают, но и на самих объектах остаются декали выстрелов, что создает не очень приятное впечатление и честно говоря немного раздражает. Намного лучше будет, если использовать func_illusionary для того, чтобы видна была решетка, а рядом нарисовать clip браш, который будет блокировать движение, но пропускать пули.

Заканчивая первую часть статьи, хотелось бы дать один совет.
Не переусердствуйте с клип-брашами. Один раз я видел карту, которая представляла собой комнату, стены у которой и были clip-брашами. Я навсегда разочаровался в профессионализме маппера, слепившего эту карту.

Теперь поговорим об origin-браше.
Этот вид брашей нужен для любого объекта, который тем или иным способом будет вращаться. Говоря языком геометрии, origin - это точка, искусственная точка в пространстве, с которой пересекается ось. Сам же ориджин-браш - браш, каждая сторона которго покрыта origin текстурой. Он определяет ось ротации вращающего объекта и в игре невидим. Без него бы все объекты крутились вокруг координат 0,0,0. Также этот браш определяет как движущийся объект будет расположен по отношению к его пути(в этом случае браш надо расположить в середине движущегося объекта).

Теперь, как все это реализовать на деле.
Создаем ориджин-браш в том месте, вокруг которого и будет вращаться выбранный вами объект. Форма браша значения не имеет: объекты будут крутиться вокруг центра браша. Дальше выбираем браш ротации(например, дверь) и ориджин-браш, группируем их и нажимаем на кнопку "ToEntity". Наконец, залезаем в свойства только что созданного объекта и регулируем ось вращения.

Вот вроде и все.


Водопад

Автор: Fox

В этой статье я расскажу вам, как сделать водопад на вашей карте и сделать его как можно реальнее.

Берем и делаем браш, который и будет нашим водопадом. Выглядит это примерно так:

Едем дальше.

Покрываем его текстурой +1LASERFALL , находится она в Half - life . wad. Теперь отсылаем его to_entity: func_illusionary <и ставим:

Render mode: texture

FX Amount: 180 (степень прозрачности) - не знаю как вам, а мне 180 в самый раз

Contents: Empty

Ок, водопад готов. Теперь приблизим его к реальности:

где-нибудь рядом с ним ставим ambient_generic и дальше в properties:

Имя файла: ambience/waterfall2.wav (например),

во Flags: medium radius, чтобы не орало на всю карту.

Дальше:

Под водопадом ставим env_sprite :

И в properties:

Render mode: Additive

FX Amount:180

Framerate: 10.0 самая тема

Sprite name: sprites/wsplash3.spr

Scale : 1

И таких - штук десять, смотря какой ширины водопад. В общем, это будут брызги.

В конце концов, выглядит всё примерно так:

Вот и водопад - вроде всё клёво. :)

Упоминаемый объекты:


Создание земли и холмов

Автор: Tazik

1. Предисловие:
Я думаю я не открою секрет, если скажу что движок Half-life уже старый. Но, не смотря на это сделан он очень качественно. Так что списывать его ещё рано. Конечно, у него есть много достоинств, но и много недостатков. Один из основных недостатков для мапера - это количество полигонов в кадре, которое движок способен обрабатывать не особо "тормозя".

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

2. Строим землю и холмы:

Ну конечно, можно просто сделать гигантский браш и закрасить его текстурой травки и всё. Но....! Важно знать что движок всё равно разделит этот большой браш на маленькие так, как считает нужным. И получается, что земля абсолютно ровная, а полигонов в ней много. Это нерационально и некрасиво. Почему бы самому не разделить большой браш на маленькие и не поставить каждый маленький браш так как хочешь? Повторяю, что движку всё равно как стоят полигоны.

Итак. В Worldcraft`e есть две классные кнопочки "Clipping tools" и "Vertex tools", они нам очень помогут.

Для начала создадим небольшой префаб:
Сделайте браш где то 128х128
Используя Clipping tools отрежьте прямоугольный трехугольник. (Прим. Липа: Автор забыл уточнить, что резать нужно без потерь остальной части браша. Для этого нужно кликнуть два раза на инструмент, что бы перейти в нужный режим)

Сделайте тоже самое но теперь с другой стороны.

Скопируйте эти два браша. И поверните их по горизонтали (Ctrl-L) или по вертикали (Ctrl-I).
Проделайте это несколько раз. Также можно сгруппировать несколько брашей. (Ctrl-G)
Теперь можно сделать небольшое поле.

3. Косим газон (текстурим):
Нажмите "Toggle texture application" и с контролом выделите все верхние полигоны. Закрасьте все текстурой. Обратите внимание на поля Х , У и WORLD, показанных на рисунке: Х и У должны равняться "0". А WORLD должен быть нажат (ВК немного глючит, поэтому всегда лишний раз кликните на флажок WORLD, даже если он уже нажат).

4. Теперь начнем извращаться (строим холмы):

Нажимаем на "Vertex tools" несколько раз (Что бы двигать только вершины - Только беленькие точки) на верхнем виде (TOP) выделяем точки. Именно выделяем как на рисунке (это важно).

Потом нажимаем "Ctrl" (не обязательно), что бы двигать одновременно несколько вершин, и перемещаем все это дело по оси "Z", то есть вверх-вниз. И так если хотите с каждой точкой.

Вот и получился замечательный холмик.
Можно сделать все что душа желает холмик, ямку, гору, навозную кучу (была бы текстура). Очень важно следить за тем, какие вершины ты двигаешь. И почаще проверять нет ли "ломаных фейсов" Alt-P.

В таком холмике 160 фейсов, а видимых в игре всего 32. Я думаю что 32 полигона это настолько мало, что можно создавать очень большие пространства. Так что сами решайте что лучше. Да ещё, используя такую архитектуру, можно создать что угодно, главное помнить что все равно полного сходства Вам достичь не удастся. ;)


WADы и текстуры

Автор: Capone

В этой статье я хотел бы рассказать вам об импортировании текстур в wad файл с помощью графического редактора (например, Adobe Photoshop) и Wally. Если у вас нет Wally, вы можете скачать ее отсюда. Итак, приступим.

Допустим, вы хотите использовать на своей карте вот эту текстуру.

Пусть это будет jpg размером 307 на 230 пикселей.

Первое, что нужно сделать - это изменить размеры изображения.

Горизонтальный и вертикальный размеры должны делиться на 16. Сделать это можно почти в любом графическом редакторе. Для того чтобы изменить размер картинки в Photoshop достаточно вызвать из меню Image пункт Image Size.

В появившемся окне следует ввести новый размер изображения в пикселях.

Нежелательно задавать размер больше чем 320 на 320 пикселей, в этом случае компилятор будет выдавать предупреждение. (Прим. Липа: Но предупреждение не ошибка, так что... :))

Все текстуры Half-Life могут быть только на палитре из 256 цветов. Wally может сам помещать изображения на палитру, однако лучше сделать это с помощью Adobe Photoshop. Для этого следует выбрать пункт Indexed Color подменю Mode меню Image.

В появившемся окне можно выбрать или создать палитру.

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

В итоге у вас должно получиться некое изображение.

Остается сохранить его в формате bmp.

Следующий шаг - это, непосредственно, импорт изображения в wad. Здесь следует воспользоваться Wally. Последовательность действий при импорте текстуры такова:

  • запустите Wally
  • откройте рисунок
  • создайте или откройте wad
    для создания wad'а нажмите в меню File на пункт New и выберите из списка Type пункт Half-Life Package [wad3] [.wad]
  • скопируйте текстуру в буфер обмена
    как видно на рисунке, нужно кликнуть правой кнопкой на текстуре и выбрать в меню пункт Copy

  • вставьте текстуру в wad
    щелкните правой кнопкой мыши в окне wad'а и выбрать в меню пункт Paste As Ne
  • присвойте текстуре имя

  • сохраните wad

Теперь осталось только подключить wad к WorldCraft'у и закрасить что-нибудь этой текстурой :)

Совет: компилируйте карту с параметром hlcsg -nowadtextures для того, чтобы "вшить" текстуры в свою карту.


ЧаВО: частые вопросы и ответы на них. Советы

ФАК , практически :) - полезные советы и ответы на частые вопросы

Я долго думал о включении этого параграфа и наконец решился ! нате товарищи новички ж... тоесть еште наздоровице :)

1. Самый популярный вопрос это конечно же: Как вставить браш? энтитю?

Жмёте на белый куб. В каком-нибудь из видов зажимаете первую кнопку мыши и тащите курсор (так собсно и регулируйте размер браша). потом отпустите кнопку. Вы должны узреть квадрат с границами из сеточки. Далее подводите курсор к полю этого квадрата (так чтоб курсор сменился на большой крестик), и жмите вторую кнопку мыши. Поямится меню с обдим элементом. А именно - create object - сюда, блин, и жмите (первой кнопкой мыши разумеется)! ВОТ И ВСЁ. З.Ы. Так же и энтитю! Тока тащить курсор не надо!

2. Интересный вопрос: а как сделать так чтоб в 3д виде сделать объекты текстурированными (состоящими не из сеточки)?

жмёте на слово camera в окне 3д вида и выбираете что вам нужно :) (3д текстуред может подтормаживать на некоторых видюхах (Прим. Липа: если у вас тормозит, то попробуйте перейти с версии 3.3 на версию 2.1. Не плюйтесь, так как главное отличие 3.3 это введение openGL в редакторе. А в остальнов все похоже.)).

3. Почему у меня только одно окно вместо 4-ёх ?

Жми ctrl+a! Если не помогло то переустановите ВК.

4. Почему при игре по сети(lan/inet), либо с ботами, некоторые члены команды не могут двигаться, а некоторые умирают при появлении?

Не двигаются тк место респавна находится ниже уроня "земли". получается что они как бы вкопаны !

умирают тк места респавна находятся слишком близко друг к другу! точно не помню, но вроде расстояние от одного респавн поинта до другого - не менее 80 юнитов должно быть !

5. Почему у меня пропадают энтити стены и тд?

софтваре это не режим а диагноз !

6. Почему у меня пропадают энтити стены и тд? но не софт а гл!

не исключено что потому что слишком тонкие стенки юзаете батенька! или читерство :) (волхак форева :) )

7. Почему компиляция идёт так долго ??? может у меня комп повис?

не исключено но ОЧЕНЬ маловероятно ! скорей всего вы просто слишком мудрёный уровень сделали. если у вас чтото типа пень2 260 и 32\48 Мб ОЗУ то впринципе это понятно ! совет : найдите добрую душу с крутым компом и желанием помоч вам ! пусть он вам карты компилит !

8. Почему при компиле (можно я так сокращать буду?) комп говорит что-то про вертекс манипуляции и не компилит дальше ?

Ну не трогайте вы блин эти вертексы ! до хорошего они не доводят. а если уж взялись то делайте всё правильно и не торопясь ! а то надо блин им камень сделать , кусок скалы блин...

9. При компиле поступает сообщение об ошибке и пишутся какието адреса !

прально ! сохраните себе эти адреса (где нито) и потом по адресам ищите неверные браши и устраняёте ошибки (ну на крайняк удалите проблемные браши :) ) если даются не адреса (координатные) а просто цифры (чтото типа : bad brush #23 ) то ищите проблемный браш\энтитю нажатием ctrl+shift+g ( вот блин, тут и вводите номер проблемного браша -энтити).

писать способ решения проблем при компиле я не буду тк в каждом случае решение обычно индивидуально...

10. У меня вся карта светлая ! как изменить интенсивность света ?

хе ! об интенсивности в параграфе о свете ! а тут попахивает тем что у вас qrad/hlrad не откомпилил как следует!

11. как вычислить размер браша ?

давайте рассмотрим вот эту панель (которую я забыл описать в 1-ом параграфе).
чё мы тут видим? for help, press F1 - думаю понятно :) no selection - текущее выделение энтити; @64, -448 - координаты курсора ; 512w 384l 64h - вот оно! дерево! первое число - размер выбранного браша по x (в юнитах) 2-ое по y и 3-е по z .... zoom - думаю ясно (приближение) Snap : on grid 64 - немаловашно ! многие спрашивают почему у меня объекты в ВК так грубо двигаются ? можно ли сделать передвижение поточнее ? - вот блин оно ! в данном случае у вас объекты как бы прикрепляются к сетке и двигаются с шагом 64 юнита ! увеличить\уменьшить шаг можно простым нажатием скобочек ( русские буквы Х и Ъ ) .

12. при компиле вылазит ошибка leak leal leak !

хехе моё любимое ! ДЫРКА в основных стенках ! ищите !

13. небольшое наставление от меня !

Движок рисует всё что за стенами тоньше 16 юнитов. Так шо не жадничайте ! а основные стены сам бог велел пожирнее сделать.

14. совет от меня №2 !

Старайтесь не заезжать брашами на браши ! старайтесь состыковывать их!

15. Зачем нужен Ку2бивер , ХЛкомпилцентр и Корекомпил и прочая прочая....?

вы нарно слышали что компилить можно не тока в ВК. существуют и спец проги для этого.

Объясню : ВК кушает ОЗУ и нехило кушает (одни текстуры чего стоят) поэтому люди придумали вот такие чудеса... для более быстрой компиляции...

зы. а я вообще советую пользоваться компиляцией .bat файлами ! тк окно всё равно кушает меньше ресурсов чем прога !

пример:
копируете hlcsg hlbsp hlrad hlvis и вашу карту в формате .map в одну директорию . в той же директории сделайте файл compil.bat с содержанием примерно таким :
hlcsg.exe yourmap.map
hlbsp.exe yourmap.map
hlvis.exe yourmap.map
hlrad.exe yourmap.map

но это всего лиш пример ! здесь могут стоять и параметры компиляции например hlrad.exe -extra yourmap.map
(вроде ещё можно писать сначала имя капты а потом параметры)
(список параметров есть в ридме к ZHLT)

зы. у меня такая трабла если я первой строкой пишу hlcsg.exe -nowadtextures mymap.map то у меня ничё не пашет . так шо смотрите ! (если тоже ничё не получается то просто вычеркните эту строку из .bat файла и прокомпильте csg через..... ну DosNavigator ! Напишите в коммандной строке типа : c:\cmpil\>hlcsg.exe -nowadtextures mymap.map , ну а потом запускайте ваш батник...(в котором 3 строчки осталось) когда закончится компиляция в вашей дирикторие будет такая вкусность как mymap.bsp - собсно то что вам надо !)

16. Как выделить несколько объектов\сторон объектов ?

Зажав ctrl кликайте мышью по ним и всё будет

17. Как покрутить объект ?

выделите объект\группу объектов (по угламу вас появятся квадратики) и нажмите на выделеное ещё раз (появятся кружочки) , хватайте за кружок мышью и крутите (с shift'ом для поворота на 15 градусов)

зы. не очень с этим увлекайтесь ! а то могут быть ошибки при компиляции ! поэтому поокуратней !

18. Каковы стандартные размеры объектов в ВК ?

вообще принято считать что 40 юнитов - метр . но всё обычно зависит от случая.

стандартная высота двери - 96 ширина 64 ,толщина от вас зависит (8 обычно)
высота одного этажа 128 юнитов
высота человека 72 юнита
а вообще то просто смотрите на размеры текстур - они о многом говорят

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

Спасибо за внимание . Искренне ваш TnT.


Создание моделей

В этом разделе рассказано, как создать свою модель.

Основы создания анимации

Булеаны


Основы создания анимации

Автор: K@lashnikov

Здравствуйте!
В этой статье я расскажу вам основы создания анимации в Milkshape 3D.

Шаг первый:
Для начала нужно импортировать готовую модель. Делается это просто. Из меню files выбираем вкладку import, и затем из списка выбираем любой из форматов (в случае моделей для ХЛ выбираем формат smd). Если же ваша модель сохранена в другом формате, то следует импортировать его.

Шаг второй:
Анимации делаются с помощью костей. Скелетная анимация, в отличие от вертексной, более проста и легка в освоении, поэтому проблем в понимании принципа анимации моделей для ХЛ не будет. Если в вашей импортированной модели уже имеются кости, то можно сразу приступить к производству анимации (переходим к третьему Шагу).
Если же вы ещё не имеете костей, то самое время их провести. В панели инструментов выбираем самую левую вкладку model (на рисунке обозначено синим цветом), а затем выбираем joint (на рисунке обозначено красным цветом). Убедитесь, что опция Show Skeleton включена (вкладка joints), иначе костей не будет видно.

Провести кость можно на любом из окон обзора (кроме 3Д вида). Следует учитывать, что кость – это линия, протянутая между двумя шарнирами (joints), а потому должна состоять, как минимум, из двух шарниров, соединённых друг с другом. Левый клик мыши на любом из трёх окон обзора создаст один шарнир. Повторный клик (но уже в другой точке координат) создаст второй шарнир и автоматически протянет между ними кость.
Первая кость готова!

Шаг третий:
Теперь, когда у нас есть кости, можно переходить к другому занятию. Теперь нужно приклеить имеющиеся у нас в модели вертексы к самой кости. Это можно сделать двумя способами:
А) Выбрать нужные вертексы вручную, воспользовавшись функцией Select во вкладке Model.
Б) Выбрать нужные вертексы автоматически, воспользовавшись функцией SelUnAssigned во вкладке joints.
После этого выбираем вкладку joints в панели инструментов и нажимаем на Assign.

Шаг четвёртый:
Чтобы заняться непосредственно анимацией, нажимаем на кнопку Anim в нижнем правом углу, что позволит нам перейти в режим редактирования анимации. В нижней части экрана расположена линейка, которая называется keyframer. Число делений на ней означает число кадров. Справа находится контроллер кадров и два поля для вписывания значений. По умолчанию использовать их не требуется. То поле, что расположено левее, отображает номер текущего кадра. То, что правее, отображает число кадров. Можно свободно вписывать любое значение, хотя, как я уже сказал, этого не требуется.
С помощью функции Select можно выбирать любую имеющуюся кость, а с помощью функций Move, Scale можно менять в пространстве положение костей. С изменением положения кости автоматически изменится и положение приклеенных к ней вертексов (этим скелетная анимация и отличается от вертексной, где приходилось оперировать не на костях, а на вертексах).
Когда, как вам кажется, кость (а вместе с ней и вертексы) находятся в желаемом положении, можно сохранять этот кадр. Делается это путём нажатия клавиш Ctrl+K.
Теперь кадр сохранён, как кадр №1. Можно переходить к другому кадру (передвинуть ползунок на keyframer’е на одно деление вперёд) и делать его по аналогии с первым.

Шаг пятый (заключительный):
Теперь, когда кадры анимации готовы, можно сохранять анимацию в модели. Выбираем file, затем export, затем Half-Life SMD. Пишете название файла и нажимаете на Сохранить. Из предложенных вариантов сохранения (Reference и Sequence) выбирайте Sequence.
Анимация сохранена!

Заключение:
Надеюсь, что мой краткий туториал по основам анимации помог вам освоить это нелёгкое дело.


Булеаны

Автор: K@lashnikov

Здравствуйте!

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

Для начала немного теории. Булеаны (от англ. Booleans) - это комплексные обьекты, состоящие из двух взаимодействующих друг с другом обьектов. Иначе говоря, булеаны получаются при комбинировании двух мешей (meshes), в качестве которых могут быть примитивы и другие обьекты, конвертенные в Editable Mesh. Невозможно комбинировать два булеана, но об этом немного позже.

Чтобы правильно понять терминологию булеанов, приведу несколько общих понятий. Булеан, как правило, состоит из Обьекта А (первоначальный обьект, на котром юзается Булеан), Обьекта В (второстепенный обьект, который добавляется к Булеану) и Области Соприкосновения или Оверлапинга (Overlapping). Оверлапинг - это невидимое место соприкосновения мешей обоих Обьектов А и В.

По принципу работы Булеаны делятся на следующие подвиды:

1. Union - Из двух Обьектов составляется один. Внешняя геометрия сохраняется, а Оверлапинг удаляется. Удобно для комбинации множества мелких обьектов в один, чтобы потом не пришлось возиться с целой кучей разных частей.
2. Intersection - Сохраняется только Оверлапинг. Остальная часть обоих Обьектов удаляется. Противоположен Union'у.
3. Subtraction - Самый нужный Булеан. Сохраняется только Обьект А или В (по желанию юзера). Другой Обьект вместе с Оверлапингом удаляется. Рекомендуется использовать такой Булеан для моделирования дырок, впадин, вырезов и прочей геометрии.
4. Cut - Бесполезный тип Булеана. Просто вырезает весь Оверлапинг, а также целый меш внутри Обьекта, оставляя целыми только внешние полигоны с нормалями, повернутыми наружу. То бишь опустошает Обьект изнутри.
Для того, чтобы произвести Булеановую операцию, надо выбрать Обьект А и из списка Compounds выбрать Boolean Compound Object. Затем в меню настройки Булеана предложат выбрать тип Булеана (описано выше), и подобрать Обьект В (кнопка Pick Operand B). Остальные параметры не так уж и важны и служат, в основном, для упрощения визуализации Булеана.
Ниже показана схема производства дырок с помощью Subtraction-Булеана.

К первоначальному Обьекту А добавляем Булеан, а затем выбираем Обьект В. Задаем типа Булеана Subtraction B-A.

Обьект А и Оверлапинг были удалены. Получился обьект с дыркой, который ни за что не удалось бы сделать из простых примитивов.

Проблемы и способы их решения

Поскольку Булеаны в Максе глючат по-черному, их применение в некоторых случаях оставляет желать лучшего. Хотя разработчики заверяют нас, что в Максе начиная с версии 2,5 Булеаны используют совершенно новый алгоритм, я им мало верю. Самая, пожалуй, распространенная и неприятная проблема заключается в неправильном применении операции Subtraction, когда вместо предполагаемого результата Булеан выдает нам результат, аналогичный операции Cut - вырезанная изнутри меш. Проблема, как мне кажется, часто возникает из-за того, что один из Обьектов содержит хотя бы один отсутствующий полигон (так называемая брешь в геометрии) или лишний вертекс. Для подсчета таких глюков с обьектами надо пользоваться модификатором STL-Check. Чтобы устранить подобную ошибку с Subtraction-Булеанами, загоняйте в стек модификаторов модификатор Cap Holes (закрывает прорехи в геометрии новыми полигонами) до или после совершения Булеановых операций. Действует практически безатказно, за исключением тех случаев, когда Cap Holes иногода (в редких случаях) вероломно закупоривает сделанные нами дырки или вырезы. Поэтому предпочтительнее добавлять этот модификатор до производства Булеана.

В самом начале я говорил, что комбинировать два Булеана в новый Булеан физически невозможно. Однако если очень надо и без этого ничего не получится, то попробуйте конвертить Булеан в меш (правый клик на Булеана в стеке модификаторов => Convert to Editable Mesh). Тогда все получится.

Удачи!


PODbot: как создаются вэйпойнты

Опубликовано в форуме by Lexus

1. Вэйпоинт, что это?

Waypoint'ы (далее вэйпоинты) - это точки на картах. Боты используют их как навигацию и точно следуют заданному маршруту, что непозволяет им слепо ударяться в стены и хаотично бродить по карте. Чтобы бот начал играть на карте, необходимо заполнить её вэйпоинтами. Без вэйпоинтов бот просто будет крутится вокруг себя, или добежит до первой стены и остановится. Также бот может различать разные типы вэйпоинтов, например точку закладки бомбы или освобождения заложников.

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

2. Как выглядят вэйпоинты?

Вэйпоинты отображены как вертикальные линии, очень похожие на молнии или электрические потоки. Они имеют такую же длину, что и у игрока. Вэйпоинты имеют разные цвета и характеристики. Вэйпоинты загружаются в файл с тем же именем как и у файла карты, но используют расширение ".pwf" вместо расширения файла карты ".bsp": например, файл вэйпоинта для карты de_dust должен быть de_dust.pwf. Находятся файлы с таким расширением в директории Half-Life\cstrike\PODBot\WPTCS10. Файл с вэйпоинтами загружается автоматически с загрузкой карты. Если файла не существует, вам придётся создавать его самому.

3. Консольные команды вэйпоинтов.

Наконец мы добрались до самого интересного. С помощью этих команд создаются основы навигации бота. Открываем консоль и в путь!

"waypoint on" - для всего прочего нужно включить сам редактор. Включаем его этой командой.

"waypoint off" - команда для выключение редактора.

"waypoint on noclip" - не очень нужная команда. Позволяет летать и расставлять вэйпоинты в полёте.
Недостатки: бот следует ко всем вэйпоинтам, и он должен наступить на точку. Если он не сможет дотянутся, он будет крутится на месте.

"waypoint add" - открывает меню характеристик вэйпоинтов (об этом ниже).

"waypoint delete" - этой командой мы можем удалять вэйпоинт. Необходимо встать на него и ввести эту команду.

"waypoint stats" - показывает число вэйпоинтов, установленных на карте.

"waypoint check" - команда проверки: все ли вэйпоинты пропатчены и соединены.

"wayzone calcall" - статистика расстояния между вэйпоинтами.

"waypoint save" - сохраняет вэйпоинты, установленные вами в файл.

"waypoint load" - загрузка вэйпоинтов из файла (если он есть, конечно).

"autowaypoint" - включить авто-определение вэйпоинтов (статистика).

"autowaypoint on" - Очень интересная команда - автоматическая раставления вэйпоинтов. Всё что от вас требуется, это просто бегать по карте(!) Забегая в те отдалённые места, где обычно камперят игроки.

"autowaypoint off" - Отключение авто-раставления вэйпоинтов.

"pathwaypoint" - эта команда необходима для соединения вэйпоитов. Изображена она как горизонтальная линия между вэйпоинтами. Именно по этой линии бот выбирает направление.

"pathwaypoint on" - автоматически пачит вэйпоинты. Рекомендуется вводить после того как была активизирована команда "autowaypoint on"

"pathwaypoint off" - выключить автоматическое пропачивание.

"pathwaypoint add x" - команда позволяет пачить отдалённые друг от друга вэйпоинты. Вы должны встать на определённый вэйпоинт и в место х написать номер вэйпоинта, с которым вы хотите соединиться.

"pathwaypoint delete x" - удалить соединения между вэйпоинтами.

Все команды нужно вводить через консоль. Если у вас её нет, то нужно сделать. Создаём ярлык hl.exe, открываем вкладку 'свойства' и пишем С:\SIERRA\Half-Life\hl.exe -console -game cstrike, после чего нажимаем OK. Чтобы выдвинуть косоль нужно нажать во время игры или из главного меню тильду(~).

4. Меню характеристики вэйпоинтов.

"Normal Waypoint" - обычный вэйпоинт, служит для всех ботов. С помощью него бот передвигается по карте (зелёный).

"Terrorist Important Waypoint" - основной вэйпоинт для для терористов. Его нужно ставить около места закладки бомбы. Именно к этому вэйпоинту будут стремится боты этой команды. Рекомендуется установить на карте несколько штук. Вообще, если хотите устроить резню в каком либо месте, нужно выставить вэйпоинт и терористов и ментов.

"Ladder Waypoint" - этот вэйпоинт нужно устанавливать на лестнице: один внизу, другой вверху. Не забудьте пропачить их командой "pathwaypoint add x"

"Rescue Waypoint" - иммено к этому вэйпоинту менты выводят заложников. Их нужно ставить только на картах с заложниками.

"Goal Waypoint" - этот вэйпоинт нужно ставить обязательно, и не один. Служит он для нескольких целей.

К этой точке стремятся все команды, и бот достигнет её в первую очередь.
Необходимо ставить на закладке бомбы/разминировании.
Место, где находятся заложники.
На картах с VIP необходимо обозначить место спасения.

"Campstart Waypoint" - бот в этой точке начинает камперить. Если точку поставить в сидячем положении, то вэйпоинт станет на половину меньше своей длинны, и бот будет камперить в сидячем положении.

"Campend Waypoint" - имеет прямое значение к вэйпоинту "Campstart Waypoint". Он определяет в какую сторону будет смотреть бот во время камперства. Его необходимо выставить.

5. Несколько рекомендаций.
На карту надо занести все вэйпоинты, иначе ваша работа не будет сохранена.
Ни в коем случае не прибавляйте бота во время редактирования.
Если появится ошибка, то читайте в консоли, обычно это непропаченый вэйпоинт. Обратите внимание на вэйпоинты камперства - их тоже следует патчить.


Создание мода

В этом разделе описано создание модов для Half-life. Так как мы не специализируемся по созданию онных мы не можем выложить всю информацию по ним, но немного все же есть:

Создание FGD файла

Сравнение движков


Туториал по созданию FGD файлов

Автор: Malij038_[^Sl_Cr^]

1.Начнём с самого простого.

Итак, что же такое FGD файл и с чем его едят? Любой человек, который когда-либо работал с Worldcraft (да, и вообще с какой либо другой мапперской утилитой ) знает что такое Entities. Для не просвещённых Entity - это специальные объекты, которые помогают манипулировать вашим компьютерным миром (наглядный пример: допустим, вы хотите создать какой либо объект, который при действии на него внешнего мира (взрыв бомбы, атака со стороны игрока и т.п.) ломался. Для этого вы создаёте объект при помощи браша (или префаба), но сколько по нему не стреляй, сколько по нему не лупи, толку это никакого не даст. Так вот, для того чтобы он ломался, нужно его выделить и на панели управления нажать to Entity, у вас появиться меню, в котором вы можете выбрать нужную вам ентитю, в нашем случае func_breakable и установить нужные вам опции). Ну так вот, не будем отклоняться от темы, итак:

FGD файл - это такой файл, в котором содержатся все необходимые Entities для создания данного мода, карт для этого мода или целостной игры.

Надеюсь вам понятно моё толкование данного термина. Так что если вы хотите создать свой мод (а именно на создателей модов ориентирован данный туториал), то, пожалуй, это одна из первых вещей, с которых надо начинать; так же для начала надо продумать сценарий.

2.Создание файла.

Итак, когда продуман сценарий и все энтити, можно браться за дело. Кстати все энтити подразделяются на два класса:

SolidClass - энтити, создаваемые из брашей,
PointClass - энтити - точечные объекты.

Вид энтить нужно обязательно разделять, иначе ничего не получится. Для начала создайте текстовый файл. И приступаем:

Begin *.fgd file after the line.
---------------------------------------------------------------------------------
//
//<здесь нужно указать имя мода> game definition file (.fgd)
//Version <здесь можно написать версию мода>
//For <вид и версия маппинговой утилит(ы)> and <версия Half-Life>
//
//by <автор>
//

//Worldspawn
//
@SolidClass = worldspawn : "World entity"
[

message(string) : "Map Description / Title"
skyname(string) : "environment map (cl_skyname)"
light(integer) : "Default light level"
WaveHeight(string) : "Default Wave Height"
MaxRange(string) : "Max viewable distance" : "4096"
]

Теперь создаём классы (т.е. вводим переменные, которые будут у нас выявляться в Properties)
Надпись "@BaseClass = <>" означает то, что вы вводите новую переменную. Тут указаны Основные переменные, представленные в CS, но вы можете их изменять и добавлять свои.

//
//BaseClasses
//

@BaseClass = Angles
[
angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0"
]

@BaseClass = Targetname
[
targetname(target_source) : "Name"
]
@BaseClass = Target
[
target(target_destination) : "Target"
]

@BaseClass base(Target) = Targetx
[
delay(string) : "Delay before trigger" : "0"
killtarget(target_destination) : "KillTarget"
]

@BaseClass = RenderFxChoices
[
renderfx(choices) :"Render FX" : 0 =
[
0: "Normal"
1: "Slow Pulse"
2: "Fast Pulse"
3: "Slow Wide Pulse"
4: "Fast Wide Pulse"
9: "Slow Strobe"
10: "Fast Strobe"
11: "Faster Strobe"
12: "Slow Flicker"
13: "Fast Flicker"
5: "Slow Fade Away"
6: "Fast Fade Away"
7: "Slow Become Solid"
8: "Fast Become Solid"
14: "Constant Glow"
15: "Distort"
16: "Hologram (Distort + fade)"
]
]

@BaseClass base(RenderFxChoices) = RenderFields
[
rendermode(choices) : "Render Mode" : 0 =
[
0: "Normal"
1: "Color"
2: "Texture"
3: "Glow"
4: "Solid"
5: "Additive"
]
renderamt(integer) : "FX Amount (1 - 255)"
rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]

@BaseClass size(-16 -16 -36, 16 16 36) color(0 255 0) base(Angles) = PlayerClass []

@BaseClass size(-16 -16 -16, 16 16 16) base(Angles) = gibshooterbase
[
targetname (target_source) : "Name"
m_iGibs(integer) : "Number of Gibs" : 3
delay(string) : "Delay between shots" : "0"
m_flVelocity(integer) : "Gib Velocity" : 200
m_flVariance(string) : "Course Variance" : "0.15"
m_flGibLife(string) : "Gib Life" : "4"
spawnflags(Flags) =
[
1 : "Repeatable" : 0
]
]

@BaseClass = Light
[
_light(color255) : "Brightness" : "255 255 128 200"
style(Choices) : "Appearance" : 0 =
[
0 : "Normal"
10: "Fluorescent flicker"
2 : "Slow, strong pulse"
11: "Slow pulse, noblack"
5 : "Gentle pulse"
1 : "Flicker A"
6 : "Flicker B"
3 : "Candle A"
7 : "Candle B"
8 : "Candle C"
4 : "Fast strobe"
9 : "Slow strobe"
]
pattern(string) : "Custom Appearance"
]

@BaseClass base(Targetname) = Breakable
[
target(target_destination) : "Target on break"
health(integer) : "Strength" : 1
material(choices) :"Material type" : 0 =
[
0: "Glass"
1: "Wood"
2: "Metal"
3: "Flesh"
4: "Cinder Block"
5: "Ceiling Tile"
6: "Computer"
7: "Unbreakable Glass"
8: "Rocks"
]
explosion(choices) : "Gibs Direction" : 0 =
[
0: "Random"
1: "Relative to Attack"
]
delay(string) : "Delay before fire" : "0"
gibmodel(studio) : "Gib Model" : ""
spawnobject(choices) : "Spawn On Break" : 0 =
[
0: "Nothing"
]
explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0
]

@BaseClass base(Targetname, RenderFields, Angles) = Door
[
killtarget(target_destination) : "KillTarget"
speed(integer) : "Speed" : 100
master(string) : "Master"
movesnd(choices) : "Move Sound" : 0 =
[
0: "No Sound"
1: "Servo (Sliding)"
2: "Pneumatic (Sliding)"
3: "Pneumatic (Rolling)"
4: "Vacuum"
5: "Power Hydraulic"
6: "Large Rollers"
7: "Track Door"
8: "Snappy Metal Door"
9: "Squeaky 1"
10: "Squeaky 2"
]
stopsnd(choices) : "Stop Sound" : 0 =
[
0: "No Sound"
1: "Clang with brake"
2: "Clang reverb"
3: "Ratchet Stop"
4: "Chunk"
5: "Light airbrake"
6: "Metal Slide Stop"
7: "Metal Lock Stop"
8: "Snappy Metal Stop"
]
wait(integer) : "delay before close, -1 stay open " : 4
lip(integer) : "Lip"
dmg(integer) : "Damage inflicted when blocked" : 0
message(string) : "Message if triggered"
target(target_destination) : "Target"
delay(integer) : "Delay before fire"
netname(string) : "Fire on Close"
health(integer) : "Health (shoot open)" : 0
spawnflags(flags) =
[
1 : "Starts Open" : 0
4 : "Don't link" : 0
8: "Passable" : 0
32: "Toggle" : 0
256:"Use Only" : 0
]
locked_sound(choices) : "Locked Sound" : 0 =
[
0: "None"
2: "Access Denied"
8: "Small zap"
10: "Buzz"
11: "Buzz Off"
12: "Latch Locked"
]
unlocked_sound(choices) : "Unlocked Sound" : 0 =
[
0: "None"
1: "Big zap & Warmup"
3: "Access Granted"
4: "Quick Combolock"
5: "Power Deadbolt 1"
6: "Power Deadbolt 2"
7: "Plunger"
8: "Small zap"
9: "Keycard Sound"
10: "Buzz"
13: "Latch Unlocked"
]
locked_sentence(choices) : "Locked Sentence" : 0 =
[
0: "None"
1: "Gen. Access Denied"
2: "Security Lockout"
3: "Blast Door"
4: "Fire Door"
5: "Chemical Door"
6: "Radiation Door"
7: "Gen. Containment"
8: "Maintenance Door"
9: "Broken Shut Door"
]
unlocked_sentence(choices) : "Unlocked Sentence" : 0 =
[
0: "None"
1: "Gen. Access Granted"
2: "Security Disengaged"
3: "Blast Door"
4: "Fire Door"
5: "Chemical Door"
6: "Radiation Door"
7: "Gen. Containment"
8: "Maintenance area"
]
_minlight(string) : "Minimum light level"
]

@BaseClass base(Targetname, Target, RenderFields, Angles) = BaseTank
[
spawnflags(flags) =
[
1 : "Active" : 0
16: "Only Direct" : 0
32: "Controllable" : 0
]

yawrate(string) : "Yaw rate" : "30"
yawrange(string) : "Yaw range" : "180"
yawtolerance(string) : "Yaw tolerance" : "15"
pitchrate(string) : "Pitch rate" : "0"
pitchrange(string) : "Pitch range" : "0"
pitchtolerance(string) : "Pitch tolerance" : "5"
barrel(string) : "Barrel Length" : "0"
barrely(string) : "Barrel Horizontal" : "0"
barrelz(string) : "Barrel Vertical" : "0"
spritesmoke(sprite) : "Smoke Sprite" : ""
spriteflash(sprite) : "Flash Sprite" : ""
spritescale(string) : "Sprite scale" : "1"
rotatesound(sound) : "Rotate Sound" : ""
firerate(string) : "Rate of Fire" : "1"
bullet_damage(string) : "Damage Per Bullet" : "0"
persistence(string) : "Firing persistence" : "1"
firespread(choices) : "Bullet accuracy" : 0 =
[
0: "Perfect Shot"
1: "Small cone"
2: "Medium cone"
3: "Large cone"
4: "Extra-large cone"
]
minRange(string) : "Minmum target range" : "0"
maxRange(string) : "Maximum target range" : "0"
_minlight(string) : "Minimum light level"
]

@BaseClass = PlatSounds
[
movesnd(choices) : "Move Sound" : 0 =
[
0: "No Sound"
1: "big elev 1"
2: "big elev 2"
3: "tech elev 1"
4: "tech elev 2"
5: "tech elev 3"
6: "freight elev 1"
7: "freight elev 2"
8: "heavy elev"
9: "rack elev"
10: "rail elev"
11: "squeek elev"
12: "odd elev 1"
13: "odd elev 2"
]
stopsnd(choices) : "Stop Sound" : 0 =
[
0: "No Sound"
1: "big elev stop1"
2: "big elev stop2"
3: "freight elev stop"
4: "heavy elev stop"
5: "rack stop"
6: "rail stop"
7: "squeek stop"
8: "quick stop"
]
volume(string) : "Sound Volume 0.0 - 1.0" : "0.85"
]

@BaseClass base(Targetname, RenderFields, PlatSounds) = Trackchange
[
height(integer) : "Travel altitude" : 0
spawnflags(flags) =
[
1: "Auto Activate train" : 0
2: "Relink track" : 0
8: "Start at Bottom" : 0
16: "Rotate Only" : 0
64: "X Axis" : 0
128: "Y Axis" : 0
]
rotation(integer) : "Spin amount" : 0
train(target_destination) : "Train to switch"
toptrack(target_destination) : "Top track"
bottomtrack(target_destination) : "Bottom track"
speed(integer) : "Move/Rotate speed" : 0
]

@BaseClass base(Target, Targetname) = Trigger
[
killtarget(target_destination) : "Kill target"
netname(target_destination) : "Target Path"
style(integer) : "Style" : 32
master(string) : "Master"
sounds(choices) : "Sound style" : 0 =
[
0 : "No Sound"
]
delay(string) : "Delay before trigger" : "0"
message(string) : "Message (set sound too)"
spawnflags(flags) =
[
4: "Pushables": 0
]
]

@BaseClass = ZhltLightFlags
[
zhlt_lightflags(choices) :"Light Flags (Zhlt 2.2+)" : 0 =
[
0: "Normal"
1: "Embedded Fix"
2: "Opaque (Blocks Light)"
3: "Opaque + Embedded Fix"
]
]

Ну вот, вроде бы с переменными покончено. Теперь можно приступить к созданию непосредственно энтить. Если вы хотите создать энтити, которы уже существуют в HL или же каких-нибудь модов для неё, просто откройте их fgd файлы, выделите нужную вам энтитю и копируйте её в ваш файл.

Итак, PointClass. Не буду долго возиться, а просто на одном наглядном примере объясню что к чему.

//
// Cyclers (в эту категорию относятся энтити типа Cycler_Sprite.(Подробно ознакомиться со всеми энтитями можно в Справочнике по объектам (entities) Counter-Strike
//
@PointClass base(Targetname, Angles) = cycler_sprite : "Sprite Cycler"
[
model(sprite) : "Sprite"
framerate(integer) : "Frames per second" : 10
renderfx(choices) :"Render FX" : 0 =
[
0: "Normal"
1: "Slow Pulse"
2: "Fast Pulse"
3: "Slow Wide Pulse"
4: "Fast Wide Pulse"
9: "Slow Strobe"
10: "Fast Strobe"
11: "Faster Strobe"
12: "Slow Flicker"
13: "Fast Flicker"
5: "Slow Fade Away"
6: "Fast Fade Away"
7: "Slow Become Solid"
8: "Fast Become Solid"
14: "Constant Glow"
15: "Distort"
16: "Hologram (Distort + fade)"
]
rendermode(choices) : "Render Mode" : 0 =
[
0: "Normal"
1: "Color"
2: "Texture"
3: "Glow"
4: "Solid"
5: "Additive"
]
renderamt(integer) : "FX Amount (1 - 255)"
rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]

Короче, всё наглядно до ужаса, создаётся энтитя в скобках вводятся основные переменные, которые мы указывали выше, при желании вводятся свои. Значения в скобках после переменной указаны в конце туториала.

Дальше задействованы Env_энтити, создаются они так же как и вышеуказанные. Для этого надо всего лишь перед их созданием написать:

//
//Environmental effects
//

<....>

Вот и всё ,только не забывайте менять классы при создании например:
@PointClass = <>
@SolidClass = <>

И далее

Func -энтити:

//
// Function entities
//

<...>

Info-Энтити

//
// Info entities
//

<...>

И специальные энтити:

//
// <название игры> specific entities
//

<...>

А так же:

//
// Miscellaneous entities
//

<...>

Всё файл готов.

---------------------------------------------------------------------------------
End of file.

3.Константы - указатели.

Эти константы являются как раз теми самыми надписями, которые мы видели в скобках после задания объекта/опции.
Итак:

(string) - эта константа означает, что в данная опция является строковой (значение в виде текстовой строки)
(integer) - означает, что значение параметра - числовое
(choises) - означает, что имеются несколько вариантов для выбора
(flags) - означает, что опция будет находится во "флагах"
(sprite) - означает использование спрайтов
(model) - означает использование моделей

Так же, как это ни удивительно, но и переменные могут использоваться в качестве констант, а некоторые даже превращаться в полноценные энтити (например door).
===================================================================================
Да,кстати не забудьте, что не все игры, созданные на одном движке, поддерживают некоторые энтит, так допустим Counter-Strike не поддерживает энтити типа monster_, которые задают в HL различны NPC или же ваших врагов, хоть вы пихайте эту энтитю в cstrike.fgd толку от того, что вы её поставите не будет никакого!!! Просто CS поддерживает только Multiplayer режим.
===================================================================================

Спаисбо за то, что прочитали всю эту фигню.
Удачи вам, творите на здоровье!

Если возникнут проблемы, пишите мне на malij038@chat.ru


Сравнение движков

Автор: yxo

Здесь я попробую рассказать о том как отличаются движки 3D шутеров, все их плюсы и минусы которые я заметил. Это лично МОЁ мнение и возможно где-то я буду неправ, если что вам кажется не так, то пожалуйста напишите.

Итак, начнём-с:

Half-Life

В картах я не очень силён, но, как я знаю размеры карт весьма ограничены, что является большой проблемой, если вы хотите создать мод где будут большие открытые пространства. Но если большинство карт - это различные помещения, подземелья и т. д. то сам бог велел вам использовать данный движок. К сожалению, в Халфе нет таких эффектов как дымка или туман, облака которые будут бегать из стороны в сторону по небу, зеркальные поверхности, и т.п. а ведь с помощью таких эффектов можно довольно легко приукрасить любую даже весьма некрасивую карту. Вобщем с картами данный движок весьма недалеко отошел от Quake 2.

Теперь про модели. В сфере моделей игра на данный момент мне кажется лидером так как для создания моделей под Халф есть куча различного софта и утилит, плюс весьма много различной документации и примеров, вобщем создавать модели под эту игру очень легко. Также в моделях применена скелетная анимация, которая не занимает кучу памяти и при этом можно создавать очень большое количество различных анимаций для одной модели. Тем самым модели можно делать очень красивыми. Также в моделях есть множество различных эффектов, таких как: воспроизведение спрайтов в различных частях моделей (к примеру вспышки от выстрела), смена текстур (к примеру если человек получил более 50% повреждений то текстуры меняются на "кровавые"), модель может-быть разделенна на несколько отдельных частей которые можно заменять другими (к примеру модель разделенна на две части - голова и тело, и вы начинаете игру и покупаете к примеру каску, то в вашей модели мужичка вместо простой головы отображается подмодель головы в каске, если каску не купили то отображается подмодель просто головы. Короче говоря есть 2 подмодели: головы в каске и без неё, и в зависимости от ситуации можно отображать либо первую подмодель либо вторую). Вобщем про модели уже все, добавить могу лишь то, что если модели делать с умом, то можно сделать почти любую модель и любую анимацию какую вам хочется, даже добавить персонажу некоторую мимику, моргание глазами и т.д.

Немного про код. Сам движок игры весьма сильно закрыт от различных издевательств, и, к примеру, добавить новые функции или эффекты типа зеркальных поверхностей, вам не получится, вы сможете изменять или добавлять только монстров, режимы игры, предметы, оружие и т. д. НО после выхода FullSDK 70 метров, писать синглплеерные моды под халф стало намного легче и лучше. Так как в SDK есть намного больше исходников с монстрами и различными эффектами, также много различных моделей в формате MAX (причём некоторых моделей в стандартной игре нет и их сделали спешиал фор ю, в смысле для модостроителей всяких). В общем, запрограммировать вы сможете всё что угодно, но движок при этом потрогать не сможете, так что халф, как был халфом, так он им и останется, чтобы вы там не меняли.

Quake 3 Arena

Честно говоря считаю этот движок непереспективным, да да. Во-первых, совсем выбросили синглплеер, при этом лишились весьма много любителей кваки, которые не играют по сети, а в основном гоняют в одиночную игру. Могу в пример привести вот такую историю: есть у меня один знакомый товарищ, он старше меня лет примерно на 33-35, и вот я там рассказываю что нарыл кваку 3 хотите посмотреть, только она у меня тормозит немного, ну вообще так нормально пашет.... потом рассказываю, что вот из игры синглплеер отрубили и включаю комп. В общем, когда человек понял, что там боротся только с ботами или живыми людьми в сетке, то реакция была примерно вот такая - "Тьфу, бред какой-то. Можешь и не включать кваку". Так что вот вам один минус.

Модели анимируются также как и во Quake 2, тоесть в каждом кадре анимации записанны положения каждой вершины модели. Это НЕ скелетная анимация если кто еще не просёк. Так вот данный принцип анимаций имеет некоторые свои плюсы, но всё же довольно сильно уступает скелетной системе, так к примеру в халфе можно было смешивать две скелетные анимации вместе и при этом игра еще могла сама управлять некоторыми костями, к примеру костями рта если модель говорит в данный момент. А в кваки такого нельзя делать и вобще там довольно мало анимаций так как они жрут много памяти. НО разработчики, а точнее ID Software сделали небольшой прорыв в моделях, а точнее модели разделенны на 3 назависимых друг от друга подмодели, а точнее голову, торс и ноги. Чем это грозит? Вопервых теперь можно крутить головой и торсом если поворачиваешся куда-либо; во-вторых, можно стрелять и бежать одновременно, так как эти подмодели анимируются отдельно. Вобщем не всё так плохо, но всёже в сфере моделей Ку3 Арена подходит больше под такойже мясной мод, как и сама игра.

Ок, но это еще не все, умные IDовцы придумали некие Шадеры - это такие скриптики с помощью которых можно залупасить множество красочных эффектов, типа зеркального отражения всяких там бликов и различного кручения верчения цветами. Вобщем всё это красиво но только для мясных и цветастых модов, хотя если постаратся можно и какой-нибудь реалистичный мод даже под квейк3 написать.

Теперь про карты. В Quake 3 arena картах я совсем профан так что скажу мало, а точнее есть весьма красивые вещи такие как сплайновые поверхности, сами карты заметно отличаются строением от Q2 или Q1 причём в лучшую сторону, я имею ввиду не внешний вид а внутреннее строение карты тоесть заметно что некоторые вещи в Q3A есть такие, которые вообще невозможно реализовать в том же Half-Life или Q2.

Unreal или Unreal Tournament

Анрыл весьма обширный движок и понять его разом вам вряд ли получится. Начну с карт: Карты можно делать охер[censored] размеров, вобщем бежать можно очень долго до противоположного конца карты, при этом всё это не сильно загружает процессор, так как в Анрыле применяется некая система с умным названием "LOD" - "Level-Of-Detail" Уровень детализации, если по-нашему. В двух словах, данная штуковина, это некий алгоритм который в зависимости от настроек немного изменяет структуру модели или куска карты. Тоесть к примеру если мы удаляемся от нашего друга Васи Пупкина, то через некоторое расстояние ,при котором модель Василия уже начинает смазыватся, алгоритм берёт работу на себя и при выводе модели некоторые полигоны какбы совмещает и сама модель из 1000 полигонной красавицы превращается в 500 полигонную уродку, при этом вы видите её далеко и вам незаметно что модель както сильно пострадала от данного алгоритма. Брр... надеюсь я понятно обьяснил. Далее, в картах применяется просто туча эффектов таких как: облака плывут по небу, небо само может крутится как угодно, различные зеркальные поверхности и т. д., туман, дымка, блики от солнца, направление гравитации можно менять к примеру в одной комнате вы идёте по полу а во второй комнате вы уже можете ходить только по потолку или по стенам... Это не все эффекты которые есть в игре, я еще её не изучил так хорошо как мне хотелось-бы.

Теперь про модели. В моделях сначала разработчики недалеко ушли от Quake и анимировались модели также вершинами, НО в UT (последней версии) уже не простая анимация а СКЕЛЕТНАЯ, причём осталась еще и старая анимация вершинами. И скелетная анимация в игре сделанна ну очень и очень хорошо, к примеру в отличии от Халфы где в каждом файле модели мужичка кроме самой модели есть все анимации. То есть, даже если в игре 10 моделей с одинаковыми скелетами и анимациями, то, всё равно для каждой будут свои анимации и они будут жрать память. В Анрыле же сделали немного по другому, а точнее если у вас скелет модели такой же, как и у стандартных моделей и анимации будут такие же, то вы просто сохраняете модель без анимаций, а игра уже сама будет воспроизводить анимации которые стандартны как для вашей модели так и для других. Короче память экономят сильно. К сожалению в Анрыле нет такой фишки, как деление модели на несколько частей которые могут потом заменятся другими, как было сделанно в Халфе (см. выше), хотя я точно это еще не проверил, возможно какой-то путь всётаки есть.

Теперь немного про код: В Unreal и UT вопервых хорошо открыт движок, тоесть можно добавлять свои эффекты, менять драйвера рендеринга, и обновлять уже старые эффекты: такие как воду, смог, туман и т. д. Применяется в игре не простой язык C или C++ как в Халфе, Q3A или Q2, а уже свой собственный язык который очень похож на тотже C++ и Java. Это весьма сильно отпугивает некоторых разработчиков так как тут прийдётся немного перестроится на новый язык, и если вы не сильны в программировании, то создать чтото мощное будет весьма проблематично. Но как говорят разработчики данного движка, это улучшает саму игру её скорость и т. д. Так как этот язык программирования заточен исключительно под игру, и никаких совершенно ненужных функций там нету. Сам язык этот называется Unreal C или если кратко то UC, можно провести некие параллели с игрой Quake где был язык QC (Quake C), на котором также можно было писать различные моды под кваку, но QC был весьма урезанной версией языка C.


Компиляция карты

by deadman

Итак, Вы скачали Worldcraft и создали свою первую карту, которая, по существу, состоит из одной комнаты и точками появления 10 террористов, 10 спецназовцев и 2-3 заложников. В окне просмотра в режиме 3D Worldcraft'а Вы ознакомились с внешним видом карты, однако Вам не терпится попробовать, будет ли она работать в игре. С чего же начать?

Самый простой способ - использовать Worldcraft и идущие в комплекте с ним компиляторы. О том, как настроить Worldcraft на инструменты можно узнать здесь, а о том, как изменять параметры компиляции можно прочитать здесь. Однако я хочу предложить Вам более надежный способ компиляции карт. Хотя, на первый взгляд, он может показаться Вам более сложным, он имеет ряд преимуществ по сравнению с компиляцией с помощью Worldcraft'а или другой программной оболочки для компиляторов.

Во-первых, всегда пользуйтесь компиляторами от Зонера (Zoner's Halflife Tools - ZHLT). Сходите в раздел ИНСТРУМЕНТЫ и скачайте набор компиляторов ZHLT последней версии. Эти компиляторы, в отличие от стандартных, могут компилировать объекты с тенями, имеют более информативные сообщения об ошибках, сохраняют "логи" компиляции, имеют больше возможностей для настройки и содержат меньше ошибок. После того, как скачаете компиляторы, распакуйте содержимое архива в папку с Worldcraft'ом или в любую другую, где Вы будете компилировать свои карты. Единственным условием является то, что файлы с текстурами (.wad) должны находиться на том же логическом диске, что и файл с картой, иначе компиляторы могут не найти текстуры и прервать процесс компиляции.

Во-вторых, запускайте компиляторы непосредственно из операционной системы, миную программы-оболочки, такие как Wolrdcraft и другие. Основной аргумент в пользу этого высказывания - экономия памяти и сокращение времени компиляции. Так, WC загружает в память всю Вашу карту, а также текстуры, указанные в его настройках. Плюс сам WC требует определенный объем памяти. Все бы ничего, да сами компиляторы требуют огромного количества памяти (особенно RAD-компилятор, для которого потребность в памяти может достигать 200-300 Мб, и даже > 1Гб для сложных детализированных карт).

Кроме вопроса о памяти есть еще одна загвоздка: WC и другие оболочки используют т.н. Process window (Окно выполнения компиляции), в котором показывают текущее состояние работы компиляторов. К сожалению, такое окно выполнения не приспособлено для отражения большого объема информации, так что приходится ограничивать выдаваемую компиляторами информацию до минимума. При этом теряется одно из основных преимуществ компиляторов Зонера - информативность. Ошибку или предупреждение можно не заметить, и, впоследствии, лишь догадываться о причинах неправильной работы или "зависания" Halflife.

Итак, мы договорились использовать ZHLT и запускать их непосредственно в ОС. Следующим этапом является экспорт исходников карты в формат .map. А как же тогда Worldcraft компилирует карты, сохраненные в формате .rmf? На самом деле, WC автоматически экспортирует карту в .map - единственный формат, понятный для компиляторов, а формат .rmf - внутренний для WC и содержит более подробную информацию, например, о группировке объектов и т.д. Для экспорта выберите в меню File пункт Export to .MAP, укажите имя файла и все. Теперь начинается самое интересное - сама компиляция.

Всего компиляторов 4, каждый отвечает за свой этап создания готового файла-карты. CSG отвечает за создание общей геометрии на карте (файл hlcsg.exe); BSP создает дерево BSP карты и готовый запускаемый .bsp файл (файл hlbsp.exe); VIS анализирует видимые участки для карты для увеличения скорости отрисовки кадра (файл hlvis.exe); RAD добавляет в готовый файл информацию об освещении на карте (файл hlrad.exe). Для того, чтобы автоматизировать процесс компиляции карты, рекомендуется создать несколько пакетных файлов (.bat), в которых прописать последовательность запуска компиляторов и параметры к ним. Несколько таких файлов необходимо для того, чтобы реализовать, например, полную и частичную (быструю) компиляцию. Создайте текстовый файл, запишите в нем названия программ-компиляторов и параметры к ним, а затем измените расширение файла с .txt на .bat. Можно начинать компиляцию.

Для полной окончательной компиляции необходимо запустить все 4 компилятора со следующими параметрами:

hlcsg.exe <имя_карты>
hlbsp.exe <имя_карты>
hlvis.exe -full <имя_карты>
hlrad.exe -dscale 1 -extra <имя_карты>

Если Вы проверяете геометрию, то можно пропустить выполнение RAD-компилятора и заменить параметр -full компилятора VIS на -fast, а если карта совсем небольшая (1-2 комнаты без деталей), то, для проверки работоспособности, можно пропустить и VIS. Однако по мере увеличения размеров карты, компиляция без VIS'а приведет к потере производительно при запуске игры ниже приемлемого уровня (скажем 3-5 кадров в секунду даже на GeForce). Компиляция же без RAD'а приведет к тому, что карта будет абсолютно светлой, без теней. Полный перечень параметров компиляторов находится здесь.

Таким образом, для полной компиляции Вам потребуется пакетный файл следующего содержания:

@echo off
rem Диск должен совпадать с диском, где установлен Halflife, чтобы ZHLT мог найти файлы с текстурами (.wad)
c:
rem Или используйте переменную WADROOT для указания пути к файлам с текстурами (.wad)
set WADROOT=c:\games\halflife
rem Укажите имя карты в следующей строке (без расширения)
rem myfirstmap замените на название своей карты
set mapname=myfirstmap
hlcsg "%mapname%"
hlbsp "%mapname%"
hlvis -full "%mapname%"
hlrad -dscale 1 -extra "%mapname%"

Для ускоренной компиляции, с сохранением освещения (невысокого качества) создайте еще один пакетный файл следующего содержания:

@echo off
rem Диск должен совпадать с диском, где установлен Halflife, чтобы ZHLT мог найти файлы с текстурами (.wad)
c:
rem Или используйте переменную WADROOT для указания пути к файлам с текстурами (.wad)
set WADROOT=c:\games\halflife
rem Укажите имя карты в следующей строке (без расширения)
rem myfirstmap замените на название своей карты
set mapname=myfirstmap
hlcsg "%mapname%"
hlbsp "%mapname%"
hlvis -fast "%mapname%"
hlrad "%mapname%"

Назовите первый файл full_compile.bat, а второй - fast_compile.bat. Теперь, для компиляции своих карт только меняйте название карты в пакетном файле, а также, при необходимости, параметры компиляторов. Если компиляция прошла без ошибок, Вы получите готовый .bsp файл с картой, который необходимо скопировать в папку Halflife\cstrike\maps, создать сетевую игру и насладиться результатами своего труда.

На последок предлагаю вам универсальный .bat файл от ТнТ, с помощью которого, легко меняя настройку, можно откомпилировать любую карту, будь то частичная промежуточная компиляция карты с одной комнатой или финальная компиляция русского dust'а.

begin of fcomptnt.bat after the line :

-------------------------------------

@echo off
rem Valve map .bat compiller (c) 1998
rem Mod'ed by TnT
rem Задаем имя компилируемой карты. Измените слово yourmapname на имя
rem компилируемой карты (пример de_booooom)
set mapname=yourmapname.map
rem Variable Construction
rem Задаём путь к компиляторам (в данном случае ZHLT)
set csg=c:\program files\worldcraft\zhlt\hlcsg.exe
set bsp=c:\program files\worldcraft\zhlt\hlbsp.exe
set vis=c:\program files\worldcraft\zhlt\hlvis.exe
set rad=c:\program files\worldcraft\zhlt\hlrad.exe
rem Папка с картами к Worldcraft
set wcmaps=c:\program files\worldcraft\maps
rem Насчёт путей ! надеюсь вы уже знаете что все компиляторы , карты да
rem и сама халфа должны быть на одном диске . C: к примеру. (Если у вас
rem всё добро находится , ну на D: то измените пути ВСЕГО в этом файле
rem с C: на D:
rem Папка с картами (можете изменить путь на подходящий .
rem Пример c:\hl\cstrike\maps
set hlbsps=c:\games\half-life\valve\maps
rem Half-Life drive
set hldrive=c:
rem change to half-life maps directory (to ensure being on the right drive)
%hldrive%
cd %hlbsps%
rem Сам процесс компиляции (параметры , такие как -estimate , -full
rem расписаны и описаны в Ридмешнике к zhlt)
%csg% -estimate -nowadtextures %wcmaps%\%mapname%
%bsp% %wcmaps%\%mapname%
%vis% -estimate -full %wcmaps%\%mapname%
%rad% -estimate -extra %wcmaps%\%mapname%
rem Выше приведён пример простенькой компиляции класса final\full
rem Хотите усложнить другими параметрами ? Бога ради ! Приписывайте
rem наздоровье и компильте.
rem copy compiled map from wc maps directory to hl bsp directory
copy %wcmaps%\%mapname%.bsp %hlbsps%\%mapname%.bsp
rem Variable Deconstruction
set csg=
set bsp=
set vis=
set rad=
set wcmaps=
set hlbsps=

----------------------------------

end of fcomptnt.bat

Удачной компиляции!


Введение в ZHLT

by Sean 'Zoner' Cavanaugh
переведено и адаптировано by deadman

Что такое ZHLT?

ZHLT – это аббревиатура от Zoner's Halflife Tools – утилиты для компиляции карт для Halflife. По своей сути являются модифицированной версией стандартных утилит компиляции, идущих в комплекте с Worldcraft. Изменения от оригинала включают более высокое качество освещения в готовых картах, более быстрое определение видимых участков на карте, более подробное сообщение об ошибках, а также сетевая программа для анализа видимых участков на карте. Есть, также, множество других нововведений, о которых можно посмотреть в файле ZonersHalflifeTools.html (англ., идет в комплекте с компиляторами).

Как использовать эти утилиты

Утилиты представляют собой 4 программы, управляемые через параметры в командной строке, предназначенные для конвертации исходников карты (.map) в готовый файл карты (.bsp), используемый игрой. Для использования подразумевается знание, что такое «командная строка» и как ее использовать. Существует несколько программ (включая Worldcraft), позволяющих настраивать параметры компиляции с помощью меню, однако не рекомендуется использовать эти программы для компиляции больших сложных карт. В комплект входят следующие 4 программы:

HLCSG: создает общую геометрию на карте.
HLBSP: создает дерево BSP карты и готовый запускаемый .bsp файл.
HLVIS: анализирует видимые участки на карте для увеличения скорости отрисовки кадра.
HLRAD: добавляет в готовый файл информацию об освещении на карте.
Всего утилит четыре, и каждая из них может вызвать ошибку компиляции, существует система, позволяющая пропустить выполнение последующих утилит в случае возникновения ошибки на любом этапе. Каждый интсрумент в обязательном порядке записывает отчет (лог) об исполнении, сохраняя всю информацию, отображаемую в окне программы. Файл отчета имеет то же имя, что и файл с картой, только с расширением .log. Например, при компиляции карты BoogaWooga12.map создается файл отчета BoogaWooga12.log. в случае возникновения ошибки компиляции необходимо проверить данный файл, так как в нем указывается сама ошибка, причина ее возникновения и способы ее устранения. Наиболее серьезные и часто возникающие ошибки описаны в файле ZHLTProblems.html (англ., идет в комплекте с компиляторами).

Так как утилиты являются довольно сложными программами, каждая из них имеет несколько параметров для настройки компиляции. Файл ZHLTReference.html содержит полный перечень всех параметров для каждой утилиты. Самые интересные опции – для утилиты HLRAD, которые включают уровень освещения, яркость карты и качество отображения карты.

Комплект также включает несколько perl скриптов, находящихся в папке с ZHLT. Данные скрипты имеют описательные названия и созданы для выполнения второстепенных задач (таких как подсчет брашей или объектов на карте, переключение имен с сокращенного на полные на картах для Team Fortress, и т.д.). Если у вас нет опыта запуска Perl скриптов, не волнуйтесь, данные скрипты предоставлены для удобства опытных пользователей и никак не влияют на процесс компиляции карт.

Настройка утилит ZHLT в редакторах карт

Настройка утилит ZHLT полностью идентична настройке стандартных утилит от компании Valve. Названия утилит ZHLT были немного изменены для того, чтобы они могли сосуществовать с оригинальными утилитами. В основном установка не отличается от установки стандартных утилит; изменения заключаются в замене qcsg.exe файлом hlcsg.exe, qbsp2.exe файлом hlbsp.exe, vis.exe файлом hlvis.exe, qrad.exe файлом hlrad.exe. Большинство редакторов имеют описание настройки компиляторов; обычно изменение имен программ достаточно для того, чтобы все работало правильно.

Пример пакетного файла (.bat) для компиляции с помощью ZHLT

Ниже приведен пример пакетного файла для конечной компиляции карт:

@echo off
@rem Диск должен совпадать с диском, где установлен Halflife, чтобы ZHLT мог найти файлы с текстурами (.wad)
c:
@rem Или используйте переменную WADROOT для указания пути к файлам с текстурами (.wad)
set WADROOT=c:\games\halflife
rem Укажите имя карты в следующей строке (без расширения)
set mapname=myfirstmap
hlcsg "%mapname%"
hlbsp "%mapname%"
hlvis -full "%mapname%"
hlrad -dscale 1 -extra "%mapname%"


ZHLTvsQTOOLs

 +

Что лучше ZHLT или Qtools?

Вопрос хороший. Но вопрос: а что такое ZHLT? - ещё лучше.

ZHLT- Зонерс халф лайф тулс. Подробнее...
Найти эти инструменты можно опять-таки у нас, на Полигоне.
А QTools поставляются вместе с ВК, так что не надо их искать :)

Так чем же они лучше ?

Они более информативные, если при компиляции обнаруживается ошибка то ZHLT опишет её и даже может написать пути решения. Подробнее...

О скорости.

Составы "команд":
Qtools - qcsg (csg), qbsp2 (bsp), vis (vis), qrad (rad).
ZHLT - hlcsg (csg), hlbsp (bsp), hlvis (vis), hlrad (rad).

qcsg vs. hlcsg - ZHLT win.

qbsp2 vs. hlbsp - ZHLT win

vis vs. hlvis - Qtools win (прим. Липа: в новейших версиях скоерее выиграет Зонер...)

qrad vs. hlrad - ZHLT win

Решать чем пользоваться вам, но вообще-то qtools хуже, так как они были созданы ещё для компиляции уровней Quake 2.

p.s. как подключить ZHLT будет описано в главе Компиляция.


Компиляционные ошибки

Автор: L i P k I y

Здрасте.

Решил написать небольшой справочник по компиляционным ошибкам, так как у многих вызывает множество вопросов по некоторым из них. Тут представлены большинство ошибок, связанных с картостроением. Вы можете отыскать свою ошибку в списке, но советую прочитать все - от начала до конца. В этом туторе содержится масса интересных фактов, которые должен знать как хороший маппер, так и новичок (последнему вообще полезны такие статьи). Большинство ошибок, описанных ниже, возникало при компиляции Зонерами (zhlt), так что советую скачать. Итак, начнем:

MAX_MAP-ошибки

MAX_MAP_HULLS Карты в Halflife, как и Quake1, имеют 4 замкнутые области (hulls), используемые движком игры: 1 область - видимая (для обрисовки видимых участков карты), и 3 области - ограничительные (для ограничения движения игроков на карте).

Максимальное кол-во: 4

Как можно добиться такой ошибки ума не приложу.
MAX_MAP_MODELS Я знаю только то что:

Максимальное число моделей на карте не должно превышать 400 шт.
MAX_MAP_BRUSHES Угадайте с трех раз. Для не догадливых поясню: превышено значение допустимого количества брашей на карте.

Максимальное число брашей на карте составляет: 8192.

Представьте себе, и у меня такая ошибка была однажды, но это уже другая история. Кому надо посмотреть эту карту шлите на мыло. Могу только посоветовать делать карту меньше или заменять в некоторых ситуациях несколько брашей одним.
MAX_ENGINE_ENTITIES

MAX_MAP_ENTITIES 		Максимальное количество энтитей на карте было превышено.

Допустимое количество точечных (MAX_MAP_ENTITIES) или энтитей-брашей (MAX_ENGINE_ENTITIES) на карте - 1024.

Соответственно в сумме и тех и тех можно наделать - 2048. Если у кого такое будет на карте, обязательно пришлите мне этот шедевр. J
MAX_MAP_ENTSTRING (512*1024) Максимальный размер одной строки в файле *.map был превышен.

Максимально допустимый размер: 512 Кб

Забейте на эту ошибку, наверное, только у редкостных мапперов J возникают такие вот проблемы.
MAX_MAP_PLANES Допустимое число плоскостей на карте было превышено.

Максимальное число плоскостей: 32767
MAX_MAP_NODES

MAX_MAP_CLIPNODES 		Превышено число брашей, которые препятствуют перемещению игрока по карте.

Максимальное число: 32767

Энтити браши на этот лимит ни как не влияют (func_wall, например).
MAX_MAP_LEAFS Вероятно:
При компиляции карта разбивается на плоскости, доступные игроку.

Максимально: 8192

При ошибке, попробуйте упростить вашу карту, уменьшить ее в размере или обратить мелкие предметы в func_wall.
MAX_PATCHES Не знаю, как перевести, но попробую объяснить.

HLRAD и HLVIS при компиляции делит каждую видимую плоскость браша на отдельные «patches». Позже на них (на «patches») разместится свет (еще называют «картой света»). По умолчанию начальный размер «patches» составляет 64х64 юнита и зависит от размера текстуры, в которую выкрашена эта плоскость.

Вы можете уменьшить подсчет каждого patch’а, увеличив размер «patches» (не понял? Перечитай еще раз J). Это можно сделать, только увеличив масштаб текстуры (имеется в виду, не увеличить в размере, из 64х64 сделать 128х128, а просто растянуть с помощью WC).

Пример: У вас есть стена размером 128х128. Она выкрашена текстурой, чей размер составляет 64х64. Соответственно, на нашей стене будет четыре таких текстуры или четыре «patches». Таким образом, увеличиваем масштаб текстуры с 1.00 до 2.00 и получаем 1 «patche». Сократили кол-во «patches» на 1/4.

Часто такая ошибка бывает, когда новичок (именно он! Потому что больше такого никто не делает J) создает вокруг своей карты большой блок неба, дабы избежать другой, более противной ошибки “LEAK”. Никогда так не делайте! Во-первых, увеличивается в раз пять работа HLVIS (точно: на 80%). Во-вторых, обрабатывается внешняя часть карты, которую игрок видеть никак не может, да и не должен. Количество «patches» увеличивается вдвое, а то и втрое. На Полигоне есть статья о «Небе», читайте.

И напоследок. Замечали что тени в ХЛ какие-то квадратные? Вот. Используйте команду -chop # (HLRAD) для увеличения «patches». Чем выше параметр, тем хуже (грубее) свет.
MAX_MAP_VERTS

MAX_MAP_FACES

MAX_MAP_MARKSURFACES 		Максимальное число этих компонентов было превышено.

Максимальное число каждого: 65535

Если кто знает, что обозначают FACES и MARKSURFACES напишите мне
MAX_MAP_TEXTURES Максимальное число различных текстур на карте было превышено.

Максимум используемых текстур на карте не должно превышать лимита в 512

Не путайте «текстура» с «ВАД» файлом.
MAX_MAP_TEXINFO Максимум: 32767

Ничего неизвестно об этой ошибке.
MAX_MAP_EDGES

MAX_MAP_SURFEDGES 		Максимум:

MAX_MAP_EDGES: 256 000

MAX_MAP_SURFEDGES: 512 000

Ничего неизвестно об этой ошибке.
MAX_MAP_MIPTEX Размер памяти, отведенный под текстуры (Mb) был превышен.

Зависит от компиляторов, которыми вы пользуетесь.

Стандартные-HL-компиляторы: 2Мб

Zhlt v. < 1.2: 4Мб

Zhlt v. >= 1.2: Мб (Смотрите файл ZHLTReference)
MAX_MAP_LIGHTING 0x400000 Возможно, но я не уверен:

Возможно, из-за больших данных при вычислении освещения возникает такая ошибка. Попробуйте уменьшить количество источников света на вашей карте.
MAX_MAP_VISIBILITY 0x200000 Возможно, но я не уверен:

Возможно, из-за больших данных при вычислении видимого пространства возникает такая ошибка. Вероятно ваша карта слишком большая или слишком сложная по архитектуре.
ReadSurfs (line 73753): 32 > MAXPOINT Возможно, но я не уверен:

Эта ошибка возникает в очень сложных по архитектуре картах.

HLCSG

**Executing...
**Command: Copy File
**Parameters:
"D:\mapname.map"
"D:\.....\mapname.map"
The command failed.
Windows reported the error:
"File not found"

или:
Error: Error opening
c:\.........\mapname.map
No such file or directory 		1. В некоторых случаях для компиляции нужен файл mapname.map. WC по умолчанию сохраняет вашу карту только в формат mapname.rmf. Что бы сохранить в формат *.map следуйте этому пути: "File --> Export to MAP".

2. Во втором случае, возможно, ваш *.map файл и директория с вашими компиляторами различны.
Token too large on line n Вы используете слишком много *.WAD файлов на вашей карте

Имена ваших ВАД файлов сохраняются в отдельную строку в *.map файл. И если у вас слишком много вадов, то превышается лимит символов на одну строку в вашем *.map файле. Я предполагаю, что максимальное значение символов: 256.

Удалите из списка те ВАД файлы, которые вы не используете.

Если у вас, например одна текстура из одного вада, другая из другого, третья из третьего, то предлагаю с помощью специальной проги (Wally) создать свой вад со своими текстурами.

Далее, такие вады, как:
cached.wad
pldecals.wad
spraypaint.wad
gfx.wad
fonts.wad

можно убрать из списка. Они вам не понадобятся.
Entity 10, Brush 0, Side 5:
has a coplanar plane at
(-753, -9, 251), texture CA1X_CON1
BEntity 10, Brush 0, Side 6:
has a coplanar plane at
(-753, -32, 251), texture CA1X_CON1B 		Эта ошибка говорит вам о том, что один браш содержит две плоскости на одной стороне.

Например:

После использования инструмента “vertex tool”, получилось так, что одна сторона квадрата содержит 2! Плоскости. Такое недопустимо!

Что бы избавиться от одной из двух плоскостей, вам естественно придется избавиться от одной из трех белых точек (Белые точки – крайние точки плоскости, желтые – середина плоскости). Воспользуемся инструментом “vertex tool” и перетащим белую точку, находящуюся в центре, в лево или в право, так чтобы совпадала с другой точкой. Появится окно с вопросом "Merge vertices?". Нажмите «да».
Entity #, Brush #: plane with no normal Эта ошибка происходит в том случае, если при использовании «vertex tool» на вопрос "Merge vertices?" вы отвечали «нет». В этом случае происходит образование нулевой области, так как точки не слились в одну. Удалите такой браш и создайте его снова.

Эта ошибка может появиться и при использовании инструмента “carve”.
Entity#, Brush#: Outside World At (x,y,z) Карты в HL не должны превышать определенного размера.

Максимальный размер карты это куб со стороной 8192 юнита. В WC это сетка и ее координаты по оси x, y и z. То есть вы создаете свои карты в координатной плоскости с крайними координатами -4096 до +4096.

Эта ошибка обозначает то, что какой либо браш находится за границами допустимой координатной плоскости.

Кстати. Что бы быстро найти нужный браш по номеру, нажмите ctrl-shift-G, и введите там номер браша или энтити который вам сообщает компилятор.
Entity#, Brush#: mixed face contents Texture ROCK_X1 and SKY Один и тот же браш покрашен текстурами разных свойств.

В ХЛ Все стороны браша должны быть покрашены текстурами, имеющие одинаковые свойства. Например, если вы красите сторону браша текстурой воды, а остальные стороны обычными текстурами – произойдет вот такая ошибка. Вот текстуры, которые должны покрывать весь браш:
  • sky
  • Все виды жидкостей (water, slime, lava)
  • origin
  • clip
Нельзя допускать, что бы обычная текстура и выше приведенные текстуры находились на одном браше!
Fatal: Entity #, Brush #: ORIGIN brushes not allowed in entity Энтити # покрашен в текстуру origin, но такая текстура этому объекту не нужна.

Найдите этот энтити и просто удалите или до\перекрасте, так что бы он не содержал текстуры origin.
Fatal: Entity #, Brush #: ORIGIN brushes not allowed in world На вашей карте находится origin браш (так называется браш, покрашенный в текстуру origin естественно), не связанный с какой либо энтити (объектом).

Найдите такой браш, удалите его или свяжите его с энтити.

Такая ошибка возникает при попытке создать дверь. Дверь и origin браш должны быть сгруппированы.
********** ERROR **********
Found an entity with ONLY an origin brush near (x,y,z)! 		Эта ошибка похожа на две предыдущие.

Исправляется аналогично.
Parsing Brush Эта ошибка возникает по различным причинам:
  • Браш выкрашен простой текстурой и прозрачной (имя такой текстуры начинается на { и чаще всего синего цвета) текстурой одновременно.
  • WC 3.3 идет с пакетом очень старых компиляторов. Пользуйтесь Зонерами.
Missing "[" in texturedef Эта ошибка возникает по различным причинам:

1. Эта ошибка происходит из-за новой версии WC 3.3. Если вы сохраняете *.map файл в WC 3.3, а редактируете, изменяете и компилите (и кому такое в голову придет? J) в WC 2.x, то появляется такая ошибка. Нормальным людям она не грозит. И все же, как избавиться от этой ошибки? Откройте *.map файл в ноутпэде и удалите строку «mapversion 220»
2. Одна или более текстур содержат в имени знаки, не принадлежащие английскому языку. Например: u, a, o и так далее. Просто переименуйте эти текстуры.

HLBSP

ERRORLOG D:\compiling\mapname.err detected, hlbsp processing halted>> If you have fixed the problem, you can delete the file and rerun hlbsp Исправьте все ошибки, отмеченные в файле mapname.err (mapname естественно имя вашей карты). Потом просто удалите этот файл.
********** ERROR **********
Can`t open c:\......\mapname.p0 		HLbsp не может открыть или найти файл mapname.p0, который создается Hlcsg. Надо отметить, что HLcsg компилит карту перед HLbsp, так, что ищи проблему там, почему не создался данный файл.
LEAK LEAK LEAK
(Обычные компиляторы)
Warning: === LEAK in hull 0 === Entity capture_point @ (x, y,z)
(Если вы используете zhlt) 		УУУх!!! Гроза все новичков!!

По этой ошибке можно писать целые статьи. Попробую в вкратце описать эту ошибку. Лик (Leak (англ.) – утечка, проще - дырка) происходит оттого, что ваша карта не герметична. То есть щели в то «никуда», которое вы можете наблюдать в WC. Стыкуйте браши более внимательно. Если вы так и не нашли Лик, то можно прибегнуть к более сложному способу. При такой ошибке HLbsp создает отдельный файл под названием mapname.pts. Поместите его в папку с картами (чаще всего cstrike\maps) ну и вашу карту то же естественно. К ярлыку контры допишите -particles 10000 (или 50000, если не хватит линии) и загрузите вашу карту. В консоли пишите pointfile. Вы увидите пунктирную линию. Найдите ее начало и следуйте по ней пока линия не выйдет за границу карты. Это и значит, что в этом месте - Дырка.

Утечка, так же может произойти если какая либо энтити находится не в зоне карты, то есть за ее границами. К энтити относятся так же и func_walls. Естественно они не должны быть крайними на карте, то есть выходить в «пустоту». Будьте внимательней!

И для чайников: фраза Entity capture_point @ (x, y,z) не означает координаты Лика. Это координаты Энтити, которая среагировала на этот лик.
Warning:
MakeNodePortal: new portal was clipped away from node @(x,y,z)-(x,y,z) 		HLBSP не смог создать некоторую часть пространства. Это вызвано или сложностью стыковок брашей (например: пересекаются) или большим углом наклона между двумя брашами. В результате игрок будет задевать за что-то невидимое.

Если ваша карта компилится и r_speeds в норме, то можете пренебрегать этим предупреждением.

В противном случае найдите браши по данным координатам и упростите или удалите их.

HLVIS

********** ERROR ********** Error opening c:\.........\mapname.bsp No such file or directory | Эта ошибка возникает в том случае если произошла другая ошибка при компиляции HLBSP и HLCSG. Так что смотри логии компиляции.
Warning: No .prt File Found, No VISing Performed bzw. ---- vis ---- 1 thread(s) LoadPortals: couldn`t read c:\....\....\mapname.prt No vising performed. | Этот файл нужен визу для вычислений видимости на карте. Как и в прошлой ошибке произошла ошибка в HLBSP и HLCSG. Да спасут нас логи!
Warning: Leaf Portal Saw Into Leaf | Вот пара ссылок, описывающих эту ошибку, так как она очень большая: http://gamedesign.net/quake2/tutorials/dewan_hint/ http://info.gamedesign.net/spotlight/YapwithYahn.htm
Max_Leaf_Faces | Слишком много видимых частей брашей. Если ваша карта содержит множество мелких деталей, советую обратить эти детали в func_wall, так как энтити в ХЛ обрабатываются в реальном времени.
Error: Vismap expansion overflow | Аналогичная предыдущему примеру ошибка.
Texture axis perpendicular to face | Какая либо текстура сильно растянута. То есть имеет большой масштаб. Минимальный и максимальный масштаб текстуры: -999 и +999 соответственно. Дополнительные причины: 1. Браш вращался, без включенного "Texture Lock". 2. Из-за неправильного обращения с такими инструментами как: vertex tool и carving tool. Иногда - Clipping tool.

HLRAD

********** ERROR ********** Error opening c:\..........\mapname.bsp No such file or directory | Эта ошибка возникает в том случае если произошла другая ошибка при компиляции HLBSP и HLCSG. Так что смотри логи компиляции.
Warning: Too Many Direct Light Styles on a Face | Это значит, что более 3 источников света освещают одну плоскость. Все источники света, имеющие разные свойства (цвет, мерцание, яркость, переключение, даже имя и так далее), будут обозначены как совершенно разные источники света. Но если, например, цвет одного совпадает с цветом другого, то эти источники будут считаться одинаковыми. Что бы избежать такой ошибки, вы или удаляйте некоторые источники света или подгоняйте их свойства, так что бы они значились как один свет. Максимальное кол-во различных по свойствам источников света - 3.
Warning: SwapTransfers: Unmatched | Эта ошибка вызвана проблемой в коде HLRAD. Так же она может следовать после предупреждения Leaf_Portal_Saw_Into_Leaf
entity at (x,y,z) has bad `_light` value | Эта ошибка вызвана из-за бага в WC 2.1. Что бы исправить эту ошибку просто откройте свойства энтити и щелкните на параметре "brightness". Можете даже не менять цветовой гаммы. Вы должны провернуть такую операцию для КАЖДОГО лайт энтити.
[Reading texlights from `E:\Programme\Worldcraft\lights.rad`] [1 texlights parsed from `E:\Programme\Worldcraft\lights.rad`] 10921 faces Create Patches : 51269 base patches 0 opaque faces 454072 square feet [65386408.00 square inches] Error: No Lights! Description: lighting of map halted (I assume you do not want a pitch black map!) Howto Fix: Put some lights in the map | Судя по последним строкам ошибки (этот эррор характерен только для компиляторов Зонера) на карте не найдено ни одного источника света. Ваша карта будет черной или наоборот - светлой!
MAKE SCALES takes a very long time, the computer seems to be stuck | Причина: недостаток оперативной памяти. Факт, что MAKE SCALES требует немало оперативки. При заполнении всей памяти MAKE SCALES обращается к жесткому диску (своп). Для этого освободите как минимум 800 Мб на вашем Харде. Если MAKE SCALES обращается к диску, то время компиляции может увеличиться в 100 (сто!) раз относительно RAM’а!!! Если во время компиляции вы нажмете ctrl-alt-del то увидите, что-то типа «HLRAD не отвечает». Вранье! Ваш процессор, жесткий диск и оперативка работают на максимуме. Нарастите память или продеться потерпеть. Кстати, при нажатии трех клавиш во время компиляции HLCSG, HLBSP, HLVIS та же история, так что просто подождите.

Ошибки в HalfLife

Сообщение об ошибке при загрузке карты: map change failed: "mapname" not found on server | *.bsp файл не найден в папке для карт (например cstrike\maps).
Карта тормозит из-за огромного r_speeds | Туча причин. Сходите сюда, поможет: http://poligon.counter-strike.ru Не откомпилили HLVIS’ом
R_speeds очень большой, света нет. | Ошибка компиляции такова, что HLVIS и HLRAD не были выполнены.
R_speeds в норме но карта или черная или светлая. | Если нет никакого намека на динамический свет, то вы не поставили ни одного источника света. Вы забыли откомпилить HLRAD’ом.
При загрузке карты появляется "AllocBlock: full" (характерно после "Done Precaching Resources") | Вероятно: Карта очень сложная (для движка ХЛ)
Level changes (trigger_changelevel) are working weird... ....после компиляции в WC и автоматической загрузки карты в WC. | НЕ ДЛЯ КОНТРЫ! Выйдите из WC и вручную запустите карту через консоль ХЛ.

Несколько советов:

1. Существует множество ошибок, связанных с энтити и брашами. Например: "Entity 10, Brush 5: mixed face contents … и тд. В WC вы можете легко и быстро найти нужный вам предмет по номеру, указанному в компиляционных логах, нажав ctrl-shift-G.
2. Пользуйтесь Зонерами (zhlt)
3. При компиляции создается лог (*.log) и файл ошибок (*.err). Их можно просмотреть с помощью НотПэда.
4. Не компильте WC (Ворлдкравтом). Компильте обычным батником, так как WC жрет много оперативки.

Ну, вот и все, вроде. Рассмотрено много ошибок. Возможно, где-то я не прав (в таких случаях я отмечал) или не уверен. Надеюсь, я сумел решить твою проблему.

Бай.


Об идее создания учебника

Учебник по VALVe Hammer Editor является собственостью сайта "Полигон" (http://poligon.counter-strike.ru)

Распространение учебника по VALVe Hammer Editor допускается только с разрешения сайта "Полигон" (http://poligon.counter-strike.ru)

Подробнее о правах смотреть здесь.

В учебнике использовались статьи с "Полигона"

Подробнее об авторах смотреть здесь.

И наконец, хотелось бы предложить вам большой список ссылок на тему картостроения

Подробнее о ссылках смотреть здесь.


Об авторах

Оффициальный русский сайт по картостроению - poligon.counter-strike.ru

Идея Полигона - Planecrazy, Deadman, Basilio cat

Команда Полигона - Planecrazy, Deadman, Basilio cat, XPEHKOM_B_yxo, L i P k I y, 3BEPb, Or@nge, Zobo, Biggun, Snoopy, yxo, TnT, Th и др.

Идея создания офф-лайн учебника - L i P k I y

Перевод и авторы статей - TnT, Deadman, Lam-rulezzz, yxo, L i P k I y, Freeman, Yarko[Aq], Fox, Tazik, Capone, K@lashnikov, Lexus, Malij038_[^Sl_Cr^] и др.

Наш форум - poligon.counter-strike.ru/vb

Огромное спасибо людям которые хоть как-то помогли при создание учебника.


copyright

ВНИМАНИЕ!!!

При использовании данных статей, копировании данных статей, редактировании данного учебника или данных статей ОБЯЗАТЕЛЬНА ссылка на Полигон, на авторов учебника или на авторов статей, упомянутых или использованных в данном учебнике.

Poligon


Ссылки

1. http://www.halflife.ru/demi/ Я несказанно благодарен создателям этого сайта за их труд и старания . (Олег "проф.Выбегалло" Бутрин и PaKMan ) . Огромное вам спасибо.

2. http://halflife.gamedesign.net/resources/zhlt.shtml . Зонер тоже молодец. Если вы хорошо знаете английский, то тут сможете найти кучу полезной инфы.

3. А также почаще заходите на #mapcore на gamesNET (в mIRC или другом IRC-клиенте выберите Gamesnet: random west/east US server). Там можно часто найти создателей официальных и полуофициальных карт, которые всегда готовы помочь.

4. Крупнейший международный картоделательный сайт mapcore.com. Это первый официальный сайт по созданию карт сделанный мапмейкерами.

5. Заходите на странички официальных мапмейкеров, таких как DaveJ и MrDeth. Там часто можно найти свежие туториалы.

6. http://bbs.counter-strike.net - среди всем форумов там есть Mapping - Anarchy Design, посвящённый созданию карт.

7. http://bbs.counter-strike.ru - ну и почаще посещайте Создание карт и моделей на нашем сайте ;)

8. http://www.karljones.com/halflife/ - неплохой сайт...

9. http://halflife.lowlife.com/wadfather/ - текстуры , изображения небес.... тоже неплохо !

Далее хочу вас ознакомить с кусочком моей папки Избранное :

http://www.planetquake.com/worldcraft/ - Официальный сайт ВК1.6 (для Ку 1 , Ку 2)

http://halflife.gamedesign.net/ - Один из лучших сайтов о ХЛ левел дизайне !

http://qoole.gamedesign.net/ - Официальный сайт редактора карт Квол (поддерживает ХЛ КС)

http://www.frag.com/quest/

http://www.annihilator.com/

http://shaderlab.com/

http://www.gamedesign.net/

http://www.gamedesign.net/tutorials/

http://www.planetunreal.com/forest/

http://www.contaminated.net/studio/

http://prefabs.gamedesign.net/

http://www.vlatitude.com/

http://www.wasabisoft.com/

http://planethalflife.com/whenitsdone/projects/

http://wadfather.game-edit.com/

http://www.planetquake.com/jamdonut/

http://www.mapfinger.com/

http://mapmakers.bizland.com/

http://doe.lowlife.com/halflife/

http://prime.telefragged.com/soup/

http://www.planetside.co.uk/terragen/

http://www.telefragged.com/wally/

http://www.planethalflife.com/ttj/

http://www.planethalflife.com/randmap/

http://tarot.telefragged.com/gensurf/

http://info.gamedesign.net/

http://halflife.qeradiant.com/

http://www.planetquake.com/tread/

http://www.planetquake.com/quark/

http://www.planethalflife.com/mach3/

http://www.planethalflife.com/prefablab/

http://www.planethalflife.com/radiation/

http://www.planethalflife.com/workshop/

http://www.planethalflife.com/hlconstruction/

http://www.planethalflife.com/wavelength/