Подключение локаций через программу от АМК Team

Материал из Mod Wiki.

Перейти к: навигация, поиск

На днях пообщался с одним человеком, узнал как подключать локации к ЗП\ЧН через программу от AMK Team.В данном уроке мы полностью подключим локацию к игре.

Содержание

Инструменты.

Чем будем ковырять:

Собственно, сама программа для редактирования файла game.graph.

ACDC(Для ЗП)

ACDC(Для ЧН)

ACDC(Для ТЧ)

Распакованные ТЧ или мод из которого взят уровень.(Если вы берете уровень из мода, то вам не подойдет простой ACDC от ТЧ.)

Active perl(Необходим для работы ACDC, входит в два первых архива с ACDC).

Подготовка.

Устанавливаем 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».Нашли?Отлично. Теперь присваиваем этой секции спавна позицию(новую позицию прописываем также в строке "upd:position = ") и вертексы как у единственного предмета в файле alife_новая_локация. При следующей распаковке, если вы все сделали правильно, наш актор окажется в файле alife_новая_лока.

Мы почти закончили с пробной сборкой новой локации(пока без перехода).

Осталось только прописать наш новый уровень в файл ACDC Cop\acdccop.pl(для ЗП)либо в файле ACDC Cs\stkutils\level.pm.

В этих файлах ищем такие строки(для ЗП):


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' },

А в файле level.pm от ACDC ЧН вы увидите такой текст:


use constant levels_info => (
	{ gvid0 => 1620,   },
	{ gvid0 => 1573,	name => 'l12_hospital' },
	{ gvid0 => 1565,	name => 'l11_stancia2' },
	{ gvid0 => 1524,	name => 'l10_limansk' },
	{ gvid0 => 1511,	name => 'l09_agroprom_undeground' },
	{ gvid0 => 1313,	name => 'l08_military' },
	{ gvid0 => 1212,	name => 'l07_yantar' },
	{ gvid0 => 1057,	name => 'l06_agroprom' },
	{ gvid0 => 961,		name => 'l05_red_forest' },
	{ gvid0 => 743,		name => 'l04_darkvalley' },
	{ gvid0 => 472,		name => 'l03_escape' },
	{ gvid0 => 245,		name => 'l02_garbage' },
	{ gvid0 => 0,		name => 'l01_marsh' },

Прописать там свой уровень нужно точно так-же как в файле от ACDC ЗП:


use constant levels_info => (
	{ gvid0 => 1620,        name => 'ваша_локация' },
	{ gvid0 => 1573,	name => 'l12_hospital' },
	{ gvid0 => 1565,	name => 'l11_stancia2' },
	{ gvid0 => 1524,	name => 'l10_limansk' },
	{ gvid0 => 1511,	name => 'l09_agroprom_undeground' },
	{ gvid0 => 1313,	name => 'l08_military' },
	{ gvid0 => 1212,	name => 'l07_yantar' },
	{ gvid0 => 1057,	name => 'l06_agroprom' },
	{ gvid0 => 961,		name => 'l05_red_forest' },
	{ gvid0 => 743,		name => 'l04_darkvalley' },
	{ gvid0 => 472,		name => 'l03_escape' },
	{ gvid0 => 245,		name => 'l02_garbage' },
	{ gvid0 => 0,		name => 'l01_marsh' },

Всё.Собираем all.spawn.

Сборка геймдаты.

Осталось собрать 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_graphs.ltx для ЧН должен выглядеть так:


[location_0]
  000          = "..."
  001          = "эскейп"
  002          = "свалка"
  003          = "агропром"
  004          = "агропром-подземка"
  005          = "темная долина"
  006          = "лаборатория X-18"
  007          = "даркскейп"
  008          = "Бар"
  009          = "Росток"
  010		   = "Янтарь"
  011		   = "лаборатория X-16"
  012		   = "Милитари"
  013		   = "Мертвый город"
  014		   = "Радар"
  015		   = "Радар бункер"
  016		   = "Припять"
  017		   = "станция АЭС"
  018          = "ваша_локация"
  

[location_1]
  000          = "..."
  001          = "ограниченный доступ"
  002		   = "запрещенный доступ"
  
[location_2]
  000          = "..."
  001		   = "не для игрока"

[location_3]
  000          = "..."
  001          = "ваша_локация"

game_graphs для ЗП должен выглядеть так:


[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


Всё.Запускайте игру и пробуйте, что получилось.


Соединение с остальными уровнями.

Предлагаю вам не терять зря времени просто бегая по подключенной локации, а замерить координаты для создания перехода.Координаты будем снимать на 2-х локациях:на подключенной и на той на которую вы хотите сделать переход соответственно.На каждой локации нам нужно снять по две координаты(координата самого перехода и координата места в которое будет бросать при переходе с второй локации, вторую координату делаем на пару метров дальше, потому как если сделать близко, то сразу же будет кидать обратно, на локацию с которой переходим.).Как снять координаты, я думаю все знают, поэтому объяснять здесь не буду.

Мы отмерили все необходимые нам координаты.

Затем распаковываем сделанный нами ранее all.spawn.Теперь в нужных нам локациях, в alife_ файлах добавляем следующую секцию спавна:

[1] 
; cse_abstract properties 
section_name = level_changer 
name = escgar_level_changer - уникальное имя
position = 28.060224533081,16.556184768677,685.80151367188 - координаты перехода
direction = 0,0,0 
cse_abstract__unk1_h16 = 0x1 
; cse_alife_object properties 
game_vertex_id = 1142 - геймвертексы
distance = 0
level_vertex_id = 308110 - геймвертексы
object_flags = 0xffffff3e
; cse_shape properties 
shapes = shape0 
shape0:type = box 
shape0:axis_x = 1.25219917297363,0,0 
shape0:axis_y = 0,3.09340000152588,0 
shape0:axis_z = 0,0,1.25219917297363 
shape0:offset = 0,0,0 
; cse_alife_space_restrictor properties 
restrictor_type = 3 
; cse_alife_level_changer 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 - на какую локу кидает
dest_graph_point = start_actor_01
silent_mode = 1 
; se_level_changer properties

Изменяем только те места, которые я прокомментировал, комментарии, соответственно, удаляем. Всё готово.Собираем all.spawn и запихиваем в игру.


Да и еще.Если будете переносить секции спавна, то для массовой замены гейм вертексов и левел вертексов можно использовать блокнот: открываем наш файл в блокноте=> правка=> заменить, и пишем что на что заменять.


Автор статьи: БАТЯ-STALKER

О способе подключения поведал: джЭдай (ака Panisher)

Если у вас что-то не получается или появились вопросы, есть тема на форуме.

Личные инструменты