Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум студии Seaward.Ru _ Модификации для игр на ядре Storm 2.x _ Составление FAQ по модификациям

Автор: Догева Apr 25 2006, 00:56

предлагаю всем добрым и умным человекам 1.gif собраться и составить ФАК по внесениям модификаций в аддон. причина проста - обычно спрашивают одни и те же вопросы вроде "а как изменить текстуру гг", "а как вставить ее в игру" и т.д. dry.gif поэтому все желающие помочь вэлком! 3.gif

для примера приведу пост, найденный в "Готовых интерфейсах":

Цитата(SONIkom @ Jan 4 2006, 03:53) *

ФАК по созданию собственного интерфейса в ВМЛ.

Введение.
Для того чтобы создать интерфейс в ВМЛ, разработчикам пришлось придерживаться нескольких правил: 1-е правило из которых было создать мультиплатформенную систему интерфейса (для ПК и консоли Xbox), что означает приминение не только указателя мыши, но и кнопок джойстика. Для удобства управления джойстиком ессесно нужно чтобы иконки, кнопки и другие элементы управления находились в четырех (максимум для крестика геймпада) сторонах. В то же время, мышью по ним тоже можно тыкать, но это уже не интересно для ПК-шников. Поэтому команда аддонтима переделывала интерфейс под привычную компьютерную мышь.
Для этого им пришлось полностью перевернуть кверх дном каталог "игра\RESOURCE\INI\INTERFACES", где на языке С-подобном приписаны координаты элементов управления интерфейсом (кнопки, иконки, фоны и др.), цветовая гамма, анимация фона и др. полезные вещи. Естесственно в этих *.ini файлах прописаны названия текстур этих самых элементов. Вот о них-то нам и нужно знать...

Начнем.
Каждый для себя может делать свой интерфейс и в *.ini файлах, но эти файлы еще в стадии разработки и, поэтому, их редактировать смысла мало - все-равно с каждым обновлением они меняются (ну, почти с каждым). Мы будем переделывать файлы текстур для ПКМ и ВМЛ. Чтобы их переделать, нужно иметь под рукой Фотошоп, tx_convertor, запущенную игру ВМЛ в оконном! режиме, мозги, руки и... кофе.

- Почти каждая текстура имеет альфа-канал, нужно уметь с ним работать
- ПРАВКА!!! - Для того, чтобы правильно отредактировать альфа-канал в текстуре см. самый конец ФАК'а - раздел HELP.
- Почти каждая текстура разделена на несколько более мелких, не накладывайте одну на другую, старайтесь не менять положения иконок
- Все текстуры сохранены в формате *.tga.tx - т.е. они открываются в tx_converter, конвертируются в формат *.tga, ред-ся в Фотошопе, а потом конв-ся в *.tga.tx.
- Если возникают вопросы, спрашивайте на форуме, не надо почты!!! на форуме много народа, которые знают тоже, что и я...
- ПРАВКА!!!: вверху при конвертировании из tx и обратно, вверху и внизу ставим на A8R8G8B8... справа "none", внизу всего: (*)minimum mip size, и слайдер влево до упора (1 pix)

Каталоги, которые нам необходимы (я бы на вашем месте перед работой сделал бы их копию):

1. Resource\Textures\Interfaces - бОльшая часть всех элементов интерфейса
2. Resource\Textures\DIALOG - меню диалогов
3. Resource\Textures\BATTLE_INTERFACE - иконки действий в море, на суше
4. Resource\Textures\Fonts - в ней шрифты
5. Resource\Textures\Loading - *опционально, фоны при загрузках.
6. Resource\Textures\TextureSequence - фоны кнопок управления+анимация фона в главном меню

* - этого я не редактировал, мне нравятся оригинальные.

=====================================================Итак, начнем с 1-го:

_"Resource\Textures\Interfaces" файлы, нам интересные, там есть много чего, но это по вашему желанию, я привел тока самое необходимое

blank_ship.tga.tx - кораблика нет (иконка)
buy_sell.tga.tx
buySellFlags.tga.tx
cannons.tga.tx - пушки (иконки)
CorruptSave.tga.tx - редкость, но нада - иконка плохого сохранения
Cursor32.tga.tx - курсор, меня устроил базовый
DisketaEmpty.tga.tx |
DisketaSave.tga.tx | текстуры из меню сохр\загр
EmptyFace.tga.tx |
EmptyBorder.tga.tx - пустая рамка (жел-но схожая из icons.tga.tx)
ExchangeButtons.tga.tx - кнопки меню обмен
FortPris.tga.tx - заставка при захвате форта
glowbutton.tga.tx - подсветка кнопок (мона закрасить черной альфа, она исчезнет)
goods.tga.tx - иконки товаров
Hold.tga.tx - изображение трюма в меню покупок
icons.tga.tx - самое большое сборище всех основных элементов (не забудьте про
альфа-канал!!!)
icons_spec.tga.tx - дополнительные элементы управления (в том числе крестик
закрытия окна)
items1-11.tga.tx - иконки вещей, самый настоящий гемор переделки:)
old_map.tga.tx - на фоне главного меню игры есть старая карта, перемещающаяся по
экрану в разные стороны, это она и есть (я переделал в
дым: Photoshop->фильтр dClouds)
perkuse.tga.tx - галка применяемого перка
scroll.tga.tx - фон для меню журнала, статистики, цен на товары...
ship_status.tga.tx - иконки состояния: Корпус\Паруса\Пушки\Команда из меню корабля
Slider_line\line_base\pointes.tga.tx - слайдеры из меню настроек яркости, звука...
small_islands.tga.tx - острова из меню торговли (импорт\экспорт\контрабанда, там они вверху прокручиваются)
Store.tga.tx - (из темы Hold.tga.tx) - изображение склада магазина в меню торговли
swapItem.tga.tx - (из темы ExchangeButtons.tga.tx) кнопка обмена вещами
usedflag.tga.tx - тоже самое в perkuse.tga.tx только для чего-то другого
z_salay.tga.tx - заставка выдачи зарплаты

...Продолжаем...

_"Resource\Textures\Interfaces\Circle"
circle1.tga.tx | круги из главного меню ПКМ, да и в ВМЛ
circle2.tga.tx | они тоже есть
circle3.tga.tx - в игре не нашел...

_"Resource\Textures\Interfaces\MainBack" - фоны в меню
mb1.tga.tx
mb2.tga.tx
mb3.tga.tx - фон в главном меню
ship copy.tga.tx

_"Resource\Textures\Interfaces\Perks" - *опционально, по желанию

_"Resource\Textures\Interfaces\Portraits" - *опционально, по желанию
\128 - 128x128, 16bpp цвет
\64 - 64x64, 16bpp цвет
\64Disable - 64x64, 16bpp черн\бел

=====================================================Следующий - 2й
_"Resource\Textures\DIALOG"
dialog.tga.tx - Здесь интерфес общения со всеми npc, да, и только здесь (был где-то еще,
но он для ПКМ)

=====================================================Следующий - 3й
_"Resource\Textures\BATTLE_INTERFACE"
Здесь расписывать не буду, там все по идее надо менять (что я и сделал), но скажу лишь про некоторые непонятные файлы:
Panel.tga.tx - фон, где отображается все, что видно в подзорную трубу
compass.tga.tx - Компасс - гемор, альфа канал и текстура, постоянно глючат.
Кому надо пример переделки ко мне на почту (sonik-a@narod.ru)
ir_buttons - не нужна ваще (для Xbox)

=====================================================Следующий - 4й
_"Resource\Textures\Fonts"
Здесь шрифты, сами разберетесь. Лично я менял тока цветовую гамму (под желтовато-коричневый, симпатишно:)

=====================================================Следующий - 5й
_"Resource\Textures\Loading"
Описанию тож не поддается, все фоны загрузок, добро пожаловать:)
progress.tga.tx - всеми любимый крутящийся череп, разложенный на кадры
(чтобы заменить разложите любую анимацию на кадры в
редакторе каком-нить специальном и вставьте)

=====================================================Следующий - 6й
_"Resource\Textures\TextureSequence"
Фоны кнопок, волны морские. Я скопировал из К3 и добавил (уменьшив по вертикали в два раза) в текстуру ПКМ, чуть затемнил - получилось неплохо.
===???===HELP===???===

===АЛЬФА-КАНАЛ В ТЕКСТУРАХ===
1. ПРО Альфа-канал.
Альфа-канал - используется в текстурах для разных вещей, например для прозрачности, формы... В ПКМ альфа-канал используется на всех текстурах. На некоторых есть какой-то черный вырез на белом фоне, на других полностью белый фон. Давайте представим флаг развивающийся на рее корабля в игре. Текстура, кроме как прямоугольной быть не может, а флаг надо заострить двумя треугольниками. Так как же это сделать? Очень просто - добавим новый канал к трем основным (красный, зеленый, голубой), который из этих трех основных будет показывать только ту часть, которую мы зарисуем, т.е. прямоугольник, в котором вырезан мааааленький треугольник. В альфа-канале (так его назвали) на черном фоне (ноль, цветная картинка не берется в изображение) рисуем флаг белого цвета (этот белый цвет есть единица, которая отображает цветную картинку там, где ее нарисовали), потом возвращаемся в rgb режим (выбирается там же) и добавляем уже что-то свое (иначе флаг будет цвета начального фона), например герб Франции.
Так вот из этой запутаной басни уясним, что белый цвет в альфа-канале показывает, что под ним прячется (т.е. цветную картинку), а черный, наоборот - не показывает (т.е. обрезает ее в этом месте), серый (процент от 99% черного до 1%) задает степень прозрачности текстуры (цветной картинки).
2. КАК это делается.
- Открываем в фотошопе, скажем icons.tga (уже конвертированную tx_converter'ом).
- Лезем в меню окно (где "файл\редактирование\изображение..."), там выбираем строку "каналы", щелкаем по ней.
- На экране появилось окно с черно-белом изображением, в котором показались контуры элементов текстуры icons.tga.
- Далее заливаем все 50% серым в альфа канале (щелкаем по нему один раз в том окне, которое только открывали), сохраняем, конвертируем в ВМЛ, запукаем игру - смотрите-ка, все кнопки и другие элементы прозрачные. Уже немного яснее что енто.
- Далее, не выходя из игры, сворачиваем ее (для этого нужно в настройках снять галку "полноэкранный режим"), откатываем одно действие назад в Фотошопе, опять контуры.
- Теперь, изменим кнопку с черепами по бокам. В альфа канале в середине этой кнопки черный прямоугольник, что значит в этом месте она прозрачна. Если нужно сделать свой фон в этой кнопке, то переходим через окно "каналы" в полноцветный режим (вверху окна), заливаем серединку кнопки чем-нито своим и, зайдя в альфа-канал обратно, заливаем сей черный прямоугольник белым цветом (терь он будет нашего фона цветом)
- Так можно каждую текстуру редактировать. Можно нарисовать, например свой perkuse.tga.tx, для этого открываем, конвертируем, открываем в Фотошопе, стираем старую галку, рисуем, создав новый слой, например перо, выделяем прозрачность слоя (для этого надо также как окно "каналы" открыть и окно "слои", зажать CTRL и выбрать наш новый слой с пером), далее лезем в "Выделение" (вверху Фотошоповского окна)->Сохранить выделение. Там откроется окно, просто жмем ОК. Появится новый альфа-канал. Старый удаляем (Правой кнопкой по старому каналу в окне "каналы"->УДАЛИТЬ). Теперь остается свести все слои (CTRL+E на англ. раскладке) и сохранить, заменив старую текстуру.
- Теперь конвертируем в ВМЛ и разворачиваем игру. Играем с новой галкой в меню перков. Если не работает, то выйдите из игры и войдите снова. (Не забывайте про настройку tx_converter'а: A8R8G8B8 вверху и внизу)

Позже дополню описание *.INI-файлов. Если чего забыл, поправьте меня!!!

Автор: SONIkom Apr 25 2006, 22:17

Пользуясь случаем, хочу поблагодарить Догеву за предоставленный топик, давно хотел тему создать, да чего-то и позабыл. Постараюсь поддержать тему. ИТАК: далее 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 секунд включается видео-заставка, которую невозможно отключить в связи с закрытым кодом, и после которой анимация начинается заново (даже после ручного сброса)

Автор: Jaoquin De Masse Apr 26 2006, 00:28

Диалоги это главное smile.gif
ЗЫ: Собрал инфу по диалогам какая у меня была, короче вот…

Цитата

Диалоги - главные в игре. С помощью них можно не только разговаривать с NPC, но и прибавлять репутацию, деньги, опыт, задать местонахождение NPC, прибавлять и уменьшать навыки, менять модели, менять корабли, сменить персонажа, получить предмет и т.д. В отличие от первых Корсаров в Pirates of the Caribbean действия (экшены) теперь находятся в диалогах.

Шаблон диалога

void ProcessDialogEvent()
{
ref NPChar, PChar, d;
PChar = GetMainCharacter();
aref Link, NextDiag;
DeleteAttribute(&Dialog,"Links");

makeref(NPChar,CharacterRef);
makearef(Link, Dialog.Links);
makeref(d, Dialog);
makearef(NextDiag, NPChar.Dialog);

switch(Dialog.CurrentNode)
{
case "First Time":
d.Text = "";
Link.l1 = "";
Link.l1.go = "";
Link.l2 = "";
Link.l2.go = "";
Link.l3 = "";
Link.l3.go = "";
NextDiag.TempNode = "First Time";
break;

case "exit":
NextDiag.CurrentNode = NextDiag.TempNode;
DialogExit();
break;

case "menu":
NextDiag.CurrentNode = NextDiag.TempNode;
LaunchMainMenu();
DialogExit();
break;

case "cannons":
NextDiag.CurrentNode = NextDiag.TempNode;
LaunchCannons();
DialogExit();
break;

case "character":
NextDiag.CurrentNode = NextDiag.TempNode;
LaunchCharacter(GetMainCharacter());
DialogExit();
break;

case "hirecrew":
NextDiag.CurrentNode = NextDiag.TempNode;
LaunchHireCrew();
DialogExit();
break;

case "store":
NextDiag.CurrentNode = NextDiag.TempNode;
LaunchStore(STORE_ONE);
DialogExit();
break;

case "shipyard":
NextDiag.CurrentNode = NextDiag.TempNode;
LaunchShipyard();
DialogExit();
break;

case "shiphold":
NextDiag.CurrentNode = NextDiag.TempNode;
LaunchShipHold();
DialogExit();
break;

}
}

В этом шаблоне я также включил функции магазина, верфи, таверны и даже меню и информации о персонаже. Если вам они не нужны, то смело можете их удалить.
menu - показ меню,
cannons - смена пушек,
character - информация о персонаже,
hirecrew - найм людей в команду,
store - покупка/продажа товаров,
shipyard - покупка/продажа/ремонт корабля,
shiphold - показ трюма корабля.

Немного о немногом

Здесь я буду рассказывать о том, что вы видели в шаблоне. Ну, начнем!
Функцией ProcessDialogEvent() вызывается сам диалог.
Чтобы диалог работал нормально надо назначить переменные: главного героя, NPC, диалога, линков и т.п. Первым делом мы создаем переменные - главного героя, NPC и диалога. Затем нам нужно присвоить переменной PChar (главный герой) значение главного персонажа. После этого опять создаем переменные - Link и NextDiag. Link - это линки, а NextDiag - переменная диалога (для перехода к ноду). Кроме этого мы должны присвоить переменной NPChar значение NPC. После этого начинаем "говорить" линкам, что они линки. ;-) Далее идет присвоение переменной d значение диалога. Затем приписываем переменной NextDiag значение диалога NPC. После всего этого включаем диалог на текущий нод. Дальше идет собственно сам диалог. Кейсом (case) назначаем название диалога, например, First Time, а также в кейс включается и текст диалога NPC и диалога главного героя, а также линки. После этого всегда надо писать break. Чтобы выйти из диалога надо сделать дополнительный case. Пусть он зовется как exit. Там мы переключаем текущий нод на временный (TempNode), ну и конечно выполняем функцию DialogExit(). И опять же break. Еще хочу сказать, что можно создавать свои переменные и применять к ним соответственные значения. Например, вместо переменной d можно сделать Dialog и т.д. Ну вот и все.

Простой диалог

Для легкого (ну, конечно, не совсем легкого) создания диалога создан специальный шаблон диалога. Берите его в руки и создавайте свой диалог. Шаблон я написал выше. Первый диалог называется First Time, второй - Second Time и т.д. Но можно называть кейсы и своим именем. Например, вместо First Time мы можем написать common, как в первых Корсарах. На диалог NPC можно сделать 4 линка. На каждый линк существует свой переход. Для ответа, в котором герой заканчивает диалог существует переход на кейс (case) exit. Этот кейс не надо изменять! Если хотите сделать поменьше линков, то удалите их, а точнее вот это (где n - номер линка):
Link.ln = "";
Link.ln.go = "";
Чтобы сделать другой кейс достаточно скопировать эти строчки:
case "First Time":
NextDiag.TempNode = "First Time";
d.Text = "";
Link.l1 = "";
Link.l1.go = "";
Link.l2 = "";
Link.l2.go = "";
Link.l3 = "";
Link.l3.go = "";
break;
Изменить название кейса, вписать текст диалога NPC, записать ответы, переходы. Конечно, если вам не нужно столько линков можете некоторые удалить, сделать TempNode на следующий кейс. Ну вообщем, это не трудно. Вот здесь я привожу пример маленького диалога с двумя кейсами:
void ProcessDialogEvent()
{
ref NPChar, PChar, d;
PChar = GetMainCharacter();
aref Link, NextDiag;
DeleteAttribute(&Dialog,"Links");

makeref(NPChar,CharacterRef);
makearef(Link, Dialog.Links);
makeref(d, Dialog);
makearef(NextDiag, NPChar.Dialog);

switch(Dialog.CurrentNode)
{
case "First Time":
d.Text = "Здравствуйте! Меня зовут " + NPChar.Name + ". Могу ли я знать как вас зовут?";
Link.l1 = "Меня зовут " + PChar.Name + ". Я капитан корабля " + PChar.Ship.Name + ".";
Link.l1.go = "next";
Link.l2 = "Это не твое дело, " + NPChar.Name + "! Пока!";
Link.l2.go = "exit";
NextDiag.TempNode = "First Time";
break;

case "next":
d.Text = "Что вы от меня хотели?";
Link.l1 = "Да нет, ничего! До свидания!";
Link.l1.go = "exit";
NextDiag.TempNode = "First Time";
break;

case "exit":
NextDiag.CurrentNode = NextDiag.TempNode;
DialogExit();
break;

}
}
Этот пример простенького диалога написан для того, чтобы дать вам понять, как нужно строить кейс. Теперь давайте рассмотрим другие диалоги. В них я не буду писать весь код диалога, а только кейс.

Диалог продавца

Диалог продавца должен включать функцию LaunchStore с определенным типом, а точнее - STORE_ONE или STORE_TWO. Для этого я написал три кейса:
case "First Time":
d.Text = "Здравствуйте! Меня зовут " + NPChar.Name + ". ? Я владелец этого магазина.";
Link.l1 = "Меня зовут " + PChar.Name + " " + PChar.Lastname + ". Я бы хотел приобрести кое-что!";
Link.l1.go = "store";
Link.l2 = "Меня зовут " + PChar.Name + ", но сейчас мне надо идти! До свидания!";
Link.l2.go = "exit";
NextDiag.TempNode = "First Time";
break;

case "exit":
NextDiag.CurrentNode = NextDiag.TempNode;
DialogExit();
break;

case "store":
LaunchStore(STORE_ONE);
NextDiag.CurrentNode = NextDiag.TempNode;
DialogExit();
break;
Вот это пример диалога продавца. Теперь давайте рассмотрим диалог работника верфи!

Диалог работника верфи

Представьте себе верфь. Что там можно сделать? Во-первых, покупать и продавать корабли; во-вторых, ставить себе пушки, ну и в-третьих, можно смотреть трюм корабля. Отсюда следует, нам придется писать кейсы с двумя (хотя можно и с тремя, если считать трюм) функциями - LaunchShipyard и LaunchCannons. Вот эти кейсы:
case "First Time":
d.Text = "Здравствуйте! Меня зовут " + NPChar.Name + ". ? Эта самая лучшая верфь в архипелаге. Может вам нужен хороший корабль?";
Link.l1 = "Да, вы угадали! Я хочу купить себе корабль!";
Link.l1.go = "shipyard";
Link.l2 = "Нет, я лишь хочу поставить на корабль пушки!";
Link.l2.go = "cannons";
Link.l3 = "Нет, мне сейчас ничего не нужно. До свидания!";
Link.l3.go = "exit";
NextDiag.TempNode = "First Time";
break;

case "exit":
NextDiag.CurrentNode = NextDiag.TempNode;
DialogExit();
break;

case "shipyard":
LaunchShipyard();
NextDiag.CurrentNode = NextDiag.TempNode;
DialogExit();
break;

case "cannons":
LaunchCannons();
NextDiag.CurrentNode = NextDiag.TempNode;
DialogExit();
break;
Ну, а теперь предстоит самое сложное - диалог с квестом.

Диалог с квестом

Сначала давайте подумаем, какой квест мы хотим сделать. Будет ли этот квест на доставку чего-либо? Или на потопление кого-либо? Или же цель квеста - убить какого-нибудь персонажа? Или же спасти какого-нибудь персонажа? А может цель - найти кого-нибудь? Или разгромить форт? Будем считать, что вы уже придумали цель своего квеста. Затем нужно создать персонажей, которые будут учавствовать в этом квесте, после этого надо создать переменные квеста, диалоги персонажей. Все, переходим от теории к практике. ;-)

Функции диалога

Функций диалога не так уж и много. Вот они:
RandPhrase("phrase1", "phrase2", "phrase3");
Выбор диалога NPC из 3 вариатов.
RandSwear();
Прибавить к диалогу выражения типа "Якорь мне в корму" и т.п.
GoodEpithet();
Прибавить к диалогу NPC "хорошие" эпитеты.
BadEpithet();
Прибавить к диалогу NPC "плохие" эпитеты.
PCharPhrase("phrase1", "phrase2");
Выбор диалога главного героя из 2 вариантов (в зависимости от главного героя).
TimeGreeting();
Прибавить к диалогу этикетные междометия.
SelectRumour();
Выбрать случайный слух.
GetNPCInformation(ID);
Получить информацию о персонаже с ID.
RandSum("Amount");
Сгенерировать случайное число (Sum) с определенным Amount. Вот что может быть записано в Amount:
Few - в пределах 400
Some - в пределах 2000
Medium - в пределах 4000
Large - в пределах 6000
Huge - в пределах 10000
Address_Form.NATION
Прибавить к диалогу обращение. Вместо NATION надо писать:
Spa - Испания (сеньор)
Fra - Франция (мсье)
Eng - Англия (сэр)
Por - Португалия (синьор)
Hol - Голландия (mijnheer)

Экшены & Действия

Вот список экшенов:
Эти команды можно использовать как на NPC так и на главного героя. Так что переменная персонажа - ch.
Если в квадратных скобках стоит буква Г, то эта переменная должна иметь значение true или false.
Если в квадратных скобках стоит буква S, то переменная может содержать буквы.

ch.Money;
Деньги
ch.Experience;
Опыт
ch.Rank;
Ранг
ch.Model; [S]
Модель
ch.Model.Animation; [S]
Анимация
ch.Model.Entity; [S]
Тип модели
ch.Dead; [Г]
Мертвый или живой (true - мертвый, false - живой)
ch.FaceId;
Лицо (при виде [F1] - только для главного героя)
сh.Location; [S]
Локация
ch.Location.group; [S]
Тип локации
ch.Location.locator; [S]
Место локации
ch.Dialog.Filename; [S]
Файл диалога
ch.Reputation; [S]
Репутация
ch.Name; [S]
Имя персонажа
ch.Lastname; [S]
Фамилия персонажа
ch.skill.Leadership;
Навык: Лидерство
ch.skill.Fencing;
Навык: Фехтование
ch.skill.Sailing;
Навык: Навигация
ch.skill.Accuracy;
Навык: Меткость
ch.skill.Cannons;
Навык: Пушки
ch.skill.Grappling;
Навык: Абордаж
ch.skill.Repair;
Навык: Починка
ch.skill.Defence;
Навык: Защита
ch.skill.Commerce;
Навык: Коммерция
ch.skill.Sneak;
Навык: Шпион
ch.Ship.Name; [S]
Название корабля
ch.Ship.Type; [S]
Тип корабля
ch.Ship.Cannon.Type; [S]
Тип пушек
ch.Nation; [S]
Нация
worldmap.islands.ОСТРОВ.label.text; [S]
Название острова
worldmap.islands.ОСТРОВ.label.icon;
Флаг острова (0 - Англия, 1 - Голландия, 2 - Франция, 3 - Португалия, 4 - Испания, 5 - ???Пираты???)
worldmap.islands.ОСТРОВ.label.visible; [Г]
Видимое название острова или нет (true - видимое, false - невидимое)
worldmap.islands.ОСТРОВ.position.x;
Позиция острова по оси X
worldmap.islands.ОСТРОВ.position.y;
Позиция острова по оси Y
worldmap.islands.ОСТРОВ.position.z;
Позиция острова по оси Z
Environment.time;
Время
Rumour[0].state;
Состояние слуха 1
Rumour[1].state;
Состояние слуха 2
Rumour[2].state;
Состояние слуха 3
Rumour[3].state;
Состояние слуха 4
Rumour[4].state;
Состояние слуха 5
Rumour[5].state;
Состояние слуха 6
Rumour[6].state;
Состояние слуха 7
Rumour[0].text;
Текст слуха 1
Rumour[1].text;
Текст слуха 2
Rumour[2].text;
Текст слуха 3
Rumour[3].text;
Текст слуха 4
Rumour[4].text;
Текст слуха 5
Rumour[5].text;
Текст слуха 6
Rumour[6].text;
Текст слуха 7

Есть еще очень-очень много экшенов. Экшены можно придумывать и самим. ;-)) Примеры:
1) Мы хотим прибавить нам 3000 золотых. В диалоге пишем:
ch.money = ch.money + 3000;
2) Мы хотим, чтобы у нас было 7000 золотых. В диалоге пишем:
ch.money = 7000;
3) Мы хотим сменить диалог у персонажа Ronald Tirberg. ID этого персонажа пусть будет равен 91. В диалоге пишем:
Characters[91].Dialog.Filename = "Ronald Tirberg_sample.c";
Конечно, в Pirates of the Caribbean все диалоги можно поместить в один файл. Так что этот экшен может не понадобиться.
4) Мы хотим сменить лицо нашему герою (например, Блейзу) на пирата (смотрите в авторах ;-). Имя файла этого пирата - face_20.tga.tx. ID Блейза - 0. В диалоге пишем:
Characters[0].FaceId = "19";
Вы думаете я ошибся? Нет! Когда вы хотите применить, например, 18 лицо, то уменьшайте ее, пишите 17, когда 15, пишите 14 и т.д. Вот так!
5) Например, квест разгромить остров Redmond. Короче выполняем квест. И остров теперь никому не принадлежит (название на карте нет, а сам остров виден). Так надо прописать:
worldmap.islands.redmond.label.text = "";
worldmap.islands.redmond.label.visible = "false";
Хотя можно и не писать первую строчку ;-).
6) Выкинем персонажа Peter Bolt из игрового пространства. Его ID - 77. Пишем в диалоге:
Characters[77].location = "none";
Characters[77].group = "characters";
Characters[77].locator = "none";
Первая строчка удаляет локацию персонажа, вторая - это тип (он так и остается), третья - удаляет место локации.
Но я думаю, что использование ch.money = ch.money + 3000 не совсем хорошее. Я обычно использую: ch.money = makeint(ch.money) + 3000
Конечно такая запись экшена чуть-чуть подлиннее, но зато лучше, потому что деньги и т.п. - это string (т.е. в записи могут содержаться и буквы и цифры), а мы прибавляем integer (т.е. могут содержаться только цифры) в первом случае.
Действия:
LaunchHireCrew();
Нанять людей в команду
LaunchShipyard();
Верфь
LaunchStore(ТИП);
Магазин. Вместо ТИП надо писать STORE_ONE или STORE_TWO
LaunchCannons();
Установка пушек на корабль
LaunchCharacter(GetMainCharacter());
Показать информацию о главном герое
LaunchShipHold();
Показать трюм корабля
LaunchMainMenu();
Показать меню игры
Я так же хочу рассказать о переключателе (switch). Привожу пример. В процессе игры мы сменяем главного героя с Блейза на нищего. Подойдя к одному персонажу, у которого в диалоге "живут" переключатели, до смены Блейза на нищего, он отвечает: "О, это ты Блейз...". После смены: "Я не подаю нищим. Иди отсюда...". Вот, что можно делать с помощью переключателей. Переключатели используются и в функциях, например:
string PCharPhrase (string Var1, string Var2)
{
ref PlayerCharacter = GetMainCharacter();
switch(PlayerCharacter.id)
{
case "Blaze":
return Var1;
break;
case "Danielle":
return Var2;
break;
}
return "___Player Character is not defined - can't select character phrase___";
}
Эта функция использовалась при выборе диалога NPC при определенном главном герое. Если это был Блейз, то один вариант, а если Даниэла, то другой.

Пишем новости

В отличие от первых Корсаров новости располагаются не в файле диалога, а в отдельном файле. Слухи можно включать и выключать. Например, два персонажа могут рассказать одинаковые новости. При последующем разговоре с этими NPC они могут рассказывать разные слухи. Вот так! Ну теперь начнем "делать" свои новости. ;-) Для этого нам потребуется файл Rumour_data.c, лежащий в директории
PROGRAM\Dialogs\. Открываем его и мы видим что-то типа:

#define MAX_RUMOURS 7
#define MAX_NPC_INFO 600
object Rumour[MAX_RUMOURS];
string NPC_information[MAX_NPC_INFO];
void SetRumourDefaults()
{
Rumour[0].text = "Последнее время ничего интересного не говорят. Жизнь течет спокойно и мирно. Просто диву даешься!";
Rumour[0].state = "active";
Rumour[1].text = "Говорят, что на рудниках Фале де Флер откопали какие-то остатки туземных захоронений. Всякие глиняные таблички, кости, копья и посуду. И ни грана золота!";
Rumour[1].state = "active";
Rumour[2].text = "Я слышал, что губернатор Редмонда как-то приказал посадить купца в тюрьму за небольшую драку в таверне только потому, что ему захотелось наложить лапу на груз, привезенный тем купцом.";
Rumour[2].state = "active";
Rumour[3].text = "Я слышал, что губернатор Редмонда как-то приказал посадить купца в тюрьму за небольшую драку в таверне только потому, что ему захотелось наложить лапу на груз, привезенный тем купцом.";
Rumour[3].state = "active";
Rumour[4].text = "Я слышал, что губернатор Редмонда как-то приказал посадить купца в тюрьму за небольшую драку в таверне только потому, что ему захотелось наложить лапу на груз, привезенный тем купцом.";
Rumour[4].state = "active";
Rumour[5].text = "Я слышал, что губернатор Редмонда как-то приказал посадить купца в тюрьму за небольшую драку в таверне только потому, что ему захотелось наложить лапу на груз, привезенный тем купцом.";
Rumour[5].state = "active";
Rumour[6].text = "Я слышал, что губернатор Редмонда как-то приказал посадить купца в тюрьму за небольшую драку в таверне только потому, что ему захотелось наложить лапу на груз, привезенный тем купцом.";
Rumour[6].state = "active";
}

Всего установлено 7 слухов. Чтобы сделать побольше надо изменить число 7 в строке #define MAX_RUMOURS 7. Я поменял на 8. Если вы заметили active, passive, и не знаете что это такое, так вот active - слух активен (может появиться в диалоге), а passive - слух неактивен (не может появиться в диалоге). Чтобы добавить новый слух надо установить значение MAX_RUMOURS на нужное вам, затем добавить две строчки (на один слух). Выглядят они примерно так:
Rumours[8].text = "Здесь надо вписать текст слуха";
Если слух активен, то тогда вот еще строчка:
Rumours[8].state = "active";
Иначе вот:
Rumours[8].state = "passive";
Вместо числа 7 надо вписать ID слуха. Например, если в игре всего 20 слухов (0..19), и вы хотите добавить 21-ый слух, то надо вписать ID слуха = 20. И т.д. (Ежели кто не понял, почему 20, то объясняю - всего то 20 + 1 = 21. Почему у меня 21, да потому что нумерация идет от 0 до 20).


Автор: Jaoquin De Masse Apr 26 2006, 11:19

Создание островов, пользуйтесь на здоровие, все проверенно на 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\ делаем на нашем острове дома, церкви, таверны и т.д.
Все, остров готов. Теперь проверяйте в игре

Автор: Jaoquin De Masse Apr 26 2006, 19:29

Многими хотелось сделать свои товары, чтобы помимо старых в магазинах продавались и ваши новые. Для этого сделайте все по этой инструкции. Я себе сделал 4 новых товара: рабы, сигареты, наркота smile.gif , скот (коровы, куры, свиньи), гвозди и веревки (для ремонта корабля).
Итак начнем!

Для начала, откроем файл 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# - команде
Как альтернатива - просто написать эти значения обыкновеным текстом.

И это ещё не всё smile.gif.

Открываем в этой же папке файл 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 опыта}.
Удачи в создании новых товаров! smile.gif


Прикрепленные файлы
Прикрепленный файл  t.rar ( 2.3 килобайт ) Кол-во скачиваний: 39

Автор: Jaoquin De Masse Apr 26 2006, 22:13

Для начала я хотел поблагодарить некоторых участников форума за письма которые они мне написали (Спасибо ребята! smile.gif ), и модераторы вы извините меня за то, что я пишу много тем подряд, но если все будет в одном сообщении получится путаница не разобратся где че, ну а сейчас перейдем к главному…
Нашел я у себя настройки гг, так что вот они smile.gif пользуйтесь на здоровие
Настройки нашего гг находятся в файле: 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 = “Титаник”;//Имя корабля smile.gif
//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";


Все, мы изменили параметры нашего гг... smile.gif

И еще для того что бы бегать без 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

Автор: Jaoquin De Masse Apr 26 2006, 23:51

Инструкция по созданию нового корабля smile.gif Говорю сразу чтоб потом наездов типа непашет и т.д. не было, квестовые корабли типа чж прописаны так 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»; <– Локация абордажа. Можно плавать на тартане и поставить локацию абордажа от мановара..smile.gif
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;

Автор: Scatimon Apr 27 2006, 19:21

Значит, я могу помочь по созданию новых предметов. Я буду объяснять, как сделать новую саблю, подзорную трубу. Начнём с сабли, закончим трубой .
Итак открываем 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» и проверить…далее буду объяснить, как подзорку добавить, там тоже есть свои нюансы.

Автор: Jaoquin De Masse Apr 27 2006, 20:42

Значит такс, создадим перса в городе smile.gif для примера я взял Оксбэй smile.gif . Вначале заходим в папку 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);


Сохраняем, загружаем игру – ohmy.gif теперь мы видим все локаторы используемые в пкм biggrin.gif На скрине видно что получится.

Прикрепленное изображение


Все персонажи создаются в файлах, хранящихся в паках 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;

Поздравляю вы создали новый персонаж в городе smile.gif

Автор: Jaoquin De Masse Apr 27 2006, 23:06

Меняем стартовую точку smile.gif
Вот это не очень легко. Для этого мы должны открыть два файла. Сначала откроем 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");
Ура, все получилось!


----------------------------------------------------------------------------------------------------------------------------------------------------------


Итак, задача не из лёгких – добавить новую локацию. А поэтому без лишних слов приступим к делу wink.gif . Для начала изучим что же такое локация и из чего она состоит.
Для примера откроем любой файл из папки 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 перехода.

Автор: navy Apr 28 2006, 07:47

Цитата
Меняем стартовую точку

Если просто сделать так как ты описал работать не будет... при попытке начать новую игру, будут жуткие тормоза и локация не загрузиться.... Т.к. на Первые Две локации в ПКМ висят квестовые прерывания, которые инициализируют мир... следовательно... нужно их перевешивать.... иначе фигня получится.

Автор: Jaoquin De Masse Apr 28 2006, 15:47

Цитата(navy @ Apr 28 2006, 08:47) *

Если просто сделать так как ты описал работать не будет... при попытке начать новую игру, будут жуткие тормоза и локация не загрузиться.... Т.к. на Первые Две локации в ПКМ висят квестовые прерывания, которые инициализируют мир... следовательно... нужно их перевешивать.... иначе фигня получится.

Я еще квест редактировал, теперь у меня игра начинается в форте оа оксбэе, типа побег из тюрьмы... smile.gif

Автор: navy Apr 28 2006, 16:09

Цитата
Я еще квест редактировал, теперь у меня игра начинается в форте оа оксбэе, типа побег из тюрьмы...

Но не написал об этом wink.gif а надо... не все поймут в чем дело...

Автор: Jaoquin De Masse Jun 21 2006, 23:28

Значит так! Сейчас мы добавим в игру новый калибр пушек.
Для этого открываем
Пираты Карибского Моря\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фунт."
Включаем игру и проверяем! Будут вопросы, пишите! wink.gif cool.gif

Автор: Беатрис Aug 8 2006, 10:00

дополните пожалуйта описание *.INI-файлов unsure.gif unsure.gif

Автор: Догева Aug 8 2006, 10:28

Цитата(Беатрис @ Aug 8 2006, 14:00) *

дополните пожалуйта описание *.INI-файлов unsure.gif unsure.gif

дополнить чем, простите? boff.gif

Автор: Беатрис Aug 8 2006, 10:34

Теперь остается свести все слои (CTRL+E на англ. раскладке) и сохранить, заменив старую текстуру.
- Теперь конвертируем в ВМЛ и разворачиваем игру. Играем с новой галкой в меню перков. Если не работает, то выйдите из игры и войдите снова. (Не забывайте про настройку tx_converter'а: A8R8G8B8 вверху и внизу)

Позже дополню описание *.INI-файлов. Если чего забыл, поправьте меня!

и когда он дополнит? dry.gif

Автор: Догева Aug 8 2006, 11:03

с такими вопросами - автору в личку dry.gif

устное предупреждение

Автор: Райп Aug 26 2006, 20:45

Цитата(Jaoquin De Masse @ Apr 27 2006, 04:13) *

... ну и зачем было цитировать все ?? mad.gif




laugh.gif А если у VER.1.01 и там нет папки PROGRAMS а корабль-то очень хочется, что мне делать помоги????? cool.gif

Райп получает "+" за оверквотинг в особо крупных размерах и оффтоп...

Автор: ALexusB Aug 27 2006, 22:03

Ставить мой мод_в4, в котором код открыт и все на русском.
Официально за три года существования игры не выходило патчей, открывающих код, как это было с к3, т.е. ПКМ-моддинг "нот суппортет" - либо признано достаточным неофициальные патчи - так что велкам.

Автор: Командор Норрингтон Aug 30 2006, 15:56

Предлагаю скомпилировать фак в HTML-файл справки. Или накодить оболочку и сделать Exeшник. А потом выложить для скачивания. Могу сделать я, потом оцените.

Автор: navy Aug 30 2006, 16:06

Цитата(Командор Норрингтон @ Aug 30 2006, 16:56) *

Предлагаю скомпилировать фак в HTML-файл справки. Или накодить оболочку и сделать Exeшник. А потом выложить для скачивания. Могу сделать я, потом оцените.

ехе-шник нафиг... это потенциальная жертва вирусов.. компилед ХТМЛ пожалуйста.

Автор: Командор Норрингтон Aug 30 2006, 16:24

ОК постараюсь завтра или сегодня вечером сделать и выложить (в эту тему).

Автор: Командор Норрингтон Aug 30 2006, 20:44

Попробовал ваши советы по моддингу smile.gif. Сделал пару новых сабель, ща мучаюсь с кораблём.
Кстати сделал фак. По обновлениям и если найдёте косяки пишите в личку:)
Делал с нуля, без шаблона, так что строго не ругайте:)


Прикрепленные файлы
Прикрепленный файл  FAQ.rar ( 30.99 килобайт ) Кол-во скачиваний: 176

Автор: барбосса3 Aug 31 2006, 19:28

как сделать в море от 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;

Автор: Командор Норрингтон Aug 31 2006, 21:08

Надо попробовать, ну а как идея с компилед хтмл факом? продолжать его делать?

Автор: барбосса3 Sep 1 2006, 14:35

идея хорошая,скачал,понравилось,но про НПС нету!!!

Автор: Командор Норрингтон Sep 3 2006, 10:44

э я сам не спец по созданию модов к игре фак делал из информации уже имеющейся в этой теме, напишите про НПС и я добавлю в фак. (Или сами добавьте и выложите, при желании)

Автор: барбосса3 Sep 5 2006, 17:58

Было уже про НПС(в смысле новых персонажей,на 1ой странице писал Jaoquin de Masse)

Автор: Догева Sep 5 2006, 18:10

если было, то кидай ссылку, иначе какой смысл тут устраивать перепирательства на пустом месте? wink.gif

Автор: барбосса3 Sep 12 2006, 16:21

Создаем подзорную трубу:в файле 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 и в новой игре в коробке ищем ее unsure.gif 1.gif

Автор: Lugger Sep 14 2006, 09:45

Как добавить остров из игры Корсары 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.

Это всё были файлы освещения smile.gif.

Далее. Уже посложнее, нужно редактировать скрипты.
Идём первым делом в 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. Ну а дальше там пишем скрипты локаций...долго объяснять...Я ещё и
Ну я всё таки объясню. Можете скопировать всё написанное ниже мной, только коментарии удалите smile.gif:


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 то не будет. Этож порт smile.gif. Значит надо оставить так как есть.
//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"; - Погода запрещена в даннном случае, в таверне всё ж smile.gif
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;

И собственно все остальные абсолютно аналогично. smile.gif

// 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
По моему есть какой то другой способ, без моделирования, но его я еще не нашёл sad.gif.

Ещё в файле 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;

Ещё нужно создать кой чаво, чтобы можно было этот самый форт захватить smile.gif...Для этого идём сюда:
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;

Ну вот собственно и всё. Я описал лишь самое важное вкратце для того чтобы только добавить остров!

Автор: Командор Норрингтон Sep 25 2006, 15:23

Думаю обновлять фак смысла нет, сделаю полный когда накопится много инфы а не по одному совету добавлять...

Автор: Jaoquin De Masse Nov 3 2006, 03:17

Значит такс, сейчас я напишу (в общих чертах) как работать с альфа каналом. Я работал с 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.


Прикрепленное изображение

ЗЫ – если кому надо эту картинку для товара, пишите в личку…

Автор: Jaoquin De Masse Nov 4 2006, 15:12

Сейчас я напишу как перенести модели абордажных палуб из к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боардинг.с
Там ищем выбираем любой корабль например Барак, и переправляем на новое. Где что обозначает написано выше…
Короче должно получится так:

Цитата
// -------------------------------------------------
// BOARDING_BARQUE
// -------------------------------------------------
//ID
Locations[n].id = BOARDING_BARQUE;
locations[n].id.label = "Boarding deck";
//Info
Locations[n].filespath.models = "locations\decks\deck02";
Locations[n].image = "loading\Boarding.tga";
//Sound
locations[n].type = "deck";
Locations[n].lockCamAngle = 0.4;

//Models
//Always
Locations[n].models.always.locators = "deck02_locators";
Locations[n].models.always.l1 = "deck02";
//Day
Locations[n].models.day.charactersPatch = "deck02_patch";
//Night
Locations[n].models.night.charactersPatch = "deck02_patch";
//Environment
Locations[n].environment.weather = "true";
Locations[n].environment.sea = "true";
Locations[n].boarding = "true";
Locations[n].boarding.nextdeck = "NEXT_BRD";

n = n + 1;

//ID
Locations[n].id = "NEXT_BRD";
Locations[n].id.label = "Boarding deck";
//Info
Locations[n].filespath.models = "locations\decks\cabin01";
Locations[n].image = "loading\Deck_03.tga";
//Sound
Locations[n].type = "deck";

//Models
//Always
Locations[n].models.always.locators = "Cabin01_locators_x";
Locations[n].models.always.l1 = "Cabin01";
//Day
Locations[n].models.day.charactersPatch = "cabin01_patch";
//Night
Locations[n].models.night.charactersPatch = "cabin01_patch";
//Environment
Locations[n].environment.weather = "true";
Locations[n].environment.sea = "true";
Locations[n].boarding = "true";
Locations[n].boarding.nextdeck = "";

n = n + 1;

Но! Локации во второй палубе другие и появится черный экран при переходе. Чтобы этого избежать скачиваем файл с локаторами Прикрепленный файл  Cabin01_locators_x.rar ( 1.36 килобайт ) Кол-во скачиваний: 104
и закидываем его в пкм\RESOURCE\MODELS\Locations\decks\decks01\
Вроде все! Запускаем игру ипроверяем!

Автор: Jaoquin De Masse Nov 5 2006, 02:32

Люди, составте пожалуйста путевый FAQ про перегон моделей из 3Д Макса в гм. smile.gif

Автор: Captain Sparrow Dec 29 2006, 19:28

Сейчас объясню, как создать новые навыки, все очень просто
заходи в 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

Автор: Lugger Jan 2 2007, 09:02

Цитата(Captain Sparrow @ Dec 29 2006, 19:28) *

Сейчас объясню, как создать новые навыки, все очень просто...

Толку от этого будет - просто картинка в меню перков и всё! А добавление расчётов, чтобы перк реально уменьшал повреждения или в этом духе? А от простой картинки толку мало.

Автор: SONIkom Jan 8 2007, 01:03

МИНИ-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. Буду рад ответить!

Автор: Crazy FF Jun 5 2007, 07:28

уважаемый, а где мона качнуть данную программку? blink.gif

Автор: -=corsar=- Jun 15 2007, 22:24

Вот решил обновить список программ для создания модов:
1 http://rapidshare.com/files/7034629/ConvertorTX.rar - конвертирует *.tga в *.tga.tx - необходима для изменения скинов и другой графики...
2 http://rapidshare.com/files/7034844/GM-View.rar - просмотр *.gm моделей, экспорт *.obj
3 http://rapidshare.com/files/7037847/TOOL.rar - прога для редактирования *.wrl & *.gm, локаторы, анимация итд.(требует наличия NetFramework)
4 http://rapidshare.com/files/7036747/plugins3dmax.rar для 3D Max - импорт *.obj & *.wrl, экспорт *.wrl
5 http://forum.bestgamer.ru/showthread.php?t=984 - программа для 3D моделирования (взято с форума bestgamer)

Автор: navy Jun 26 2007, 10:21

TOOL лежит http://home.arcor.de/swigard/Downloads/TOOL/

Автор: Sonik Jul 16 2007, 14:01

УСТАНОВКА МАЙА
для тех, кто в танке
Цитата
у одного моего друга майя пошла, а у другого нет, тоесть там чего-то с кряком...
Все дело в том, что не у всех есть включенная сетевая карта. Для установки кряка - необходим сетевой адрес. В инете, блин - сотни объяснений че и как сделать.
1. к майе качайте любой кряк для самой последней ее версии (на данный момент 8.5, подходит к любой майе меньшей версии) - если траблы с поиском кряка - то обращайтесь в асю.
2. Инструкция по кряку майи:
1) Создать дирректорию на диске C:\ и назовите ее "Flexlm" (должно быть так: "C:\Flexlm");
2) Скопировать файл "aw.dat" и "awkeygen.exe" в эту папку;
3) Установить Майю (исключительно английскую версию, любая русская глючит не-по-децки!!!)
4) Далее нужно выбрать "ПУСК-->ВСЕ ПРОГРАММЫ-->Autodesk (или Alias - в зависимости от версии майи)-->common utilities-->FlexLM license utilities"
5) Во вкладке "system settings" скопировать поле "Ethernet address" (ЕСЛИ В ПОЛЕ "Ethernet address" ОДНИ НУЛИ (000000), ТО СМОТРИТЕ КОНЕЦ СООБЩЕНИЯ - ПОСЛЕ ЧЕРТЫ!!!);
6) Из дериктории "C:\FLEXLM" открыть файл "aw.dat" с помощью Wordpad (не блокнот) и заменить слова "your host" на то, что скопировали в предыдущем шаге. Сохранить и выйти из Wordpad'a;
7) Создать ярлык файла "awkeygen.exe" и потом приписать в строке запуска ярлыка (Прав.кноп.->Свойства в строке "Объект") "awkeygen.exe aw.dat" и запустите файл с ярлыка;
Обычно после этого шага Maya у меня запускалась, но если не запускается и требует файл лицензии, то:
8) "ПУСК-->ВСЕ ПРОГРАММЫ-->Autodesk (или Alias - в зависимости от версии майи)-->Maya X.X-->Install license" Выбирайте "I would like to install license from a file";
9) Выбирать дирректорию с файлом "aw.dat" ("C:\Flexlm");
10) Нажать "Install";
11) Перезагрузить комп (хотя у меня все сразу работает).
-------------------------------

Если в шаге 5 у вас в поле "Ethernet address" одни нули то сделайте следующее прежде чем использовать шаг 5:
1. Нажать правой кнопкой мыши по "Мой Компьютер" выбрать "Свойства";
2. Далее во вкладке "Оборудование" выбрать "установка новых устройств"
3. Немного нужно подождать, после чего нажать "устройство уже подключено"[i] и в следующем окне - прокрутить в самый низ и выбрать [i]"добавление устройства" и "Установка оборудования, выбранного из списка"
4. Из списка выбрать "Сетевые платы" и потом - "Microsoft->Адаптер Microsoft замыкания на себя", 2 раза "Далее" и "готово".
5. У часов появится сеть с крестиком или желтым знаком - это и есть сетевуха замыкания на себя.
6. Попробуйте пункт "5)" из описания кряка сделать заново - нулей больше нет - теперь цифры и буквы.
Все.
Эти инструкции - 20 минут лазания в нете + моя доработка для тех, кто в танке



ИНСТРУКЦИЯ ПЕРЕГОНА OBJ->GM
Цитата
Товарищи, расскажите пожалуйста еще разок кто и как конвертирует obj в gm
не знаю, может быть я и нарушу правила конечно, но вот по http://www.forum.bestgamer.ru/showthread.php?t=984 от господина Flint'a есть подробное описание конвертирования и всех последовательных действий.
В кратце процесс перегонки моделей выглядит примерно так:
1й способ (быстрый - надо Gm-Viewer и Maya 5.0 - но здесь теряется очень много инфы от gm-модели):
- Конвертируем с помощью Gm-Viewer в формат obj, но после такого конвертирования придется в майе поправлять нормали и в некоторых местах геометрию
- Отредактировав в Maya (желательно 5.0, иначе потом из бОльшей версии придется конвертировать сохраненную модель с помощью hex-редактора для того, чтобы открыть ее в 5й версии, т.к. конвертиовать в gm можно только плагином, который поставляется для версий майи 4.5 и 5.0) нужно последовать инструкции, что дана по ссылке выше.
- после всех действий очистить папку куда вы конвертировали от всех файлов, кроме gm (и, возможно, col и подобных игровых расширений)
2й способ (при помощи 3dsMax 8.0, 9.0 и Maya 5.0 - более качественный):
- Конвертируем Gm в Vrml при помощи TOOL (ищите в инструментах). Настройки конвертирования либо в faq либоо в Help'e проги - там хоть на инглише - но все должно быть понятно.
- После конвертирования импортируем VRML в 3ds Max 8.0 или 9.0 - смысл в том, что конвертирование через VRML сохраняет больше информации от gm, нежели сразу в obj.
- в зависимости от ваших умений работать в максе или майе - делаем необходимые манипуляции с моделью (иначе это можно сделать в Maya после экспорта), после чего экспортируем в obj.
- открываем(!) obj модель в Maya 5.0 и следуем инструкции Flint'a.
- после всех действий очистить папку куда вы конвертировали от всех файлов, кроме gm (и, возможно, col и подобных игровых расширений)

Автор: Zeleboba Aug 2 2007, 03:40

Незнаю будет ли это актуально но всё равно напишу
Я давно не был на форуме и заметил что добавилось большое количество моделей персов и это радует, так вот я напишу как добавить модели в К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 если мужская ничё не меняйте
Советую добавить на абордаж женщин т.к сам процесс абордажа происходит веселее в компании с женщинами а не только с мужиками!!!

Автор: A.G Aug 2 2007, 16:32

lighten.gif А теперь инструкция как прикрутить кирасы к персам . Шляпы, халаты, сапоги, очки и всё прочее нуждается хоть в малейшем знании манипуляций в 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. Начинаем новую игру(у меня почему то так) и при приобретении новых кирас видим ГГ в должном виде.

throw.gif

Автор: Zeleboba Aug 3 2007, 01:20

Вот написал как сделать простейший квест в К3
Кто не умеет читать обязательно !!!!


Прикрепленные файлы
Прикрепленный файл  ______________________.doc ( 26 килобайт ) Кол-во скачиваний: 81

Автор: Sprut Sep 27 2007, 10:13

Случайно наткнулся на учебник для Майи 5. http://filekeeper.ru/download/mayaprof.zip Вес около 41Мб. Возможно кто нибудь искал такой учебник.

Автор: Мак Mar 24 2008, 09:00

я дико звентиляюсь, но не мог бы кто-нибудь выложить майю и гм вивер? в инете куча всякого шлака, найти немогу sad.gif . буду очень признателен если кто-нибудь выложит.

Автор: RIZIY Mar 24 2008, 09:55

Цитата
но не мог бы кто-нибудь выложить майю и гм вивер?

А Вы в курсе, что с 1 января 2008 года за скачку вареза (не говоря уже про "выложить") дают 6 лет с конфискацией орудия преступления.

Автор: tislic Apr 2 2008, 11:00

Скажите пожалуйста названия всех локаторов скелета man4.mb, чтобы к новой созданной модели можно было привязать анимацию?
------------------------------------------------------------------------------
У кого ни будь, есть man4.mb с расставленными локаторами?

Автор: Sprut May 2 2008, 18:48

Цитата(Alex Dart @ May 1 2008, 20:44) *

Закончил тюнинг Феарлес из ПКП. Теперь он имеет каюту по которой можно прогулятся, разрушаемые элементы(якоря,висящие лодки,русалка на носу,кусок борта, перила 6 шт. и другое.)
Осталось сделать правильно бегающих матросов по палубе подскажите чем они делаются?
Вот, подробная и очень полезная инструкция от A.G-а, которая очень быстро затерялась в топике обсуждения модов. Сам кое как нашел.
Цитата
Я нашел другой способ расстановки SAILORSPOINTS. Вроде на много проще. Хотябы тем что не надо в слепую шариться по шип1.ini.
Так вот:
Для начала разберёмся что к чему в самом файле шип1.INI(*-название вашего корабля).

Все матросы передвигаются от точки к точке по заданному маршруту и выполняют команду которая к той или инной точке прописана:
[SIZE]
points = 20
links = 23
Это собственно формуляр самого файла(из чего он состоит) - точек(points) 20(получится у вас 21, так как "путь" обязательно начинается с нуля). Путей(links) 23 - вообще свободное значение получающееся только от того как вы видите себе пути ваших моряков(особо закручивать их передвижение не стоит, так как всё ровно на это никто не обращает внимания).

Далее координаты самих точек и их команды:
[POINT_DATA]
point 0 = 1.323673,3.212426,6.852052,0
точка 0- начало пути всех матросов, после знака равенства идут координаты точки(собственно где она распологается) - это три значения через запятую. И последня цыфра это команда которую выполняет матрос по прибытии в данную точку.

После координат точек идут сами пути, то есть какие точки связаны между собой.
[LINK_DATA]
link 0 = 0,1
link 1 = 1,2
Это значит, что появившийся матрос проследует из точки 0 в точку 1, далее из точки 1 в точку 2, выполняя при этом команды("последняя цыфра" в POINT_DATA) которые соответствуют точкам.

Далее, чтобы легче запомнить расположение путей ваших матросов, после экспорта *1_path.gm, создаём ещё N-ное кол-во локаторов("пути которые вы себе наметили"). Раздвигаете их над плоскостью вашей "палубы"так, чтобы они лежали на поверхности(не забывайте про лесницы, если имеются таковые на палубе, просто расположите один локатор выше предидущего и матрос автоматичести поднимется на желаемый уровень, также помните, что во время боя матрос должен зарядить вашу пушку - поставьте локатор рядом с ней). Надо помнить то, что все моряки появляются в точке 0(ноль).
Прикрепляете к главному локатору и экспортируете этот файл с любым названием(лучше SAILORSPOINTS.gm). Далее загружаете ваш файл в ТOOL и открываете вкладку View/Locators. Параллельно открыв GM_viewer корректируете ваши точки(points). После того как всё готово и вы "мысленно" нарисовали себе "картину" происходящего(матрос пошел туда, потом туда, сдесь остановился и зарядил пушку, а здесь начал карабкаться по вантам) сохраняем локаторы как обычно в отдельный файл и удаляете ваш SAILORSPOINTS.gm.

После это открываете блокнотиком ваш файл и копируете из него только координаты(надеюсь не надо объяснять что это за циферки...). Далее переносим их в файл шип1.INI в папку SAILORSPOINTS. И присваиваем значение координат вашим точкам(points):
point [0] номер точки = [1.323673,3.212426,6.852052] координаты, [0] - последняя цыфра, как я говорл раньше это команда, так вот:
0 - матрос просто пройдёт через эту точку к следующей не предпринимая никаких действий.
1 - матрос присядит и будет завяжывать шнурки делая вид, что он заражает пушку по ЛЕВОМУ БОРТУ.
2 - тоже самое отлынивание от обязанностей но по ПРАВОМУ БОРТУ.
7,6 - начнёт карабкаться в верх по вантам передней мачты(обычно mast2).
10 - тоже самое но на задней мачте(обычно mast3).


За пол часа можно вывести шип1.INI на игровой уровень.

КАК ИСПРАВИТЬ шип1.INI:

point [0] номер точки = [1.323673,3.212426,6.852052] координаты, [0] - действие матроса по прибытию в точку.

Открываете, например, Frigatte1.ini и копируете [POINT_DATA] в отдельный файл, затем вставляете запятые после каждого слова или знака во всех строчках(те которые стоят не трогаете). [LINK_DATA] - вы же не копировали!
point(сюда) 0 (вместо этого->"=" )-1.230676(стоит"," )1.389999(стоит"," )4.570725(стоит"," ) выкинуть->"0".
У вас получится вот это:
point,0,-1.230676,1.389999,4.570725,
проще говоря забираем только координаты.
После этого перед первыми координатами вставляем ЭТО ( 1,0,0,0,1,0,0,0,1, ), а за последними ЭТО (0,1,0,0,0,0,0,0,0, ). Будьте внимательными!

У вас получится вот это:
point, 0, (1,0,0,0,1,0,0,0,1),-1.230676,1.389999,4.570725, (0,1,0,0,0,0,0,0,0, ).
И так во всех строчках! На всё - про всё 5 минут. Посде этого сохраняете файл(хоть в "тхт") и убиваешь разширение.

Далее открываете TOOLом Frigatte1_path.gm и загружаете локаторы из своего файла. Сохраняете Frigatte1_path_Х.gm с локаторами. Открываете во вьювере Frigatte1_path_Х.gm и видите все свои SAILORSPOINTS. В TOOLе двигаете локаторы куда тебе надо, в во вьювере при помощи кнопочки RELOAD GM ЗРИТЕЛЬНО проверяете. Если надо чтоб матрос поднялся по лестнице на палубе(не по вантам) - ставите локатор выше. Если надо чтоб поднялся по вантам - выдвигаете локатор под вант(типа за борт). На палубе где стоят пушки надо ставить два ряда поинтов, чтоб матросы не сталкивались а могли обойти друг друга. Когда всё готово - опять сохраняешь локаторы в отдельный файл (можете старый переписать). На это уйдёт ещё 10 минут.
И ещё матросы не ходят по палубе - они и по воздуху могут ходить, так что распологайте точки на уровне палубы, чтоб не проваливались по колено в палубу! Координаты вант ставятся вверх к мачте на длинну ванта.

Обратная операция:
Копируете координаты(-1.230676,1.389999,4.570725) из своего файла в Frigatte1.ini на место старых координат(они между запятыми).

У вас получится вот это:
point 0 = -1.230676,1.389999,4.570725,

Теперь добавляете последнюю цыфру - команда матросу(чит. выше).

Автор: Chapay May 20 2008, 23:12

Самоучитель игры на 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. Это и будет текстура, соответствующая данной модели.

********************

Сказать, что всё вышеперечисленное является откровением свыше, нельзя, т.к. немало людей всё это хорошо знают.

Yurezzz и немного Chapay


Цитата(RomAkim @ May 21 2008, 17:14) *

Цитата(Chapay @ May 20 2008, 23:12) *

а также проделать то же самое с текстурой Blood_bomj.tga.tx (в папке \RESOURCE\Textures\Characters\).

Это лишнее.

Согласны. Эту фразу убираем.

Автор: RomAkim May 21 2008, 17:14

Цитата(Chapay @ May 21 2008, 00:12) *

а также проделать то же самое с текстурой Blood_bomj.tga.tx (в папке \RESOURCE\Textures\Characters\).

Это лишнее.

Автор: RomAkim Jul 8 2008, 13:10

Масштабирование персонажей с сохранением анимации.

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. Теперь модель и файл анимации можно переименовывать и вставлять персонажа в игру.

Автор: Chapay_and_Yurezzz Aug 26 2008, 22:02

Перевод Help’a TOOL



Конечно, инструмент TOOL несколько спорный, но дай бог каждой игре такой инструмент. Английский текст Help’а носит выраженный немецкий “акцент” и изобилует опечатками, вводящими в заблуждение. Для того, чтобы превратить этот текст в полноценную инструкцию (к тому же, писался этот текст для ПКМ, как и сам TOOL рассчитан на ПКМ) нужно тестировать его опытным путём по каждому из пунктов и параграфов. Мы опробовали далеко не все возможности этой программы и предпочли не уточнять часть пунктов и параграфов, чтобы не ошибиться в выводах. Мы рассчитываем на то, что уточнять часть текста инструкции (и вносить правки, примечания, комментарии) сможет каждый, кто опробовал на практике данные возможности. Например, кораблестроители – всё, что связано с кораблями, персонажестроители – с персонажами, сценостроители – со сценами и т.д.. Мы уточнили те возможности, которые так или иначе проверили на практике. Наверное, лучше проверять, тестировать, экспериментировать по какой-либо данной возможности сначала в ПКМ (К2), а потом опробовать это в других Корсарах. Короче говоря, TOOL всё ещё ждёт своих исследователей и естествоиспытателей.

Заранее приносим извинения за возможные неточности, ошибки и очепатки.

Скачать эту инструкцию с изображениями в формате html (можно положить в папку TOOL'а в качестве HELP'а):
http://rapidshare.ru/708361
http://ifolder.ru/7040652

Чапай и Юрец (артель Бухамова – ab)



Оглавление

1. Требования

2. Что такое TOOL

3. Окно 3d вида

4. Пользовательский интерфейс

5. Импорт персонажей

6. Импорт Судна

7. GM-> VRML (преобразование)

8. VRML-> GM (преобразование)

9. Старт Игры

10. Локаторы

11. Сцены

12. Окно 2d вида

13. Анимация

14. Extras (дополненительные функции)

15. Дополнения к программе (плагины)



1. Требования

Программа нуждается для работы в установленном Microsoft .NET-Framework. Его можно скачать отсюда:

http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=en



{примечание ab:

После установки TOOL просит указать путь к файлу ENGINE.exe, по умолчанию это "C:\Program Files\Akella Games\Корсары Город Потерянных Кораблей\ ENGINE.exe".
Для того, чтобы в TOOL отображались текстуры персонажей, нужно задать в файле настроек TOOL (по умолчанию "C:\Program Files\Modding\Tool\VrmlImExporter.ini") путь к ним (по умолчанию "C:\Program Files\Akella Games\Корсары Город Потерянных Кораблей\RESOURCE\Textures\Characters"), а также конвертировать их из формата TX в TGA с помощью программы ConvertorTX (http://legend.seaward.ru/tools/ConvertorTX.rar).
Чтобы конвертировать текстуры персонажей из TX в TGA с помощью ConvertorTX, выберите в нём в левой и правой частях окна папку текстур персонажей (по умолчанию "C:\Program Files\Akella Games\Корсары Город Потерянных Кораблей\RESOURCE\Textures\Characters"), в правой части выделите необходимые файлы и нажмите Convert.
В программе GM Viewer (http://legend.seaward.ru/tools/ModelView.rar) можно просмотреть модели в формате GM, их локаторы, а также конвертировать в формат OBJ.
Настоятельно рекомендуем, шаг скролла вашей мыши обязательно должен быть установлен на минимальный, т.к. именно скроллом эффективнее всего перемещать ползунки.
Имейте ввиду, что для работы с TOOL требуется определённый порядок действий. Например, чтобы прокрутить анимацию конкретной модели, нужно вначале выбрать соответствующую этой модели анимацию (an-файл), только потом открыть файл этой модели, но не наоборот. Иначе на её родной анимации эту модель будет ломать. Определённый порядок действий требуется и для других операций, в любом другом порядке TOOL будет работать некорректно. Зачастую порядок действий приходится определять опытным путём.}


2. Что такое TOOL

· Это - средство просмотра для gm.файлов и анимаций. Вы можете также сделать свои собственные анимации.

· Это помещает скелетную информацию в модели персонажей, таким образом, они правильно анимированы в игре.

· Это может также преобразовывать между форматом файла GM и VRML, таким образом модели PotC (ПКМ) могут быть преобразованы в VRML, загружены в 3d программу моделирования, отредактированы, сохранены в VRML снова, и преобразованы назад в GM (Для судов, однако, у этого процесса есть некоторые ограничения).

ПРИМЕЧАНИЕ: инструмент был проверен с экспортом VRML из Макса – с файлами VRML, произведенными Майя или любой другой программой, может не работать.

· Локаторы могут быть отредактированы, и добавлены новые локаторы.

· Это может отображать и редактировать файлы character patch (.ptc).

· Это – конечно, не программа моделирования. Сделайте свои модели в Майя или Максе или программе на Ваш выбор. Пользователи Майя все еще нуждаются в дополнениях к программе, чтобы преобразовать в GM прежде, чем использовать этот инструмент. При помощи этой программы пользователи Макса могут, экспортировав из Макса в формат VRML, одновременно вставить скелет плюс преобразовать в GM.



3. Окно 3d вида

Для функционирования Окна 3d вида необходим установленный DirectX (вероятно DirectX9). Чтобы видеть модели с текстурами Вы, должны преобразовать текстуры в формат tga (при помощи ConvertorTX) и указать в TOOL на папку, где эти текстуры tga расположены (введите путь в текстбокс Texture Directory).

{примечание ab: если поступить таким образом, при следующем запуске путь к текстурам снова изменится на указанный в VrmlImExporter.ini (см. прим. выше)}

Навигация в Окне 3d вида:

· держите правую кнопку мыши и двигайте мышь вверх/вниз для изменения размера модели в окне

· держите левую кнопку мыши и перемещайте мышь вправо/влево для вращения модели вокруг оси Y

· держите левую кнопку мыши и двигайте мышь вверх/вниз для вращения модели вокруг оси X

· держите среднюю кнопку мыши и перемещайте мышь вправо/влево для вращения модели вокруг оси Z

Изменяя масштаб изображения, сбрасывается положение вращения, (таким образом, вещи не могут быть испорчены слишком сильно).



4. Пользовательский интерфейс

Файлы открываются через строку меню или панель инструментов и сохраняются в различном формате. Импорт и привязка к анимации моделей персонажей делаются через кнопку панели TOOL Character Autoimport или команды в меню Character (Import, Resize, Drop and Center,Bind).

При сохранении ко всем именам файлов автоматически прилагается "_x". Если Вы не хотите этого, cнимите чекбокс Add _x to filename в главном окне.

Другие чекбоксы и текстбоксы обычно оставляют в их значениях по умолчанию, кроме как в следующих случаях:

· чекбокс Reverse Normals обычно отмечен; снимается, если Вы видите модель без текстуры и/или модель "вывернута".

· Если текстура модели выглядят странно (текстуры вверх тормашками), отмечают чекбокс Invert Textures и импортируют снова. Чтобы конвертировать из GM в VRML и снова назад (после того, как отредактировали в Максе), чекбокс обычно должен оставаться отмеченным.

· Импортируя суда, предметы или локации из VRML, отмечают чекбокс Ship/Item/Location. Чекбокс Make Path Visible должен остаться отмеченным, за исключением модели _path.gm, которая определяют, куда моряки могут пойти на судах.

· поле Separate Hats и, чекбокс Make Bone Locators – для импорта персонажей (см. ниже).

· чекбокс AVATAR STUDIO – исключительно для импорта моделей VRML, сделанных программой AVATAR STUDIO. Для всех других моделей он должен быть отключён. (Отметьте, что модели AVATAR STUDIO заархивированы и должны быть разархивированы перед импортом).



5. Импорт и Привязка Персонажей.

Этот параграф объясняет, как ввести в игру модели персонажей, изготовленных в 3d программе.

ВАЖНО: Если у Вашей модели нет никаких костей, она должна быть сохранена с обеими руками, вытянутыми в стороны, но НЕ в позиции сохранения оригинальных моделей игры. Программа сохранит Вашу модель в позиции, необходимой для игры.


{примечание ab: так выглядит в GM Viewer модель персонажа с поднятыми руками (Extras / Raise Arms), на которой видны локаторы оружия и камеры}

Модели из ресурсов игры, преобразованные в VRML, вновь привязывать нет необходимости, потому что номера костей сохранены при экспорте (закодированы в текстурные координаты файла VRML). Такие модели могут соответственно быть преобразованы, не поднимая рук.

Только если Вы хотите привязать модель вновь (например, к другому скелету), подъем рук необходим для моделей из ресурсов. Это может быть сделано через команду меню Extras / Raise Arms. Эта команда работает только для моделей из ресурсов игры, и она должна быть сделана прежде, чем редактировать персонаж в программе моделирования (Майя или Макс). {примечание ab: у части моделей при выполнении Extras / Raise Arms поднимаются не только руки, но и шарфик, хвостик и т.п.. У моделей из ГПК, анимаций man.an и woman.an, шалят кости лица и др.} Прежде, чем привязать снова, Вы должны в этом случае использовать пункт меню Character / Unbind, чтобы сбросить координаты костей.

Если Вы делаете модель с нуля или импортируете из других источников, Вы должны поднять руки в своей программе моделирования. Если после привязки вставляющей скелетную информацию,(как объяснено ниже) руки очень близко к телу, поднимите их немного больше.

Ноги могут быть в той же самой позиции как оригинальные, но удостоверьтесь, что есть небольшое расстояние между левой и правой ногой.

Чтобы получить модель персонажа, готовую к игре, необходимы следующие шаги:

· Откройте файл (GM или VRML)

· (Resize) Измените размеры модели, таким образом, чтобы они были близки размерам других персонажей

· (Drop and Center) Понизьте и сосредоточьте модель, чтобы она находилась в середине системы координат, совпадая со скелетом

· (Bind) Свяжите модель со скелетом (вставьте скелетную информацию),

· (Save) Сохраните в формате GM

Команда меню Auto Import / соответствующая кнопка панели инструментов выполняет все эти шаги автоматически. Если Вы желаете пропустить определенные шаги или проверить промежуточные результаты в GM Viewer, Вы можете выполнить шаги вручную через меню Character.

Для персонажей, которые не являются симметричными, будет лучше пропустить шаг "Снижение и центр"(Drop and Center), потому что сосредоточение может работать неправильно. Вместо этого сосредоточьте модель в своей программе 3d моделирования.

Результаты лучше, когда модель точно соответствует скелету мужских персонажей в игре (особенно длина рук). Отклонения приводят к изгибу костей (частей модели), где нет никаких суставов. Модели с юбками (towngirls) не будут по этой причине работать. Чтобы видеть, есть ли у Вашей модели суставы в правильной позиции, используйте чекбокс ShowSkeleton.


Вы также можете отметить чекбокс Make Bone Locators, импортировать модель, сохранить как GM и затем открыть GM Viewer или Майя. У модели будут локаторы во всех точках костей. Не забывайте снимать чекбокс прежде, чем сделать фактический экспорт для игры.


{примечание ab: так выглядит в GM Viewer модель персонажа с поднятыми руками (Extras / Raise Arms), на которой видны локаторы оружия, примечание ab: камеры и локаторы костей}

Неавтоматическое изменение размеров персонажей может быть сделано через меню Scene / Edit Scene. {примечание ab: в окне Edit Scene можно легко изменять положение и размер модели относительно скелета при помощи ползунков (см. ниже пункт Edit Scene)}

Когда модели из ресурсов или модели, сделанные из моделей ресурсов с head switcher{примечание ab: замена голов в ПКМ?}, будут экспортированы в VRML, номера костей будут сохранены. Это означает, что такие модели могут быть отредактированы в программе 3d моделирования (такой как Макс или Майя) и затем преобразовали назад в GM, не теряя скелетную информацию анимации.

Новые части, которые добавлены в программе 3d моделирования (как, например, шляпа) получают число кости 0 и могут быть привязаны впоследствии стандартной функцией Bind в TOOL - but again without the bone information that came from the stock models being lost. {примечание ab: ?} Это означает в частности, что анимация рук и пальцев (которую не может сделать TOOL) может быть сохранена от моделей ресурсов.

Даже удаление частей в программе 3d моделирования не вызовет проблем.

Примечание: поскольку информация кости закодирована в текстурные координаты (UV), Вы должны удостовериться, что файлы VRML сохранены, по крайней мере, с точностью до шести цифр.

{примечание ab: привязывать корректно к любой анимации нам не удавалось. TOOL привязывает к ПКМным (К2) анимациям: man.an и woman.an; в К3 этих анимаций нет; в КСМ это man1.an; в КВЛ – man2.an и woman2.an; в ГПК – man2.an и woman2.an; в паках Dark Toster’а, Etienn’а, Бухамова это соответственно man2.an и woman2.an/woman3.an. Все эти анимации – ПКМные man.an и woman.an, к которым можно привязать большинство моделей из серии Корсаров, а также сделанные самими и импортированые.
Но нам ни разу не удавалась идеальная привязка, то у модели кости выворачивает, то челюсть отъезжает, в общем, криво. Не забывайте о том, что для работы в игре свежепривязанной модели необходимо указывать в HeroDescribe соответствующий ANI файл}

Шляпы

Если у модели есть большая шляпа, то должно быть оставлено небольшое расстояние между шляпой и поднятыми руками. Может иногда случаться, что части шляпы признаны как часть руки или наоборот. Вы можете в этом случае исправить значение в поле Separate hats(процент 0-100). Если после привязки углы шляпы тянутся вниз, уменьшают значение, если части руки тянутся вверх, увеличивают это значение.



Импорт Судна {примечание ab: Этот параграф требует уточнений кораблестроителей}



Для импорта судна отмечают чекбокс Ship/Item/Location. Это действие устанавливает значение u4 в 0 и отключает чекбокс Reverse Normals, как обычно требуется для судов. При выключенном чекбоксе Ship/Item/Location эти значения возвращаются к состоянию по умолчанию.

Чтобы работать в игре с парусами и т.д., модели судна нуждаются в ряде локаторов. Самый легкий путь вставить их, загрузить модель из игры и сохранить её локаторы в текстовом файле (через меню Locators). После этого загрузите свою новую модель и импортируйте положения локаторов из текстового файла (снова через меню Locators). View / locators позволяет Вам редактировать локаторы нового судна (см. Локаторы).

ОТМЕТЬТЕ:

У судов есть немного дополнительной информации в них, которых не делают другие модели. Для моделей VRML, что информация произведена инструментом, но не правильно - который приводит к компьютеру, подающему звуковой сигнал однажды, загружая такую модель в море. О дальнейших последствиях я не уверен. TOOL запросит Вас относительно существующей модели копировать недостающие данные. Если Вы только отмените тот диалог, то данные будут произведены.



Файлы Обхода(Walk files)

Пути обхода членов команды на судне определен... файлом walk.c в подкаталоге PROGRAM\SEA_AI\walk Вашей папки игры. Первый набор чисел в этом файле определяет ряд пунктов, второй их типы мультипликации и третий переключения между ними..

Чтобы сделать редактирование этих пунктов легче, они могут теперь (через Walk Files / Read Walk File) быть показанными в инструменте 2DView. Вы можете также видеть переключения между пунктами, таким образом Вы можете легко визуализировать, куда идут члены команды. Если Вы загрузили модель судна, Вы будете также видеть ее ограничивающий прямоугольник для ориентации.

Пункты могут быть перемещены с мышью. Двойное нажатие пункта открывает диалоговое окно, где Вы можете редактировать координаты пункта (включая y) и его тип. Напечатайте 0, для обычной ходьбы, напечатайте 1 для того, чтобы загрузить орудие, 2, и 3 я не знаю, 5, 4 и 6 последовательные уровни восхождения на ванты.

С ползунком справа в главной части окна 2DView целое окно может быть сделано прозрачным, таким образом, Вы можете рассмотреть модель в GmViewer на заднем плане. Однако это делает всё очень медленным.

Для пользователей Майя пункты могут быть преобразованы в ряд локаторов через пункт меню в окне 2DView. Эти локаторы автоматически добавлены к в настоящее время загруженной модели (удостоверьтесь, что у Вас есть резервная копия). После редактирования локаторов в Майя TOOL может генерировать пункты файла обхода в текстовом формате. С помощью текстового редактора они могут быть вставлены в существующий файл обхода.



6. GM-> VRML

Импортируя VRML модель в Макс, удостоверьтесь, что добавили каталог с текстурами к списку адресов, где Макс будет искать текстуры. Текстуры должны быть в формате tga (для этого используйте ConvertorTX). Многие модели используют текстуру shadow.tga, которая при установке игры помещается не в каталог RESOURCE\Textures, а в подкаталог INTERFACES. Таким образом, Вы должны также добавить этот адрес к списку адресов текстур для Макса.



7. VRML-> GM

Экспортируя VRML из Макса, удостоверьтесь, что Вы выбрали VRML97 (VRML 2.0), а не VRML 1.0. Выберите тип полигонов "треугольники" ("triangles") и снимите чекбокс "растровая приставка URL" ("bitmap url-prefix").

u4 оценивают только преобразование аффектов из VRML в GM. Это ДОЛЖНО быть 4 для персонажей. Для оригинальных моделей, которые не являются персонажами, это обычно ноль, но также работает преобразование в GM, если Вы оставляете 4. (По крайней мере в GmViewer, я не проверял в игре). Вероятно, значение 4 для моделей не персонажей только тратит впустую место. Модели со значением 4 в поле u4 также получают локаторы для камеры, сабли, оружия и т.д.

Чтение VRML является весьма медленным, так что будьте терпеливы.

Когда импорт будет завершён, TOOL запросит Вас относительно существующего файла копировать "информацию о коллизиях" ("collision information"). Это должно обычно игнорироваться (выберите Cancel), за исключением судов (см. Импорт Судна). Не уверен, можно ли действительно что-нибудь сделать с коллизиями. {примечание ab: ?}

Меню View/Details отражает структуру оригинального VRML файла. Пункты Transform, Shape и Material могут быть рассмотрены корректно, остальное – нет. {примечание ab: ?}

Текстуры должны быть преобразованы в tga.tx и скопированы в соответствующий каталог. Файлы VRML без информации о текстурах могут быть преобразованы и рассмотрены в TOOL или в GmViewer, но они не будут работать в игре. TOOL поставит название "missing .tga" для текстуры, но поставить текстуру с этим названием недостаточно, у файла VRML должны быть координаты текстуры.



9. Старт Игры {примечание ab: никогда не пробовали}

Команда меню Start Game и кнопка предназначаются для тестирования персонажей. В настоящем времени загруженная модель будет скопирована в файл main_x.gm в папку игры и начатую игру. Файлы сценария не будут изменены, чтобы не столкнуться с Вашими собственными модами. Чтобы протестировать персонаж в действии, Вы должны изменить файлы сценария вручную, чтобы сделать модель персонажа main_x, любым способом, которым Ваши моды делают это. Для игры без модов будет достаточно в characters_init.c (локализованная версия) изменить строки

ch.id = "Blaze";

ch.nation = ENGLAND;

ch.model = "blaze";

в characters_int.c на

ch.id = "Blaze";

ch.nation = ENGLAND;

ch.model = "main_x";

Используйте команду Start Game только, когда Вы загрузили модель персонажа!

10. Локаторы

После загрузки модели координаты её локаторов могут быть рассмотрены и отредактированы через View / Locators. Можно также добавить новые локаторы.

Для каждого локатора есть две текстовых строки (только одну из которых показывает GM Viewer), три единичных значения (X, Y, Z) для позиции локатора и трех единичных значений каждой из осей, таким образом, у локатора может быть ориентация. Ориентация важна для сабли и локаторов оружия, например, потому что это определяет ориентацию оружия. В случае сомнения, устанавливают оси в (1, 0, 0), (0, 1, 0) и (0, 0, 1) – то есть XX в 1, XY и XZ в 0, YY в 1, YX и YZ в 0, ZZ в 1 и ZX и ZY в 0.

Кнопка Apply Changes копирует изменения в текущую модель - если модель тогда сохранена, так новые локаторы. Альтернативно локаторы могут быть отдельно сохранены в текстовый файл через меню Locators. Эти сохранённые локаторы могут впоследствии быть загружены назад в ту же самую или другую модель. Естественно, Вы можете также вручную редактировать текстовый файл в текстовом редакторе или создавать его внешней программой.

Локаторы могут также быть рассмотрены в Character Patch.

{примечание ab: мы делали так:

Редактирование файла модели (beltrop.gm) делать так:

1) Запускаем TOOL

2) Открываем TOOLом модель Белтропа (File -> Open gm -> Выбираем в окне файл beltrop.gm)

3) Экспортируем информацию о локаторах в текстовый файл (Locators -> Write to File -> В окне сохранения указываем любое имя, по умолчанию это doc1)

4) Открываем блокнотом файл doc1. Ищем в тексте SaberGun_Hand и заменяем на Gun_Hand, ищем SaberGun_Belt и заменяем на Gun_Belt. Сохраняем файл doc1

5) Импортируем в TOOL информацию о локаторах из файла doc1 (Locators ->Read from File -> В окне открытия файла указываем doc1)

6) Сохраняем модель Белтропа (File -> Save gm as -> В окне сохранения файла указываем beltrop.gm)

7) Закрываем TOOL

Для просмотра расположения локаторов использовали утилиту GM Viewer

Вся соль здесь в том, чтобы не использовать View / Locators, при редактировании в этом окне и последующем Apply Changes значения параметра s2 обнуляются, что критично для положения локаторов. Чтобы избежать этого, координаты локаторов экспортируем в текстовый файл, в нём изменяем их, а потом импортируем из него в модель. Так мы делали для Белтропа, где нужно было переименовать локаторы. В случае с женскими моделями, у которых не хватало локаторов оружия, локаторы экспортировались из схожих по пропорциям женских моделей, имеющих весь набор локаторов оружия; при необходимости координаты локаторов правились вручную для более точного их расположения в руке и на поясе.}



11. Сцены (пункт меню Scenes)

Команды в меню Scenes позволяют Вам создавать новые пустые комнаты и помещать мебель в комнату (это работает как для новых, так и для существующих комнат).

Команда Make new room создает очень простую комнату (коробка с кирпичной текстурой и дверь, которая является коробкой с деревянной текстурой), и отображает это в трехмерном окне. Возможно, Вы должны двигаться немного назад (правой кнопкой перемещая мышь к вам непосредственно), чтобы рассмотреть это полностью.




Edit Scene (Редактирование сцен)

Пункт меню Edit Scene открывает окно, в котором Вы можете добавить новые meshes {примечание ab: mesh – часть какой-либо модели} к сцене, изменять положение, вращать и изменять размеры простых meshes, которые составляют модель. Это может использоваться с существующей локацией, которая была ранее загружена или с новой комнатой, которая была создана через команду Make new room (или с любой другой загруженной моделью).


{примечание ab: это окно Edit Scene. Крайнее слева поле – список моделей в подпапке Meshes рабочей папки TOOL. Следующее поле – дерево загруженной данной модели, в случае, если модель состоит из одной части (mesh), в дереве будет указан один элемент. Кнопка Move to Position устанавливает центр модели (или выбранного элемента) в координаты, заданные в трёх текстбоксах координат расположенных над кнопкой. Кнопка Delete удаляет выбранный в дереве модели элемент. На панели Rotate расположены кнопки вращения модели (или выбранного элемента) вокруг осей, эти кнопки не удобны для моделей персонажей. Удобны для моделей персонажей четыре ползунка в центре окна (правый – увеличение/уменьшение размера модели, остальные три – перемещение по осям относительно скелета), помогающих при привязке к анимации (обязательно шаг скролла вашей мыши должен быть установлен на минимальный, т.к. именно скроллом эффективнее всего перемещать ползунки). Крайняя справа панель – для перемещения текстуры на модели.}

Конечно, это может также использоваться для моделей только с одним mesh. Таким путем модель можно вращать (не слишком полезно), измененный размер (очень полезно) или перемещать (не рекомендуется для моделей с одним mesh, потому что если переместить, модель не будет совпадать с её собственной системой координат).

Изменение масштаба анимации

Модель персонажа должна быть загружена прежде, чем открыть окно редактирования сцены, чекбокс Scale Animation also, должен быть отмечен. Теперь, если модель будет масштабироваться, то скелет (и локаторы модели) будет масштабироваться вместе с ней. Это не будет затрагивать оригинальный скелет в man.an – Вы должны отдельно сохранить .an-файл через кнопку Save Animation. Вы тогда получаете файл my.an в каталоге игры resource \ animation, который должен быть соответственно установлен в скрипте PotC (ПКМ), который будет использоваться с моделью (см. ниже). Сохраните измененную модель с помощью кнопки Save as gm в главном окне (к имени файла будет приложено _x).

Две кнопки Woman/youth size и Child size (не упомянутые выше) это перемасштабирование к стандартным размерам (Woman/youth, Child) таким образом, все персонажи с этим размером могут использовать ту же самую анимацию (.an-файл).

Для запуска Вашей новой анимации в скрипте POTC Вы должны сделать следующее:

· Сделайте копию файла man.ani и укажите в первой строке получившийся (в результате изменения масштаба) новый .an-файл.

· Установите в атрибут персонажа animation название нового ani-файла. Это обычно делается в characters_init.c (внимание: в европейской версии есть два варианта этого файла!) {примечание ab: эти действия описаны для ПКМ; в играх, где имеется HeroDescribe.txt, новый ani-файл указывается в нём}

Добавление meshes

Чтобы добавить mesh к текущей сцене, дважды щелкните по левому списку (listbox). Большинство объектов, которые идут с инструментом, были вырезаны из моделей в оригинальной игре. Подборка была предоставлена Аланом Смити (Alan Smithee).

Если Вы добавите свои собственные модели к каталогу Meshes, то они также обнаружатся в списке.

Перемещение, изменение размеров или удаление mesh

Чтобы передвинуть, изменить размеры или удалить mesh, его выбирают в дереве (treeview) и используют ползунки/кнопки.

Создание .col-файлов

Файлы .col используются игрой для освещения. Испытывая недостаток в лучшей опции, инструмент дает возможность Вам сделать простой .col-файл только с одним цветом, таким образом, Вы можете, по крайней мере, сделать внешний вид комнаты более темным или дать ему определенный оттенок.

Вы можете найти это в меню Light Окна 2d вида. Чтобы использовать это, Вы должны сначала загрузить модель локации, для которой Вы хотите создать .col-файл. После этого Вы будете запрошены относительно имени файла для сохранения нового .col-файла. После этого Вы можете выбрать цвет. Все вершины будут окрашены этим цветом. Обычно выбирают оттенки серого (черный сделает комнату полностью темной).

Сделайте Файл Локации

Для новых локаций, которые будут использоваться в игре, должен быть некоторый код инициализации. Этот код может быть помещен в файл в подкаталоге, названном mods в папке Program/Locations/Iinit. Если Вы используете Post Build 12 modpack, эти файлы будут автоматически загружены и обработаны.

Пункт меню Make Locations File в меню Scene позволяет Вам создавать такой файл, который инициализирует все локации в данном каталоге (подпапка scene в папке Resource/Models/Locations/).

Это также конвертирует все файлы character patches (если присутствуют) в этой папке и её подпапках из формата .gm в .ptc.

Все, что Вы должны сделать, это поместить все GM-файлы для локации (геометрия, локаторы и т.д.) в подпапки этой папки и затем выбрать пункт меню.

У каждого острова должен быть свой собственный каталог с подкаталогами для городов.

Заметьте, что для папки со многими локациями это – длинный процесс и займет время, во время которого программа не будет отвечать.



12. Окно 2d вида {примечание ab: по этому параграфу ничего не пробовали, требуются уточнения знатоков}

Пункт меню View / 2D окна Edit Scene отображает Окно 2d вида. Если модель будет загружена, то её размер покажут как прямоугольник. Это окна также служат для создания комнат из многоугольников, редактирования character patch или создания... файлов walk.c для судов.

Создание комнат из многоугольников

В окне 2d вида используйте кнопку Line в панели инструментов, чтобы сделать многоугольник, который может позже быть преобразован в комнату. Отметьте точки в окне 2d вида. После того, как это сделано, щелкните по кнопке панели инструментов Line снова.

Если Вы работаете с существующим планом экспозиции, Вы можете загрузить это как фоновое изображение через соответствующий пункт меню.

Используйте пункт меню Polygon / Extrude, чтобы создать комнату и переключитесь в окно 3d вида, чтобы увидеть это.

Для больших комнат текстура вероятно должна будет крыться черепицей, которая может быть сделана через окно Edit Scene.

ПРИМЕЧАНИЕ:

Если Вы добавляете точки для многоугольника по часовой стрелке, комната будет видимой снаружи, если против часовой стрелки – изнутри.

Создание Дверей и Окон

Пункты меню Door и Window вырезают "фальшивые" двери и окна в стене: они не действительно открыты, а только немного выделяются из остальной части стены. Вы должны применить текстуру окна или двери через окно "Edit Scene". Имейте ввиду, что как только у стены есть дверь или окно, стена может также отдельно текстурироваться.

Нет никакой функции "отмены" для дверей и окон, однако у каждой стены могут только быть одно окно или дверь, так, если что-то идет не так, как надо, делают новое окно/дверь, и старое исчезнет.

Редактирование character patch

Пункт меню Scene / Patch / Read character patch в главном окне показывает диалоговое окно для выбора файла character patch (.ptc). Patch можно просмотреть в окне 2d вида. Точки в patch можно перетащить с помощью мыши.

Пункт меню Scene / Patch / Create new character patch в главном окне, создает прямоугольный patch, который может быть отредактирован в окне 2d вида.

Если модель загружена прежде, чем создать новый patch, значения по умолчанию для размера patch соответствуют размеру модели. Для каждой загруженной mesh покажут коробкe с тем же самым размером для простоты редактирования patch. {примечание ab: ?}

Дважды щелкните на точке, чтобы создать отверстие в patch.

Локаторы

Если прежде, чем отобразить patch, была загружена модель, определяющая локаторы для локации (_l.gm), окно диалога выбора файла не будет показано, но файл .ptc для локации будет открыт. Программа в этом случае также показывает локаторы, которые могут быть свободно установлены. Двойное нажатие на локатор показывает некоторым из его свойств в другом диалоговом окне.

С помощью меню и панели инструментов окна редактирования patch Вы можете добавить новые локаторы.

{примечание ab: повторяем, по этому параграфу требуются уточнения}



13. Анимации

Используйте пункт меню View / Animation Data для открытия окна редактора анимации (Для этого сначала должна быть загружена модель персонажа). Кадр, который Вы хотите редактировать, выбирают длинным ползунком посередине. Чтобы выбрать кость, нажимают на одну из кнопок в схеме скелета, изображенной справа. {примечание ab: эти кнопки весьма относительны и оперировать лучше реальными номерами костей, которые нужно определить самостоятельно} Вы можете теперь вращать эту кость тремя ползунками сверху. Если Вы хотите переместить кость, которая не имеет кнопки, введите её номер в самое верхнее текстовое поле слева. (Для номеров костей смотрите изображение в разделе Импорт персонажей.) Когда Вы удовлетворены позициями всех костей для этого кадра, выберите пункт меню Animation / Make Keyframe. не нужно делать этого для всех кадров, программа интерполирует между ключевыми кадрами.


{примечание ab: это окно Animation Data. Три верхних ползунка – вращение выбранной кости по осям X, Y, Z. Длинный ползунок в центре – прокрутка всех заданных кадров файла анимации (обязательно шаг скролла вашей мыши должен быть установлен на минимальный, т.к. именно скроллом эффективнее всего перемещать ползунки). Слева по порядку сверху вниз: первое – текстовое поле, в котором задаётся номер кости; второе – счётчик кадров, показывающий текущий кадр анимации для ползунка прокрутки анимации; третье – текстовое поле, задающее первый кадр прокрутки анимации; четвёртое – текстовое поле, задающее последний кадр прокрутки анимации (то есть третьим и четвёртым текстовыми полями вы можете задать любой отрезок анимации). Большое текстовое поле внизу показывает количество кадров an-файла, число костей, иерархию костей, координаты костей и т.д..}

Вся анимация может быть сохранена через пункт меню Animation / Save. Вы получаете файл в своей папке игры в Resource / animation с тем же названием, как исходный файл анимации (ранее выбранный Вами в главном окне), с приложенным к имени файла "_x". {примечание ab: но это уже другой, новый an-файл, отличающийся от исходного}

{примечание ab: в окне Animation Data можно редактировать любой an-файл, от ПКМ (К2) до ГПК, нами проверено многократно. Например, так мы покадрово изменяли анимацию Белтропа (beltrop.an) http://rapidshare.ru/664425, в каждом кадре изменяя позу при помощи ползунков вращения кости и сохраняя изменённый кадр через Animation / Save.}

Изменение пола (Swapping gender)

Пункт меню Translate bone numbers в окне Animation позволяет Вам помещать мужской скелет в модель женского персонажа (таким образом, Danielle может сидеть), или женский скелет в модель мужского персонажа. Мужские персонажи должны быть прежде изменены к женскому размеру через окно Edit Scene (в главном окне, выберите Scene / Edit Scene). Это создаст новый файл анимации my.an в каталоге анимаций игры. Этот файл будет необходим для следующего процесса, так что удостоверьтесь, что он есть. (Даже если это – женский персонаж, в который Вы хотите поместить мужскую анимацию, Вы должны сначала изменить размеры мужского персонажа к женскому размеру, чтобы получить файл my.an).

Модели с измененным скелетом должны быть сохранены. В процессе создётся новый .an файл: man_woman.an для мужских моделей с женским скелетом или woman_man.an для женских моделей с мужскими скелетами. Эти анимации будут находиться в выпадающем списке анимаций главного окна. Выберите соответствующую и затем перезагрузите модель с новым скелетом, чтобы проверить это. Для использования в игре Вы также должны подстроить новые .an файлы через передачу .ani файл и коды скриптов.

Также удостоверьтесь, что Вы скопировали локаторы от Danielle в измененную мужскую модель (снова в главном окне: Locators / Write to File и Locators / Read from File).

{примечание ab: пробовали, но толком не получилось, образуется исковерканный ”скелет-мутант” an-файла-”мутанта” }



14. Extras (дополненительные функции)

В меню Extras имеются следующие команды:

· Raise Arms – подъем рук модели персонажа

· Mix Characters – смешивание персонажей (обмен головами) {примечание ab: для ПКМ}

· Separate Elements – деление модели на отдельные meshes (экспериментальный!)

· Raise location coordinates – подъем координат внутри локации общим числом {примечание ab: ?}

· Download latest version – загрузка последней версии этого инструмента

· NK –дополнения к программе

Деление модели на отдельные meshes

Выберите модель, которая будет тогда разделена на меньшие части (это, как предполагается, извлекает подпетли, но большую часть времени это получает намного меньшие части, такие как многоугольники). По причинам работы модели не покажут в трехмерном Окне.

Сохраните результат как VRML (GM еще не работает), и используйте 3d программу моделлера, чтобы выключить элементы, Вы хотите и склеиваете их назад вместе.

Это облегчает вырезку из подпетель, таких как мебель от модели местоположения.



Подъем координат внутри локации общим числом

В ресурсах игры в локациях обычно есть их пол, ниже нуля (уровень воды). Однако модели персонажей не могут быть загружены в позиции локаторов, которые ниже нуля. Поскольку это предотвращает локаторы кровати (см. Создание локаторов из произведенного скриптом файла compile.log) чтобы работать, этот пункт меню позволяет Вам поднимать все координаты общим числом.

Это показывает диалогу выбора файла, где Вы должны выбрать внутреннюю модель локации. Координаты для этой модели, всех ее локаторов, ее окон, ее фон skybox и ее участок персонажей будут подняты общим числом.

Конечно у этого есть другое использование помимо локаторов кровати (например наводнение локации).



15. Дополнения к программе (плагины)
{примечание ab: ничего из этого не пробовали, хотя первое может быть весьма полезным}

NK

Это дополнение к программе обеспечивает элементарный пользовательский интерфейс для UV инструмента Натана Келла.

Из оригинального справочного файла этой программы:

NathanKell (nathankell@piratesahoy.net)

ОПИСАНИЕ: эта программа позволит Вам сливать номера костей, записанные в UV-координаты WRL-файла при экспорте из Tool, в другой WRL-файл, который Вы определяете с отредактированным UV. Если Вы не редактировали UV, начиная с экспорта WRL из Tool, выполнять эту программу не необходимо. Однако, если Ваш 3d пакет (тридер) не поддерживает UV-координаты с точностью до шести значащих цифр, то Вы должны будете выполнить эту программу и дать ей оригинальный WRL Tool’а и Ваш измененный WRL.

ИСПОЛЬЗОВАНИЕ: Поместите программу в ту же самую папку, где находятся WRL-файлы. Запустите там командную строку. Напечатайте: Bonemerge FileWithCorrectBoneNumbers[.wrl] FileToAddThemTo[.wrl] [FilenameForMergedData.[wrl]] [-d] [-h]

ПРИМЕЧАНИЕ: У первых двух wrl файлов должно быть одинаковое число вершин и в одном порядке. Вы не должны прилагать .wrl к каждому имени файла. Если желаете, Вы можете явно определить название файла для записи результата; в противном случае имя файла будет FileToAddThemTo_b.wrl

FileWithCorrectBoneNumbers.wrl: у этого файла должны быть правильные UV-координаты с шестью значащими цифрами. Позиции XYZ вершин могут не быть такими же, как при экспорте из TOOL’а.

FileToAddThemTo.wrl: у этого файла есть отредактированные UV-координаты. У него должно быть то же самое число и порядок вершин, что и у первого файла.

FilenameForMergedData.wrl: если определено, программа запишет результат в этот файл. Иначе запишет в файл FileToAddThemTo_b.wrl

-d: режим Отладки (Debug). Выведет в debug.log информацию об операциях чтения и записи, а также информацию о номерах костей вершин (если найдено).

-h: режим Помощи (Help).

ВАЖНОЕ ПРИМЕЧАНИЕ: Программа сделает слияние только для ПЕРВОЙ группы object/material в Вашем файле WRL. Так что удостоверьтесь, что, когда Вы экспортируете в WRL в Вашем 3d пакете, вся геометрия – часть того же самого объекта, и все это использует ту же самую текстуру.

Однако опции командной строки не будут использоваться, если программа вызвана как плагин. Поэтому лучше запускают программу (в каталоге Plugins) из командной строки.

Утилиты

Создание локаторов из произведенного скриптом файла compile.log

Натан Келл создал некоторый код для записи координат локатора в compile.log из игры (первоначально, чтобы сделать локаторы кровати для Chouch Captain Charles' sneaking mod). Это дополнение к программе разбирает compile.log и вставляет локаторы в соответствующие модели локации.

Для того, чтобы работать, координаты локации должны быть подняты, обычно на 1.0 (см. Подъем координат внутри локации общим числом). Сделайте это прежде, чем делать локаторы.

Чтобы записать локаторы в compile.log, у Вас должно быть что-то вроде следующего в console.c (первоначально Натан Келл, ошибки мои): {примечание ab: ?}

#include "SDK\LocatorWrite.c"

//...

void ExecuteConsole()
{
ref pchar = GetMainCharacter();
ref ch;
int i;

//...
string model = "modelname_l";

pchar.vcskip = true;
if(findloadedlocation() == -1) return;
ref loc = &Locations[FindLoadedLocation()];
if(loc.models.always.locators == model)
{
DoLocWrite(1.0, 0.5, 5, true);
/*
ref fch1 = LAi_CreateFantomCharacter(false, 0, true, false,
false, "man2", "goto","upfrombed");
ref fch = LAi_CreateFantomCharacter(false, 0, true, false,
false, "man1", "reload", "onbed");
LAi_SetActorTypeNoGroup(fch);
LAi_ActorSetLayMode(fch);
*/
}
else
{
ReloadToLocModel(model);
}
}

Функция DoLocWrite должна быть в последней сборке или версии modpack в SDK\LocatorWrite.c.

Редактируйте код в console.c так, чтобы строка

string model = "modelname_l";

указывала, для точек какой модели Вы хотите сделать локаторы в локации. Запустите игру, затем нажмите F12. Ваш персонаж перемещён в локацию. Теперь поместите свой персонаж перед кроватью и нажмите F12 снова. Сообщение сообщит Вам, что, если bed'shead слева от Вас, Вы должны повернуться (не изменяя позицию). После выполнения, если нужно, нажимаете F12 снова.

Вы можете тогда редактировать console.c снова, чтобы указать это для различных моделей, телепортировавшись снова с F12.

Когда Вы сделали это, обработайте compile.log с помощью плагина Extras / Utilities / Locatormaker / readLocators.

Чтобы проверить, закомментируйте строку DoLocWrite и раскомментируйте блок ниже, затем покиньте локацию и нажмите F12 еще раз.

Автор: VladNiP Aug 8 2009, 09:15

Составил несколько 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);, то форт невозможно будет уничтожить.

__________________

Автор: Alexad_D Aug 23 2009, 12:30

Цитата(Jaoquin De Masse @ Apr 27 2006, 23:06) *

Меняем стартовую точку smile.gif
Вот это не очень легко. Для этого мы должны открыть два файла. Сначала откроем seadogs.c (лежит в корне каталога PROGRAM). Теперь откроем второй файл. Он лежит в директории PROGRAM\Locations\Init\. Там несколько файлов. Если вы хотите отправить его в место на Редмонде, то открывайте файл Redmond.c,

Не совсем так......... Все гораздо проще....... Поясняю - Стартовая точка игры - это запуск тутора и уж затем только выгрузка ГГ в мир. ИД стартовой локации - tutorial_deck_ - описан в - PROGRAM\Locations\init\QuestLocations.c ..... Следовательно и менять начинать надо здесь. ИД можно оставить без изменений (дабы ничего не тянуть больше) А вот свойства к примеру взять из гостиничной комнаты в таверне на Оксбее.
//Tutorial
//alexad_d Смена старта игры -->
Locations[n].id = "Tutorial_Deck";
Locations[n].id.label = "";
Locations[n].image = "";
//Sound
locations[n].type = "house";
//Models
//Always
Locations[n].filespath.models = "locations\inside\Doubleflour_house";
Locations[n].models.always.locators = "LH_F2_l";
Locations[n].models.always.tavern = "LH_F2";
Locations[n].models.always.window = "LH_F2_w";
Locations[n].models.always.window.tech = "LocationWindows";
Locations[n].models.always.window.level = 50;
//Day
Locations[n].models.day.charactersPatch = "LH_F2_p";
//Night
Locations[n].models.night.charactersPatch = "LH_F2_p";
//Environment
Locations[n].environment.weather = "true"; // <-- fix от Scatimon - Важно!!!!!
Locations[n].environment.sea = "false";
//Reload map
Locations[n].reload.l1.name = "reload1";
Locations[n].reload.l1.go = "";
Locations[n].reload.l1.emerge = "";
n = n + 1;

Дальше надо менять место выкрузки ГГ и боцману, после прохождения (пропуска) тутора, на более подходящий по смыслу - к примеру дверь второго этажа таверны - это в both_reaction.c. найти места:
Locations[FindLocation("Oxbay_port")].locators_radius.goto.goto18 = 0.5; // меняем на "Oxbay_tavern"
и....
if(Pchar.location == "Tutorial_Deck")
{
Lai_QuestDelay("Tut_SkipTutorialOnShip", 2.0);
}
if(Pchar.location == "Oxbay_Port") // меняем на "Oxbay_tavern"

Да сабельку добавить строчкой - locations[FindLocation(Pchar.location)].box1.items.blade1 = 1;

А в seadogs.c мне кажеться вообще нефиг лезть т.к.
LoadMainCharacterInFirstLocation(sTeleportLocName, "reload1", "Oxbay_port");

где - sTeleportLocName = "Tutorial_deck"; - ИД мы не меняли, "reload1" - есть и в комнате в таверне тоже нет смысла трогать ну и наконец -"Oxbay_port" - место так сказать парковки корабля....

Может я и ошибаюсь ..... поправте меня ......
*****************************************************
Да вот еще что..... Я не совсем понял(вернее совсем не понял) если старт в Оксбее причем здесь Фале де Флер

Автор: Midnight Aug 31 2009, 14:31

День добрый, уважаемые учасники форума !

Можно ли узнать, как добавить энкаунтер с квестовым кораблём и отключить у него абордаж?
речь об К3

Благодарен заранее

Автор: Captcher Sep 8 2009, 20:09

Раз тут и вопросы и ответы, хочу спросить следующее:
Расскажите как добавить новый остров в К3 (конкретно в нем, ибо способ, описанный на первой странице, не работает).

И хотелось бы узнать, как в том же К3 сделать элементарный квест.

Автор: Ron Sep 12 2009, 22:18

Подскажите через что можно просмотреть текстуры иконок ГГ ?

Автор: Tymofei Sep 12 2009, 23:13

Цитата(Ron @ Sep 12 2009, 23:18) *
Подскажите через что можно просмотреть текстуры иконок ГГ ?
http://legend.seaward.ru/tools/ConvertorTX.rar smile.gif

Автор: Alexad_D Sep 15 2009, 20:01

Цитата(Captcher @ Sep 8 2009, 20:09) *
.....как добавить новый остров в К3 .... способ, описанный на первой странице, не работает.... хотелось бы узнать, как в том же К3 сделать элементарный квест.

Аналогично ПКМ! Ну а то, что у тебя не работает что то... Ну во первых, может у тебя, где то пропущен какой то знак - запятая, кавычки и тд ( 1.gif опираюсь на свой собственный опыт) Во вторых - чисто совет, в первую очередь попытайся понять, читая чей то тутор - что именно делали и почему делали так... smile.gif
Ну и в третьих - на подобные вопросы найдешь ответы в разделе http://legend.seaward.ru/forum/index.php?showtopic=2666 wink.gif и, я думаю, если что не получится то если покажешь, помогут найти ошибку.

Автор: A_De Sep 3 2010, 22:16

Перечитывала 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'ом. Возможно, координаты локаторов можно менять, открыв файл с локаторами в блокноте или еще где-нибудь, но, по-моему, от этого появляются дополнительные глюки =)

Автор: Джин-Бейн Jan 27 2011, 19:23

Цитата(A.G @ Aug 2 2007, 18:32) *

lighten.gif А теперь инструкция как прикрутить кирасы к персам . Шляпы, халаты, сапоги, очки и всё прочее нуждается хоть в малейшем знании манипуляций в 3D редакторе.
Для этого нам понадобятся TOOL, Convertor_TX и GM_view.

Внимание! При импорте WRL в TOOL должен быть отмечен "чекбокс" Invert Texture. В TOOL можно загружать только один файл. Можно импользовать только персов с анимацией "man.an" (так как у кирасы именно эта анимация). При анимации кираса будет искажться, ломаться, пропускать текстуру перса - это нормально, такая анимация у стандартных персов, в игре это не заметно.

Для примера возьмём "BigPirate.gm"

throw.gif



Мучался несколько дней. Чет у него с руками не то. Поподробней бы, где какие галочки ставить (не сразу понял че такое чебоксы). Если речь конечно идет о ГПК надеюсь.

Автор: Black Angel Jan 27 2011, 20:52

Цитата(Джин-Бейн @ Jan 27 2011, 19:23) *

Мучался несколько дней. Чет у него с руками не то. Поподробней бы, где какие галочки ставить (не сразу понял че такое чебоксы). Если речь конечно идет о ГПК надеюсь.

Речь идет о к3 и квл,если мне память не изменяет...

Автор: Tymofei Jan 27 2011, 21:45

Для анимации (набора "костей" персонажа) ГПК этот метод не подходит, увы!

Автор: Nevaren May 15 2011, 13:05

Установил "Проклятые судьбой". Можно ли как-то с этой модификацией изменять\создавать офицеров?
И вообще, как можно добавить офицера в игру?
Прочитал здесь же о добавление в игру горожанина, но, к сожалению, "Проклятые судьбой" не генерирует папку program, а в старой не было ни папки unit, ни того, что можно там редактировать.
Вообще в этот аддон что-нибудь засунуть можно?

Автор: Bar1V1en May 29 2011, 16:03

Цитата(Jaoquin De Masse @ Apr 27 2006, 00:51) *

[b]Инструкция по созданию нового корабля smile.gif ....

Здравствуйте, помогите добавить свой кораблик, хотелось, что б был похож на ЧЖ,но начал с простого. если делаю описание
SHIP_BATTLESHIP1_ENGLAND
не работает
Изображение
Изображение

В случае, если копирую описание мановара, то выходит

Подскажите, как менять начальные параметры ГГ в аддоне ВМЛ, как я понял описание лежит в самом файле напр. dep0.GM Dep1.GM Dep2.GM Dep3.GM depp.GM
Пытался открыть блокнотом - хрень, открывал gm_view, показывает модельки.

Автор: Волк777 Aug 28 2011, 13:34

Уважаемый ALexusB, вопрос такой, я создал свой корабль и хочу дать гг что надо делать, у меня к гпк версии 1.2.12

Автор: Дитрих Джентри Aug 29 2011, 13:13

Цитата
как я понял описание лежит в самом файле напр. dep0.GM Dep1.GM Dep2.GM Dep3.GM depp.GM


Да ты что!!!! Конечно нет!!! Начальные статы ГГ лежат в скриптах.
Менять УЖЕ ИМЕЮЩИЕСЯ статы можно, когда с Алексусом говоришь в таверне.
Но добавить новые единицы статов нельзя.

Автор: Babb Aug 31 2011, 15:49

Начальные статы ГГ для ГПК: PROGRAM/characters/characters_init.c/ здесь изменяй.

Автор: Дитрих Джентри Aug 31 2011, 18:36

Цитата
Babb


Так, я не понял.... У вас Английская версия ГПК???
В русской версии скрипты ЗАКРЫТЫ, и менять хар-ки нельзя, но в английской версии они открыты.... само-собой это позволяет самому писать квесты, делать нововведения, и, что самое главное, можно самому мод-пак свой запилить smile.gif

К сожелению, многие игроки воспринимают открытые скрипты как способ "подправить", т.е. читернуть. sad.gif что совершенно не профессионально.

Автор: Babb Oct 12 2011, 13:27

В английской версии скрипты отличаются русской версии.

Автор: AgentOfLiberty Jan 30 2012, 07:07

Народ если можете то помогите плиз))) Я хотел сменить анимашку загрузки, но столкнулся с проблемами: во-первых: как сделать раскадровку анимации? во- вторых: как сделать рабочий, прозрачный фон ( в фотошопе пробовал, но фон анимации при загрузке становиться белым) Жду ответов)))) P.S Мастера всея корсары научите плиз))))) cool.gif

Автор: Anvik Dec 24 2012, 15:46

Господа и дамы корсары! Кто нибудь знает где прописаны параметры PIRATES? В корсарах каждому своё))

Автор: delfin_ Dec 24 2012, 18:25

Код ККС закрыт, а это значит что не удастся сделать никакие изменения.

Автор: jqeen Sep 18 2013, 19:03

Доброго времени суток!
Не могли бы мне помочь с диалогами?
Что нужно мне изменить в кейсе, что бы не было раздвоение НПС
при добавлении его в команду ГГ в качестве компаньена?
(А то получается добавляется компаньен и его точная копия офицер)

Цитата

case "JQ_03":
AddMoneyToCharacter(pchar, -300000);
dialog.text = "Я буду служить вам верой и честью!";
link.l1 = "Я верю вам Джеймс Баллантре.";
link.l1.go = "exit_hire";
NPChar.Dialog.FileName = "Enc_Officer_dialog.c";
NPChar.Money = 0;
SetCharacterShipLocation("heroJQ_02", "santacatalina_town");
SetCompanionIndex(pchar, -1, GetCharacterIndex("heroJQ_02"));
break;

case "exit_hire":
Pchar.questTemp.HiringOfficerIDX = GetCharacterIndex(Npchar.id);
AddDialogExitQuestFunction("LandEnc_OfficerHired");
NextDiag.CurrentNode = NextDiag.TempNode;
NPChar.quest.meeting = true;
DialogExit();
break;

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)