Seaward.ru

Здравствуйте, гость ( Вход | Регистрация )

> Составление FAQ по модификациям, прнимается помощь всех желающих
Dogeva
сообщение Apr 25 2006, 00:56
Сообщение #1


Расплетающая Сновидения
******

Ветеран ФорумаЗаслуженный Художник
Группа: форумчанин
Сообщений: 852
Регистрация: 10-February 06
Пользователь №: 2,632



предлагаю всем добрым и умным человекам 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-файлов. Если чего забыл, поправьте меня!!!
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов
Jaoquin De Masse
сообщение Apr 26 2006, 00:28
Сообщение #2


боцман
****


Группа: форумчанин
Сообщений: 131
Регистрация: 11-April 06
Из: Краснодарский к-р.
Пользователь №: 3,072



Диалоги это главное 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).

User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщений в этой теме
Догева   Составление FAQ по модификациям   Apr 25 2006, 00:56
SONIkom   Пользуясь случаем, хочу поблагодарить Догеву за пр...   Apr 25 2006, 22:17
Jaoquin De Masse   Диалоги это главное :) ЗЫ: Собрал инфу по диалог...   Apr 26 2006, 00:28
Jaoquin De Masse   Создание островов, пользуйтесь на здоровие, все пр...   Apr 26 2006, 11:19
Jaoquin De Masse   Многими хотелось сделать свои товары, чтобы помимо...   Apr 26 2006, 19:29
Jaoquin De Masse   Для начала я хотел поблагодарить некоторых участни...   Apr 26 2006, 22:13
Райп   [i][color=#990000]... ну и зачем было цитировать ...   Aug 26 2006, 20:45
Jaoquin De Masse   Инструкция по созданию нового корабля :) Говорю ср...   Apr 26 2006, 23:51
Scatimon   Значит, я могу помочь по созданию новых предметов....   Apr 27 2006, 19:21
Jaoquin De Masse   Значит такс, создадим перса в городе :) для пример...   Apr 27 2006, 20:42
Jaoquin De Masse   Меняем стартовую точку :) Вот это не очень легко...   Apr 27 2006, 23:06
Alexad_D   Меняем стартовую точку :) Вот это не очень легк...   Aug 23 2009, 12:30
navy   Если просто сделать так как ты описал работать не...   Apr 28 2006, 07:47
Jaoquin De Masse   Если просто сделать так как ты описал работать не...   Apr 28 2006, 15:47
navy   Но не написал об этом ;) а надо... не все поймут ...   Apr 28 2006, 16:09
Jaoquin De Masse   Значит так! Сейчас мы добавим в игру новый кал...   Jun 21 2006, 23:28
Беатрис   дополните пожалуйта описание *.INI-файлов :unsure...   Aug 8 2006, 10:00
Догева   дополните пожалуйта описание *.INI-файлов :unsur...   Aug 8 2006, 10:28
Беатрис   Теперь остается свести все слои (CTRL+E на англ. р...   Aug 8 2006, 10:34
Догева   с такими вопросами - автору в личку <_< ...   Aug 8 2006, 11:03
ALexusB   Ставить мой мод_в4, в котором код открыт и все на ...   Aug 27 2006, 22:03
Командор Норрингтон   Предлагаю скомпилировать фак в HTML-файл справки. ...   Aug 30 2006, 15:56
navy   Предлагаю скомпилировать фак в HTML-файл справки....   Aug 30 2006, 16:06
Командор Норрингтон   ОК постараюсь завтра или сегодня вечером сделать и...   Aug 30 2006, 16:24
Командор Норрингтон   Попробовал ваши советы по моддингу :). Сделал пару...   Aug 30 2006, 20:44
барбосса3   как сделать в море от 1 лица людей:в AIcameras ище...   Aug 31 2006, 19:28
Командор Норрингтон   Надо попробовать, ну а как идея с компилед хтмл фа...   Aug 31 2006, 21:08
барбосса3   идея хорошая,скачал,понравилось,но про НПС нету...   Sep 1 2006, 14:35
Командор Норрингтон   э я сам не спец по созданию модов к игре фак делал...   Sep 3 2006, 10:44
барбосса3   Было уже про НПС(в смысле новых персонажей,на 1ой ...   Sep 5 2006, 17:58
Догева   если было, то кидай ссылку, иначе какой смысл тут ...   Sep 5 2006, 18:10
барбосса3   Создаем подзорную трубу:в файле initItems ищем //S...   Sep 12 2006, 16:21
Lugger   Как добавить остров из игры Корсары 3 в игру ...   Sep 14 2006, 09:45
Командор Норрингтон   Думаю обновлять фак смысла нет, сделаю полный когд...   Sep 25 2006, 15:23
Jaoquin De Masse   Значит такс, сейчас я напишу (в общих чертах) как ...   Nov 3 2006, 03:17
Jaoquin De Masse   Сейчас я напишу как перенести модели абордажных па...   Nov 4 2006, 15:12
Jaoquin De Masse   Люди, составте пожалуйста путевый FAQ про перегон ...   Nov 5 2006, 02:32
Captain Sparrow   Сейчас объясню, как создать новые навыки, все очен...   Dec 29 2006, 19:28
Lugger   Сейчас объясню, как создать новые навыки, все оче...   Jan 2 2007, 09:02
SONIkom   МИНИ-FAQ ПО TOOL (for seaward-forum) -------------...   Jan 8 2007, 01:03
Crazy FF   уважаемый, а где мона качнуть данную программку? :...   Jun 5 2007, 07:28
-=corsar=-   Вот решил обновить список программ для создания мо...   Jun 15 2007, 22:24
navy   TOOL лежит тут   Jun 26 2007, 10:21
Sonik   УСТАНОВКА МАЙА для тех, кто в танкеВсе дело в том...   Jul 16 2007, 14:01
Zeleboba   Незнаю будет ли это актуально но всё равно напишу ...   Aug 2 2007, 03:40
A.G   :lighten: [u]А теперь инструкция как прикрутить ки...   Aug 2 2007, 16:32
Джин-Бейн   :lighten: [u]А теперь инструкция как прикрутить к...   Jan 27 2011, 19:23
Black Angel   Мучался несколько дней. Чет у него с руками не то...   Jan 27 2011, 20:52
Zeleboba   Вот написал как сделать простейший квест в К3 Кто ...   Aug 3 2007, 01:20
Sprut   Случайно наткнулся на учебник для Майи 5. Скачать....   Sep 27 2007, 10:13
Мак   я дико звентиляюсь, но не мог бы кто-нибудь выложи...   Mar 24 2008, 09:00
RIZIY   А Вы в курсе, что с 1 января 2008 года за скачку ...   Mar 24 2008, 09:55
tislic   Скажите пожалуйста названия всех локаторов скелета...   Apr 2 2008, 11:00
Sprut   Закончил тюнинг Феарлес из ПКП. Теперь он имеет к...   May 2 2008, 18:48
Chapay   Самоучитель игры на HeroDescribe ****************...   May 20 2008, 23:12
RomAkim   а также проделать то же самое с текстурой Blood_b...   May 21 2008, 17:14
RomAkim   Масштабирование персонажей с сохранением анимации....   Jul 8 2008, 13:10
Chapay_and_Yurezzz   Перевод Help’a TOOL Конечно, инструмент TOOL нес...   Aug 26 2008, 22:02
VladNiP   Составил несколько FAQ по скриптам. Вот они: FAQ ...   Aug 8 2009, 09:15
Midnight   День добрый, уважаемые учасники форума ! Можн...   Aug 31 2009, 14:31
Captcher   Раз тут и вопросы и ответы, хочу спросить следующе...   Sep 8 2009, 20:09
Alexad_D   .....как добавить новый остров в К3 .... способ, о...   Sep 15 2009, 20:01
Ron   Подскажите через что можно просмотреть текстуры ик...   Sep 12 2009, 22:18
Tymofei   Подскажите через что можно просмотреть текстуры ик...   Sep 12 2009, 23:13
A_De   Перечитывала FAQ по ВМЛ, наткнулась на такую жалоб...   Sep 3 2010, 22:16
Tymofei   Для анимации (набора "костей" персонажа)...   Jan 27 2011, 21:45
Nevaren   Установил "Проклятые судьбой". Можно ли ...   May 15 2011, 13:05
Bar1V1en   [b]Инструкция по созданию нового корабля :) .... ...   May 29 2011, 16:03
Волк777   Уважаемый ALexusB, вопрос такой, я создал свой кор...   Aug 28 2011, 13:34
Дитрих Джентри   Да ты что!!!! Конечно нет!...   Aug 29 2011, 13:13
Babb   Начальные статы ГГ для ГПК: PROGRAM/characters/ch...   Aug 31 2011, 15:49
Дитрих Джентри   Так, я не понял.... У вас Английская версия ГПК?...   Aug 31 2011, 18:36
Babb   В английской версии скрипты отличаются русской вер...   Oct 12 2011, 13:27
AgentOfLiberty   Народ если можете то помогите плиз))) Я хотел смен...   Jan 30 2012, 07:07
Anvik   Господа и дамы корсары! Кто нибудь знает где п...   Dec 24 2012, 15:46
delfin_   Код ККС закрыт, а это значит что не удастся сделат...   Dec 24 2012, 18:25
jqeen   Доброго времени суток! Не могли бы мне помочь ...   Sep 18 2013, 19:03


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 26th April 2024 - 03:04

Блок рекламы
Яндекс цитирования Rambler's Top100
Rambler's Top100