Работа с all.spawn
Материал из S.T.A.L.K.E.R. Inside Wiki
Расспаковка all.spawn
Для того, чтобы распаковать ол спавн, нам потребуется acdc. Для каждой версии игры нам понадобиться свой. Я описываю для ЗП ( во всех частях сталкера этот процесс идентичен), поэтому и пользуюсь acdc от ЗП. Для того, чтобы запустить acdc нам будет нужен ActivePerl (нужная версия входит в архив)Качаем acdc для ЗП здесь.После того, как вы скачали acdc, установите эктивперл(если вы этого еще не сделали). Распакуйте acdc и скопируйте в эту папку свой all.spawn. Запустите .bat файл decompile(если его нет, то откройте блокнот, запишите в нем такие строки:
perl acdccop.pl -d all.spawn pause
И сохраните под именем "decompile.bat" Запускайте батник. Через некоторое время появятся .ltx файлы. Все, ол спавн распакован и ждет шаманства над собой :)
Структура файлов
Рассмотрим структуру файлов. Файлы типа alife_ - это основные файлы, в которых содержаться секции спавна. Файлы типа way_ - это и есть "вэй". Сквады, логика и прочая дребедень. Трогать мы их не будем. Откроем любой alife_ файл и увидим там много секций спавна. Вот одна из них:
[0] ; cse_abstract properties section_name = breakable_object name = meshes\brkbl#0.ogf position = -160.539749145508,21.5325393676758,-195.387329101563 direction = -0.00700339116156101,-0.108852192759514,0.412739604711533 ; cse_alife_object properties game_vertex_id = 0 distance = 0 level_vertex_id = 293223 object_flags = 0xffffffba ; cse_visual properties visual_name = meshes\brkbl#0 ; cse_alife_object_breakable properties health = 1
А теперь подробнее
[0] - уникальный "id", то бишь номер секции ; cse_abstract properties - комментарий section_name = breakable_object - название секции( НЕ В КОЕМ СЛУЧАЕ НЕ СТАВТЕ ЗДЕСЬ СВОЕ НАЗВАНИЕ, ИНАЧЕ all.spawn ВЫ НЕ ЗАПАКУЕТЕ) name = meshes\brkbl#0.ogf - тоже название... Тут уже что годно можно написать position = -160.539749145508,21.5325393676758,-195.387329101563 - позиция на которой будет спавн direction = -0.00700339116156101,-0.108852192759514,0.412739604711533 - направление. В какую сторону "смотрит" обьект. ; cse_alife_object properties - комментарий game_vertex_id = 0 - вертикс. distance = 0 level_vertex_id = 293223 - тоже вертикс. (зачем они объяснять не буду) object_flags = 0xffffffba - флаги обьекта. тоже рассматривать не будем ; cse_visual properties - комментарий visual_name = meshes\brkbl#0 - визуал. ; cse_alife_object_breakable properties - комментарий. health = 1 - здоровье.
Файл all.ltx - это список файлов, которые упакованы в ол спавн.
Создаем новую секцию спавна
Ну вот, самое интересное начинается ) Открываем любой файл. Я буду спавнить свои объекты, на новой локации.
Допустим, нам нужно заспавнить сталкера. Создаем секцию спавна. ( ВНИМАНИЕ! ПРЕЖДЕ ЧЕМ СПАВНИТЬ СТАЛКЕРА, ЕГО НУЖНО СОЗДАТЬ). Как описывать новых напсано здесь
[20927] - уникальный номер секции ; cse_abstract properties - коментарий :) section_name = stalker - название секции. Если спавните сталкера - stalker. Своих названий быть не должно. name = marsh_koster_stalker - имя. я использую имя профиля, которого вы создавали при создании нпс position = -150.17852783203,0.63608288764954,-293.19580078125 - координаты. direction = 0.062321275472641,0.00316426996141672,0.0140644172206521 - направление. Куда сталкер будет смотреть. ; cse_alife_trader_abstract properties - money = 5000 - деньги ) character_profile = marsh_koster_stalker - профиль, который вы указали при создании нпс. Вот тут нужно указывать его ; cse_alife_object properties game_vertex_id = 934 - вертикс локации distance = 4.90000009536743 - Расстояние до gvid level_vertex_id = 1418 - вертикс локации ) object_flags = 0xffffffbf custom_data = <<END - кастом дата. Очень важный элемент при создании нпс. Проще говоря - логика. cfg = scripts/marsh/koster.ltx - путь к конфигу кастом даты [smart_terrains] - смарт террайны ( не рассматриваться) END - окончание кастом даты ; cse_alife_creature_abstract properties g_team = 0 g_squad = 1 g_group = 5 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = (зачем нужно это не совсем понимаю, но заполнять так же, как и в основной секции) upd:health = 1 upd:timestamp = 0x2009656c upd:creature_flags = 0x3d upd:position = -150.17852783203,0.63608288764954,-293.19580078125 upd:o_model = 0 upd:o_torso = 0.00316426996141672,0.062321275472641,0 upd:g_team = 0 upd:g_squad = 1 upd:g_group = 5 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 1,1,0,0,1 predicate4 = 2,2,0,2 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties
Сохраняем. Запаковываем ол спавн, файлом comlite.bat.
В папке gamedata создаем папку spawns и копируем файл new.spawn(он будет называться именно так). Потом переименовываем в all.spawn.
Статья не закончена и будет пополняться время от времени. Для начала хватит.
Автор статьи - Andrey K aka f0rest