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);
|
|
| |