Форум » Записи участника [Myprism]

Результаты поиска
Myprism  Offline  Сообщение №1501 | Тема: Поиск модов для TES-V: Skyrim написано: 4 апреля 2020, 03:35


Физик


Katarina20, https://www.nexusmods.com/skyrim/mods/30282

Добавлено (04 Апреля 2020, 06:37)
---------------------------------------------
Может ли кто привести пример мода, где персонажи раздеваются, когда плывут в воде? Кроме Мелиссы.


Myprism  Offline  Сообщение №1502 | Тема: Вопросы по скриптам Papyrus написано: 4 апреля 2020, 13:32


Физик


Есть желание сделать переодевание персонажей, когда они плавают. Ведь довольно странно плавать в стальной броне. Для этого мне надо в скрипте определить процесс плавания. Свойство IsSwimming в SKSE есть, т.е. проверить состояние персонажа я могу. Но как найти событие, в которое можно поставить проверку? По идее можно попытаться через магические эффекты с проверкой IsSwimming, но уж больно громоздко получается. Нет ли способа покрасивее?

Myprism  Offline  Сообщение №1503 | Тема: Поиск модов для TES-V: Skyrim написано: 4 апреля 2020, 22:14


Физик


blΔck, спасибо! Мне нужно только расковырять, как они идентифицируют состояние плавания.

Добавлено (05 Апреля 2020, 01:20)
---------------------------------------------
Увы, пролёт. Там нет исходников скриптов. Раз автор их не даёт, значит, он не хочет, чтобы кто-то смотрел, как это работает.


Myprism  Offline  Сообщение №1504 | Тема: Поиск модов для TES-V: Skyrim написано: 5 апреля 2020, 08:37


Физик


blΔck, спасибо! Нужно по простой причине: не гоже персонажам плавать в стальных доспехах. Если бы была возможность, я бы встроил раздевание при плавании в свой мод.
Кристина в скриптах слаба, там копать не стоит.
Тут проблема не в переодевании (это я легко сделаю), а в том, чтобы засечь, что персонаж плавает. Есть даже функция, позволяющая опросить персонажа, чтобы узнать плавает он или нет, но нет события в которое можно встроить эту функцию. Возможны некрасивые варианты, вроде опрашивания всех видимых персонажей каждую секунду, но хотелось бы найти что-то поизящнее. В принципе, такой мод, где это реализовано, существует, это Мелисса (ещё и от отечественного разработчика). Но там очень много всего наворочено через магические эффекты. Возможно, что это и есть единственный возможный вариант, но его я оставил на потом, слишком для меня сложно (не люблю я магические эффекты, хотя и использую).
Насчёт зарубежных сайтов. Я ведь не ставлю себе задач, которые обязательно должен решить. Просто держу в уме несколько разных задач и решаю из них ту, которая сама пойдёт с наименьшим сопротивлением :)

Добавлено (05 Апреля 2020, 11:59)
---------------------------------------------
Вот по последней ссылке как раз то, что нужно. Автор либерально относится к возможности использования и даёт все исходники, так что я смогу разобраться как это надо делать и тогда уже решить, как можно использовать.


Myprism  Offline  Сообщение №1505 | Тема: Вопросы по скриптам Papyrus написано: 5 апреля 2020, 12:47


Физик


Multigone, Спасибо большое!
yakor77, обычно это делают ставя на бассейн триггер. Персонаж пересекает его границы - переодевается. Моя задача намного сложнее. Мне нужно чтобы любой персонаж (хотя бы любой из спутников) переодевался при любом плавании. И да, такие моды есть. Первый, который я давно знал, это Мелисса. Там бездна скриптов и квестов и он для меня слишком сложно устроен (всё же я не люблю скрипты, а к квестам у меня вообще отвращение :( ), всё же его механизм я понял, там это делается через магические эффекты. Есть ещё 2 - в одном ДЛЛ-ка и всего пара скриптов дез исходников - не годится, в другом через магические эффекты и довольно не сложно. Вот вместе с подсказкой Multigone, у меня уже много пищи для ума.

Myprism  Offline  Сообщение №1506 | Тема: Поиск модов для TES-V: Skyrim написано: 6 апреля 2020, 14:32


Физик


Tanek, говорил я о Creation Kit. Это редактор созданный разработчиками Скайрима для создания и редактирования дополнений к этой игре. Учить работать с ним человека, который ещё его не видел, я не могу. Когда изучите его по другим руководствам, я смогу отвечать на отдельные вопросы.

Myprism  Offline  Сообщение №1507 | Тема: Вопросы по скриптам Papyrus написано: 11 апреля 2020, 03:24


Физик


emelya8307, Dsion, а может так: завести квест, сделать в нём алиасы на всех таких персонажей и уже на них повесить скрипты? Т.е. не на самих персонажей, а на их алиасы? Тогда персонаж вроде как не затронут непосредственно, а скрипт на нём висит :)

Myprism  Offline  Сообщение №1508 | Тема: Проблемы с модами, их установкой и способы решения написано: 15 апреля 2020, 02:27


Физик


RUSсиянин, возможны 2 варианта:
1.) Глюки мода. Тогда надо спрашивать об этом автора мода. Если это глюки мода, то они происходят в определённых местах и при определённых обстоятельствах. Это надо выяснить и сообщить автору мода, иначе он тоже ничего не сможет исправить.
2.) Глюки компьютера. Тогда, чтобы вам помогли, надо рассказать о конфигурации компьютера.

Myprism  Offline  Сообщение №1509 | Тема: Вопросы по скриптам Papyrus написано: 17 апреля 2020, 02:48 | Отредактировано: Multigone - 21 апреля 2020, 18:55


Физик


To all В Скайриме есть возможность локализовать моды, вынося строковые переменные в стринговые файлы (по 3 на каждый мод и на каждый язык). Собственно говоря, так сам Скайрим и устроен. Моды с вынесенными стрингами легко локализовать. Достаточно перевести на любой язык только стринговые файлы, не трогая сам мод. Если положить в архив стринговые файлы для многих языков, то мод автоматически становится мультиязычным.
А вопрос у меня в том, как выносить в стринговые файлы сообщения из скриптов, чтобы можно было локализовать их в общем процессе?

Myprism  Offline  Сообщение №1510 | Тема: Вопросы по скриптам Papyrus написано: 17 апреля 2020, 09:59


Физик


Dsion, нет, я о скриптах зарубежных мододелов. Они ведь не знают проблем с локализацией. Просто я сейчас копаюсь в моде на спутников Amazing Follower Tweaks. Довольно сложный мод. Он переведён на русский язык. Но переводчик жалуется на то, что некоторые вещи в скриптах не может перевести, так как они тогда теряют работоспособность. Всё, что находится в Message, прекрасно выносится в стринги и они прекрасно переводятся, это я уже проверил. Видимо там есть что-то что сделано иначе и что я пока ещё не откопал.

Myprism  Offline  Сообщение №1511 | Тема: Вопросы по скриптам Papyrus написано: 17 апреля 2020, 14:42


Физик


Multigone, Dsion, всё понял. Локализуемых строк в скрипте быть не должно. Английские - сколько угодно, но не выводить их пользователю.
В общем то не гоже лазить по всем скриптам (в моём случае, их несколько десятков), чтобы искать, что там можно безопасно перевести.
Я почему занялся этим модом. Я же раньше спрашивал, как сделать переодевание, когда персонаж залезает в воду. Вот ГГ я это сделал (заодно и переодевание дома и в городе), но правильно сделать это и для компаньонов. Но тогда надо модифицировать управление ими. Но если я что-то в этом направлении сделаю, то сразу же получу несовместимость как минимум с тремя популярными модами на компаньонов. Да и работа делать такое (хороший мод на управление компаньонами) с нуля - очень велика. Вот и выбрал я тот мод, автор которого не возражает против модификаций, а его продукт вызывает наименьшее количество нареканий у пользователей. Вот сюда всё и встраиваю. А чем больше разбираюсь, тем больше он мне нравится. Приятно смотреть на хорошо выполненную работу.
Вот только первый раз такое вижу у него
Код
if (0 == MyInt)...
:) как думаете откуда ноги растут у такой манеры записи, когда константа стоит слева?

Myprism  Offline  Сообщение №1512 | Тема: Вопросы по скриптам Papyrus написано: 22 апреля 2020, 15:09


Физик


Multigone, буквально нашёл в коде мода, с которым сейчас разбираюсь вот такие штуки (именно то, о чём ты говорил):
Код
    String n = ((self as ReferenceAlias) As TweakSettings).originalName    
    if (n == "Erik")
  invCode=10
    elseif (n == "Iona")
  invCode=1
    elseif (n == "Calder")
  invCode=1
..............................

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

Добавлено (26 Апреля 2020, 07:59)
---------------------------------------------
Как скриптом изменить Outfit? Нет, не заменить у персонажа один Outfit на другой, а именно изменить имеющийся или создать новый.
Outfit является расширением Form.
Из описания следует, что это специальная разновидность FormList, которая принимает только объекты Armor.
Есть команда getoutfit(),
в SKSE есть команды: getnumparts() и GetNthPart(Int n),
т.е. получить этот список легко, можно получить и его компоненты. Но как решить обратную задачу, т.е. закинуть туда свой объект?
Приведение FormList, Form[], Armor[] к(as) Outfit не работает, сообщается о несовместимости типов.

Добавлено (26 Апреля 2020, 13:11)
---------------------------------------------
Нет ли способа принудительно по ID (как по указателю в других языках) подсунуть туда данные, не объявляя типа в явном виде?


Myprism  Offline  Сообщение №1513 | Тема: Вопросы по скриптам Papyrus написано: 26 апреля 2020, 13:30


Физик


Dsion, вот в том то и дело, что мне хочется, чтобы отпущенный на волю персонаж оставался с новым оутфитом, который создал для него игрок.
Цитата Dsion

Разве что действительно создавать специальные аутфиты из LeveledItem. Там есть функции AddForm() и Revert().


А вот это мне нравится! Ведь тогда я могу менять не аутфит, а левельный список который в нём лежит! Только надо продумать, как это сделать не для всех персонажей, а только для тех, кого игрок захочет переодевать в первую очередь. Или сделать пару десятков таких аутфитов и выдавать их последним нанятым и освобождённым спутникам и когда запас подготовленных аутфитов закончится, освобождать их с конца. Надо думать.
Multigone, похоже, надо просто заменять аутфит у отпущенного персонажа на тот, что содержит только один левельный список.

Myprism  Offline  Сообщение №1514 | Тема: Вопросы по скриптам Papyrus написано: 26 апреля 2020, 15:50


Физик


Dsion, Буду всё пробовать. Сейчас игра ставит стандартный аутфит при смене интеллектуального пакета. Но если в обработчик события смены пакета поставить добавление персонажу некоторой шмотки (лук спутника, например) и тут же отобрать её обратно, то на время действия пакета игра ставит персонажу наилучший комплект из имеющихся у персонажа шмоток, вместо стандартного аутфита. Это я уже проверил. :)

Myprism  Offline  Сообщение №1515 | Тема: Вопросы по скриптам Papyrus написано: 28 апреля 2020, 08:37


Физик


emelya8307, присоединяюсь к вопросу. Я попробовал сделать это позавчера и так же не получилось. Только у меня это не первоочередная задача, поэтому я отложил её. Что-то мы одно и то же пропускаем сделать.

Myprism  Offline  Сообщение №1516 | Тема: Вопросы по скриптам Papyrus написано: 28 апреля 2020, 13:55


Физик


Dsion, точно! Именно это я и пропустил.

Myprism  Offline  Сообщение №1517 | Тема: Вопросы по скриптам Papyrus написано: 30 апреля 2020, 06:10


Физик


Как определить, каких случаях передаются данные, а в каких указатель на них. Так у меня есть скрипт:

Код
FormList    Property  TweakInv3 Auto
FormList    Property  TweakInv4 Auto

Function InventorySnapshot()
............................
    TweakInv4 = TweakInv3
...........................
endFunction

В игре обнаруживается, что любые изменения в TweakInv3 приводят к таким же изменениям TweakInv4. Т.е. в данном случае передался указатель на формлист. Как копировать именно содержимое, а самое главное: как различать, когда копируются данные, а когда только указатель?

Myprism  Offline  Сообщение №1518 | Тема: Вопросы по скриптам Papyrus написано: 2 мая 2020, 15:19


Физик


Цитата Dsion

Вместо формлистов, есть еще массивы в скриптах.


И у них есть преимущество: в них можно записывать одинаковые объекты, в то время, как в формлист только разные.

В скрипте, с которым я сейчас разбираюсь, объявлено довольно много переменных вот таким образом:
Код
Form  Property    lastLeftWeapon    Auto
Form  property    lastRightWeapon    Auto  
int   property  lastLeftCharge  Auto
int  property    lastRightCharge    Auto

Т.е. предусмотрено заполнение их как свойств извне. Но извне они никак не заполняются. Таким образом, автор скрипта использует их как обычные переменные скрипта. Одновременно, в скрипте нет других обычных переменных не объявленных свойствами. Правильно ли это? В чём сермяжная правда - объявлять все переменные свойствами, даже те, что в моде не заполняются?

Myprism  Offline  Сообщение №1519 | Тема: Вопросы по скриптам Papyrus написано: 4 мая 2020, 10:13 | Отредактировано: Myprism - 4 мая 2020, 10:14


Физик


Multigone, т.е. единственное оправдание - возможность менять переменную из другого скрипта?
Dsion, сейчас есть временный клон формы TempClone(), например:
Код
Actor npc0 = npc.TempClone() as Actor

вроде работает.

Добавлено (06 Мая 2020, 11:15)
---------------------------------------------
Попал в очередную засаду. Вот фрагмент кода:

Код
............
Outfit SleepOutfit = npc.GetActorBase().GetOutfit( true )
CN = 0
Debug.MessageBox( "Stop" )
;Utility.wait( 10.3 )
Armor TItem = SleepOutfit.getNthPart( CN ) as Armor
;Debug.MessageBox( "Stop" )
............

Весь код очень большой, поэтому я вычленил только значимый фрагмент. Дело в том, что если я размещаю в коде отладочное сообщение Debug.MessageBox( "Stop" ) вот в том месте, где оно стоит сейчас, то всё работает так, как мне нужно (это ещё не значит, что правильно :) ) Если это сообщение закоментарить, нужной мне работы не будет. Это же сообщение поставленное там, где оно сейчас закоментарено (ниже по коду), нужной мне работы не даёт (не действует).
1. Почему код с отладочным сообщением работает иначе, чем без него? Понятно, что это сообщение вызывает остановку (задержку) выполнения кода. Но когда я вместо него ставлю просто заведомо большую задержку (она сейчас закоментарена), то это не помогает.
2. Почему отладочное сообщение поставленное до строки Armor TItem = SleepOutfit.getNthPart( CN ) as Armor действует иначе, чем после неё. Переменная TItem только обозначена, заполнена, но больше нигде не используется (для поиска разгадки я всё остальное отрубил).

Myprism  Offline  Сообщение №1520 | Тема: Вопросы по скриптам Papyrus написано: 6 мая 2020, 10:48


Физик


Dsion, да вроде в Скайриме всё с 0 начинается... Вот пример:
Код
Actor property Ralof Auto
int NumPart

Function Outfit()
    NumPart = Ralof.GetActorBase().getoutfit().getnumparts()
    while NumPart
  Numpart -= 1
  Form Clothing = Ralof.GetActorBase().GetOutfit().getNthPart(NumPart)
  If (Clothing.IsCuirass()) ;Checks for the Cuirass Keyword.
   Debug.Trace("Index " + NumPart + " is a Cuirass.")
  EndIf
    EndWhile
EndFunction

Цикл выполняется пока NumPart на его входе больше 0. Т.е. от общего числа уменьшается до 1,
которая тут же уменьшается до 0. Т.е. младшим членом является нулевой.

Myprism  Offline  Сообщение №1521 | Тема: Проблемы с модами, их установкой и способы решения написано: 13 мая 2020, 06:25


Физик


Мольфар,
Либо дело в устройстве брони, либо вы поставили какой-то мод на управление напарниками, который не работает с этой бронёй. Да, а напарники то ванильные?

Myprism  Offline  Сообщение №1522 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 16 мая 2020, 03:44 | Отредактировано: Myprism - 16 мая 2020, 03:45


Физик


Vittru1986, вообще то имеет значение не название файла текстуры, а полный путь до неё. Если она лежит в новой папке, даже имея старое название, то она никогда не встанет на место старой.
А что касается данной проблемы, то текстура может задаваться не только в меше. Кроме того, TextureSet может быть задан в редакторе независимо от того, что указано в меше. Таким образом разработчики получают цветовые разновидности одежды. Там используется один и тот же меш, но для него установлены разные текстуры через разные TextureSet. Кстати, если вы использовали ту же самую модель, что была и раньше и только хотите заменить текстуры, то это можно сделать как раз через TextureSet (вкладка Miscellaneous).

Myprism  Offline  Сообщение №1523 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 16 мая 2020, 17:28


Физик


Vittru1986, для свечения используется отдельная модель. Там ещё стоят дополнительные блоки контроллера, так как это свечение обычно двигается. И всё это делается как раз в нифскопе. Зачем понадобилось менять текстуру свечения? Просто ретекстур я использовал довольно широко и доспехи со свечением тоже, но мне никогда не приходилось делать ретекстур свечения и поэтому я не знаю какие там могут быть подводные камни.

С использованием TextureSet есть одна засада. Он не работает в виде от первого лица для женских персонажей. Вот такой вот глюк Скайрима. И половая дискриминация - для мужиков работает, для женщин - нет. Обходится это так - вообще выкидываем вид от первого лица. Тогда для брони игра будет для первого лица рисовать основную модель, а там всё работает нормально. Но надо проверять, там есть ещё нюансы зависящие от использованных слотов брони.

Myprism  Offline  Сообщение №1524 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 19 мая 2020, 14:35


Физик


Vittru1986, несколько лет назад я устанавливал музыку для интерьеров. Всё что помню, так там была регулировка громкости в окошке в Редакторе и я её там регулировал. Но, может быть, музыка ставится иначе. С другой озвучкой я дел не имел.

Myprism  Offline  Сообщение №1525 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 21 мая 2020, 14:22 | Отредактировано: Myprism - 21 мая 2020, 14:23


Физик


Vittru1986, вообще то скрипты лучше обсуждать в специальной теме скриптов.
А по теме, посмотрите, например, ванильный скрипт ScriptName AnimalTrainerSystemScript как там объявляется свойство Gold
Код
ScriptName AnimalTrainerSystemScript extends Quest Conditional

GlobalVariable Property AnimalGold Auto
MiscObject Property Gold Auto
Quest Property pDialogueFollower Auto

Function BuyAnimal(Actor  AnimalTrainer)

    Game.GetPlayer().RemoveItem(Gold, AnimalGold.value as int)    
    AnimalTrainer.GetLinkedRef().SetActorOwner(Game.GetPlayer().GetActorBase())
    ;AnimalTrainer.SetActorValue("Variable04", 1)
    (pDialogueFollower as DialogueFollowerScript).SetAnimal(AnimalTrainer.GetLinkedRef())

EndFunction

Myprism  Offline  Сообщение №1526 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 24 мая 2020, 08:21


Физик


Vittru1986, а затащить туда мышкой?

Myprism  Offline  Сообщение №1527 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 25 мая 2020, 08:42


Физик


Vittru1986, редактор сам делает бэкапы они лежат в C:\Program Files (x86)\Steam\steamapps\common\Skyrim\Backup Надо взять там тот, что ещё грузится и сравнить с тем, что не грузится. Сравнивать лучше всего в TESVEdit. Вылеты редактора (и игры) чаще всего происходят из-за ошибки в модели. Обычно отсутствие какой-либо кости, к которой привязана броня или неправильная привязка.

Myprism  Offline  Сообщение №1528 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 31 мая 2020, 03:17


Физик


Vittru1986, Раз при удалении мода глюки остаются, значит, он не до конца удаляется. Видно где-то остались ещё его следы, причём, как раз те, которые глючат. Я бы переименовал папку Data с удалённым модом, заново поставил бы Скайрим и сравнил содержимое папок.

Myprism  Offline  Сообщение №1529 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 31 мая 2020, 11:52


Физик


Vittru1986, ни в коем случае не удалять! Надо скопировать или переименовать папку Data. Всё, что относится к моду, находится там. Затем поставить Скайрим по-новой и удалить из сохранённой папки Data всё, что есть в новой. Я такие вещи делаю прогой CloneSpy. После этого в сохранённой папке Data останется мод и то, что мешало ему работать. А вот это уже перебирать вручную. Задача - выделить только мод и убрать мусор.

Myprism  Offline  Сообщение №1530 | Тема: Вопросы по скриптам Papyrus написано: 2 июня 2020, 09:51


Физик


Смущают меня задержки установленные в чужом коде. Прежде всего тем, что я не всегда могу понять назначения некоторых из них и поэтому не могу их разумно расставлять. Вот пример самого конца одной функции:
Код
update = true
Utility.wait( 0.15 )
RegisterForSingleUpdate( 0.6 )

Дальше в функции ничего нет. Я бы ещё понял эту задержку, если бы её значение превышало 0.6 секунд задержки обновления, но зачем нужна задержка 0.15 секунд, если потом всё равно надо ждать 0.6?

Форум » Записи участника [Myprism]
Поиск:





Ответ на жалобу смотрите в разделе жалоб