Перейти к содержанию

ArtemSH

Модмейкер
  • Постов

    341
  • Зарегистрирован

  • Посещение

  • Победитель дней

    14

Весь контент ArtemSH

  1. ArtemSH

    Сиродильские Сказания

    Кул. Поздравляю с переводом!
  2. Я тоже год назад составлял такой списочек, прямо захотелось дописать его. Про пефайлпатчер никогда не слышал как и про саунд коммандз. Век живи… Сиродильские сказания эьо tales of cyrodiil что ли?) Список хороший, а квесты и глобал квесты друг другу не противоречат? Истоки гильдии магов добавляют вроде локации в игру да и крагенир тоже. Не говоря уже о лост спайрз.
  3. Слышал, что занятная, но забагованая вся.
  4. ArtemSH

    New City_Bravil

    Троглхан, время + оптимизация под консоли ну и виденье дизайна другое. все города плюс-минус структурно и дизайнерски схожи, везде типовая работа
  5. dds обе текстуры. делать это легче всего в GIMP, он бесплатный. Вот пример как работать с текстурами меша "дорожный знак" (из англосаксонского туториала "I Saw the Sign"). скорее всего с телами плюс минус то же самое.  0. Take either one of the 512×128 city sign textures from textures/clutter/signs/ and use the clone tool with a relatively small brush size (circle 5 or 7) to blot out the existing names, being careful to preserve the color of the wood if not the grain. Blotchiness isn’t critical, as most of it will be overwritten anyway. 0a. Or you can use your own base texture, which should be some multiple of 512×128. 0b. Whatever texture you use, make sure you load it WITHOUT mipmaps. 1. Using the text tool, change the options to Kingthings Petrock, size 50, color f7f3de or some shade of yellowish white. Type your text in and align it. You may wish to use an existing road sign texture as a guide. 1a. Repeat this on the other half of the sign, using the flip tool to flip it horizontally. 1b. In the layers thing on the side, use merge down to merge both text layers BUT NOT the main surface layer. 2. In the layers thing on the side, change the mode of the text layer to Difference. 3. In the layers thing on the side, right click, and create a new transparent layer between your new text layer and main surface. 4. On this new layer, using a circle 07 or 05 brush and the black color, carefully outline the text with a slight border, making sure to cover all the area under the text as well. You’ll see it change colors, so it’s obvious. 5. In the layers thing to the side, change the mode of your new layer to Overlay. 6. Right click in the layers thing, and choose Merge Visible Layers. 7. Save as DDS with DXT1 compression and generate mipmaps on. 8. Before closing the window, go to Filters/Maps/Normalmap, and create a normalmap. I used 4 samples and 2.0 scale, you might want something different. 9. Save as DDS, DXT5 compression, generate mipmaps. Putting it together in Nifskope is left as an exercise to the reader. Если не понимаете, переведите гуглом, он должен нормально перевести. Вам нужны точно те стадии, которые я выделил жирным. Это основа создания обычной текстуры и карты нормалей. С остальным не знаком, помочь не могу.
  6. В какой-то момент я перестал понимать, запись ли это в блоке или всё-таки занятный верлибр? Звучит хорошо
  7. Это первый из серии гайдов по нововведениям NVSE4, освежившими моддинг сцену Нью Вегаса: UDFы, строковые переменные и массивы. Моддеры Обливиона, незнакомые с ОБСЕ 16+ тоже получат пользу от этих статей. Эти статьи написаны для тех, кто в целом уже понимает скриптинг, знаком с теми или иными функциями, но теряется, глядя на документацию ОБСЕ, не понимая, как применить всё это добро на практике. Начнем с основ. Немного новенького синтакикса, делающего больше меньшими усилиями. Посмотрим на выражения ОБСЕ. Если скриптинг – язык, давайте назовем функции вокабуляром и идиомами, а то, что ниже – синтаксис, собирающий всё воедино и придающий ему смысл. Кое-что уже должно быть вам известно: == != > < >= <=     + - * /       ()    && || Сравнение, базовая математика, скобки, меняющие последовательность, логические операторы AND и OR, уяснили, да? Если нет, то отложите статью пока не усвоите базу. Метнемся к самым полезным из новых особенностей, под которыми я имею в виду то, что поможет связать весь скрипт воедино, тем более некоторые из них уж очень удобны, чтобы их игнорировать: 1. LET 2. IF EVAL 3. "МАТЕМАТИКА " И ПРИСВОЕНИЕ 4. ЦИКЛЫ WHILE 5. SCRIPT COMPILER OVERRIDE 1. LET В NVSE4 «let» заменяет «set». Конечно set всё еще можно использовать как и раньше, но let может больше, и правильнее перейти на него при работе с более продвинутым синтаксом, да и со строками и массивами, о которых в другой раз. Собственно, всё, что нужно запомнить, так это то, что вместо этого: мы пишем: Видите штучку := в коде? Не забудьте о ней. Это «присваивание», то есть «пусть А := Б», означает «Пусть А будет равно Б», в библейском духе «Да будет свет». 2. IF EVAL Та же история с if-if eval.  If eval нужен чтобы компилятор понял более продвинутые вещи. Всегда используйте его со всем, что связано с массивами и строками, и он не подведет. Заметьте, что можно миксовать старые if’ы и новые if eval’ы, если хотите. 3. "МАТЕМАТИКА" И ПРИСВОЕНИЕ +=   прибавить и присвоить -=    вычесть и присвоить *=   умножить и присвоить /=    разделить и присвоить Незаменимо для быстрого манипулирования любыми float, если спросите меня. Через математическую функцию присваивает переменной слева переменнную справа и сразу устанавливает переменную слева в результат. Кажется, ну и что, но наконец-то мы можем перестать писать это: И начать писать так: Меньше писанины, короче скрипты, нет смысла делать по старому. О, и еще кое-что о таймерах: Теперь могут быть записаны: Пользуйтесь, обожайте, не возвращайтесь к старым практикам. 4. ЦИКЛЫ WHILE Эти циклы комбинируют циклический аспект циклов Label/GoTo с возможностью делать циклы зависящими от условия “if eval” (включая математику и присвоение из пункта выше).  Цикл while –  все, что между условием "while" и командой "цикл"(loop): это блок в духе блока if-endif: Если условие while ложно, содержимое блока проматывается. Если условие while истино, блок между ним и командой «цикл» работает и доходя до Loop, скрипт возвращается к условию while и выполняет его снова. Немного примеров: Хотите чтобы отрывок кода отработал 80 раз? Раньше это писали так: Теперь нынешний эквивалент: Опять же, он короче, и NVSE не нужно париться над отслеживанием индексов лейбла, и вам в том числе. К тому же цикл представлен в виде блока, когда как GoTo едва ли дотягивает до статуса лейбла, а endif вашего if редко когда-либо использовался. Это может звучать вьедливо, но чем сложнее скрипт, тем важнее его читаемость. Label/GoTo – уродство. Однако имейте в виду, что iNum уже добавлена в первое условие while, потому оно начнет с 1, а не с 0 в условии if из старого примера, так что чтобы получить именно 80 нужно указать значение 81. Применим это к классическому циклу. С label/goto типичный цикл, работающий с каждым элементом в списке и  затем удаляющий его из него, будет выглядеть так: Теперь же: И, конечно, удалить что-либо без задействования элементов списка теперь проще простого: Хоть циклы намного красивее и элегантнее, чем Label/GoTo, но как и любые другие циклы они нуждаются во внимательности, иначе циклы перейдут в бесконечность и крашнут игру. Это ужаснейший пример, непременно приведет к крашу игры. Прежде чем запустить в цикл огромный кусок кода сто раз подумайте. Циклы while работают каждый фрейм как и скрипт, запускающий цикл. Поэтому ограничьте циклы тем, что действительно необходимо сделать. Сделать это можно командой break, что заставит скрипт пойти ниже команды loop, это позволит избежать работы того участка кода, который не должен сейчас проигрываться. Промотать часть кода с телом условия while можно командой continue, которая подобна return, и возвращает скрипт обратно к условию while. Как обычно, правильная практика – помещать continue как можно выше в теле цикла как и return в скрипте заклинания или обьектном скрипте. SCRIPT COMPILER OVERRIDE Примечание. Возможно, вам потребуется узнать немного больше о строковых переменных (StringVar), переменных массивов (arrayVar) и определяемых пользователем функциях (UDF), чтобы действительно понять часть того, что изложено ниже. Но переопределение компилятора определенно подпадает под синтаксис и не ограничивается ни одной из этих тем. Конечно, let, if eval, while, math & assig и т.д. уже сами по себе хороши, а мы еще и не дошли до комбинаций UDF, строк, массивов и переменных nx. Впрочем, когда дойдем, нас доканает компилятор оригинальных скриптов, не принимающих их как параметры к изначальным и старым NVSE функциям. Пример #1: представим, у нас есть число, для которого мы хотим получить нижний предел (get the floor of), ближайшее целое число меньше числа с плавающей запятой (float). Ванильный компилятор будет знать, что мы хотим сделать, если мы укажем это как переменную с плавающей запятой (float), которую мы передадим функции Floor в качестве параметра: Однако он не поймет, чего мы хотим, если мы скажем ему получить число с плавающей запятой (float) из элемента массива или из вызова UDF: это не скомпилируется. Ванильный компилятор принимает лишь переменные float как параметр к функции floor и при любом раскладе не имеет понятия, чего ожидать от массива или UDF во время компиляции. Там может быть что угодно, и э-э-э на деле это не правда. Чтобы обойти это, мы должны перемотнуть через скриптовый блок, задействовав компилятор NVSE, что можно сделать, предварив нужный блок кода подчеркиванием: И затем идти по своим делам, вычислять числа, быть красавчиком. Вы буквально говорите компилятору принять всё как есть и что, мол, всё будет окей, и вы знаете, что там float в ключе массива, или что float вернется из UDF. Этим ходом вы забираете щепотку ответственности у компилятора в обмен на свободу. В итоге вам нужно быть осознанным, не запороть всё дело, протестировать всё в игре вместо того чтобы опираться на отчеты об ошибках из ГЕККа, и использовать скобки чуть больше чтобы убедиться, что компилятор не скомпилировал то, что не может работать в игре. Пример #2: мы хотим проверить пачку разных свойств актора (actor values) SPECIAL на НПС и дать им bump если они меньше 5: Теперь вы должны увидеть, что параметры Харизма, Интеллект и другие на деле – строки, комбинация знаков. Чтобы сузить круг поиска и установить 7 свойств актора мы прилепим их к массиву, извлечем их через цикл foreach и привяжем к строковой переменной, и проверим вот таким образом: но это всего лишь окольный способ показать, что переопределение позволит использовать string_var, а не фактическую строку для значения актера. Строго говоря, мы можем сократить это еще больше: Пример # 3: пример ОБСЕ документации, которую вы уже можете усвоить, если усвоили предыдущую информацию: Становится эпически коротким: Еще одним достоинством нового компилятора является то, что вместо этого: Можно сосласться на свойство актора по его кодовому числу, который вы можете найти на дне ужасающе устаревшей документации NVSE: Почему это преимущество? Ну потому что с числами можно делать то, чего нельзя со строками, типа «Здоровье». Ну например, привязать их к int: Так что можно привязать кучу свойств актора через цикл с условием while и циклом математики и присвоения тоже, вот так: Если Вы хотите «Супер-Дупер Мешок Доктора» или «Кнопку Немедленного Подхила».
  8. Добрый день Одобрите пожалуйста статью  https://tesall.club/tutorials/mir-fallout/modostroenie-fallout/1732969731818-nvse4-chast-1-sintaksis-i-virazheniya
  9. так во wrye bash'е можно есмифировать мод, от которого будет зависеть второй, и затем в ксе сделать главным второй мод, активировав еще и есмифированный есп первого. и тогда возникнет зависимость второго от первого.
  10. просветительная лекция на эту тему по ссылке (англ) https://tesalliance.org/forums/index.php?/topic/3167-wipz-collision-my-nemesis/ Пс. шибко в подробности не вдавался, но по идее должны разъяснить суть плюс вот
  11. что то отвалилось для VS, надо переустанавливать, либо NET он говорит CTL file отсутствует какие то библиотеки слетели
  12. самая лучшая имплементация из всего, что я видел еще и стильные плащи, самый сок к нему добавить мод на ношение плащей неписями во время дождя и стужи - и игра выглядит очень иммерсивно
  13. ArtemSH

    Momos Harbor Expanded

    gw-gb, Да. посмотрел как у них. интегрированы другие моды Reaper's Waterfront by Reaper9111 Waterfront Market by Nernie The IC Waterfront Tunnel Entrance by Sjors Boomschors
  14. ArtemSH

    Momos Harbor Expanded

    это же он включен в better cities?
  15. Один из лучших модов на эту игру в принципе. Задействует и так бессмысленные generic-форты игры, наполняя их лорным смыслом и даже геймплейным содержанием (можно закупить снаряжение, спеллы, отремонтировать свое добро). Наконец-то Имперский Легион прибавляет себе визуального веса - мы видим воочию его присутствие в регионе, его инфраструктуру, которую днем с огнем не сыщешь в оригинале, где только полтора легионера совершают одинокие променады по дорогам столичной провинции. Так что удалив ненужные данжи из геймплейного цикла, добавив лорный и придающий реалистичности происходящему контент в игру, гвинфронт сделал очередной шедевр, совершенно обязательный к добавлению в сборку облы.
  16.     скрипт обьектный, ты его привяжи в кс к кольцу и всё. проверка предмета "if player.equipitem (id предмета)" здесь не нужна, это тавтология.  если он должен действовать один раз, то надо добавить условие.   short DoOnce Begin OnEquip player if DoOnce == 0 player.moveto LocaMarkerREF set doonce to 1 endif end   если кольцо предполагается как способ входа в дом (по типу мода Pocket Dimension Home), то Begin OnEquip player if player.getincell YourHome == 0 player.moveto YourHomeMarkerREF else player.moveto tamriel (условно, тут указываем место куда вернуть героя в тамриэле, если из локации не предполагается иного выхода кроме как тем же кольцом) endif end
  17. Sheore, Kvatch Rebuilt так и называется. Все остальные названы иначе и с ними совместимости нет. nexusmods.com/oblivion/mods/15412
  18. Еще раз всем добрый день! Заметил, что subspace'ы не работают в помещениях. Так ли это?    Ориентировался по CS.Wiki. Там указывалось, что пол обязательно должен войти в сабспейс, чтобы неписи поняли, что это отдельное пространство.   Но у меня они всё равно прутся в стену и не пользуются дверями с маркерами. 
  19. В общем, я сделал такой скрипт, но пока работает криво. Причем я не понимаю логику происходящего: по скрипту создается динамический референс статического камня варла и при повторном нажатии на активатор он, по идее, должен исчезать. Но вместо него исчезает активатор (он же holder). Причем в скрипте я, ясное дело, указываю на референс камня, а не на сам активатор. Так что для меня происходящее - подлинная загадка. Пытался сделать два рефа, один базовый, другой динамический, но проблему не решило.
  20. ArtemSH

    Nehrim: На краю судьбы

    BloodLord, уррра!)
  21. по поводу таймера. наверное вот так стоит попробовать. вот кусок кода. rSong - референс на файл с музыкой, который будет играть в данный момент, не знаю, прямо скажу, как он должен задаваться, но суть с таймером должна быть понятна.
  22. Посмотрите скрипт в данном моде. Там буквально та же моделька флейты, если не изменяет память https://www.nexusmods.com/oblivion/mods/53841 Может быть, там будет ответ на вопрос.
  23. буквально сейчас попытался еще раз редактировать название ячейки (внутриигровое, не EditorID). ничего. ни тапание мышкой. ни опция edit результата не дают.
  24. У меня напарники реализованы почти так же. Я про этот отрывок:   Курс "введение в программирование". Было интересно и в нужной степени схематично, что помогает сформировать представление о феномене. И тренировка в написании кода была занятной) Радиус, к сожалению, не редактируется(  Расставить одни и те же, и они будут отображаться на карте? У меня довольно компактное поселение чтобы его нагружать примерно тремя маркерами, но притом именно столько и нужно чтобы объять все его границы, чтобы при выходе из помещений высвечивалось название поселения. Дилемма! Если бы они меняли название ячейки даже при условии, что они будут в состоянии initially disabled, то тогда бы это было подспорьем.
  25. Проверил тутор. Решение написано для creature, в виде установления стата intellect на 100. У неписей, я так понял, за это отвечает personality? Мне казалось, что это стат для отношения к игроку (disposition).
×
×
  • Создать...