Добавление локаций в ЧНЗП с помощью программы от AMK Team
Подготовка.
Устанавливаем active perl.
Заходим
в папку с программой ggEditor_01.Создаем там папки Cs или Cop(Смотря на
какую игру делаете) и папку Soc.В папке Soc создаем папку gamedata и
кидаем в нее файл game.graph(Важно чтобы game.graph лежал там, иначе
программа не прочитает.) из мода, или от ТЧ.В папке gamedata создаем
папку levels и кидаем туда папку с уровнем, который мы хотим
портировать. Далее возвращаемся в папку Soc и туда кидаем папку с ACDC
для ТЧ, туда же кладём all.spawn.Запускаем соответствующий батник для
распаковки all.spawn`а.
Далее в папку ggEditor_01\Cs или Cop, кидаем папку с соответствующим ACDC, опять-же кладем туда all.spawn, распаковываем.
В итоге у нас должно получиться 2 распакованных all.spawn`а, game.graph от ТЧ и папка с переносимым уровнем.
С приготовлениями всё. [править] Основная работа.
Запускаем
программу ggEditor.Видим там два окошка. В левом открываем game.graph
от ТЧ, а в правом — от ЗП или ЧН(В ЗП и ЧН граф вшит в all.spawn, ищите
его там.)(Нужно выбрать тип файлов для ЧН — graph.bin, а для ЗП — все
файлы и открыть в папке с ACDC файл section4.bin). В окошках мы видим
список уровней. В левом окошке находим нужный нам уровень и нажимаем на
соответствующую стрелку для переноса уровня в нужный нам граф. Нажимаем в
правом окошке «сохранить».После того, как граф сохранился, можно
закрыть программу, она нам больше не понадобится. Потом этого шагаем в
папку с ACDC для ЧН\ЗП и удаляем старые файлы section4.bin или
graph.bin.Затем переименовываем файлы graph.bin.new или section4.bin.new
в graph.bin и соответственно section4.bin.
Далее идем в папку с
ACDC от ТЧ, находим там файл alife_наша_локация и копируем его. Затем
шуруем в папку с ACDC от ЧН\ЗП, вставляем скопированный нами файл.
Открываем этот файл, сносим все, оставляем только одну секцию
спавна(Лучше всего если это будет какой-нибудь объект), присваиваем
секции номер не меньше 20000, сворачиваем на время этот файл. Далее
нужно подогнать вертексы. Для этого запускаем батник ggtool, ждем
некоторое время, после чего появляются имена локаций, а рядом с ними
числа. Смотрим это число рядом с нашей локацией(в ЧН это скорее всего
будет 1620, а в ЗП 934).Далее разворачиваем alife_ файл с нашей
локацией, ищем там строку «game_vertex_id» и пишем там число которое
появилось рядом с нашей локацией при запуске батника ggtool.Затем
обращаем свой взор на строку «level_vertex_id».К исходному значению
строки прибавляем число, которое мы записали в строку «game_vertex_id»,
полученное число записываем. Далее, в добавляемых потом секциях спавна
нужно писать эти числа. Мы подогнали вертексы.
Затем открываем
файл all.ltx.Вписываем туда свой alife_ файл локации, way_ файлы не
трогаем. Меняем на соответствующее число локации строку level_count.
После
этого открываем файл alife_zaton(для ЗП) или alife_marsh(для ЧН)и ищем
там гг по строке
«section_name=actor%C2%BB%2E%D0%9D%D0%B0%D1%88%D0%BB%D0%B8%3F%D0%9E%D1%82%D0%BB%D0%B8%D1%87%D0%BD%D0%BE%2E
Теперь присваиваем этой секции спавна позицию(новую позицию прописываем
также в строке "upd:position = ") и вертексы как у единственного
предмета в файле alife_новая_локация. При следующей распаковке, если вы
все сделали правильно, наш актор окажется в файле alife_новая_лока.
Мы почти закончили с пробной сборкой новой локации(пока без перехода).
Осталось только прописать наш новый уровень в файл ACDC Cop\acdccop.pl(для ЗП)либо в файле ACDC Cs\stkutils\level.pm.
Осталось собрать gamedat`у для игры и смотреть что получилось. Итак, приступим:
В
папке с игрой создаем папку gamedata, а в ней папки configs, levels,
spawns.В папку spawns ложим получившийся при сборке all.spawn.new(или
new.spawn), не забывая переименовать его в all.spawn.В папку levels
ложим уровень из ggEditor_01\Soc\gamedata\levels\ваша_локация. Затем
заходим в папку с уровнем, удаляем файл level.ai и переименовываем файл
level.ai10 в level.ai.
Теперь осталось только прописать уровень в
конфигах. Из распакованной геймдаты игры берем файлы
configs\game_graphs.ltx, game_levels.ltx, game_maps_single.ltx.
Далее
лезем в game_levels.ltx. Там в самом начале, где список уровней,
вписываем «level183»(число не менее 183.) Листаем файл до самого конца и
в конце пишем следующее: [level183]
name=%D0%B2%D0%B0%D1%88%D0%B0_%D0%BB%D0%BE%D0%BA%D0%B0%D1%86%D0%B8%D1%8F
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
Всё.Запускайте игру и пробуйте, что получилось.
[править] Соединение с остальными уровнями.
Предлагаю
вам не терять зря времени просто бегая по подключенной локации, а
замерить координаты для создания перехода. Координаты будем снимать на
2-х локациях:на подключенной и на той на которую вы хотите сделать
переход соответственно. На каждой локации нам нужно снять по две
координаты(координата самого перехода и координата места в которое будет
бросать при переходе с второй локации, вторую координату делаем на пару
метров дальше, потому как если сделать близко, то сразу же будет кидать
обратно, на локацию с которой переходим.).Как снять координаты, я думаю
все знают, поэтому объяснять здесь не буду.
Мы отмерили все необходимые нам координаты.
Затем
распаковываем сделанный нами ранее all.spawn.Теперь в нужных нам
локациях, в alife_ файлах добавляем следующую секцию спавна: [1] cse_abstract properties
section_name=level_changer
name=escgar_level_changer%C2%A0%E2%80%94 уникальное имя position =
28.060224533081,16.556184768677,685.80151367188 — координаты перехода
direction = 0,0,0 cse_abstract__unk1_h16 = 0x1 cse_alife_object properties
dest_game_vertex_id
= 1187 — вертексы локи на которую ведет переход dest_level_vertex_id =
212769 — вертексы локи на которую ведет переход dest_position =
39.396331787109,0.48722490668297,-299.7674505469 — позиция куда кидает
dest_direction = 0,0,0 — поворот гг
dest_level_name=l02_garbage%C2%A0%E2%80%94 на какую локу кидает
dest_graph_point = start_actor_01 silent_mode = 1 se_level_changer properties
Изменяем
только те места, которые я прокомментировал, комментарии
соответственно, удаляем. Всё готово. Собираем all.spawn и запихиваем в
игру.