SpawnEd — S.T.A.L.K.E.R. Inside Wiki

SpawnEd

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

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

6N2Q21 <a href="http://ecfwrczfqyuc.com/">ecfwrczfqyuc</a>, [url=http://chlwovxdqdao.com/]chlwovxdqdao[/url], [link=http://rocgbfevoukn.com/]rocgbfevoukn[/link], http://yhazuwilhqjm.com/

comment1,

Схемы

Теоретически, существует единое описание всех объектов, позволяющее задать любой из них одной формулировкой. Практически объекты довольно разные, и на первый взгляд (да и на второй) имеют значительные отличия. Для поиска этой единой формулировки, или, формата объекта, раньше я копировал в хексе объект в блокнот и ручками делил на байты, на двойки, на четверки чтобы найти границы либо конкреные значения.

Потом это надоело и появился SpawnEd. Я хотел найти похожие объекты, чтобы в итоге загнать их под одну гребенку (прошу прощения, формулу). Поэтому требовалось разделить описание разных объектов. Для этого используются схемы.

Что такое схема?

Если посмотреть в таблицу "Секция 1 - шапка", то вторым параметром в ней будет имя объекта. Оно жестко привязано к используемым параметрам. Всего в файле all.spawn (первый патч) 190 различных объектов. Но это не все, что есть в игровых ресурсах. Все знают, что из игры были выброшены транспорт, несколько монстров и некоторые аномалии. Поэтому зная, как описаны похожие объекты мы сможем вернуть отсутствующие детали, а заоодно и подредактируем старые.

И в се же, вернемся к схеме. Схема (термин использую я, и не факт, что он тут уместен) - это набор команд парсера, по которым программа выводит содержимое секция объекта. Если вернемся к таблице "Секция 1 - шапка", то увидим, что в ней есть пара названий, координаты, разделители. Чтобы программа знала, как показать нам содержание этой части, она использует скрипты.

Использование схем

Все на примерах, так будет понятнее.

Для отображение "Секция 1 - шапка" используется следующая схема:

Команда Описание
 ;секция 1 первая строка - коментарий. Не обрабатывается, служит для пометок.
read-2 вывести 2 байта (разделитель)
find-00-объект вывести несколько байт в ASCII до первого символа 00, присвоить имя объект
find-00-имя аналогично, но имя строки - имя
read-2 вывести два байта (разделитель)
hex-real-X вывести 4 байта, перевести их в формат дробных чисел
hex-real-Y присвоить названия X Y Z
hex-real-Z
hex-real-Xrot аналогично, но названия Xrot Yrot Zrot
hex-real-Yrot
hex-real-Zrot
read-8-разд вывести 8 байт, название разд
read-4-?? показать 4 байта, названий ?? ( то есть неизвестно)
read-4-версия ну и так далее...
read-2-секция ...
read-2-размер-dec показать 2 байта, и добавить в скобках десятичное значение
next-table переход на вложенную секцию

Я думаю, что смысл понятен. Есть 4 команды с параметрами, и парсер их выполняет. К нему побайтого постпает содержание секций и он просто кладет их в нужные места (нужные нам).

Команды в схемах

Формат всех команд одинаков, разделителем выступает тире:

команда-значение[-название[-опция]]
 команды:  read, find, hex, next.
 значение: XX
 опции:    dec, show
  • read. Получить и вывести XX байт. Опция dec добавляет десятичное значение полученных данных
  • find. Выводится последовательность поступаемых байт до первого символа XX. Затем последовательность конвертируется в ASCII символы. Иначе говоря, так мы получаем все текстовые значения. Опция show выведет полученный текст в дополнительное окно (обычно используется для длинных скриптов)
  • hex. Значением выступает слово real, однако использовано только для читаемости. Переводит 4 байта в дробное число.
  • next. Используется только для перехода к вложенной секции в другой таблице.

Файлы

В комплекте с программой идут несколько файлов.

  • data\object - 191 объект, после символа "равно" - используемая схема. Изначально все объекты имеют схему "0", то есть "пустышку", которая просто показывает несколько байт. Я некоторые разобрал, но не факт, что правильно, так что смотрите.
  • data\*.sch - а это сами схемы и есть. обычные текстовые файлы. Которые начинаются с подчеркивания - это схемы второй секции, из программы они не редактируются, так как там все ясно (почти).

Уже занятые схемы: 1-stalker; 2-restrictor, smart_terrain; 3-m_flesh; 4-actor; 5-breakable_object, всякие lamp; 6-m_trader. 7,8,9 - пустые, их можно использовать для дальнейшей работы. Можно создать до 100 файлов, но я надеюсь, что и десятка должно хватить. Не хватит - копируйте 0.sch под новым именем и пользуйте.

Пример работы

После запуска программа перекинет нас на объект 93, stalker, схема 1. В ней многое описано, но еще и остались непонятные пункты. Но мы сейчас будет разбирать ворону... Вот тут есть описание формата объекта "ворона" ;) Смотрим его:

число пример
байт
2    FC 00
4    00 00 00 00
4    01 00 00 00
4    D9 2D 03 00
1    BA
3    FF FF FF
1    00
4    FF FF FF FF
4    FF FF FF FF
х    monsters\crow\crow
1    00
6    00 00 00 00 00 00
4    80 3F 00 00
4    00 00 00 00
4    00 00 FF FF
4    00 00 00 00
4    00 00 00 00

Чтобы увидеть такое, нужно всего лишь добавить схему для вороны. Для этого перейдем на любой объект "ворона" (например, объект 289). Его схема изначально не задана, то есть "пустышка". Для создания новой схемы (сейчас мы не будет пытаться адаптировать уже существующие) в таблице Секция 1 - шапка сделайте двойной щелчок на строке объект m_crow. Откроется окно привязки объектов к схемам. Стрелками выберем схему 7. Она пока не занята. После выбора закроем окно, оно больше не нужно.

Теперь просто напишем следущее в правой части программы, в месте для команд парсера:

;m_crow

чтобы самим потом вспомнить, для чего эта схема. и дальше еще пару строк (в скобках - мои коментарии, их не нужно писать):

;m_crow
read-2 (три двубайтовых значения - почти всегда так начинается секция)
read-2
read-2
read-4 (01000000 - всегда присутствует)
read-4 (в зависимости от уровня)
read-4
read-1 (здесь будет 00, обычно присутствует скрипт, но сейчас его нет)
read-4 (а тут одни FF, видимо опущенные параметры)
read-4
find-00

Теперь нажмем Записать схему, и увидим уже более осмысленный результат. Немного облагородим вид, добавим названия (которые знаем):

;m_crow
read-2-код1
read-2
read-2
read-4
read-4-код2
read-4
read-1
read-4
read-4
find-00-модель

Ну и в том же духе продожаем пробовать. Обратите внимание, что вторая секция заполнилась автоматом, менять ее можно только внешним редактором в файлах _?.sch, но нам это не нужно сейчас.

Теперь все вороны будут на попадаться в уже полуразобранном виде ;) И можно попробовать посмотреть, подойдет ли эта схема например к собакам. Ищем собаку, меняем ей схему на нашу m_crow и продолжаем дальше.

Вобщем, удачи в исследованиях. И не забывайте делится найденными схемами, которые подходят сразу под несколько объектов, а не только для ворон.

--HikeR 03:16, 6 мая 2007 (MSD)

Ссылки

  • в данный момент нет доступных ссылок
Другие места
LANGUAGE