ВХОД ПО ПАРОЛЮ
Забыли пароль?
ВХОД ЧЕРЕЗ СОЦ. СЕТЬ

ОПРОС
Еще к нам будете заходить? :)

Счетчики
Яндекс.Метрика Анализ сайта www.gmod-fan.ru
Наши партнеры
Кто онлайн
Пользователей: 6
Скрытых: 0
Гостей: 34
Всего: 40

Донияр, Google, zigidron, vice.alex, Яндекс, Ершов Дима, disantik_2016, eg.zwer

Онлайн список

» » Cinema - маппинг / скрипт туториал
Опубликовал: mark2580 - 17 январь 2016 (14:08)
Просмотров: 4200

Cinema - маппинг / скрипт туториал

Мой оригинальный гайд в Steam сообществе - http://steamcommunity.com/sharedfiles/filedetails/?id=410605625

FGD для Hammer Editor
Для корректного маппинга вам понадобится fgd файл для Hammer Editor.
Скачать можно по этой ссылке
Как подключить - курите мануалы, здесь я объясню только метод расстановки нужных энтитей на карте, хотя если вы будете писать только lua для уже существующей карты вам это вряд ли понадобится.

Описание энтитей
theater_screen (Point entity)
Эта энтити используется для создание экрана кинотеатрта. Её надо расположить в верхнем левом углу экрана, на расстоянии как минимум в 1 юнит о него.

Cinema - маппинг / скрипт туториал


Параметры
"Theater Name" (name) - Имя показываемое по TAB и на мини превью экранах.
"Flags" (flags) - Тип кинотеатра
"Screen Width" (width) - ширина экрана в юнитах (еденицы hammer)
"Screen Height" (height) - высота экрана в юнитах (еденицы hamemer)
"Thumbnail" (target) - Имя энтити "theater_thumbnail" для создания превью экрана что показывают в кинотеатре.
Cinema - маппинг / скрипт туториал



theater_thumbnail (Point entity)
Cinema - маппинг / скрипт туториал

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

Параметры
"Name" (targetname) - Имя которое указывается в параметрах theater_screen

theater_door (Point entity)
Cinema - маппинг / скрипт туториал

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

Cinema - маппинг / скрипт туториал

И точка куда телепортировать игрока при "открытии".

Cinema - маппинг / скрипт туториал


Создание кастомных сидений
Копипаст без разрешений не приветствуется ! Это моя личная догадка, про создание своих сидячих мест не описали даже авторы этого режима !

Итак для сидячего места вам дужен prop_dynamic энтия с указанной любой модели не важно пусть это будет хоть монтировка, главное что динамическая моделька на карте.
prop_physics и prop_static не подходят для этой задачи. Статик просто не работает, а физикс берётся в руки и чаще всего игрок просто оказывается в неопределённой позе приаттаченный к физическому объекту. Т.е. нужен только динамический меш.

Остальное прописывается в *.lua файле который прилагается к вашей карте.
В самом верху файла перед всеми локациями и кинотеатрами прописываем что опеределённые модели могут быть сидячими местами для игроков.


ChairOffsets = {
["models/mark2580/mass_effect_3/couch05_a.mdl"] = {
{ Pos = Vector(0, 7, 13), Ang = Angle(0, 0, 0) }
},
["models/mark2580/mass_effect_3/couch05_b.mdl"] = {
{ Pos = Vector(-5, 7, 13), Ang = Angle(10, 0, 0) }
},
["models/mark2580/mass_effect_3/couch05_c.mdl"] = {
{ Pos = Vector(5, 7, 13), Ang = Angle(10, 0, 0) }
},
}


1я строка указывает полный путь к модели
2я строка указывает положение игрока и угол поворота. Данные координаты вы можете подбирать прямо сидя в игре т.к. lua автоматически перезагружается как-только файл изменяется. Строчек с позицией может быть более 1й, например диваны, а не 1 стул.

Официально поддерживаемые модели (прописаны в гейм моде)
(т.е. они будут работать сразу без прописывания их в вашем персональном lua файле, при учёте что они будут на карте prop_dynamic)

Cinema - маппинг / скрипт туториал

models/sunabouzu/lobby_chair.mdl
что-то вроде тумбочки, встречаются в гейм модах Cinema и Elevator.

Cinema - маппинг / скрипт туториал

models/gmod_tower/theater_seat.mdl
Классическое красное кресло кинотеатра, использующиеся на оф. карте синемы. Имеет несколько боди групп (сменные подлокотники).

Cinema - маппинг / скрипт туториал

models/sunabouzu/theater_curve_couch.mdl
Диван полукругом. Можно увидеть на оф. карте в приватных кинотеатрах.

Cinema - маппинг / скрипт туториал

models/sunabouzu/theater_sofa01.mdl
Весьма угловатый диван на 2 места, приимущественно красного цвета. Есть на оф. карте

Cinema - маппинг / скрипт туториал

models/props_trainstation/traincar_seats001.mdl
Блок сидений из вагона с 1й карты Half-Life 2

Cinema - маппинг / скрипт туториал

models/props_c17/furniturechair001a.mdl
Хлипкий старый деревянный стул встречающийся в Half-lIfe 2

Cinema - маппинг / скрипт туториал

models/props_combine/breenchair.mdl
Кресло брина с последней карты Half-Life 2

Cinema - маппинг / скрипт туториал

models/props_warehouse/office_furniture_couch.mdl
Синий диван из игры Sin Episodes: Emergence. Встречается на картах theater_nexmultiplex и Theater_GCinema

Создание локаций на карте
Загрузив карты вы получите сообщение об ошибке что данная карта не поддерживается режимом Cinema. Нажмите F1 бла бла бла....

Cinema - маппинг / скрипт туториал


Ничего страшного т.к. для полноценной работы карте ещё нужен lua скрипт где прописываются локации кинотеатра.

Для создания локаций надо летать в режиме noclip (возможно понадобится включение режима читов sv_cheats 1).
Локация представляет из себя зону-куб строящуюся на основе 2х координат 3D пространства.
Это пример, не обязательно начинать сверху или снизу, главное получить куб

Cinema - маппинг / скрипт туториал


Встаём в 1ю точку и пишем в консоль: cinema_loc_start после чего под ногами появится что-то вроде лучей которые при движении игрока образуют тот самый куб.
Летим в 2ю противоположную точку (по диогонали) создаваемой локации и пишем в консоль cinema_loc_end.
Cinema - маппинг / скрипт туториал

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

[ "Name" ] =
{
Min = Vector( -1446.9011230469, -2250.2802734375, 54.014091491699 ),
Max = Vector( 1445.0450439453, -840.00933837891, 413.30743408203 ),
},



Посмотреть все созданные локации можно командой cinema_debug_locations 1/0

[previewimg=3003829;sizeFull,floatLeft;cinema_all_loc.jpg][/previewimg]

Создаём заготовку.
Открываем любой текстовый редактор и вставляем сдедущее:

hook.Add( "InitPostEntity", "theater_gcinema", function()
if !Location then return end

Location.Add( "theater_gcinema", {
*** локации вписывать сюда ***
} )

end )


hook.Add( "InitPostEntity", "theater_gcinema", function()
Место "theater_gcinema" надо вписать название вайшей карты.

Как пример можете посмотреть / скачать lua файл для карты theater_nexmultiplex_1m

Повторяем пункт с cinema_loc_start / cinema_loc_end для получения координат других локаций. Пример lua с локациями:

hook.Add( "InitPostEntity", "theater_gcinema", function()
if !Location then return end

Location.Add( "theater_gcinema", {
[ "Name location #1" ] =
{
Min = Vector( -1446.9011230469, -2250.2802734375, 54.014091491699 ),
Max = Vector( 1445.0450439453, -840.00933837891, 413.30743408203 ),
},
[ "Name location #2" ] =
{
Min = Vector( -1446.9011230469, -2250.2802734375, 54.014091491699 ),
Max = Vector( 1445.0450439453, -840.00933837891, 413.30743408203 ),
},
} )

end )


Сами экраны кинотеатров должны обязательно находится в какой-либо локации по 1 на локацию. Без локации режим не понимает что надо включать тот или иной экран и в итоге ничего не заработает.

Куда и как сохранить получившийся lua ?
Сохраните получившийся файл в формате *.lua по адресу:

...\Common\GarrysMod\garrysmod\gamemodes\cinema\gamemode\maps\

Имя *.lua файла должно совпадать с именем карты.

Создание кинотеатра без маппинга
Режим Cinema может работать на любой карте не зависимо построены ли на ней двери, экраны и прочее.

Для этого немного изменим наш *.lua файл.
Место просто локации, внутри неё прописывается точка спавна экрана и превью кинотеатра

[ "Name location #1" ] =
{
Min = Vector( -1446.9011230469, -2250.2802734375, 54.014091491699 ),
Max = Vector( 1445.0450439453, -840.00933837891, 413.30743408203 ),
Theater = {
Name = "Private Theater 2",
Flags = THEATER_PRIVATE,
Pos = Vector( -5400, -3344, 575 ),
Ang = Angle(0,0,0),
Width = 850,
Height = 450,
ThumbInfo = {
Pos = Vector( -3170, -2205, 160 ),
Ang = Angle(0, 00, 0)
}
}
},

Min = Vector / Max = Vector - координаты локации из консоли
Name / Flags / Pos / Ang / Width / Height - аналоги параметров в этити (см. выше).
ThumbInfo - координы превью экрана и его угол поворота

Флаги

THEATER_REPLICATED : Публичный кинотеатр. Только админы могут им управлять. Такой кинотеатр продолжает работать даже когда управляющий игрок уже вышел из пределов локации кинотеатра.
THEATER_PRIVATE : Приватный кинотеатр, кто успел так сказать ). Вы теряете управление кинотеатром как только выходите за пределы локации кинотеатра.
THEATER_PRIVILEGED : Что-то связанное с VIP игроками, не разобрался.
THEATER_NONE : Что-то вроде публичного-скрытого кинотеатра который не отображается по TAB_у.

Помните
- Указанный кинотеатр будет автоматически начинать работать как только игрок заходит в пределы координат локации. Это относится как к экрану на карте, так и к прописанному в lua.
- Garrys Mod поддерживает авто перезагрузку lua скриптов, поэтому даже в режиме мультиплеера вы можете видеть все изменения координат, новых локаций и положений экранов в реальном времени.
- Для получения координат игрока предусмотрена команда cinema_loc_vector. Угол приходится подбирать.
- Только 1 кинотеатр может находиться в 1 локации

Демонстрация созданного кинотеатра на 2й карте Half-Life 2
Cinema - маппинг / скрипт туториал
Cinema - маппинг / скрипт туториал

  1. Лелуш Ламперуж
    Lordonio - 22:58 27 ноябрь 2016 года
    • +1
    Респект автору, все разъяснил по полочкам, и явно даже тот у которого руки растут не из плеч, получится это сделать.

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

    Хлоп-хлоп автору еще раз.

  2. zorohowich - 17:36 13 июль 2016 года
    • -2
    punch headbang envy иво не скачать

  3. Артём
    like main 134rus - 15:41 10 июль 2016 года
    • 0
    КЕК


    --------------------

  4. Dmitriy
    _Dmitriy_ - 20:30 31 январь 2016 года
    • 0
    Как называется инструмент для создания экрана для просмотра видео с ютуба?

    1. Frost Rm
      Rm Frost - 13:51 23 октябрь 2016 года
      • 0
      Play X

    2. Егор
      iHAC PRO - 18:12 06 ноябрь 2017 года
      • 0
      cinema


      --------------------

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.