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

Изменение функциональности предмета

  • Автор темы Автор темы Gilder
  • Дата начала Дата начала
Согда сим приходит на общественный лот, то заблокирован Build mode, а можно ли его разблокировать?
Разблокировать теоретически всегда можно, блокировка задается функцией Generic Sims Call: disable build and buy, нужно просто ее в нужном месте убрать или заменить на enable - не знаю точно, есть ли вообще необходимость в ней или можно просто снести. В Симс 1 во всяком случае заменяли на enable. Для каждого типа общ. лота были контроллеры, именно в них эта функция выключалась, а включая ее в них, хакеры делали патчи. Здесь не знаю насчет контроллера, но в частности видела я в расшифровке objects.package скрипт Sub - Load at Community Lot (Group = 7F0136DC, Instance = 2014) где есть эта функция disable. Где она есть еще (для общ. лотов) и есть ли - не знаю, но всегда можно сделать disaSims2 общую расшифровку objects.package и в ней поискать по названию функции.
Самое простое, хочется сделать диалог с иконками всех симов в "районе", как за это взяться я чего то никак не соображу подскажите люди добрые с чего тут начать.
Не очень поняла мысль. Ты имеешь в виду диалог типа телефонной книги для звонка знакомым симам, но только включающий всех симов в районе или что?

#6 Phone Book – Invite - Display the phone book dialog for calling one sim over. Returns neighbor ID of invitee in array0 at position 0.
Если вот это вот - это оно (хотя почему обязательно invite, есть же возможность и просто поговорить с выбранным симом...), то получается, что вывод в диалог именно симов и именно тех, кто знаком с текущим симом, задается в устройстве самого по себе примитива с определенными параметрами...
 
1)Generic Sims Call: disable build and buy это змечательно, а если вспомнить что где то тут "плавал" объект позволяющий симу без машины путешествовать в Comunity Lot то в принципе можно отправляться на застройку общественного лота вместе с симом, а если сюда еще и токен присобачить, и научитсья определять стоимость Comunity Lot-а, то открываются поистине невероятные возможности (есть у меня одна идейка).
2)
Дюкаша написал(а):
Ты имеешь в виду диалог типа телефонной книги для звонка знакомым симам, но только включающий всех симов в районе или что?
Да именно. Только вот чего то не выходит у меня такой диалог построить. У меня есть подозрение, что этот диалог использует массив данных, и следовательно он гдето отдельно составляется (возможно одной из стандартных функций) Дюкаша если у тебя уже сть такой диалог, не могла бы ты его куда нибудь выложить.

3)
#6 Phone Book – Invite - Display the phone book dialog for calling one sim over. Returns neighbor ID of invitee in array0 at position 0.
Да это то что нужно, но видишь ли мне кажется не все так просто, вобщем попробуй сма создать такой dialog, если получиться, то замечательно, если нет... то появляется array и это еще одно поле для "раскопок".
4)
Если вот это вот - это оно (хотя почему обязательно invite, есть же возможность и просто поговорить с выбранным симом...), то получается, что вывод в диалог именно симов и именно тех, кто знаком с текущим симом, задается в устройстве самого по себе примитива с определенными параметрами...
Не думаю, что все обстоит именно так... думается мне, что Invite dialog- просто название... а содержимое зависит только от того чего ты в массив напихаешь (единственное что... возможно, что скажем объектами которые этот диалог смоджет прочитать из массива являются только симы....).
 
Скрипт должен бы выдавать телефонную книгу со всеми симаим "района", а выдает ошибку "Error: Stack number out of range."Справка DisaSim выглядит так:
0: Local 0 := Stack Object; true: 1, false: error
1: Stack Object := 0; true: 2, false: error
2: Array Operation: Stack Object's Object Array: [STR# 0x118:0x0]. Operation: Clear contents of array.; true: 3, false: error
3: Array Operation: Stack Object's Object Array: [STR# 0x118:0x0]. Operation: Insert element to array from Local 1 to the front of the array.; true: 4, false: 7
4: Set to Next: Stack Objects Semi Attribute (6) := next object; true: 3, false: 5
5: Dialog: Phone Invite [Private STR# 0x12D:0x43], Cancel: [STR# 0x12D:0x60], icon: automatic; true: 6, false: error
6: Standard Exit(0); true: true, false: true
Что тут не так?

Скрипт должен бы выдавать телефонную книгу со всеми симаим "района", а выдает ошибку "Error: Stack number out of range."Справка DisaSim выглядит так:
0: Local 0 := Stack Object; true: 1, false: error
1: Stack Object := 0; true: 2, false: error
2: Array Operation: Stack Object's Object Array: [STR# 0x118:0x0]. Operation: Clear contents of array.; true: 3, false: error
3: Array Operation: Stack Object's Object Array: [STR# 0x118:0x0]. Operation: Insert element to array from Local 1 to the front of the array.; true: 4, false: 7
4: Set to Next: Stack Objects Semi Attribute (6) := next object; true: 3, false: 5
5: Dialog: Phone Invite [Private STR# 0x12D:0x43], Cancel: [STR# 0x12D:0x60], icon: automatic; true: 6, false: error
6: Standard Exit(0); true: true, false: true
Что тут не так?
 
Gilder, а строчка (node) в которой произошла ошибка какая? И откуда берется значение у Local 1 в третьей строке?
 
Shy прав....
Каюсь... в данном случае иду совершнно на ощупь... Просветите "слепца", есть какая нибудь информация об Array Operation-ах
Да и что Set to Next делает тоже не вполне понятно.
ДюкашаМ..да.. действительно с третьей строчкой я лопухнулся, она по false должна на 6-ю строку уходить
 
Set to Next - хорошая штука... Мы ее в Симс-колледже проходили. :D Что она делает? Гм, ну, вообще-то обычно перебирает по очереди все объекты (заданной категории, с заданным GUID'ом и др.)/всех симов (на лоте или в районе)/все тайлы данного объекта и т.д в зависимости от того, какие у нее параметры заданы: Set to Next (person), Set to Next (part of a multi-tile object)... Или как там это называлось? Не помню, давно с ней не работала, но там обычно по смыслу понятно, чего она делает. А вот что такое
Set to Next: Stack Objects Semi Attribute (6) := next object; true: 3, false: 5
я честно не знаю. Что такое Array Operation не знаю тем более.
 
Set to Next: Stack Objects Semi Attribute (6) := next object; true: 3, false: 5
это "два в одном". :) Точнее "две" (операции) в одной: переход к следующему объекту и присваивание id этого объекта шестому семиглобальному атрибуту.

С Array Operation я не экспериментировал, поэтому все что будет дальше -- мои домыслы основанные на анализе разных текстов. В Симс-2 у объектов кроме обычных атрибутов появились еще и атрибуты-массивы. Надеюсь, что такое "массив" знают все. У объекта таких массивов может быть несколько. Отличаются они по названиям, но т.к. из финальной версии игры многие строки выкинуты, мы видим "STR# 0x118:0x0". Array Operation нужна чтобы с этими массивами работать. Насколько я понимаю, операция "Clear contents of array" просто удаляет все элементы из массива, и делает его размер равным нулю. Операция "Insert element to array from Local 1 to the front of the array" вставляет элемент из "Local 1" во "front" массива. У массивов есть еще и "back", но какому из этих двух понятий соответствует больший индекс, я не знаю. Кроме доступа к "голове" и "хвосту" массива, можно организовать доступ к произвольному элементу по его индексу. Еще в Array Operation есть простейший поиск и сортировка.
 
Учитель, ты, как обычно, слишком хорошо думаешь о людях. :D Ладно, по крайней мере Gilder явно знает, что такое массивы, а я разберусь... Когда-нибудь. :D Если однажды сумею вылезти из полуглобальных атрибутов свадебного тортика и прочей чепухи. :D Вот какие отношения с массивами у всех остальных возможных читателей этой темы - судить не возьмусь.
А "домыслы" весьма интересные и правдоподобные. :)
 
Дюкаша дело в том, что как мне кажется изменять функчиональность The Sims 2 объектов скорее всего станут люди имеючие хотя бы отдаленное представление о программировании, а поскольку понятие массива - одно из основных и можно сказать краеугольных понятий в этом деле, то....
Однако, чтобы люди не мучались... вот лдно из определений массива
Массивы - это структура данных, которую можно рассматривать как набор переменных одинакового типа, имеющих общее имя.
 
Gilder, я боюсь, изменять оную функциональность у нас вообще никто не станет, кроме тех, кто уже это делает. Во всяком случае до сих пор в бой особо не рвались. Но поскольку мы все вынашиваем идеи развивать и развивать хакинг, да и судя по опыту из первых симов, где иной раз оочень далекие от программирования люди брались сами править, например, секс-кровать под секс в эротическом белье и т.п., надо быть готовыми ко всему. :D
Хотя, конечно, если они будут так же далеки от программировании и точных наук вообще, как я, то втолковать им вот такое определение - дело абсолютно гиблое. :D
 
Очередной раз вспоминаем азы

Очередной раз вспомнил о The Sims 2, и решил сотврить чего-нибудь на этом поприще.
Взял очередное зеркало (фактически последнюю версию того, которое в этой теме обсуждалось ранее) и решил сделать ему дополнительную функциональность. На этот раз зеркало должно при использовании добавлять своему владельцу пункты интересов (для начала я взял познания о моде, поскольку видимо развитие всех остальных направлений симского интереса можно будет добиться несложной модификацией одной и той же функциональности).
1) Так вот, после получаса мучений, я добавил вроде бы эту функцию, только теперь в игре зеркало при покупке отказывается вешаться на стенку и вообще каким бы то ни было способом закрепляться в купленном виде. Все это очень напоминает проблемы с Stack Object's flags Clear Flag in use которые были у объектов в первых симах. Возмоно у кого то есть соображения каким образом с такой проблемой можно бороться во вторых. Ежели окажется, что этой информации мало для решения проблемы, ближе к вечеру постараюсь выложить листинги BHAV-ресурсов да и сам объект.
2) С тем как делать симам новые карьеры я худо бедно разобрался, а вот как назначить объект Careee reward-ом для свежей карьеры, кто-нибудь знает?
Заранее спасибо
 
Сколько лет, сколько зим... Приветствую, Gilder. :) К сожалению, сейчас убегаю на работу и не могу глянуть на твое зеркало, но вообще-то функции для расположения после покупки вроде бы не должны быть связаны с функциональностью как таковой... А чего игра говорит, отказывась повесить зеркало?
 
Спасибо Дюкаша.
А игра вообще ничего не говорит, просто зеркало подсвечено красным внезависимости от того где его помещают.... обычно зеркала и картины (впрочем также как и двери с окнами) ведут себя таким образом кода пытаешься их разместить не на стене, а скажем посреди комнаты. Только в данном случае зеркало нигде не хочет оставаться в том числе и на стенке. Зеркало лежит здесь
А что до сепециальных функций расположения, думаю что они непричем, просто игра считает что еше не купленным предметом кто то уже пользуется, и не разрешает его поместить.... хотя может я и не прав
 
Gilder
Первое, нельзя использовать в BHAV'ах в качестве номера Instance числа 1, 2 и т.д. Они закреплены за номерами примитивов. Скорее всего, из-за этого твое зеркало и нельзя было повесить, init просто не срабатывал. Номера BHAV'ов у объектов должны лежать в диапазоне от 0x1000 до 0x1FFF.

Второе, исправь номера Group у всех ресурсов на 0xFFFFFFFF. Если оставить так, как у тебя, то твои ресурсы с другими (не 0xFFFFFFFF) номерами будут перекрывать ресурсы из игры, и это может послужить причиной разных глюков.

И наконец, зачем ты передаешь такой большой параметр в функцию Standard Exit? Тебе действительно нужно, чтобы объект был недоступен 6682 такта?
 
Его бы хоть на стенку повесить

1) Спасибо Shy.
Я проделал все вышеуказанные изменения и к сожалению это нисколько не помогло. И если переномервание Instance в человеческом диапазоне и изменение до нуля параметра Standart Exit просто никак не отразилось, то изменение Group на 0XFFFFFFFF сделало зеркало еще и прозрачно-невидимым. Таким образом мне так и неудается хотя бы повесить его на стенку.
2)Как я уже говорил я добавлял функцию (InterestUp) в уже отмодиффицированое зеркало и соотвктственно делал BHAV-рессурс клонировав уже имевшийся модифицированый ресурс SocialUp. При этом Исходный вариант вполне себе работал. Таим образом мне думается что возникший глюк происходит не из-за Goup и не из-за параметра Standart Exit поскольку в исходном предмете их значения были теми же, но объект работал.
Вот исходный объект, а это модифицированный
Возможно есть еще какие то причины невозможности хотя бы повесить этот объект на стенку... поскольку мне не удается даже этого, то соответственно говорить о том правильно ли он работает вообще пока не приходится.
 
Ооо, "сегодня очередь моя". :D Наконец-то я дорвалась до SimPE. :D

Gilder, проблемы с вешанием на стенку - все оттуда же. Init не срабатывает. Ты, небось, его номер поменял на что-нибудь не то. Не знаю, на что, т.к. то, что я скачала, было как раз с номерами 1, 2, 3, 4, но вообще-то у Init'а тут номер должен быть 0x1000, а у Main'а - 0x1001, ибо именно так прописано в Objects functions. Ну или там тогда должно быть прописано не так... Хороший ресурс этот OBJf, люблю его. :) Хотя и мало что в нем понимаю, а до Колледжа вообще туда не лазила. :D
В общем, на стенку-то оно вешается, а вот текстуры - м-да, что-то с ними не то. Впрочем, насколько я помню, с самим зеркалом и раньше было не то - в твоих прошлых экспериментах, но я лезть в этот вопрос не стала, т.к. в текстурах ничего не понимаю, а в моих собственных объектах их вообще не было, они нагло использовали текстуры от родных объектов игры... Но могу попробовать пошарить в этой области.
До изменения интересов я просто пока еще особо не добралась.
 
Мдя. В итоге на текстуры махнувши рукой и удаливши их вообще. Gilder, если нет желания оставаться "чистым хакером", :D то придется все-таки тебе разбираться, почему текстуры ведут себя не так, где-то за пределами этой темы, ибо вопрос о текстурах к ней по большому счету не относится... Если желание есть, то впиши в STR# под названием Model Name, во вторую строчку, то же самое, что там стоит у родного зеркала, т.е. в данном случае MirrorQuaint. После этого все ресурсы, относящиеся к внешности, можно вообще снести, зеркало будет использовать графику родного объекта.

Ну а изменение интересов вроде как работает, во всяком случае для тех, у кого их меньше 900. Для тех, у кого равно - что-то у меня пока ничего не прибавилось. Но в любом случае куда ж ты опять напихал столько Error?

0: Go To Relative Position: Location = In front of, Direction = Facing; true: 1, false: 1
1: Standard Entry; true: 2, false: error
2: Animate Sim: anim id A from Adult list (STR# 0x81:A), No Event Tree, IK Object My Attribute 0x0, low priority; true: 3, false: error
3: Animate Sim: anim id 7 from Adult list (STR# 0x81:7), No Event Tree, IK Object My Attribute 0x0, low priority; true: 4, false: error
4: Animate Sim: anim id 4 from Adult list (STR# 0x81:4), No Event Tree, IK Object My Attribute 0x0, low priority; true: 5, false: error
5: my person data i: Fashion (0x84) <= 900 (0x384); true: 6, false: error
6: my person data i: Fashion (0x84) += 100 (0x64); true: 7, false: error
7: Standard Exit(6682 (0x1A1A)); true: true, false: true

Это что-то совсем никуда. Мы ж вроде обсуждали уже не раз, что Error куда попало пихать нельзя. В анимации его не используют вообще, зачем ты его засунул в функцию сравнения - мне тоже неясно. Да и почему Go To Relative Position при неудаче должно идти туда же, куда при удаче, мне тоже не понять. Разве сим, не сумевший подойти к зеркалу, должен начать выполнять все эти упражнения где попало? :confused:
 
Дюкаша спасибо тебе огромное.
1) Действительно все нетприятности от Instance, поправил заработало (уже потом вспомнил, что однажды промахнулся и щелкнул на кнопку которая instance уникальным делает вот видать в таком непристойном виде и сохранил, а потом хорошим людям голову морочу).
2)По поводу Error-ов не ругайся. Этот объект еще не закончен, а отладчик реагирует либо на ошибки либо на всякую экзотику типа зацикливаний, и поскольку совершенно непонимая чего творится с объектом я надеялся выявить его воспиятие игрой хотя бы по реакции отладчика. Разумеется в готовом продукте такое количество error-овых тупиков - недопустимо, но он то пока далеко не конечный.
3)Текстуры вероятно ведут себя столь неподобающим образом потому что я скорее всего заменил на свою только одну(собственно это было сделано с одной лишь целью быстрее и проще находить это зеркало в игре), а остальные оставил от оригинала, таким образом при смене группы игра не может понять чего от нее собственно хотят.
4)
Да и почему Go To Relative Position при неудаче должно идти туда же, куда при удаче, мне тоже не понять.
Это я действительно зря ... хотя точно помню что какая-то логика в этом действии была... понять бы какая...
5)Еще есть такой вопрос... может ли предмет опрнделить нличие / отсутствие в инвентаре сима другого предмета с заданным GUID-ом? Да и ка это вообще все происходит... раньше кажется у сима в инвентаре могли жить только токены.... а теперь как? Т.е. исходя из того что сим может засунуть к себе в корман хоть холодильник, хоть гроб, хот плиту надгробную, либо токенов столько же сколько и предметов (что мен представляется маловероятным), либо игра научилась складировать в корманы сима не только токены но и еще нечто, либо появился механизм динамического создания токенов.
 
Gilder, нет, к Error'ам у тебя подход какой-то очень странный и неправильный. Отладчик реагирует на любую скриптовую ошибку, если уж она есть, а вовсе не только на Undefined Transition или Too Many Iterations, но он при этом только по одной конкретной ошибке инфу и дает. Зачем лепить дополнительную кучу ошибок умышленно, чтобы отладчик спотыкался еще и на них? Ведь инфа о том, что при попытке использования зеркала симом со слишком высоким интересом в области моды вылезет Undefined Transition, никак не обогатит тебя в отношении других возможных ошибок в этом скрипте. Что в данном случае будет Error - и так очевидно, из скрипта... Всегда лучше писать скрипт изначально по возможности правильно, если в нем ошибка из тех, что ловятся отладчиком, она у тебя и так поймается. А если ошибка не из числа таких, то куча других лишних ошибок едва ли поможет ее поймать... Вообще, скрипты удобнее "прощупывать" диалогами, чем error'ами, мы с тобой уже как-то раз об этом говорили. Диалоги не прерывают скрипт и не ресетят предмет почем зря, а по какой линии пошло выполнения кода в том или ином месте - по ним всегда можно определить... Данный случай, конечно, было диалогом не прощупать, но тут и ошибка вообще была совсем не скриптовая. Все-таки правильность нумерации и связь разных ресурсов между собой - это как бы основы основ... Могу отправить тебя в очередной раз почитать "Некоторую документацию..." by Shy. :D Сохранилась она у тебя? ;) Правда, я не уверена, что там есть про OBJf... Но про нумерацию точно есть, в самом начале, только в Симс 2 она шестнадцатерична.
Вообще, я бы это твое интересоприбавляющее действие с зеркалом написала по-другому. Если уж оно называется "Увеличить интерес в области моды", то логично, чтобы симы, которые в этом увеличении не нуждаются, не выполняли бы действие вообще. А у тебя получается так, что они сперва почем зря кривляются перед зеркалом, а потом вдруг выясняется, что кривлялись-то зря, интересам прибавляться некуда. :D Поэтому я бы поставила проверку
my person data i: Fashion (0x84) <= 900 (0x384); true: 6, false: error
в начало. Если у сима интерес уже слишком высокий, то можно бы было, например, выдавать окно с сообщением об этом, ну или просто отправлять скрипт на False, хотя с сообщением лучше. Если же интересы есть куда прибавлять, тогда уже есть смысл кривляться перед зеркалом. :D

Насчет токенов вопрос интересный, но для меня слишком сложный, а Магистр появится не раньше понедельника. Могу только сказать, что токенов действительно едва ли может быть столько же, сколько предметов, потому что, насколько мне известно, скачанные предметы тоже можно класть в инвентарь. Вообще, я уже тут где-то цитировала что-то по поводу токенов в Симс 2, но это было еще задолго до NL. Вот здесь еще есть инфа про Manage Inventory (на английском), но тоже доNL'овая, по крайней мере в начале. Всю тему я просто не читала. Но там много чего полезного написано в отношении токенов и действий с ними в Симс 2 вообще, если тебе это интересно. Там идет речь про воспоминания, например... Где можно почитать про запихивание в инвентарь любого предмета - я не знаю, на данном этапе могу только посоветовать тебе порыться в расшифровке NL'ового Objects.package, хотя наверняка об этом тоже где-то что-то написано...
 
Вопрос к спецам: можно ли в принципе создать новое действие для сима

Вопрос:
Можно ли самому создать новое действие/движение.
Движение самого сима (например игра в баскетбол) или
движение-взаимодействие с другими симом/симкой ?
Короче, можно ли как-то впихнуть новую анимацию...?

Заранее благодарю тех, кто помогает.
 
Назад
Сверху