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

Вопросы по работе с SimPe

  • Автор темы Автор темы Kagero
  • Дата начала Дата начала
Я опять со своими вопросами хочу поприставать к знающим людям.
Собралась сделать арку на три клетки, клонировала из базовой игры арку на 1 клетку. Добавила 4 клетки по этому уроку. Клетки добавились (посмотрела в игре), но арка не ставиться на стену! все клетки подсвечены красным цветом и пишут "объект должен находиться у стены". Догадываюсь. что нужно что-то добавлять в BHAV-ах. Посмотрела подобную арку и увидела, что на каждую клетку там свой Function Init , а у меня в этом ресурсе только одна строчка.
Подскажите , что нужно сделать , чтоб арка вставала как положено. Как добавить Function Init ?
 
Всё разобралась! Если не возражаете напишу тут, чтоб не утерять информацию.
Нашла я эти спрятавшиеся BHAVы и поняла почему у меня не ставилась на стену арка с моими вновь добавленными клетками.
1. BHAVы нашла в ресурсе Object Functions (OBJf), для каждой клетки я добавляла новый ресурс методом клонирования. Вот как раз тут собака и была зарыта! и это уже второе ->
2. Клонировать нужно было не абы какой из уже существующих Object Functions (OBJf). Оказывается в таких объектах как арки, двери и подозреваю окна, клетки переднего ряда имеют в своих BHAVах вот такие значения - [prim 0x0002] Expression (My 0x000D (wall placement flags) Set Flag flag# Literal 0x0003 (wall required behind))
а клетки заднего ряда такие -
[prim 0x0002] Expression (My 0x000D (wall placement flags) Set Flag flag# Literal 0x0001 (wall required in front))
то есть (front/behind) спереди и сзади, вот если эти значения выставит неправильно , то дверь или арка не устанавливаются на стену (да и вообще ни куда)





!!! А теперь главный вопрос который остался не решённым - как всё таки добавить в арки/двери в BHAV функции init, ведь как я поняла в этих объектах иниты вызываются из глобальных (общих для всех сходных объектов), а что если мне нужно изменить что-нибудь в инитах? Изменить там (непосредственно в Object Functions (OBJf)) не возможно, нет кнопки сохранения. И я понимаю, что это и не нужно, так как изменилось бы в глобальных функциях. По этому подозреваю. что можно из глобальных функций как-то вытащить эти иниты и в них делать изменения. Но как!? и нужно ли будет как-то привязывать их к именно моей арке.
В общем мне нужно сделать чтоб проходили симы только по центральной клетке арки, а боковые заблокировать для прохода, по тому что боковые клетки будет занимать декоративный элемент.
-----
Поняла я как экспортировать иниты из глобальной (или полуглобальной) функции. В добавленных клетках (простых) всё понятно, добавила невозможность проходить по ним (это клетки левые - передняя и задняя). А вот в правых (а они видимо несут больше информации) не знаю какое значение писать в строке перед клонированной. По правильному, нужно писать следующее по порядку значение, но там не разберёшь что писать! Нужно ли делать сорт лист перед клонированием строки в ините, которую строку клонировать и что писать в поле True Target, и правильно ли я поняла, что нужно у всех добавленных инитов менять группу на 0хFFFFFFF ?
 
Последнее редактирование:
AdeLana, а арка работает?
Вот чего я не делал никогда в BHAV, так это замену на FF. Думаю, что это точно не нужно, но могу и ошибаться, я мало работаю с объектами, и клетку добавлял всего раз. Но я не понял, для чего вообще понадобилось добавлять последнюю строку:o
А зачем Вы добавили невозможность проходить через боковые клетки, при этом какие-то глюки были? Почему бы симам и не ходить через эти клетки, это же всё равно проход.

UPD: наклонировал арок и поэкспериментировал, вопрос о проходе снимается - поскольку в игре нет трёхклеточных арок, то проходными можно сделать только две клетки, ну то есть теоретически, если знать, как отредактировать инит, можно и третью, но я точно не знаю. У меня другой вопрос, почему Вы двухклеточную арку как шаблон не взяли? У неё две проходные клетки, всё же на трёхклеточную арку лучше больше прохода. Вот на эти бхавы в OBjf поправьте:
Action BHAV 0x2004 (1.0)
Action BHAV 0x2006 (1.1)

Пойду копаться дальше, может, ещё что интересное найду.
 
Последнее редактирование:
kazarin, да, арка работает.
На FF менять нужно , как я поняла, чтоб этот пакадж не являлся глобальным модом , тут написано, правда не для арок, по этому я и спрашиваю
"HINT: SimPE has a useful feature, called "Import Semiglobals"; if you use it, be sure to change the GroupID of the imported semiglobals to 0xFFFFFFFF, otherwise any change will apply to all the objects that use that semiglobal BHAV, and your object will act as a hack! "

Хочу добавить не возможность проходить через боковые клетки , так как это выглядит странным, когда проходят через визуально закрытые места. И ещё по тому, чтоб научиться делать подобного рода предметы, нужен опыт работы в инитах.

А последнюю строку добавляла, чтоб вписать свои параметры, на сколько я помню, таким образом вносятся нужные изменения в иниты. Тут Дюкаша меня учила как это делать.

Я сначала брала вообще за шаблон 1-клеточную. но там запуталась в добавлении клеток и взяла 2-х клеточную.
А 3-х клеточная есть, но во-первых она из какого-то аддона (не помню, по моему из сезонов), а во-вторых она двухэтажная.
Я боюсь, что если я поменяю BHAVы от 0.0 и 0.1 на BHAVы 1.0 и 1.1, не потеряется ли функциональность арки. Ведь в первых клетках содержится больше информации, чем во всех остальных.
 
AdeLana, по-моему, он и так не может быть глобальным модом, находясь в кастомном пакадже.
Эх, работе с инитами меня бы тоже кто научил. И вообще с бхавами.
Так можно же было поменять инит в первой строке, а не добавлять ещё один.
Чисто по моему наблюдению - больше нинформации не в первых клетках вообще, а в тех, что выделены под функционал, а там уже от объекта зависит:)
 
AdeLana, по-моему, он и так не может быть глобальным модом, находясь в кастомном пакадже.
Вот кто ж его знает! Мне с инитами тоже очень многое ещё не понятно, вот и пытаюсь всю информацию собрать во едино и хоть что-то понять)))
Посмотрела арку ссылку на которую Вы прислали, она склонирована из арки базовой игры и, как я поняла тоже добавлена клетка к ней. Но как тогда делать валл маск (чтоб дырка в стене была) на добавленную клетку не понятно! в пакадже всего две маски на каждую клетку по одной, а в трёхклеточной игровой 3 валл маск, тоже на каждую клетку по одной.
Вот и вопрос как это сделать! Ладно буду пробовать.
 
AdeLana, обычно глобальные моды должны иметь группу игрового скрипта, чтоб его заменять. Ну, то есть изначально быть реплейсментом.
Так ведь в той трёхклеточной как-то сделали. И мне теперь интересно:)
 
Ой, вы тут init'ы обсуждаете. А меня чего не позвали? Я init'ы люблю. :D Правда, единичковыми владею лучше, чем двушными, но все же. Я с этой работой в отделе аспирантуры и ординатуры, блин, вообще из жизни выпала. И еще неделю там буду. :( Так на чем застрял процесс?
Номера групп, конечно, не должны быть игровыми, иначе да, будет мод, заменяющий что-то в игре. В OBJf указывается, какой скрипт для данной клетки используется в качестве main'а, init'а и других важных функций. Если изначально предмет работает с глобальным или семиглобальным init'ом, а нужно перевести его на свои собственные, то в OBJf нужно подставить соответствующие номера BHAV'ов.
 
обычно глобальные моды должны иметь группу игрового скрипта, чтоб его заменять. Ну, то есть изначально быть реплейсментом.
В том и дело, что я вытащила эти иниты из бхавов семиглобалов OBJf, и вставила в мой бхав (моей арки), и конечно он имел группу семиглобала, тоесть если моя арка попадает в чью-то папку downloads, то все изменения которые я внесла в свой инит будут заменять игровые, если я не заменю группу на 0хFFFFFFFF. Ну я по крайней мере так поняла.

Дюкаша, очень рада, что ты присоединилась к нам! Я хотела написать тебе в лчку, но как-то постеснялась. Kazarin-а я по привычке беспокою в личку и он вроде не ругает меня, но к тебе вроде как ещё не удобно ломиться)))
Пришлось всё таки делать несколько вариантов арки, так как с трёх клеточной так и не разобралась. Во первых в инитах основных клеток, как там добавить строку, то есть как добавить и что писать я знаю, но какой порядковый номер присваивать я на могу понять. Нужно последний после предыдущего, а именно с этим я и не могу разобраться.
9f6fae74266c9605a28d50707764932c.jpg
Но это ещё не всё, я не поняла как добавить wallmask к вновь добавленной клетке, то есть клетка есть и она работает полноценно, но мне нужна дырка в стене! чтоб выглядела арка полноценно.
Ивсё же хотелось бы у тебя выяснить , как в такие сложные иниты добавлять строку, какой номер там писать?
 
Последнее редактирование модератором:
вытащила эти иниты из бхавов семиглобалов OBJf
Гм, это как? Взять иниты из числа семиглобальных BHAV'ов - это я еще могу понять, но "бхавы семиглобалов OBJf" - это что-то за пределами моего понимания. :)

Стесняться мне писать не нужно, другой вопрос, что я по работе две недели работаю в чужом отделе на другом конце Москвы параллельно со своей кафедрой и так устаю от этих мотаний туда-сюда, что у меня просто сил, да и времени не остается на моддинг. Сегодня вот один день отдыха, а с завтрашнего дня начинается вторая "веселая" неделя. Так что, боюсь, полноценно присоединиться куда-либо у меня пока не получится.
А с добавлением строки надо толкаться от смысла. Я так сразу не могу врубиться, чей это инит и какую функцию ты туда пытаешься добавить. Обычно в ините все строки выполняются просто последовательно, а по false замыкаются на error, но тут идет какая-то проверка (по GUID'у, что ли?), положительный результат которой в любом случае ведет на строки 8-9-10, а отрицательный (если ни та, ни другая проверка не вернули true) - на строку 12. Какую строку клонировать - совершенно неважно, важно, во что ты ее потом превратишь и к чему привяжешь. Если подразумевается, что проверка будет возвращать true, то, чтобы добавленная функция выполнялась, ее нужно привязывать к ряду 8-9-10, иначе функция не будет до нее добираться. Или же вовсе вставить ее до всех проверок, тогда она в любом случае будет выполняться.
 
Дюкаша, я наверное не правильно изъясняю свои действия и могу ошибаться в терминах. В общем вот, что я делала:
1 Ищу нужную клетку, это - 0.0, смотрю её экземпляр - (16811)
2 По номеру экземпляра ищу от неё OBJf, и в нём кликаю на строку Action BHAV
3 Открывается такое окно (как я думаю это и есть функцион инит от нужной мне клетки)
жму экстракт, закрываю это окно
4 Открываю в пакадже ресурс BHAV , жму на пустом пространстве и в выпадающем меню выбираю add, нахожу экспортированный инит, и добавляю его.
5 В ините меняю группу с имеющейся на 0хFFFFFFFF. Делаю сорт, кликнув на последнюю строку добавляю способом add, прописываю там нужные параметры, изменяю в предыдущей строке true на номер (или букву) по порядку, а в моей добавленной true - Return True.
Вроде всё.
А, да, прописывала я в двух боковых клетках невозможность прохода по ним, эти данные я брала отсюда, там в самом конце написано как редактировать бхав. Всё работало, симы перестали ходить через запрещённые клетки.
Правда с этой аркой пришлось расстаться, но не по причине проблем с бхавами-инитами. Как я писала раньше, не нашла способ добавить маску для выреза в стене, к новой, добавленной мной клетке.
 
Последнее редактирование:
AdeLana, я думаю, ты все правильно сделала, раз в плане init'ов все работало. Мне, конечно, сложно ориентироваться в такой терминологии, ну да ладно. :) Я вообще к Единичке привыкла, там семиглобальный init из OBJf не откроешь, они в другом файле лежат, хотя суть та же: OBJf содержит информацию о том, какие скрипты объект использует в качестве main, init и т.д., дает их номера. По номеру уже легко найти нужный BHAV.
А вот с масками я, конечно, не помощник. Если kazarin тоже не знает, как это делается, то нам надо добывать Джас, хотя бы ненадолго.
 
AdeLana, я наконец-то понял, зачем Вы добавляли эти ff!
Их не в бхав надо добавлять, ими заменяют номер группы - то, что Вы видите в дереве ресурсов в колонке "Группа". Ну или просто можно клонировать свой пакадж ещё раз и, если стоит галочка "Изменить ID группы", то группа сама заменится на FFFFFFFF.
Сорри, я всё ещё не поискал, какие данные в пакадже отвечают за проход:(
Kazarin-а я по привычке беспокою в личку и он вроде не ругает меня
А я должен?О_о Надеюсь, это Вы так пошутили...

Дюкаша, эх, захочет ли Джасана помочь. Наверно, ей симы уже неинтересны совсем, и ей даже заглядывать в них не хочется.
 
А я должен?О_о Надеюсь, это Вы так пошутили...
Конечно я шутила :o
Да, я имела ввиду номер группы нужно менять у тех инитов или бхавов (я так и не поняла что есть что), которые я сначала экспортировала, а потом добавляла в пакадж.
Но вот ведь дело в чём, оказывается ни чего подобного, не работает тот способ! клетка всё равно остаётся проходимой. Не знаю как получилось у меня сделать в первый раз, сделать добавленную клетку непроходимой, но теперь, в новой арке не получается.
Я ещё поищу информацию и покопаюсь в этом деле, правда времени нет засесть с этой конкретной целью, тоже работа, да ещё огород, дома бываю урывками. Но уж очень интересно где тут собака зарыта!
 
Да, я имела ввиду номер группы нужно менять у тех инитов или бхавов (я так и не поняла что есть что)
Init - это и есть BHAV, один из основных, без которых даже самые простые объекты не обходятся. BHAV'ы - это скрипты, управляющие поведением объектов, но если объект не должен ничего делать, кроме как просто стоять на лоте, то большинство скриптов ему не нужно, а вот init и main даже таким объектам нужны. Init задает свойства объекта - куда его можно и нельзя поставить (положить, повесить), что на него можно или нельзя поставить (в случае, если это какая-то поверхность), нужны ли ему стены с каких-то сторон и можно ли разместить его (каждую конкретную клетку) вплотную к стене той или иной стороной, можно ли по нему ходить, может ли он сгореть, можно ли его украсть и т.д. Main задает поведение объекта, которое в случае, если объект ничего сам делать не должен, заключается в бесконечном ничегонеделанье (Idle), повторяющемся циклом. Это было лирическое отступление. Более умные люди, конечно, объяснили бы более толково.
Но уж очень интересно где тут собака зарыта!
Я, честно говоря, так и не поняла, какой флаг ты ставила или снимала, чтобы симы не могли ходить через клетки. Я бы, наверное, поставила [prim 0x0002] Expression (My 0x0008 (flags) Clear Flag flag# Literal 0x0005 (allow person intersection)), хотя вот посмотрела - там еще есть какой-то флаг "can be stepped over". Шут его знает - может, его тоже нужно снимать. В Единичке такого флага вроде нет, там только allow person intersection. Надо бы глянуть, когда я немножко выберусь из этого дурдома по работе.
 
AdeLana, я тоже делал непроходимые клетки по этому тутору, у меня всё работало. Может, что-то пропустили? Про непроходимость в третьем пункте, где Do NOT Use Maya Model Footprint.
 
AdeLana, я тоже делал непроходимые клетки по этому тутору, у меня всё работало. Может, что-то пропустили? Про непроходимость в третьем пункте, где Do NOT Use Maya Model Footprint.
Вот и я думаю, что делая вторую арку, что-то пропустила, так как в работу включаюсь урывками и возможно невнимательность сыграла тут роль. Буду посвободнее проделаю всё снова, внимательно перечитаю все статьи которые я использовала. А то я как всегда собираю информацию из разных источников понемногу тут, там, а потом не всегда помню где что прочитала.
За объяснения про бхавы и иниты спасибо, а то я только примерное представление имею о них и в терминах путаюсь.
А флаг выставляла как написано в уроке Echo -
My 0x0008 Set Flag Literal Value 0x0008

The values to get this are:
OpCode: 0x0002
Operands:
08 00 08 00 FF 09 03 07
00 00 00 00 00 00 00 00
True Target: Return True
False Target: Return Error

Как правильно писал kazarin - "Do NOT Use Maya Model Footprint"
Но я попробую и "allow person intersection".
 
Последнее редактирование:
AdeLana, сегодня несколько часов сидел и сравнивал трёхклеточную арку с МТС со своей переделанной (проблема та же, не открывается проход в третьей клетке). Ширину и форму прохода в стене должны обеспечивать wallmasks, в работающей трёхклеточной арке добавлены дополнительные txmt, начинающиеся с 2, но ссылающиеся на текстуры с 1, явно из них клонированные. Но я не могу найти, в каком ресурсе идёт на них ссылка, хотя перерыл уже весь пакадж. Разница есть в следующих ресурсах: CT - Private Init - добавлены две строки, Slot File - добавлены два дополнительных Routing, Object - Bone Names - два дополнительных route_door, это отличия от моего пакаджа из арки "ВИП-Делюкс". Я всё это добавил, но клетка не заработала, клонирования пакаджа не помогли. Искал какие-нибудь туторы, вот тут есть тутор про окна, всё, что нашлось по wallmask, к этому уроку ещё есть темплейты окон. В другом разговоре я нашёл инфу, что не все окна, возможно, и арки тоже, правильно клонируются. Может, мне надо клонировать что-нибудь другое и посмотреть, как будет работать. Не знаю, поможет ли Вам всё это, но я решил написать, вдруг пригодится. Если будет время, завтра попробую на другом клоне.

UPD похожий вопрос из далёкого 2007 года. Дыра в стене обеспечивается маской и не функциональна, только внешне будет выглядеть широкой аркой. Мы копались в функционале, а надо было в текстуры смотреть. Экспортировал в свой пакадж текстуры из трёхклеточной арки, и у меня по бокам от прохода щели появились. Правда, всё равно енпонятно, как их расширить на то пространство, что у thejim07, но хоть что-то ясно. Всё, пошёл спать:)
 
Последнее редактирование:
А я погуглила про этот Do NOT Use Maya Model Footprint - таки да, он должен регулировать проходимость/непроходимость клеток. Любопытно, зачем понадобились такие сложности, почему перестали работать единичковые флаги, уж коли они по-прежнему существуют. Чай в Единичке симы тоже сквозь мебель не ходят, но безо всякой Майи. :D Вообще-то в Единичке вроде объекты по умолчанию непроходимые и наоборот проходимость надо специально устанавливать в init'е с помощью флагов. А в Двушке наоборот, что ли? Со этим всем надо разбираться. Я непроходимый единичковый объект на проходимый как-то заменяла, а вот наоборот не доводилось. И с дверями не экспериментировала.
AdeLana, если флаг не работает, то, возможно, ты что-то не так связала в init'е. Точно скрипт на него идет?
 
Назад
Сверху