Работа с all.spawn — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Работа с all.spawn — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Мы платим за лайки! - Оплата ежедневно!)
м (Откат правок 5.228.2.203 (обсуждение) к версии FantomICW)
 
Строка 1: Строка 1:
Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.  
+
== Расспаковка all.spawn ==
 +
 
 +
Для того, чтобы распаковать ол спавн, нам потребуется acdc. Для каждой версии игры нам понадобиться свой. Я описываю для ЗП ( во
 +
всех частях сталкера этот процесс идентичен), поэтому и пользуюсь acdc от ЗП. Для того, чтобы запустить acdc нам будет
 +
нужен ActivePerl (адрес откуда можно скачать последнюю версию, для работы подойдёт любая. http://www.activestate.com/activeperl/downloads (дС)) (нужная версия входит в архив)Качаем acdc для ЗП [http://narod.ru/disk/17377026000/ACDC%20Cop.rar.html здесь].После того, как вы скачали acdc, установите эктивперл(если вы этого еще не сделали)(от "GE" - файлы ACDC должны лежать в папке "C:\Perl\bin" если вы не изменяли стандартного пути установки файлов программы Active Perl). Распакуйте acdc и скопируйте в эту папку свой all.spawn (от "GE" - если вы работаете с файлами ТЧ то не забудьте поместить туда-же и файл game.graph , если вы работаете с файлами модов на ТЧ то дополнительно перенести и папку config). Запустите .bat файл decompile(если его нет, то откройте блокнот, запишите в нем такие строки:
 +
perl acdccop.pl -d all.spawn
 +
pause
 +
(от "GE" - при работе с утилитами от Бардака .bat файл выглядит так:
 +
 
 +
del sections.ini
 +
perl universal_acdc.pl -d all.spawn
 +
pause
 +
 
 +
при работе с файлами модов надо включить в .bat сканирование конфигураций:
 +
 
 +
del sections.ini
 +
perl universal_acdc.pl -d all.spawn -out all -scan config/ -nofatal
 +
pause
 +
 
 +
в ином случае не чего не получится. Описание подходит для де компиляции all.spawn ТЧ и модов , работоспособность .bat с ЧН и ЗП не проверял.)
 +
 
 +
И сохраните под именем "decompile.bat" Запускайте батник. Через некоторое время появятся .ltx файлы.
 +
Все, ол спавн распакован и ждет шаманства над собой :) (от "GE" - при работе ACDC от бардака в папке C:\Perl\bin по мимо отсальной кучи файлов "pl и прочих" + наших файлов ACDC появятся файлы: sections.ini, папка all с .ltx всех локаций и guids.)
 +
 
 +
== Структура файлов ==
 +
 
 +
Я прошу прощения у автора этой статьи, но так как он мало разбирается в модостроении или стесняется писать правильно, счёл возможным внести некоторые правки в его статью. Правки буду вносить в скобках с указанием "дС"(дядяСаша)
 +
Рассмотрим структуру файлов. Файлы типа alife_ - это основные файлы(не основных файлов нет! каждый файл выполняет свою функцию(дС)), в которых содержаться секции спавна(Название, координаты, характеристики, логика или указания на логику объектов которые спавнятся в игре с помощью all.spawn(дС)) . Файлы типа 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", то бишь номер секции(ID в игре сталкер - совершенно другое и ни какого отношения
 +
                            к номеру секции не имеет. Секция - просто номер который не должен повторятся(дС))
 +
; cse_abstract properties - комментарий
 +
section_name = breakable_object - название секции( НЕ В КОЕМ СЛУЧАЕ НЕ СТАВТЕ ЗДЕСЬ СВОЕ НАЗВАНИЕ, ИНАЧЕ all.spawn ВЫ НЕ ЗАПАКУЕТЕ)
 +
name = meshes\brkbl#0.ogf - тоже название... Тут уже что годно можно написать(Можно, но лучше
 +
    придерживаться правил наименования чтобы не запутаться при большом количестве объектов(дС))
 +
position = -160.539749145508,21.5325393676758,-195.387329101563 - позиция на которой будет спавн
 +
    (Уточнение: центральная точка плоскости спавна на горизонтальной плоскости локации, почему см. 3 строчки ниже(дС))
 +
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 - визуал.(папка meshes не указывается, а указывается полный путь в папке
 +
"meshes" например actors\aziat\aziat_bandit_veteran, папка "actors" соответственно должна находится в папке "meshes"(дС))
 +
; cse_alife_object_breakable properties - комментарий.
 +
health = 1 - здоровье.
 +
 
 +
 
 +
Файл all.ltx - это список файлов, которые упакованы в ол спавн.
 +
 
 +
 
 +
 
 +
== Создаем новую секцию спавна ==
 +
Ну вот, самое интересное начинается )
 +
Открываем любой файл. Я буду спавнить свои объекты, на новой локации.
 +
 
 +
Допустим, нам нужно заспавнить сталкера.
 +
Создаем секцию спавна. ( ВНИМАНИЕ! ПРЕЖДЕ ЧЕМ СПАВНИТЬ СТАЛКЕРА, ЕГО НУЖНО СОЗДАТЬ). Как описывать новых напсано [http://stalkerin.gameru.net/wiki/index.php/%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_NPC здесь]
 +
 
 +
 
 +
 
 +
[20927] - уникальный номер секции. (Это просто порядковый номер секции, после распаковки all.spawn
 +
          открваете последний файл Alife_ в списке для ЗП это alife_zaton.ltx и смотрите № последней
 +
            секции, дальше уже можете назначать свой. Свою секцию можете вписывать в конце любого
 +
          файла alife_ только со своим номером. При запаковке, номера будут перебиты соответственно
 +
          порядковым номерам начиная от первой секции первого файла alife_. Единственное условие
 +
          порядковые номера не должны быть одинаковыми не сможете запаковать.(дС))
 
   
 
   
Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.  
+
; cse_abstract properties - коментарий :)
   
+
section_name = stalker - название секции. Если спавните сталкера - stalker. Своих названий быть не должно.
Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,  
+
name = marsh_koster_stalker - имя.  я использую имя профиля, которого вы создавали при создании нпс (категорическая глупость, не надо путать себя и машину.
   
+
        Правило №1 при спавне новых объектов первые 3 буквы должны содержать название локации mar_ дальше уже пишите название желательно места и затем уже
достаточно просто зарегистрироваться на нашем сервисе. > www.like.zarplatt.ru <
+
        название сталкера и последним порядковый номер например: mar_cerkov_stalk_1, так как указал автор статьи можно заспавнить, но если сталкеров будет
 +
        много и на разных локациях как это есть в больших модах потом при необходимости внесения изменений найти будет очень тяжело. Поэтому лучше учится
 +
        сразу правильно делать(дС))
 +
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 (Опять какой-то бред, причём тут givd. Для чего нужна дистанция, При спавне например группы сталкеров
 +
        5 человек не нужно для каждого устанавливать свои координаты спавна у всех можно делать одинаковые, но при наличии радиуса, движок их сам
 +
        раскидает, а если радиус будет 0 все будут спавнится в одной точке, резко возрастает нагрузка на память игра начинает притормаживать, и иногда,
 +
          я думаю многие встречались с этим, какой-то НПС просто сразу гибнет на месте спавна, почему это происходит не знаю! просто факт!(дС))
 +
 
 +
level_vertex_id = 1418 - вертикс локации )
 +
object_flags = 0xffffffbf
 +
custom_data = <<END - кастом дата. Очень важный элемент при создании нпс. Проще говоря - логика.
 +
cfg = scripts/marsh/koster.ltx - путь к конфигу кастом даты (уточняю папка "scripts" которая находится в папке "config", потому, что в папке gamedata тоже есть папка "scripts" не путать!(дС))
 +
[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        --- (но что конкретно я не знаю, поэтому многие скриптовики мучаются с созданием своих систем alife(дС))
 +
; cse_ph_skeleton properties
 +
upd:start_dialog =
 +
; se_stalker properties
 +
 
 +
 
 +
Сохраняем. Запаковываем ол спавн, файлом comlite.bat.
 +
 
 +
В папке gamedata создаем папку spawns и копируем файл new.spawn(он будет называться именно так). Потом переименовываем в all.spawn.
 +
 
 +
Статья не закончена и будет пополняться время от времени. Для начала хватит.
 +
 
 +
Автор статьи - '''Andrey K aka f0rest'''
 +
 
 +
Правки -- "дядяСаша" (все правки внесённые мной опробованы на "собственной шкуре", поэтому лучше учится на чужих ошибках! --)) (imgal@mail.ru)

Текущая версия на 21:57, 28 декабря 2016

Расспаковка all.spawn

Для того, чтобы распаковать ол спавн, нам потребуется acdc. Для каждой версии игры нам понадобиться свой. Я описываю для ЗП ( во всех частях сталкера этот процесс идентичен), поэтому и пользуюсь acdc от ЗП. Для того, чтобы запустить acdc нам будет нужен ActivePerl (адрес откуда можно скачать последнюю версию, для работы подойдёт любая. http://www.activestate.com/activeperl/downloads (дС)) (нужная версия входит в архив)Качаем acdc для ЗП здесь.После того, как вы скачали acdc, установите эктивперл(если вы этого еще не сделали)(от "GE" - файлы ACDC должны лежать в папке "C:\Perl\bin" если вы не изменяли стандартного пути установки файлов программы Active Perl). Распакуйте acdc и скопируйте в эту папку свой all.spawn (от "GE" - если вы работаете с файлами ТЧ то не забудьте поместить туда-же и файл game.graph , если вы работаете с файлами модов на ТЧ то дополнительно перенести и папку config). Запустите .bat файл decompile(если его нет, то откройте блокнот, запишите в нем такие строки:

perl acdccop.pl -d all.spawn
pause

(от "GE" - при работе с утилитами от Бардака .bat файл выглядит так:

del sections.ini
perl universal_acdc.pl -d all.spawn
pause

при работе с файлами модов надо включить в .bat сканирование конфигураций:

del sections.ini
perl universal_acdc.pl -d all.spawn -out all -scan config/ -nofatal
pause

в ином случае не чего не получится. Описание подходит для де компиляции all.spawn ТЧ и модов , работоспособность .bat с ЧН и ЗП не проверял.)

И сохраните под именем "decompile.bat" Запускайте батник. Через некоторое время появятся .ltx файлы. Все, ол спавн распакован и ждет шаманства над собой :) (от "GE" - при работе ACDC от бардака в папке C:\Perl\bin по мимо отсальной кучи файлов "pl и прочих" + наших файлов ACDC появятся файлы: sections.ini, папка all с .ltx всех локаций и guids.)

Структура файлов

Я прошу прощения у автора этой статьи, но так как он мало разбирается в модостроении или стесняется писать правильно, счёл возможным внести некоторые правки в его статью. Правки буду вносить в скобках с указанием "дС"(дядяСаша) Рассмотрим структуру файлов. Файлы типа alife_ - это основные файлы(не основных файлов нет! каждый файл выполняет свою функцию(дС)), в которых содержаться секции спавна(Название, координаты, характеристики, логика или указания на логику объектов которые спавнятся в игре с помощью all.spawn(дС)) . Файлы типа 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", то бишь номер секции(ID в игре сталкер - совершенно другое и ни какого отношения
                            к номеру секции не имеет. Секция - просто номер который не должен повторятся(дС))
; cse_abstract properties - комментарий
section_name = breakable_object - название секции( НЕ В КОЕМ СЛУЧАЕ НЕ СТАВТЕ ЗДЕСЬ СВОЕ НАЗВАНИЕ, ИНАЧЕ all.spawn ВЫ НЕ ЗАПАКУЕТЕ)
name = meshes\brkbl#0.ogf - тоже название... Тут уже что годно можно написать(Можно, но лучше
    придерживаться правил наименования чтобы не запутаться при большом количестве объектов(дС))
position = -160.539749145508,21.5325393676758,-195.387329101563 - позиция на которой будет спавн
    (Уточнение: центральная точка плоскости спавна на горизонтальной плоскости локации, почему см. 3 строчки ниже(дС)) 
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 - визуал.(папка meshes не указывается, а указывается полный путь в папке
"meshes" например actors\aziat\aziat_bandit_veteran, папка "actors" соответственно должна находится в папке "meshes"(дС))
; cse_alife_object_breakable properties - комментарий.
health = 1 - здоровье.


Файл all.ltx - это список файлов, которые упакованы в ол спавн.


Создаем новую секцию спавна

Ну вот, самое интересное начинается ) Открываем любой файл. Я буду спавнить свои объекты, на новой локации.

Допустим, нам нужно заспавнить сталкера. Создаем секцию спавна. ( ВНИМАНИЕ! ПРЕЖДЕ ЧЕМ СПАВНИТЬ СТАЛКЕРА, ЕГО НУЖНО СОЗДАТЬ). Как описывать новых напсано здесь


[20927] - уникальный номер секции. (Это просто порядковый номер секции, после распаковки all.spawn 
          открваете последний файл Alife_ в списке для ЗП это alife_zaton.ltx и смотрите № последней
           секции, дальше уже можете назначать свой. Свою секцию можете вписывать в конце любого
          файла alife_ только со своим номером. При запаковке, номера будут перебиты соответственно
          порядковым номерам начиная от первой секции первого файла alife_. Единственное условие
          порядковые номера не должны быть одинаковыми не сможете запаковать.(дС))

; cse_abstract properties - коментарий :) 
section_name = stalker - название секции. Если спавните сталкера - stalker. Своих названий быть не должно.
name = marsh_koster_stalker - имя.  я использую имя профиля, которого вы создавали при создании нпс (категорическая глупость, не надо путать себя и машину. 
       Правило №1 при спавне новых объектов первые 3 буквы должны содержать название локации mar_ дальше уже пишите название желательно места и затем уже
       название сталкера и последним порядковый номер например: mar_cerkov_stalk_1, так как указал автор статьи можно заспавнить, но если сталкеров будет
        много и на разных локациях как это есть в больших модах потом при необходимости внесения изменений найти будет очень тяжело. Поэтому лучше учится
        сразу правильно делать(дС))
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 (Опять какой-то бред, причём тут givd. Для чего нужна дистанция, При спавне например группы сталкеров
        5 человек не нужно для каждого устанавливать свои координаты спавна у всех можно делать одинаковые, но при наличии радиуса, движок их сам
        раскидает, а если радиус будет 0 все будут спавнится в одной точке, резко возрастает нагрузка на память игра начинает притормаживать, и иногда,
         я думаю многие встречались с этим, какой-то НПС просто сразу гибнет на месте спавна, почему это происходит не знаю! просто факт!(дС))
level_vertex_id = 1418 - вертикс локации )
object_flags = 0xffffffbf
custom_data = <<END - кастом дата. Очень важный элемент при создании нпс. Проще говоря - логика.
cfg = scripts/marsh/koster.ltx - путь к конфигу кастом даты (уточняю папка "scripts" которая находится в папке "config", потому, что в папке gamedata тоже есть папка "scripts" не путать!(дС))
[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         --- (но что конкретно я не знаю, поэтому многие скриптовики мучаются с созданием своих систем alife(дС))
; cse_ph_skeleton properties
upd:start_dialog =
; se_stalker properties


Сохраняем. Запаковываем ол спавн, файлом comlite.bat.

В папке gamedata создаем папку spawns и копируем файл new.spawn(он будет называться именно так). Потом переименовываем в all.spawn.

Статья не закончена и будет пополняться время от времени. Для начала хватит.

Автор статьи - Andrey K aka f0rest

Правки -- "дядяСаша" (все правки внесённые мной опробованы на "собственной шкуре", поэтому лучше учится на чужих ошибках! --)) (imgal@mail.ru)

Другие места
LANGUAGE