В связи с появлением простой проги от АМК в сети,подключение локации перестало быть чем-то сложным.
Но к сожалению в туторе: Подключение локаций
Описан метод подключения из ТЧ к ЗП или к ЧН. лично для меня,как для нуба при подключении локи из ЧН к ЗП возникло множество вопросов,несмотря на то,что сделать это гораздо проще(как оказалось ) ,чем подключать локу из ТЧ
В связи с этим я решил поделиться опытом,чтоб повторяющие мой путь не "наступали на те же грабли".
И так начнём.
Подготовка.
Для начала скачаем программы,которые нам понадобятся при подключении.
1. Универсальный распаковщик ресурсов игр Сталкер
2. ActivePerl
3. ggtool
4. ACDC_Cs
5. ACDC_Cop
6. ggEditor_01
При помощи распаковщика распакуем ресурсы ЧН и ЗП (прога имеет интуитивно понятный интерфейс,думаю проблем тут не возникнет)
Устанавливаем active perl.
Создаём папку с программой ggEditor_01.Создаем там папки Cs и Cop.В папке CS создаем папку gamedata.В папке gamedata создаем папку levels и кидаем туда папку с уровнем, который мы хотим портировать. Далее возвращаемся в папку CS и туда кидаем папку с ACDC для CS, туда же кладём all.spawn.Запускаем соответствующий батник для распаковки all.spawn`а.
Далее в папку ggEditor_01\ Cop,распаковываем соответствующий ACDC, опять-же кладем туда all.spawn, распаковываем.
В итоге у нас должно получиться 2 распакованных all.spawn`а и папка с переносимым уровнем.
С приготовлениями всё.
Основная работа.
Запускаем программу ggEditor.Видим там два окошка. В левом открываем graph.bin от ЧН, а в правом — section4.bin от ЗП(они появятся после распаковки all.spawn`а) Нужно выбрать тип файлов для ЧН — graph.bin, а для ЗП — все файлы и открыть в папке с ACDC файл . В окошках мы видим список уровней. В левом окошке находим нужный нам уровень и нажимаем на соответствующую стрелку для переноса уровня в нужный нам граф. Нажимаем в правом окошке «сохранить».После того, как граф сохранился, можно закрыть программу, она нам больше не понадобится. Потом этого шагаем в папку с ACDC для ЗП и удаляем старые файлы section4.bin.Затем переименовываем файл section4.bin.new в section4.bin.
Далее идем в папку с ACDC от ЧН, находим там файл alife_наша_локация и копируем его. Затем шуруем в папку с ACDC от ЗП, вставляем скопированный нами файл. Открываем этот файл, сносим все, оставляем только одну секцию спавна(Лучше всего если это будет какой-нибудь объект,я например всегда оставляю Campfire, костёр.), присваиваем секции номер не меньше 20000, сворачиваем на время этот файл. Далее нужно подогнать вертексы. Для этого запускаем батник ggtool, ждем некоторое время, после чего появляются имена локаций, а рядом с ними числа. Смотрим это число рядом с нашей локацией(в ЗП это скорее всего будет 934).Далее разворачиваем alife_ файл с нашей локацией, ищем там строку «game_vertex_id» и пишем там число которое появилось рядом с нашей локацией при запуске батника ggtool. Далее, в добавляемых потом секциях спавна нужно писать эти числа. Мы подогнали вертексы.
Затем открываем файл all.ltx.Вписываем туда свой alife_ файл локации, way_ файлы не трогаем. Меняем на соответствующее число локации строку level_count.
После этого открываем файл alife_zaton(для ЗП) и ищем там гг по строке «section_name = actor».Нашли?Отлично. Теперь присваиваем этой секции спавна позицию(новую позицию прописываем также в строке "upd:position = ") и вертексы как у единственного предмета в файле alife_новая_локация. При следующей распаковке, если вы все сделали правильно, наш актор окажется в файле alife_новая_лока.
Мы почти закончили с пробной сборкой новой локации(пока без перехода).
Осталось только прописать наш новый уровень в файл ACDC Cop\acdccop.pl(для ЗП)
В этом файле ищем такие строки(для ЗП):
use constant levels_info => ( { gvid0 => 934, }, { gvid0 => 883, name => 'jupiter_underground' }, { gvid0 => 857, name => 'labx8' }, { gvid0 => 666, name => 'pripyat' }, { gvid0 => 317, name => 'jupiter' }, { gvid0 => 0, name => 'zaton' },И если у вас число когда мы запускали батник ggtool тоже 934 то прописываем так:
use constant levels_info => ( { gvid0 => 934, name => 'ваша_локация' }, { gvid0 => 883, name => 'jupiter_underground' }, { gvid0 => 857, name => 'labx8' }, { gvid0 => 666, name => 'pripyat' }, { gvid0 => 317, name => 'jupiter' }, { gvid0 => 0, name => 'zaton' },Всё.Собираем all.spawn.
Сборка геймдаты.
Осталось собрать gamedat`у для игры и смотреть что получилось. Итак, приступим:
В папке с игрой создаем папку gamedata, а в ней папки configs, levels, spawns.В папку spawns ложим получившийся при сборке all.spawn.new(или new.spawn), не забывая переименовать его в all.spawn.В папку levels ложим уровень из ggEditor_01\Soc\gamedata\levels\ваша_локация.
Теперь осталось только прописать уровень в конфигах.Из распакованной геймдаты игры берем файлы configs\game_graphs.ltx, game_levels.ltx, game_maps_single.ltx.
game_graphs.ltx для ЗП должен выглядеть так:
[location_0] 000 = "..." 001 = "ваша_локация" 002 = "sim_smart_2" 003 = "sim_smart_3" 004 = "sim_smart_4" 005 = "sim_smart_5" 006 = "sim_smart_6" 007 = "sim_smart_7" 008 = "sim_smart_8" 009 = "sim_smart_base" [location_1] 000 = "..." 001 = "ограниченный доступ" 002 = "запрещенный доступ" [location_2] 000 = "..." 001 = "не для игрока" [location_3] 000 = "..." ... . ....................... 112 = "pri_a22_smart_terrain" 113 = "pri_a25_smart_terrain" 114 = "pri_a28_arch" 115 = "pri_a28_base" 116 = "pri_b28_evac" 117 = "pri_a28_heli" 118 = "pri_a28_school" 119 = "pri_a28_shop" 120 = "pri_b301" 121 = "pri_b302" 122 = "pri_b303" 123 = "pri_b304_monsters_smart_terrain" 124 = "pri_b305_dogs" 125 = "pri_b306" 126 = "pri_b307" 127 = "pri_b35_mercs" 128 = "pri_b35_military" 129 = "pri_b36_smart_terrain" 130 = "pri_sim_1" 131 = "pri_sim_2" 132 = "pri_sim_3" 133 = "pri_sim_4" 134 = "pri_sim_5" 135 = "pri_sim_6" 136 = "pri_sim_7" 137 = "pri_sim_8" 138 = "pri_sim_9" 139 = "pri_sim_10" 140 = "pri_sim_11" 141 = "pri_sim_12" 142 = "ваша_локация" [graph_points_draw_color_palette] default = 0x6000ffff 000_000_000_000 = 0x60ff00ff
Далее лезем в game_levels.ltx. Там в самом начале, где список уровней, вписываем "level183"(число не менее 183.) Листаем файл до самого конца и в конце пишем следующее:
[level183] name = ваша_локация caption = "ваша_локация" offset = 700.0, 1000.0, -840.0 weathers = [default] id = 183Затем открываем файл game_maps_single.ltx и прописываем свой уровень в секции "[level_maps_single]", а затем создаем примерно такую секцию для нашего уровня:
[ваша_локация] global_rect = 307.0, 90.0, 717.0, 500.000000 weathers = dynamic_default
Всё.Запускайте игру и пробуйте, что получилось.
Возможные вылеты:
FATAL ERROR [error]Expression : cross_table().header().level_guid() == level_graph().header().guid() [error]Function : CAI_Space::load [error]File : D:\prog_repository\sources\trunk\xrGame\ai_space.cpp [error]Line : 113 [error]Description : cross_table doesn't correspond to the AI-mapДанный вылет свидетельствует о том,что вы использовали распаковщик ресурсов игры не из этой темы.У вас при распаковке вашего уровня "съехала АИ-сетка"
Лечение: Использовать распаковщик предложенный выше.
[error]Expression : fs [error]Function : CResourceManager::_CreateVS [error]File : D:\prog_repository\sources\trunk\Layers\xrRender\ResourceManager_Resources.cpp [error]Line : 166 [error]Description : shader file doesnt exist [error]Arguments : c:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r. - Зов Припяти\gamedata\shaders\r2\deffer_impl_flat.vsЛечение:
В папке gamedata создаёте папки shaders\r2 переносите из ЧН файл deffer_impl_flat_d.vs переименовываете его в deffer_impl_flat.vs
как пример: Локация "агропром " прикрученная к ЗП за полчаса.
Агропром
Примечание: На компьютере должен быть обязательно установлен NetFramework версией не ниже 2.0
Это для тех,кто использует старые сборки ХР.
Скачать можно Тут