AleksTirex, Ещё вопрос: Если у меня на базовом объекте висит скрипт, в котором объявлена локальная переменная, то что будет с этим скриптом и переменной при создании экземпляров этого предмета в Скайриме? Скажем, есть кольцо, на нём скрипт с переменной, в которой сохраняется некий параметр актёра одевшего это кольцо. Дальше я делаю в кузнице такое же кольцо и одеваю второму персонажу. Что произойдёт со значением данной переменной в первом кольце на пальце первого персонажа?
Добавлено (28 Ноября 2013, 13:03) --------------------------------------------- Ещё одна проблема. Я кольцом меняю инвентарь персонажа. Кольцо передаётся в процессе обмена шмотками через меню обмена. Передаётся кольцо, а изменение инвентаря происходит скриптово и не отражается на инвентаре, пока не выйти из этого меню и не зайти туда снова. Нельзя ли обновлять его принудительно или хоть выкидывать принудительно из меню обмена предметами, чтобы игрок был вынужден зайти туда по-новой?
В этом месте совсем не страшно. У меня в талморском посольстве почти ничего и нет, кроме желания его исправить, я ведь в любой момент могу откатить всю ячейку в дефолт. А дефолтные баги там заключаются в разрозненности навмешей и даже пропущенных пустых местах.
А с меню вещь важная. Дело в том, что при отбирании кольца у персонажа, он одевает несколько шмоток в свой оутфит и они на самом деле из инвентаря пропадают, а вот из меню - нет. При наведении на них мышки - вылет. Вот пытаясь понять природу этого вылета я и стал фантазировать на тему что происходит при создании экземпляра кольца с тем же скриптом
Я их не удаляю. Кольцо меняет оутфит и персонаж сам одевает эти шмотки на себя. Если бы я мог закрыть этот инвентарь, все бы проблемы решились. Например, получла непись кольцо и, как одела, так инвентарь и закрылся. Или получила, но одела после закрытия, тоже годится. После повторного открывания там было бы только то, что надо.
Опасны те вылеты, которые были устранены прежде, чем была найдена их причина. В моём случае - причина - показывание в инвентаре шмотки, которой там уже нет. Естественно, при выборе её будет вылет.
AleksTirex, Ну, видны они становятся потому, что при одевании кольцо их переводит в инвентарь. При замене текущего оутфита на пустой шмотки не пропадают, а переходят в инвентарь. На самом деле, проблемы возникают при снимании кольца, а не при одевании. Обнаружилось интересное свойство игры: при возвращении старого оутфита он не добавляется персонажу, а подходящие шмотки из инвентаря становятся оутфитом, удаляясь из инвентаря. Это позволяет, например, дать такое кольцо Лидии, она даст забрать её броню. Дальше её броню можно зачаровать и улучшить, вернуть ей и отобрать обратно кольцо. При отбирании кольца она признаёт эту уже улучшенную броню за свой оутфит и носит её всегда, даже будучи уволенной, в отличие от тех посторонних шмоток, которые ей дал игрок. Вот тут бы с отбиранием кольца закрыть бы меню обмена и диалог, и всё было бы тип-топ. Обычно все примеряют броню на себя, а мне довольно безразлично, что на мне, а вот окружающих я одеваю Обходных манёвров можно много придумать, но пока все попадаются такие, что чем-то надо поступиться. Например, то же самое можно делать заклинанием, а не кольцом. Но там хуже, так как нет двух событий - одевания и снимания, придётся делать 2 заклинания. Кроме того, колечки я уже симпатичные сделал и на другой слот и на другой палец. Вариант с неиграбельностью оутфита меня и в родной игре раздражает: что же это получается, вроде как персонаж носит шмотки, а вроде, как их у него и нет
AleksTirex, Так это же не я открываю инвентарь! Это стандартный диалог обмена шмотками со спутником. Чтобы дать кольцо я должен подойти и предложить обменяться вещами. У меня же нет обработчика этих событий. Есть только скрипт на кольце.
Изменение репутации для пользователя Myprism
MyprismOffline
Сообщение №636
| Тема: Вопросы по текстурированию
написано: 28 ноября 2013, 16:17
| Отредактировано: Myprism - 29 ноября 2013, 00:33
Можно ли переделать хорошее качество текстур на более простое
Ну конечно! Вот наоборот нельзя Если там слишком большой размер, то надо уменьшить в 2 раза. Результат зависит от качества текстур. Некоторые от уменьшения не страдают
AleksTirex, в лоб не получается. Какой идентификатор надо туда вставить? На EditorID ругается не зависимо от того, в кавычках он или нет. ID в шестнадцатиричном коде тоже не проходит. Собственно говоря, я не понимаю, зачем нужно это условие, ведь в событии снятия кольца оно всегда должно быть одето. Я попробовал закоментарить это условие, но тогда все события по сниманию кольца не работают. Но я не понимаю и синтаксиса кода: gotoState("waitState") , наверное, переход на state waitState, а тогда там и не должно ничего выполняться. Надо с синтаксисом разбираться, а жизнь так устроена, что прерываться надо в самый интересный момент - завтра улетать надо на несколько дней, а я ещё не собрался
какие угодно, но обычно это должны быть степени двойки: 1х1, 2х2, 4х4, 8х8, ....... 128х128, 256х256, 512х512, 1024х1024, ....... Любой программист или электронщик эти степени наизусть помнит, даже если его разбудить среди ночи. Я написал "обычно", так как бывают и специальные типы текстур, даже не имеющие форму квадрата, например, у текстуры окружения длина относится к ширине как 6:1. Размеры текстур являются степенью двойки для быстрой обработки их видеокартой и компактного помещения в видеопамять. Я не удивлюсь, если в некоторых случаях будет работать текстура с произвольным размером и даже произвольным соотношением сторон, но рекомендую придерживаться квадратов со стороной равной степени 2. Теперь о размере: делайте такой, какой Вам нужен, но помните, что чем он меньше, тем лучше будет работать компьютер у Вашего пользователя и тем меньше проблем он будет иметь. Если будете увеличивать в размере готовые текстуры, то польза от этого весьма сомнительна, а вред несомненен.
*Cubemap - это текстура окружения, 6 склеенных квадратов - сторон куба, на которые спроектировано окружающее пространство (предполагаемое).
Artem13, для модели "на земле" нужна коллизия, а у тебя её нет. Я тут где-то описывал, как её делать, но это не просто, поэтому сейчас опишу обходной манёвр 1. Найди уже готовый и работающий НИФ "на земле" для другого, желательно похожего шлема. 2. Открой в НИФскопе оба файла - работающий шлем "на Земле" и обычную модель своего шлема. Открыты должны быть в разных окнах, но одновременно. 3. Удаляй из нитришейпа своего шлема узел привязки к костям BSDismemberSkinInstance. 4. Ctrl+C свой нитришейп. 5. В окне "шлема на земле" тыкай (выделяй) самый главный узел и жми Ctrl+V. Чтобы модель перенеслась, окно, из которого она берётся, должно быть открыто. Поэтому выше я и настаивал на открытии обоих моделей. 6. Заменяем в главном узле то, что относится к старой модели, на то, что относится к новой. Например, если достаточно заменить только данные (массив вертексов, нормалей и треугольников) то вместо цифры, соответствующей данным в "шлеме на земле" ставим ту цифру, которую НИФскоп присвоил вновь вставленной модели. НИФскоп поменяет их местами и лишнюю надо выбросить. 7. Мы заменили модель, но ей нужны текстуры. Точно так же переносим текстуры. Переносим весь узел BSShaderTextureSet. Они подключаются к узлу настройки шейдеров BSLighyingShaderProperty. В этом узле опять меняем старую цифру на новую и новые текстуры встанут на новую модель. Мусор (узел со старыми текстурами) надо удалить. 8. Попутно надо убедиться, что в настройках шейдеров не стоит галка SLSF1_Skinned. Если не сделано ничего лишнего, она там не стоит. 9. Поворачиваем и опускаем наш шлем на землю на то же самое место, где стоял на земле исходный "шлем на земле". Для этого меняем вручную цифры смещения и поворота у нитришейпа шлема. После того, как шлем встанет куда надо, кликаем на нём правой мышой и выбираем Transform/Apply Вот и всё :). Ещё можно сделать собственную коллизию и я это описывал неделю назад (был в отъезде и сейчас включаюсь в модостроение снова ) Там же я рассказывал, как передвигать и поворачивать модели из нескольких нитришейпов.
Artem13, можно. Дело в том, что там же много разных настроек. Некоторые я и не знаю, некоторые знаю, но описывать все долго. А если ты берёшь готовый пример и только меняешь там что-то, то автоматически получаешь все второстепенные вещи правильно установленными. Просто вот такая привычка у меня образовалась, не делать с нуля, а брать наиболее подходящее и только изменять под то, что мне нужно. Чтобы сделать всё с нуля, надо знать все детали, а они обычно не известны.
valambar, виновато что-то, что ты нам не сказал. Видимо, и сам не придал этому значения. Раз раньше в игре видел, значит вещи эти там были... при установке того мода. А теперь ты их не видишь в игре или редакторе? А мод точно тот? Может, ты создал другой файл и теперь имеешь дело с ним? Ещё можно умудриться создать в игре два интерьера - редактировать один, а подключить к игре другой. Ещё эти предметы могли быть из другого мода, и ты видел их потому, что был подключен тот другой мод, которого теперь нет. Такое бывает при работе со сторонними модами: подключаешь оба, редактируешь, а результат сохраняешь в сторонний (по ошибке), тогда в своём потом ничего этого не найдёшь.
Yana_N, nine-dragon-art, Можно отвязаться и в Конструкторе. Причём, это очень просто. Когда открываете свой файл редактором, в окошке выбора файла справа будет список всех мастер-файлов, которых хочет Ваш файл. Выбираете тот, от которого нужно отвязаться, и жмёте Ctrl + Del. Вся хитрость в знании этих двух клавиш
Artem13, всё верно. Только я расписывал как сделать перенося по частям, так как просто не могу вспомнить, есть ли там другие подвохи кроме SLSF1_Skinned. Сам я частенько оперирую не всем нитришейпом, а только его данными. Дело в том, что я их редактирую экспортируя из НИФскопа в OBJ, и потом импортируя туда обратно.
DarkVetal, нет специального ВЭБ-ресурса, который бы собирал для нас только свободные игровые ресурсы. Кроме того, они практически не бывают совсем свободными. Даже если автор этого и не сказал, всё равно, правила хорошего тона требуют сослаться на него при использовании плодов его труда. Даже так: если использовать чужой труд, но не указать настоящего автора, то получится плагиат, так как пользователи будут думать, что это создал тот, кто на самом деле, только использовал. Авторов, кто не требует разрешения, но просит указания себя в качестве автора, довольно много, но их надо отыскивать среди тех, кто требует разрешения.
Сам я, без крайней на то необходимости, стараюсь не использовать те ресурсы, на которые требуется разрешение. Зато к авторству свободных ресурсов отношусь очень трепетно и стараюсь его беречь, указывая настоящих авторов в кредитах даже если они этого и не просили.
valambar, Понятно, ты используешь объекты из других мастер-файлов. В игре все они у тебя подключены, поэтому предметы ты видишь. Когда работал с ними в редакторе, они тоже были подключены, иначе бы ты их там не видел. Сейчас их там нет. Проверь подключение всех этих файлов в редакторе. Или просто поставь им там галки при загрузке. Вообще, это не есть хорошо, подключать другие мастер-файлы. Ведь пользователь не сможет пользоваться модом без всего этого набора. Есть пользователи, которые вообще не ставят мод, если он требует что-либо ещё. И я их понимаю. Одно дело - бороться с глюками в одном моде и совсем другое - ставить букет от разных авторов и потом ломать голову, кто из них что не так сделал. Кстати, иногда это даже говорит о неумении автора, ведь в большинстве случаев подключения сторонних файлов можно избежать, просто забрав оттуда к себе всё, что нужно.
Подскажите скрипт, чтобы одним триггером запускать другой. Смысл вот в чём: Есть старый Беседкин мод на падение космического артефакта. Он срабатывает по сигналу триггера. На триггере висит скрипт, исходников на который нет. Этот триггер явно срабатывает на всё подряд, кроме игрока. В оригинале это не важно, а мне надо поставить условие срабатывания только на главного героя. Тот оригинальный триггер можно сделать маленьким и поставить в таком месте, где его никто не побеспокоит, а запускать его надо своим триггером, чувствительным только к главному герою.
VALKNUT, как раз там НЕ ПРОПИСАНО условие срабатывание только на игрока, как нужно мне. Он срабатывает на всё, что движется. А точнее, запускается, как только игрок видит триггер. Мне же нужно наложить ограничение. Это можно сделать другим триггером, который будет запускать этот "чёрный ящик". Никакого замкнутого круга, только недостаточное знание скриптов.
Дело в том, что триггер не будет запускаться вдали от игрока, не зависимо от того, кто там бегает. Но на некотором расстоянии игра начинает отслеживать триггер. Субъективно это выглядит, как будто игрок увидел триггер, хотя на самом деле, он только подошёл к триггеру на то расстояние, на котором игра начинает его обрабатывать, но игрок туда ещё не вошёл. Но так как там кто-нибудь уже шевелится, триггер срабатывает. Скрипт на оригинальном триггере должен быть не простым, так как там с десяток параметров и включается только раз. То, что ты посоветовал - тоже вариант, но может быть возможно и прямое включение одного триггера другим?
valambar, а вот насколько они являются правильными мастер-файлами? Дело в том, что их можно по-разному приготовить. А то ведь бывает, что автора просто мания величия заставляет переименовывать ESP в ESM
unit04, тут может быть такая штука: по Ctrl+F4 сохраняется меш. Но беда в том, что если в моде нестандартные пути к текстурам (а в модах на автономные тела обычно так и есть), то редактор может врать с этими путями в создаваемом меше. Надо лезть в него НИФскопом, проверять и править в случае необходимости.
AleksTirex, Я описал только как тот триггер срабатывает в игре. Он большой, но срабатывает прежде, чем игрок туда заходит, на ещё большем расстоянии. Но я же с ним поигрался. Если его сделать маленьким и поставить на дорогу, то срабатывает как надо. Беда в том, что мне этот триггер нужен там, где у меня три нечисти патрулируют. В итоге срабатывает слишком издалека. Пошёл пробовать твой код.
Добавлено (07 Декабря 2013, 07:50) --------------------------------------------- Всё работает! Мой триггер с твоим кодом прекрасно запускает тот (кто бы сомневался ). Одна проблема - мой триггер срабатывает совершенно как тот - на большом расстоянии. Мне ещё нужна проверка, что в мой триггер вошёл именно игрок. Как в активации засечь игрока?
Добавлено (07 Декабря 2013, 07:59) --------------------------------------------- Ну вот, оказывается, иногда и своё серое вещество надо напрячь Всё оказалось очень просто:
Event OnTriggerEnter(ObjectReference akActionRef) if akActionRef == Game.GetPlayer() GetLinkedRef().OnTriggerEnter(akActionRef) endif EndEvent
nine-dragon-art, модель состоит из: - массива вертексов - точек, - массива треугольников, соединяющих точки, - массива нормалей, - массива текстурных координат. Вот последнее, это как раз соответствие вертекса точке на текстуре. Раз ты обнаружил разную развёртку текстур, значит, одно из тел - LB, так как на остальных текстуры совпадают Или почти совпадают.
Нигде и нельзя Вот такая грустная новость. И не только источники света с тенью, но любые источники света. В оригинальных локациях одна текстура обычно освещается только одним источником, максимум двумя. Один на локацию основной и маленькие локальные источники. Кроме того, в ванили локации имеют общее рассеянное освещение, да такое, что и без источников света всё видно
alexwar, nine-dragon-art, Не доверяйте цветам по памяти. Я понимаю разработчиков всего этого софта, почему они не добивались точного воспроизведения цветов. Наш глаз страшно врёт, если только мы не сравниваем цвета одновременно. Вся колориметрия основана только на СРАВНЕНИИ цветов. Это. так называемая "низшая колориметрия", это колориметрия полиграфистов и всех тех, кто работает с цветом точно. Ещё выделяют "высшую колориметрию" - оценка цвета по изолированным ощущениям, но там сплошной субъективизм и зависимость больше от того, с какой ноги встал, нежели от обсуждаемого цвета. Игра всегда условна, а отображение цветов в игре вообще страшно далеко от реальной жизни. Это надо понять и принять . Например, в реальности у изолированного объекта не существует свойства цвет. Есть только спектр отражения света. А у источника света есть спектр излучения. Цвет появится только когда мы будем рассматривать данный предмет под данным источником. Тогда цвет однозначно определяется произведением этих двух спектров. (Кто сомневается в том, что у изолированного предмета нет понятия цвет, пусть скажет мне, какой цвет, по его мнению, имеет минерал александрит).
- Можно сравнивать две текстуры в фотошопе. Например, если надо состыковать цвет головы с цветом тела. Но только приблизительно. Дело в том, что фотошоп выводит на экран 8-битный цвет, а сохраняться текстура будет с меньшей глубиной цвета (с большей дискретностью). Увы, на телесных цветах глаз особенно придирчив. - Окончательная оценка результата должна производиться только в игре и обязательно при разном освещении (на ярком свету и в темноте). - В НИФскопе вообще шейдеры не работают. Ведь они завязаны на источник света, а он в НИФскопе не учитывается (кроме самой примитивной модели его). - А скринам вообще доверять нельзя. Скорее всего, там были понаставлены всякие моды на освещение, да и фотошопом наверняка над ними поработали.
nine-dragon-art, а твои проблемы очень похожи на те, что возникают, если при выборе персонажа в редакторе не были набраны волшебные клавиши Ctrl+F4. Светлое лицо у смуглянок получается именно в этом случае. У бледняшек же оно сереет. Игра корректно работает с текстурами головы только в том случае, если был импортирован меш этой головы и оттенки для него.
Изменение репутации для пользователя Myprism
MyprismOffline
Сообщение №658
| Тема: "Lady Body" [LB] v2.0
написано: 10 декабря 2013, 05:42
| Отредактировано: Myprism - 10 декабря 2013, 06:10
а стоит ли переодеать и отмывать всех НПС? Куча времени и работы...
Э, нет! Это вот часть персонажей отмыть - куча времени и работы, особенно, если их надо отмыть в разной степени, а вот отмыть всех разом - самое простое - меняется только одна текстура и даётся всем.
alexwar, хорошо получилось. Особенно понравилась стрельба из лука. А можно ослаблять эффект "физики", скажем, вдвое?
Изменение репутации для пользователя Myprism
MyprismOffline
Сообщение №659
| Тема: Вопросы по текстурированию
написано: 12 декабря 2013, 02:22
| Отредактировано: Myprism - 12 декабря 2013, 07:03
chorik, Прозрачность задаётся в альфа-канале диффузной текстуры. Чёрное - прозрачно, белое - нет. Блеск - в альфа-канале текстуры нормалей. Белое блестит, чёрное - нет. Альфа-канал это как бы отдельный четвёртый цвет. Настоящего цвета он не имеет, но при выделении в Фотошопе показывается красным цветом. Ведь как то же его надо показать К настоящему красному каналу он отношения не имеет. DarkVetal, Возьми за образец глазурь на посуде или стеклянные фрагменты брони и повтори. Прозрачность требует специальных телодвижений, а для непрозрачной глазури - только циферки повторить.
DarkVetal, на самом деле, что такое шейдер, скорее всего, никто из нас не знает Ежели в общем, то это микропрограмма, которая выполняется видеопроцессором для каждой точки изображения. Т.е. не центральным процессором для объекта или полигона, а видеокартой для каждой точки. Используется для создания теней, прозрачности, более правильного блеска и т.д. Тут обычно шейдером называют параметры (флаги), которые передаются этим микропрограммам. Они задаются настройками шейдера в НИФскопе, например.
Очень странно, что у тебя происходил вылет из-за замены текстуры. Обычно туда можно ставить что угодно, в крайнем случае, игра ничего не покажет (объект будет фиолетовым или прозрачным). Скорее всего, причина вылетов была другая, только ты её не засёк.