Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 15 из 21

Тема: Как сделать, чтобы предмет не "падал" вместе со стеной?

  1. #1
    Старожил
    Лучший симс-дизайнер интерьера. Осень 2008
      "Лучший симс-дизайнер интерьера. Осень 2008: Спальня, Кабинет"
    Аватар для Shoukeir
    Регистрация
    04.02.2005
    Адрес
    Бейрут
    Сообщений
    242
    Спасибо
    я - 176; мне - 87

    Вопрос Как сделать, чтобы предмет не "падал" вместе со стеной?

    Кто-нибудь знает, что надо сделать, чтобы объект, висящий на стене, не пропадал, когда убираются стены? Что нужно подправить в пакадже?

  2. #2
    Группа удаления Аватар для Isselda
    Регистрация
    19.12.2004
    Адрес
    Москва
    Сообщений
    163
    Спасибо
    я - 0; мне - 0
    По-моему, это в глобалах менять что-то надо...
    www.gameisland.ru
    Когда Господь бьет собственные рекорды - это называется чудеса! © Жорж Жироду

  3. #3
    Старожил
    Легенда miXei.ru
      "Самый полезный участник раздела The Sims 2004"
    Аватар для Shy
    Регистрация
    08.10.2002
    Сообщений
    701
    Спасибо
    я - 0; мне - 57
    Предметы пропадают вместе со стенами, если в init'е предмета устанавливается флаг hide for cutaway, т.е. где-то в соответствующем bhav'е или в функции, которая из него вызывается написано "My flags Set Flag hide for cutaway". Если эту строчку удалить или перед выходом из init'а написать "My flags Clear Flag hide for cutaway", то предмет не будет исчезать вместе со стенами.

    Похожая проблема обсуждалась во времена Симс-1.

  4. #4
    Старожил
    Лучший симс-дизайнер интерьера. Осень 2008
      "Лучший симс-дизайнер интерьера. Осень 2008: Спальня, Кабинет"
    Аватар для Shoukeir
    Регистрация
    04.02.2005
    Адрес
    Бейрут
    Сообщений
    242
    Спасибо
    я - 176; мне - 87
    Shy, а конкретнее не подскажешь? Я в этом плохо разбираюсь (честно говоря, ни в зуб ногой).
    В пакадже есть behavior function (2 штуки: Function - Main и Function - Init). Менять надо оба или один? Где там значения флагов? Что писать в True target и False target? Если открыть Bhav Opcodes, там есть 4 раздела: Primitives, Global, Painting Globals, Private. Нигде нет ничего про стены.
    Или менять надо behavior constant? Но там вообще только цифры.

  5. #5
    Старший Sims-модератор
      "За вклад в развитие форума 2004", "Народный Модератор 2004", "Лучший старший модератор 2004", "Лучший модератор раздела The Sims 2004", "Лучший модератор miXei.ru 2005", "За вклад в развитие форума 2005", Народный старший модератор 2007, Выбор администратора: "Симс Игры" лучший раздел 2007 года, Лучший старший модератор miXei.ru 2008, "За вклад в развитие форума 2008", Лучший старший модератор miXei.ru 2009, Душка форума 2009
    Аватар для Дюкаша
    Регистрация
    02.10.2002
    Адрес
    г. Москва
    Сообщений
    13,406
    Спасибо
    я - 0; мне - 1,279
    Shoukeir, вообще-то стоило быть чуть-чуть разобраться в основах, прежде чем пытаться что-то самостоятельно править. А то можно наделать дел...
    В Opcodes не должно быть ничего про стены. Primitives, Global, Painting Globals, Private - это виды функций: примитивы, глобальные, семиглобальные (в данном случае семиглобальные функции картины) и приватные. My flags Set Flag hide for cutaway относится к примитивам, в частности к примитиву под номером 2, который называется Expression. Ну а конкретно про стены или про что-либо другое, а так же про то, что с этими стенами (точнее, в данном случае со флагом, их касающимся) делается, функцию заставляют говорить ее параметры, их можно увидеть в строке Operands. Номер операции (в данном случае Set Flag) задается в шестом байте. Для Set Flag это 9, для Clear Flag - А, т.е. 10.
    В принципе, для того, чтобы просто убрать этот флаг из init'a, все эти тонкости знать необязательно, но все же лучше иметь понятие о том, что именно ты делаешь. А вообще, чтобы благополучно удалить строку из скрипта, надо посмотреть, какие из других строк этого скрипта имеют на нее переход и перенаправить их на другие строки. Разумеется, не как попало, а так, чтобы скрипт не выдавал ошибки. В init'ах обычно в этом плане все очень просто - все строки по ветви True переходят по порядку друг на друга, а fals'овая ветвь у них замыкается на Error, поэтому можно просто перенаправить строку, следующую до My flags Set Flag hide for cutaway на ту, что идет после нее, т.е. изменить ее (предыдущей строки) значение True Target на значение True Target самой строки My flags Set Flag hide for cutaway. Чтобы точно хорошо видеть, что куда идет, нужно перед любой правкой нажать кнопку sort - строки выстроятся по порядку. Когда изменишь значение True Target, увидишь, что зеленая стрелка со строки над My flags Set Flag hide for cutaway стала указывать на ту, что находится ниже нее. Теперь "лишнюю" строку можно удалить, но можно и оставить - скрипт ее читать уже не будет. А вообще, по-моему, в SimPE можно просто удалять строки и следовавшие на них переходы тогда автоматически переходят на следующую строку. Но не люблю я этот "слепой" способ - он только в самых простых случаях годится.
    Ну а что касается того, где именно искать и менять... Вообще, на предмет "оба или один" - вроде бы ответ очевиден. Менять надо там, где найдешь соответствующий флаг. Обычно этот флаг имеет место быть в init'е, потому, соответственно, и менять надо init. Но, если не ошибаюсь (что вряд ли) init у картин в Симс 2 семиглобален, так что менять его придется для всех картин сразу. В принципе, можно, конечно, сделать и так, чтобы у какой-то отдельной конкретной картины был свой init, и изменить только его, но с этим придется немного повозиться - импортировать init в ее файл, изменить его и потом изменить его номер в ресурсе OBJf (Object Functions). Теоретически, наверное, можно сделать и патч, меняющий таким образом свойства одной картины, если речь идет о "родной" картине... Тогда придется включить в него соответствующий OBJf и измененный init... Не пробовала. А вообще, чтобы изменить таким образом свойства всех картин сразу, нужно просто экспортировать семиглобальный init картин из Objects.package в отдельный файл, внести в него соответствующие изменения и положить его в Downloads.
    Семиглобальная Function - Init для картин имеет Group = 7F18E0F0, Instance = 2000, строка My flags Set Flag hide for cutaway находится под номером 6 (после применения функции sort). Если хочешь увидеть, что это действительно она, надо использовать disaSim2 - мы о ней говорили в теме "Изменение функциональности объекта", в SimPE названия флагов не видны, там будет написано просто My 0x0008 Set Flag Literal Value 0x000B.
    Ну а behavior constant (BCON'ы) - это константы. Некие постоянные значения, используемые в различных скриптах. Там и должны быть только цифры, и в данном случае они абсолютно отношения к делу не имеют.

    Ага, глянула на клонированную картину... Init у нее как бы свой, но все, что в нем есть - это вызов все того же полуглобального init'а. Однако OBJf при таком раскладе должен указывать на init самой картины. Т.е. поменять соответствующее свойство одной какой-то картины, если она устроена так же, как эта, даже проще, чем я думала. OBJf можно не трогать, просто изменить ее собственный init. Вместо вызова полуглобальной функции, вставить туда свои по желанию.

  6. #6
    Фанат Симс Аватар для &nika&
    Регистрация
    08.09.2006
    Сообщений
    907
    Спасибо
    я - 43; мне - 243
    Jasana, я вот не пойму ни как...что нужно клонировать из картин или каких других настенных,
    чтобы не исчезало на боковой стене? Понимаешь о чем я? Я уже, ну все в игре пересмотрела...
    либо исчезают, либо становятся прозрачными при приближении....

  7. #7
    Старожил
    Легенда miXei.ru
      Sims-дизайнер, Выбор администратора: "Симс Игры" лучший раздел 2007 года
    Аватар для Jasana
    Регистрация
    16.03.2003
    Адрес
    Киев, Украина
    Сообщений
    2,379
    Спасибо
    я - 9; мне - 158
    Клонировать что угодно, и поменять Init bhav - это будет быстрее всего.
    Исчезание при опускании стен задается строкой:
    [prim 0x0002] Expression (My 0x0008 (flags) Set Flag flag# Literal 0x000B (hide for cutaway))
    Прозрачность при приближении задается строкой:
    [prim 0x0002] Expression (My 0x0028 (flag field 2) Set Flag flag# Literal 0x0004 (Obstructs View))

    Если тебе не нужно, чтобы объект так работал - найти соответствующую строку, и заменить Set Flag на Clear Flag (выбрать строку, найти справа такую кнопку - скрещенные молоток и гаечный ключ, кажется - нажать, выбрать нужное). Не забыть коммитнуть, конечно. Поменять все иниты, если их несколько.

  8. Пользователь сказал cпасибо:


  9. #8
    Фанат Симс Аватар для &nika&
    Регистрация
    08.09.2006
    Сообщений
    907
    Спасибо
    я - 43; мне - 243
    Jasana, я нашла это...но у меня в результате добавился в Бхаве еще один функцион инит....хотя все получилось, ответь должен ли добавится еще один инит...?
    ....при запуске игры (синяя табличка того, что находится в папке донвлоадс) появилась запись, что объекты имеют полуглобальный приоритет...но работают в игре, как я хотела....не исчезают, наверное я, что-то сделала не так...
    захожу в BHAV, в Function - Init, затем в view BHAV (синим написано), затем нахожу твою строку, в новом окне, кот открылось...и там внизу есть Import to package, нажимаю туда и в симпе, в моем объекте появл еще один Function - Init...и там с пом гайки и правлю его...другого способа я не нашла....все получилось...но вот эта надпись про приоритет над игрой...наверное чего-то не сделала...так как не знаю...

  10. #9
    Старожил
    Легенда miXei.ru
      Sims-дизайнер, Выбор администратора: "Симс Игры" лучший раздел 2007 года
    Аватар для Jasana
    Регистрация
    16.03.2003
    Адрес
    Киев, Украина
    Сообщений
    2,379
    Спасибо
    я - 9; мне - 158
    Я думаю, нам пора переехать в эту тему
    Ты сделала неправильно, но я не знаю, где об этом можно почитать по-русски, поэтому придется писать самой
    О бхавах. Бхавы бывают трех типов, в зависимости от места их хранения:
    1) приватные - в "расшифровке" СимПе. в строке вызова такого бхава, добавляется префикс [priv] - это личные бхавы текущего объекта, видимые только ему; имеют инстансы от 0x1000 до 0x1FFF
    2) семиглобальные - с префиксом [semi] - это частично-общие бхавы - они видны всем объектам, у которых в GLOB ресурсе прописан именно этот семиглобал; имеют инстансы от 0x2000 до 0x2FFF
    3) глобальные - с префиксом [glob] - это общие бхавы - они видны вообще всем объектам; имеют инстансы от 0x100 до 0x0FFF
    Например, глобальный бхав 0x10C 'MT - Init - Wall Placement' - общий для всех объектов, вызывается многоклеточными объектами и расставляет флаги, чтоб нельзя было стену между клетками построить. Это одинаковый код для всех, нет смысла его дублировать.
    А у обеденных и кофейных столов - две разные функции 'Function - Surface' для того, чтобы поставить что-то на стол (0x2008 в TableCoffee_Globals и 0x2009 в TableDining_Globals), и ты никак не можешь вызвать "кофейную" функцю из обеденного стола, и наоборот, потому что они чужие семиглобалы не видят. Читать дальше...
    (На самом деле, ты можешь импортировать "чужую" функцию и сделать ее приватной, но это будет уже не то - она будет независима от своего семиглобала, и если Максис в новом аддоне изменит семиглобал - импортированная функция эти изменения не "подхватит".)


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

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

    Вот ты как раз поменяла семиглобальный инит, импортировав его в свой пакадж. Теперь твои изменения распространяются на все объекты из этого семиглобала (картины, наверное?). Естественно, игра ругнулась

    Правильный способ - добавить строку в приватный инит. Потому что строчки вызываются последовательно, и, как бы это объяснить... если у тебя есть последовательно два присвоения:
    А = 1
    А = 2
    то они последовательно выполнятся, и в конце А будет равно 2. Аналогично с флагами, если сначала ставится Set Flag (hide for cutaway) (пусть даже в другом бхаве, вызываемом из этого), а ниже Clear Flag (hide for cutaway), то флаг будет очищен и предмет "падать со стенами" не будет.

    Теперь перейдем, наконец, к тому, как это сделать
    Семиглобальный инит - тот, у которого инстанс больше 0х2000, и группа не 0xFFFFFFFF - удали, не надо конфликты плодить. Открывай приватный Инит.
    Если в нем несколько строчек - нажми Sort. Максисовский код часто выглядит как "спагетти" - зеленые линии (переходы) перепутаны, и непонятно, какая строчка вызывается раньше, какая позже; и неиспользующиеся строчки (на них нет ни одного перехода, показывается жирной черной стрелкой) могут быть.
    Найди и выдели последнюю использующуюся строчку.
    Поставь галочку Special Buttons - снизу добавятся 10 кнопок.
    Жми Insert Via True - это добавит еще одну строку, копию предыдущей, и сделает переход на нее, так что строчка обязательно вызовется.
    Меняй Opcode на 2, если нужно, жми кнопку визарда (молоток с гаечным ключом), и собирай нужный тебе Clear Flag.
    Само собой, не забудь коммитнуть и сохраниться

  11. #10
    Фанат Симс Аватар для &nika&
    Регистрация
    08.09.2006
    Сообщений
    907
    Спасибо
    я - 43; мне - 243
    Jasana, я вчера все-таки домучила, все получилось...ну второй способ вроде сработал...я с пом кнопки add, добавила еще один, выбрала в Opcode число 0002 в нов окошке, в графе Primitives(вроде так называется) поставила ему то имя, кот ты мне написала (Clear), с пом гайки.....и нажала Inqe'sInitLinker.....и все...вроде все как надо...получилось метод все-таки тыка сработал.....
    А то, что ты мне написала...я все прочту и сохраню....а вот интересно теперь, если Clear...это чтоб на стене не исчезал...то есть и другие бхавы что-то другое значащие...может где кто выложил обозначения?
    Ответь правильно ли я сделала...просто скажи да или нет...
    это все в принципе тоже самое, что ты мне написала или все-таки нет...хотя не падает вместе со стеной...вот это мой способ выглядит так

    а твой так(у меня)

    обрати внимание где почеркнула красным способы отличаются...
    я-то переделала, мне все понятно, но вот 2 разных способа работают одинаково,то наводит на сомненья, поэтому и спрашиваю

  12. #11
    Старожил
    Легенда miXei.ru
      Sims-дизайнер, Выбор администратора: "Симс Игры" лучший раздел 2007 года
    Аватар для Jasana
    Регистрация
    16.03.2003
    Адрес
    Киев, Украина
    Сообщений
    2,379
    Спасибо
    я - 9; мне - 158
    Цитата Сообщение от AMA
    если Clear...это чтоб на стене не исчезал...то есть и другие бхавы что-то другое значащие...
    Не Clear, чтоб на стене не исчезал, а флаг hide for cutaway отвечает за исчезание или неисчезание со стеной, и может быть Set или Clear, как и все другие флаги.
    У флагов, вообще, названия на английском, и по названию обычно понятно, за что они отвечают. Например, флаг allow object intersection означает, очевидно, что другие объекты могут быть поставлены в ту же клетку, что и этот (если он стоит на полу, не занимает слот). Но вообще флагов очень много - четыре группы разных размеров, flags, flag field 2, placement flags и movement flags - все перечислять долго. Может, все-таки воспользуешься словариком?
    Вообще, если ты хочешь менять бхавы, даже только иниты, то имеет смысл читать по ним туториалы - на английском, от Echo.
    Цитата Сообщение от AMA
    а твой так(у меня)
    Это не мой, ты что-то спутала. Так, как показано на втором скриншоте, могло получиться только если изначально у тебя была только строчка 0 - с семиглобальным инитом - и у нее true target был 0, а не FFFD. Так не бывает - таких косяков максисовцы не оставляют (и объект бы не работал, выдавал бы ошибку Too many iteractions в debug mode (а в обычном, наверное, лот "заморозился" бы). Наверное, ты что-то лишнее сделала - должно было получиться то же самое, что на первом скриншоте.

  13. #12
    Фанат Симс Аватар для &nika&
    Регистрация
    08.09.2006
    Сообщений
    907
    Спасибо
    я - 43; мне - 243
    Jasana, да это я что-то напутала...я воспользуюсь словарем и почитаю тутор обязательно, но только ты мне ответь, ( судя по твоему ответу, то правильно...я переживаю...)
    1.Значит правильно ли выглядит первый скрин?
    2. Результат у меня положительный, все работает....понимаешь?
    Ответь да или нет...и все...а я буду дальше думать... спасибо.

  14. #13
    Старожил
    Легенда miXei.ru
      Sims-дизайнер, Выбор администратора: "Симс Игры" лучший раздел 2007 года
    Аватар для Jasana
    Регистрация
    16.03.2003
    Адрес
    Киев, Украина
    Сообщений
    2,379
    Спасибо
    я - 9; мне - 158
    Цитата Сообщение от AMA
    1.правильно ли выглядит первый скрин?
    Да.

  15. Пользователь сказал cпасибо:


  16. #14
    Фанат Симс Аватар для &nika&
    Регистрация
    08.09.2006
    Сообщений
    907
    Спасибо
    я - 43; мне - 243
    Jasana, а какую строчку надо.... если цветок свисающий...или лампы...например, кот исчезают при приближении, чтоб не исчезал?.....Туториалы Echo еще не смотрела...так-как сейчас нет возможности, поэтому подскажи пожалуйста.....

  17. #15
    Старожил
    Легенда miXei.ru
      Sims-дизайнер, Выбор администратора: "Симс Игры" лучший раздел 2007 года
    Аватар для Jasana
    Регистрация
    16.03.2003
    Адрес
    Киев, Украина
    Сообщений
    2,379
    Спасибо
    я - 9; мне - 158
    Я же уже ответила на этот вопрос, вместе с предыдущим
    Цитата Сообщение от Jasana
    Прозрачность при приближении задается строкой:
    [prim 0x0002] Expression (My 0x0028 (flag field 2) Set Flag flag# Literal 0x0004 (Obstructs View))

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Как найти и удалить "битый" предмет или скин, нежелательный патч
    от Донна Анна в разделе The Sims 2: Решение технических проблем
    Ответов: 569
    Последнее сообщение: 29.06.2017, 10:38
  2. Картинки к сериалу - как сделать, чтобы?..
    от Оладушка в разделе The Sims 2: Создание сериалов
    Ответов: 371
    Последнее сообщение: 30.08.2014, 19:30
  3. Как сделать, чтобы сим мог носить несколько масок?
    от NNNNatali в разделе The Sims 2: Изготовление скинов и предметов
    Ответов: 21
    Последнее сообщение: 23.10.2005, 17:35

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •