Составление 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-файлов. Если чего забыл, поправьте меня!!! |
Lugger |
Sep 14 2006, 09:45
Сообщение
#2
|
боцман Группа: форумчанин Сообщений: 282 Регистрация: 15-December 05 Из: Ульяновск Пользователь №: 1,734 |
Как добавить остров из игры Корсары 3 в игру "Пираты Карибского Моря"
Так. Возьмём для примера один остров. Невис. Копируешь папку Корсары 3\RESOURCE\MODELS\Islands\Nevis Pirates of the Caribbean\RESOURCE\MODELS\Islands\Nevis потом копируешь папку D:\Games\Корсары 3\RESOURCE\MODELS\Locations\Town_Nevis\ Pirates of the Caribbean\RESOURCE\MODELS\Locations\ потом из папки Корсары 3\RESOURCE\MODELS\Locations\Inside копируешь модели локаций, которые используются в этом городе...ну например эти папки (в них модели) - bank01, church01, residence01, shipyard01, store02, Tavern04, Tavern_room. Копируешь их Pirates of the Caribbean\RESOURCE\MODELS\Locations\Inside\ Потом все текстуры, которые используют данные модели копируешь в Pirates of the Caribbean\RESOURCE\Textures\ плюс текстуры, находящиеся в папке Корсары 3\RESOURCE\Textures\lighting Pirates of the Caribbean\RESOURCE\Textures\lighting. Копируешь следующим образом: Из любой из папок day (там их 4, а в ПКМ одна) папку Корсары 3\RESOURCE\Textures\lighting\day1\locations\Town_Nevis в папку: Pirates of the Caribbean\RESOURCE\Textures\lighting\day\locations, из папки evening папку Корсары 3\RESOURCE\Textures\lighting\evening\locations\Town_Nevis в папку: Pirates of the Caribbean\RESOURCE\Textures\lighting\evening\locations, из папки morning папку Корсары 3\RESOURCE\Textures\lighting\morning\locations\Town_Nevis в папку: Pirates of the Caribbean\RESOURCE\Textures\lighting\mn\locations, из папки storm папку Корсары 3\RESOURCE\Textures\lighting\evening\locations\Town_Nevis в папку: Pirates of the Caribbean\RESOURCE\Textures\lighting\storm\locations. Это всё были файлы освещения . Далее. Уже посложнее, нужно редактировать скрипты. Идём первым делом в D:\Games\Pirates of the Caribbean\Program\ISLANDS и открываем файл Islands_init.c, чтобы добавить остров. Можно скопировать например Conceicao и внизу после последнего острова добавить: // ================================================================================ ================== // Nevis n = n + 1; Islands[n].id = "Nevis"; - ID острова, нужен будет при создания острова на глобалке. Islands[n].model = "Nevis"; - модель острова. Islands[n].filespath.models = "islands\Nevis"; файлы модели острова, которые мы кидали в Pirates of the Caribbean\RESOURCE\MODELS\Islands\Nevis. Это остров который будет рисоваться в море. Islands[n].refl_model = "Nevis_refl"; - связано с моделью острова... Islands[n].locators = "Nevis_locators"; - локаторы модели в этом файле Islands[n].visible = true; - Видим; При значении false будет невидим. (Вроде так.) Islands[n].smuggling_nation = ENGLAND; - Нация острова. Islands[n].reload.l1.label = "Порт Невис"; Метка, отображающаяся в меню "доплыть до" Islands[n].reload.l1.name = "reload_1"; - локатор, где высаживаемся в порт. Islands[n].reload.l1.go = "Nevis_town"; - локация, которая будет заггружаться после того, как мы нажмём "причалить" Islands[n].reload.l1.emerge = "reload2"; - В каком месте появимся Islands[n].reload.l1.radius = 200.0; - радиус Islands[n].reload.l1.pic = 0; - картинка порта для меню "доплыть до" Islands[n].reload.l1.tex = "t1"; - имя картинки, на который иконка порта для меню "доплыть до" Islands[n].reload.l2.label = "Форт Невис"; Метка, отображающаяся в меню "доплыть до" Islands[n].reload.l2.name = "reload_fort1"; локатор Islands[n].reload.l2.go = "Nevis_fort"; Islands[n].reload.l2.GoAfterBoard.location = "reload_1"; Islands[n].reload.l2.emerge = "see"; Islands[n].reload.l2.radius = 600.0; Islands[n].reload.l2.fortname = "fort_Nevis"; Islands[n].reload.l2.fort.model = "Nevis_fort1"; Islands[n].reload.l2.fort.locators = "Nevis_fort1_locators"; Islands[n].reload.l2.pic = 1; Islands[n].reload.l2.tex = "t1"; Islands[n].InterfaceTextures.t1 = "battle_interface\moor_3.tga"; - текстура с иконкой порта и форта, а так же бухт и т.д., если таковые нужны. Islands[n].InterfaceTextures.t1.h = 4; Islands[n].InterfaceTextures.t1.v = 1; Islands[n].Trade.Export.id1 = GOOD_TOBACCO; // товары, отображающиеся в журнале торговли. Islands[n].Trade.Export.id2 = GOOD_COFFEE; //Товары экспорта Islands[n].Trade.Export.id3 = GOOD_COPRA; Islands[n].Trade.Export.id4 = GOOD_ALE; Islands[n].Trade.Import.id1 = GOOD_PLANKS; // Товары импорта Islands[n].Trade.Import.id2 = GOOD_SAILCLOTH; Islands[n].Trade.Import.id3 = GOOD_WHEAT; Islands[n].Trade.Import.id4 = GOOD_WINE; Islands[n].Trade.Contraband.id1 = GOOD_SUGAR; // Контрабандтные товары Islands[n].Trade.Contraband.id2 = GOOD_LINEN; Islands[n].Trade.Contraband.id3 = GOOD_RUM; // Islands[n].Trade.Contraband.id4 = GOOD_SLAVES; SendMessage(&locator,"le",LM_LOCATE_I,&Islands[n]); Как делать остров на глобалке читать в теме FAQ по модификациям пост от Жакуина Де Массе. Вот...Ну ведь нам нужно теперь написать локации невиса и т.д. Идём дальше... Идём сюда: Pirates of the Caribbean\Program\Locations\init и копируем сюда любой файл ".c" из Корсаров 3...Или ПКМ... Переименуем его в Nevis. Ну а дальше там пишем скрипты локаций...долго объяснять...Я ещё и Ну я всё таки объясню. Можете скопировать всё написанное ниже мной, только коментарии удалите : int LocationInitNevis(int n) { // Nevis town locations[n].id = "Nevis_town"; - ID локации locations[n].id.label = "Nevis"; - Метка. locations[n].worldmap = "Nevis"; - Имя города на карте locations[n].filespath.models = "locations\Town_Nevis\Town\"; - модель города locations[n].image = "loading\Town.tga"; - Картинка, отображающаяся при загрузке данной локации. locations[n].citizens = true; - Люди разрешены. locations[n].soldiers = true; - Солдаты разрешены //Town sack locations[n].townsack = "Nevis"; //Sound locations[n].type = "town"; locations[n].fastreload = "Nevis"; LAi_LocationFantomsGen(&locations[n], true); //Models //Always //Всё, связанное с моделями города locations[n].models.always.town = "Nevis"; - Модель города locations[n].models.always.L1 = "Nevis_signsA"; Locations[n].models.always.seabed = "Nevis_sb"; locations[n].models.always.locators = "Nevis_locators"; - локаторы для локации locations[n].models.always.grassPatch = "Nevis_grass"; - Патч травы для локации locations[n].models.always.plan = "plan1"; locations[n].models.always.plan.level = 9; //Day locations[n].models.day.fonar = "Nevis_fd"; locations[n].models.day.charactersPatch = "Nevis_patch_day"; locations[n].models.day.rinok = "Nevis_rinok"; Locations[n].models.always.somemodel1 = "church1"; Начиная отсюда, это модели, которые помещаются в отдельные локаторы, если их не прописать отображаться не будут. Это всё потому что в К3 есть такая фича как апгрейд колоний...Разрушенную церковь починить например можно и т.д. Да, эти модели, а именно: church1, Shipyard1, academy1, huts1, storehouse1, mill1, fishingpier1, обязательно нужно скопировать из Корсары 3\RESOURCE\MODELS\Locations\upgrades в Pirates of the Caribbean\RESOURCE\MODELS\Locations\Town_Nevis\Town, а текстуры, которые используют данные модели скопировать надо в папку: Pirates of the Caribbean\RESOURCE\Textures\ Locations[n].models.always.somemodel1.locator.group = "Upgrades"; Locations[n].models.always.somemodel1.locator.name = "church"; Locations[n].models.always.somemodel2 = "Shipyard3"; Locations[n].models.always.somemodel2.locator.group = "Upgrades"; Locations[n].models.always.somemodel2.locator.name = "shipyard"; Locations[n].models.always.somemodel3 = "academy1"; Locations[n].models.always.somemodel3.locator.group = "Upgrades"; Locations[n].models.always.somemodel3.locator.name = "academy"; Locations[n].models.always.somemodel4 = "huts1"; Locations[n].models.always.somemodel4.locator.group = "Upgrades"; Locations[n].models.always.somemodel4.locator.name = "huts"; Locations[n].models.always.somemodel5 = "storehouse1"; Locations[n].models.always.somemodel5.locator.group = "Upgrades"; Locations[n].models.always.somemodel5.locator.name = "storehouse"; Locations[n].models.always.somemodel6 = "mill1"; Locations[n].models.always.somemodel6.locator.group = "Upgrades"; Locations[n].models.always.somemodel6.locator.name = "mill"; Locations[n].models.always.somemodel7 = "fishingpier1"; Locations[n].models.always.somemodel7.locator.group = "Upgrades"; Locations[n].models.always.somemodel7.locator.name = "fishingpier"; //Night locations[n].models.night.fonar = "Nevis_fn"; locations[n].models.night.charactersPatch = "Nevis_patch_night"; Locations[n].models.always.somemodel1 = "church1"; Locations[n].models.always.somemodel1.locator.group = "Upgrades"; Locations[n].models.always.somemodel1.locator.name = "church"; Locations[n].models.always.somemodel2 = "Shipyard3"; Locations[n].models.always.somemodel2.locator.group = "Upgrades"; Locations[n].models.always.somemodel2.locator.name = "shipyard"; Locations[n].models.always.somemodel3 = "academy1"; Locations[n].models.always.somemodel3.locator.group = "Upgrades"; Locations[n].models.always.somemodel3.locator.name = "academy"; Locations[n].models.always.somemodel4 = "huts1"; Locations[n].models.always.somemodel4.locator.group = "Upgrades"; Locations[n].models.always.somemodel4.locator.name = "huts"; Locations[n].models.always.somemodel5 = "storehouse1"; Locations[n].models.always.somemodel5.locator.group = "Upgrades"; Locations[n].models.always.somemodel5.locator.name = "storehouse"; Locations[n].models.always.somemodel6 = "mill1"; Locations[n].models.always.somemodel6.locator.group = "Upgrades"; Locations[n].models.always.somemodel6.locator.name = "mill"; Locations[n].models.always.somemodel7 = "fishingpier1"; Locations[n].models.always.somemodel7.locator.group = "Upgrades"; Locations[n].models.always.somemodel7.locator.name = "fishingpier"; //Environment locations[n].environment.weather = "true"; Погода разрешена, если написать значение false то не будет. locations[n].environment.sea = "true"; Море разрешено, если написать значение false то не будет. Этож порт . Значит надо оставить так как есть. //Reload map // теперь же нам нужно будет видеть локаторы, как это сделать, читать в теме FAQ по модификациям пост от Жакуина Де Массе. locations[n].reload.l1.name = "reload1_back"; имя локатора, находясь в котором и нажав действие мы окажемся в море, то есть в водах Невиса. locations[n].reload.l1.go = "Nevis"; - Куда попадём locations[n].reload.l1.emerge = "reload_1"; - Где появимся, то есть в в каком локаторе на Nevis. Оставьте всё как есть. locations[n].reload.l1.autoreload = "0"; - автопереход, который не требует нажатия кнопки действия, пробела обычно, если значение "0" то не работает, если "1" то будет работать. locations[n].reload.l1.label = "Море"; - Метка локаци в которую переход по этому локатору. locations[n].locators_radius.reload.reload1_back = 1.8; - радиус локатора. locations[n].reload.l3.name = "reload3_back"; locations[n].reload.l3.go = "Nevis_townhall"; - куда попадём, в данном случае Резиденция locations[n].reload.l3.emerge = "reload1"; locations[n].reload.l3.autoreload = "0"; locations[n].reload.l3.label = "Резиденция"; Locations[n].reload.l3.close_for_night = 1; - параметр, который запрещает доступ в локацию ночью, если потавить 0, то работать небудет, если 1 будет, а если убрать этот параметр, то ночью можно будет спокойно заходить в локацию. locations[n].reload.l4.name = "reload4_back"; locations[n].reload.l4.go = "Nevis_tavern"; - куда попадём, в данном случае таверна locations[n].reload.l4.emerge = "reload1"; locations[n].reload.l4.autoreload = "0"; locations[n].reload.l4.label = "Таверна"; locations[n].reload.l5.name = "reload5_back"; locations[n].reload.l5.go = "Nevis_shipyard"; - куда попадём, в данном случае верфь. locations[n].reload.l5.emerge = "reload1"; locations[n].reload.l5.autoreload = "0"; locations[n].reload.l5.label = "Верфь"; Locations[n].reload.l5.close_for_night = 1; locations[n].reload.l6.name = "reload6_back"; locations[n].reload.l6.go = "Nevis_store"; - куда попадём, в данном случае магазин. locations[n].reload.l6.emerge = "reload1"; locations[n].reload.l6.autoreload = "0"; locations[n].reload.l6.label = "Магазин"; Locations[n].reload.l6.close_for_night = 1; locations[n].reload.l7.name = "reload7_back"; locations[n].reload.l7.go = "Nevis_church"; - куда попадём, в данном случае церковь. locations[n].reload.l7.emerge = "reload1"; locations[n].reload.l7.autoreload = "0"; locations[n].reload.l7.label = "Церковь"; Locations[n].reload.l7.close_for_night = 1; locations[n].reload.l8.name = "reload8_back"; locations[n].reload.l8.go = "Nevis_bank"; - куда попадём, в данном случае дом ростовщика. locations[n].reload.l8.emerge = "reload1"; locations[n].reload.l8.autoreload = "0"; locations[n].reload.l8.label = "Ростовщик"; Locations[n].reload.l8.close_for_night = 1; n = n + 1; // Tavern locations[n].id = "Nevis_tavern"; - id локации, как вы видели, используется вот здесь locations[n].reload.l4.name = "reload4_back"; locations[n].id.label = "Таверна"; - Метка локации locations[n].filespath.models = "locations\inside\Tavern01\"; - Модель локации locations[n].image = "loading\Tavern.tga"; - Картинка, отображающаяся при загрузке данной локации. locations[n].habitues = 1; //Town sack locations[n].townsack = "Nevis"; Locations[n].lockWeather = "Inside"; //Sound locations[n].type = "tavern"; locations[n].fastreload = "Nevis"; //Models // Опять же всё, что связано с моделями. //Always locations[n].models.always.tavern = "Tavern01"; locations[n].models.always.locators = "Tavern01_locators"; locations[n].models.always.window = "tavern01_windows"; locations[n].models.always.window.tech = "LocationWindows"; locations[n].models.always.window.level = 50; //Day locations[n].models.day.charactersPatch = "Tavern01_patch"; //Night locations[n].models.night.charactersPatch = "Tavern01_patch"; //Environment locations[n].environment.weather = "false"; - Погода запрещена в даннном случае, в таверне всё ж locations[n].environment.sea = "false"; - Море запрещено //Reload map locations[n].reload.l1.name = "reload1_back"; Локатор выхода, нам надо выйти в город. locations[n].reload.l1.go = "Nevis_town"; locations[n].reload.l1.emerge = "reload4"; локатор, в котором появимся в след.локации. locations[n].reload.l1.autoreload = "0"; locations[n].reload.l1.label = "Невис"; LAi_LocationFightDisable(&locations[n], true); - Тот самый параметр, который и делает "Здесь не стоит обнажать оружие, если эту строчку стереть, то оружие можно будет доставать." n = n + 1; И собственно все остальные абсолютно аналогично. // Tavern room locations[n].id = "Nevis_tavern_upstairs"; locations[n].id.label = "Комната"; locations[n].image = "loading\Tavern_512.tga"; //Town sack locations[n].townsack = "Nevis"; Locations[n].lockWeather = "Inside"; //Sound locations[n].type = "house"; locations[n].fastreload = "Nevis"; //Models //Always locations[n].filespath.models = "locations\inside\Tavern_room"; locations[n].models.always.locators = "Tavern_room_locators"; locations[n].models.always.tavern = "Tavern_room"; locations[n].models.always.window = "tavern_room_window"; locations[n].models.always.window.tech = "LocationWindows"; locations[n].models.always.window.level = 50; //Day locations[n].models.day.charactersPatch = "Tavern_room_patch"; //Night locations[n].models.night.charactersPatch = "Tavern_room_patch"; //Environment locations[n].environment.weather = "false"; locations[n].environment.sea = "false"; //Reload map locations[n].reload.l1.name = "reload1_back"; locations[n].reload.l1.go = "Nevis_tavern"; locations[n].reload.l1.emerge = "reload2"; locations[n].reload.l1.autoreload = "0"; locations[n].reload.l1.label = "Таверна"; locations[n].locators_radius.reload.reload1 = 0.8; n = n + 1; // Store locations[n].id = "Nevis_store"; locations[n].id.label = "Магазин"; locations[n].filespath.models = "locations\inside\Store01\"; locations[n].image = "loading\Store.tga"; //Town sack locations[n].townsack = "Nevis"; Locations[n].lockWeather = "Inside"; //Sound locations[n].type = "shop"; locations[n].fastreload = "Nevis"; //Models //Always locations[n].models.always.locators = "Store01_locators"; locations[n].models.always.store = "Store01"; locations[n].models.always.window = "store01_window"; locations[n].models.always.window.tech = "LocationWindows"; locations[n].models.always.window.level = 50; //Day locations[n].models.day.charactersPatch = "Store01_patch"; //Night locations[n].models.night.charactersPatch = "Store01_patch"; //Environment locations[n].environment.weather = "false"; locations[n].environment.sea = "false"; //Reload map locations[n].reload.l1.name = "reload1_back"; locations[n].reload.l1.go = "Nevis_town"; locations[n].reload.l1.emerge = "reload6"; locations[n].reload.l1.autoreload = "0"; locations[n].reload.l1.label = "Невис"; LAi_LocationFightDisable(&locations[n], true); n = n + 1; // Bank locations[n].id = "Nevis_bank"; locations[n].id.label = "Ростовщик"; locations[n].filespath.models = "locations\inside\Bank01\"; locations[n].image = "loading\Bank.tga"; //Town sack locations[n].townsack = "Nevis"; Locations[n].lockWeather = "Inside"; //Sound locations[n].type = "house"; locations[n].fastreload = "Nevis"; //Models //Always locations[n].models.always.locators = "Bank01_locators"; locations[n].models.always.store = "Bank01"; locations[n].models.always.window = "bank01_windows"; locations[n].models.always.window.tech = "LocationWindows"; locations[n].models.always.window.level = 50; //Day locations[n].models.day.charactersPatch = "Bank01_patch"; //Night locations[n].models.night.charactersPatch = "Bank01_patch"; //Environment locations[n].environment.weather = "false"; locations[n].environment.sea = "false"; //Reload map locations[n].reload.l1.name = "reload1_back"; locations[n].reload.l1.go = "Nevis_town"; locations[n].reload.l1.emerge = "reload8"; locations[n].reload.l1.autoreload = "0"; locations[n].reload.l1.label = "Невис"; LAi_LocationFightDisable(&locations[n], true); n = n + 1; // Shipyard locations[n].id = "Nevis_Shipyard"; locations[n].id.label = "Верфь"; locations[n].filespath.models = "locations\inside\Shipyard01\"; locations[n].image = "loading\Shipyard.tga"; //Town sack locations[n].townsack = "Nevis"; Locations[n].lockWeather = "Inside"; //Sound locations[n].type = "shipyard"; locations[n].fastreload = "Nevis"; //Models //Always locations[n].models.always.locators = "Shipyard01_locators"; locations[n].models.always.shipyard = "Shipyard01"; //Day locations[n].models.day.charactersPatch = "Shipyard01_patch"; //Night locations[n].models.night.charactersPatch = "Shipyard01_patch"; //Environment locations[n].environment.weather = "false"; locations[n].environment.sea = "false"; //Reload map locations[n].reload.l1.name = "reload1_back"; locations[n].reload.l1.go = "Nevis_town"; locations[n].reload.l1.emerge = "reload5"; locations[n].reload.l1.autoreload = "0"; locations[n].reload.l1.label = "Невис"; LAi_LocationFightDisable(&locations[n], true); n = n + 1; // Residence locations[n].id = "Nevis_townhall"; locations[n].id.label = "Резиденция"; locations[n].filespath.models = "locations\inside\Residence01"; locations[n].image = "loading\Residence.tga"; //Town sack locations[n].townsack = "Nevis"; Locations[n].lockWeather = "Inside"; //Sound locations[n].type = "residence"; locations[n].fastreload = "Nevis"; //Models //Always locations[n].models.always.locators = "Residence01_locators"; locations[n].models.always.l1 = "Residence01"; locations[n].models.always.window = "residence01_window"; locations[n].models.always.window.tech = "LocationWindows"; locations[n].models.always.window.level = 50; //Day locations[n].models.day.charactersPatch = "Residence01_patch"; //Night locations[n].models.night.charactersPatch = "Residence01_patch"; //Environment locations[n].environment.weather = "false"; locations[n].environment.sea = "false"; //Reload map locations[n].reload.l1.name = "reload1_back"; locations[n].reload.l1.go = "Nevis_town"; locations[n].reload.l1.emerge = "reload3"; locations[n].reload.l1.autoreload = "0"; locations[n].reload.l1.label = "Невис"; LAi_LocationFightDisable(&locations[n], true); locations[n].locators_radius.reload.dialog_event = 0.2; locations[n].locators_radius.camdetector.dialog_event = 2.2; n = n + 1; // Church locations[n].id = "Nevis_church"; locations[n].id.label = "Церковь"; locations[n].image = "loading\Church.tga"; //Town sack locations[n].townsack = "Nevis"; Locations[n].lockWeather = "Inside"; //Sound locations[n].type = "church"; locations[n].fastreload = "Nevis"; //Models //Always locations[n].filespath.models = "locations\inside\Church01"; locations[n].models.always.locators = "Church01_locators"; locations[n].models.always.tavern = "Church01"; locations[n].models.always.window = "church01_window"; locations[n].models.always.window.tech = "LocationWindows"; locations[n].models.always.window.level = 50; //Day locations[n].models.day.charactersPatch = "Church01_patch"; //Night locations[n].models.night.charactersPatch = "Church01_patch"; //Environment locations[n].environment.weather = "false"; locations[n].environment.sea = "false"; //Reload map locations[n].reload.l1.name = "reload1_back"; locations[n].reload.l1.go = "Nevis_town"; locations[n].reload.l1.emerge = "reload7"; locations[n].reload.l1.autoreload = "0"; locations[n].reload.l1.label = "Невис"; n = n + 1; ВОТ И ВСЁ!!! Далее. Открываем файл Pirates of the Caribbean\Program\Locations\locations_init.c и ищём секцию, она в самом начале: #include "locations\init\FalaiseDeFleur.c" #include "locations\init\Redmond.c" #include "locations\init\IslaMuelle.c" #include "locations\init\Oxbay.c" #include "locations\init\QuebradasCostillas.c" #include "locations\init\Douwesen.c" #include "locations\init\KhaelRoa.c" #include "locations\init\Conceicao.c" #include "locations\init\QuestLocations.c" #include "locations\init\boarding.c" и добавляем после последней строчки строчку: #include "locations\init\Nevis.c" дальше идём сюда: Pirates of the Caribbean\Program\Characters и открываем файл characters_init.c также ищем секцию #include "characters\init\FalaiseDeFleur.c" #include "characters\init\Redmond.c" #include "characters\init\IslaMuelle.c" #include "characters\init\Oxbay.c" #include "characters\init\Conceicao.c" #include "characters\init\Douwesen.c" #include "characters\init\officers.c" #include "characters\init\StoryCharacters.c" #include "characters\init\TempQuestCharacters.c" #include "characters\init\Other.c" #include "characters\init\QuebradasCostillas.c" #include "characters\init\TempQuestEnemy.c" #include "characters\init\FortCommandants.c" #include "characters\init\Usurers.c" #include "characters\init\Item Traders.c" и также после последней строчки добавляем #include "characters\init\Nevis.c" идём вниз этого же файла и ищем секцию ReloadProgressUpdate(); и после строки n = CreateQuebradasCostillasCharacters(n); ниже добавляем следующее: ReloadProgressUpdate(); n = CreateNevisCharacters(n); ReloadProgressUpdate(); далее закрываем этот файл и идём сюда: Pirates of the Caribbean\Program\Characters\init - это файл персонажей города. И здесь нужно скопировать например файл Oxbay.c и переименовать его в Nevis.c...Инструкцию, как создавать персонажей можете прочитать также в теме FAQ по модификациям пост от Жакуина Де Массе. Идём дальше...Чтобы нормально отображалсь картинка острова в журнале торговли нужно прописать к ней путь в файле Pirates of the Caribbean\RESOURCE\INI\INTERFACES\pictures.ini в секции: [ISLANDSICON] stextureName = small_islands.tga wTextureWidth = 512 wTextureHeight = 256 picture = Redmond,0,0,128,128 picture = Conceicao,128,0,256,128 picture = Douwesen,256,0,384,128 picture = IslaMuelle,384,0,512,128 picture = Oxbay,0,128,128,256 picture = FalaiseDeFleur,128,128,256,256 picture = QuebradasCostillas,256,128,384,256 picture = KhaelRoa,384,128,512,256 и после посл.строчки добавить: picture = Nevis, и пропишите также как предыдущие. Чтобы добавить модель острова на глобальную карту необходимо саму модель перемоделировать, она здесь: Pirates of the Caribbean\RESOURCE\MODELS\WorldMap\islands.gm По моему есть какой то другой способ, без моделирования, но его я еще не нашёл . Ещё в файле Pirates of the Caribbean\Program\Characters\init\FortCommandants.c нужно создать коменданта форта Невиса, просто скопируйте ничего не изменяя конец файла это: makeref(ch,Characters[n]); //Командир гарнизона на Невисе ch.name = "Форт Невис"; ch.lastname = "Commandant"; ch.id = "Nevis 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 = 1; ch.reputation = "None"; ch.experience = "0"; ch.skill.Leadership = "6"; ch.skill.Fencing = "9"; ch.skill.Sailing = "1"; ch.skill.Accuracy = "9"; ch.skill.Cannons = "5"; 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_CULVERINE_LBS24; ch.Fort.Cannons.Type.2 = CANNON_TYPE_CANNON_LBS32; LAi_SetHP(ch, 100.0, 100.0); n = n + 1; Ещё нужно создать кой чаво, чтобы можно было этот самый форт захватить ...Для этого идём сюда: Pirates of the Caribbean\Program\Locations\init\boarding.c и спускаемся ниже к секции FORTS...Скопируйте это: // ------------------------------------------------- // ------------------------------------Nevis_fort //ID Locations[n].id = "Nevis_fort"; locations[n].id.label = "Fort inside"; //Info Locations[n].filespath.models = "locations\Fort_inside\Fort_1\"; Locations[n].image = "loading\Fort.tga"; //Sound locations[n].type = "deck"; //Models //Always Locations[n].models.always.locators = "fort1_l"; Locations[n].models.always.l1 = "fort1"; //Day Locations[n].models.day.charactersPatch = "fort1_p"; Locations[n].models.day.fonar = "fort1_fd"; //Night Locations[n].models.night.charactersPatch = "fort1_p"; Locations[n].models.night.fonar = "fort1_fn"; //Environment Locations[n].environment.weather = "true"; Locations[n].environment.sea = "false"; Locations[n].boarding = "fort"; Locations[n].boarding.nextdeck = "NEXT1_Nevis_fort"; n = n + 1; //ID Locations[n].id = "NEXT1_Nevis_fort"; Locations[n].id.label = "Boarding deck"; //Info Locations[n].filespath.models = "locations\Fort_inside\Fort_2\"; Locations[n].image = "loading\Fort.tga"; //Sound Locations[n].type = "deck"; //Models //Always Locations[n].models.always.locators = "fort2_l"; Locations[n].models.always.l1 = "fort2"; //Day Locations[n].models.day.charactersPatch = "fort2_p"; Locations[n].models.day.fonar = "fort2_fd"; //Night Locations[n].models.night.charactersPatch = "fort2_p"; Locations[n].models.night.fonar = "fort2_fn"; //Environment Locations[n].environment.weather = "true"; Locations[n].environment.sea = "true"; Locations[n].boarding = "fort"; Locations[n].boarding.nextdeck = "NEXT2_Nevis_fort"; n = n + 1; //ID Locations[n].id = "NEXT2_Nevis_fort"; Locations[n].id.label = "Boarding deck"; //Info Locations[n].filespath.models = "locations\Fort_inside\Fort_3\"; Locations[n].image = "loading\Fort.tga"; //Sound Locations[n].type = "deck"; //Models //Always Locations[n].models.always.locators = "fort3_l"; Locations[n].models.always.l1 = "fort3"; //Day Locations[n].models.day.charactersPatch = "fort3_p"; Locations[n].models.day.fonar = "fort3_fd"; //Night Locations[n].models.night.charactersPatch = "fort3_p"; Locations[n].models.night.fonar = "fort3_fn"; //Environment Locations[n].environment.weather = "true"; Locations[n].environment.sea = "true"; Locations[n].boarding = "fort"; Locations[n].boarding.nextdeck = ""; n = n + 1; Ну вот собственно и всё. Я описал лишь самое важное вкратце для того чтобы только добавить остров! |
Текстовая версия | Сейчас: 28th September 2024 - 21:49 |