• Уважаемый посетитель!!!
    Если Вы уже являетесь зарегистрированным участником проекта "миХей.ру - дискусcионный клуб",
    пожалуйста, восстановите свой пароль самостоятельно, либо свяжитесь с администратором через Телеграм.

Изготовление симс объектов на конкретном примере (с использованием IffPencil)

  • Автор темы Автор темы Gilder
  • Дата начала Дата начала
Реанимация BHAV-f

1)Спасибо за совет Shy попробую.
А почему бы не написать "my person data Logic Skill += 100"? Ну
2)Да собственно потому, что хочется разобраться как работать с локальными переменными (это ведь азы любого программирования), кроме того, если честно то не догадался.

Gilder добавил [date]1075648364[/date]:
1) Тут возник вопрос (даже несколько) по поводу Heder-а
a)Version - Версия чего?
b)Type- Тип чего?
c)Number of parameters – Параметры чего?
d)Number of local variables- Это как я понимаю, количество локальных переменных используемых в данном скрипте (в целом). Достаточно ли ввести в это поле 1, чтобы получить одну локальную переменную? Всегда ли в этом случае эта переменная будет иметь “имя” Local Variable 0, или просто первая прописанная переменная (например Local Variable 256)
e)Revision number – Кто это и зачем?
2) В Makin’ Magic есть 2 города, один нормально-человеческий, а второй волшебно-магический, и у них разная валюта. Вот думаю сделать объект, что-то вроде обменного киоска, как списывать (ну видимо и добавлять) денюшку со счета сима я уже прочитал ((Alter Budget (Substract (price) as misc experience)). А вот как обстоит в этом смысле с волшебными монетками, есть ли что-нибудь похожее, и если да, то надо ли при этом добавлять в карман кучу токенов-монеток (подозреваю, что Ingredient- Currency из TokenMagic.iff, как раз, монетка и есть). Я сам еще не рылся, так идея в голову пришла, так что если кто-нибудь что то по этому поводу знает напишите пожалуйста, да и я может чего накопаю и поделюсь.
Спасибо.
 
Новый или старый

Как делается новый пост, а как добавляется в старый, я вот например собирался это (предыдущее) «добавление» отдельно повесить, а не вышло, может кончно и к лучшему, но хотелось бы все-таки знать?
 
1) а) версия BHAV. Обычно стоит 8002, менять без необходимости не надо.
b) Типы не знаю для чего могут быть использованы, но мне кажется они не имеют значения.
c) Число параметров, принимаемых и обрабатываемых этим BHAV'ом. Параметры передаются через заголовок функции (например, (priv: ) MyFunctoin (01 00 02 00 00 00 00) передаст параметр 0 равный единице и параметр 1 равный двойке) или через Temporary Storage n (То есть, если мы присвоим к примеру Temporary Storage 0 Assign to: 2000 и вызовем функцию, то в ней Parameter 0 будет равен 2000). Максимальное количество параметров 4. В этом поле нужно указать число используемых параметров.
d) Если указать одну переменную, то будет использоваться только одна, и именно Local Variable 0. Если при этом попытаться использовать какую-нибудь переменную превышающую n-1, то будет ошибка.
 
Спасибы и Вопросы

1)BHAV заработал.Спасибо за ценный совет Shy
2)Спасибо за полезную информацию Шогал.
3)Нельзя ли поподробнее о Temporary Storage?
4)Вопрос о Revision number остается открытым.
5)Кстати к вопросу об "удалении" симов с панели интерфейса, кто нибудь знает, как происходит смерть сима (ведь иконки мертвого знакомого на панели друзей вроде бы быть не должно)? Значит она как-то удаляется.
6)Тему все таки надо переименовывать, но как то не очень понятно на что она похожа, поэтому хотелось бы услышать ваше мнение по данному поводу. Не то чтобы у меня воображения не хватает, но (изначально) предпологалось, что это - тема "одного предмета", а я за это время использовал информацию из этой темы для переделывания трех, и это-прекрасно. Однако тенденцию дальнейшего развития темы я поймать не могу, так что как говориться "любая помощь приветствуется".
P.S. И Спасибо Вам Всем!!!
 
Gilder
5) инструкция:
Stack Object ID Assign to: my person data neighbor id {2>0|31|1280|4618)}
Generic Sim Call (Remove from family) {1>6|0|0|0}

Два нюанса. Первый: перед выполнением generic sim call мы запихиваем в стэк Neighbor ID сима (можно my person data, можно stack object person data, в зависимости от того хотим ли мы убить взаимодействующего с объектом или другого сима). При этом текущий объект в стэке меняется, но вернуть прежний можно если затолкать его в переменную, а затем после этого скрипта прочитать обратно из переменной.
Второй нюанс: после выхода трупик сима исчезнет. Чтобы этого избежать, нужно сразу же после Generic Sim Call выполнять следующую строчку:
my person data lingering house number Assigh to: Global (from simulation) Current House {2>67|10|1280|1554}
Обрати внимание, что если эту строчку пытаться кинуть не на me, а на stack object, то будет ошибка, потому что в стэке в это время лежит не ID объекта, а ID соседа. Обойти это можно, если заменить my person data на neighbor's person data {2>67|10|1280|1568}.

4) Revision Number сто процентов ни на что не влияет.

3) Сейчас у меня к сожалению нет времени объяснять, но потом может быть объясню, если ты сам не догадаешься, что Temporary Storage делает...
 
Temporary Storage

Temporary Storage, по видимому (английскому) - Временоое хранилище, а вот чего в нем хранят, и какими характерными особенностями этот самый Storage обладает?
 
(показывает Gilderу ремень) Внимательно прочитал, что тебе Шогал написал?
Параметры передаются через заголовок функции (например, (priv: ) MyFunction (01 00 02 00 00 00 00) передаст параметр 0 равный единице и параметр 1 равный двойке) или через Temporary Storage n (То есть, если мы присвоим к примеру Temporary Storage 0 Assign to: 2000 и вызовем функцию, то в ней Parameter 0 будет равен 2000).
Вопросы - это, конечно, хорошо, но иногда надо и ответы читать ;)

Постороннее замечание по поводу твоего бхава - пользуйся Rewrite, оно переупорядочивает строки так, чтобы номера переходов шли "в линеечку". В результате можно читать код, а не спагетти разбирать (0->13->1->9 ...)

А сообщения "склеиваются", если интервал между их отправлением - меньше двух часов.
 
Я тоже немного прокомментирую...

Про Temporary Storage лучше всего думать, как про переменные, которые сохраняются при выходе из любого конкретного скрипта, в отличие от локальных переменных. Всего их восемь штук, с номерами от 0 до 7 (локальных переменных можно сделать гораздо больше). Еще они используются в некоторых примитивах.

Версия BHAV определяет формат этого ресурса. Изменять ее не надо. В The Sims Online в некоторых скриптах используется версия 8003. Отличается от 8002 тем, что заголовок ресурса больше на один байт, поэтому IFF Pencil 2 такие ресурсы не читает.

Знание Revision number имеет смысл только для разработчиков игры с их фирменным редактором. Вероятнее всего, при каждом редактировании скрипта это число увеличивается на единичку.
 
Валютные вопросы

I.Прошу прощения Jasana, Шогал, Я по видимому неточно сформулировал вопрос, меня интересовало, чем параметр Temporary Storage отличается от локальной переменной. По поводу Rewrite–каюсь, признаю, постараюсь исправиться.
II.СпасибоShy. Именно тот ответ, которого я ждал.
III. По поводу обмена валюты, стал рыться в magicstarterkit.iff,
И в функции |Manage Inventory ( 1.x Animate Object in 2.0 )| №51.
Спешу поделиться наблюдениями, и задать вопросы.
Насколько я понимаю, с параметрами этой функции дела обстоят следующим образом:
Номера HEX-ов (с лева на право)
1)Действие (Add\ Remove\ Find)
2)Тип (видимо токена) (DATE\ GIFT\ SIMDATA)
3) Неуверен, но мне кажется, что этот HEX отвечает за токен или его количество (stored in Temp0 \ of count stored in Temp0)
4)Что это такое я понять не могу (но попробуйте поставить вместо 00 например FC или FF), если кому-нибудь известно, напишите пожалуйста.
Последние 4 Hex-а отвечают за GUID токена.
Таким образом:
a)Чтобы добавив токен успешно его использовать, нужно знать его тип (собственно я и стал всве это расписывать, после того, как добавил Монеты в инвентарь к «ингредиентам» (тип-08), вместо «других магических предметов»(тип-07) и не смог этими монетами расплатиться).
b)Остается еще HEX номер 4.
IV. Когда сим тратит деньги над его головой возникают циферки (для обычных денег на синем фоне, для монет на малиновом) обозначающие потраченную сумму. Я тоже так хочу, но нигде не нашел (или не разглядел) Как это делают.
Спасибо.
 
Gilder, тем, что локальная переменная никак не влияет кроме "положить туда значение" и "прочитать оттуда значение". А Temporary Storage при вызове функции действует как параметр. То есть, ты присваивал к примеру
Temporary Storage 0 Assign to: 10.
Потом тебе захотелось запустить функцию, и ты запустил ее. Если теперь в функции использовать Parameter 0, то он будет равен 10. С локальными переменными такой фишки не получится.
IV. Циферки - это My person data Money Amount over Head. Если ему присвоить значение, то на некоторое время над головой сима появятся циферки с этим значением. Но звук монеты нужно вызывать отдельно через Play Sound.

Шогал добавил [date]1075755074[/date]:
Shy, у меня есть вопрос - в стринге можно поставить $Local:0 и оно заменится на Local Variable 0. Но для Temporary Storage и для Parameter я пробовал различные комбинации, но ни одна из них не сработала. Какойнабор символов заменяется при выводе на значение Temporary Storage и какой для параметра? (лучше дай полный список всех строк которые знаешь, а то нигде в инете я не могу этого найти)
 
Мечты о малиновом

1)Спасибо Шогал. Про | my person data Money Amount over Head|
я сам только что допер. А по поводу Temporary Storage отдельное спасибо.То есть насколько я понял, Temporary Storage-это что-то вроде глобальной (межскриптовой) переменной.
2)Возвращаясь к «надголвным» цифрам. Циферки появляются на синем фоне, а хотелось бы чтобы на малиновом (или малиновый цвет – это глюк?), как такое сделать?
3) Про | my person data ..… over Head|. Не эта ли функция отвечает за появление над головой симов «смайликов», «сердечек», «+» и
«-» при разговоре?
 
Шогал, про стринги, которые в message передаются, на hackersresource было довольно много... куда оно уползло (сайт перекраивался) - не знаю, но подозреваю, что сюда.
Gilder, ты туда тоже сходи, там много вкусного :D
А вот что я себе сохраняла давным-давно:
$Job:x:y
Display the job name for job type stored in Local Variable x and promotion level stored in Local Variable y.

$JobDesc:x:y
Display the job description for the job type stored in Local Variable x and promotion level stored in Local Variable y.

$JobOffer:x:y
Display the job offer for the job type stored in Local Variable x and promotion level stored in Local Variable y (note: I think y is always set to 0)

$Local:x
Displays whatever number is in Local Variable x.

$Me
The current sim's name.

$Neighbor
The name of the sim currently in the stack.

$Object
The name of the object currently in the stack.

$TimeLocal:x
Outputs the value in Local Variable x in the proper language format for a hour.

For example, let's say I wanted to display a dialog for "Bob" showing his job, time he goes to work and how much he makes. Local variables are set up as follows...

Local Variable 0 = job type, 1 = promotion level, 2 = current pay, 3 = job start time.

STR#:1
Hi $Me! You are a $Job:0:1, you make $$Local:2 and you go to work at $TimeLocal:3. Your job consists of $JobDesc:0:1.
 
Gilder,
2) Это авторская задумка Maxis, и поэтому поменять цвет не получится
3) Нет, за появление других служит Set Balloon/Headline.

Шогал добавил [date]1075794541[/date]:
Jasana, спасибо ;) Только этот список не полный - где-то в каком-то стринге мне попадалась странная комбинация $NameAttrib:3, но почему-то она работала лишь в этом скрипте, и причем выдавала имя какого-то определенного сима :lol:
 
Gilder
III. В третьем байте задаются разные флаги, в четвертом -- номера используемых Temp'ов. Вместо метода "научного тыка" можно поступить по-другому. Вначале изучить файл sst.txt в котором описан скриптовый язык для Pencil'а, а потом разбирать script.txt. Там конечно комментариев маловато, но понять можно.

Шогал
Полный список ключевых слов такой:
$Neighbor
$FamilyAssets
$Family
$Me
$Object
$Job
$Local
$TimeLocal
$JobOffer
$Grade
$JobDesc
$NameLocal
$NameAttrib
$NeighborLocal
$Attrib
$CatalogLocal
$FameTitleLocal
$TokenNameLocal

Первые 11 есть и в The Sims 1.0, остальные семь к ним добавлены позже. Я разбирался с ними когда-то, но до конца это дело не довел.
 
Очередной раз спасибо

1)Спасибо за ссылку Jasana, там действительно много, так много, что я даже почти захлебнулся. А в совокупности с не русским языком, все это море информации довольно сложно к восприятию. Так что я наверное продолжу задавать свои вопросы здесь, а ежели на той страничке написан ответ (значит я его просто пока там не нашел), просто стукните маня ссылкой на него пожалуйста. А то разбираться я буду долго, а интернет почти весь вышел.
2)Спасибо Шогал.
3) Спасибо Shy. Да действительно, в 4-ом HEX-е задаются номера Temp-ов, но вот если подставить в него FF или FC (я это делал при остальных Hex-ах |00|07|03|FF|EC|1B|E8|99| ) функция видоизменится, в ней появится еще одна пара скобок (Use что-то–не помню что). Посмотри, может узнаешь что это такое. А sst.txt я еще раз просмотрю, может и вправду прошляпил что-то.
 
Очередной невежественный вопрос

Нельзя ли поподробнее узнать, о функции №44 (Animate Sim). Насколько я понял, она отвечает за «проигрывание» симом некой анимации (движения). Хотелось бы узнать:
1)О модификациях этой функции.
2)О ее параметрах.
3)О том откуда она берет эти анимации
4)О том как она это делает
5)Можно ли эти анимации просмотреть до того как впишешь их в объект.
Наверное по этому поводу будет еще масса вопросов, но чтобы задавать вопросы нужно знать хотя бы некоторые ответы. К сожалению script.txt мне пока не очень по зубам. Очень трудно все это читать и осмысливать, со временем надеюсь втянуться, и тогда дуратских вопросов станет меньше.
 
Gilder
3) Из стринга, указанного в OBJD. Там есть Animation table ID# (обычно он равен 129). Открыв этот ресурс ты увидишь список анимаций.
1) Можно проделать анимацию в обратном порядке, можно также backwards и background, но я не разбирался с этим вопросом.
4) Функция начинает анимировать сима, и если анимация не закончилась идет по ветви false (ее обычно замыкают саму на себя), а когда кончилась - по ветви true. Также она возвращает в Parameter 0 (или в другую переменную которую ты для этого указал) какой-то return event, но я никогда его не просматривал (очевидно, это номер кейфрейма анимации).
5) Некоторые анимации можно просмотреть в программе SimShow, но только стандартные (для симс 1.0).

Шогал добавил [date]1075837681[/date]:
Shy, то-то я думаю - почему этот чертов $NameAttrib глючит ;)
 
Manage Inventory

1)Еще раз по поводу функции |Manage Inventory ( 1.x Animate Object in 2.0 )| №51.
Например:
Manage Inventory ( 1.x Animate Object in 2.0 ) (Add token of type with object GUID:99e81bec of count stored in Temp 0.) {flags = 0, 0, 0, 0}
Можно ли сделать так чтобы функция брала GUID токена из Temporary Storage или из какого-нибудь другого вида переменных, параметров, а не указывала его в явном виде ?
Что-то вроде:
Manage Inventory ( 1.x Animate Object in 2.0 ) (Add token of type with object GUID stored in Temp1 of count stored in Temp 0.) {flags = 0, 0, 0, 0}(эту строчку я выдумал сам, во всяком случае даже если она существует на самом деле, я ее не видел. )
2)Большинство функций имею вот такой фрагмент {flags = 0, 0, 0, 0}, не могли бы вы расказать, что за флажки такие? Зачем? Как ими пользуются?
3) Спасибо Шогал. Открыв (129) ресурс (книжного шкафа), я увидел список строчек примерно следующего содержания (A20_get_book, это как я понимаю ссылка на фрагмент анимации), а вот откуда она берет этот самый A20_get_book, я так и не понял. Может быть мои представления по этому поводу вообще в корне неверны? Не мог бы ты пояснить?
Спасибо.
 
Можно ли сделать так чтобы функция брала GUID токена из Temporary Storage или из какого-нибудь другого вида переменных, параметров, а не указывала его в явном виде ?
Боюсь, что нет - во всяком случае, ни разу такого не видела :(
В подтверждение этого - вспомни о том, что гуид занимает 4 первых хекса из восьми, а настраиваемые аргументы (когда можно поставить просто число, my / stack object attribute, local variable и т.д.) - один хекс с начала и один хекс с конца.

3) Это имя файла анимации, точнее, с таким именем файлов два - *.cfp, *.cmx. Лежат либо в GameData\Animation\Animation.far, либо в GameData\Skins - обязательно в папке.
Самому анимацию делать - с помощью SimPose...
 
Defaults

1)СпасибоJasana.
2)Не могли бы кто нибудь написать величины по умолчанию для Локальных переменных, параметров, Temporary Storage и т.д?
3)my / stack object attribute это кто такие?
Спасибо.
 
Назад
Сверху