Для квеста требуется 2 файла ( может быть и больше , но в основном 2 ) . Эти файлы *.mq и *.mob - где * название файла , .mob и .mq расширение файла . Название файлов одинаковое , допустим если .mob файл называется z3q1.mob то и .mq будет называться z3q1.mq вот такие пироги :) . Название файла составляется из двух частей zXqY - где X номер квестовой зоны на которой выполняется квест ,а Y номер квеста на зоне , допустим в квесте z3q1 номер зоны 3 , а номер квеста на зоне 1 . Теперь о содержимом этих файлов . В файле .mq находятся диалоги персонажей при взятии квеста , отказе от квеста , выполнении квеста , само описание подмиссий квеста и информация о мини-карте координатох входя выхода , ну я тут многа нагрузил если вы это непонимаете это нестрашно , вам с этим почти непридется сталкиваться так как мы будем использовать шаблоны .mq и вам придется переписать самую малость . Далее .mob - в .mob файлах хранятся записи положения обьектов на карте ( юниты , сундуки , монстры и тп. ) и квестовый скрипт . Квестовый скрипт - это последовательность специальных команд , которая в результате управляет действиями игры . Допустим когда вы открываете сундук в мульплеерном квесте "Сокровищя разбойников" выполянется скриптовая команда , проверяющяя состояние сундука ( открыт или закрыт ) и в случае если сундук открыт она заканчавает квест . Все по этой теме хватит. А нет стоп! :) забыл рассказать где хранятся эти файлы - они хранятся в папке "../Проклятые Земли/Maps/" . Вот теперь все.
Теперь разберемся с программами которые нам требуются Необходимые программы.
Значит так нам требуются 2 программы , вообще для более сложных квестов может потребоватся еще Дата База ПЗ , но мы ее пока затрагивать небудем . Первая программа которая нам нужна это ResBuild.exe проще говоря Ресбуилдер , посмотрите в раздел моего сайта "Файлы" возможно я уже поместил ее туда , также если вы неумеете обращяться с командной строкой скачайте оболочку для Ресбуилдера ( она тоже должна буть у меня в разделе "Файлы" ) . Вторая программа которая нам потребуется это Mob Reversing Tool , это редактор мобов( моб это файл с расширением .mob мы о них говорили в первой части моего туториала ) также посмотрите в раздел моего сайта "Файлы" возможно я поместил ее туда . Теперь о программах подробнее . Ресбуилдер - это вообще супер-пупер функциональная программа :) она распаковует и запаковует практически все ресурсы ПЗ , она понадобится нам для распаковки и запаковки .mq файлов . Для тех кто низнает значений слова "распаковать" и "запаковать" я сейчас обьясню . Существуют специалные файлы которые могут хванить в себе другие файлы . Вот .mq является таким файлом он хранит в себе несколько других файлов . Распаковать значит вытащить из специального файла простые файлы , а запаковать значит засунуть файлы обратно в специальный файл :) , надеюсь я вас еще сильный незапутал :) . Теперь о Mob Reversing Tool эта программа открывает мобы ( тоеть эта программа открывает моб файлы , также как блокнот открывает текстовые файлы ) через эту программу мы будем редактировать скрипт квеста и немнога подправлять положение обьектов нужных нам для квеста . С этим вопросом закончили .
теперь приступим к изучению основ програмирования(скриптинга)
Основы программирования(скриптига)
Первое что хочу сказать по этой теме "НЕБОЙТЕСЬ СЛОВА ПРОГРАМИРОВАНИЕ !" тут нет нечего страшного . Програмирование это такойже язык как допустим русский только оно намного проще и изза его простоты нам его трудней учить :) . Теперь о основах программирования(скриптинга) , а нет я необьяснил чем отличается программирование от скриптигра - да ни чем :) только скриптовый это чаще всего более простой язык чем язык программирования . Итак основные составляющие программирования(скриптига) это : ПЕРЕМЕННАЯ , ФУНКЦИЯ , ВЕТВЛЕНИЯ ... для скрипта ПЗ нам хватит этого . Итак о ПЕРЕМЕННЫХ я расскажу позже так как в скрипте ПЗ можно сделать квест и без их использования о переменных читайте во втором туториале "Туториал по созданию квестов - а мы уже созрели для ЭТОГО :)" . Такс теперь о функциях функция представляет собой несколько скриптовых команд обьединенных в месте , допустим нам необходимо сложить 2+2+2+2+2+2 а потом еще раз и еще раз и еще раз . чтобы этого неделать мы можем написать функцию - образно это выглядит так имя функции ( 2+2+2+2+2+2 ) . Теперь в любой части скрипта мы можем вызывать функцию ( вызывать значит использовать ) вот так - образно имя функции() . Теперь о ветвлениях ветвления это простейшая логика - например есть у меня в кармане 2 яблока значит я одно съем одно оставлю , а если одно значит я его оставлю . В этом примере проверялось условие "сколько яблок у меня в кармане" если колличество яблок соответствует двум то выполняется действие 1 "съесть одно яблоко , а второе оставить" а если же яблоко одно значит выполняется условие 2 "оставить яблоко" . Вроде все :) .
теперь о синтаксисе(правописании) скриптов ПЗ Синтаксис
Начнем с того о чем мы говорили в предыдущей части о ВЕТВЛЕНИЯХ и ФУНКЦИЯХ . Сначала о функциях , кстати имейте ввиду что такой синтаксис который здесь описан характерен только для скриптов ПЗ в другиз играх и языках програмирования синтаксис может отличаться ! . Итак синтаксис записи функции в ПЗ такой : Script имя_функции ( скрипт_функции ) имя_функции - любое какое в голову взбредет( НО ТОЛЬКО ИСПОЛЬЗОВАТЬ РАЗРЕШЕНО ТОЛЬКО ЛАТИНСКИЕ(АНГЛИЙСКИЕ) БУКВЫ И ЦИФРЫ И ЗНАК # , НЕРАЗРЕШЕНО ИСПОЛЬЗОВАТЬ ПРОБЕЛЫ !!!) , скрипт_функции -тут пишется скрипт этой функции . А Скобки обозначают границы функции все что находится в скобка принадлежит этой функции . Далее -> каждуюю функции необходимо обьявить прежде чем ее использовать обявляются функции так : DeclareScript имя_функции ( аргументы ) что такое имя_функции мы уже рассмотрели , аргуметы функции это данные передаваемые функции(понимать это пока необязательно), чаще всего вы вас небудет это беспокоить , подавляющему число фунций в скрипте ПЗ аргументы ненужны , но всероно но есть один аргумент который надо использовать всегда , в подавляющем большенстве случаев функция обьявляется так : DeclareScript имя_функции ( this : object ) this : object это и есть тот самый аргумент о котором я вам говорил , вам ненадо задумываться что он означает просто пишите его и все. В общем если наша функция будет называться pipec то ее обьявление и сама она будет выглядеть так : DeclareScript pipec ( this : object )
Script pipec (
) вот так , я надеюсь что вы все поняли , неправда ли легко ? Теперь о ветвлениях . Что такое ветвление мы рассмотрели в предыдущих статьях , теперь о синтаксисе его записи в ПЗ скриптах . В ПЗ скриптах витвление обозначается командой if . Синтаксис записания ветвления : if ( условие ) then ( действие(скрипт) ) теперь как это все работает :) - а я сам незнаю - шучу :) . вообщем работает это так - проверяется условие если оно правдиво выполняется действие если нет , в нашем случае нифига невыполняется :) . Итак команда if это служебная команда мы ее так и пишем и команда then тоже служебная . С англицкого эти команды переводятся как if(если) then(то) , получается ЕСЛИ-ТО ,тоесть ЕСЛИ-яблок=2-ТО-сьесть одно и одно оставить ( помните пример с яблоками :) ) . Теперь об общем синтаксисе написания скриптов ПЗ . Скрипт пз имеет такой синтаксис :
WorldScript ( Sleep(2) Тут вызываем те функции , которые хотим чтоб работали все время . )
вот и все для начала сложно но ничего просто переписываем все к себе и заменяем "Тут обьявляем функции" на обьявление своих функций , "Тут записываем все функции" заменяем на скрипт своих функций ,а "Тут вызываем те функции , которые хотим чтоб работали все время ." на вызовы своих функций . сейчас это может показаться вам сложным но в дальнейшем вы поймете , конечно я сейчас приведу пример все про туже функцию pipec :
вот правльный скрипт правда он нечего сщуственного неделает :) обьясню поподробнее в блоке GlobalVars создаются переменные , мы договорились их пока нетрогать . далее обьявляем функцию pipec в ней у нас ветвление , затем WorldScript в этом блоке вызываются нужные функции и в подавляющем большенстве слечаем мы передаем им аргумент NULL тоесть этого вам тоже ненадо понимать как говориться NULL есть NULL , просто передавайте его и все :) - теперь обьясню для чего это надо , если функцию невызывать то она несработает тоесть вы напишете ее а она останется неиспользованной , в блоке WorldScript вызов происходит переодически тоесть через определеный период времени функция вызывается заного и заного .Тыкс теперь о встроенных функциях - в ПЗ имеются встроеные функции тоесть уже обьявленные . Вы их можете вызывать , это надо для того чтобы управлять игрой ,допустим функция Attack( Unit1 : object , Unit2 : object ) заставляет атаковать Unit1 -> Unit2 а object обозначает тип аргумента об этом чуть позже . Справочник по встроенным функциям вы можете найти на моем сайте . Также функции могут возвращять значени , что это такое ? щяс обьясню . Возвращять значени значит отдавать результат скрипта , пример с темиже яблоками :) : друг спросил у тебя "сколько яблок у тебя в кармане ?" ты ему отвечаеш " два яблока " , когда друг тебя спрашивает - это и есть вызов функции , а когда ты проверяеш сколько яблок у тебя в кармане это действие скрипта ( просто действие ) ,а когда та ему говориш сколько у тебя яблок - это и есть возвратить значение .
Теперь о типах аргументов (да и данных вообще ) в ПЗ.
Типы данных
В ПЗ имеется 4 типа данных - они называются Float(число) , String(строка, проще говоря Текст ) , Object (игровой обьект) , Group ( группа данных типа Object ) . Теперь поподробнее о каждом типе . Float - это просто число , что еще можно сказать :) пример : 5 , 100 , 12.4 . String - строка или проще говоря текст это текст любого вида допустим : "ПЕТЯ ПУПКИН" , "60 ЛЕТ КПСС" все это строки , обратите внимание что данные типа строка всегда заключаются в кавычки . Object - обьект , это любой игровой обьект - персонаж , дерево , сункдук , враг и тд. . Group - это группа обьектов типа Object тоесть это Ваша команда или группа монстров . Подробнее о типах данных можно почитать в туториале Чейза который есть на моем сайте , но пока я вам читать это несоветую только ,извините за выражение "засрете мозги" почитаете потом когда вникните более полно .
Примеры создания квестов
Допустим миссия Белый волк, в предгорьях. Для начала нужно выбрать стандартный квест, на основе которого мы будем делать новый. Здесь исходим из соображений практичности - если квест просто на убийство волка на зоне Предгорья, то надо выбрать максимально на него похожий. Это z3q2.mob (z3 - Зона Предгорий, q2 - квест номер два), т.е. Жаба-людоед. Открываем данный квест Mob Rev. Tool''ом и ищем в основной ветке ID_SS_TEXT, ветку со скриптами. Нас интересует следующее: CODE Script VTriger#2#1 ( if ( ) then ( KillScript( ) QStart( "z3q2" ) QObjSeeUnit( "GetObject(1000324)" ) QObjKillUnit( "GetObject(1000324)" ) QFinish( ) ) ) Строка QSTART( "z3q2" ) - это строка старта скрипта. Если ты разбираешься с брифингами на базе, то здесь проблем быть не должно. Строка QObjKillUnit объявляет нам, что для выполнения квеста надо уничтожить юнит. В скобках - ID юнита. Ничего, кроме z3q2 здесь менять не нужно. Открываем ветку OBJECT_SECTION. Проверяем все ID_UNIT - в строке ID_UNIT_PROTOTYPE должно стоять LMP Unique Toad Cannibal 5 - имя жабы-людоеда в базе данных игры. Обычно это довольно трудоемкая задача, найти нужного монстра, но что бы не копаться скажу - шестая ветка ID_UNIT снизу. В вышеупомянутой строке ID_UNIT_PROTOTYPE меняем жабу на LMP Wolf White 5. Далее в строке ID_UNIT_SPELLS убираем все, что там написано (это отвечает за заклинания). В строке ID_OBJTYPE заменяем 51 на 52 (это отвечает за тип объекта), в строке ID_OBJTEMPLATE меняем на unanwiwo (это отвечает за модель объекта), в строке ID_OBJPRIMTXTR меняем на Wolf00 или на Wolf01 (это отвечает за текстуру, первое значение для текстуры серого волка, а второе для белого). В строке ID_OBJPOSITION - позиция юнита. Меняем ее на угодное нам (можно оставить без изменений). И последнее - ID_OBJCOMPLECTION. Там телосложение объекта - меняйте там, каким вы хотите видеть вашего волка, мясистым и здоровым или заморенным щенком. Теперь выберем ID_OBJSECTXTR и сотрем там все , тут пишется второстепенная текстура . Затем сохраняйте... Далее идет работа с файлами квестов. Если знаешь, то хорошо, если нет, то потом поясню. Теперь остановимся поподробней на ветви ID_SS_TEXT, которая отвечает за скрипты на карте. Рассмотрим каждый элемент: GlobalVars ( // Объявление глобальных переменных. Конкретно в этом NULL : object, // квесте это не несет практически ни какой полезной VSS#i#val : object, // информации, просто запишите это. i : object ) CODE DeclareScript VTriger#2#1 ( this : object ) // объявлене скриптовых блоков. О DeclareScript VTriger#2#2 ( this : object ) // них ниже. CODE Script VTriger#2#1 // Это скриптовый блок. Каждый подобный блок состоит из ( // блоков if () и then (). В первом записываются условия, при которых if // выполняется блок. Во втором - сами действия скрипта, т.е. старт ( // скрипта, убийство, завершение и т.д. ) // then ( KillScript( ) // уничтожить скрипт конкретно здесь (по выполнение) QStart( "z3q2" ) // Старт квеста для игрока (из меню квестов, где карта) QObjSeeUnit( "GetObject(1000324)" ) // Когда игрок увидит монстра QObjKillUnit( "GetObject(1000324)" ) // Когда игрок убьет монстра QFinish( ) // Завершить квест ) ) Script VTriger#2#2 // Это название второго блока ( if ( ) then ( KillScript( ) ActivateTrap( Pyramid, 0 ) // Отключить оркскую пирамиду. ) ) WorldScript // Глобальные скрипты ( Sleep( 2 ) // VTriger#2#1( NULL ) // VTriger#2#2( NULL ) // ) MRT
Здесь я выложу некоторые обозначения, используемые в MRT, но непонятные для начинающих модмейкеров.
Типы объектов: ~~~~~~~~~~~~~~~~~~~ 50|люди/орки 51|монстры 52|животные 53|дерево/пень 54|бочки,ящики,горшки,ковры,фургоны,колёса... 58|костры(Torch) 59|Магич. ловушка(magic_trap) 60|используемые объекты (рычаги)(levers) ================================ object_section: ================================ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Объект ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OBJBODYPARTS STR_SAR Части тела OBJ_PLAYER BYTE Номер игрока NID DWORD ID объекта OBJTYPE DWORD Тип объекта OBJNAME STRING Объект в скрипте OBJTEMPLATE STRING 3D объект PARENTTEMPLATE STRING Имя юнита или объекта OBJPRIMTXTR STRING Текстура 1 OBJSECTXTR STRING Текстура 2 OBJCOMMENTS STRING Комментарии OBJPOSITION PLOT Координаты начального положения юнита или объекта OBJROTATION QUATERNION Повороты и наклоны объекта OBJ_USE_IN_SCRIPT BYTE Квестовый юнит OBJ_IS_SHADOW BYTE Тени(CheckBox) OBJ_PARENT_ID DWORD неазвестна OBJ_QUEST_INFO STRING Принадлежит квесту... OBJCOMPLECTION PLOT Комплекция 1,2,3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Юнит ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ UNIT_NEED_IMPORT BYTE Параметры брать из...(база/mob) UNIT_PROTOTYPE STRING Прототип юнита из базы UNIT_ARMORS STR_SAR Одежда у юнита UNIT_WEAPONS STR_SAR Оружие у юнита UNIT_SPELLS STR_SAR Заклинания у юнита UNIT_QUICK_ITEMS STR_SAR Зелья у юнита UNIT_QUEST_ITEMS STR_SAR Ключевые предметы у юнита UNIT_STATS STR_S06 Параметры юнита из mobа ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Используемый объект ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ L_SCIENCE_STATS_NEW BINARY Требуемая ловкость рук? LEVER_CUR_STATE BYTE CheckBox LEVER_TOTAL_STATE BYTE неизвестна LEVER_IS_CYCLED BYTE Напрашивается сравнение с поведением юнита;)(CheckBox?) LEVER_IS_DOOR BYTE Дверь(CheckBox) LEVER_RECALC_GRAPH BYTE (CheckBox) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Магическая ловушка ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MT_DIPLOMACY DWORD Дипломатия(-1) MT_SPELL STRING Заклинание MT_CAST_INTERVAL DWORD Интервалы между исп. закл. LEVER_CAST_ONCE BYTE Кастовать один раз?(CheckBox) MT_AREAS STR_S01 Область(X,Y,Z) MT_TARGETS STR_S02 Цели ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Костры,факелы ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TORCH_PTLINK PLOT Координаты TORCH_STRENGHT FLOAT Мощность огня TORCH_SOUND STRING Звуковой файл ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PARTICL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PARTICL_ID DWORD ID объекта PARTICL_POSITION PLOT Координаты размещения PARTICL_NAME STRING Имя в скрипте PARTICL_COMMENTS STRING Комментарии PARTICL_TYPE DWORD ТИП(всегда "8193") PARTICL_SCALE FLOAT Масштаб? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Объект освещения ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LIGHT_ID DWORD ID объкта LIGHT_SHADOW BYTE Тень(CheckBox,всегда"да=1") LIGHT_POSITION PLOT Координаты размещения LIGHT_COLOR PLOT Цвет RGB от 0 до 1 (?,?,?) LIGHT_RANGE FLOAT Область распространения(радиус) LIGHT_NAME STRING Имя в скрипте LIGHT_COMMENTS STRING Комментарии ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SOUND ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SOUND_RESNAME STR_SAR Звуковой файл SOUND_ID DWORD ID SOUND_POSITION PLOT Координаты SOUND_RANGE DWORD Область распр. SOUND_RANGE2 DWORD Обл. Распространения 2 SOUND_NAME STRING Имя в скрипте SOUND_COMMENTS STRING Комментарии SOUND_MIN DWORD Всегда 1500 SOUND_MAX DWORD всегда 3000 SOUND_AMBIENT BYTE Окружиющий звук?(CheckBOX, Всегда"0") SOUND_IS_MUSIC BYTE Музыка.CHECKBOX.Всегда"0" З.Ы. Вообще-то использовать все это надо с умом, а не с тем, на чем сидишь. И тогда (только тогда) у тебя может быть что-нибудь и получ ится!
Графические файлы проклятых земель
Замена текстуры предмета:
Необходимые библиотеки: 1. MMP Studio v 1.1 2. Adobe Photoshop 6(рекомендуется версией 7) 3. dds plugin - это надо положить в <папка с Фотошопом>/Plugin-ins/File formats/ 4. WinRar 5. Для MMPS mfc70.dll и msvcr70.dll (положите их в папку,куда установите MMPS) 6. DirectX 9.0-это поищите сами 7. Modcreator_vea
ДЕЙСТВИЯ 1)Запускаем Modcreator ,щелкаем по программе правой клавишей мыши утилиты resbuild, появляется табличка... В первой строчке выбираем файл, который надо распаковать(для этого туториала-redress.res из С:Program FilesПроклятые землиRES Во второй строчке выбираем папке,куда надо распаковать(создадите новую в любом месте) 2)Выбираем"extract files from resourse(распаковать)" Ждем пока не пропадет "ДОСовская"табличка. Запускаем ММРS, жмём "..." выбираем папку,куда будем конвертировать(создать новую),в "Convert" выбираем из папки,куда распаковали Redress.res, выбирайте любой файл и конвертируйте. 4)Включаем Фотошоп, открываем из папки, куда совершали действия из "3)",файл unhumahl_13.cd.0.dds 5)Меняем его текстуру,(Не залезая за шаблон ) 6)Сохраняем файл под тем же названием и в том же формате (*.dds)-в появившейся ужасной табличке ставим такие параметры: 32 bit No mip maps ...и выбираем "Save" 8)Возвращаемся к MMPS "..." выбираем папку, куда в действиях 1) и 2)распаковывали redress.res.В "Convert" выбираем измененные файлы. 9)Возвращаемся к Modcreator-у...меняем в табличке ResBuild-а "распаковка" на "упаковка". 10)Идем в ПЗ и наслаждаемся!!!
создание нового материала Данный туториал распространяется только на мультиплеер Перед прочтением данного туториала необходимо ознакомиться с предыдущим Файлы: Все, какие были в предыдущем туториале impdatabase -Приготовления - распакуйте impdatabase в папку с Modcreator`ом -Действия: 1)Откройте файл Materials по пути ...Modcreator_vea/evilislands_impdatabase/Items. В конце записей пропишите название материала(в данном случае это Mramor) 2)Откройте Modcreator.
Укажите путь к папке evilislands_impdatabase Активизируйте её . Откройте"Materials" Откройте"Mramor"Пропишите параметры материала(см."описание параметров материала",в Material Code name напишите mr)Сохраните изменения(есть такая кнопка в Modcreator`е) 3)С помощью Modcreator`а распакуйте в отдельную папку файл textures.res из папки RES в папке ПЗ(распаковка идентична распаковке redress.res в туториале1)Откройте MMPS. Конвертируйте из папки распакованного textures.res файл material0018.mmp в любую другую папку в material0018.dds (о конвентации читайте в туториале1) 4)Откройте в Photoshop`е material0018.dds.Перерисуйте в этом файле текстуру камня на текстуру мрамора(как он выглядит,думаю,знают все)(о том,как перерисовывать текстуру предмета/материала,читайте в туториале 1). Сохраните(параметры указаны в туториале 1) Переименуйте файл material0018.dds в material0036.dds и конвертируйте его обратно в формат mmp. Должен получиться файл material0036.mmp.Положите его в папку с распакованным textures.res. Возвращаемся к Modcrestor`у:запакуйте из папки с распакованным в оригинальный файл textures.res(и об этом написано в туториале 1 на примере redress.res) *Если очень хотите,сходите в ПЗ в магазин Бабура и посмотрите своё творение 5)Распакуйте Modcreator`ом в отдельную папку redress.res(конкретно об этом написано в туториале 1)Конвертируйте с помощью ММРS из папки с распакованным redress файлы "unhufeax_01.rc.0.mmp","unhufebw_01.rc.0.mmp" "unhufedg_01.rc.0.mmp","unhufesw_01.rc.0.mmp","unhufeax_02.rc.0.mmp", "unhufehm_03.rc.0.mmp","unhufehm_02.rc.0.mmp","unhufesp_01.rc.0.mmp"в другое место из mmp в dds. Откройте Photoshop`ом все распакованные файлы. Перерисуйте текстуры, как описано в туториале 1.Сохраните.Сохраните файл unhufehm_03.rc.0 под именами unhufehm.mr.0,unhumahm_03.mr.0, unorfehm_03.mr.0,unormahm_3.mr.0;файл unhufeax_02.rc.0 как unhufeax_02.mr.0,unhumaax_02.mr.0,unorfeax_02.mr.0,unormaax_02.mr.0; unhufedg_01.rc.0 как unhufedg_01.mr.0,unhumadg_01.mr.0,unorfedg_01.mr.0, unormadg_01.mr.0;unhufesp_01.rc.0 как unhufesp_01.mr.0,unhumasp_01.mr.0, unorfesp_01.mr.0,unormasp_01.mr.0;unhufebw_01.rc.0 как unhufebw_01.mr.0, unhumabw_01.mr.0,unorfebw_01.mr.0,unormabw_01.mr.0;unhufesw_01.rc.0 как unhufesw_01.mr.0,unhumasw_01.mr.0,unorfesw_01.mr.0,unormasw_01.mr.0; unhufehm_02.rc.0 как unhufehm_02.mr.0,unhumahm_02.mr.0,unorfehm_02.mr.0 ,unormahm_02.mr.0;unhufeax_01.rc.0 как unhufeax_01.mr.0,unhumaax_01.mr.0 ,unorfeax_01.mr.0,unormaax_01.mr.0.Запакуйте Modcreator`ом redress.res. Можете удалить папку с распакованным redress.res. Можете сходить в ПЗ и посмотреть новое оружие 6)Добавлять новый материал не интересно без описаний Далее описывается, как это сделать: Распакуйте в отдельную папку texts.res.Скопируйте в отдельную папку файлы "Material Rock","MATSHORT Rock","WEAPON Stone_Short_Bow Rock", "WEAPON Stone_Axe Rock", "WEAPON Stone_Sword Rock", "WEAPON Stone_Dagger Rock", "WEAPON Stone_Battle_Axe Rock", "WEAPON Stone_Hammer Rock", "WEAPON Stone_Battle_hammer Rock", "WEAPON Stone_Spear Rock", "QITEM Wand_1 Rock" Все эти файлы открываются блокнотом. Переименуйте их все, поменяв в названиях "Rock" на "Mramor" Пропуски в названиях материалов недопустимы! Откройте переименованные файлы блокнотом, поменяйте описания и сохраните. Переместите их в папку с распакованным texts.res. Запакуйте texts.res. Можете удалить папку с распакованным texts.res. 7) Извлеките в другую папку из папки с распакованным textures.res файлы "qitem0026.rc.mmp"и"qitem0034.rc.mmp".Замените в их названии "rc"на"mr". Откройте Photoshop`ом. Перерисуйте. Сохраните(так же, как и бронь , оружие, материалы).Переместите в папку с распакованным textures.res. Запакуйте textures.res. Можете удалить папку с распакованным textures.res. *Идите в ПЗ и наслаждайтесь полноценным материалом! Можно сдеть его УНИКАЛЬНЫМ тоесть за выполнение мисси какой-нибудь дается! .