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

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

Код
PlayStereoSound("notebook");


Выглядеть в case квеста это будет так

Код
SetQuestHeader("First quest"); AddQuestRecord("First quest", "1");
PlayStereoSound("notebook");


Также вы можете добавить всплывающее надпись которая будет появляться на экране. Тогда это будет писаться так

Код
SetQuestHeader("First quest"); AddQuestRecord("First quest", "1");
PlayStereoSound("notebook");
Log_SetStringToLog("добавлена запись в СЖ");
ЛисичкаДата: Понедельник, 10.04.2017, 18:01 | Сообщение # 17
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как поместить/удалить НПС в/из локации

Если у вас есть НПС и вам необходимо поместить/удалить его в/из нужную вам локацию, вы можете использовать такой код

Код
ChangeCharacterAddressGroup(CharacterFromID("ID НПС"), "локация", "группа локаторов", "локатор");  //поместить НПС в локацию

ChangeCharacterAddressGroup(CharacterFromID("ID НПС"), "None", "", "");  //удалить НПС из локации


Например, у вас есть НПС с ID Commendant и вам нужно чтобы он стоял за воротами города Гваделупа, пишем такой код

Код
ChangeCharacterAddressGroup(CharacterFromID("Commendant"),"Exit_Guadeloupe", "goto", "goto17");


Если вы хотите удалить своего НПС из локации или из игры, то пишете такой код

Код
ChangeCharacterAddressGroup(CharacterFromID("Commendant"), "None", "", "");
ЛисичкаДата: Понедельник, 10.04.2017, 18:02 | Сообщение # 18
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как дать/лишить бессмертия НПС

Вам необходимо дать/лишить бессмертия НПС. Для этого пишем такой код

Код
LAi_SetImmortal(CharacterFromID("ID НПС"), true);  //дать бессмертие НПС

LAi_SetImmortal(CharacterFromID("ID НПС"), false);  //лишить НПС бессмертия


Допустим, что у вас есть НПС с ID Pirate и вы хотите сделать его бессмертным, тогда пишем так

Код
LAi_SetImmortal(CharacterFromID("Pirate"), true);


Если вы хотите лишить вашего НПС бессмертия, тогда пишем так

Код
LAi_SetImmortal(CharacterFromID("Pirate"), false);
ЛисичкаДата: Понедельник, 10.04.2017, 18:04 | Сообщение # 19
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как посадить НПС за стол в таверне посредством LAi_ActorSetSitMode

Этот способ применим если НПС не только будет сидеть в таверне, но и в дальнейшем его вы собираетесь использовать в других локациях

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

Код
ChangeCharacterAddressGroup(CharacterFromID("ID НПС"), "локация", "группа локаторов", "локатор");
LAi_SetActorType(CharacterFromID("ID НПС"));
LAi_ActorSetSitMode(characterFromID("ID НПС"));


Допустим у вас есть НПС с ID Pirate и вы хотите посадить его за стол в таверне, в Гваделупе. Вначале переносим НПС в таверну

Код
ChangeCharacterAddressGroup(CharacterFromID("Pirate"),"Guadeloupe_tavern", "sit", "sit5");


Присваиваем НПС тип «актер»

Код
LAi_SetActorType(CharacterFromID("Pirate"));


Затем устанавливаем «актеру» образ поведения – сидеть

Код
LAi_ActorSetSitMode(characterFromID("Pirate"));


Таким образом можно посадить НПС и на лавку в церкви или за стол губернатора.
ЛисичкаДата: Понедельник, 10.04.2017, 18:05 | Сообщение # 20
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как посадить НПС за стол в таверне через файл StoryCharacters.с

Этот способ применим если ваш НПС будет находится в таверне постоянно и вы не будете дергать его из локации в локацию. Например, как губернатор, тот постоянно сидит за столом.

Допустим у вас есть НПС, мужчина, пират, по имени Джон Браун, с ID Pirate , и вам нужно, чтобы он постоянно сидел в таверне, на острове Исла Мона. Открываем файл StoryCharacters.с в папке PROGRAM\characters\init и описываем там характеристики вашего НПС

Код
makeref(ch,Characters[n]);
ch.id = "Pirate";
ch.name = "Джон";
ch.lastname = "Браун";
ch.model = "pirate_1";
ch.location = "IslaMona_tavern"  //локация, таверна на Исла Моне
ch.location.group = "sit";  //группа локаторов
ch.location.locator = "sit4";  //локатор
ch.Dialog.Filename = "";
ch.sex = "man";
LAi_SetImmortal(ch, true)
Lai_SetSitType(ch);  //установить тип - сидит
n = n + 1;


Теперь ваш НПС будет постоянно находится в таверне Исла Моны на все время игры, если вы его сами не уберете оттуда кодом

Код
ChangeCharacterAddress(characterFromID("Pirate"), "None", "");
ЛисичкаДата: Понедельник, 10.04.2017, 18:12 | Сообщение # 21
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как перенести главного героя из одной локации в другую

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

Код
DoQuestReloadToLocation("локация", "группа локаторов", "локатор", "case квеста который должен быть запущен");


Например, по развитию сюжета вашего квеста вам надо перенести главного героя в комнату, в таверне, в Гваделупе. Допустим, там должна произойти встреча. Пишем так

Код
DoQuestReloadToLocation("Guadeloupe_tavern_upstairs", "goto", "goto1", "meeting_1");


После выполнения этого кода запуститься case "meeting"

В кодировке квеста это будет выглядеть так
Код
case "meeting_0":
DoQuestReloadToLocation("Guadeloupe_tavern_upstairs", "goto", "goto1", "meeting_1");
break;

case "meeting_1":

break;
ЛисичкаДата: Понедельник, 10.04.2017, 18:14 | Сообщение # 22
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как заставить НПС отправиться из одного локатора в другой, а потом исчезнуть

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

Код
LAi_ActorRunToLocation(CharacterFromID("ID НПС"), "группа локаторов", "локатор - куда бежит", "none - исчезновение", "группа локаторов", "локатор - откуда бежит", "", 10.0);


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

В case "run_1" квеста ставим НПС в городе Невис

Код

case "run_1":
ChangeCharacterAddressGroup(CharacterFromID("Pirate"), "Nevis_town", "goto", "goto1");
break;


В следующем case "run_2" квеста устанавливаем НПС по типу как «актер». Далее пишем код LAi_ActorRunToLocation после выполнения которого НПС бежит к двери таверны и добежав до нее исчезает.

Код

case "run_2":
LAi_SetActorType(CharacterFromID("Pirate"));
        LAi_ActorRunToLocation(CharacterFromID("Pirate"), "reload", "reload4", "none", "goto", "goto1", "", 10.0);
break;
ЛисичкаДата: Понедельник, 10.04.2017, 18:15 | Сообщение # 23
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как сделать эффект затемнения экрана при переходе из одного case квеста в другой

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

Код
LAi_Fade("название квеста", "");


Когда этот код будет выполнен, экран станет черным, а потом появится изображение уже при выполнении указанного case квеста

Например, после выполнения case quest_1 квеста, должен погаснуть экран, а потом сразу запуститься case quest_2. Пишем это так

Код
case "quest_1":
LAi_Fade("quest_2", "")
break;

case "quest_2":

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

Может понадобится задержать выполнение следующего case квеста. Сделать это можно таким кодом

Код
DoQuestCheckDelay("название case квеста", время в секундах);


Например, вы хотите чтобы case "story" квеста был выполнен с задержкой в пять секунд. Пишем этот код так

Код
DoQuestCheckDelay("story", 5.0);
ЛисичкаДата: Понедельник, 10.04.2017, 18:18 | Сообщение # 25
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как объединить нескольких НПС в группу

Если вам нужно чтобы несколько НПС напали на главного героя, проще объединить их в группу, чтобы не писать коды боя для каждого из НПС в отдельности. Чтобы добавить НПС в группу используем код

Код
LAi_group_MoveCharacter(CharacterFromID("ID НПС"), "название группы");


Допустим, у вас есть три НПС с ID PirateA, PirateB, PirateC соответственно. И вы хотите объединить их в группу PIRATES_KILL. Пишем это так

Код
LAi_group_MoveCharacter(CharacterFromID("PirateA"), "PIRATES_KILL");
  LAi_group_MoveCharacter(CharacterFromID("PirateB"), "PIRATES_KILL");
  LAi_group_MoveCharacter(CharacterFromID("PirateC"), "PIRATES_KILL");
ЛисичкаДата: Понедельник, 10.04.2017, 18:20 | Сообщение # 26
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как переместить НПС в локацию к главному герою без указания локации

Если вам надо переместить НПС в локацию к главному герою без указания локации в коде, то можно использовать такой код

Код
ChangeCharacterAddressGroup(CharacterFromID("ID НПС"), PChar.location, "группа локаторов", "локатор");


Например, ваш герой находится в городе Гваделупа и вы хотите перенести ваш НПС с ID Pirate туда же. Пишите такой код.

Код
ChangeCharacterAddressGroup(CharacterFromID("Pirate"), PChar.location, "goto", "goto14");


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

Например, вам понадобилось чтобы несколько НПС напали на главного героя. У вас есть три НПС с ID PirateA, PirateB, PirateC соответственно и они находятся в одной локации с главным героем. Чтобы они напали на него сделаем так

1. Установим каждому НПС тип «воин»

Код
LAi_SetWarriorType(CharacterFromID("PirateA"));
LAi_SetWarriorType(CharacterFromID("PirateB"));
LAi_SetWarriorType(CharacterFromID("PirateC"));


2. Объединим всех НПС в одну группу, например RAZBOY

Код
LAi_group_MoveCharacter(CharacterFromID("PirateA"), "RAZBOY");
LAi_group_MoveCharacter(CharacterFromID("PirateB"), "RAZBOY");
LAi_group_MoveCharacter(CharacterFromID("PirateC"), "RAZBOY");


3. Установим отношение между группой НПС и главным героем. В нашем случае отношения враждебные

Код
LAi_group_SetRelation("RAZBOY", LAI_GROUP_PLAYER, LAI_GROUP_ENEMY);


4. Укажем что группа НПС действительно нападает на главного героя

Код
LAi_group_FightGroups("RAZBOY", LAI_GROUP_PLAYER, true);
ЛисичкаДата: Понедельник, 10.04.2017, 18:23 | Сообщение # 28
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как сделать чтобы один НПС напал на главного героя

Например вам понадобилось, чтобы после беседы или просто так, один НПС с ID Pirate напал на главного героя. Делаем это так

1. Установим вашему НПС тип «воин»

Код
LAi_SetWarriorType(CharacterFromID("Pirate"));


2. Присвоим НПС какую–нибудь группу, например RAZBOY

Код
LAi_group_MoveCharacter(CharacterFromID("Pirate"), "RAZBOY");


3. Установим отношение между группой в которую мы поставили НПС и главным героем. В нашем случае отношения враждебные

Код
LAi_group_SetRelation("RAZBOY", LAI_GROUP_PLAYER, LAI_GROUP_ENEMY);


4. Укажем что группа в которой есть ваш НПС действительно нападает на главного героя

Код
LAi_group_FightGroups("RAZBOY", LAI_GROUP_PLAYER, true);
ЛисичкаДата: Понедельник, 10.04.2017, 18:24 | Сообщение # 29
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как сделать чтобы группа НПС напала на главного героя у которого есть своя группа НПС

Допустим, стоит такая задача. Надо сделать, чтобы несколько враждебных НПС напали на главного героя, которого сопровождают его НПС. Пусть НПС которые нападают имеют ID PirateA, PirateB, PirateC соответственно, а НПС которые сопровождают главного героя имеют ID FriendA, FriendB и FriendC. И чтобы они напали друг на друга сделаем так

1. Установим НПС враждебным и тем, которые с главным героем, тип «воин»

Код

//враждебные НПС
LAi_SetWarriorType(CharacterFromID("PirateA"));
LAi_SetWarriorType(CharacterFromID("PirateB"));
LAi_SetWarriorType(CharacterFromID("PirateC"));

//НПС главного героя
LAi_SetWarriorType(CharacterFromID("FriendA"));
LAi_SetWarriorType(CharacterFromID("FriendB"));
LAi_SetWarriorType(CharacterFromID("FriendC"));[


2. Объединим враждебных НПС в группу RAZBOY, а НПС которые с главным героем, включим в группу главного героя

Код

//враждебные НПС
LAi_group_MoveCharacter(CharacterFromID("PirateA"), "RAZBOY");
LAi_group_MoveCharacter(CharacterFromID("PirateB"), "RAZBOY");
LAi_group_MoveCharacter(CharacterFromID("PirateC"), "RAZBOY");

//НПС главного героя
LAi_group_MoveCharacter(CharacterFromID("FriendA"), LAI_GROUP_PLAYER);
LAi_group_MoveCharacter(CharacterFromID("FriendB"), LAI_GROUP_PLAYER);
LAi_group_MoveCharacter(CharacterFromID("FriendC"), LAI_GROUP_PLAYER);


3. Установим отношение между группой враждебных НПС и группой НПС главного героя. В нашем случае отношения враждебные

Код
LAi_group_SetRelation("RAZBOY", LAI_GROUP_PLAYER, LAI_GROUP_ENEMY);


4. Укажем что группа враждебных НПС действительно нападает на группу НПС главного героя

Код
LAi_group_FightGroups("RAZBOY", LAI_GROUP_PLAYER, true);
ЛисичкаДата: Понедельник, 10.04.2017, 18:26 | Сообщение # 30
Ветеран
Сообщений: 537
Награды: 8
Репутация: 8
Статус: Offline
Как закрыть/открыть все порты для корабля главного героя

Вам может понадобится закрыть/открыть все порты для корабля главного героя разом. Делаем это так

Чтобы закрыть все порты для корабля главного героя пишем

Код
CloseAllIslandsPorts(true);


Чтобы открыть все порты для корабля главного героя пишем так

Код
CloseAllIslandsPorts(false);
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск: