Written by ts2do
Вы когда-либо задавались вопросом, как управляются взаимодействия? Вы когда-либо задавались вопросом, как работает electrocution voodoo doll? Вы когда-либо задавались вопросом, насколько сложно смывать туалет? Если вас когда-нибудь мучали эти вопросы, вы попали туда, куда надо. Мы представим вам простое программирование и программирование, видимое во время игры. Но сначала вам нужно узнать тип файла, с которым придется работать.
Представление IFF Pencil 2
Written by Tom van Dijk
Эта документация объяснит основы объектов в IFF Pencil 2.
Что такое IFF Pencil 2?
IFF Pencil 2 - программа, написанная Томом ван Дижком (mazelord2000), которой можно редактировать файлы IFF формата. IFF файлы содержат информацию об объектах (мебель), окрестностях, игровых текстах, карьерах, домах, и т.д. Программа может редактировать информацию в этих файлах. Технически информация сортируется внутри файла и сохраняется в так называемых 'ресурсах'. IFF Pencil 2 может редактировать в шестнадцатиричном виде все типы ресурсов и содержит специализированные редакторы для некоторых типов. Эти типы вообще соединяются с объектами, и в остальной части текста, я буду просто использовать слово 'объект', когда что-то касается того, что может быть сохранено в IFF файлах.
Что это за ресурсы?
Ресурсы - строительные блоки объекта: они содержат информацию о цвете, названии, описании, программировании, и т.д. Каждый ресурс специализируется на своем: имеются типы ресурсов. У каждого ресурса есть некоторый тип. Тип ресурса 'STR#' предназначен для хранения текстов. Тип ресурса 'TTAB' - для хранения информации о pie меню (этих синих кнопках, которые появляются, когда вы кликаете на объекте). Тип ресурса 'SPR2' содержит спрайты объекта (если сказать по-простому, bitmaps, или как это будет выглядеть в игре).
У каждого ресурса также есть ID. Это - уникальный номер ресурса данного типа; другими словами: в одном и том же файле может иметься BHAV 1 и BHAV 2 и TTAB 1, но не может быть BHAV 1 и BHAV 1. Комбинация типа и ID делает ресурс уникальным.
У ресурсов также есть названия. Оно определяется пользователем и необязательно.
Какие ресурсы (типы) необходимы для объектов?
У каждого объекта - пара ресурсов. Это начинается с OBJD ресурса, который содержит информацию не только о цене объекта, но также и ID номера дополнительных ресурсов, таких как TTAB ресурс и DGRP ресурс. Имеется также CTSS ресурс, содержащий название и описание объекта. BMP# ресурсы содержат "ноготки" и картинки, которые показываются в очереди (в верхнем левом углу экрана игры) и картинка, используемая, когда сим мечтает об объекте.
Для внешнего вида объекта используются ресурсы SPR2, PALT и DGRP. Для программирования объекта имеются ресурсы типа BHAV, TTAB (pie меню), TTAs, BCON, STR#, FWAV, OBJf, GLOB, и SLOT. OBJD ресурс указывает на TTAB/TTAS (это - пара), SLOT, DGRP и OBJF. TTAB и OBJF указывают на BHAV. DGRP ресурсы указывают на SPR2 ресурсы, которые указывают на PALTS. BHAV ресурсы указывают на BCON, STR# И FWAV.
Таким образом, все ресурсы, которые используются объектами, связаны друг с другом.
Как я могу использовать IFF Pencil 2 для изменения объектов?
Запустив IFF Pencil 2, вы увидите пустой файл. Кликните "open" (открыть) в меню file, чтобы открыть существующий IFF файл. Экран поделен на две части: слева вы увидите типы ресурсов, и справа - все ресурсы некоторого типа. Если вы хотите отредактировать цену объекта, кликните слева 'OBJD', потому что цена хранится в OBJD ресурсе. (Все, что не соответствует чему-то в других мнстах, хранится в OBJD ресурсе.) Потом дважды кликните соответствующий ресурс справа, который обычно имеет название объекта, которому вы собираетесь изменить цену. После двойного клика вывалится новое окно. Это - специальный редактор для OBJD ресурсов, и Вы можете изменять цену, найдя ее в списке, кликнув ее, изменив значение и кликнув "OK". Здесь, btw, Вы можете также редактировать GUID объекта.
Для каких ресурсов используются специализированные редакторы?
Поддерживаемые типы ресурсов - STR#/FAMs/CTSS/TTAs (Фактически они хранятся одинаковым образом), TTAB, BCON, BHAV, OBJD, OBJf, DGRP, FWAV, GLOB. Для других ресурсов Вы можете использовать только HEX редактор (в 16-ричном коде).
Короче говоря, вы можете изменять почти все, что связано с объектами, кроме SPR2, PALT, BMP# и SLOT. Для первых двух, используйте Transmogrifier. Для третьего используйте функциональные возможности экспорта / импорта (доступные по клику правой кнопки мыши на ресурсе), и четвертый еще не полностью исследовался (но я очень далек от этого).
Что будет, если кликуть правой кнопкой мыши на ресурсе?
Откроется контекстное меню, подобное 'Edit' меню наверху окна. Вы можете добавлять и удалять ресурсы, дублировать их, импортировать и экспортировать их в файл и редактировать свойства.
BHAV
Первый шаг изучения Sims программы изучить среду, с которой вы будете работать. Наиболее важный тип, с которым вы будете работать, называется программированием поведения, заявленное как BHAV в iff файлах. Без BHAV, не было бы ничего, что делало бы забавным использование объекта. BHAV может быть размером от 1 строки до максимума возможного (но знать этот макимум, на самом деле, не важно). С BHAV легче работать, если разбить на программистские "секции", которые вы можете увидеть ниже на схеме. Как вы можете видеть, BHAV не просто одна большая груда SimAntics инструкций. Вместо того, что просто слиться в один BHAV, они используются по отдельности и связываются с ними через него. Вы можете также видеть, что используется globals; всякий раз, когда вы делаете новое взаимодействие, вы хотите использовать globals 272, стандартный вход, и global 273, стандартный выход. Примитивные функции - функции, которые имеют номер функции от 0 до 56. Номера хранятся в переменных и должны быть целыми числами. Продолжение BHAV зависит от того, по какой ветви идет текущая линия BHAV - успешной (линия Success) или неудача (линия Failure).
Это пример:
0: Animate Sim True: Line 1 False: Line 0
Неудача идет на свою собственную линию, потому что некоторые анимации используют неудачу во время анимации. Некоторые анимации "терпят неудачу" во время действия, поэтому эти линии могут быть задействованы во время анимации. Пример этого - анимация "вынести мусор". Сим принес бы мешок к мусору, может. Анимация "потерпела неудачу" и мешок мусора будет удален. Линия, которая удалила мешок мусора, возвратится к анимации, и остальная часть анимации будет играть (и будет успешной в конце).
1: Stack Object's Attribute 1 > 10 True: Line 2 False: Line 3
И успех и неудача идут по различным линиям, потому что, если линия успешна, тогда это означает Stack Obj. Attr. 1 больше чем 10. Когда линия терпит неудачу, это означает Stack Obj. Attr. 1 меньше чем 10. Это может обычно использоваться в цикле.
2: Play Sound 0 True: True False: Error
Когда звуки сыграны, они никогда не будут терпеть неудачу.
TTAB
Используется, чтобы связать BHAV со взаимодействием. Вы также можете редактировать рекламу мотиваций для сима с доброй волей. Имеется дерево, называемое деревом действий, которое является действием и дерево проверки, которое является "испытание на пригодность к употреблению этим симом" BHAV. Имеется много атрибутов, которые вы можете назначать взаимодействию единственным кликом, типа "доступный собаке" или многократный выбор очереди. Позже вы узнаете больше о TTABS.
STR
STR#s - строки текста, который можно редактировать, и которые могут появляться во время игры. Примитивная функция 50 обычно используется STR# 302 для изменения названия вашего взаимодействия с определенной STR# строкой. Примитивная функция 6 используется STR# 304 (строки Suit примитивов) чтобы добавить симу трехмерный объект(цель) в STR#. Примитивная функция 44 используется STR# 129 (взрослые) и 130 (дети) также для анимации с STR#. Много функций используют STR#s для многих других целей, позже мы будем использовать STR#s.
FWAV
Это - определенно одна из самых легких областей программирования Sims. Все это о проигрывании звука в FWAV. Пример FWAV входа - footstep_medium. Примитивная функция, которая использует FWAVS - #23. Иногда программирование мультипликации использует звуки само по себе, но мы не будем говорить об этом.
OBJD & OBJf
OBJD поле используется для фактических tiles объекта в сим мире и регистрирует атрибуты tile. Познакомьтесь с основными важными частями OBJD:
Master ID
Каждый многоплиточный (multi-tile) объект имеет мастер-объект, который не показывается в игре, но держит subtiles вместе. Master ID - уникальный номер, в файле, который The Sims может использовать, чтобы выяснить, какие объекты являются частью одного многоплиточного объекта, а какие - другого.
Sub index
Tile, к которой этот OBJD применяется. Десятичное значение для единственной tile объекта должно быть установлено в 0 для работы объекта. Если объект - многоплиточный master-объект, который не показывается в игре, десятичное значение должно быть установлено в -1. Формула десятичного значения для плиток в многоплиточном объекте - ряд*256+колонка. Ряды и колонки начинаются с 0. Sub индекс значение 0 - самое близкое к экрану, в то время как ряды идут налево, а колонки идут направо от той точки.
Global Unique ID (GUID)
Уникальный номер, используемый в The Sims, чтобы соединить внутриигровые инстанции объекта с ресурсами в файлах. Инстанции имеют локальный ID, который является уникальным для дома. GUID должен быть уникальным для всей инсталляции, иначе кое-что может работать неправильно. Поскольку его размер - 4 байта, имеется много возможных идентификаторов ID.
Base Graphic ID #
Идентификатор ресурса начального изображения, DGRP, используемый данной tile.
Tree table ID #
Идентификатор ресурса TTAB, который использует tile. -1, если не используется ни одного, или может использоваться для tile многоплиточного объекта.
Body strings ID #
Идентификатор ресурса STR#, содержащий bodystrings, которые используются только для объектов с типом 2.
Slots ID #
Идентификатор ресурса SLOT, который использует tile.
Catalog ID #
Идентификатор ресурса CTSS секции и Каталога BMP, которые использует объект.
Price
Стоимость объекта, сколько нужно заплатить при его покупке.
Initial depreciation
Начальное обесценивание - Количество денег, вычитаемое из стоимости объекта, в simoleans, после его покупки и перехода в режим жизни.
Daily depreciation
Ежедневное обесценивание - Количество денег, вычитаемых ежедневно от стоимости объекта, в simoleans.
Self depreciation
Самообесценивание - Установлен в 1, если объект обесцениваниется сам по себе. Иначе устанавливается в 0.
Depreciation limit
Предел обесценивания - Минимальная цена объекта. Когда этот предел достигнут, объект больше не обесценивается
Number of graphics
Число графических состояний, используемых для tile.
Dynamic sprite base ID #
База динамических спрайтов. (сейчас не будет использоваться)
Number of dynamic sprites
Число используемой динамической графики.
Type
Тип объекта:
0 = неизвестный
2 = человек
4 = нормальный
7 = сим тип
8 = портал / режим строительства
9 = курсор
11 = внутренний
Disabled
Если установлен в 1, не обнаруживается в каталоге покупки / строительства.
Global simulation object (is a controller?)
Если установлен в 1, этот объект автоматически создается, если его еще нет на участке. Иначе - 0.
Level offset
Если установлен в 1, объект - часть многоплиточного объекта, который занимает два этажа, в котором этот объект занимает второй этаж.
Если все под-плитки многоплиточного объекта установлены в 0, объект весь помещается на одном этаже, и может быть помещен на обоих этажах. Если даже всего одна из них -1, то объект на два этажа и может быть помещен только на первом этаже.
Lead object
Плитка для выбора, когда объект куплен.
Shadow brightness
Теневая яркость объекта. 0 - нормальная, больше - ярче.
Использование функции tabl
Если установлена 1, этот OBJD ресурс имеет OBJf ресурс с тем же самым # ID, который содержит различные точки входа и функциональные деревья. Таблица функций предпочтительнее trees в OBJD ресурсе и должна использоваться вместо них. Это приведет нас в OBJfs
Init tree - дерево, которое запускается, когда объект куплен и определено, где он будет помещен.
Main tree запускается при моделировании (simulation)
Имеется много других OBJF входов, которые могут быть сопоставлены с другими объектами. (Ex: посудомоечная машина)
BCON
Это - область простых ссылочных номеров для десятичных вхождений. Для чего она, вы говорите? Она позволяет вам связываться ими с BHAV и создает мини-систему номеров. Что я подразумеваю под мини-системой? Создается небольшая группа чисел, которые могут быть изменены позже и могут использоваться для легких изменений эффекта объекта.
CTSS
Это - области текстовых вхождений, которые определяют название и внутриигровое описание объекта. Они были бы отнесены к OBJDS, если вы не запомнили до этого.
GLOB
Используется объектами, которые требуют использования Semi-Global файлов, которые существуют в ...\GameData\Globals\Globals.far (Автомобили используют Semi-Global CarGlobals). Чтобы использовать их, вы создаете новый GLOB ID 0, если ни одного и вы не пишете в имени semi-global файла ".iff" (Ex: CarGlobals от CarGlobals.iff). Вы свяжете с semi-global BHAV позже.
SLOT
В настоящее время нет никакой доступной информации относительно SLOT. Ищет щель объекта типа способности пересечения и, с primitive 45, позволяет вам идти в какие захотите направления и локации.
From HackersResource
Translated 07/31/04 by RSL