Составление FAQ по модификациям, прнимается помощь всех желающих |
Здравствуйте, гость ( Вход | Регистрация )
Составление FAQ по модификациям, прнимается помощь всех желающих |
Dogeva |
Apr 25 2006, 00:56
Сообщение
#1
|
Расплетающая Сновидения Группа: форумчанин Сообщений: 852 Регистрация: 10-February 06 Пользователь №: 2,632 |
предлагаю всем добрым и умным человекам собраться и составить ФАК по внесениям модификаций в аддон. причина проста - обычно спрашивают одни и те же вопросы вроде "а как изменить текстуру гг", "а как вставить ее в игру" и т.д. поэтому все желающие помочь вэлком!
для примера приведу пост, найденный в "Готовых интерфейсах": ФАК по созданию собственного интерфейса в ВМЛ. Введение. Для того чтобы создать интерфейс в ВМЛ, разработчикам пришлось придерживаться нескольких правил: 1-е правило из которых было создать мультиплатформенную систему интерфейса (для ПК и консоли Xbox), что означает приминение не только указателя мыши, но и кнопок джойстика. Для удобства управления джойстиком ессесно нужно чтобы иконки, кнопки и другие элементы управления находились в четырех (максимум для крестика геймпада) сторонах. В то же время, мышью по ним тоже можно тыкать, но это уже не интересно для ПК-шников. Поэтому команда аддонтима переделывала интерфейс под привычную компьютерную мышь. Для этого им пришлось полностью перевернуть кверх дном каталог "игра\RESOURCE\INI\INTERFACES", где на языке С-подобном приписаны координаты элементов управления интерфейсом (кнопки, иконки, фоны и др.), цветовая гамма, анимация фона и др. полезные вещи. Естесственно в этих *.ini файлах прописаны названия текстур этих самых элементов. Вот о них-то нам и нужно знать... Начнем. Каждый для себя может делать свой интерфейс и в *.ini файлах, но эти файлы еще в стадии разработки и, поэтому, их редактировать смысла мало - все-равно с каждым обновлением они меняются (ну, почти с каждым). Мы будем переделывать файлы текстур для ПКМ и ВМЛ. Чтобы их переделать, нужно иметь под рукой Фотошоп, tx_convertor, запущенную игру ВМЛ в оконном! режиме, мозги, руки и... кофе. - Почти каждая текстура имеет альфа-канал, нужно уметь с ним работать - ПРАВКА!!! - Для того, чтобы правильно отредактировать альфа-канал в текстуре см. самый конец ФАК'а - раздел HELP. - Почти каждая текстура разделена на несколько более мелких, не накладывайте одну на другую, старайтесь не менять положения иконок - Все текстуры сохранены в формате *.tga.tx - т.е. они открываются в tx_converter, конвертируются в формат *.tga, ред-ся в Фотошопе, а потом конв-ся в *.tga.tx. - Если возникают вопросы, спрашивайте на форуме, не надо почты!!! на форуме много народа, которые знают тоже, что и я... - ПРАВКА!!!: вверху при конвертировании из tx и обратно, вверху и внизу ставим на A8R8G8B8... справа "none", внизу всего: (*)minimum mip size, и слайдер влево до упора (1 pix) Каталоги, которые нам необходимы (я бы на вашем месте перед работой сделал бы их копию): 1. Resource\Textures\Interfaces - бОльшая часть всех элементов интерфейса 2. Resource\Textures\DIALOG - меню диалогов 3. Resource\Textures\BATTLE_INTERFACE - иконки действий в море, на суше 4. Resource\Textures\Fonts - в ней шрифты 5. Resource\Textures\Loading - *опционально, фоны при загрузках. 6. Resource\Textures\TextureSequence - фоны кнопок управления+анимация фона в главном меню * - этого я не редактировал, мне нравятся оригинальные. =====================================================Итак, начнем с 1-го: _"Resource\Textures\Interfaces" файлы, нам интересные, там есть много чего, но это по вашему желанию, я привел тока самое необходимое blank_ship.tga.tx - кораблика нет (иконка) buy_sell.tga.tx buySellFlags.tga.tx cannons.tga.tx - пушки (иконки) CorruptSave.tga.tx - редкость, но нада - иконка плохого сохранения Cursor32.tga.tx - курсор, меня устроил базовый DisketaEmpty.tga.tx | DisketaSave.tga.tx | текстуры из меню сохр\загр EmptyFace.tga.tx | EmptyBorder.tga.tx - пустая рамка (жел-но схожая из icons.tga.tx) ExchangeButtons.tga.tx - кнопки меню обмен FortPris.tga.tx - заставка при захвате форта glowbutton.tga.tx - подсветка кнопок (мона закрасить черной альфа, она исчезнет) goods.tga.tx - иконки товаров Hold.tga.tx - изображение трюма в меню покупок icons.tga.tx - самое большое сборище всех основных элементов (не забудьте про альфа-канал!!!) icons_spec.tga.tx - дополнительные элементы управления (в том числе крестик закрытия окна) items1-11.tga.tx - иконки вещей, самый настоящий гемор переделки:) old_map.tga.tx - на фоне главного меню игры есть старая карта, перемещающаяся по экрану в разные стороны, это она и есть (я переделал в дым: Photoshop->фильтр dClouds) perkuse.tga.tx - галка применяемого перка scroll.tga.tx - фон для меню журнала, статистики, цен на товары... ship_status.tga.tx - иконки состояния: Корпус\Паруса\Пушки\Команда из меню корабля Slider_line\line_base\pointes.tga.tx - слайдеры из меню настроек яркости, звука... small_islands.tga.tx - острова из меню торговли (импорт\экспорт\контрабанда, там они вверху прокручиваются) Store.tga.tx - (из темы Hold.tga.tx) - изображение склада магазина в меню торговли swapItem.tga.tx - (из темы ExchangeButtons.tga.tx) кнопка обмена вещами usedflag.tga.tx - тоже самое в perkuse.tga.tx только для чего-то другого z_salay.tga.tx - заставка выдачи зарплаты ...Продолжаем... _"Resource\Textures\Interfaces\Circle" circle1.tga.tx | круги из главного меню ПКМ, да и в ВМЛ circle2.tga.tx | они тоже есть circle3.tga.tx - в игре не нашел... _"Resource\Textures\Interfaces\MainBack" - фоны в меню mb1.tga.tx mb2.tga.tx mb3.tga.tx - фон в главном меню ship copy.tga.tx _"Resource\Textures\Interfaces\Perks" - *опционально, по желанию _"Resource\Textures\Interfaces\Portraits" - *опционально, по желанию \128 - 128x128, 16bpp цвет \64 - 64x64, 16bpp цвет \64Disable - 64x64, 16bpp черн\бел =====================================================Следующий - 2й _"Resource\Textures\DIALOG" dialog.tga.tx - Здесь интерфес общения со всеми npc, да, и только здесь (был где-то еще, но он для ПКМ) =====================================================Следующий - 3й _"Resource\Textures\BATTLE_INTERFACE" Здесь расписывать не буду, там все по идее надо менять (что я и сделал), но скажу лишь про некоторые непонятные файлы: Panel.tga.tx - фон, где отображается все, что видно в подзорную трубу compass.tga.tx - Компасс - гемор, альфа канал и текстура, постоянно глючат. Кому надо пример переделки ко мне на почту (sonik-a@narod.ru) ir_buttons - не нужна ваще (для Xbox) =====================================================Следующий - 4й _"Resource\Textures\Fonts" Здесь шрифты, сами разберетесь. Лично я менял тока цветовую гамму (под желтовато-коричневый, симпатишно:) =====================================================Следующий - 5й _"Resource\Textures\Loading" Описанию тож не поддается, все фоны загрузок, добро пожаловать:) progress.tga.tx - всеми любимый крутящийся череп, разложенный на кадры (чтобы заменить разложите любую анимацию на кадры в редакторе каком-нить специальном и вставьте) =====================================================Следующий - 6й _"Resource\Textures\TextureSequence" Фоны кнопок, волны морские. Я скопировал из К3 и добавил (уменьшив по вертикали в два раза) в текстуру ПКМ, чуть затемнил - получилось неплохо. ===???===HELP===???=== ===АЛЬФА-КАНАЛ В ТЕКСТУРАХ=== 1. ПРО Альфа-канал. Альфа-канал - используется в текстурах для разных вещей, например для прозрачности, формы... В ПКМ альфа-канал используется на всех текстурах. На некоторых есть какой-то черный вырез на белом фоне, на других полностью белый фон. Давайте представим флаг развивающийся на рее корабля в игре. Текстура, кроме как прямоугольной быть не может, а флаг надо заострить двумя треугольниками. Так как же это сделать? Очень просто - добавим новый канал к трем основным (красный, зеленый, голубой), который из этих трех основных будет показывать только ту часть, которую мы зарисуем, т.е. прямоугольник, в котором вырезан мааааленький треугольник. В альфа-канале (так его назвали) на черном фоне (ноль, цветная картинка не берется в изображение) рисуем флаг белого цвета (этот белый цвет есть единица, которая отображает цветную картинку там, где ее нарисовали), потом возвращаемся в rgb режим (выбирается там же) и добавляем уже что-то свое (иначе флаг будет цвета начального фона), например герб Франции. Так вот из этой запутаной басни уясним, что белый цвет в альфа-канале показывает, что под ним прячется (т.е. цветную картинку), а черный, наоборот - не показывает (т.е. обрезает ее в этом месте), серый (процент от 99% черного до 1%) задает степень прозрачности текстуры (цветной картинки). 2. КАК это делается. - Открываем в фотошопе, скажем icons.tga (уже конвертированную tx_converter'ом). - Лезем в меню окно (где "файл\редактирование\изображение..."), там выбираем строку "каналы", щелкаем по ней. - На экране появилось окно с черно-белом изображением, в котором показались контуры элементов текстуры icons.tga. - Далее заливаем все 50% серым в альфа канале (щелкаем по нему один раз в том окне, которое только открывали), сохраняем, конвертируем в ВМЛ, запукаем игру - смотрите-ка, все кнопки и другие элементы прозрачные. Уже немного яснее что енто. - Далее, не выходя из игры, сворачиваем ее (для этого нужно в настройках снять галку "полноэкранный режим"), откатываем одно действие назад в Фотошопе, опять контуры. - Теперь, изменим кнопку с черепами по бокам. В альфа канале в середине этой кнопки черный прямоугольник, что значит в этом месте она прозрачна. Если нужно сделать свой фон в этой кнопке, то переходим через окно "каналы" в полноцветный режим (вверху окна), заливаем серединку кнопки чем-нито своим и, зайдя в альфа-канал обратно, заливаем сей черный прямоугольник белым цветом (терь он будет нашего фона цветом) - Так можно каждую текстуру редактировать. Можно нарисовать, например свой perkuse.tga.tx, для этого открываем, конвертируем, открываем в Фотошопе, стираем старую галку, рисуем, создав новый слой, например перо, выделяем прозрачность слоя (для этого надо также как окно "каналы" открыть и окно "слои", зажать CTRL и выбрать наш новый слой с пером), далее лезем в "Выделение" (вверху Фотошоповского окна)->Сохранить выделение. Там откроется окно, просто жмем ОК. Появится новый альфа-канал. Старый удаляем (Правой кнопкой по старому каналу в окне "каналы"->УДАЛИТЬ). Теперь остается свести все слои (CTRL+E на англ. раскладке) и сохранить, заменив старую текстуру. - Теперь конвертируем в ВМЛ и разворачиваем игру. Играем с новой галкой в меню перков. Если не работает, то выйдите из игры и войдите снова. (Не забывайте про настройку tx_converter'а: A8R8G8B8 вверху и внизу) Позже дополню описание *.INI-файлов. Если чего забыл, поправьте меня!!! |
VladNiP |
Aug 8 2009, 09:15
Сообщение
#2
|
боцман Группа: форумчанин Сообщений: 270 Регистрация: 23-July 09 Из: Россия. Пермь. Пользователь №: 20,820 |
Составил несколько FAQ по скриптам.
Вот они: FAQ по офицерам. Офицеры размещены в двух файлах. А именно: в Officers.c ( Пираты Карибского Моря/PROGRAM/Characters/init/Officers.c ) и в LandEnc_init.c ( Пираты Карибского Моря/PROGRAM/LandEncounters/LandEnc_init.c ). Сначала зайдем в Officers.c. Там расписаны все квестовые офицеры. В целом у них описание, как у обычных НПС. За исключением того, что у некоторых некоторые скиллы равны 0. В таком случае он не сможет никогда повысить этот параметр. Теперь пойдем в файл LandEnc_init.c. Здесь я подробно распишу все функции. ( по умолчанию модель офицеров не такие, я уже поменял. )) Находим строчку: LandEncounters[n].id = "ENC_OFFICER"; Дальше видим примерно такое: LandEncounters[n].char1.modelQuantity = 35; - количество рандомных моделей ( расписаны далее ) LandEncounters[n].char1.model1 = "admiral"; - модель для первого возможного офицера. LandEncounters[n].char1.model1.ani = "man"; - его анимация. ( man, woman). Дальше повторяется описание. LandEncounters[n].char1.model2 = "brin"; LandEncounters[n].char1.model2.ani = "man"; LandEncounters[n].char1.model3 = "brin"; LandEncounters[n].char1.model3.ani = "man"; LandEncounters[n].char1.model4 = "brin"; LandEncounters[n].char1.model4.ani = "man"; LandEncounters[n].char1.model5 = "brin"; LandEncounters[n].char1.model5.ani = "man"; LandEncounters[n].char1.model6 = "brin"; LandEncounters[n].char1.model6.ani = "man"; LandEncounters[n].char1.model7 = "brin"; LandEncounters[n].char1.model7.ani = "man"; LandEncounters[n].char1.model8 = "brin"; LandEncounters[n].char1.model8.ani = "man"; LandEncounters[n].char1.model9 = "brin"; LandEncounters[n].char1.model9.ani = "man"; LandEncounters[n].char1.model10 = "brin"; LandEncounters[n].char1.model10.ani = "man"; LandEncounters[n].char1.model11 = "Offic_eng"; LandEncounters[n].char1.model11.ani = "man"; LandEncounters[n].char1.model12 = "Offic_eng"; LandEncounters[n].char1.model12.ani = "man"; LandEncounters[n].char1.model13 = "Offic_eng"; LandEncounters[n].char1.model13.ani = "man"; LandEncounters[n].char1.model14 = "Offic_fra"; LandEncounters[n].char1.model14.ani = "man"; LandEncounters[n].char1.model15 = "Offic_fra"; LandEncounters[n].char1.model15.ani = "man"; LandEncounters[n].char1.model16 = "Offic_fra"; LandEncounters[n].char1.model16.ani = "man"; LandEncounters[n].char1.model17 = "Offic_hol"; LandEncounters[n].char1.model17.ani = "man"; LandEncounters[n].char1.model18 = "Offic_hol"; LandEncounters[n].char1.model18.ani = "man"; LandEncounters[n].char1.model19 = "Offic_hol"; LandEncounters[n].char1.model19.ani = "man"; LandEncounters[n].char1.model20 = "Offic_por"; LandEncounters[n].char1.model20.ani = "man"; LandEncounters[n].char1.model21 = "Offic_por"; LandEncounters[n].char1.model21.ani = "man"; LandEncounters[n].char1.model22 = "Offic_por"; LandEncounters[n].char1.model22.ani = "man"; LandEncounters[n].char1.model23 = "Offic_spa01"; LandEncounters[n].char1.model23.ani = "man"; LandEncounters[n].char1.model24 = "Offic_spa01"; LandEncounters[n].char1.model25.ani = "man"; LandEncounters[n].char1.model26 = "Offic_spa01"; LandEncounters[n].char1.model26.ani = "man"; LandEncounters[n].char1.model27 = "Offic_spa"; LandEncounters[n].char1.model27.ani = "man"; LandEncounters[n].char1.model28 = "Offic_spa"; LandEncounters[n].char1.model28.ani = "man"; LandEncounters[n].char1.model29 = "Offic_spa"; LandEncounters[n].char1.model29.ani = "man"; LandEncounters[n].char1.model30 = "will"; LandEncounters[n].char1.model30.ani = "man"; LandEncounters[n].char1.model31 = "fawn"; LandEncounters[n].char1.model31.ani = "man"; LandEncounters[n].char1.model32 = "pirat11"; LandEncounters[n].char1.model32.ani = "man"; LandEncounters[n].char1.model33 = "blaze"; LandEncounters[n].char1.model33.ani = "man"; LandEncounters[n].char1.model34 = "pirat1"; LandEncounters[n].char1.model34.ani = "man"; LandEncounters[n].char1.cont = false; LandEncounters[n].char1.pistol = false; LandEncounters[n].char1.sword = true; LandEncounters[n].char1.type = "sit"; - тип ( по умолчанию они сидят ) LandEncounters[n].char1.Dialog = "Enc_Officer_dialog.c"; - диалог Дальше меняем модели на свое усмотрение. Если выбрали женскую модель, то измените анимацию на женскую. ( не путать с полом, для скелетов анимация - мужская ) ВАЖНО: В файле Officers.c находятся еще и некоторые квестовые враги. Например, Америго Виера, которого нужно убить по квесту бандитов с испанской колонии. Можно настроить и их параметры. ВАЖНО: В файле LandEnc_init.c находятся еще и модели для случайных гостей. ( бандитов, например ) ______________________________________________________ FAQ по настройке мелодий в игре. Теперь будем настраивать мелодии в игре. Важно знать 2 момента: Мелодии находятся в Пираты Карибского Моря/RESOURSE/Sounds. Дальше там есть определенные папки со звуком. ( мелодии в игре, голоса персонажей и др. ) И еще один момент - это список мелодий, которые встроены. Идем в Пираты Карибского Моря/RESOURSE/INI/ALIASES. Видим перед собой несколько файлов. Файл Greetings_alias.ini отвечает за речь персонажей при начале диалога. К примеру возьму губернатора редмонда. [Gr_Robert Christopher Silehard] minDistance = 0.45 maxDistance = 50.0 volume = 1.0 name = VOICE\Eng_m_a_045.wav name = VOICE\Eng_m_a_046.wav name = VOICE\Eng_m_a_047.wav name = VOICE\Eng_m_a_048.wav name = VOICE\Eng_m_a_049.wav name = VOICE\Eng_m_a_050.wav name = VOICE\Eng_m_a_051.wav Файл устроен по принципу: name = путь к файлу мелодии. Можно еще добавить сделав по принципу. [Gr_Robert Christopher Silehard] minDistance = 0.45 maxDistance = 50.0 volume = 1.0 name = VOICE\Eng_m_a_045.wav name = VOICE\Eng_m_a_046.wav name = VOICE\Eng_m_a_047.wav name = VOICE\Eng_m_a_048.wav name = VOICE\Eng_m_a_049.wav name = VOICE\Eng_m_a_050.wav name = VOICE\Eng_m_a_051.wav name = путь к файлу Теперь идем в файл max.ini В нем описан торнадо. ( во время шторма ) Устроен по тому же принципу. name = путь к файлу мелодии. Идем в файл sound_alias.ini Здесь описаны звуки в игре ( во время битвы, пение птиц и др. ), в том числе и голоса жителей, которые на данный момент с вами не говорят. Устроен также. В файле music_alias.ini находится вся музыка. Здесь принцип немного другой. Возьму к примеру музыку, которая играет в резиденции. ;============= GUBERNATOR ========================= - это название локации. [music_gubernator] name = MUSIC\Governors_Theme.ogg name = MUSIC\Gubernator.ogg Тут опять-таки пишется имя и путь к файлу, но вместо конкретного персонажа тут пишется локация. ВАЖНО: Путь к файлу ведет отсчет от папки Sounds. Т.е, если вы напишите путь такой Sounds\MUSIC\Governors_Theme.ogg, то будет считатся за ошибку. Данная музыка проигрыватся не будет. Начинайте всегда с папки Sounds, но не пишите ее в путь файла. Как и папку ресуры и др. ______________________ FAQ по установке своих орудий на форт. Сейча будем устанавливать орудия на форт. Допустим, мы сделал орудия 48-фунта, как же их установить? Для этого нам понадобятся 2 файла. Именно: AIFort.c ( Пираты Карибского Моря/PROGRAM/SEA_AI/AIFort.c ) и FortCommandants.c ( Пираты Карибского Моря/PROGRAM/Characters/init/FortCommandants.c ) Сначала идем в AIFort.c. Находим там строчку void Fort_CheckAttributes(ref rCharacter). ( здесь я уже заменил, по умолчанию, значения не такие ) { if (!CheckAttribute(rCharacter, "Ship.Cannons.Type")) { rCharacter.Ship.Cannons.Type = CANNON_TYPE_CANNON_LBS48; - здесь заменить } if (!CheckAttribute(rCharacter, "Ship.Cannons.Charge.Type")) { rCharacter.Ship.Cannons.Charge.Type = GOOD_BOMBS; - тип вооружения ( ядра, книппели, картечь и бомбы } if (!CheckAttribute(rCharacter, "Fort.Cannons.Type.1")) { rCharacter.Fort.Cannons.Type.1 = CANNON_TYPE_CANNON_LBS48; - здесь заменяем. } if (!CheckAttribute(rCharacter, "Fort.Cannons.Type.2")) { rCharacter.Fort.Cannons.Type.2 = CANNON_TYPE_CANNON_LBS48; - здесь заменяем } } Допустим, у вас стоит строчка { rCharacter.Ship.Cannons.Type = CANNON_TYPE_CULVERINE_LBS32; } Теперь ее заменяем на ( наш 48 фунт ) ---> { rCharacter.Ship.Cannons.Type = CANNON_TYPE_CANNON_LBS48; } Повторяем операцию с другими. Теперь идем в FortCommandants.c. Там нам нужно подтвердить замену калибра. ( На примере форта редмонда ) makeref(ch,Characters[n]); //Командир гарнизона на Редмонде ch.name = "Комендант Редмонда"; ch.lastname = ""; ch.id = "Redmond Commander"; ch.model = "Soldier_eng3"; ch.sex = "man"; ch.act.type = "Soldier"; ch.location = "Redmond"; ch.location.group = "reload"; ch.location.locator = "reload_fort1"; ch.nation = ENGLAND; ch.rank = 20; ch.reputation = "None"; ch.experience = "200000"; ch.skill.Leadership = "8"; ch.skill.Fencing = "10"; ch.skill.Sailing = "1"; ch.skill.Accuracy = "9"; ch.skill.Cannons = "8"; ch.skill.Grappling = "1"; ch.skill.Repair = "1"; ch.skill.Defence = "8"; ch.skill.Commerce = "1"; ch.skill.Sneak = "1"; ch.money = "10"; ch.ship.type = SHIP_FORT; ch.Fort.Cannons.Charge.Type = GOOD_BOMBS; - боеприпас, которым будет пользоватся форт ch.Fort.Cannons.Type.1 = CANNON_TYPE_CANNON_LBS48; - заменяем на свой калибр ch.Fort.Cannons.Type.2 = CANNON_TYPE_CANNON_LBS48; - заменяем на свой калибр LAi_SetHP(ch, 120.0, 150.0); n = n + 1; Заменяем и проверяем. Пушки установились. Если на все надо, то повторяйте операцию с другими фортами. Здесь же можно заменить скиллы коменданта. ВАЖНО: Можно также зафиксировать определенное количество команды на фортах. Для этого после строчки ch.ship.type = SHIP_FORT; напишите вот это: ch.ship.crew.quantity = х; Где х - количество команды. Форт после захвата будет обновлятся до такого количества человек. ВАЖНО: Если после LAi_SetHP(ch, 120.0, 150.0); написать LAi_SetImmortal(ch, true);, то форт невозможно будет уничтожить. __________________ |
Текстовая версия | Сейчас: 13th June 2024 - 07:53 |