» » » » Создание взаимодействий для объекта

мая

04

2010

Создание взаимодействий для объекта

Сообщить об ошибке Просмотров: 7032

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

1. Добавляем новое меню.

Некоторые креаторы утверждают, что добавление взаимодействия – это последнее, чему нужно научиться при создании объектов. Но я полагаю, что опции нужно добавлять сразу, не откладывая дело в долгий ящик. Если вы не сильны в игровой терминологии, то скажу сразу, что меню опций – это то меню, которое появляется при попытке взаимодействия персонажа с объектом, то есть это возможность выбора различных вариантов его использования.

Создание взаимодействий для объекта


Но прежде чем начать что-либо делать, давайте выберем наш «подопытный» объект, к которому мы и будем добавлять новое взаимодействие. Клонируйте, например, картину «Красное и Синее». Если вы уверены в своих силах, то можете выбрать и другой объект, однако, учтите, что некоторые действия могут отличаться. Не забудьте назначить объекту новый GUID, чтобы вновь созданный вами с новыми опциями, он не заменял имеющийся в игре и не вызывал конфликтов.
Информация о меню опций хранится в двух файлах пакаджа объекта – Pie Menu Strings и Pie Menu Function. Обратите внимание, что в склонированной нами картине, эти файлы отсутствуют, а значит, их нужно добавить. (Если вы клонировали другой объект, который содержит нужные файлы, то можете пропустить этот шаг).
Теперь нам нужно импортировать эти файлы из semi-global (далее полуглобальной) библиотеки и удостовериться в том, что они правильно связаны с нашим пакаджем объекта.
Во-первых, необходимо узнать, на какую полуглобальную библиотеку опирается ваш пакадж. Для этого откройте файл GLOB (Global Data) и запомните приведенное там название. В нашем случае, это PaintingGlobals.

Создание взаимодействий для объекта


Теперь, когда вы знаете, где искать необходимые для импорта файлы, откройте Import Semi Global в меню Tools > Object Tools > Import Semi Globals. У вас появится небольшое окно с раскрывающимся списком. Из этого списка выберите PaintingGlobals и нажмите Scan. После некоторого раздумья список заполнится множеством элементов. Снимите все галочки (Uncheck all), поскольку практически все файлы из отмеченных, в данный момент нам не нужны. Нам нужно найти файлы, которые относятся к меню опций. Если вы опуститесь в самый конец списка, то увидите их – это файлы Pie Menu Strings и Pie Menu Function. Отметьте галочкой только эти два файла, а затем нажмите Import. Если у вас появится окно с вопросом о том, действительно ли вы хотите сохранить изменения, нажмите Yes.

Создание взаимодействий для объекта


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

Создание взаимодействий для объекта


Теперь ваше меню опций готово (если вы клонировали объект с имеющимися в нем Pie Menu Strings и Pie Menu Function, то начинайте изучение взаимодействий с этого места).
Откройте Pie Menu Strings для просмотра. Обратите внимание, что некоторые строки, в том числе и View, уже заполнены. Не вносите пока никаких изменений. Просто нажмите кнопку Add String и дайте название своему новому взаимодействию, например My New Interaction. Сохраните изменения (File > Save).
Учтите, что вы установили описание меню только на одном языке, в данном случае, на английском. Чтобы установить другой язык отображения, воспользуйтесь раскрывающимся списков и измените значение для каждого меню. Если же вы хотите, чтобы выбранный вами язык отображался во всех версиях игры, то нажмите кнопку Default Lang Only.

Создание взаимодействий для объекта


Теперь откройте файл Pie Menu Functions. В левой части, там, где отображаются плагины, вы увидите список всех доступных в игре взаимодействий с объектом, и на данный момент, это опция View (Посмотреть). Выделите это взаимодействие и нажмите Add. В конце списка появится копия взаимодействия «View». Убедитесь в том, что у вас выделена именно копия взаимодействия и в правой части окна, в раскрывающемся списке Pie String ID выберите только что созданную копию взаимодействия. Название взаимодействия, в левой части окна, должно измениться. Теперь обратите внимание на дополнительные возможности взаимодействия в правой части окна в поле Flags. Здесь вы можете установить такой параметр, как возрастная категория сима, которой будет доступно данное взаимодействие. Установите галочки напротив Adults, Elders и Teens (т.е. по нашему замыслу, данное взаимодействие с объектом будет доступно пожилым, взрослым и подросткам).
Обратите внимание, что в строке Autonomy установлено значение 0х32, которое позволяет, не зависимо ни от чего, выполнять персонажам это действие. Здесь изменять пока что ничего не нужно.
И наконец, установите значение Guardian BHAV – 0х0. О назначении этой опции будет рассказано несколько позже.

Создание взаимодействий для объекта


Запомните значения, установленные в полях Action BHAV и Guardian BHAV, которые указывают на действие «Посмотреть», поскольку в этих полях содержатся все значения скопированного нами ранее взаимодействия. Таким образом, когда вы будете в игре выбирать новое взаимодействие, оно будет выполнять ту же функцию, что и начальное взаимодействие. Сохраните все изменения (File > Save) и проверьте свой объект в игре. Теперь, при появлении меню опций, у вас должно отображаться новое взаимодействие.

Создание взаимодействий для объекта


2. Добавляем взаимодействие в новое меню.

Не смотря на то, что меню опций на данный момент отображается в игре, новое взаимодействие работает точно также, как и скопированное ранее. Создание одинаковых взаимодействий – совершенно бессмысленное занятие, поэтому настало время добавить что-то новое.
Выделите в правой части окна (в Resource Tree) Behaviour Function (BHAV). Вы увидите содержащиеся в этом файле две функции – Function Init и Function Main. Сейчас нас не интересует их содержимое, поскольку данные функции используются в других частях объекта. Щелкните правой кнопкой мыши по Function Init и из появившегося контекстного меню выберите Clone. Новый файл появится в конце списка, и именно его мы будем использовать для хранения нашего нового взаимодействия. Выделите этот файл. У вас все должно выглядеть так, как на рисунке ниже.

Создание взаимодействий для объекта


Первое, что нам сейчас необходимо сделать – это изменить имя файла. В строке Filename измените имеющийся текст на Interaction – Come do stuff. Сохраните изменения (File > Save). Теперь выделите первую (только первую) строку в BHAV. На данный момент в ней должна содержаться информация следующего рода: 0: [semi 0x2000] Function – Init. Когда вы выделяете файл, то его значения отображаются справа, во вкладке Instruction Settings. Это как раз те параметры, которые нужно изменить, чтобы сделать новое взаимодействие.
Далее, во вкладке OpCode есть маленькая кнопка со стрелкой. Нажмите на нее и через некоторое время появится окно Resource Chooser, содержащее в себе несколько вкладок в верхней части. Перейдите на вкладку Primitives. В этой вкладке находятся все стандартные взаимодействия движка SimAntic, т.е. все имеющиеся в игре. Выберите в этом списке действие, которое обозначает конкретное направление движения – Go To Relative Position и нажмите кнопку Ок. Значение добавится в поле OpCode с параметром 0х001В и описанием команды Go To Relative Position.
Go To Relative Position представляет собой примитивное взаимодействие, сообщающее персонажу направление движения. Но чтобы взаимодействие работало корректно, необходимо сделать еще кое-что. Немного ниже от окна OpCode будет ряд полей Operands. Значения, вводимые здесь, придают взаимодействиям наибольшую детализацию. Установите во всех полях значение, равное нулю и у вас должено будет появиться описание следующего содержания:

Go To Relative Position (Location: In front of, Direction: Same direction; no failure trees: False, allow different altitudes: False)

Попробуйте поэкспериментировать и установите различные значения. Но наибольший интерес представляют третье и четвертое поля в блоке Operands. Например, вы немного поиграли, затем установили все значения обратно на 0 и изменили в четвертом поле значение на 4, то можете заметить, что ваш персонаж подходит к картине и встает перед ней.
Убедитесь, что в раскрывающемся списке True Target выбрано значение Return True. В раскрывающемся списке False Target должно быть установлено значение Return False. Данные параметры сообщают о том, что действие выполнено и можно приступать к другому. Но об этом будет рассказано более подробно несколько позже.

Теперь у вас есть ряд значений, которые будут отвечать за выполнение нового действия. Сохраните свой пакадж (File > Save).
В игре BHAV представляет собой число. И число для каждого BHAV – это уникальное число, которое вы можете увидеть в правой части окна, где расположен список файлов. Но сейчас наш BHAV относится к действию Function Int. При этом необходимо знать, что если у обеих функций установлено одинаковое число, например, 0х1000, то ни одна из функций не будет работать. Здесь можно провести аналогию: когда вы создаете объект, необходимо ему присвоить новый GUID, иначе новый объект, будет либо замещать какой-либо другой с таким же GUID, либо будет конфликтовать с ним. Точно так же обстоит ситуация и с взаимодействиями. Поэтому нам сейчас нужно изменить числовое значение нашего нового BHAV.
Удостоверьтесь в том, что у вас выбрано новое взаимодействие и откройте Resource Information. В появившемся окне вы увидите поле Instance. Выберите любое значение в диапазоне от 0х1000 до 0х1FFF и, убедившись, что оно не используется в других BHAV, введите в это поле. Нажмите commit и сохраните изменения (File > Save).

Создание взаимодействий для объекта


Ну что же, мы почти у цели и теперь нам необходимо соединить меню опций с новым взаимодействием. Для этого вернитесь в Pie Menu Functions, откройте вкладку plugin view и выделите строку с текстом, расположенную над ней. В окне настроек (Settings) есть два параметра взаимодействия - Action BHAV и Guardian BHAV. С помощью этих двух параметров происходит управление взаимодействием. В частности, Guardian BHAV используется для проверки возможности выполнения действия персонажем. Но пока что этот параметр нам не нужен, поэтому установите значение в поле Guardian BHAV – 0х0. В поле Action BHAV введите тоже значение, что и в поле Guardian BHAV. Нажмите Commit и сохраните файл (File > Save).

Создание взаимодействий для объекта


Теперь можно проверить объект в игре. При выборе нового взаимодействия ваш персонаж должен подходить к объекту. Если у вас все так и происходит, то поздравляем! Вы создали свое первое взаимодействие!

Создание взаимодействий для объекта


3.Повышение потребностей и эмоций.

Если вы продвинулись столь далеко и не остановились на достигнутых результатах, то это уже хорошо. Первые шаги всегда кажутся сложными. И сейчас, мы с вами подошли к тому, чтобы сделать объект еще более функциональным. Добавим к нашей картине возможность повышать потребности и настроение персонажей.
Откройте файл BHAV. Сейчас у нас есть только одна функция, которая отвечает за направление движения сима. Мы добавим несколько команд, которые будут выполняться при выборе взаимодействия My New Interaction.
Найдите флажок Special Buttons и установите напротив него галочку. В результате у вас появится ряд кнопок внизу экрана. Выберите первую команду из списка и нажмите Insert Via True. Обратите внимание, что появилась идентичная команда, и она должна быть связана с первой зеленой стрелкой.
Данные стрелки позволяют отследить игре правильность последовательности действий. Если более подробно, то зеленая стрелка сообщает игре, что первая команда была выполнена верно, можно приступать к выполнению второй. Красные стрелки, обозначенные буквой Е сообщают игре, что если первая команда была выполнена не правильно, выполнение второй невозможно. Это как раз то, что нам сейчас нужно.
Выберите вторую команду из списка и нажмите кнопку OpCode, чтобы открыть весь список примитивных действий.
Expression – чрезвычайно полезная вещь в OpCode, которая позволяет просматривать и редактировать все виды взаимодействий в игре. И сейчас мы будем использовать Expression для повышения одной из потребностей сима при взаимодействии с объектом.
Обратите внимание на окно Operands с небольшими полями. Справа вы увидите две кнопки: первая – с одинарной стрелкой, вторая – с двойной. Нажмите на кнопку с одинарной стрелкой и откроется окно Instruction Wizard. У большинства взаимодействий нет инструкций, но есть выражения. И с помощью Instruction Wizard вы можете автоматически заполнять поля и устанавливать нужные значения.
Установите в первом раскрывающемся списке значение My motive, во втором – Hyigene, в третьем - :=, в последнем списке выберите Literal, а в поле рядом введите значение 0x0064.

Создание взаимодействий для объекта


Если вы установите галочку напротив Decimal (except Consts), то увидите, что значение изменится на число 100. Фактически, значение 0x0064 = 100, поскольку в игре потребности могут обозначаться как -100 (минимальные) и 100 (максимальные).
Нажмите Ок и функция заполнится автоматически.

Создание взаимодействий для объекта


Нажмите Commit, сохраните файл (File > Save). Теперь можно испытать объект в игре. Теперь, когда ваш персонаж подходит к картине, у него должна повышаться потребность гигиены.

Создание взаимодействий для объекта


Попробуйте поэкспериментировать, добавить другие потребности или несколько сразу.

4. Создание анимации симов.

Эта часть самая сложная и трудоемкая из всего процесса создания взаимодействий. Вы научитесь делать так, чтобы ваши персонажи выполняли определенные действия.
Первое, что вам нужно сделать – это опуститься в конец списка своего взаимодействия и добавить новое и соединить их. OpCode этого взаимодействия – 0x6A, который означает анимацию сима (Animate Sim). Вы можете внести его вручную или выбрать из списка примитивных взаимодействий, как мы делали это ранее.
И так, введите эти значения в поля Operands:

00 00 00 20 00 00 81 00
00 0A 00 00 00 FF 00 00

Описание этой команды представляет собой очень большой текст:

[prim 0x006A] Animate Sim (Animation: [No AdultAnims: Private STR# 0x0081 file]:0x0000, No event tree, Flipped: False, Anim Speed in Temp 2: False, Interruptible: False, Start at tag in Temp 0: False, Trans to Idle: False, No Blend out: False, No Blend in: False, Flip Flag in Temp 3: False, Synch to last anim: False, Use controlling object as anim source: False, Not hurryable: False, IK Object: Stack Object ID, Priority: 0x00 (low))

Из этого кода нас сейчас интересует строка: Animation: [No AdultAnims: Private STR# 0x0081 file]:0x0000.
В этой части кода должна быть указана именно та анимация, которая будет выполняться. Но сейчас там указано, что не возможно найти Private STR# 0x0081 – параметр, который используется для обозначения вида анимации. Поэтому необходимо его проверить и вернуть.
Выберите Text Lists (STR#) из списка файлов и найдите переменную со значением 0x81. Если такой переменной нет, то именно поэтому код самой анимации ее не может найти. А значит, сейчас необходимо найти параметр Text List 0x81 в semi-global библиотеке.
Откройте semi-global библиотеку. Снимите все галочки, опуститесь в конец списка и найдите там STR #: Anims – Adult. Последним числом (перед закрывающей скобкой) будет 00000081. Это как раз той файл, что нам нужен. Импортируйте его и вы увидите в своем списке Anims Adult – анимацию, на которую ссылается наш код взаимодействия.

Создание взаимодействий для объекта


Поскольку вы импортировали это значение, то у него будет не правильный номер группы. Для этого вернитесь к списку, выберите 0х81 и на вкладке ресурсов измените Group на 0xFFFFFFFF. Нажмите Commit и сохраните пакадж (File > Save).
Теперь вернитесь назад к Animate Sim BHAV. Как видите, нужный код найден и анимация больше не жалуется на его отсутствие.
Но помимо этого, код в строке Animation: AdultAnims: Private STR# 0x0081:0x0000 требует значение Private STR# 0x0081:0x0000. До этого мы импортировали STR# 0x0081, но не обратили внимание на привязку действий. Вернитесь обратно к списку и вы увидите, что срока Anims Adult – пустая и нам нужно найти анимацию, которая там должна быть.
Сохраните свой файл (File > Save) и закройте его. Будем искать запрашиваемую кодом анимацию. Откройте файл:

C:Program FilesEA GAMESThe Sims 2TSDataResSims3DSims00.package


Этот файл содержит всю стандартную анимацию игры. Откройте файл Name Map.

Создание взаимодействий для объекта


У вас появится список всей анимации, имеющейся в игре. Здесь необходимо сделать отступление и сказать, что анимация, которая начинается с буквы:

- а – это анимация, выполняемая взрослыми симами;
- с – анимация, выполняемая детьми;
- t – анимация, выполняемая подростками;
- e – анимация, выполняемая пожилыми;
- o – анимация объектов.

Но если в названии анимации встречается цифра 2, то ее нужно рассматривать как действие, совершаемое в отношении других персонажей или объектов. Например, анимация, которая начинается на а2с будет означать действие взрослого по отношению к ребенку, а анимация, начинающаяся с а2о – действие взрослого по отношению к какому-либо объекту.
Для создания нашего взаимодействия мы будем использовать гавайский танец. Найдите в списке анимаций строку a-dance-hula_anim и скопируйте текст до _anim, чтобы в дальнейшем добавить его в наш объект. Закройте файл без сохранения.

Создание взаимодействий для объекта


Теперь откройте ваш объект и вставьте только что скопированный текст в строку 0х0000 списка 0х81.

Создание взаимодействий для объекта


Нажмите Commit и сохраните изменения в пакадже (File > Save). Теперь ваш сим должен исполнять танец хулы возле картины.

Создание взаимодействий для объекта


Попробуйте добавить анимацию, которая будет выполняться сразу же после окончания первой. Добавьте другое действие, но в строке списка укажите значение 0х81. Самый первый код в Animate Sim всегда подскажет вам какую именно анимацию необходимо найти. Не забудьте добавить анимацию в список и новое взаимодействие в BHAV.
Но прежде чем вы начнете экспериментировать, необходимо сказать, что некоторые виды анимаций могут и не работать и, если вы введете код разработчика, то увидите, что такая анимация вызывает ошибку IK Objects. В частности, анимация открытия двери микроволновки имеет специфические особенности и может не работать в совокупности с другой анимацией, а значит нужно искать альтернативные варианты.

5. Добавляем случайные действия и возможность принятия решений.

Пока не плохо, но объект, выполняющий постоянно одну и ту же функцию – слишком просто и скучно. Плюс ко всему очень важно уметь написать функцию, которая будет представлять собой последовательность выполнения действий, происходящих при различных условиях. У любого взаимодействия всегда должно быть несколько вариантов его выполнения.
Когда мы только начинали добавлять команды к взаимодействию, уже упоминалось про красные и зеленые линии, которые связывают действия вместе. Всякое выполняемое действие будет сопровождаться двумя значениями: истина (зеленая линия) и ложь (красная линия), т.е. в большинстве случаев зеленые линии сообщают о правильности выполнения анимации, а красные – о неправильности. Но необходимо знать, что в некоторых случаях они могут принимать обратные значения.
Один из самых простых примеров – это Coin Flip. Это глобальное взаимодействие, а значит, его нужно искать в списке Global, а не Primitives, которое не использует все значения. Так что вы можете добавлять и связывать их в конце вашего списка действий.

Создание взаимодействий для объекта


Coin Flip возвращает правильности действия 50% времени и неправильности действия тоже 50% времени. По сути, когда ваш персонаж выполняет действие, то первую часть времени он следует зеленой линии, а вторую часть времени – красной линии.
Не смотря на то, что у вас есть Coin Flip, нажмите на кнопку Insert via false. Используйте эту новую функцию для того, чтобы началась анимация танца. Теперь вернитесь к Coin Flip и нажмите кнопку Insert via true. Найдите анимацию для другого танца и добавьте ее. Установите значение True Target для Return True и False Targets для Return False.

Создание взаимодействий для объекта


Теперь, когда вы запустите ваше взаимодействие, часть времени анимация будет доступна и часть времени не доступна. Как только способ осуществления действия будет выбран игрой, оно продолжится до конечной точки. Если вы добавите еще одно действие, то оно начнется только тогда, когда будет выбран способ его реализации.
Добавьте действие в конце одного из способов используя зеленую линию true (green) и назначьте задание для выполнения. Запомните номер первой строки начала команды и вместо того, чтобы выбрать Return True или Return False, введите это число в поле True Target. Вы увидите, что зеленая линия от этой команды протянется у первой.

Создание взаимодействий для объекта


Теперь, когда вы запустите свое взаимодействие, то в первую половину времени оно будет выполняться одним способом, а вторую половину времени – другим. Отлично! Теперь наш объект может разными способами выполнять одно и то же действие.
Coin Flip не единственная команда, позволяющая задать разные способы выполнения действий. Expression – команда, которую мы использовали для повышения потребностей, тоже может использоваться для данных целей. Найдите в своем объекте команду Coin Flip и замените ее на Expression. Теперь с помощью Instruction Wizard отредактируйте код, чтобы он выглядел следующим образом:
[prim 0x0002] Expression (My person data 0x0011 (Body Skill) > Literal 0x0064)


Создание взаимодействий для объекта


0х64 – это шестнадцатеричное значение числа 100 (сим получает 1 пункт навыка на каждые 100 в этой области, за каждые 200 – 2 пункта навыка и т.д.). То есть, данная команда сейчас сообщает, что сим с помощью этого взаимодействия приобрел, по крайней мере, один пункт навыка тела. И если данное утверждение является верным, то будет зеленая стрелка, если оно является ложным – то анимация будет проходить по красной стрелке. Иными словами, если у персонажа уже есть 1 пункт навыка, то выполнение действия произойдет другим способом, в результате чего, он приобретет еще 1 пункт навыка.
И так, теперь у вас есть взаимодействие, которое опирается на различные условия, определяющие способ его выполнения. Попробуйте создать новые действия, основанные на других условиях.
Кстати, на заметку, если вы изменяете > with == это означает «равно …».

6. Избавляемся от ошибочных циклов.

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

Создание взаимодействий для объекта


Однако с использованием циклов есть несколько проблем: первая – это движок игры, вторая – возможность игрока продолжать использовать своего сима. Давайте рассмотрим каждую проблему.
Каждый раз, когда BHAV обрабатывается, он использует большое количество ресурсов. Например, если у вас есть цикл, который постоянно обрабатывается, то он может привести к зависанию игры. Поэтому разработчики игры создали правило, согласно которому, BHAV не должен затормаживать циклы. Если вы не хотите, чтобы из-за вашего объекта игра зависала или еще хуже того, вылетала, значит нужно дать игре возможность остановить взаимодействие на некоторое время, чтобы игра могла позволить другим взаимодействиям использовать BHAV-ресурсы. В теории все кажется очень сложным, но изменения, которые необходимо внести в объект, на самом деле, минимальны.
В какой-то момент, в самом цикле BHAV должен иметь возможность сообщить игре об остановке выполнения взаимодействия (анимации). И в этом случае можно использовать функцию Idle. Для этого перейдите к последней команде и добавьте новую – via true. Установите OpCode 0х0118, для первого операнда установите значение – 0х01, а для всех rext – 0. Нажимите Commit и сохраните изменения (File > Save).

Создание взаимодействий для объекта


И так, первая проблема решена. Но как на счет второй? Ведь как только сим начнет использовать наш объект, он не сможет остановиться. Значит, нужна команда, которая после завершения всего цикла действий, позволит ему самому остановиться.
Добавьте любую другую команду к циклу действий после Idle. Установите для нее OpCode 0х0119, который представляет собой глобальную функцию Notify (дословно – «ожидание действия»). Данная команда подобна тем, что отвечают за принятие решений. Она сообщает игре о необходимости остановить выполнение анимации. Если вы сделали все правильно, то у вас должна появиться линия, связывающая действия. В конкретном случае, линия обозначает, что если команда Wait For Notify ошибочна, то цикл действии должен продолжиться. Выберите команду Wait и установите False Target к первой команде цикла. Теперь установите True Target так, чтобы цикл возвращался к Return True. И если утверждение, заключенное в этих командах («мне нужно остановиться») верное, то игра заставит сима прекратить выполнять анимацию.

Проверьте объект в игре. Теперь вы можете отменить выполнение действия или дождаться, когда оно закончится самостоятельно.

7. Добавляем проверку доступа (защитная функция).

Наверное, вы заметили, что у некоторых объектов в игре не всегда доступны функции. Так, например, если ваш сим не устал, то у кровати неактивна функция «лечь спать». Точно также происходит и в случае с туалетом, когда у персонажа потребность максимально полная. Всему этому причина – ограниченный доступ к функции.
Часть такой информации встроена в само меню опций, например, как использование объекта различными возрастными категориями или гостями. В более важных случаях игра обращается к самому BHAV, чтобы узнать, разрешено использование объекта или нет. Такой BHAV называется Guard, что в дословном переводе означает «защита».

Создайте новый BHAV (скопируйте уже имеющийся в вашем пакадже объекта) и дайте ему имя Come do stuff TEST.

Создание взаимодействий для объекта


Теперь удалите первый BHAV – Come do stuff и для нового взаимодействия используйте Expression (OpCode 0x2), чтобы появилась команда

My motive 0x0007 (Hunger) >= Literal 0x0032


0x32 – это шестнадцатеричное значение числа 50 (помните диапазон от -100 до 100?).
Данный этап подобен тому, где мы задавали возможность принятия решений. И сейчас нам нужно, чтобы потребность сима в туалете пополнялась при определенных условиях. Выберите команду, зайдите в поле True Target и откройте раскрывающийся список. Вы должны увидеть функцию Return True. Как только вы ее выберите, у возникнет зеленая стрелка с буквой Т на конце. Если команда правильная, то она отправит игре сообщение о разрешении доступа к функции. Теперь выберите Return False для False Target – эта функция отправит игре сообщение о том, что необходимое условие не выполнено и функция будет не доступна. Нажмите Commit и сохраните файл (File > Save).

Создание взаимодействий для объекта


Теперь нам необходимо задать для меню опций какой BHAV будет использоваться для запрета и разрешения доступа. Для этого, откройте ваше меню и выберите файл, который вы только что добавили (Come do stuff TEST). Введите в поле Guardian BHAV число, изображенное на рисунке ниже. Защитная функция добавлена. Нажмите Commit и сохраните файл (File > Save).

Создание взаимодействий для объекта


Проверьте ваш файл в игре. Теперь, когда ваш сим будет пытаться использовать объект, игра «проверит» его чувство голода. И если оно будет выше 50%, то функция будет недоступна, а если 50% или ниже – будет доступна.

Если у вас все получилось, то осмыслите весь пройденный путь по созданию взаимодействия. Но прежде чем вы начнете делать что-либо еще, испытайте объект в игре, постарайтесь понять всю специфику действия. Когда информация немного уляжется и систематизируется, можно будет посмотреть другие туториалы и инструкции. От себя добавлю, что на сегодняшний день лучшим пособием может считаться сам максисовский код, который работает стабильно все время и именно поэтому считается самым хорошим вариантом для тренировок и креаторства.



Теги: симс 2

Автор: NieRR@

Публикатор: Dara_Savelly


Другие новости по теме:

  • Исправление самоссылающихся объектов
  • Создание объектов с помощью TSR Workshop
  • Объект, доступный на общественном лоте
  • Заимствование текстур из другого объекта
  • Добавление нового сабсета к мешу объекта