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

gkalian

Администратор
  • Постов

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

  • Посещение

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

    7

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

  1. gkalian

    Morroblivion

    Не смотрели раздачу Морробливиона с рутрекера? Версия 0.64. Я там внятного описания озвучки игры не нашел, правда, но тем не менее. Выглядит так, словно там абсолютно все на русском.
  2. gkalian

    Чат

    Мм, голосование, которое мы заслужили. 
  3. katkat74, какого года и чей порт вообще? У меня тоже валяется билд так-то. Вообще года 3 назад мне говорили, что активная работа над квестами/диалогами ведется силой пары человек, а всякие модели - это постольку-поскольку, в общем-то, может быть сейчас все ровно тоже самое. Не помню, чтобы команда заявляла о необходимости переделывать каждую модель, как это делает Скайвинд.
  4. katkat74, Это программисты делают, разве что навмеши ручная работа. Чего что
  5. Rybak2, это портирование Обливиона на движок Скайрима. И судя по всему некоторая вольность в процессе разработки.
  6. А откуда моделька гуара?
  7. Ну ты бы еще с какого-нибудь файлохостинга приложил бы ссылок, чтоб наверняка. Форум не обрабатывает все хостинги и видеоплееры эвар, для каждого сайта надо отдельно настраивать. 
  8. Можете создать тему. В раздел "Видео" больше нельзя выкладывать пользователям.
  9. gkalian

    Чат

    http://tesall.ru/index.php?app=core&module=usercp&tab=core&area=ignoredusers  
  10. gkalian

    Чат

    Што
  11. gkalian

    Чат

    Разошлись по разным углам. Не хотите читать чьи-то сообщения, заблокируйте пользователя.  И не переходите на личности. 
  12. Короткая обучающая статья про основы скриптописания - базовая информация Откройте конструктор. Откройте File --> Data. В появившемся окне кликните двойным щелчком на Oblivion.esm, жмите ОК и ждите пока загрузится. В окне объектов (Object Window) найдите отмычку (lockpick). Вы найдёте её в пункте Items --> Misc Item (Если не нашли отмычку, подойдёт любой другой предмет, например яблоко). Дважды кликните на предмете. Откроется окно свойств предмета.Там где написано Script: NONE , кликните на кнопку с 3 точками расположенную рядом.Откроется редактор скриптов. Откройте Script --> New, чтобы начать новый скрипт. Напишите следующее: ScriptName HelloWorld Begin OnAdd Message "Hello World!", 10 end Информация о скрипте: Первая строка это имя вашего скрипта.Проверьте чтобы оно было уникально. "Begin OnAdd" означает что скрипт сработает после того как вы подберёте этот предмет. Команда "end" заканчивает секцию скрипта, начатую командой "OnAdd" И, наконец строка "Message" управляет тем, что будет показано, "10"-время которое надпись будет видна на экране. Сохраните скрипт, закройте редактор скриптов и редактор свойств предмета, но после этого ваш скрипт ещё не появится. Вернитесь в окно свойств предмета и "HelloWorld" должен появться в меню для скриптов(Вам вероятно придётся закрывать окно свойств предмета и повторно открывать его, чтобы ваш скрпт появился в списке) Жмите кнопку Save и закрывайте окно. Откройте File --> Save, назовите файл "HelloWorld"(получится .esp файл с именем HelloWorld) Откройте стартовое меню Oblivion и нажмите Data Files. Двойной щелчок не файле HelloWorld.esp Войдите в игру, выбросите отмычку и подберите её. Вам должно выскочить сообщение "HelloWorld"! Добро пожаловать в скриптинг!
  13. Что делать, если автор не дал psc файлы? ...В помощь переводчику... Перевод - это великое дело, но что делать, если переводимый текст записан в функции MessageBox "ля ля - фа фа", а исходника (.psc файла) этого скрипта злобный автор не предоставил. Не унываем - выход есть: Bethesda снабдила нас возможностью дезассемблировать скрипты, просто не сказала нам об этом. Итак, как это сделать: Ну это в принципе ясно - ставим "конструктор" Находим папку %gamedir%\Papyrus Compiler и обращаем в ней внимание на файл PapyrusAssembler.exe - это и есть ассемблер скриптов, а он-же и дезассемблер, если задать соответствующий ключ. Как им пользоватся? А всё просто: Устанавливаем рабочую папку в папку с .pex файлом, который нужно дезассемлбировать Ну, это сделать так, чтоб в утилите cmd перед курсором писалось например e:\Skyrim\data\Scripts, короче путь к интересующей нас папке. Это можно сделать набором команд cd или перейти в файлменеджере (напр. Total commander) в нужную папку и в командной строке набрать cmd и нажать "ввод". В командной строке (можно, даже лучше, создать .bat файл) пишем: "%gamedir%\Papyrus Compiler\PapyrusAssembler" имя интересующего нас pex файла, только без расширения> -D Жмём ввод. Итого, если всё написано правильно т. е. если программа написала: 0 error(s), 0 warning(s) Disassembly succeeded То ищем в папке с .pex файлом файл формата "имя нашего pex файла.disassemble.pas" - это и есть дезассемблированный файл, который хоть и имеет специфический формат, сильно отличающийся от формата psc файла, но уже являющийся текстовым и его можно редактировать. Итак. Редактировать. А что редактировать? А то же (названия функций принципиально не изменены т. е. забивай в поиск название функции напр. MessageBox (или Message), находи строку, в которой она встречается и редактируй текст в "кавычках". Оригинальный скрипт Scriptname _test_testscript extendsObjectReference   {Тестовыйскрипт "Привет мир!"} EventOnActivate(ObjectReference akActionRef) Debug.MessageBox("Привет, мир!") endEvent Дезассемблированный скрипт   .info         .source "_test_testscript.psc"         .modifyTime 1336688266;FriMay1101:17:462012Local         .compileTime 1336688290;FriMay1101:18:102012Local         .user "Администратор"         .computer "USER-B390813CF2" .endInfo .userFlagsRef         .flag hidden 0  ;0x00000000         .flag conditional 1     ;0x00000001 .endUserFlagsRef .objectTable         .object _test_testscript ObjectReference                 .userFlags 0    ;Flags:0x00000000                 .docString "Тестовый скрипт\n\"Привет мир!\""                 .autoState                 .variableTable                 .endVariableTable                 .propertyTable                 .endPropertyTable                 .stateTable                     .state                            .functionOnActivate                                     .userFlags 0    ;Flags:0x00000000                                     .docString ""                                     .return NONE                                    .paramTable                                         .param akActionRef ObjectReference                                    .endParamTable                                    .localTable                                         .local::nonevar NONE                                     .endLocalTable                                     .code                                   CallStatic debug MessageBox::nonevar "Привет, мир!"  ;@line6                                     .endCode                             .endFunction                             .functionGotoState                                     .userFlags 0    ;Flags:0x00000000                                     .docString "Function that switches this object to the specified state"                                     .return NONE                                     .paramTable                                           .param newState String                                     .endParamTable                                     .localTable                                            .local::nonevar NONE                                     .endLocalTable                                     .code                                             CallMethod onEndState self::nonevar                     ;@line??                                             Assign::state newState                                  ;@line??                                           CallMethod onBeginState self::nonevar                   ;@line??                                     .endCode                             .endFunction                             .functionGetState                                         .userFlags 0    ;Flags:0x00000000                                         .docString "Function that returns the current state"                                         .returnString                                         .paramTable                                         .endParamTable                                         .localTable                                         .endLocalTable                                         .code                                     Return::state                                 ;@line??                                    .endCode                             .endFunction                         .endState                 .endStateTable         .endObject Просмотрел? Увидел строку CallStatic debug MessageBox ::nonevar "Привет, мир!" ;@line 6 Это и есть интересующее нас место. Что тут менять - это и ежу понятно: "Привет мир!" (кавычки сохраняем - они - техническая часть текста) Ну поменяли. А что дальше? Да всё просто - ассемблируем! стираем из имени файла участок .disassemble и пишем всё то же, что и при дезассемблировании, только без ключа -D : "%gamedir%\Papyrus Compiler\PapyrusAssembler" имя интересующего нас pex файла, только без расширения> Если всё введено правильно то программа выдаст: 0 error(s), 0 warning(s) Assembly succeeded И создаст вожделенный .pex файл, который, ну, используем по назначению.  Всё! Скачать описание: в помощь переводчику.zip И ещё по одной... PapyrusAssembler Использование: PapyrusAssembler файл [-D] [-V] [-Q] [-A] [-S] [-?] Файл имя файла (путь берётся только из "рабочей папки", больше никак), который будет скомпилирован или декомпилирован. файл должен указыватся без расширения! Компилятор ищет файл с расширением ".pas". Декомпилятор ищет расширение ".pex". Внимание! декомпиляция не происходит, если имя файла скрипта не совпадает со стокой, начинающейся с байта 0Х12h в теле скрипта! (в нормальном состоянии строка дублирует имя файла) -D Дезассемблировать объект, если не указан - ассемблирует его. -V Включить подробный режим. (выводит туеву хучу всякой техинфы) -Q Включает тихий режим. (выводятся только сообжения об ошибках) -A Только анализ. Ассемблирование/дезассемблирование не производится. -S Удаляет отладочную информацию из скомпилированного (.pex) файла. Нельзя использовать с -A или -D -? Выводит справочную информацию PapyrusCompiler Использование: PapyrusCompiler файл или папка> [аргументы>] Объект Файл Указывает файл для компиляции. (-all не указан) папка Указывает папку для компиляции. (-all указан) Аргументы Один или несколько из следующих: -debug -d Включает режим отладки компилятора, на экран выводится техническая информация. -optimize -op Включает режим оптимизации кода скрипта. -output -o=путь к каталогу> Указвает каталог для записи скомпилированных скриптов. -import -i=путь к каталогу> Указвыает папки для импорта библиотек (тоже psc файлы) компилятором, разделённые ";". Обязателен для указания. Путь по умолчанию %gamedir%\data\scripts\source\ -flags -f=путь к файлу> Указывает путь к файлу с флагами, определёнными пользователем. Обязателен для указания. "дефолтный" файл флагов лежит по пути %gamedir%\data\scripts\source\TESV_Papyrus_Flags.flg -all -a Задаёт компилятору скомпилировать все psc файлы в заданной папке. (в качестве объекта должна быть заданна папка). -quiet -q Тихий режим. Отображаются сообжения только об ошибках. -noasm Ассемблер не вызывается и не производится ассемблирование скрипта. (короче только анализ) -keepasm Сохраняет ассемблер файл после завершения работы ассембера. (сохраняет pas файл) -asmonly Создаёт ассемблер файл, но не вызывает ассемблер. (создаёт pas файл, но не создаёт pex файл) -? Выводит справочную информацию. Файл TESV_Papyrus_Flags.flg (по умолчанию лежит в %gamedir%\data\scripts\source\TESV_Papyrus_Flags.flg.  Начинка по умолчанию и её описание: /* Формат строк задаётся следующим образом (пробелы игнорируются, index должен содержать 0 - 31 символов): Flag // Флаг применяется для всех типов или: Flag { список скриптов, параметров, переменных или функций> } // флаг применяется только для указанных типов */ // Список флагов для TESV - НЕ РЕДАКТИРОВАТЬ // Флаг прячет скрипт или параметр от игрового редактора. (ну небось типа в редакторе не отображается) Flag Hidden 0 { Script Property } // Флаг на объекте определяет его как скрипт, который будет рассматривать система состояний. // Флаг на переменоой определяет переменную скрипта как исследуемую системой состояний. // Сам нихера не понял, что это значит, но самый близкий перевод. Flag Conditional 1 { Script Variable } Скачать описание: папирус-справка.zip   ® Кащей tesall.ru
  14. Научный трактат для изощренных умов I. Создание новой организации Создать новую организацию в Морровинде просто. Зайдите в Character -> Faction, нажмите кнопку New и введите новый ID, а затем название своей организации в поле Name. То, что вы напишете в Name, будет видно игроку в диалогах и т.д., а ID видно только разработчику в КС. Однако не совсем ясно, зачем понадобилось создавать 2 поля - ID и Name, ведь информация, что в них написана, в оригинальном Морровинде просто дублируется. Однако, если вы проводите какие-то операции с этой организацией в скриптах и т.д., указывайте именно ID, а не имя. Например, ModPCFacRep, 5, "Imperial Legion" (повышает репутацию у игрока на 5 среди членов Имперского легиона). Обратите внимание - если вы начали создавать организацию, а вас что-то не устроило, то даже если вы нажмете на крестик, закрыв окно, ID и Name новой организации все равно останутся. Чтобы удалить организацию, используйте кнопку delete, что рядом с new. Приступаем к заполнению других полей в окне. Галочка Hidden from PC обещает сделать организацию не отображаемой для игрока в процессе игры. С помощью мышки можно выбрать Primary Skill, т.е. характеристики, которые ценятся в новой фракции, а также Favored Skills - навыки. Советую не писать, что левой ноге угодно, или что первое на глаза попалось, а тщательно продумать концепцию организации. В фентезийном мире, как правило, существует 3 направления - воины, маги и воры. Но в принципе в этом есть плацдарм, чтобы развернуться. Между прочим, уже можно записывать неписей в новую фракцию. Это делается через свойства персонажа. Теперь в топике «биография», если вы не написали оригинальную фразу или не повесили на персонажа скрипт с nolore, он будет представляться и называть «своим местом работы» эту новую фракцию. Итак, у нас уже достаточно материала для работы над плагином. На этом можно и остановиться, но если создавать полноценную организацию, то нужно продолжить. Какие черты у полноценных организаций в Морровинде? Конечно, в первую очередь система рангов! Начинаем создавать ранги. Это делается через выделение ячейки в специальном окне и нажатие кнопки F2. Тогда в ячейку можно будет вписать новое имя. Параллельно с надписью Favored Skill располагается несколько полей, куда вписываются значения характеристик, навыков и отношения среди членов фракции, которые необходимы для получения данного ранга. Разумеется, все это сделано для игрока. Обычного персонажа вы всегда можете записать в любые чины, независимо от его данных. Лучше всего сначала вписать все ранги, а потом отредактировать требования для них, чтобы карьерный рост шел равномерно. Если чувствуете, что добавили слишком много рангов, лишние можно удалить: выделите ячейку, нажмите F2 и клавишей back space (стрелочка над клавишей enter) снесите все знаки, - вместе с названием исчезнет весь ранг. В самом низу окна faction находится поле Reaction List, в котором можно указать реакцию (отношение к этой организации) других фракций. Правой клавишей мыши вызывает контекстное меню, нажимаем new, выбираем фракцию и выставляем отношение. Как видно, здесь можно вписать не значение расположения от 1 до 100, а только несколько цифр, так сказать, коэффициент расположения - это цифры -3, -2, -1, 0, 1, 2, 3. Соответственно, -3 обеспечивает самое негативное отношение, а 3 - самое высокое из возможных. Если вписать другие цифры, КС примет их, но при следующей попытке открыть плагин или запустить игру, устроит настоящую истерику по поводу «неправильного размера параметров» с отказом обрабатывать эти значения.   Все это также сделано только для игрока. Так что можно включить в список реагирующих саму новую организацию и выставить значение, как относятся одногруппники к Нереварину, если он состоит в этой же организации. Как правило, отношение у них очень хорошее: 3. Необязательно вписывать все существующие организации Морровинда.  В общем, в итоге у вас должно получиться примерно, как на скриншоте:   Ну, теперь редактирование свойств новой организации можно считать законченным. Остается только создать в мире игры представителей этой организации, их филиалы, книги и другие вещи.   II. Вступление и карьерный рост. Работа с диалогами Приступаем ко второй интересной части этой статьи. Рассмотрим, как можно организовать вступление Нереварина во фракцию и дальнейший карьерный рост. Это дело осуществляется, естественно, по большей части через диалоги. Можно привязать способность назначать должности к конкретным персонажам/высшим чинам во фракции через условия диалога - по ID, а можно, как в Доме Телванни, дать способность увеличивать ранг всем членам определенного ранга, выставив в условиях диалога фракцию и ранг говорящего. Повышение в ранге через скрипт здесь не рассматривается. Итак, создаем диалог с новой темой - предложение присоединиться к такой-то организации. Диалог можно развернуть. Ваш вербовщик может рассказывать о правилах и требованиях, ставить какие-то условия для вступления, выслушать отказ и т.д. Однако, если игрок согласен, нужно написать на этот случай в поле результата диалога - PCJoinFaction "ID_организация", что означает вступление в организацию. Теперь если игрок открыто прибьет кого-нибудь из своих, или если вы при редактировании предметов в интерьере указали extra data владельцем члена той фракции или всю фракцию, а игрока засекут при попытке взять предмет, то появится прекрасное окно с сообщением «Вас изгнали». Для лучшей атмосферы стоит создать несколько топиков, где персонажи смогут рассказать что-нибудь интересное и полезное об организации.  Существует несколько специальных диалоговых функций, которые можно использовать в диалогах и скриптах. Многое из нижеперечисленного работает только при условии, что игрок и непись являются членами указанных организаций: PCJoinFaction "ID_организации" присоединить игрока к организации. %PCRank называет чин игрока в диалоге. %NextPCRank следующий чин игрока по отношению к текущему. %Rank называет чин персонажа. GetPCRank, «ID_организации» в скриптах вычисляет ранг игрока в организации по порядку (то есть GetPCRank, «Blades» == 0 укажет на первый ранг среди Клинков, - Новичок). Значение -1 показывает, что игрок не является членом данной фракции. PCRaiseRank повышает ранг игрока. PCLowerRank понижает ранг игрока. RaiseRank повышает ранг персонажа. LowerRank понижает ранг персонажа. PCExpell "ID_организации" изгоняет игрока. Между прочим, статус «изгнан» не вычеркивает из организации, как вы можете заметить. PCClearExpelled "ID_организации" — восстанавливает положение. ModPCFacRep, 5, "ID_организации" повышает расположение к игроку (в данном случае на 5 единиц) для членов всей организации в целом. Можно написать отрицательное значение. SetPCFacRep, 100, "ID_организации" устанавливает определенное расположение к игроку. ModFactionReaction, "ID_организации1", "ID_организации2", 5 изменяет отношение фракции 1 к членам фракции 2. Разумеется, заметить это может только игрок. ModFactionReaction, "ID_организации1", "ID_организации2", 5 устанавливает расположение членов одной фракции к членам другой. Get/Mod/SetReputation определяет/изменяет/устанавливает значение для репутации игрока. Get/Mod/SetDisposition тоже самое с расположением непися к игроку. Условия в диалогах Faction если говорящий принадлежит к определенной организации. Rank если говорящий имеет ранг в вышеуказанной организации, не менее чем выбранный по условию. PCfaction если игрок принадлежит к определенной фракции. PCRank если игрок имеет определенный ранг. Function -> Same Faction Когда выставляется значение 1, говорящий произнесет фразу только если игрок принадлежит к той же организации, что и он. Function -> Faction Rank Difference используется в диалогах, чтобы вычислить расстояние на карьерной лестнице между говорящим и игроком. См. об этом ниже. Function -> Rank Requirement требования к рангу. Используются при повышении. См. ниже. Для карьерного роста обязательно нужно создать новые фразы в топике Повышение, или создать другой топик со сходным названием. Тут будет решаться карьерный вопрос. Разумеется, говорящий должен состоять в нужной организации и игрок также, а то получится странная картина.   Повышение в сущности зависит от двух факторов, а точнее даже от того, как  эти два фактора соотносятся с требованиями для того или иного ранга. Эти факторы - репутации во фракции (создается через команду ModPCFacRep Число «ID_фракции») и значения навыков игрока, важных для этой организации. Не обязательно для каждого ранга создавать особую фразу. Карьерный рост был автоматизирован разработчиками из Bethesda. Существует функция rank requirement (требования ранга), у которой могут быть значения 0, 1, 2, 3. Ориентируйтесь на нижеприведенную таблицу и располагайте свои фразы в той же последовательности.  № Что случилось Пример фразы Условие в диалог Что пишем в поле result диалога 1 Игрок был изгнан Вы преступили воровские законы чести. Внесите компенсацию, или вам никогда не получить звание %PCNextRank. Function -> PC Expelled == 1 Ничего 2 Если игрока нужно восстановить во фракции Говорят, вы были изгнаны. Я позабочусь об этом для вас Function->PC Expelled== 1 PCClearExpelled «ID_организации» 3 Игрок спрашивает о повышении. Но его репутация пока слишком мала в организации, недостаточно развиты нужные навыки С честью исполняйте приказы и совершенствуйте свои навыки. Вы еще не готовы. Function -> Rank Requirement == 0 Ничего 4 Игрок спрашивает о повышении. Навыки достигли нужного уровня, но репутации мало Ваша техника превосходна, но некоторые ставят под сомнение глубину вашей преданности. Вы должны с честью исполнить еще больше приказов для Мораг Тонга. Эти приказы уже выходят. Function -> Rank Requirement == 1 Ничего 5 Игрок спрашивает о повышении. Репутация на достаточном уровне, но навыки - нет Пока что у вас нет тех качеств, которые мне нужны, %PCName. Может быть, позже. Function -> Rank Requirement == 2 Ничего 6 Игрок получает повышение. И навыки, и репутация на нужном уровне Отлично, %PCName. Теперь вы %PCName %NextPCRank. Function -> Rank Requirement == 3 PCRaiseRank   7 Игрока понижают в ранге Как ты мог вызвать атронахов и плясать с ними на столах в библиотеке, дразня при этом Требониуса?! Что-то должно быть указано в PCFaction и PCRank, а кроме того нужна причина для понижения, отраженная в условиях диалога PCLowerRank   8 Игрока нужно изгнать из фракции Пошел нафиг! Function -> PC Expelled == 0 PCExpell «ID_организации» III. Разные полезные штуки Нарушения или «первый раз прощается, второй раз запрещается». Чтобы не создавалась ситуация, когда игроку за нарушение достаточно поговорить с кем надо, и таким образом нарушать правила бесконечно, можно сделать условия, при которых игрока прощают за нарушение только 1 раз. Затем, если он изгоняется повторно, восстановление невозможно. Создайте новую глобальную переменную типа short под названием типа ExpFaction. Когда восстанавливаете его в первый раз, напишите в результате диалога: PCClearExpelled "ID_организации" Set ExpFaction to 1 Затем создайте новую печальную фразу на случай очередного изгнания с условиями Function -> PC Expelled == 1 Global -> ExpFaction == 1 С содержанием типа - «прости, дорогой, ты уже нарушал правила и был изгнан. Восстановление невозможно». В услуге отказано Можно создать ситуацию, когда некоторые учителя или торговцы отказываются вступать в сделки с игроком, пока он не достигнет высокого звания. Для этого откройте диалоги и во вкладке Persuasion ->Service Refusal создайте для отказника фразу, где он говорит об этом отказе. Нужно указать ранг для говорящего (высокий, ведь «мои услуги зарезервированы только для высших чинов») и условия диалога: Function - Same Faction == 1 Function - Faction Rank Difference - 3 (то есть разница между говорящим и игроком 3 и больше звания. Можно указать другое число). Сундук с припасами Хорошая вещь. Создается через редактирование какого-нибудь стандартного сундука. Чтобы припасы восстанавливались раз в месяц,  поставьте галочку Organic Container и Respawns. Обязательно нажмите флажок extra data и выставите владельца, то есть фракцию. Вашу новую организацию, как и стандартные морровиндские фракции, можно найти в этом списке на букву F (Faction). Рядом можно выставить ранг, при достижении которого дозволяется пользоваться сундуком. Зарплата Неплохим бонусом для молодого Нереварина может послужить ежемесячная зарплата. Причем, она тем больше, чем больше его статус в организации. Такая фича была реализована в западном плагине Salaire Legion Imperiale by BOUCLETTE, адаптированном Winddancer, иначе говоря - зарплата членам Имперского Легиона. Выплаты производятся каждый месяц первого числа. Золото сразу оказывается в инвентаре. Чем выше ранг в Имперском Легионе, тем выше зарплата. А создается эта ситуация всего лишь одним глобальным скриптом. Он вычисляет ранг и месяц. Как только месяц меняется, происходит однократное добавление денег в инвентарь игрока в соответствии с определенным рангом. Посмотрите: Begin SalaireLegionImperiale short currentMonth if (currentMonth != Month) set currentMonth to Month if (getPCRank "Imperial Legion" == 0) Player->AddItem Gold_001 100 endIf if (getPCRank "Imperial Legion" == 1) Player->AddItem Gold_001 230 endIf if (getPCRank "Imperial Legion" == 2) Player->AddItem Gold_001 410 endIf if (getPCRank "Imperial Legion" == 3) Player->AddItem Gold_001 670 endIf if (getPCRank "Imperial Legion" == 4) Player->AddItem Gold_001 990 endIf if (getPCRank "Imperial Legion" == 5) Player->AddItem Gold_001 1340 endIf if (getPCRank "Imperial Legion" == 6) Player->AddItem Gold_001 1710 endIf if (getPCRank "Imperial Legion" == 7) Player->AddItem Gold_001 2150 endIf if ( getPCRank "Imperial Legion" == 8) Player->AddItem Gold_001 2540 endIf if ( getPCRank "Imperial Legion" == 9) Player->AddItem Gold_001 3100 endIf endIf End SalaireLegionImperiale Напоследок несколько советов: Хороший карьерный рост осуществляется только при наличии интересных квестов. Не забывайте в поле result диалога по мере продвижения игрока в карьере периодически прописывать ему повышение отношения и/или репутации. А то как же он будет расти в карьере? Странная была бы ситуация, если бы повышать в высокий ранг могли персонажи любого ранга! Проследите, чтобы тот, кто занимает ранг Новичок, не смог повысить игрока до звания Мастер. Для этого создайте повыше фразу для Новичка с условием PCFaction, PCRank «ранг, выше которого он не может повысить» с содержимым: «Я не могу повысить тебя до звания %PCNextRank, т.к. я только %Rank». Хорошо бы обыгрывать получение самого высокого ранга с отдельным квестом, с особым испытанием для игрока, так чтобы получение этого высшего ранга стало для него достойной наградой за труды. Удачи и творческих успехов! Между прочим, изгнание в Морровинде не стоит всегда воспринимать как позорное изгнание. Эта функция может открыть много перспектив.
  15. Инструкция по созданию бампа в Морровинде, опубликованная в далеком 2007 году. Авторы: Тореро & Ej-12 (ejov3003@mail.ru) Коррекция - TJ, Siegrun Содержание Введение Что такое Бамп и зачем он нужен Особенности работы с Бампом для Морровинда Создание бампа Инструменты для создания бампа За дело! Этап 1. Создание модели Этап 2. Работа над текстурой бампа Этап 3. Алхимия NifScope Этап 4. Настройка бампа Этап 5. Настройка сложных двуслойных моделей Маленькие секреты бампа Немного о TES-шейдере Еще немного о NifScope Как сделать Бамп только Нифскопом Довесочек Приложение Немного о текстурах и их форматах Немного о Мешах (Meshes) Еще немного полезного Введение Что такое Бамп и зачем он нужен. Бампмаппинг – это способ на плоской поверхности имитировать рельефность или неровность, в результате чего изображение становиться более объемным и реалистичным. Этот эффект достигается при помощи сочетания света и тени, путем различной степени освещенности каждого пикселя поверхности на основе значений, зафиксированных в специальной карте высот, которую называют bumpmap. Даэдрическая броня, до и после Особенности работы с бампом для Морровинда. Морровинд - игра, созданная на заре современных технологий, когда о Картах Нормалей, БампМаппинге, ПаралаксМаппинге и прочих текстурных «извращениях» еще знать не знали, слышать не слыхивали, а если и слышали, то только в новостях и в сплетнях, и то далеко не многие. Все было просто - была модель из нескольких полигонов, на ней одна простенькая текстура и куча кайфа от игрового процесса. Но не об этом речь. Казалось бы, что от игрушки тех времен ожидать чего-то большего нельзя, ну, может, модели новые создать не из 10 полигонов, а из 100. Но как, к счастью, выяснилось, все куда интереснее! Морровинд оказался как раз на стыке двух эпох игростроя - современной эры смазливых коммерческих проектов и старых добрых игр от души и для души, которые делались, как говорится, не за страх, а за совесть. Вот и впитал в себя наш «Старичок» все лучшее, что было на тот момент. Атмосферу и сюжет от прошлого поколения и продвинутый движок от надвигающегося. Хотя об этом тогда еще никто не догадывался. Тем паче, что многое еще было сокрыто от глаз геймеров слабыми видеокартами и «добрыми дядями», изрядно «облегчившими» игру. Но семя в лице опередившего свое поколение движка было таки посажено и, благодаря усердным стараниям любителей Игры, принесло плоды, сбором которых мы сейчас и займемся. Понятно, что несмотря на свою продвинутость, движок Морровинда далек от совершенства и тем паче от возможностей современных игровых движков, в частности, своего прямого последователя TES IV: Oblivion. Так что для достижения дополнительных текстурных эффектов (бампа (bump) в данном случае) ему нужна некоторая помощь: Карты Отражений (reflect map) , без которых Bump просто не будет работать и, собственно, текстура рефлекта (отражения), заменяющая моделям источник света, который отрисовывает Bump. Создание бампа Инструменты для создания бампа А) Nifskope, собственно самый главный инструмент в нашей работе. (ищем здесь). Лучше взять старую версию, 0.8.5 от (2006-05-25 00:07), последующие версии больше заточены для работы с мешами Обливиона и с Морровскими моделями не всегда работают корректно, поэтому все нижеследующее относится к 8.5 версии Нифскопа. Б) 3DMax – версии 5.1 или 4. Возможно использование любого другого 3Д редактора, поддерживающего экспорт моделей в формат Морровинда. Т.к. при необходимости карту отражения можно добавить потом, через Нифскоп – об этом ниже. Но все-таки предпочтительнее использовать МАКС. Еще лучше держать все возможные модули, это бывает полезно, хотя при экспорте может возникать некоторая путаница. В) Модули импорта/экспорта формата .nif. Для экспорта лучше всего использовать официальный плагин от Bethesda, т.к. плагин от разработчиков Нифскопа весьма глючен и часто приводит Морровинд в полное расстройство. Хотя, если у вас с ним проблем нет, используйте его. Г) Для создания текстур Бампа нам понадобится Photoshop, любой версии с .DDS-плагином от nVidia (этот) либо поискать более старую версию этого же плагина на других сайтах. Д) TES CS – куда нам без него. Е) Для просмотра графики в .dds-формате (им лучше всего пользоваться для текстурирования см. приложение) понадобится XNView – программа для просмотра. За дело! Этап 1. Создание модели Для начала создадим новую модель или импортируем готовую модель из Морровинда. Например, сделаем такой кирпич. Теперь идем в редактор материалов. Можно нажать «М» на клавиатуре.  Выбираем материал «Blinn» (с ним проще всего работать) или «Blinn» – материал по умолчанию. – с чем работаем. – здесь выбираем материал. – задаем параметры, каким оттенком будет «светиться» наш кубик на свету и в темноте, здесь же задаем уровень (999х76) забликовки, прозрачность (об этом ниже) и цвет самоосвещения. Если поставить что-то кроме черного, у вас получится спецэффект;). – назначаем текстуры. Слот Diffuse – базовая текстура и слот Reflect – то, что у нас будет изображать из себя Свет. Пока здесь все, идем по пути File -> Export -> Nif Format, сохраняем модель и запускаем CS, чтобы посмотреть, что у нас вышло: А вышло у нас следующее, кирпичи в ассортименте: Ну, когда-то и это было очень даже здорово и иногда вызывало прямо-таки поросячий визг от радости достижения нового эффекта в игре, но теперь это в прошлом. Хотя и сейчас вполне может использоваться для разных надобностей. Например, для стеклянных, идеально гладких поверхностей. Насмотрелись? Идем дальше. Этап 2. Работа над текстурой бампа Запускаем Adobe Photoshop. Берем то, из чего мы хотим сделать Бамп (BumpMap) и делаем это с помощью DDS-плагина от Nvidia. Если у вас по каким-то причинам нет этого плагина, вам придется много повозиться с заливками, выделениями и другими инструментами. :( Однако, иногда можно упростить себе работу, использовав в качестве бампа (BumpMap) сильно осветленную текстуру. Чем Светлее — тем выше будет уровень неровностей. Также можно поднять уровень Синего, нажав комбинацию CTRL+M и отредактировав каналы RGB. Cм. рис. 8 сделано по быстрому, но вполне может подойти. Помимо возможности импорта\экспорта, сей плагин добавляет в меню Filter раздел NVDIA TOOL, в котором и сидит нужный нам фильтр. На изображении: уровень сглаживания, насколько будет резкий контур у бампа. высота, чем больше значение, тем более «рваным» будет рельеф, экспериментируйте. метод создания, рекомендуется либо COLORSPACE либо МАХ(R.G.B.) фильтрация альфа-канала. экспериментируйте Сохраняем в .dds-формате ДХТ3 (подробнее см. приложение) и запускаем Nifskope. Этап 3. Алхимия NifScope Приводим его в удобный для себя вид и делаем примерно ниже следующие: Щелкаем мышкой на нашем кирпиче, при этом в окне блоков выделится его NiTriShape, раскрываем + NiTexturingProperty (настройки, свойства текстуры), снова раскрываем + и строку NiSourceTexture (назначенная текстура). Теперь правой кнопкой мыши (ПКМ) - NiSourceTexture, Copy Branch – копировать связь. И сразу же ПКМ – Paste Branch. Внизу окна BLOCK LIST появится еще одна строка, в данном случае №9 (NiSourceTexture), вот его нам сейчас и будет нужно. Снова - ПКМ, только вместо раздела Block выбираем раздел Texture – Choose, ищем через появившееся окно проводника свою текстуру бампа (Bump). Либо кликаем два раза ЛКМ по строке NiSourceTexture в колонке VALUE (значение), она откроется для ручного ввода имени текстуры, куда и забиваем нужное. Путь указывать не нужно. - Это важно! Если у вас будет жестко заданный путь, МW в ряде случаев не находит текстуру, особенно если текстуры упакованы в .BSA. Вообще почти все строчки в NifSkope поддаются ручному вводу по 2ЛКМ. Совет: называйте вашу BumpMap текстуру аналогично базовой. Например ХХХ1.dds – имя базовой текстуры, а ХХХ1_NM.dds - имя Бамп-текстуры, ХХХ1_dt.dds — DetailMap текстура деталей, ХХХ1_g.dds — GlowMap текстура Свечения, ХХХ1_DR.dds — DarkMap текстура «грязи» :) добавочная к DetailMap можно сделать больше темных пятен. Таким образом, вы сможете быстро менять имена текстур, что очень выгодно при обработке многострочных моделей. Этап 4. Настройка бампа Выделяем раздел NiTexturingProperty нашего NiTriShape. Смотрим в окно Block Details (детальное содержимое блока) видим несколько строк с до боли знакомыми названиями, :) нам нужен, понятно - BUMP — строка Bump Map Texture. Раскрываем плюсик и начинаем все менять (все раскрывается двойным кликом левой кнопки мыши (ЛКМ) ). Is Used --- «NO», меняем на «YES»!!!!! (двойной клик) Source --- № строки с текстурой здесь: NiSourceTexture №9 Clamp Mode – рекомендуется 3 (методом научного тыка, получается наиболее ровный Бамп) Filter Mode – 2 (аналогично предыдущему) Texture Set – 2 (см. выше) так или иначе, изменение этих значений весьма заметно, химичьте. Пропускаем ряд строк, можно сделать как на скрине ниже, но это все не так заметно. Bump Map Luma Scale – 1.0000, либо 0.9000 – более мелкий рельеф будет. Или еще как  :) Bump Map Luma Offset – оставить по нолям. Matrix – рекомендуемые: м11, м12 – на 1.0000, тогда м21 и м22 по нулям оставить, либо менять наоборот. Или как на скрине, менять только последние цифры. Это очень важный раздел настроек БАМПА (Bump Map)- задается высота, глубина и резкость текстуры. Экспериментируйте, рис. 11 приведены оптимальные настройки. В принципе, все это базовая настройка добавления Карты Бампа. Жмем «SAVE» и идем в TES 3: CS возрадоваться делом рук своих. Этап 5. Настройка сложных двуслойных моделей Все вышеприведенное, конечно, хорошо и красиво, но иногда хочется чего-то большего, например, задать модели какой-нибудь дополнительный рисунок. Например, чтобы из под облезшей краски поблескивал металл, или по тусклой стали был нанесен рисунок позолотой. Здесь без двухслойного меша не обойтись. Задача, в общем, простая, - нужно текстуре нарисовать альфа-канал, а как это делается, описано во многих пособиях, поэтому я не стану на этом задерживаться. Наша задача - заставить правильно работать Bump с Reflect-ом на этом самом прозрачном меше, а тут не все так просто, особенно у GeForce. Если этого не сделать у вас будет то что на картинке справа: двухслойный меш основа Запускаем Adobe Photoshop! Открываем текстуру, из которой собираемся сделать Bump Map. Выделяем нужные элементы, которые должны быть непрозрачными, загружаем их в альфа-канал и, не снимая выделения, запускаем NVDIA TOOL – создаем, как указано выше, текстуру. Только не забудьте перейти с альфа-канала на RGB-канал. Теперь инвертируем выделение и жмем Delete - должен получится синий рисунок на черном поле. Или наоборот, Черный на Синем. Этот ход — выделение каналов R, G или B с последующей генерацией Бампа и удалением выделенного может применяться и в других случаях. Соответственно, наличие альфа-канала обязательно. По-видимому, такие сложности есть только у GeForce, для видеокарт семейства ATI достаточно просто создать альфа-канал на обеих текстурах. Настройка Двуслойности в 3dsMax. Для тех, кто вдруг не знает. Выделяем модель (участок модели), которой нужен второй слой. Идем в меню правки, ищем CLONE (клонировать), жмем. Или, выделив полигоны, жмем «ПКМ» - DETACH — не забудьте поставить галку напротив AS A CLONE. Теперь скроем все ненужное. ПКМ по модели – HIDE SELECTION (скрыть выделение). Переходим в редактор материалов, где создаем новый или копируем (просто перетащить «ЛКМ» в соседний слот) уже имеющийся материал, задаем материалу новое имя вместо 2 – Default на что-нибудь другое. Это важно. В разделе ПРОЗРАЧНОСТЬ (opacity) вместо 100 ставим 99. Спускаемся в раздел MAP (КАРТA) выбираем DIFFUSE COLOR, «ЛКМ» - попадаем в меню подробных настроек, в самом верху кнопка BitMapParameters, жмем, здесь выбираем текстуру для второго слоя, содержащую альфа-канал. Все, вываливаемся обратно в меню настроек карты, жмем стрелку вверх и возвращаемся в основное меню настроек материала. Если надо, проделываем то же самое с картой отражений, т.е., меняем то, что изображает из себя освещение. Назначаем новый материал клонированному объекту. Теперь «ПКМ» unhide all – показать все. File -> Export -> Nif. Открываем модель нифскопом, долго и упорно кликаем по объекту, чтобы найти, где у него какой слой:). Или ищем его в Block List. Когда очень большая модель, 2-5 сотен строк, проще кликать по объекту, чем просматривать все строки. Маленькие секреты Бампа. Если на готовой текстуре Бампа нарисовать что-то черным цветом, эти места будут затемнены на модели, по ним не будет двигаться рефлект. Текстура должна быть без альфа-канала, либо затемнение должно находиться на непрозрачности. Также можно использовать выделение Каналов с последующим удалением выделенного. См. Рис. 17, 18. Полностью «гладкий» бамп иногда тоже полезен. Генерится из чистого фона (белый, черный). Либо простая заливка Светло-синим, Сиреневым, Голубым цветом. В качестве Бампа можно использовать и базовую текстуру, но в этом случае модель будет очень сильно затемнена, что иногда бывает полезно. Немного о TES-шейдере. Это материал специально для моделей Морровинда. TES-шейдер поддерживает Bump, но не поддерживает Reflect – из-за чего работает он только с зачарованными предметами, на которые движком игры накладывается текстура, изображающая из себя свечение. Он не поддерживает Bump и GlowMap одновременно - это сочетание приводит к вылету Construction Set на рабочий стол, ну, и игры, вестимо. Он поддерживает Detail Map – карту детализации. Он очень хорош для создания кожаных и деревянных элементов для модели. А также для работы с бипедными (содержащими скелетную привязку) моделями (Biped). А для второго слоя часто незаменим, особенно, если нужно нарисовать грязь. Может использовать Displacement. Dark Map – можно сделать очень темные пятна. Для рендеринга текстур в Максе – назначать текстуру на Gloss Map. Decal Map – иногда тоже бывает полезна. Немного о настройках: Для достижения прозрачности, альфу на 0.9. Particle Colors – применять к системам частиц Displacement ставить не выше 10, и при этом в модели должно быть много вертексов. Это применительно ко всем материалам. Еще немного о Nifskope Возможно добавить GlowMap для любого материала с бампом, даже для TES shaders. Базовые настройки: Для остальных слотов Detail Texture, Dark Texture и пр., кроме Bump Map Texture. Is Used --- «NO», меняем на «YES»!!!!! Source --- № строки с текстурой. Создается отдельно. Clamp Mode – рекомендуется 3 Filter Mode – 2Texture Set – не менять, иначе в КС и в окне Nifskope эта текстура не будет отображаться. Игры это не касается. Остальное – экспериментируйте... Важно, при копировании Branch-ей используется глобальный Буферобмен, поэтому если вы начнете копировать имена Текстур, или еще что, информация о линках пропадает! Возможность редактировать, добавлять эффект отражения в готовые модели, не подвергая их истязанию в 3DS Max, что особенно удобно с анимированными моделями, например, луками (см. ниже) А вот это можно увидеть только в TES CS, GlossMap, добавленная через NifScope, в игре не отображается: Как сделать Bump только c помощью NifSkope С большими проблемами, чем с использованием 3DMax`а, но можно. А может, и с большим кайфом :) По настроению. ВАРИАНТ «А» (на случай отсутствия варианта «Б») ПКМ –> Block –> INSERT – жмем на Т ищем – NiTextureEffect (скриншоты ниже) Дублируем уже имеющийся Branch с текстурой (см. выше в добавлении Бампа). Идем в NiTextureEffect и прописываем № выше созданной строки, куда прописываем текстуру для отражения, и ставим нужные параметры. Подсматриваем их в уже готовой модели, для этого рекомендуется держать перед собой второе окно NifScope с уже готовой моделью. Ее можно взять из любого плагина серии BetterArmor или BetterWeapons за авторством тов. EJ-12.  Настроив таким образом Effect, идем в раздел NiNode – собственно, кликнув по модели и поднявшись со строки NiTriShape на NiNode, к которому она принадлежит. Выделив NiNode, смотрим в Block Details, где ищем строки Children и Effects и там и там, ПКМ -> Add empty link – добавить еще одну пустую связь. При этом значение Num Indices должно увеличиться на +1 (для удаления забить на -1 и нажать ПКМ - Update). В появившихся строчках забиваем № строки нашего текстурного эффекта (NiTextureEffect). Все, если вы все сделали правильно, то останется проверить вашу модель через КС и, если он сразу не вылетел, но показал модель во всем блеске, добавьте Бамп, как было указано выше, и приступайте к изготовлению следующей модели. Да, кстати, цифры в NiTextureEffect очень важны - они задают поведение текстуры отражения на модели, иногда можно добиться интересных результатов, но часто это все выглядит как ошибка, или приводит CS к краху. ВАРИАНТ «Б» Открыть перед собой 2 окна Nifskope. Ваша модель и Настроенная модель В готовой модели находим строку с готовым NiTextureEffect. ПКМ по ней. И COPY BRANCH. В вашей модели PASTE BRANCH Делать, как описано в ВАРИАНТЕ “А”, прилинковать ваш Эффект к нужной НОДЕ. Базовые настройки TextureEffect Scale — размер текстуры, насколько она масштабируется. Texture Filtering — 1-2 стандартно Texture Clamping — 3 Texture Type — 2 Coordinate Generation Type — 2 особенно заметны изменения см. рис. 28 Все выше описанное, только в картинках :) Так выглядит модель в КС без Бампа: А вот ниже - уже с Бампом. Использована Базовая текстура, как на Отражение, так и на Бамп. Довесочек О том, как в .nif вставить часть другого .nif`а, или "Одеваем Скелетов"! Здесь работает та же логика, что и в работе с текстурами, т.е., создаем/добавляем что-то новое и привязываем его к уже существующему. Только вместо текстур у нас участвуют части модели. Итак... Открыть перед собой 2 окна NifSkope. Ваша модель и модель из которой вы хотите что-то “выдрать”. В готовой модели находим нужную вам деталь (косточка у скелета, или наплеченик) ПКМ по ее NiNode. Берите всю ноду (а не один NiTriShape), так можно использовать уже имеющиеся на ней эффекты. К тому же, в одной ноде может быть много частей одной детали. COPY BRANCH. В вашей модели PASTE BRANCH. Появится нужная вам нода. Важно, в моделях со скелетной привязкой не копируйте базовую ноду. См ниже. Теперь переходим к линкованию. Кликните по той части вашей модели к которой вы хотите добавить новую часть. Например, одеть шлем на голову скелета. Кликаем по голове и поднимаемся к ее родительской ноде. Т.е., к тому элементу, при раскрытии “+” коего появляется все остальное. Выделите эту NiNode и посмотрите в Block Details строку Children. Убедитесь, что там указан тот NiTriShape, к которому вы добавляете новую деталь. Выделив NiNode, смотрим в Block Details, где ищем строки Children и Effects и там и там, ПКМ -> Add empty link – добавить еще одну пустую связь. При этом значение Num Indices должно увеличиться на +1 (для удаления забить на -1 и нажать ПКМ - Update). Дописываем № свежей вставленной NiNode. Если вы сделали правильно, Новая деталь встанет на указанное ей место. Это если вы работаете с простыми, не содержащими Бипед объектами. Но если вы хотите одеть костлявого в мантию, вам придется прилинковать объект к “NiNode Bip01”, т.к. Мантия уже содержит скелетную привязку. А в самом файле с мантией скопировать “NiNode chest”. Все вышеизложенное относится к Бипедным объектам. Скелеты, святоши, дреморы и прочие прямоходящие товарищи. Но в случае с четвороногими (ползающими, летающими и пр.) существами дело несколько усложняется. Их модели имеют более сложную структуру. В ней видимые части модели являются отдельной от костей группой. В бипедных моделях кости и их оболочки входят в одну группу. Таким образом, новые оболочки приходится линковать не к NiTriShape-ам видимых в окне рендеринга частям модели, а к NiTriShape-ам группы Root Bone. Это несколько затрудняет поиск нужной части (NiNode – Bone X). Однако и это вполне решаемо. Важно: если вы одеваете вашу модель в разносторонние части (Левый и Правый наплечники, например) вам придется сделать вторую деталь с нуля. Иначе она у вас будет перевернута. Также, некоторые детали не встают точно на объект (например Шлем на череп скелета, или Усы для крысы). Их придется подгонять/позиционировать через 3dsMax. БЛАГОДАРНОСТИ. Разработчикам NifSkope, без этой славной утилиты не было бы этой красоты. Bethesda, так любезно оставившей эти возможности движка и выпустившей плагин для 3dsMax. Товарищу Deathruler’у с славного сайта www.fullrest.ru, который первым из Российских модмейкеров нашел эту возможность. Товарищу EJ-12, который стал активно разрабатывать эту золотую жилу, выпустив на момент написания статьи 18 плагинов с использованием этих возможностей. А также активно помогал в написании этой статьи. И всем Модмейкерам, своими трудами не дающими кануть в забвение Великой Игре! Приложение Немного о текстурах и их форматах: Итак, Морровинд понимает три типа текстур: А) *.bmp - самый лажовый Древнющий формат аж со времен Windows 3.11, может быть как с индексированными цветами - 8-мибитный (всего в палитре 256 цветов на все, аналог gif-а), так и полноцветным - 24-х битный (16777216 цветов) и, ко всему прочему, формат абсолютно без сжатия (нет, в случае 8-и битного изображения доступно RLE-сжатие, но не слишком помогает, да и хромает совместимостью) и весит на порядок больше, чем все остальное, не поддерживает прозрачность, не поддерживает mip-level's (о них дальше)... В общем, одни минусы у этого формата, пещерный век, короче. Б) *.tga - более приемлемый Формат видеостанций TrueVision может быть сохранен в виде: 16 бит (65536 цветов) - не используется, кому сейчас нужен этот 16-тибитный цвет времен 2-й кваки? 24 бита - полноцветное изображение без альфа-канала, стало быть, и без информации о прозрачности текстуры 32 бита - полноцветное изображение с альфа-каналом (для игры Morrowind имя альфа-канала обязательно Alpha 1, для других может быть любым, но, в принципе, Alpha 1 - это эталон для всех, просто не задокументированный) Cжатия тоже нет, но метод сохранения данных другой, поэтому вес файлов в разы меньше аналогичных *.bmp Не поддерживает мип-уровни (mip-level's) В) *.dds - форева! Формат DirectX - Direct Draw Surface. Также просмотр возможен с помощью XnView (мега-смотрелка, лучше ACDSee на порядок). Плюсов - масса, минусов - не отмечено. Формат с отличным сжатием за счет удаления некоторой информации, которая глазом не фиксируется (или очень мало фиксируется). В общем, как и jpg, поддерживает создание мип-уровней (mip-level's) mip-maps - это уменьшенные в два раза на каждый уровень копии оригинального изображения. Чем дальше находится объект от игрока, тем меньшая по размерам текстура используется для этого объекта. C одной стороны это уменьшает нагрузку на видеокарту, с другой стороны при уменьшении текстуры происходит ее фильтрация и она будет смотреться сглаженной, а не зернистой. В случае, если большая текстура натянута на маленький объект, у текстуры 1024*1024 - 9 мип-уровней, и если объект расположен на границе видимости, для него будет применена не вся огромная текстура, а последний мип-уровень 2*2, почувствуйте разницу... - поддерживает разные типы сохранения изображения, а главное - альфа-канал, все DXT - это 24 бита на RGB-информацию и отличаются только по сохранению альфа-канала. DXT1 без альфа-канала - сответственно, без прозрачности DXT1 с альфа-каналом - альфа-канал сохраняется как однобитный - либо он есть, либо его нет - четкая граница между прозрачностью и непрозрачностью. DXT3 - четырехбитный альфа-канал - градиент из 16 цветов, подходит для большинства текстур, у которых на краях должен быть небольшой участок полупрозрачности. DXT5 - восьмибитный альфа-канал, градиент из 256 оттенков, может потребоваться для больших объектов с протяженными участками полупрозрачности от максимальной непрозрачности к полной прозрачности. Остальные 20 вариантов сжатия текстуры нам без надобности, у них свои специфические методы применения. Немного о Мешах (Meshes) А) Какой 3DSMax нужен для работы с ними? Плагин экспорта TESExporterMax4 существует в версиях для 3DSMax3 и 3DSMax4, версия для четвертого макса также работает и с пятым максом, НО в пятой версии гарантирован крах с экспортом скелетной анимации (99%) и редко скелетной привязки (одежда), а также возникают ошибки при экспорте анимации морфингом (лица) (от редактора – скелетная привязка как раз лучше в пятом работает, а вот анимация… особенно модификатор Morfer, который применяется для анимации лиц и луков, крайне проблематично - 99-100% вылет макса в Ошибку. Так что 5 - форева, 4-ка - для анимации лиц и оружия.) Б) Как импортировать? Есть только два пути: Первый - NifImport - не может импортировать файлы со скелетной привязкой (не всегда правда, иногда получается), не может импортировать файлы со скелетной анимацией (анимацию никто не может импортировать), частенько глючит на мегаздоровых по размеру файлах, портит UVW-координаты текстур (отражает их по вертикали), путь к текстуре в материале надо прописывать заново, т.к. хранится только имя текстуры и ее путь относительно корневой папки Морровинда Второй - Nifto3ds - конвертирует nif-модель в древний формат 3d-графики *.3DS, который понимается большинством 3d-редакторов - не может импортировать скелетную анимацию, разбивает все объекты сцены на "объекты по материалам" - то есть, если была одна сетка с тремя материалами - будет разбита на три части, каждая из которых имеет свой материал, не сохраняет сами материалы, даже имя текстуры не сохраняет, UVW координаты текстур вроде нормально конвертирует. В) Как исправить UVW-координаты наложения текстуры при импорте NifImport-ом выделить модель применить к ней модификатор Unwrap UVW на командной панели в блоке Parameters модификатора нажать кнопку Edit в открывшtмся окне Edit UVWs выделить все вершины, потом выбрать в меню Tools -> Flip Vertical выбрать инструмент Move Vertical (если нажать на кнопку инструмента Move и удерживать, через секунду появится выбор из трех - Move, Move Vertical, Move Horizontal) и сдвинуть все вершины по высоте на прежнее место, т.к. после отражения они часто смещаются по вертикали относительно своего положения. (С) Взято с сайта Фуллрест Импорт в 3Ds и Obj и экспорт из них можно сделать при помощи Blender 3D – по существу, от его импортера ничего не страдает, кроме анимации - при смене бипеда и вообще скелетных работах бывает повреждение и она не работает после экспорта в nif (еще не совсем проясненный аспект). Текстуры, сетка, материалы – вся информация на месте. Переназначать приходится альфа-канал (см статью "Правка багов"). Еще немного полезного При экспорте, штатным модулем Bethesda: Галочка напротив Controllers напрочь убивает всю анимацию, иногда бывает полезно. БипедСамплРейт – влияет на размер модели в игре, помимо всего прочего. В настройках материала 3DS Max: Изменение фильтрации в настройках текстур часто дают интересные результаты, особенно если у текстуры отражения поставить NONE вместо Pyramidal – по умолчанию. Впрочем этоже можно сделать и через NifScope. См. Выше. Всегда делайте резервные копии моделей, неосторожное обращение с NifSkope портит модель, приводя CS к краху. Перед заменой или добавлением модели сохраняйте ваш плагин. И, прежде чем поместить модель в мир (в окно Рендеринга), сделайте предпросмотр через Preview Window.
  16. Вот и страничка появилась. netflix.com/ru/title/81037868
  17. А не хотите все это вот сюда перенести? http://tesall.ru/tutorials/the-elder-scrolls-online/ob-igre
  18. Босоногий воришка, Какие глупости. В отсутствии ресурсов и необходимости делать это на старте игры. tesall.ru/news/2020-1-17-treiler-novoi-glavi-elder-scrolls-online-i-oficialnii-anons-russkoi-lokalizacii
  19. chosenone2014, с чего бы это? Игра 2016 года получилась весьма добротной и в том же духе, что и самая первая игра.
  20. gkalian

    bandicam 2020 01 26 17 08 40 908

    Пожалуй будет лучше, если вы сделаете отдельную тему на форуме. За прогрессом и публикациями там следить гораздо удобнее.
  21. Ingvar, как будто это что-то плохое.
  22. radioduck, а если верить другим слухам, то игра попала в производственный ад и все силы брошены на ТЕС6. Слухи дело такое, сомнительное.
  23. Aeltorken, Пхахаха.
  24. На сайте Zenimax Jobs появилась вакансия для головной студии Bethesda Games Studios — компания ищет видеоредактора. Согласно описанию, студия ищет опытного, креативного и энергичного сотрудника, который займется созданием трейлеров и других промоматериалов. Помимо опыта монтажа видео, знаний принципов дизайна и современных инструментов видео, должны быть навыки видеосъемки — работа с камерой, выставление света, звук; в  обязанности редактора будет входить помощь в съёмках видео с живыми актёрами. Единственный трейлер Starfield, опубликованный на Е3 2018 Новый сотрудник требуется не в побочные офисы, а в головное подразделение в Роквилле. Именно оно ответственно за разработку номерных частей The Elder Scrolls и Fallout. Напомним, что на прошедшей Е3 были анонсированы две игры — Starfield и Elder Scrolls VI. Вполне возможно, что в скором времени нас ждут новые промоматериалы.
×
×
  • Создать...