[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
FAQ по модам для игр серии "Корсары"
ЛисичкаДата: Понедельник, 10.04.2017, 17:34 | Сообщение # 1
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
FAQ по созданию модификаций для игр серии «Корсары»

Действия связанные с главным героем
Как лишить главного героя возможности владеть саблей, пистолетом и подзорной трубой навсегда
Как вернуть главному герою возможность владеть саблей, пистолетом и подзорной трубой
Как перенести главного героя из одной локации в другую
Как выдать/забрать определенные предметы главному герою
Как лишить/дать корабль главному герою
Как установить отношения «наций» к главному герою
Как уменьшить/увеличить репутацию главного героя у «наций»
Как дать/взять золотые монеты главному герою

Действия связанные с НПС
Как поместить/удалить НПС в/из локации
Как дать/лишить бессмертия НПС
Как посадить НПС за стол в таверне посредством LAi_ActorSetSitMode
Как посадить НПС за стол в таверне через файл StoryCharacters.с
Как заставить НПС отправиться из одного локатора в другой, а потом исчезнуть
Как объединить нескольких НПС в группу
Как переместить НПС в локацию к главному герою без указания локации
Как сделать чтобы несколько НПС напали на главного героя
Как сделать чтобы один НПС напал на главного героя
Как сделать чтобы группа НПС напала на главного героя у которого есть своя группа НПС
Как сделать чтобы НПС бегал от главного героя

Действия связанные с диалогами
Как написать простой диалог
Как сделать несколько вариантов ответа
Как запустить диалог с определенной ветки квеста

Действия связанные с написанием квестов
Как добавить запись в судовой журнал
Как добавить звук при добавлении записи в судовой журнал
Как запустить следующий case квеста через определенное время
Как закрыть/открыть все порты для корабля главного героя
Как установить отношения «наций» друг к другу
Объяснения к некоторым из win_condition

Действия связанные с интерфейсом игры и внутренним обустройством
Как вставить свою картинку–заставку во время прохождения квеста
Как добавить в квест видео
Как событиям в квесте придать вид широкоформатного видео
Как вставить свое видео как заставку к игре
Как сделать эффект затемнения экрана при переходе из одного case квеста в другой
Как сделать всплывающую надпись на экране
Как зафиксировать имя и фамилию, при создании своего НПС
Как сделать видимыми локаторы
Как заменить модель и имя главного героя в игре К3: ТДМ на свои
Как интегрировать в игру свой файл описания НПС
Как добавить своего НПС в игру[


Сообщение отредактировал Лисичка - Понедельник, 10.04.2017, 18:42
ЛисичкаДата: Понедельник, 10.04.2017, 17:35 | Сообщение # 2
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как лишить главного героя возможности владеть саблей, пистолетом и подзорной трубой навсегда

Если возникает необходимость лишить главного героя сабли, пистолета и подзорной трубы навсегда то в casе квеста вставляем этот код:

Код
RemoveCharacterEquip(pchar, BLADE_ITEM_TYPE);RemoveCharacterEquip(pchar, GUN_ITEM_TYPE);
RemoveCharacterEquip(pchar, SPYGLASS_ITEM_TYPE);
EnableEquip(pchar, BLADE_ITEM_TYPE, false);
EnableEquip(pchar, GUN_ITEM_TYPE, false);
EnableEquip(pchar, SPYGLASS_ITEM_TYPE, false);
TakeItemFromCharacter(PChar, FindCharacterItemByGroup(pchar, BLADE_ITEM_TYPE));
TakeItemFromCharacter(PChar, FindCharacterItemByGroup(pchar, GUN_ITEM_TYPE));
TakeItemFromCharacter(PChar, FindCharacterItemByGroup(pchar, SPYGLASS_ITEM_TYPE));


При начале исполнения case квеста в котором есть этот код у главного героя пропадут сабля, пистолет и подзорная труба.

Если надо лишить главного героя только сабли то вставляем в case квеста такой код:

Код
RemoveCharacterEquip(pchar, BLADE_ITEM_TYPE);
EnableEquip(pchar, BLADE_ITEM_TYPE, false);
TakeItemFromCharacter(PChar, FindCharacterItemByGroup(pchar, BLADE_ITEM_TYPE));


Если надо лишить главного героя только пистолета то вставляем в case квеста такой код:

Код
RemoveCharacterEquip(pchar, GUN_ITEM_TYPE);
EnableEquip(pchar, GUN_ITEM_TYPE, false);
TakeItemFromCharacter(PChar, FindCharacterItemByGroup(pchar, GUN_ITEM_TYPE));


Если надо лишить главного героя только подзорной трубы то вставляем в case квеста такой код:

Код
RemoveCharacterEquip(pchar, SPYGLASS_ITEM_TYPE);
EnableEquip(pchar, SPYGLASS_ITEM_TYPE, false);
TakeItemFromCharacter(PChar, FindCharacterItemByGroup(pchar, SPYGLASS_ITEM_TYPE));
ЛисичкаДата: Понедельник, 10.04.2017, 17:37 | Сообщение # 3
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как вернуть главному герою возможность владеть саблей, пистолетом и подзорной трубой

Если возникает необходимость вернуть главному герою возможность владеть саблей, пистолетом и подзорной трубой навсегда то в casе квеста вставляем этот код:

Код
EnableEquip(pchar, SPYGLASS_ITEM_TYPE, true);
EnableEquip(pchar, BLADE_ITEM_TYPE, true);
EnableEquip(pchar, GUN_ITEM_TYPE, true);


EnableEquip(pchar, SPYGLASS_ITEM_TYPE, true); -- Дает возможность главному герою иметь подзорную трубу

EnableEquip(pchar, BLADE_ITEM_TYPE, true); -- Дает возможность главному герою иметь саблю

EnableEquip(pchar, GUN_ITEM_TYPE, true); -- Дает возможность главному герою иметь пистолет
ЛисичкаДата: Понедельник, 10.04.2017, 17:38 | Сообщение # 4
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как выдать/забрать определенные предметы главному герою

Код
PChar.DisableExchangeItems = true;  //забрать предметы из рюкзака


Код
TakeItemFromCharacter(pchar, "ID предмета");  //забрать предмет у главного героя


Код
TakeNItems(PChar, "ID предмета", -1); //забрать предмет из рюкзака
TakeNItems(PChar, "ID предмета", 1);  //положить предмет в рюкзак


Код
GiveItem2Character(pchar, "blade1");  //положить в рюкзак саблю
   EquipCharacterByItem(pchar, "blade1");  //вооружить главного героя саблей

Код
GiveItem2Character(PChar, "gun1");  //положить в рюкзак пистолет
   EquipCharacterByItem(PChar, "gun1");  //вооружить главного героя пистолетом

Код
GiveItem2Character(PChar, "spyglass1");  //положить в рюкзак подзорную трубу
   EquipCharacterByItem(PChar, "spyglass1");  //дать главному герою подзорную трубу


Список всех доступных предметов вы можете найти в файле initItems.c в папке program/items

В рюкзак к главному герою вы можете положить любой предмет.

Код
GiveItem2Character(pchar, "potion1");  //положить в рюкзак личилку


Код
GiveItem2Character(pchar, "ID предмета"); //положить в рюкзак предмет с ID прописанным в файле initItems.c


ЛисичкаДата: Понедельник, 10.04.2017, 17:41 | Сообщение # 5
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как лишить/дать корабль главному герою

Если при создании квеста возникла необходимость лишить главного героя корабля, то можно использовать этот код

Код
pchar.Ship.Type = SHIP_NOTUSED;


Если при создании квеста возникла необходимость дать главному герою корабль, то можно использовать этот код

Код
pchar.Ship.Type = GenerateShip(SHIP_QSF_LUGGER, 1);


Информацию о всех кораблях можно найти в файле Ships_init.с в папке program/ships
ЛисичкаДата: Понедельник, 10.04.2017, 17:42 | Сообщение # 6
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как установить отношения «наций» к главному герою

Чтобы установить отношение «наций» к главному герою используем такой код

Код
SetRelations(нация, отношение);
PChar.reputation.нация = число десятками от 0 до 100 ;


Допустим отношение Англии к главному герою враждебные, пишем так

Код
SetRelations(ENGLAND, RELATION_ENEMY);
PChar.reputation.England = 0;


Допустим отношении Англии к главному герою нейтральное тогда пишем так

Код
SetRelations(ENGLAND, RELATION_NEUTRAL);
PChar.reputation.England = 50;

или

SetRelations(ENGLAND, RELATION_FRIEND);
PChar.reputation.England = 50;


Допустим отношение Англии к главному герою дружественное, тогда пишем так

Код
SetRelations(ENGLAND, RELATION_FRIEND);
PChar.reputation.England = 100;


Название «наций»
ENGLAND / England - Англия
HOLLAND / Holland - Голландия
SPAIN / Spain - Испания
FRANCE / France - Франция
SMUGGLER / Smuggler - Контрабандисты
PIRATE / Pirate - Пираты

Уровень репутации
от 0 до 40 – враждебная
50 – нейтральная
от 60 до 100 – дружественная

например:
0 - ужасная
10 - ужасная
20 - враждебная
30 - недружелюбная
40 - настороженная
50 - нейтральная
60 - симптизарующая и так далее.
ЛисичкаДата: Понедельник, 10.04.2017, 17:43 | Сообщение # 7
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как установить отношения «наций» друг к другу

Допустим вам надо установить отношения между Англией и Францией как враждебные

Код
SetNationRelation(ENGLAND, FRANCE, RELATION_ENEMY);


Допустим вам надо установить отношения между Англией и Францией как нейтральные

Код
SetNationRelation(ENGLAND, FRANCE, RELATION_NEUTRAL);


Допустим вам надо установить отношения между Англией и Францией как дружеские

Код
SetNationRelation(ENGLAND, FRANCE, RELATION_FRIEND);


Допустим вам надо установить альянс между Англией и Францией

Код
SetNationRelation(ENGLAND, FRANCE, RELATION_ALLIANCE);


Название «наций»
ENGLAND - Англия
HOLLAND - Голландия
SPAIN - Испания
FRANCE - Франция
PIRATE - Пираты
ЛисичкаДата: Понедельник, 10.04.2017, 17:45 | Сообщение # 8
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как уменьшить/увеличить репутацию главного героя у «наций»

Допустим вам потребовалось уменьшить или увеличить репутацию главного героя у той или иной «нации». Для этого используем такой код

Код
ChangeCharacterReputation(pchar, число со знаком минус или без, нация);


Допустим вы хотите уменьшить репутацию главного героя у Англичан на 15, тогда пишем так

Код
ChangeCharacterReputation(pchar, –15, ENGLAND);


Допустим вы хотите увеличить репутацию главного героя у пиратов на 25, тогда пишем так

Код
ChangeCharacterReputation(pchar, 25, PIRATE);


Название «наций»
ENGLAND - Англия
HOLLAND - Голландия
SPAIN - Испания
FRANCE - Франция
SMUGGLER - Контрабандисты
PIRATE - Пираты
ЛисичкаДата: Понедельник, 10.04.2017, 17:47 | Сообщение # 9
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как дать/взять золотые монеты главному герою

Если возникла необходимость забрать или дать главному герою золотые монеты, то пишем этот код

Код
AddMoneyToCharacter(pchar, цифра со знаком минус или без);


Например вам необходимо выдать главному герою 1 000 золотых, то пишем такой код

Код
AddMoneyToCharacter(pchar, 1000);


Если вам надо отобрать у главного героя 500 золотых монет, то пишем такой код

Код
AddMoneyToCharacter(pchar, -500);
ЛисичкаДата: Понедельник, 10.04.2017, 17:48 | Сообщение # 10
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как сделать всплывающую надпись на экране

Если вам необходимо проинформировать о чем–либо игрока с помощью всплывающей надписи на экране, то используйте этот код

Код
Log_SetStringToLog("ваш текст");


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

Код
Log_SetStringToLog("новая запись в судовом журнале");


Если вам надо сообщить, что главный герой получил золотые монеты в ходе выполнения квеста, то пишем так

Код
Log_SetStringToLog("вы получили 1000 золотых");
ЛисичкаДата: Понедельник, 10.04.2017, 17:51 | Сообщение # 11
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как вставить свою картинку–заставку во время прохождения квеста

Можно украсить прохождение квеста картинкой–заставкой которая будет появляться при переходе из одного case квеста в другой. Для вставки картинки пишем такой код

Код
StartPictureAsVideo("loading\название файла с картинкой");


Например, для вызова заставки при переходе в банк код пишется так

Код
StartPictureAsVideo("loading\Bank_512.tga");


А для вызова заставки при переходе в церковь пишем так

Код
StartPictureAsVideo("loading\Church_512.tga");


Хотя в коде картинка имеет расширение .tga , в папке файл имеет расширение .tga.tx. Перевести свою картинку с расширением .tga в текстуру с расширением .tga.tx можно с помощью программы–конвертера ConvertorTX

Файлы с картинками для загрузки на экран хранятся в папке loading
Путь к папке в игре КВС: RESOURCE\TEXTURES\loading
Путь к папке в игре КВЛ:
RESOURCE\TEXTURES\Loading\inside
Соответственно, и названия файлов разные. Для картинки–заставки при входе в банк в игре КВС файл имеет такое имя Bank_512.tga.tx, а в игре КВЛ такое bank.tga.tx .
ЛисичкаДата: Понедельник, 10.04.2017, 17:52 | Сообщение # 12
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как добавить в квест видео

Если возникла необходимость добавить видео в квест, то можно это сделать таким кодом

Код
sVideoFile = "название файла";


Например, у вас есть видео файл VideoCaseA.wmv и вы хотите вставить его в игру, в одну из веток квеста. В нужном месте квеста пишете этот код

Код
sVideoFile = "VideoCaseA";


Все видео файлы игры хранятся в папке RESOURCE\VIDEOS

Все видео файлы которые вы хотите использовать в игре должны иметь расширения .wmv, например VideoCaseA.wmv.

Оптимальное разрешение для видео 720х576, но если ваше видео 640х480, сойдет и такое.
ЛисичкаДата: Понедельник, 10.04.2017, 17:54 | Сообщение # 13
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как событиям в квесте придать вид широкоформатного видео

Если вы желаете украсить выполнения какого-либо действия в квесте, например, диалог между главным героем и НПС, придав ему вид широкоформатного видео, то делается это с помощью кода

Код
StartQuestMovie(true, true, true);
EndQuestMovie();


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

Код
case "start_movie":
StartQuestMovie(true, true, true);
break;    
  
case "end_movie":
EndQuestMovie();
break;
ЛисичкаДата: Понедельник, 10.04.2017, 17:55 | Сообщение # 14
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как вставить свое видео как заставку к игре

Находим в папке PROGRAM файл seadogs.c. Ищем в нем такие строки.

Код
void Main_LogoVideo()
{
    
    int i = sti(InterfaceStates.videoIdx);
    switch(i)
    {
  case 0:
   {
    InterfaceStates.videoIdx = 1;
    StartPostVideo("PlaylogicLogo",1);
    return;
   }
  break;

  case 1:
   {
    InterfaceStates.videoIdx = 2;
    StartPostVideo("1CLogo",1);
    return;
   }
  break;

  case 2:
   {
    InterfaceStates.videoIdx = 4;
    StartPostVideo("AkellaLogo",1);
    return;
   }
  break;
    }


Мы видим последовательность вывода видео файлов на экран при загрузке игры. Вначале запускается файл PlaylogicLogo из case 0, после файл 1CLogo из case 1, и последним запускается файл AkellaLogo из case 2.

Чтобы вставить свое видео замените название файла на свое в выражении StartPostVideo("название файла",1);

Например, если у вас есть видео файл Zastavka.wmv и вы хотите установить его как видео заставку к игре, и файл всего один, то меняем название в case 0, в коде StartPostVideo("PlaylogicLogo",1); на название своего файла. А case 1 и case 2 стираем, так как они нам не нужны. Запись в файле должна иметь такой вид

Код
void Main_LogoVideo()
{
    
    int i = sti(InterfaceStates.videoIdx);
    switch(i)
    {
  case 0:
   {
    InterfaceStates.videoIdx = 1;
    StartPostVideo("Zastavka",1);
    return;
   }
  break;
    }


Все видео файлы игры хранятся в папке RESOURCE\VIDEOS

Все видео файлы которые вы хотите использовать в игре должны иметь расширения .wmv, например VideoCaseA.wmv.

Оптимальное разрешение для видео 720х576, но если ваше видео 640х480, сойдет и такое.

Стоит рассмотреть и другой вариант. Как добавление своего видео файла в качестве заставки реализовали создатели игры КВС. Вот их решение

Код
void Main_LogoVideo()
{
    int i = sti(InterfaceStates.videoIdx);
    switch(i)
    {
  case 0:
   {
    InterfaceStates.videoIdx = 1;
    //StartPostVideo("PlaylogicLogo",1);
    StartPostVideo("error",1);
    return;
   }
  break;

  case 1:
   {
    InterfaceStates.videoIdx = 2;
    //StartPostVideo("1CLogo",1);
    StartPostVideo("error",1);
    return;
   }
  break;

  case 2:
   {
    InterfaceStates.videoIdx = 4;
    StartPostVideo("WindFreedom",1);
    return;
   }
  break;
    }


Как видите, они отключили запуск видео из case 0 и case 1, а свое вставили в case 2.
ЛисичкаДата: Понедельник, 10.04.2017, 17:58 | Сообщение # 15
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как добавить запись в судовой журнал

Чтобы добавить запись в суровой журнал, вначале, открываем файл quests_texts.txt который находится в папке RESOURCE\INI\texts\russian\questbook и делаем там записи которые после будут отображаться в судовом журнале при вызове его из интерфейса игры

Код
#QUEST    First quest  //обязательно на английском
Заголовок квеста
#TEXT     1
Первая запись в судовой журнал
#TEXT     2
Вторая запись в судовой журнал
#TEXT     3
Третья запись в судовой журнал


Чтобы интегрировать ваши записи сделанные в файле quests_texts.txt в игру в case квеста пишем

Код
SetQuestHeader("First quest");  //добавляет заголовок в судовой журнал

Код
AddQuestRecord("First quest", "1");  //добавляет первую запись


Код
AddQuestRecord("First quest", "2");  //добавляет вторую запись


Код
AddQuestRecord("First quest", "3");  //добавляет  третью запись


Код
CloseQuestHeader("First quest");  //закрывает судовой журнал
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: