При хостинг поддержке Интернет-сообщества VBIOS CS-Mapping.com.ua
Вернуться   CS-Mapping.com.ua > Forum > Картостроение > Туториалы > Туториалы по Counter-Strike 1.6
Ник
Пароль
Регистрация Правила форума FAQ Пользователи Администрация Календарь Поиск За 24 часа Пометить все разделы прочитанными

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.08.2010, 13:51  #1
asssasssin2
asssasssin2
Рядовой
Регистрация: 07.03.2010
Сообщения: 42


По умолчанию Смена карт в hl1

Смена карт
Ну чтож , решил я вам написать тутор по смене уровней в халфе.Эта проблема довольно актуальна , поэтому читайте внимательно. .

Итак смена уровня состоит в основном из двух ентить наличие которых ОБЯЗАТЕЛЬНО !!! Это trigger_changelevel и info_landmark.

Trigger_changelevel - бращ-энтитя или триггер при попадании в который или активации оного происходит смена карты.(Смотри скрин ниже).


* Name - имя триггера , обязательно при флаге Use Only.
* New map name - имя следущей карты , например если вы находитесь в map1 и надо попасть в map2 , то пишите естественно map2 , а в тот же trigger_changelevel с теми же функциями только в map2 пишите наоборот map1
* Landmark Name - имя info_landmark , сведения о которой я приведу ниже , имя ставим например map1tomap2_lm
* Change Target - об этой опции напишу позже , сейчас она нам не нужна ( и в принципе вообще не очень нужна )
* Delay before change target - время перед активации цели написанной в поле выше
Флаги
*No Intermission - нам сейчас не нужно
*Use Only - при активации данного флага trigger_changelevel будет активирован только другим обьектом (trigger_once например) - для этого нужно вписать имя trigger_changelevel в поле target активирующего обьекта , а при попадании игрока в этот trigger_changelevel он ничего делать не будет.

Info_landmark - точечная энтитя , которая настраивает постоянный пункт появления игрока на новой карте .Её наличие в обеих картах обязательно , так как относительно положения info_landmark игрок появиться в следующей карте. Например если при смене уровня игрок находиться на расстоянии 1 м и 60 градусов (по оси х\у) то и в следующей карте он появиться на таком же расстоянии от этой энтити поэтому info_landmark следует распологать аккуратно , т.к. если в следущей карте на расстоянии 1 м и 60 градусов от info_landmark будет стена то игрок появиться в этой стене. Я советую копировать и trigger_changelevel и info_landmark , и браши которые находятся рядом в следущую карту , чтобы избежать ошибок.

*Name - имя энтити , в нашем случае map1tomap2_lm , должно быть одинаково в обоих картах.

- Также есть ещё одна брашевая энтитя trigger_transition , которую редко , но используют :

Trigger_transition - бращ-энтитя или триггер , который , так сказать , регулирует действия trigger_changelevel . Чтобы его активировать поставьте ему тоже самое имя что и у info_landmark (в нашем случае map1tomap2_lm). У trigger_transition две основные функции.Во-первых , trigger_changelevel не будет работать если игрок не находиться в зоне trigger_transition. А во-вторых в следующую карту попадут ТОЛЬКО ТЕ ЭНТИТИ , КОТОРЫЕ НАХОДЯТСЯ В ЗОНЕ trigger_transition!


Есть 3 основных типа смен карт :

1) Обычный (линейный)
2) Смещение
3) Односторонний

Итак рассмотрим каждый из них подробно :

1 - Обычный (линейный)

Это самый лёгкий способ смены карты , который был практически описан выше :

Посередине коридора создаём trigger_changelevel (браш с текстурой aaatrigger , затем tie to entity trigger_changelevel ) , в поле Name не пишем ничего за ненадобностью , в поле New map name пишем map2 (карта у нас как помните map1) , в поле Landmark Name пишем имя ландмарки map1tomap2_lm . Рядом с триггером создаём точечную энтитьку info_landmark , в которой в поле Name пишем map1tomap2_lm . Затем копируем trigger_changelevel , info_landmark и прилежащие к ним браши в map2 и в поле Name , в trigger_changelevel , пишем map1 , чтобы возможен был обратный переход. А затем продолжаем коридор уже в map2 . Вот собсно и всё по первому способу , ничего особо сложного нету.

2 - Смещение

Если в обычном способе при смене карты ничего видимого не меняется , то в способе смещения меняется окружающая среда вокруг игрока :

Этот способ используется в случаях , например , с телепортом . Отличие от вышеупомянутого способа в том что вы должны убедиться что при смене уровней игрок не застрянет в какой-нибудь стенке , для этого нужно сделать ясную область вокруг info_landmark , минимум равную той области , где начинается смена уровня в предыдущей карте(от которой игрок напрмер телепортировался). Делаем всё как в предыдущем случае тока по середине корридора ставим спрайт телепорта и вокруг него trigger_changelevel, чтобы вступив в спрайт попасть в map2 . Затем копируем ТОЛЬКО trigger_changelevel и info_landmark в map2 и ставим их на место появления игрока на следущей карте.Также меняем с map2 на map1 в поле New Map Name в trigger_changelevel , как в прошлом случае. Единственный совет - место появления игрока должно быть рядом с таким же спрайтом телепорта , чтобы вступив в него уже в map2 можно было вернуться в map1. Реалистика .....

3 - Односторонний

Этот случай очень похож на смещение , разница лишь в том что в данном случае игрок не сможет телепортироваться обратно в map1:

Создаём trigger_changelevel с флагом Use Only , Name - map1ch (остальной конфиг такой же , как приведён выше), ландмарку с тем же конфигом , что приведён выше.Также какой нибудь триггер или мультименеджер котрый активирует trigger_changelevel вместе с какими нибудь эффектами.Затем копируем ТОЛЬКО trigger_changelevel и info_landmark в map2 и ставим их на место появления игрока на карте. В поле New Map Name в trigger_changelevel меняем с map2 на map1, это следует делать в любых случаях , даже если обратный переход невозможен!!!Всё дело в привязанности ландмарка с trigger_changelevel . Тут уже ничего не попишешь...

Вот собственно я и описал 3 основных случая смены уровня. Не очень сложно как казалось раньше , не так ли ?

Но есть ещё один , более сложный четвёртый способ смены карт - Глобальный , с использованием Глобального имени :

Например вы едете на лифте и хотите сделать смену уровня , но не хотите потерять сам лифт , в этом случае вам как раз надо использовать Глобальное имя.Тогда лифт в map2 , несмотря на своё изначальное положение , в начале карты будет двигаться как будто это тот же самый лифт из map1.Для этого обоим func_plat в поле Global Entity Name нужно поставить одинаковое имя , и расположить их в одинаковом расстоянии от info_landmark .В образцах, ссылки на которые будут представлены ниже, вы сможете найти образцы и такой смены карт.

Скачать карты с примером первого способа можно отсюда, с примером второго способа отсюда, с примером третьего метода отсюда и , наконец , четвертого способа отсюда.

Вот так , 90 % всех ошибок по смене уровней происходят по неправильным ссылкам между trigger_changelevel и info_landmark или неаккуратной расстановкой info_landmark в следующих картах.

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

Однако есть одна ошибка которая стоит особняком - когда вас выбрасывает из игры и пишет CHANGE LEVEL MAP1 LANDMARK .данная ошибка встречается очень часто и очень трудно сразу понять в чём там дело , появляются мысли с недоработкой самой халфы и т.д. Дело же совсем в другом : Эта проблема происходит когда в месте откуда игрок из map1 переходит в другую карту , в map2 стоит trigger_changelevel , то есть игрок только появившись на новой карте(map2) сразу оказывается в trigger_changelevel и меняется назад в map1, и затем в map1 происходит та же история и так до бесконечности , игра таких поворотов явно не тянет и выбрасывает с ошибкой.

Решение данной проблемы довольно просто - отодвигайте trigger_changelevel дальше от info_landmark в map2 и всё

Возникает иногда также и такая трабла ( за предоставление данной информации отдельное спасибо хорошему челу ,который именует себя Nicord) - После компиляции мапы вы запускаете ее в игре , и при смене карт халфа дохнет. Происходит это потому что включен хаммер\кварк\другой редактор мап. Решение просто - закройте редактор и запустите игру заного !

Маленький совет :

Так как смена уровней для игрока это всего лишь небольшой лоадинг , всегда создавайте иллюзию из map1(как пример с корридором) что за стеной что то есть (двери , вентиляция и т.д.) - вобщем что уровень продолжается а лоадинг просто небольшое недразумение (лол) Поэтому обычные(линейные) смены карт старайтесь делать на поворотах , чтобы во второй карте не воспроизводить карту первуюи наоборот. Да и так интересней играть , хотя это моё личное ИМХО...

Спасибо за внимание , ваш asssasssin!
asssasssin2 вне форума Ответить с цитированием
Старый 06.08.2010, 16:40  #2
Anikes
Гость
Сообщения: n/a


По умолчанию

2 asssasssin2:
А можно сделать так, что бы игрок появлялся на новой карте не относительно landmark? Я бы хотел самостоятельно регулировать угол обзора во время появления на новой карте отличный от предыдущей:

Другими словами, что бы игрок при появлении, как на рисунке смотрел "вверх" (z=-90), а не "вправо" (z=0), как определяет landmark.
Ответить с цитированием
Старый 06.08.2010, 17:55  #3
asssasssin2
asssasssin2
Рядовой
Регистрация: 07.03.2010
Сообщения: 42


По умолчанию

Да конечно можно!
asssasssin2 вне форума Ответить с цитированием
Старый 06.08.2010, 18:07  #4
qpAHToMAS
qpAHToMAS
z3r0t0l3r4nc3
Регистрация: 22.10.2006
Адрес: Russian Far East
Возраст: 27
Сообщения: 9,212


По умолчанию

Где источинк? Оригинал статьи тут. Предлагаю удалять/закрывать такие темы, а авторов наказывать, разумеется, если они не являются оригиналами.

2 Anikes:
Попробуй отредактировать "angles" поле у ентити" info_landmark", если нет — добавь его (SmartEdit).
qpAHToMAS вне форума Ответить с цитированием
Старый 06.08.2010, 19:36  #5
ZhekA
ZhekA
Модератор
Регистрация: 27.02.2008
Адрес: Москва
Возраст: 30
Сообщения: 3,978


По умолчанию

2 Anikes:
Можно, если ты вторую карту развернешь на 90 градусов )
ZhekA вне форума Ответить с цитированием
Старый 06.08.2010, 19:53  #6
Anikes
Гость
Сообщения: n/a


По умолчанию

2 qpAHToMAS:
Сенкью верни мяч!
Ответить с цитированием
Старый 06.08.2010, 21:18  #7
Z-RAY-Z
Z-RAY-Z
Младший сержант
Регистрация: 16.04.2010
Адрес: Нововоронеж
Возраст: 24
Сообщения: 185
Замечания: 1


По умолчанию

Хороший тутор
--------
А в мультиплеере эта чтука работает? С кроссфаера на френзи, со френзи на датакор...
Z-RAY-Z вне форума Ответить с цитированием
Старый 06.08.2010, 21:53  #8
Anikes
Гость
Сообщения: n/a


По умолчанию

2 Z-RAY-Z:
В мультиплеере не работают!
Ответить с цитированием
Старый 06.08.2010, 22:48  #9
ZhekA
ZhekA
Модератор
Регистрация: 27.02.2008
Адрес: Москва
Возраст: 30
Сообщения: 3,978


Предупреждение

[ Цитата ] Сообщение от Z-RAY-Z: А в мультиплеере эта чтука работает? С кроссфаера на френзи, со френзи на датакор...
ZhekA вне форума Ответить с цитированием
Старый 06.08.2010, 23:10  #10
DeTLeR
DeTLeR
Генерал
Регистрация: 17.12.2006
Сообщения: 2,769
Замечания: 5


По умолчанию

2 Z-RAY-Z:
Тут даже не поможет. В хл1мп за смену карты отвечает переменная времени заданая при создании сервера.
DeTLeR вне форума Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:55.


Designed by FT-502, TRUP@C. Originally by Ulric Spaak
Hosted by: VBIOS.COM, Powered by: vBulletin
copyright © 2002 - 2018 by CS-Mapping.com.ua Community