Сразу скажу, что тутор рассчитан на ЧН, так что никаких вопросов насчет ЗП не задавайте.
Необходимые программы
S.T.A.L.K.E.R Icons Viever
Изменения названия локации
Для изменения названия локации открываем файл configs\game_levels.ltx и ищем там свою локацию. Видите строку caption = "my_level"?Это ссылка на секцию в файле configs\text\rus\ui_st_pda.xml. Создаем в файле такую секцию:
<string id="my_level">
<text>Мой уровень</text>
</string>
После этого в игре будет писаться название уровня не "my_level", а "Мой уровень"
Добавление загрузочного экрана на локацию
Для добавления загрузочного экрана локации идем в папку textures\intro от мода или чистой игры и ищем там загрузочный экран своей локации - intro_наша_локация. Затем просто копируем текстуру в нашу геймдату, в соответствующею папку.
Добавление фоновой музыки на локацию
Открываем файлы configs\game_maps_single.ltx и configs\game_levels_music.ltx. В файле configs\game_maps_single.ltx прописываем в секции нашей локации ссылку на музыкальную секцию:
music_tracks = name_musics
И в файле configs\game_levels_music.ltx:
[name_musics]
music\amb08 = 4, 22, 0.45, 20, 40
music\amb04 = 22, 4, 0.55, 10, 20
Везде буду рассматривать первую строчку:
* music\amb08 - музыкальный трек который будет играть на локации
* = 4, 22, - промежуток, в котором будет играть этот трек (время в игровых часах, то есть тут амбиент будет играть с 4 утра до 10 вечера)
* 0.45, - громкость музыки на локации
* 20, 40 - что эти цифры означают, я не знаю, но думаю, что того, что мы изучили и так хватит для настройки звучания.
Размещение локации на глобальной карте
Автор: Xmk (отредактировал БАТЯ-STALKER)
Определение bound_rect
Идем в папку levels\my_level\ и открываем там файл level.ltx. Если в нем нет секции "[level_map]", то нужно ее добавить:
[level_map]
bound_rect = -279.07, -603.500, 344.518, -23.000
texture = map\map_my_level
* bound_rect – это игровые координаты текстуры, нечто вроде сетки координат на глобальной карте. Четыре числа означают крайние точки координат – верхний левый угол глобальной карты имеет координаты 0,0 а нижний правый угол глобальной карты имеет координаты 1024, 2634. ОБРАТИТЕ ВНИМАНИЕ, это не пиксели! Сама текстура имеет размер 1024*2048, а может быть и любого другого – но для игры высота карты берётся равной 2634 пункта, при том что ширина сохраняется 1024. Это очень важное замечание – его важность поясним дальше.
* Texture – это текстура карты локации. Именно она показывается на мини-карте в игре, именно она же НАКЛАДЫВАЕТСЯ (да-да, сама накладывается) на глобальную карту в том месте, где мы захотим.
* bound_rect – это описание крайних координат локации ВНУТРИ самой локации. Тут наверно нужно пояснить. Любой кто имел дело с координатами на уровнях, замечал что икс и игрек (высоту сейчас не будем принимать в расчет) бывают не только положительными, но и отрицательными. Точка на уровне имеющая координаты (0,0) это не угол карты, как можно было бы предположить, а где-то около её середины. Например, на Кордоне точка с координатами 0,0 расположена недалеко от поста Кузнецова под мостом. А вот возле бункера Сидоровича координата икс у игрока (или чего угодно другого, любого объекта в игре) будет отрицательная. А возле блокпоста военных (тот, что на юге, вниз по дороге от деревни новичков) координата игрек будет отрицательной. Так вот, в строке bound_rect последовательно указаны самые минимальные координаты локации и самые максимальные. То есть самый меньший икс, потом самый меньший игрек, потом самый большой икс, и четвёртое число – самый большой игрек. Обратите внимание, эти координаты – вовсе не там, где можно побегать. Нет. Речь идёт об УГЛАХ локации, там где заканчивается земля и начинается пустота. На кордоне юго-западный угол имеет координаты -317.164, -633.718, а северо-восточный 404.880, 811.627. Точность указана до сотых.
Определение global_rect
Параметр global_rect можно найти в файле configs\game_maps_single.ltx, в секции своей локации.
global_rect – координаты прямоугольника на глобальной карте, тот кусочек куда будет вписана (наложена) карта локации, и где будут с учётом масштаба отображаться все метки локации. Метод указания координат аналогичен, берутся два угла, первый северо-ЗАПАДНЫЙ, второй юго-ВОСТОЧНЫЙ. Обратите внимание, при определении координат на локации отсчёт игрека идёт снизу вверх, а тут наоборот, сверху вниз. То есть точка с координатами 50, 100 будет ВЫШЕ чем точка 50, 200. А точка с координатами 50, 0 – вообще на самом верху. В то время как точка с координатами 50, 2634 – на самом низу глобальной карты. Вообще правило отсчёта координат от верхнего левого угла текстуры характерно для СТАЛКЕРа, не знаю как для других игр использующих dds формат, может так же. Посмотрим на глобальные координаты карты Кордона на большой, глобальной карте.
global_rect=355.0,2011.0,576.0,2453.000000 Получается, прямоугольник куда будет вписана карта Кордона, определён двумя точками. Первая с координатами (на глобальной карте!) 355.0,2011.0, а вторая с координатами 576.0,2453.000000. Зачем столько нулей – не спрашивайте. Не знаю. Но по этим координатам видно, что карта Кордона будет вписана в прямоугольник, который начинается от 355 по икс и 2011 по игрек и заканчивается на 576 по икс и 2453 по игрек. Итого на глобальной карте размер карты Кордона составит 221*442 пункта. Повторюсь – это не пиксели, а пункты, количество которых определено во второй секции конфигурационного файла, который мы сейчас разбираем.
Интересно, что подземелья Агропрома, например, на глобальной карте тоже есть – но для них отведено всего лишь 2*3 пункта, и находятся они почти посередине карты Агропрома! Именно поэтому когда игрок находится в подземке, его метка всегда светится в районе завода, где прятался Крот при первом заходе на локацию, и практически неподвижна. Похожим образом сделано и с лабораторией Х18 – она на глобальной карте расположена справа от Радара, но размер её прямоугольника всего 2*2 пункта.
Итак, у нас иметься локация, у которой имеется карты – textures\map\map_lost_villiage.dds например, bound_rect уже известен.
Нам нужно расположить ее на глобальной карте, к примеру, вот здесь:
Открываем файл ui_global_map.dds через Stalker Icon Viewer и снимаем координаты верхнего левого угла будущего места расположения локации:
К сожалению, на скриншоте не видно курсора.
Итак, у нас получились координаты: x=180, y=370
В конфиге глобальная карта имеет координаты 1024,2634, в то время когда текстура всего 1024x2048.
Что мы делаем? Запускаем калькулятор и делим 2634 на 2048, у нас получается 1.2861328125
Далее умножаем координату y(370) на получившееся значение(1.2861328125), у нас получаться 475.86…. (округлим)
Далее все просто, скажем наша карта локации 100 на 100, задаем в global_rect нашей локации 180.0, 475.86, 280.0, 575.86
* 180.0 - координата x левого края текстуры локации
* 475.86 – число, которое мы получили, координата верхнего края текстуры локации
* 280.0 – координата x правого края текстуры локации. Прибавляем к координате левого края локации ширину карты
* 575.86 - координата y нижнего края текстуры локации. Прибавляем к координате верхнего края локации высоту карты
Вот собственно, что у нас получилось:
Всё. Наша локация полностью размещена на глобальной карте.
Напоследок
Статья еще не закончена и будет дополняться (теперь вряд ли).
Автор: БАТЯ-STALKER