предлагаю всем добрым и умным человекам собраться и составить ФАК по внесениям модификаций в аддон. причина проста - обычно спрашивают одни и те же вопросы вроде "а как изменить текстуру гг", "а как вставить ее в игру" и т.д. поэтому все желающие помочь вэлком!
для примера приведу пост, найденный в "Готовых интерфейсах":
Пользуясь случаем, хочу поблагодарить Догеву за предоставленный топик, давно хотел тему создать, да чего-то и позабыл. Постараюсь поддержать тему. ИТАК: далее Q (question) - вопрос, A (answer) - ответ...
Q: А вот спросить хотел: кто знает как прописать код (ИНИ) чтобы деталь в маин меню двигалась с лева на право? Кто знает скажите плиз!
A:
Очень просто,
например, в INI\Interfaces\mainmenu.ini есть круги [circle1],2],3]. В 0124 это штурвал бледно синего цвета за кнопками управления главного меню. Так вот эти самые круги (circles) имеют технику крутиться, названная rotate:
[CIRCLE1]
- название элемента, он прописан в самом начале. Можно любое имя, тока в начале нужно не забыть прописать его порядок слоя.
position = 80,10,560,490
- позиция, т.е. размещение на экране.
techniqueName = iRotate
- имя техники. Текстура крутиться и ее грани будут разглаживаться по краям экрана. Короче пробуй с ней и без нее, потом поймешь
textureName = interfaces\circle\circle1.tga
- ну это и дураку понятно, размещение тга-шной текстуры в формате *.tga.tx
textureRect = 0,0,1.0,1.0
- это короче параметр количества прямоугольников на экране, его часть и т.д. Тоже нужно самому пробовать разные значения, тогда только поймешь
color = 100,128,128,128
- прозрачность (0-255), красный, зеленый, голубой (если текстура, то этим значением определяется ее гамма по сумме трех параметров)
;rotate = 0.02,0.005
- это значение отменено символом ";" в начале строки
rotate = -0.05,0.005
- если написано два ротэйта подряд, и оба без ";", то использоваться будет тот, что выше. Параметр rotate отвечает за скорость поворота текстуры влево (значение отрицательно) и вправо (значение положительно), второй параметр отвечает за ускорение поворота. Я в нем до конца и не разобрался.
speed = 6000,0.0,0.0
- если отменить все rotate, и установить здесь второе и третье значение дробным или целым числом, то текстура будет двигаться по горизонтали (второе значение) или по вертикали (третье значение), если установлены оба - по диагонали. Точно так же как и в rotate значения могут быть как положительными, так и отрицательными (тоже влево\вправо, вверх\вниз) На счет первого значения я ничего не знаю. Любое число здесь ничего не меняет.
Так вот чтобы картинка двигалась влево, то просто убери rotate и поставь значения
speed = 6000,-1.0,0.0
- скорость прокрутки: 6000, горизонтально влево:1, вертикально: 0
а вправо
speed = 6000,1.0,0.0
- скорость прокрутки: 6000, горизонтально вправо:1, вертикально: 0
//// единственная трабла в создании полноценной анимации в ВМЛ - каждые 30 секунд включается видео-заставка, которую невозможно отключить в связи с закрытым кодом, и после которой анимация начинается заново (даже после ручного сброса)
Диалоги это главное
ЗЫ: Собрал инфу по диалогам какая у меня была, короче вот…
Создание островов, пользуйтесь на здоровие, все проверенно на 100%, если все сделали правильно то глюков не будет!
Я только начинал острова ковырять 2 недели мучался, теперь сделал 6 новых островов. Сейчас мучаюсь с перегоном острова из к3 в пкм.
Откроем файл PROGRAM\WorldMap\worldmap_init.c
Меняем значения на время работы на false:
worldMap.debug = "false";
worldMap.evwin = "false";
worldMap.noenc = "true"; - Отвечает за генерацию энкоунтеров на карте(корабли, штормы)(true-вкл. false - выкл)
Собственнно приступим к особенностям создания островов
Я взял за основу Ямайка. Рассмотрим основные части:
worldMap.islands. Jamaica.name = "Jamaica"; - ID острова
worldMap.islands. Jamaica.position.x = -245.0; - Положение центра острова по оси x (запад-восток)
worldMap.islands. Jamaica.position.y = 30.0; - Высота центра острова
worldMap.islands. Jamaica.position.z = 370.0; - Позиция острова по оси z (север-юг)
worldMap.islands. Jamaica.position.rx = -235.7;
worldMap.islands. Jamaica.position.rz = 381.1;
worldMap.islands. Jamaica.radius = 120.0; - Радиус острова
worldMap.islands. Jamaica.kradius = 0.75;
worldMap.islands. Jamaica.label.text = "Jamaica"; - Название острова, будет отображаться на карте
worldMap.islands. Jamaica.label.icon = -1; - Флаг ОСТРОВА, ставим везде -1
worldMap.islands. Jamaica.label.visible = "true"; - Возможность показа названия (true-вкл. false-ыкл.), если выключено - то название появится после того, как Вы первый раз посетите остров.
//ОБРАЗЕЦ ГОРОДА
worldMap.islands. Jamaica.locations.city.name = "Jamaica"; - ID города
worldMap.islands. Jamaica.locations.city.move = "false";
worldMap.islands. Jamaica.locations.city.position.x = -225.0; - Позиция города на карте по оси x (запад-восток)
worldMap.islands. Jamaica.locations.city.position.y = 8.0; - Высота расположения города
worldMap.islands. Jamaica.locations.city.position.z = 380.0; - Позиция города по оси z (север-юг)
worldMap.islands. Jamaica.locations.city.position.ay = 0.0;
worldMap.islands. Jamaica.locations.city.modelName = "town"; - 3D модель города
worldMap.islands. Jamaica.locations.city.visible = "false"; - Возможность показа названия (true-вкл. false-выкл.), если выключено - то название появится после того, как Вы первый раз посетите город.
worldMap.islands. Jamaica.locations.city.label.text = "Ямайка"; - Название города, будет отображаться на карте
worldMap.islands. Jamaica.locations.city.label.icon = FRANCE; - Национальная принадлежность города (ENGLAND-Англия, FRANCE-Франция, SPAIN-Испания, PORTUGAL-Португалия, HOLLAND-Голандия, PIRATE-Пираты)
worldMap.islands. Jamaica.locations.city.label.visible = "true"; - Показывание герба объекта (false-герба нет, true - есть)
//ОБРАЗЕЦ БУХТЫ
worldMap.islands. Jamaica.locations.city1.name = "FShore 1"; - ID бухты
worldMap.islands. Jamaica.locations.city1.move = "false";
worldMap.islands. Jamaica.locations.city1.position.x = -210.300018; - Позиция бухты на карте по оси x (запад-восток)
worldMap.islands. Jamaica.locations.city1.position.y = 2.905003; - Высота расположения бухты
worldMap.islands. Jamaica.locations.city1.position.z = 411.800110; - Позиция бухты по оси z (север-юг)
worldMap.islands. Jamaica.locations.city1.position.ay = 0.0;
worldMap.islands. Jamaica.locations.city1.modelName = "leaf"; - 3D модель бухты
worldMap.islands. Jamaica.locations.city1.visible = "false"; - Возможность показа названия (true-вкл. false-выкл.), если выключено - то название появится после того, как Вы первый раз посетите бухту.
worldMap.islands. Jamaica.locations.city1.label.text = "Octopus Bay"; - Название бухты, будет отображаться на карте
worldMap.islands. Jamaica.locations.city1.label.icon = -1; - Национальная принадлежность бухты, ставим -1
worldMap.islands. Jamaica.locations.city1.label.visible = "false"; - Показывание герба объекта (false-герба нет, true - есть)
Вместо Jamaica пишете имя вашего острова, желательно без пробелов и, разумеется, на латинице. Города и бухты пишутся в порядке, который вы, наверное, уже заметили: т.е. сначала city, потом city1, city2 и т.д. независимо от того, город это или бухта.
Координаты на карте отсчитываются от её центра, т.е. точка с координатами {x,y,z}={0,0,0} находится в середине карты.
Модельки городов и бухт находятся в папке RESOURCE\MODELS\WorldMap
Теперь спускаемся в самый низ файла и видим это:
worldMap.playerShipX = 176.27; - Изначальная позиция корабля по оси x (запад-восток)
worldMap.playerShipZ = 35.34; - Изначальная позиция корабля по оси z (север-юг)
Ставим значения так, чтобы ваш корабль не оказался "внутри" острова, т.е. мог свободно плыть. Изменить обязательно.
Идём в PROGRAM\globals.c
Ищём #define MAX_ISLANDS, меняем 8 на кол-во прибавленных островов, т.е. если добавили 1 - пишете 9, еслии 2- 10 и т.п.
Но и это еще не все в папке пкм\Program\Characters\init\ создаем файл с названием города и указываем в нем персов и локации в которых они будут находится.
Затем в пкм\Program\Locations\init\ делаем на нашем острове дома, церкви, таверны и т.д.
Все, остров готов. Теперь проверяйте в игре
Многими хотелось сделать свои товары, чтобы помимо старых в магазинах продавались и ваши новые. Для этого сделайте все по этой инструкции. Я себе сделал 4 новых товара: рабы, сигареты, наркота , скот (коровы, куры, свиньи), гвозди и веревки (для ремонта корабля).
Итак начнем!
Для начала, откроем файл RESOURCE\INI\INTERFACES\pictures.ini
Ищем секцию:
[GOODS]
sTextureName = goods.tga - имя файла с изображениями товаров в директории RESOURCE\Textures\INTERFACES (без расширения .tx)
wTextureWidth = 1024 - ширина файла с изображениями товаров (в пикселях)
wTextureHeight = 512 - высота файла с изображениями товаров (в пикселях)
Далее идут значения местоположения отдельных картинок для каждого товара:
picture = Balls,128,256,256,384 и т.д.
Общий шаблон выглядит следующим образом:
picture = 'name','1','2','3','4'
'name' - ID товара, '1' - граница картинки товара слева, '2' - сверху, '3' - справа, '4' - снизу. (значения пишутся через запятую, без пробелов и ' ').
В этом файле таблица значений '1','2','3','4' для каждой картинки. Размер общего рисунка - 1024 x 1024 пикселя. Таблица в формате *htm.
После того, как прописали картинку, открываем файл PROGRAM\STORE\initGoods.c
Существует дватипа товаров: сами товары и боеприпасы.
Значения полей для боеприпасов:
Goods[GOOD_BALLS].Name = "Balls"; - ID товара(тот, который вы написали в предыдущем фалйле) (ID обязательно должен быть заключён в " ".
Goods[GOOD_BALLS].Cost = 2; - стоимость единицы товара.
Goods[GOOD_BALLS].Weight = 3; - масса единицы товара в центнерах.
Goods[GOOD_BALLS].Units = 20; - ?
Goods[GOOD_BALLS].SpeedV0 = 1.0; - начальная скорость снаряда.
Goods[GOOD_BALLS].DamageHull = 10.0; - урон, наносимый снарядом корпусу корабля.
Goods[GOOD_BALLS].DamageRig = 5.0; - урон, наносимый снарядом парусам.
Goods[GOOD_BALLS].DamageCrew = 0.25; - урон, наносимый снарядом команде корабля.
Значения полей для товаров:
Goods[GOOD_SAILCLOTH].Name = "Sailcloth"; - ID товара(тот, который вы написали в предыдущем фалйле) (ID обязательно должен быть заключён в " ".
Goods[GOOD_SAILCLOTH].Weight = 3; - масса единицы товара в центнерах.
Goods[GOOD_SAILCLOTH].Cost = 3; - стоимость единицы товара.
Goods[GOOD_SAILCLOTH].Units = 1; - ?
Goods[GOOD_SAILCLOTH].Swim.Model = "roll_of_materials"; - модель плавающего товара, находится в папке RESOURCE\MODELS\SwimGoods
Goods[GOOD_SAILCLOTH].Swim.Time = 10; - время плавания товара до его потопления. Если персонаж его не подобрал в течении этого времени, товар тонет.
Шаблон для товара:
Goods[GOOD_'NAME']...
Вместо 'NAME' пишете ID товара большими буквами.
После того, как прописали характеристики товара, открываем файл PROGRAM\STORE\goods.h
Находим #define GOOD_OIL 26
Ниже описываем свой товар по такому шаблону:
#define GOOD_'ID' 'n+1' , где вместо 'ID' пишем ID своего товара большими буквами. 'n' - наибольшее числовое значение в секции идентифицирования товаров (начиная с #define GOOD_BALLS 0). К этому наибольшему значению добавляем 1 и записываем полученное число вместо 'n + 1'. Между 'ID' и 'n+1' долженбыть пробел!
После того, как товар в секции идентифицирования, открываем файл RESOURCE\INI\TEXTS\RUSSIAN\GoodsDescribe.txt
Спускаемся внизфайла и описываем свой товар по следующему шаблону:
'ID' {'RusID'}
'ID'_descr
{
'txt'
}
Где 'ID' - ID вашего товара, 'RusID' - русское название, 'txt' - описание.
В описании боеприпасов возможно использование переменных:
#dDamageHull# - показывает урон, наносимый корпусу
#dDamageRig# - парусам
#f.2DamageCrew# - команде
Как альтернатива - просто написать эти значения обыкновеным текстом.
И это ещё не всё .
Открываем в этой же папке файл common.ini
Находим секцию
; goods name strings, идём вниз этой секции.
Описываем товар по шаблону:
string = ID,"RusId"
где ID - ID вашего товара, RusID - название на русском языке.
RusId пишется с кавычками и отделяется от IDа не пробелом, а запятой
Далее в этой же папке открываем файл ShipEatGood.txt
Идём вниз и пишем по шаблону:
seg_'ID' {'RusIDR'}
Дамаю, что такое 'ID', объяснять уже не надо, а вот 'RusIDR' - название товара в родительном падеже.
В файле SeaSection.txt, находящемся в этой же папки делаем то же, что и в предыдущем файле, только товар описываем выше строчки sea_exp_add {+%1 опыта}.
Удачи в создании новых товаров!
Прикрепленные файлы
t.rar ( 2.3 килобайт )
Кол-во скачиваний: 39
Для начала я хотел поблагодарить некоторых участников форума за письма которые они мне написали (Спасибо ребята! ), и модераторы вы извините меня за то, что я пишу много тем подряд, но если все будет в одном сообщении получится путаница не разобратся где че, ну а сейчас перейдем к главному…
Нашел я у себя настройки гг, так что вот они пользуйтесь на здоровие
Настройки нашего гг находятся в файле: PROGRAM\Characters\characters_init.c
Итак, приступим…
//ch.perks.list.InstantBoarding = true;
ch.name = “Nathaniel”; //Имя главного персонажа
ch.lastname = “Hawk”;//Фамилия главного персонажа
ch.id = “Blaze”;//Уникальный id гланвого перса – не менй его. Мой совет не меняйте его игре импользуеться именно этот!
ch.nation = ENGLAND;//Нация
ch.model = “blaze”;//Модель игрока. Модели можно посмотреть здесь: RESOURCE/models/characters. И помни что имя модели должно быть без расширения .gm! ch.activity_begin = “0”;
ch.activity_end = “24”;
ch.sex = “man”;//Определяем пол для анимации. Возможны значение: woman, monkey, skeleton
ch.luck = 4;//Удача
ch.spyglass.itemID = COMMON_SPYGLASS;//тип подзорной трубы
ch.gun.itemID = GUN_COMMON;//тип орудий
ch.gun = “gun”;//тип пистолета
ch.blade = “saber”;//тип сабли
ch.blade.itemID = BLADE_SABER;
ch.blade.time = 0.1;
ch.blade.colorstart = argb(128, 22, 46, 190);
ch.blade.colorend = argb(0, 20, 60, 100);*/
ch.location = ;
ch.location.group = ;
ch.location.locator = "";
ch.Dialog.Filename = «blaze_dialog.c»;
ch.rank = 1;
ch.reputation = “50”;//Репутация
ch.experience = 0;//Опыт. Высчитывается по формул ExperienceFromRank(sti(ch.rank))
//секция умений и навыков
ch.skill.Leadership = “1”;
ch.skill.Fencing = “1”;
ch.skill.Sailing = “1”;
ch.skill.Accuracy = “1”;
ch.skill.Cannons = “1”;
ch.skill.Grappling = “1”;
ch.skill.Repair = “1”;
ch.skill.Defence = “1”;
ch.skill.Commerce = “1”;
ch.skill.Sneak = “1”;
ch.skill.freeskill = 1;//Количество свободных скилов
ch.perks.freepoints = 1;//количество свободных очков для уменй
ch.money = “1000”;//Начальный капитал
ch.Ship.Name = “Титаник”;//Имя корабля
//ch.Ship.Type = SHIP_FRIGATE_ENGLAND;
//ch.Ship.Type = SHIP_CORVETTE_ENGLAND;
ch.Ship.Type = SHIP_LUGGER_ENGLAND;//Тип корабля(тип и нация)
//ch.Ship.Type = SHIP_MANOWAR2_FRANCE;
ch.Ship.Stopped = true;
//ch.Ship.Cannons.Type = CANNON_TYPE_TEST;
ch.FaceId = 31;
ch.ShipSlot1.Type=SHIP_NOTUSED;
ch.ShipSlot1.Name="No Name";
ch.ShipSlot2.Type=SHIP_NOTUSED;
ch.ShipSlot2.Name="No Name";
ch.ShipSlot3.Type=SHIP_NOTUSED;
ch.ShipSlot3.Name="No Name";
Все, мы изменили параметры нашего гг...
И еще для того что бы бегать без SHIFT необходимо сделать следующие:
Лезем в паку Program\Characters\characters.c
Находим функцию SetDefaultNormWalk() и заменяем код на:
void SetDefaultNormWalk(ref character)
{
// boal -->
if (GetMainCharacter() == character)
{
character.actions.walk = "run";
character.actions.backwalk = "back walk";
character.actions.run = "walk";
character.actions.backrun = "back run";
}
else
{
// boal <--
character.actions.walk = "walk";
character.actions.backwalk = "back walk";
character.actions.run = "run";
character.actions.backrun = "back run";
} // boal
Инструкция по созданию нового корабля Говорю сразу чтоб потом наездов типа непашет и т.д. не было, квестовые корабли типа чж прописаны так SHIP_BLACK_PEARL чтобы он работал нормально надо изменить так SHIP_BLACKPEARL_FRANCE или любая другая нация! Начнем...
Откроем файл Programs/ships/ships_init.c.
Найдите корабль, который наиболее похож на ваш новый корабль(по характеристикам) и скопируйте код в конец описания кораблей. ДО описания фортов!
//-------------------------------------------------------------------------
//NEW!<-------- названия корабля, не играет никакой роли, может быть любым.
//-------------------------------------------------------------------------
makeref(refShip,Ships Types[SHIP_NEW_FRANCE]); <– SHIP_названия корабля_нация
refShip.Name = «Xebec 1»; <-Может быть любой из существующих кораблей или ваше собственное имя.
refShip.Class = 1; <– Класс корабля. Может принимать значения от 1 до 7.
refShip.Cannon = CANNON_TYPE_CANNON_LBS32; <-тип установленных орудий.
refShip.MaxCaliber = 32; <-максимальный калибр
refShip.Weight = Tonnes2CWT(2200);<-масса корабля
refShip.Capacity = 3500;<-грузоподъемность
refShip.CannonsQuantity = 44;<-количество орудий
refShip.MaxCrew = 600;<-максимальная команда
refShip.MinCrew = 150;<-минимальная команда
refShip.SpeedRate = 17.2;<-скорость
refShip.TurnRate = 26;<-маневренность
refShip.Price = 50000;<-цена(средняя)
refShip.HP = 15000;<-жизни
refShip.SP = 100;<-жизни парусов
refShip.AbordageLocation = «BOARDING_XEBEC»; <– Локация абордажа. Можно плавать на тартане и поставить локацию абордажа от мановара..
refShip.EmblemedSails.normalTex = «ships\sail_Pirates.tga»;<-Текстура парусов, формат текстуры пишите просто *.тга без .тх на конце (иначе работать не будет!!!)
refship.WaterLine = 0.0; <– Секция описаний для реалистичного режима плавания.
refship.SpeedDependWeight = 0.3;
refship.SubSeaDependWeight = 0.9;
refship.TurnDependWeight = 0.8;
refShip.CanEncounter = false; <– Это делает корабль уникальным. Т.е. в море его встретить нельзя.
refship.InertiaAccelerationX = 3.0;
refship.InertiaBrakingX = 2.0;
refship.InertiaAccelerationY = 14;
refship.InertiaBrakingY = 5;
refship.InertiaAccelerationZ = 5.0;
refship.InertiaBrakingZ = 3.0;
refShip.Height.Bombs.Y = 1.0;
refShip.Height.Bombs.DY = 0.5;
refShip.Height.Grapes.Y = 2.0;
refShip.Height.Grapes.DY = 1.0;
refShip.Height.Knippels.Y = 10.0;
refShip.Height.Knippels.DY = 8.0;
refShip.Height.Balls.Y = 1.0;
refShip.Height.Balls.DY = 0.5;
теперь у нас есть корабль, далее откройте файл ship.h в этой же директории.
В первой строке замените
#define SHIP_TYPES_QUANTITY 166
На
#define SHIP_TYPES_QUANTITY 167
Теперь прокрутите ниже, до описания последнего корабля:
#define SHIP_FEARLESS 165
И допишите строку:
#define SHIP_VON 165, где SHIP_VON – SHIP_+название вашего корабля
Теперь наш корабль доступен как SHIP_имя_нация.
Если хотите поставить новый корабль гг надо:
//ch.Ship.Type = SHIP_FRIGATE_ENGLAND;
//ch.Ship.Type = SHIP_CORVETTE_ENGLAND;
ch.Ship.Type = SHIP_LUGGER_ENGLAND; -- Вписать его название сюда в 3-ю строчку.
//ch.Ship.Type = SHIP_MANOWAR2_FRANCE;
Значит, я могу помочь по созданию новых предметов. Я буду объяснять, как сделать новую саблю, подзорную трубу. Начнём с сабли, закончим трубой .
Итак открываем PROGRAM\Items\initItems.с та ищем раздел //WEAPONS
makeref(itm,Items[n]); - оставить неизменным
itm.id = "blade26"; - ID сабли, я пишу Blade*, где * номер сабли, т.е, если из 25 то писать 26
itm.groupID = BLADE_ITEM_TYPE; - ID, т.е. что это, сабля карта, пистолет
itm.name = "itmname_blade26"; - Имя сабли, обычно пишут itmname_blade* где * 26
itm.describe = "itmdescr_blade26"; - это для описания, типа сабля турецкая…
itm.model = "blade26"; - модель, вернее её имя, лучше blade*, где * 26
itm.folder = "items"; - папка с моделькой
itm.picIndex = 1; - номер квадрата в котором рисунок сабли
itm.picTexture = "ITEMS_10"; - имя текстуры рисунка в описании
itm.dmg_min = 5.0; - минимальное повреждение наносимое саблей
itm.dmg_max = 10.0; - максимальное повреждение наносимое саблей
itm.piercing = 0; - защита
itm.minlevel = 0; - минимальный уровень
itm.rare = 0.1; - редкость появление
itm.block = 10; - блокировка
itm.param.time = 0.05; - короче все эти параметры(что ниже) оставить так
itm.param.colorstart = argb(64, 64, 64, 64);
itm.param.colorend = argb(0, 32, 32, 32);
n++; - в конце ставить всегда
примечание: если будете вставлять как шаблон то перед каждой репликой включая «-» ставить знак //, в противном случае работать не будет.
Далее открываем PROGRAM\Items\items.h , та ищем строку
#define ITEMS_QUANTITY, добавляем, т.е если было 180 то будет 181.
Затем открываем RESOURCE\INI\INTERFACES\pictures.ini
Там ищем примерно это
[ITEMS_10] –ищем последнюю цифру и ниже добавляем(путём копирования)
sTextureName = items10.tga – вместо десяти следующая цифра, если последняя 11 то 12 и т.д…***
wTextureWidth = 512
wTextureHeight = 512
picture = itm1,0,0,128,128
picture = itm2,128,0,256,128
picture = itm3,256,0,384,128
picture = itm4,384,0,512,128
picture = itm5,0,128,128,256
picture = itm6,128,128,256,256
picture = itm7,256,128,384,256
picture = itm8,384,128,512,256
picture = itm9,0,256,128,384
picture = itm10,128,256,256,384
picture = itm11,256,256,384,384
picture = itm12,384,256,512,384
picture = itm13,0,384,128,512
picture = itm14,128,384,256,512
picture = itm15,256,384,384,512
picture = itm16,384,384,512,512
Теперь копируем в текстурах файл = items10.tga и вставляем с вашим номером = items*.tga – имя должно соответствовать 2 строчке выше(там значки «***»).
Это мы сделали картинку, квадрат описания, их там 16. Соответственно ставите номер квадрата, в котором ваша сабля, счёт с лева на право.
КВ( 1 )КВ( 2 )КВ( 3 )КВ( 4 ) - КВ - квадрат
КВ( 5 )КВ( 6 )КВ( 7 )КВ( 8 )
КВ( 9 )КВ(10)КВ(11)КВ(12) - схема items*.tga
КВ(13)КВ(14)КВ(15)КВ(16)
Всё! Идём дальше открываем: RESOURCE\INI\TEXTS\RUSSIAN\ItemsDescribe.txt
В нём описание сабли:
itmname_blade* {Имя сабли} // - itmdescr_blade* - помним да!
itmdescr_blade*
{
Непосредственно само описание.
}
Можно как шаблон это брать.
Теперь самая плюха, открываем PROGRAM\QUESTS\quests_reaction.с
Там прописывается добавка предмета на прилавки.
В нём ищем void GiveItemToTrader(aref ch)
Затем добавляем строки
if (makeint(pchar.rank) >=*) //ставим какой хотим уровень, т.е поставили 5 то //как только уровень будет больше 5 то сабля будет на прилавке.
{
irand = rand(*); //- по порядку смотрим в файле выше и ниже
if (irand == 1) { TakeNItems(ch,"blade*", Rand(1)+1);}
}
Если всё ОК то игра запустится, сначала лучше if (makeint(pchar.rank) >=*)
Поставить на «1» и проверить…далее буду объяснить, как подзорку добавить, там тоже есть свои нюансы.
Значит такс, создадим перса в городе для примера я взял Оксбэй . Вначале заходим в папку locations\locations_loader.c и ищём там комментарий:
/*
VisibleLocatorsGroup("reload", 1.0, 15.0, 255, 0, 255, 0);
VisibleLocatorsGroup("Merchant", 1.0, 15.0, 105, 0, 255, 125);
...
VisibleLocatorsGroup("sit", 1.0, 15.0, 255, 255, 0, 0);
VisibleLocatorsGroup("item", 1.0, 15.0, 255, 255, 0, 255);
//*/
И удалите символы /* и */? После чего допишите следующие строки:
VisibleLocatorsGroup("rld", 1.0, 15.0, 255, 0, 255, 0);
VisibleLocatorsGroup("box", 1.0, 15.0, 255, 255, 0, 0);
VisibleLocatorsGroup("randitem", 1.0, 15.0, 255, 255, 0, 255);
Сохраняем, загружаем игру – теперь мы видим все локаторы используемые в пкм На скрине видно что получится.
Все персонажи создаются в файлах, хранящихся в паках program\character\init\
Вот самый общий код для создания перса:
//секция описание перса
makeref(ch,Characters[n]); //эта функция создаёт перса
ch.name = “”; //Определяем фамилию...
ch.lastname = ""; //...и имя
ch.id = “Redmond prison commendant”; //необходимо для каждого преса придумать УНИКАЛЬНЫЙ id. Обычно составляется из имя + фамилия.
ch.model = «offic_eng»; //Модель игрока (посмотреть модели можно в папке RESOURCES\MODELS\CHARACTERS\). Обратите внимание, что модель пишется БЕЗ расширения .gm
ch.sound_type = “soldier”; //тип звука который мы слышим при разговоре с персом.
ch.sex = “man”; //Анимация скелета - принимает значения man - мужская модель, woman - женская модель, monkey - обезьяна, skeleton - скелет.
LAi_CharacterReincarnation(ch, true, true); //Необязательный параметр, указывает может ли перс перерождаться.
//секция инвентаря
GiveItem2Character(ch, «Blade1»); //Даёт персу оружие blade1, список оружия можно посмотреть здесь: program\ITEMS\initItems.c
ch.equip.blade = «Blade1»; //Заставляем перса использовать оружие которое дали ему.
//секция локаций
ch.location = «Redmond_prison»; //Это название локации, список названий можно посмотретьв файле: PROGRAM\LOCATIONS\INIT\Имя города.c
ch.location.group = “sit”; //Группа локаторов
ch.location.locator = «sit1"; //Стартовая точка
//секция диалога
ch.Dialog.Filename = «Redmond commendant_dialog.c»; //Файл диалога перса. Должен лежать в папке PROGRAM\DIALOGS\
//секция умений и т.п.
ch.rank = 1;//ранг
ch.reputation = “None”;//репутация
ch.experience = “0”;//опыт
ch.skill.Leadership = “1”;//лидер
ch.skill.Fencing = “4”;//фехтование
ch.skill.Sailing = “1”;//навигация
ch.skill.Accuracy = “1”;//точность
ch.skill.Cannons = “1”;//орудия
ch.skill.Grappling = “1”;//абордаж
ch.skill.Repair = “1”;//починка
ch.skill.Defence = “1”;//защита
ch.skill.Commerce = “1”;//коммерция
ch.skill.Sneak = “1”;//удача
ch.money = “10”; //деньги
//секция корабля, необязательная
ch.Ship.Name = “Fast death”;//имя корабля
ch.Ship.Type = SHIP_CORVETTE_PORTUGAL;//Тип корабля. Подробнее смотри program\Ships\Ships_init.c
ch.Ship.Cannons.Type = CANNON_TYPE_CANNON_LBS16;//Тип установленных орудий. 12,16, 24, и 32
//Анимация. Необходимо выбрать один из вариантов
LAi_SetPoorType(ch); //Сидит(бродяга)
LAi_SetCitizenType(ch); //Ходит
LAi_SetMerchantType(ch); //Ходит за главным персом
LAi_SetPatrolType(ch); //Патруль
LAi_SetGuardianType(ch); //Патруль у дверей
LAi_SetPriestType(ch); //Священник
LAi_SetSitType(ch); //Сидит на стуле и т.п.
LAi_SetWaitressType(ch); //Оффициантка
LAi_SetBarmanType(ch); //Бармен
//Другие параметры, связаные с анимацией.
LAi_SetLoginTime(ch, 0.0, 24.0);
LAi_SetHP(ch, 80.0, 80.0);//Устанавливаем жизни
LAi_SetStayHuberPointWindow(ch, “goto”, «goto10"); //Описываем путь перса.
LAi_SetStayHuberPointMap(ch, “goto”, «goto9");
//И на последок…
LAi_group_MoveCharacter(ch, «ENGLAND_SOLDIERS»); //Переместить перса в группу.
LAi_NoRebirthEnable(ch);//Запретить перерождение.
ch.greeting = «Gr_Redmond Commendant»; //Тип приветствия. Подробнее здесь: RESOURCE\INI\ALIASES\Greetings_alias.ini
n = n + 1;
Вот готовый пример:
makeref(ch,Characters[n]); //Пират Хреновый Глаз
ch.name = " Хреновый";
ch.lastname = "Глаз";
ch.id = "HG";
ch.model = "corsair3";
ch.sound_type = "soldier";
LAi_CharacterReincarnation(ch, true, true);
ch.sex = "man";
GiveItem2Character(ch, BLADE_SABER);
ch.equip.blade = BLADE_SABER;
ch.location = "Oxbay_port";
ch.location.group = "goto";
ch.location.locator = "goto23";
ch.Dialog.Filename = "Oxbay Soldier_dialog.c";
ch.rank = 1;
ch.nation = ENGLAND;
ch.reputation = "None";
ch.experience = "0";
ch.skill.Leadership = "1";
ch.skill.Fencing = "5";
ch.skill.Sailing = "1";
ch.skill.Accuracy = "1";
ch.skill.Cannons = "1";
ch.skill.Grappling = "1";
ch.skill.Repair = "1";
ch.skill.Defence = "1";
ch.skill.Commerce = "1";
ch.skill.Sneak = "1";
ch.money = "10";
ch.money = "10";
LAi_SetCitizenType(ch);
LAi_group_MoveCharacter(ch, "ENGLAND_CITIZENS");
n = n + 1;
Поздравляю вы создали новый персонаж в городе
Меняем стартовую точку
Вот это не очень легко. Для этого мы должны открыть два файла. Сначала откроем seadogs.c (лежит в корне каталога PROGRAM). Теперь откроем второй файл. Он лежит в директории PROGRAM\Locations\Init\. Там несколько файлов. Если вы хотите отправить его в место на Редмонде, то открывайте файл Redmond.c, если на Фале Де Флер, то открывайте FalaiseDeFleur.c. И так, до нужного вам острова. ;-) Пусть у нас главный герой попадет на Редмонд, в таверну. Значит, мы откроем еще и файл Redmond.c. В seadogs.c ищем вроде этого:
void NewGame()
{
DelEventHandler("frame","NewGame");
InitGame();
LoadMainCharacterInFirstLocation("Falaise_de_fleur_location_02", "", "Falaise_de_fleur_location_01");
InterfaceStates.Buttons.Resume.enable = true;
CreateClass("dummy");
}Нашли? Так вот, видите строчку LoadMainCharacterInFirstLocation("Falaise_de_fleur_location_02", "", "Falaise_de_fleur_location_01"); ? Видите? Хорошо. Этой функцией мы загружаем нашего героя в наш виртуальный мир. Так давайте ее рассмотрим. Falaise_de_fleur_location_02 - это место, где будет стоять главный герой, а Falaise_de_fleur_location_01 - это место, где появится корабль. Видите, между ними стоят кавычки, а в них ничего нет? Это - Emerge Location. Falaise_de_fleur_location_02 - это место около ворот (вход в город). Вот там мы появимся, если у нас в Emerge Location ничего нет и локация главного персонажа равна Falaise_de_fleur_location_02. Если же в Emerge Location написать sea и поместить нашего героя на локацию Falaise_de_fleur_location_01, то мы будем стоять на пирсе. Почему так? Falaise_de_fleur_location_01 - это место около ворот при выходе из города, где находится пирс. Без Emerge Location мы бы не стояли на пирсе, а стояли около ворот. Если мы, например, стоим на улице города, где находятся таверна, верфь, магазин и т.п., то станут возможными Emerge Location = tavern, store, shipyard и т.д. Если же мы стоим на улице, где нет верфи, магазина, таверны, а есть резиденция губернатора, то Emerge Location = residence. Но жаль, что не работают Emerge Location = residence, store, shipyard, tavern. Так бы было легче записывать. Ну хоть работают другие, более длинные Emerge Location. Их можно посмотреть в локации какого-нибудь острова. Например, мы стоим на улице, где есть резиденция губернатора (я буду говорить о Фале Де Флер). Эта улица - Falaise_de_fleur_location_03. Там есть линк на локацию Falaise_de_fleur_townhall. Это находится вот здесь:
Locations[n].reload.l3.name = "Falaise_de_fleur_townhall";
Locations[n].reload.l3.go = "residence";
Locations[n].reload.l3.emerge = "locator1";
Не надо писать Emerge Location = locator1. Работать не будет. Если же написать Emerge Location = Falaise_de_Fleur_townhall, то все будет нормально. Надеюсь, вы поняли. Идем дальше. Мы же хотим изменить локацию героя. Так вот, смотрим в Redmond.c. Как я говорил выше я помещу его в таверну. Смотрим и находим вот это:
Locations[n].id = "City_Redmond_largetavern";
Ага, нашли. Теперь нам осталось написать в seadogs.c локацию - City_Redmond_largetavern. Только смотрите, не напутайте, нужно вписать это в локацию для персонажа, а не для корабля. Ну вот что у нас получилось:
void NewGame()
{
DelEventHandler("frame","NewGame");
InitGame();
//LoadMainCharacterInFirstLocation("Falaise_de_fleur_location_02", "", "Falaise_de_fleur_location_01");
LoadMainCharacterInFirstLocation("City_Redmond_largetavern", "", "Falaise_de_fleur_location_01");
InterfaceStates.Buttons.Resume.enable = true;
CreateClass("dummy");
}
Смотрим в игре, корабля нет. Он с нами не поплыл. В Фале Де Флер остался. Давайте исправим вот эту строчку:
LoadMainCharacterInFirstLocation("City_Redmond_largetavern", "", "REDMOND_PORT");
Ура, все получилось!
----------------------------------------------------------------------------------------------------------------------------------------------------------
Итак, задача не из лёгких – добавить новую локацию. А поэтому без лишних слов приступим к делу . Для начала изучим что же такое локация и из чего она состоит.
Для примера откроем любой файл из папки PROGRAM\Locations\init\
Locations[n].filespath.models = "locations\town_Douwesen\port";<--Это указатель на модель, используемую для внутренней части.
Locations[n].image = "loading\Douwesen_Port.tga";<--Это картинка загрузки в локацию, распологаютсья в папке \RESOURCE\Textures\Loading\
locations[n].worldmap = "Douwesen";
Locations[n].id = "Douwesen_port";<--Это ID особых локаций
locations[n].id.label = "Douwesen port";<--Метка
Locations[n].townsack = "Douwesen";
locations[n].type = "port";<--
locations[n].fastreload = "Douwesen";
Locations[n].models.always.locators = "DouPort_l";<--Перегружаем локаторы
Locations[n].models.always.seabed = "DouPort_sb";<--Загружаем карту морского дня
Locations[n].models.always.seabed.foam = "1";<-- разрешаем пену
Locations[n].models.always.l1 = "DouPort";
Locations[n].models.always.l1.foam = "1";
Locations[n].models.always.grasspatch = "DouPort_g";
Locations[n].models.day.rinok = "DouPort_e01";
Locations[n].models.day.charactersPatch = "DouPort_pd";
Locations[n].models.day.fonar = "DouPort_fd";
Locations[n].models.night.fonar = "DouPort_fn";
Locations[n].models.night.charactersPatch = "DouPort_pn";
Locations[n].environment.weather = "true";<--Разрешаем или запрещаем действие погоды в локации
Locations[n].environment.sea = "true";<--Разрешаем или запрещаем море в данной локации
Locations[n].reload.l1.name = "reload3";<--Локатор перехода в следующую локацию
Locations[n].reload.l1.go = "Douwesen_town";<--ID следующей локации
Locations[n].reload.l1.emerge = "reload9";<--Имя локатора где появимся
Locations[n].reload.l1.autoreload = "0";
Locations[n].reload.l1.label = "Douwesen.";<--Этот текст показывается когда вы смотрите на дверь.
Locations[n].reload.l2.name = "reload2";
Locations[n].reload.l2.go = "Douwesen";
Locations[n].reload.l2.emerge = "reload_1";
Locations[n].reload.l2.autoreload = "0";
Locations[n].locators_radius.reload.reload2 = 3;
Locations[n].reload.l2.label = "Sea.";
Locations[n].reload.l3.name = "reload1_back";
Locations[n].reload.l3.go = "Douwesen";
Locations[n].reload.l3.emerge = "reload_1";
Locations[n].reload.l3.autoreload = "0";
Locations[n].reload.l3.label = "Sea.";
Locations[n].locators_radius.reload.reload1_back = 3;
Locations[n].reload.l4.name = "reload2_back";
Locations[n].reload.l4.go = "Douwesen";
Locations[n].reload.l4.emerge = "reload_1";
Locations[n].reload.l4.autoreload = "0";
Locations[n].locators_radius.reload.reload2_back = 3;
Locations[n].reload.l4.label = "Sea.";
Locations[n].reload.l5.name = "reload1";
Locations[n].reload.l5.go = "Douwesen";
Locations[n].reload.l5.emerge = "reload_1";
Locations[n].reload.l5.autoreload = "0";
Locations[n].reload.l5.label = "Sea.";
Locations[n].locators_radius.reload.reload1 = 3;
n = n + 1;
А теперь найдите дом который хотели изменить, смените ID, после чего замените в городе, где хотите свой дом ID перехода.
Значит так! Сейчас мы добавим в игру новый калибр пушек.
Для этого открываем Пираты Карибского Моря\Program\CANNONS\Cannons.c
Находим там:
case 32:
return CANNON_TYPE_CANNON_LBS32;
break;
И после пишем:
case 48:
return CANNON_TYPE_CANNON_LBS48;
break;
Далее идем в Пираты Карибского Моря\Program\CANNONS\Cannons.h
В самом верху файла находим:
#define CANNON_TYPES_QUANTITY 7
и меняем на:
#define CANNON_TYPES_QUANTITY 8
Затем находим строчку:
#define CANNON_TYPE_CANNON_LBS32 6
И после нее пишем:
#define CANNON_TYPE_CANNON_LBS48 7
Идем в самый низ файла и находим там:
case CANNON_TYPE_CANNON_LBS32:
return 32;
break;
и после нее дописываем:
case CANNON_TYPE_CANNON_LBS48:
return 48;
break;
Затем открываем Пираты Карибского Моря\Program\CANNONS\ Cannons_init.c
И в самом низу после пушек 32 калибра пишем вот это:
makeref(rCannon,Cannon[CANNON_TYPE_CANNON_LBS48]); - Описание
rCannon.type = CANNON_NAME_CANNON; - Название
rCannon.caliber = 48; - Калибр
rCannon.ReloadTime = 1; - Время перезарядки
rCannon.Cost = 3500; - Стоимость
rCannon.Weight = 72; - Вес
rCannon.FireAngMax = 0.60;
rCannon.FireAngMin = -0.35;
rCannon.DamageMultiply = 4.0;
InitBaseCannons_CalcSpeedV0(&rCannon,750.0); - Дальность стрельбы
Теперь идем в Пираты Карибского Моря\RESOURCE\INI\INTERFACES\pictures.ini
Открываем, и находим там строчку:
picture = cannon32,768,0,896,128
и после нее, пишем:
picture = cannon48,768,0,896,128
Затем находим Пираты Карибского Моря\RESOURCE\INI\TEXTS\common.ini
Там находим строчку:
string = caliber32,"32фунт."
и после нее вписываем:
string = caliber48,"48фунт."
Включаем игру и проверяем! Будут вопросы, пишите!
дополните пожалуйта описание *.INI-файлов
Теперь остается свести все слои (CTRL+E на англ. раскладке) и сохранить, заменив старую текстуру.
- Теперь конвертируем в ВМЛ и разворачиваем игру. Играем с новой галкой в меню перков. Если не работает, то выйдите из игры и войдите снова. (Не забывайте про настройку tx_converter'а: A8R8G8B8 вверху и внизу)
Позже дополню описание *.INI-файлов. Если чего забыл, поправьте меня!
и когда он дополнит?
с такими вопросами - автору в личку
устное предупреждение
Ставить мой мод_в4, в котором код открыт и все на русском.
Официально за три года существования игры не выходило патчей, открывающих код, как это было с к3, т.е. ПКМ-моддинг "нот суппортет" - либо признано достаточным неофициальные патчи - так что велкам.
Предлагаю скомпилировать фак в HTML-файл справки. Или накодить оболочку и сделать Exeшник. А потом выложить для скачивания. Могу сделать я, потом оцените.
ОК постараюсь завтра или сегодня вечером сделать и выложить (в эту тему).
Попробовал ваши советы по моддингу . Сделал пару новых сабель, ща мучаюсь с кораблём.
Кстати сделал фак. По обновлениям и если найдёте косяки пишите в личку:)
Делал с нуля, без шаблона, так что строго не ругайте:)
Прикрепленные файлы
FAQ.rar ( 30.99 килобайт )
Кол-во скачиваний: 176
как сделать в море от 1 лица людей:в AIcameras ищем case "SeaShipCamera":
if (!LAi_IsDead(&Characters[GetMainCharacterIndex()]))
{
SeaCameras.Camera = "SeaDeckCamera";
Crosshair.OutsideCamera = false;
PeopleOnShip.IsOnDeck = 1;
bSwitch = true;
}
break; и меняем на case "SeaShipCamera":
if (!LAi_IsDead(&Characters[GetMainCharacterIndex()]))
{
SeaCameras.Camera = "SeaDeckCamera";
Crosshair.OutsideCamera = false;
PeopleOnShip.IsOnDeck = 0; здесь
bSwitch = true;
}
break;
Надо попробовать, ну а как идея с компилед хтмл факом? продолжать его делать?
идея хорошая,скачал,понравилось,но про НПС нету!!!
э я сам не спец по созданию модов к игре фак делал из информации уже имеющейся в этой теме, напишите про НПС и я добавлю в фак. (Или сами добавьте и выложите, при желании)
Было уже про НПС(в смысле новых персонажей,на 1ой странице писал Jaoquin de Masse)
если было, то кидай ссылку, иначе какой смысл тут устраивать перепирательства на пустом месте?
Создаем подзорную трубу:в файле initItems ищем //SPYGLASSES, копируем описание любой трубы и вставляем в конец
makeref(itm,Items[n]);
itm.id = "spyglass5"; //ID трубы
itm.groupID = SPYGLASS_ITEM_TYPE; //ID группы
itm.name = "itmname_spyglass5";
itm.describe = "itmdescr_spyglass5";
itm.picIndex = 14; //№ картинки
itm.picTexture = "ITEMS_1"; //текстура
itm.folder = "items"; //папка с текстурами
itm.model = "spyglass4"; //модель
itm.price = 8000; //цена
itm.scope.texture = "eye_BestTub.tga";//текстура во время просмотра из трубы
itm.scope.zoom = 12.0; //зум
itm.scope.time_activate = 500;
itm.scope.time_update = 150;
itm.scope.show.nation = 1; //показатель нации //1-да,0-нет
itm.scope.show.cannons = 1; //показатель орудий
itm.scope.show.ship_name = 1; //показатель имя корабля
itm.scope.show.ship_type = 1; //показатель типа корабля
itm.scope.show.hull = 1; //показатель жизни корпуса
itm.scope.show.sail = 1; //показатель жизни парусов
itm.scope.show.crew = 1; //показатель команды
itm.scope.show.speed = 1; //показатель скорости
itm.scope.show.charge = 1; //показатель типа заряда
itm.minlevel = 0;
itm.rare = 4;
n++;
далее в RESOURSE/INI/TEXTS/RUSSIAN/ItemsDescribe.txt
ищем описания труб и делаем описание своей
для проверки в PROGRAM/QUESTS/both_reaction.c
ищем
locations[FindLocation(Pchar.location)].box1.items.pistol1 = 1;
locations[FindLocation(Pchar.location)].box1.items.spyglass1 = 1;
locations[FindLocation(Pchar.location)].box1.items.potion1 = 2;
locations[FindLocation(Pchar.location)].box1.money = 1000;
меняем spyglass1 на spyglass5 и в новой игре в коробке ищем ее
Как добавить остров из игры Корсары 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;
Ну вот собственно и всё. Я описал лишь самое важное вкратце для того чтобы только добавить остров!
Думаю обновлять фак смысла нет, сделаю полный когда накопится много инфы а не по одному совету добавлять...
Значит такс, сейчас я напишу (в общих чертах) как работать с альфа каналом. Я работал с Adobe Photoshop CS2. Редактировал файл goods.tga.tx. В Интернете я нарыл рисунок для товара лекарства (вроде даже из вмл). Затем через ConvertorTX перегнал в .tga формат.
Затем открыл Photoshop, в нем файлы goobs.tga и pic_x.tga.(картинка, скачанная с Интернета).
1.При помощи инструмента «Перемещение»(V) переносим изображение из файла pic_x.tga. в goobs.tga файлы с товарами.
2.Устанавливаем картинку нового товара примерно одинаково с остальными, как на рисунке 1.
3.В верхней панели включаем «окно/каналы».
4.Затем выбираем альфа канал, как на рисунке 2.
5.Включаем кисть «Ластик»(E) и аккуратно стираем красный слой (альфа) над рисунком, рисунок 3.
6.Нажимаем одновременно Shift+Ctrl+E, объединить слои.
7.Сохраняем и смотрим в ConvertorеTX, что получилось. Должно получиться как на рисунке 4.
ЗЫ – если кому надо эту картинку для товара, пишите в личку…
Сейчас я напишу как перенести модели абордажных палуб из к3 в пкм (для тех у кого есть к3). Для начала в GM_Viewere откроем к3\RESOURCE\MODELS\Locations\decks\decks 01\ decks 01.гм, смотрим какие текстуры нужны и переносим их из к3RESOURCE\Textures в пкм\RESOURCE\Textures. Затем переносим и сами модели. Затем в GM_Viewere открываем к3\RESOURCE\MODELS\Locations\инсайд\кабин01\кабин01.гм, и также переносим текстуры и модели. Но модели идут в пкм\RESOURCE\MODELS\Locations …
Далее идем пкм\PROGRAM\Locations\initбоардинг.с
Там ищем выбираем любой корабль например Барак, и переправляем на новое. Где что обозначает написано выше…
Короче должно получится так:
Люди, составте пожалуйста путевый FAQ про перегон моделей из 3Д Макса в гм.
Сейчас объясню, как создать новые навыки, все очень просто
заходи в Program\Interface\Perks\perks_init.c
открываем perks_init, появляется список
Вот это все навыки
Сначала вам нужно сделать 3 картинки своего навыка:
первый 128 закинуть в Resource\Textures\Interfaces\Perks\128
второй 64 закинуть в Resource\Textures\Interfaces\Perks\64
и третий должен быть тоже 64, но только черно-белым можно это
сделать в фотошопе ну и закинуть в Resource\Textures\Interfaces\Perks
после чего добавьте, например вот такую строчку в perks_init
ChrPerksList.list.Medicament.descr = "perkMedicament"; - это навык медика
после чего заходите в игру ну и наслаждайтесь
Вот как они примерно должны выглядить
Прикрепленные файлы
Perks.rar ( 43.29 килобайт )
Кол-во скачиваний: 149
МИНИ-FAQ ПО TOOL (for seaward-forum)
--------------------------------------
ОСНОВНЫЕ ВОПРОСЫ:
--------------------------------------
__________________________
В:
Для чего вообще нужна программа TOOL?
О:
TOOL – программа, составленная из нескольких маленьких программ. TOOL умеет:
1. Просматривать gm-файлы и анимацию для них. Создавать анимацию для разных моделей.
2. Обрабатывать скелетную анимацию, что впоследствии выдаст более корректную анимацию персонажей в игре.
3. Конвертировать* .gm-файлы в VRML (конвертирует в этот формат, после чего этот файл обрабатывается в 3dsMax, сохраняется в этом же формате, и конвертируется обратно в .gm, хотя для кораблей этот способ имеет некоторые ограничения)
* - эта возможность имеет ряд ограничений, которые вы без особого труда найдете в разделе ВОПРОСЫ на этом форуме (www.seaward.ru/forum.htm), забив в поле поиска на форуме слово "MAYA" или "3d Max".
4. Редактировать и добавлять новые локаторы в 3d-модельках, и файлах локаторов.
5. Отображать и редактировать файлы с расширением .ptc.
!!!TOOL – это не программа 3d-моделирования - в ней нельзя создавать свои 3d-модели! Создавайте их в Maya 4.5 или 3ds MAX (для этого нужны определенные плагины, которые тоже есть в недрах форума)
__________________________
В:
Есть ли какие-нибудь самоучители для TOOL - Faq и т.п.?
О:
Существует, но их найти очень трудно, причем они на английском языке, - все самые основные опции, действия и примеры описаны в файле-помощи в программе TOOL (кнопка "?" справа вверху, но эта помощь тоже на английском). Есть описания упорядоченных действий правильного конвертирования файлов из TOOL в MAYA 3.0 и обратно, а остальное ищите на форумах, на этом форуме (www.seaward.ru/forum.htm) в разделе "Модификации" в теме "ВОПРОСЫ". Вообще разобраться в TOOL самому не составляет особой сложности, главное потратить время на метод "проб и ошибок" и тогда через пару дней можно уже смело создавать и редактировать что-нибудь в игре с помощью TOOL.
__________________________
В:
В Корсарах III на каждом корабле установлены ”нехорошие” сигнальные огни, которые напоминают огни самолета, заходящего на посадку, как их можно убрать с помощью TOOL?
О:
Модели кораблей в KIII сделаны очень даже неплохо, но их ночные "сигнальные огни" действительно портят впечатление об их качестве с первого взгляда. Как быть с фонариками, которые так не полюбили фанаты Корсаров?
Делаем все модели кораблей на примере простой лодки "Боевая Тартана" (что при продаже корабля достается нам):
1. Открываем TOOL, в ней выбираем "File -> Open gm". Ищем в открывшемся окне каталог Корсаров III: "C:\Корсары 3\RESOURCE\MODELS\Ships\WarTartane1", выбираем файл "WarTartane1.gm". Нажимаем "Открыть" и в черном окне TOOL появляется белая моделька на синем фоне. Без текстур и мачт. Это нормально. (Текстуры нужно конвертировать в формат .tga и в верхнем поле выбрать каталог текстур, но это делать необязательно, т.к. основное окно для нашей задачи нам не понадобится)
2. Щелкаем в верхней части окна TOOL по кнопке "View -> Locators". Появилось окно WarTartane1, в котором есть вкладка (-)__Locators.
3. Щелкаем по вкладке Locators, появилась таблица "Info", в которой слева направо есть загаловки
(?)-------------------------------------
Locator Name - имя локатора может принимать разные значения, обычно используются цифры вкупе с буквами. Напрямую зависят от следующего по порядку заголовка:
Locator Group - Это группа локаторов, которая прописана в скрипте и коде игры. На группу ссылаются определенные требования игры. Например, если значение этого столбца Flares, то эта строка отвечает за настройку позиции фонаря, а если geometry, то за настройку размещения какой-либо геометрии в данной модели (кстати, в данном случае имя 3d модели должно соответствовать имени Локатора в данной группе). Разберетесь, это только звучит сложно.
PosX,Y,Z - размещение данного локатора относительно центра модели.
XX,YY,ZZ - размер по осям X, Y, Z - имеет смысл изменять только группы локаторов Geometry (например мачты), значения от 0 - 0% до 10 - 10000% от оригинального размера (1 - 100%)
XY,XZ,YX,YZ,ZX,ZY - угол поворота локатора (используется пушками, группа локаторов CannonR, L, C, B)
s0, s1 – не тестированные мной значения, оставляейте их равными s0=1, s1=0. Если хотите, то в дальнейшем можно опробовать разные варианты значений этого параметра.
------------------------------------------
- Чтобы узнать какие из этих локаторов отвечают за фонари открываем программу ”GMview” (просмотрщик gm-моделек, есть на этом форуме ”www.seaward.ru/forum.htm”), в этой программе открываем нашу модель Tartane1 все в том же каталоге, что искали из TOOL (для удобства откроем и текстурку для этой тартаны ”Корсары III/Resource/Textures/Ships/Tartane1/Hull1”).
- В левом нижнем углу программки отметим в поле Locators две галочки ()Show labels и ()Show locators. Теперь мы наглядно видим где эти локаторы находятся непосредственно в gm-модельке.
- Смотрим... fm1a101, fm1a102, fm2a201, fm2a202 очень похоже на то, что эти локаторы в игре являются фонариками. Запускаем игру К3, продаем корабль, плаваем на тартане ночью - опа, и вправду фонари на этих местах. Сохраним игру, выходим из игры и делаем следующее:
4. Разворачиваем TOOL, смотрим на таблицу Info и видим, что fm1a101, fm1a102, fm2a201, fm2a202 принадлежат одной группе локаторов flares*, делаем вывод, что flares* - это фонарики во всех модельках кораблей.
5. Теперь щелкаем по самому левому пустому полю таблицы, столбец которых не имеет заголока, напротив fm2a202 - выделяется вся строка, нажимаем клавишу "delete" и все, одного огонька нет, делаем с другими то же самое. Только не удаляйте остальные локаторы. Они отвечают за расположение мачт, тросов, пушек и камер.
6. Теперь нажимаем APPLY CHANGES внизу слева окна с таблицей, закрываем окно, переходим в интерфейс TOOL.
7. Нажимаем "file -> Save gm". Внизу TOOL в поле строки состояния появилось сообщение "File saved in gm format" - все готово. Запускаем игру, загружаем наш сейв. Теперь тартана без огней! Ура, товарищи, мы сделали это.
Точно так же, по аналогии, делаем и с другими кораблями.
* - не только "flares" отвечает за огни на моделях кораблей, но и группа "lights" с именем локаторов "l00xx" - но эти фонари не нужно удалять, т.к. это кормовые огни, они придают кораблям ночью красивое освещение палубы и придают игре баланс (ночью в игре почти ничего не видно), в реальности они даже часто не гасились в бою – на палубе ничего не видно.
----------------------------------------------------------------------------------------------------------------
ОШИБКИ, КОТОРЫЕ ЧАСТО ВОЗНИКАЮТ У НОВЫХ ПОЛЬЗОВАТЕЛЕЙ:
----------------------------------------------------------------------------------------------------------------
__________________________
В:
Я скачиваю TOOL, запускаю установку - всплывает ошибка о какой-то отсутствующей программе. Что делать?
О:
Это совершенно нормальное явление, т.к. в Windows XP не предусматривается обязательная установка некоторых программ, таких, например, как Microsoft .NET-Framework - набор функций и описаний необходимых для TOOL. Существует две распространенных версий этой программы - 1.4 и 2.0.
И та и другая версии подходят для TOOL.
Microsoft .Net-Framework v1.4 можно найти в следующих местах:
1. Лицензионный диск WinXP (Запустите установку WinXP из Windows, в появившемся синем окошке выберите: Выполнение иных задач->Установка .NET-Framework) - далее пойдет установка, со всеми вопросами соглашайтейсь и нажимайте "next". НО!: Установка может и не пойти, т.е. после нажатия кнопки "Установка .NET-Framework" может ничего не произойти, тогда у вас пиратская версия Windows, переходите к следующему пункту.
2. Поищите самый последний диск Игромании из тех, что есть дома на полке (если таковой вообще имеется, если нет, то см. дальше), обычно в каталоге "Игромания ..-06\Soft\!Standard\microsoft_net" лежит эта прога, если такого каталога нет - поройтесь на диске через интерфейс. (Игромания обычно выкладывала версию 1.4, но в 2006 году вышла версия 2.0, напомню, что обе подходят)
3. Если есть дистрибьютив MS Office, то в каталоге воспользуйтесь поиском "dotnetfx".
4. Если нет результата, то остается последний способ - качать ~40 mb в незжатом состоянии файла dotnetfx.exe по адресу:
http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=en
Все. После того как поставите .NET-framework, установка TOOL пойдет нормально.
__________________________
В:
Установка прошла успешно, но TOOL не хочет запускаться.
О:
Все просто - если TOOL не запускается, значит не хватает каких-либо библиотек в Вашем Windows XP (если это происходит, значит на компьютере есть еще программы, которые не запускаются) - выход - проверьте компьютер на наличие вирусов (троянов), сделайте дефрагментацию системного раздела, переустановите TOOL, в крайнем случае переустановите Windows XP (желательно SP2).
__________________________
В:
TOOL установилась, запустилась, но когда я сворачиваю все окна, или запускаю/закрываю какие-либо программы, или запускаю вторую копию TOOL, то вылетает ошибка Microsoft .NET Framework: Unhandled exception has.... Error in the application. Details, Continue, Quit.
О:
При возникновении подобной ошибки нажмите Continue в появившемся окне, разверните TOOL и можно работать дальше. TOOL не совершенна, в ней много глюков, нужно не забывать сохранять изменения, т.к. иногда TOOL может хитро вылететь в самый нужный момент:)
ПИШИТЕ ВОПРОСЫ В Личных Сообщениях ИЛИ НА E-MAIL. Буду рад ответить!
уважаемый, а где мона качнуть данную программку?
Вот решил обновить список программ для создания модов:
1
2
3
4
5
TOOL лежит
Незнаю будет ли это актуально но всё равно напишу
Я давно не был на форуме и заметил что добавилось большое количество моделей персов и это радует, так вот я напишу как добавить модели в К3 для абордажа или для охранников в городах
Зачем это нужно ? Да чтоб при абордаже не мелькали одни и теже лица !!!
Для этого находим файл nations_init.с в папке program\nations открываем и видим
void InitNations()
{
ref rNation;
//England
makeref(rNation,Nations[ENGLAND]);
rNation.Name = "England";
rNation.ShortName = "Eng";
rNation.worldMapShip = "british";
//Location fantom models
rNation.fantomModel.m0 = "off_eng_1";
rNation.fantomModel.m1 = "off_eng_2";
rNation.fantomModel.m2 = "sold_eng_1";
rNation.fantomModel.m3 = "sold_eng_2";
rNation.fantomModel.m4 = "sold_eng_3";
rNation.fantomModel.m5 = "sold_eng_4";
rNation.fantomModel.m6 = "sold_eng_5";
rNation.fantomModel.m7 = "sold_eng_6";
rNation.fantomModel.m8 = "sold_eng_7";
rNation.fantomModel.m9 = "sold_eng_8";
//Boarding models
rNation.boardingModel.enemy.m1 = "off_eng_1";
rNation.boardingModel.enemy.m1.ani = "man";
rNation.boardingModel.enemy.m2 = "off_eng_2";
rNation.boardingModel.enemy.m2.ani = "man";
rNation.boardingModel.enemy.m3 = "sold_eng_1";
rNation.boardingModel.enemy.m3.ani = "man";
rNation.boardingModel.enemy.m4 = "sold_eng_2";
rNation.boardingModel.enemy.m4.ani = "man";
rNation.boardingModel.enemy.m5 = "sold_eng_3";
rNation.boardingModel.enemy.m5.ani = "man";
rNation.boardingModel.enemy.m6 = "sold_eng_4";
rNation.boardingModel.enemy.m6.ani = "man";
rNation.boardingModel.enemy.m7 = "sold_eng_5";
rNation.boardingModel.enemy.m7.ani = "man";
rNation.boardingModel.enemy.m8 = "sold_eng_6";
rNation.boardingModel.enemy.m8.ani = "man";
rNation.boardingModel.enemy.m9 = "sold_eng_7";
rNation.boardingModel.enemy.m9.ani = "man";
rNation.boardingModel.enemy.m10 = "sold_eng_8";
rNation.boardingModel.enemy.m10.ani = "man";
Этот код только для Английской нации
Так вот чтобы добавить моделей к солдатам в городе тогда копируйте строку
rNation.fantomModel.m0 = "off_eng_1";
и заменяйте в ней m0 и "off_eng_1";
вместо m0 пишите m10,m11 и.т.д в зависимости сколько вы моделей добавите
а вместо "off_eng_1" в кавычках пишите имя модели которую вы добавляете она толжна лежать в папке
RESOURCE\MODELS\Characters
А если хотите добавить моделей на абордаж тогда копируйте
rNation.boardingModel.enemy.m10 = "sold_eng_8";
rNation.boardingModel.enemy.m10.ani = "man";
Первую строку исправляете аналогично,а во второ меняете номер модели m10 и в кавычках пишите какая анимация модели принадлежит если женская пишите woman если мужская ничё не меняйте
Советую добавить на абордаж женщин т.к сам процесс абордажа происходит веселее в компании с женщинами а не только с мужиками!!!
А теперь инструкция как прикрутить кирасы к персам . Шляпы, халаты, сапоги, очки и всё прочее нуждается хоть в малейшем знании манипуляций в 3D редакторе.
Для этого нам понадобятся TOOL, Convertor_TX и GM_view.
Внимание! При импорте WRL в TOOL должен быть отмечен "чекбокс" Invert Texture. В TOOL можно загружать только один файл. Можно импользовать только персов с анимацией "man.an" (так как у кирасы именно эта анимация). При анимации кираса будет искажться, ломаться, пропускать текстуру перса - это нормально, такая анимация у стандартных персов, в игре это не заметно.
Для примера возьмём "BigPirate.gm"
1. Выбираем перса и конвертируем его текстуру в TGA файл Convertor_TX(ом). После этого перемещаем текстуру в папку со всеми текстурами героев(...\Resource\Textures\Characters\).Теперь надо отконвертировать текстуры наших кирас и тоже перенести в папку со всеми текстурами.Это файлы GuardsmanEng_1.tga,GuardsmanEng_2B.tga,GuardsmanEng_3B.tga,GuardsmanEng_4.tga.
2. Загрузите вашего перса в TOOL и сохраните локаторы в отдельный файл нажатием на вкладку Locators\Write to File. Введите имя файла(на пример "BigPirate"(без расширения)) и нажмите "сохранить".
3. Теперь открываем TOOL и конвертируем в WRL перса у которого ужэ есть кираса (Например Hero1_Cirass.gm).
У вас получится файл Hero1_Cirass_x.wrl(да, да именно _х, и не вздумайте убирать галочку с чекбокса. Ну а если вы такой продвинутый юзер, что всё ужэ отдублировали и улыбаетесь сейчас, вам эти строчки всё ровно пофиг:))
4. Теперь выходим из TOOL и снова открываем его. Сейчас надо сохранить в WRL понравившегося перса - на пример "BigPirate.gm". Выходим из TOOL.
5. Открываем блокнотом файл BigPirate_x.wrl. Далее блокнотом открываем файл перса в кирасе - Hero1_Cirass_x.wrl. Находим в середине файла(не в начале!!!) такие строки :
***
Shape{
appearance Appearance{
material DEF lambert15SG
Material{diffuseColor 1.0 1.0 1.0}
texture ImageTexture{url "GuardsmanEng_1.tga" }}
geometry IndexedFaceSet{
creaseAngle 3.14
coord DEF polySurface12 Coordinate{
point[0.0771343 1.48619 -0.11395,0... и т.д. и т.п.
***
и начинаем выдиление со строчки "Shape{" и до самого конца файла. Далее копируем эти не понятные на первый взгляд слова и цифры в буфер обмена. Переходим к (уже открытому) файлу BigPirate_x.wrl и вставляем из буфера "текст" в самый конец фала после фигурной скобки - }. Далее нажимаем сохранить файл BigPirate_x.wrl. После этого переименовываем его в BigPirate.wrl.
6. Снова открываем TOOL и загружаем в него BigPirate.wrl. НЕ НАЖИМАЙТЕ НА КНОПКУ "Cycle Animation"(в противном случае вам придётся повторить шаг 6.) Теперь мы видим героя ужэ в кирасе. Но! Я не зря выбрал именно этого перса, так как он больше обычных героев и кираса на нем маловата. Для того чтобы расположить кирасу в нужное место и нужного размера используем вкладку "SCENE\Edit Scene". Здесь не обращая внимания на первое окно сразу переходим ко втрому. В этом окне мы видим название нашего файла и рядом "+". Нажимаем на плюс и появляются "деревом" две надписи "BigPirate" и ниже "polySurface12"(как вы ужэ догадались вторая это и есть кираса).
7. Далее вам надо расположить окна TOOL И Edit Scene так, чтоб вы могли манипулировать ползунками во воторм окне(оно состоит какбы из зх окон сразу) и одновременно наблюдать что происходит на самой модели. Если вы не видите текстуры на вашем персе: 1 - вы через чур уверены в себе и думаете, что мне больше нечего делать как писать всякую лабуду. 2 - вы не настроили TOOL(для этого надо зайти в папку с прогой и открыть блокнотом файл VrmlImExporter.ini). Во второй строчке укажите "полный" путь к папке с текстурами в игре.
8. Выделяем "polySurface12" нажатием лкм и начинаем, управляя ползунками, перемещать, увеличивать, уменьшать нашу кирасу. Я думаю за пару минут можно разобраться какой ползунок за что отвечает. ВНИМАНИЕ! чекбокс "Scale animation also" должен быть ОБЯЗАТЕЛЬНО выделен. Нюансы: если не получается ползунком установить в нужное положение кирасу - введите значения с клавиатуры и нажмите кнопку "Move to Position" в окне.
9. Когда вас всё наконецто будет устраивать закройте окно Edit Scene.
10. Теперь ещё раз сохраните вашего перса в формат WRL(это последний этап, так что "всё" должно вам хоть слегка нравиться).
11. Опять выходим из TOOL и переименовываем ваш файл "BigPirate_х.wrl" в "BigPirate_Сirass.wrl".
12. Заходим в TOOL и загружаем BigPirate_Сirass.wrl. Теперь нажимаем кнопочку "Save Gm" и в итоге получаем файл BigPirate_Сirass_х.gm. Смело убираем "_х" и этот файл почти готов для включения в игру.
14. Добавление следующих кирас гараздо проще. Копируем файл BigPirate_Сirass.wrl и вставляем в эту жэ папку. Переименовываем "Копия BigPirate_Сirass.wrl" в "BigPirate_Сirass1.wrl". Открываем блокнотом и находим в середине файла(то что мы вставляли) строку с названием файла текстуры для кирасы. У вас сейчас там "GuardsmanEng_1.tga". Меняем на название следующей кирасы "GuardsmanEng_2B.tga"(см. названия в верху). Сохраняем и повторяем пункт 14 до получения перса во всех кирасах(4шт).
15. Теперь конвертируем все из "*.wrl" в "*.gm". И не забываем загружать локаторы из сохранённого фаила нажатием на вкладку Locators\Read from File, выбираем наш файл BigPirate(без расширения).
16. После этого открываем тул и заргужаем любой файл "*.gm" нашего перса. Только теперь нажимаем кнопку "Cycle Animation", наслаждаемся движениями перса в кирасе и НИЧЕГО не сохраняя выходим из TOOL.
17. Открываем блокнотом файл HeroDescribe.txt в папке ...\Resource\Ini\texts\russian. Внимательно изучаем "шапку" и добавляем нашему персу модели в кирасах.
18. Начинаем новую игру(у меня почему то так) и при приобретении новых кирас видим ГГ в должном виде.
Вот написал как сделать простейший квест в К3
Кто не умеет читать обязательно !!!!
Прикрепленные файлы
______________________.doc ( 26 килобайт )
Кол-во скачиваний: 81
Случайно наткнулся на учебник для Майи 5.
я дико звентиляюсь, но не мог бы кто-нибудь выложить майю и гм вивер? в инете куча всякого шлака, найти немогу . буду очень признателен если кто-нибудь выложит.
Скажите пожалуйста названия всех локаторов скелета man4.mb, чтобы к новой созданной модели можно было привязать анимацию?
------------------------------------------------------------------------------
У кого ни будь, есть man4.mb с расставленными локаторами?
Самоучитель игры на HeroDescribe
********************
Дамы и господа! А не пристало ли нам, отбросив скуку и уныние, научиться играть хотя бы на каком-нибудь инструменте. Сегодня это необычный инструмент с несколько неблагозвучным для русскоязычного уха названием ХероДискрайб (HeroDescribe). Научившись играть на этом инструменте, вы сможете услаждать взор не только себя любимых, но и своих знакомых, и даже малознакомых личностей, сооружая Hero-моды.
********************
Находим HeroDescribe.txt (по умолчанию: "C:\Program Files\Akella Games\Корсары Город Потерянных Кораблей\RESOURCE\INI\texts\russian\", далее во всех адресах папок опускаем "C:\Program Files\Akella Games\Корсары Город Потерянных Кораблей\", это рабочая папка игры) и открываем его Блокнотом.
HeroDescribe.txt - это список героев, состоящий из блоков. Разберём на примере блока Питера Блада:
heroName_1 {Питер}
heroNameGen_1 {Питера}
heroNameDat_1 {Питеру}
heroLastname_1 {Блад}
heroLastnameGen_1 {Блада}
heroLastNameDat_1 {Бладу}
heroFace_1 {221}
heroModel_1 {Blood5,Blood5_Cirass,Blood5_Cirass1,Blood5_Cirass2,Blood5_Cirass3,Blood5,Blood5
,Blood5}
heroType_1 {Корсар}
heroNation_1 {Англия}
sex_1 {man}
animation_1 {man}
hero_1
{
Этому герою предстоит пройти тяжелейшие испытания, прежде чем стать настоящим морским волком.
}
********************
heroName_1 {Питер} - имя героя, ни на что не влияет
heroNameGen_1 {Питера} - имя героя в родительном падеже
heroNameDat_1 {Питеру} - имя героя в дательном падеже
heroLastname_1 {Блад} - фамилия героя, не влияет, можно поставить свою
heroLastnameGen_1 {Блада} - фамилия героя в родительном падеже
heroLastNameDat_1 {Бладу} - фамилия героя в дательном падеже
Примечание: имя и фамилия влияют только в одном случае - если поставить Питер Блад любому герою, то этот герой будет проходить квест Блада. При этом нужно обязательно подменить модель blood_bomj.gm моделью вашего героя (в папке \RESOURCE\MODELS\Characters\), т.е. переименуйте файл blood_bomj.gm, а потом сделайте копию модели вашего героя и переименуйте её в blood_bomj.gm.
heroFace_1 {221} - номер портрета, соответствует файлам face_*.tga.tx, где * - номер портрета (в данном случае face_221.tga.tx), в папках \RESOURCE\Textures\INTERFACES\PORTRAITS\64\, \RESOURCE\Textures\INTERFACES\PORTRAITS\128\, \RESOURCE\Textures\INTERFACES\PORTRAITS\256\ и \RESOURCE\Textures\BATTLE_INTERFACE\PORTRAITS\ (портреты 64x64, 128x128, 256x256, 64x64 соответственно)
Примечание: если вы желаете заменить портрет героя, приведите свою картинку в соответствие с размерами портретов героев (256x256, 128x128, 64x64), сохраните в формате TGA, конвертируйте программой ConvertorTX в формат tx, переименуйте в face_*.tga.tx, где * - номер портрета, и скопируйте в соответствующую папку портретов
heroModel_1 {Blood5,Blood5_Cirass,Blood5_Cirass1,Blood5_Cirass2,Blood5_Cirass3,Blood5,Blood5
,Blood5} - список моделей через зяпятую без пробелов, может быть меньше, чем полный список, тогда возьмется первая (без_брони, легкая_броня, средняя_броня, крутая_броня, золотая_броня, одежда_1, одежда_2, одежда_3), соответствует файлу *.gm, где * - название модели (в данном случае Blood5.gm и т.д.), в папке \RESOURCE\MODELS\Characters\
Примечание: для многих персонажей отсутствуют модели с кирасами и в одеждах.
heroType_1 {Корсар} - тип героя (возможные значения: Корсар, Торговец, Авантюрист), влияет всего лишь на стартовые параметры (их можно изменить в самом начале игры в диалоге на корабле) и первоначальную экипировку
heroNation_1 {Англия} - стартовая нация героя (нейтральные отношения; возможные значения: Англия, Франция, Испания, Голландия), от этого зависит, на города какой нации выпадет начало игры. Для капитанов-ПГГ определяет, на территории какой нации они находятся в начале игры
sex_1 {man} - пол (возможные значения: man, woman, skeleton)
Примечание: ВНИМАНИЕ! В ПГГ берутся только персонажи с полом man
animation_1 {man} - анимация, соответствует файлу *.ani, где * - название анимации (в данном случае man.ani), который находится в папке \RESOURCE\animation\
Примечание: в случае ошибочно указанной анимации модели персонажей сильно искажаются, при этом играть ими становится невозможно
hero_1
{
Этому герою предстоит пройти тяжелейшие испытания, прежде чем стать настоящим морским волком.
}
- краткая биография персонажа (не более 600 символов или 10 строк по 60 символов), ни на что не влияет, можете написать свою
В каждой строке отдельного блока присутствует число - это номер героя в общем списке.
Обязательно сохраните исходный файл до редактирования.
Примечание: ВСЕ ИЗМЕНЕНИЯ В ФАЙЛЕ HeroDescribe.txt ТРЕБУЮТ НАЧАЛА НОВОЙ ИГРЫ.
Если вами в HeroDescribe.txt внесены изменения, например по героям, необходимо проверить, чтобы:
1) число в каждой строке блока совпадало с номером героя;
2) блоки героев должны идти строго по порядку, соответственно номерам героев, не должно быть пропусков в порядке нумерации;
3) обязательно задать в начале HeroDescribe.txt
hero_qty {N} - количество героев (присутствуют в меню выбора героев)
ps_hero_qty {M} - количество ПГГ (отсутствуют в меню выбора героев, но могут встретиться как квестовые персонажи в игре).
********************
Если вы желаете проверить в действии заинтересовавшую вас модель (из ресурсов игры или импортированную), проще всего сделать так:
1) копируете последний блок, вставляете его в конце списка;
2) заменяете номера в каждой строке блока на следующее число;
3) указываете в блоке номер портрета, модель, анимацию этого персонажа;
4) заменяете значение hero_qty и ps_hero_qty, так как количество героев в списке из-за нового блока изменилось;
5) начинаете НОВУЮ игру.
********************
Как заменить модель, текстуру и т.д. без начала новой игры?
Можно "подменить" один файл другим (предположим, X "подменить" на Y). Для этого переименуйте X, а потом сделайте копию Y и переименуйте её в X.
********************
И последнее. Иногда полезно поскрести по сусекам папок. В папках ресурсов ГПК имеются десятки интересных моделей. Мы, например, ставили краба и несимпатичных нам персонажей в пираты, меняли губернаторов, женщин как перчатки (только нужно учитывать соответствие модель-анимация). Модель crabBig.gm с анимацией crabBig.ani работает довольно сносно на анимации man.ani, можно ставить в HeroDescribe.
Текстуры обнаруживаем таким путём. Открываем gm-файл модели каким-либо текстовым редактором или просмотрщиком (например - HexEdit, листер Тотал Коммандера) и ищем в начале текста название файла с расширением tga. Это и будет текстура, соответствующая данной модели.
********************
Сказать, что всё вышеперечисленное является откровением свыше, нельзя, т.к. немало людей всё это хорошо знают.
Масштабирование персонажей с сохранением анимации.
1. Запускаем TOOL.
При первом запуске нужно обязательно указать файл ENGINE.exe, запускающий игру.
2. Выбираем анимацию того персонажа, которого мы хотим отмасштабировать.
3. Открываем GM-модель персонажа.
4. Открываем окно Edit Scene
Scene/Edit Scene
5. В окне выбираем объект 1, который хотим отмасштабировать, и масштабируем его ползунком 2. Также можно воспользоваться кнопками Woman/youth size и Child size.
6. Затем нажимаем кнопку Save Animation.
Анимация сохранится в папку с анимациями игры под именем my.an
7. Закрываем окно Edit Scene и нажимаем кнопку Save Gm
Модель сохранится под именем *****_x.gm (В данном случае Blood5_x.gm)
8. Теперь модель и файл анимации можно переименовывать и вставлять персонажа в игру.
Составил несколько 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);, то форт невозможно будет уничтожить.
__________________
День добрый, уважаемые учасники форума !
Можно ли узнать, как добавить энкаунтер с квестовым кораблём и отключить у него абордаж?
речь об К3
Благодарен заранее
Раз тут и вопросы и ответы, хочу спросить следующее:
Расскажите как добавить новый остров в К3 (конкретно в нем, ибо способ, описанный на первой странице, не работает).
И хотелось бы узнать, как в том же К3 сделать элементарный квест.
Подскажите через что можно просмотреть текстуры иконок ГГ ?
Перечитывала FAQ по ВМЛ, наткнулась на такую жалобу, что модели горожанок, если их использовать в качестве ГГ, глючат - пистолет висит в воздухе и т. п. Так вот - это лечится с помощью TOOL'а.
1. Открываем в TOOL'е модель, где локаторы слотов пистолетов/сабель на месте. Для горожанок подойдет Danielle.gm
2. Находим вкладку Locators -> Write to file, сохраняем их в какой-нибудь файл.
3. Открываем модель, которая нуждается в правке, жмем Locators -> Read from file, выбираем файл с локаторами, который только что сохранили.
4. Убираем галку с пункта Add_x to filenames, далее File -> Save gm. Все! Можно нормально экипироваться.
Теоретически точно так же можно копировать и заменять локаторы других моделей персонажей. Почему теоретически - мной не тестировались )))
ЗЫ: просмотреть локаторы и их названия можно GM Viewer'ом. Возможно, координаты локаторов можно менять, открыв файл с локаторами в блокноте или еще где-нибудь, но, по-моему, от этого появляются дополнительные глюки =)
Для анимации (набора "костей" персонажа) ГПК этот метод не подходит, увы!
Установил "Проклятые судьбой". Можно ли как-то с этой модификацией изменять\создавать офицеров?
И вообще, как можно добавить офицера в игру?
Прочитал здесь же о добавление в игру горожанина, но, к сожалению, "Проклятые судьбой" не генерирует папку program, а в старой не было ни папки unit, ни того, что можно там редактировать.
Вообще в этот аддон что-нибудь засунуть можно?
Уважаемый ALexusB, вопрос такой, я создал свой корабль и хочу дать гг что надо делать, у меня к гпк версии 1.2.12
Начальные статы ГГ для ГПК: PROGRAM/characters/characters_init.c/ здесь изменяй.
В английской версии скрипты отличаются русской версии.
Народ если можете то помогите плиз))) Я хотел сменить анимашку загрузки, но столкнулся с проблемами: во-первых: как сделать раскадровку анимации? во- вторых: как сделать рабочий, прозрачный фон ( в фотошопе пробовал, но фон анимации при загрузке становиться белым) Жду ответов)))) P.S Мастера всея корсары научите плиз)))))
Господа и дамы корсары! Кто нибудь знает где прописаны параметры PIRATES? В корсарах каждому своё))
Код ККС закрыт, а это значит что не удастся сделать никакие изменения.
Доброго времени суток!
Не могли бы мне помочь с диалогами?
Что нужно мне изменить в кейсе, что бы не было раздвоение НПС
при добавлении его в команду ГГ в качестве компаньена?
(А то получается добавляется компаньен и его точная копия офицер)
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)