Difference between revisions of "PRCSCR Script Templates/ru"
m (Небольшие правки) |
m (Небольшие правки) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
* {{ulink|PRCSCR.xls|PRCSCR-файл.}} | * {{ulink|PRCSCR.xls|PRCSCR-файл.}} | ||
* {{ulink|2DA|Таблицы 2DA}}. | * {{ulink|2DA|Таблицы 2DA}}. | ||
− | * {{ulink|Script| | + | * {{ulink|Script|Работа со скриптами}}. |
{{ExTOC start}} | {{ExTOC start}} | ||
− | {{ExTOC column|Размещение объекта на локации| | + | {{ExTOC column|Размещение объекта на локации|этот скрипт позволяет разместить объект на загружаемой локации.}} |
− | {{ExTOC column|Размещение НПС на локации| | + | {{ExTOC column|Размещение НПС на локации|этот скрипт позволяет разместить НПС на загружаемой локации.}} |
− | {{ExTOC column|Активация локации на карте мира| | + | {{ExTOC column|Активация иконки локации на карте мира|этот скрипт позволяет активировать иконку локации на карте мира.}} |
− | {{ExTOC column|Добавление вещей в инвентарь| | + | {{ExTOC column|Добавление вещей в инвентарь|этот скрипт позволяет добавить любую вещь в инвентарь игрока.}} |
− | {{ExTOC column|Добавление вещей торговцу или в контейнер| | + | {{ExTOC column|Добавление вещей существующему торговцу или в контейнер|этот скрипт позволяет добавлять предметы существующим на локации торговцам или в контейнеры.}} |
− | {{ExTOC column| | + | {{ExTOC column|Добавление активной двери на локацию|этот скрипт добавит дверь, которая может быть использована для перехода игрока на другую локацию.}} |
− | {{ExTOC column| | + | {{ExTOC column|Добавление квеста на доску проповедника|этот скрипт позволяет добавить новое задание на существующую доску проповедника.}} |
{{ExTOC end}} | {{ExTOC end}} | ||
Line 21: | Line 21: | ||
== Размещение объекта на локации == | == Размещение объекта на локации == | ||
− | ''' | + | '''Настройка M2DA:''' |
− | + | ||
# "AreaListName" не может быть "any". Укажите определённую локацию. | # "AreaListName" не может быть "any". Укажите определённую локацию. | ||
# Скопируйте PRCSCR-файл в папку "override" вашего модуля. | # Скопируйте PRCSCR-файл в папку "override" вашего модуля. | ||
Line 68: | Line 67: | ||
== Размещение НПС на локации == | == Размещение НПС на локации == | ||
− | ''' | + | '''Настройка M2DA:''' |
− | + | ||
# "AreaListName" может быть "any". Этот скрипт управляется Plot-флагом. | # "AreaListName" может быть "any". Этот скрипт управляется Plot-флагом. | ||
# # Скопируйте PRCSCR-файл в папку "override" вашего модуля. | # # Скопируйте PRCSCR-файл в папку "override" вашего модуля. | ||
Line 100: | Line 98: | ||
#Замените "lot100ar_lothering" тэгом локации, где НПС должен быть создан. | #Замените "lot100ar_lothering" тэгом локации, где НПС должен быть создан. | ||
#Замените "joblo.utc" на имя файла ресурса вашего {{ulink|Creature|НПС}}. | #Замените "joblo.utc" на имя файла ресурса вашего {{ulink|Creature|НПС}}. | ||
− | #Вычислите и установите координаты появления НПС в переменной "vJobloLocation" и процедуре "CreateObject". Как это сделать | + | #Вычислите и установите координаты появления НПС в переменной "vJobloLocation" и процедуре "CreateObject". Как это сделать рассказано в описании скрипта [[#Размещение объекта на локации|Размещение объекта на локации]]. |
Экспортируйте скрипт, НПС и запустите игру. Когда вы зайдёте на нужную локацию НПС будет уже там. | Экспортируйте скрипт, НПС и запустите игру. Когда вы зайдёте на нужную локацию НПС будет уже там. | ||
− | == Активация локации на карте мира == | + | == Активация иконки локации на карте мира == |
− | ''' | + | '''Требования:''' |
+ | # Ваш модуль должен быть расширением основаной кампании (Single Player). | ||
− | '''M2DA | + | '''Настройка M2DA:''' |
+ | # "AreaListName" может быть "any", так как этот скрипт должен быть универсальным и управляется Plot-флагом. | ||
+ | # Скопируйте PRCSCR-файл в папку "override" вашего модуля. | ||
− | + | '''Скрипт:''' | |
− | + | ||
− | |||
<dascript> | <dascript> | ||
const string WML_WOW_Custom = "eshmeswp"; | const string WML_WOW_Custom = "eshmeswp"; | ||
Line 120: | Line 119: | ||
void main() | void main() | ||
{ | { | ||
+ | // С ПОМОЩЬЮ PLOT-ФЛАГА ПРОВЕРЯЕМ УСЛОВИЕ | ||
if(WR_GetPlotFlag( PLT_MNP000PT_MAIN_EVENTS, ARCHDEMON_EVENT_ONE) == TRUE ) | if(WR_GetPlotFlag( PLT_MNP000PT_MAIN_EVENTS, ARCHDEMON_EVENT_ONE) == TRUE ) | ||
{ | { | ||
+ | // ДЕЛАЕМ ИКОНКУ ЛОКАЦИИ НА КАРТЕ МИРА АКТИВНОЙ | ||
WR_SetWorldMapLocationStatus(GetObjectByTag(WML_WOW_Custom), WM_LOCATION_ACTIVE); | WR_SetWorldMapLocationStatus(GetObjectByTag(WML_WOW_Custom), WM_LOCATION_ACTIVE); | ||
} | } | ||
Line 127: | Line 128: | ||
</dascript> | </dascript> | ||
− | # | + | #Замените в 1-ой строке "eshmeswp" на тэг вашей иконки локации на карте. Эта иконка должна быть серой, неактивной. Подробную информацию о создании иконок на карте мира вы найдёте по {{ulink|Map|этой ссылке}}. |
− | + | Экспортируйте скрипт, карту и запускайте игру. Иконка локации на карте мира станет активной, когда вы покинете Лотеринг, как и многие другие иконки локаций. Это сделано, чтобы соблюдать ход истории, хотя вы конечно можете выбрать и другой момент, для этого: | |
+ | #Выберите {{ulink|Plot|Plot-файл}} с флагом, в зависимость от которого вы хотите поставить активацию иконки. В данном примере это Plot-файл с основными событиями игры и флаг первого кошмара с с Архидемоном. | ||
+ | #Замените название Plot-файла ("mnp000pt_main_events") в скрипте. Не забудьте оставить префикс "plt_". | ||
+ | #Замените флаг ("ARCHDEMON_EVENT_ONE") на флаг, который вы выбрали в новом Plot-файле. | ||
− | + | Данный метод должен работать для любого Plot-файла. | |
− | + | ||
− | + | ||
− | + | Конечно, для активации иконки локации на карте Plot-файлы совсем не обязательны, ведь можно изначально сделать иконку активной, но этот пример и использование Plot-файлов позволяет привязать ваше расширение к основной кампании и сделать его более логичным. Например ГГ не должен попасть в вашу локацию до того, как закончит дела в Лотеринге, так как это повлияет на нить игры. | |
== Добавление вещей в инвентарь == | == Добавление вещей в инвентарь == | ||
− | ''' | + | '''Настройка M2DA:''' |
+ | # "AreaListName" может быть "any". | ||
+ | # Скопируйте PRCSCR-файл в папку "override" вашего модуля. | ||
− | ''' | + | '''Скрипт:''' |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<dascript> | <dascript> | ||
− | // | + | //ПОДКЛЮЧАЕМ utility_h ДЛЯ РАБОТЫ ФУНКЦИИ UT_AddItemToInventory() |
#include "utility_h" | #include "utility_h" | ||
− | // | + | //ПОДКЛЮЧАЕМ ПОЛЬЗОВАТЕЛЬСКИЙ PLOT-ФАЙЛ |
#include "plt_$plot_file_name$" | #include "plt_$plot_file_name$" | ||
void main() | void main() | ||
{ | { | ||
− | // | + | // ЕСЛИ ФЛАГ ИМЕЕТ ИСТИННОЕ ЗНАЧЕНИЕ ТОГДА ПРЕДМЕТ УЖЕ ВЫДАН РАНЕЕ |
− | // | + | // В ОБРАТНОМ СЛУЧАЕ НАДО ЕГО ВЫДАТЬ |
if ( WR_GetPlotFlag( PLT_$plot_file_name$, $check_flag_name$ ) == FALSE ) | if ( WR_GetPlotFlag( PLT_$plot_file_name$, $check_flag_name$ ) == FALSE ) | ||
{ | { | ||
UT_AddItemToInventory(R"$item_file_name$.uti"); | UT_AddItemToInventory(R"$item_file_name$.uti"); | ||
− | // | + | // И УСТАНОВИТЬ ЗНАЧЕНИЕ ФЛАГА КАК ИСТИННОЕ ДЛЯ УКАЗАНИЯ О СОСТОЯВШЕЙСЯ ВЫДАЧЕ ПРЕДМЕТА |
WR_SetPlotFlag( PLT_$plot_file_name$, $check_flag_name$, TRUE ); | WR_SetPlotFlag( PLT_$plot_file_name$, $check_flag_name$, TRUE ); | ||
} | } | ||
} | } | ||
</dascript> | </dascript> | ||
− | # | + | # Замените все имена, заключённые между знаками $ на используемые вами имена. |
− | + | Далее экспортируете скрипт, предмет и запускаете игру. При загрузке первой же локации нужный предмет добавится в инвентарь. | |
− | + | == Добавление вещей существующему торговцу или в контейнер == | |
− | '''M2DA | + | '''Настройка M2DA:''' |
− | {| border=" | + | {| style="border:thin solid grey" cellpadding="3" cellspacing="0" |
− | + | ||
|- | |- | ||
− | | | + | |style="background-color:#EEF;border-bottom:thin solid grey;border-right:thin solid grey"|'''Кампания''' |
+ | |style="background-color:#EEF;border-bottom:thin solid grey;border-right:thin solid grey"|'''Контейнер''' | ||
+ | |style="background-color:#EEF;border-bottom:thin solid grey;border-right:thin solid grey"|'''Тэг контейнера''' | ||
+ | |style="background-color:#EEF;border-bottom:thin solid grey"|'''AreaListName''' | ||
|- | |- | ||
− | | | + | |style="border-bottom:thin solid grey;border-right:thin solid grey"|Начало |
+ | |style="border-bottom:thin solid grey;border-right:thin solid grey"|Бодан | ||
+ | |style="border-bottom:thin solid grey;border-right:thin solid grey"|store_camp_bodahn | ||
+ | |style="border-bottom:thin solid grey"|cam100ar_camp_plains | ||
|- | |- | ||
− | | | + | |style="border-bottom:thin solid grey;border-right:thin solid grey"|Начало |
+ | |style="border-bottom:thin solid grey;border-right:thin solid grey"|Интендант в королевском лагере | ||
+ | |style="border-bottom:thin solid grey;border-right:thin solid grey"|pre100sr_quartermaster | ||
+ | |style="border-bottom:thin solid grey"|pre01al_kings_camp | ||
|- | |- | ||
− | | | + | |style="border-bottom:thin solid grey;border-right:thin solid grey"|Пробуждение |
+ | |style="border-bottom:thin solid grey;border-right:thin solid grey"|Yuriah | ||
+ | |style="border-bottom:thin solid grey;border-right:thin solid grey"|store_vgk100cr_merchant | ||
+ | |style="border-bottom:thin solid grey"|vgk210ar_throne_room | ||
|- | |- | ||
− | | | + | |style="border-bottom:thin solid grey;border-right:thin solid grey"|Пробуждение |
+ | |style="border-bottom:thin solid grey;border-right:thin solid grey"|Сундук отряда в Башне Бдения | ||
+ | |style="border-bottom:thin solid grey;border-right:thin solid grey"|vgk210ip_party_chest | ||
+ | |style="border-bottom:thin solid grey"|vgk210ar_throne_room | ||
+ | |- | ||
+ | |style="border-right:thin solid grey"|Песнь Лелианы | ||
+ | |style="border-right:thin solid grey"|Бонни Лем (первая встреча) | ||
+ | |style="border-right:thin solid grey"|store_lel00cr_lem | ||
+ | |lel100ar_market | ||
|} | |} | ||
− | # | + | # Создайте {{ulink|PRCSCR.xls|файл PRCSCR}} используя представленную выше таблицу. |
− | # | + | # Поместите созданный M2DA-файл в папку "override" вашего модуля. |
− | + | ||
− | + | ||
+ | '''Скрипт:''' | ||
<dascript> | <dascript> | ||
#include "wrappers_h" | #include "wrappers_h" | ||
− | #include "plt_$plot_file_name$" // | + | #include "plt_$plot_file_name$" // ВКЛЮЧАЕМ НУЖНЫЙ PLOT-ФАЙЛ |
void main() | void main() | ||
{ | { | ||
+ | // ПРОВЕРЯЕМ КАКОЕ-НИБУДЬ УСЛОВИЕ И ЕСЛИ ОНО ИСТИННО, ТО ВЫХОДИМ ИЗ ПРОЦЕДУРЫ (return) | ||
if ( WR_GetPlotFlag( PLT_$plot_file_name$, $check_flag_name$ ) == TRUE ) return; | if ( WR_GetPlotFlag( PLT_$plot_file_name$, $check_flag_name$ ) == TRUE ) return; | ||
object oContainer = GetObjectByTag($ContainerTag$); | object oContainer = GetObjectByTag($ContainerTag$); | ||
− | + | // ПРОВЕРИМ КОНТЕЙНЕР, ЕСЛИ ОБЪЕКТ НОРМАЛЬНЫЙ, ТО ДОБАВЛЯЕМ В НЕГО ПРЕДМЕТ | |
if (IsObjectValid(oContainer)) | if (IsObjectValid(oContainer)) | ||
{ | { | ||
− | CreateItemOnObject(R"$resource_name$.uti", oContainer, 1, "", TRUE); // | + | CreateItemOnObject(R"$resource_name$.uti", oContainer, 1, "", TRUE); // ПОВТОРИТЬ НУЖНОЕ КОЛИЧЕСТВО РАЗ |
− | WR_SetPlotFlag( PLT_$plot_file_name$, $check_flag_name$, TRUE ); | + | WR_SetPlotFlag( PLT_$plot_file_name$, $check_flag_name$, TRUE ); // УСТАНОВИТЬ ФЛАГ ДЛЯ БУДУЩЕЙ ПРОВЕРКИ |
} | } | ||
} | } | ||
</dascript> | </dascript> | ||
− | # | + | # Замените "$plot_file_name$" и "$check_flag_name$" на используемые вами имена [[Plot/ru#Скрипты|plot-файла и его флага]]. |
− | # | + | # Замените "$resource_name$" на имя ресурса вашего предмета. |
− | # | + | # Замените "$ContainerTag$" на тэг контейнера (смотри в таблице выше). |
− | + | ||
+ | Далее экспортируете скрипт, предмет и запускаете игру. При загрузке нужной локации выбранный вами предмет добавится указанному торговцу (в иной контейнер). | ||
+ | |||
+ | '''Примечание:''' | ||
+ | При заходе в лагерь отряда в первый раз (после ухода из Лотеринга) и просмотра первоого сна с Архидемоном,это скрипт не сработает (при использовании AreaListName "cam100ar_camp_plains"). Это связано с тем, что локация, используемая для катсцены с Архидемоном, имеет другой AreaListName. Поэтому надо выйти с локации и уже по-нормальному (без катсцены) зайти и скрипт сработает. | ||
− | == | + | == Добавление на локацию двери == |
− | ''' | + | '''Требования:''' |
− | '''M2DA | + | '''настройка M2DA:''' |
− | ''' | + | '''Скрипт:''' {{undocumented}} |
− | == | + | == Добавление квеста на доску проповедника == |
− | ''' | + | '''Требования:''' |
− | '''M2DA | + | '''настройка M2DA:''' |
− | ''' | + | '''Скрипт:''' {{undocumented}} |
{{languages|PRCSCR_Script_Templates}} | {{languages|PRCSCR_Script_Templates}} | ||
− | |||
− | |||
− |
Latest revision as of 01:14, 14 June 2012
Шаблоны скриптов PRCSCR |
Начало / Русская DA Builder Wiki / Поделиться ВКонтакте
|
На этой странице собираются скрипты, готовые к использованию в системе PRCSCR в сочетании с M2DA-файлом PRCSCR.
Ссылки:
Содержание:
- Размещение объекта на локации | - этот скрипт позволяет разместить объект на загружаемой локации. |
- Размещение НПС на локации | - этот скрипт позволяет разместить НПС на загружаемой локации. |
- Активация иконки локации на карте мира | - этот скрипт позволяет активировать иконку локации на карте мира. |
- Добавление вещей в инвентарь | - этот скрипт позволяет добавить любую вещь в инвентарь игрока. |
- Добавление вещей существующему торговцу или в контейнер | - этот скрипт позволяет добавлять предметы существующим на локации торговцам или в контейнеры. |
- Добавление активной двери на локацию | - этот скрипт добавит дверь, которая может быть использована для перехода игрока на другую локацию. |
- Добавление квеста на доску проповедника | - этот скрипт позволяет добавить новое задание на существующую доску проповедника. |
Размещение объекта на локации
Настройка M2DA:
- "AreaListName" не может быть "any". Укажите определённую локацию.
- Скопируйте PRCSCR-файл в папку "override" вашего модуля.
Скрипт: (пример взят из мода "Storage Chest", созданного одним из сотрудников Bioware)
const string TAL_IP_STORAGE_CHEST = "tal_ip_storage_chest"; const resource TAL_RESOURCE_IP_STORAGE_CHEST = R"tal_ip_storage_chest.utp"; void main() { object oMainControlled = GetMainControlled(); // ПРОВЕРЯЕМ, ЕСТЬ ЛИ В ЛОКАЦИИ ОБЪЕКТ С ТАКИМ ТЕГОМ object oChest = UT_GetNearestObjectByTag(oMainControlled, TAL_IP_STORAGE_CHEST); //DisplayFloatyMessage(oMainControlled, "Storage script working", FLOATY_MESSAGE, 16777215, 30.0); // ЕСЛИ ТАКОГО ОБЪЕКТА ЕЩЁ НЕТ, ТО СОЗДАЁМ ЕГО if (!IsObjectValid(oChest)) { location lSpawn = Location(GetArea(oMainControlled), Vector(148.77, 117.68, -0.94), 0.0); CreateObject(OBJECT_TYPE_PLACEABLE, TAL_RESOURCE_IP_STORAGE_CHEST, lSpawn); //DisplayFloatyMessage(oMainControlled, "Storage script working", FLOATY_MESSAGE, 16777215, 30.0); } }
- Замените "tal_ip_storage_chest" в 1-й строке на тэг объекта, который вы хотите разместить (обязательно в нижнем регистре).
- Замените "tal_ip_storage_chest.utp" во 2-й строке на имя файла вашего объекта.
- В 13-ой строке укажите координаты, по которым будет размещён объект. Как определить координаты? В следующем пункте.
- Создайте временный дубликат локации (можете и в оригинале сделать, но не сохраняйте изменения) и поместите объект в нужное место (впоследствии не экспортируйте изменённую локацию).
- В инспекторе свойств объекта найдите свойство "Position". Это координаты позиции объекта, замените на них числа в скобках за словом "Vector".
- В инспекторе свойств объекта найдите свойство "Rotation" (вращение). Это свойство определяет то, куда объект направлен своим фэйсом. На значение этого свойства поменяйте третий аргумент процедуры "Location". Правда перед его указанием в скрипте это свойство надо пересчитать (kelamor - не понял как). For positive angles do (180-angle). For negative angles do (-180-(-angle)).
Далее экспортируете скрипт, объект и запускаете игру. Когда вы войдёте в локацию, с которой ассоциируете этот скрипт, ваш объект появится в нужном месте.
Примечание:
- Данный метод позволяет избежать дублирования объектов на локации с помощью функции "IsObjectValid". Такого же результат можно добиться и с помощью Plot-файла.
- Если база не русифицирована, то удалите из скрипта русские примечания.
- Для проверки работы скрипта можно раскомментировать строки с функцией "DisplayFloatyMessage". Тогда скрипт сообщит вам при срабатывании - "Storage script working", и при создании объекта - "Storage script working".
- При указании числовых значений в функции "Location" обязательно указывайте с точностью до сотых и обязательно с точкой. Если в инспекторе объекта целое число, то добавьте к нему ".00".
Размещение НПС на локации
Настройка M2DA:
- "AreaListName" может быть "any". Этот скрипт управляется Plot-флагом.
- # Скопируйте PRCSCR-файл в папку "override" вашего модуля.
Скрипт:
// ЭТО НАЗВАНИЕ Plot-ФАЙЛА "joblos_quest" С УКАЗАНИЕМ СПЕЦИАЛЬНОГО ПРЕФИКСА "plt_". // УКАЗАНИЕ ПРЕФИКСА ОБЯЗАТЕЛЬНО ДЛЯ ТОГО, ЧТОБЫ ИГРА СМОГЛА ОБРАЩАТЬСЯ К ФЛАГАМ Plot-ФАЙЛА КАК К КОНСТАНТАМ. #include "plt_joblos_quest" #include "wrappers_h" void main() { // ПРОВЕРЯЕМ ФЛАГ И ВЫЯСНЯЕМ, НЕ ПОМЕЩЁН ЛИ Joblo НА ЛОКАЦИЮ ПРИ ПРЕДЫДУЩИХ ЗАХОДАХ if (WR_GetPlotFlag(PLT_JOBLOS_QUEST, JOBLO_ADDED_TO_TOWN) == FALSE) { object oTown = GetObjectByTag("lot100ar_lothering"); //ТЭГ ЛОКАЦИИ ИДЕНТИЧЕН НАИМЕНОВАНИЮ ЕЁ РЕСУРСА. vector vJobloLocation = Vector(126.745f, 120.724f, 0.460568f); CreateObject(OBJECT_TYPE_CREATURE, R"joblo.utc", Location(oTown, vJobloLocation, 180.0f)); WR_SetPlotFlag("joblos_quest", JOBLO_ADDED_TO_TOWN, TRUE); } }
- Замените "joblos_quest" на название вашего Plot-файла.
- Замените "JOBLO_ADDED_TO_TOWN" на название флага, определяющего, что НПС уже создан на локации.
- Замените "lot100ar_lothering" тэгом локации, где НПС должен быть создан.
- Замените "joblo.utc" на имя файла ресурса вашего НПС (en).
- Вычислите и установите координаты появления НПС в переменной "vJobloLocation" и процедуре "CreateObject". Как это сделать рассказано в описании скрипта Размещение объекта на локации.
Экспортируйте скрипт, НПС и запустите игру. Когда вы зайдёте на нужную локацию НПС будет уже там.
Активация иконки локации на карте мира
Требования:
- Ваш модуль должен быть расширением основаной кампании (Single Player).
Настройка M2DA:
- "AreaListName" может быть "any", так как этот скрипт должен быть универсальным и управляется Plot-флагом.
- Скопируйте PRCSCR-файл в папку "override" вашего модуля.
Скрипт:
const string WML_WOW_Custom = "eshmeswp"; #include "plt_mnp000pt_main_events" #include "wrappers_h" void main() { // С ПОМОЩЬЮ PLOT-ФЛАГА ПРОВЕРЯЕМ УСЛОВИЕ if(WR_GetPlotFlag( PLT_MNP000PT_MAIN_EVENTS, ARCHDEMON_EVENT_ONE) == TRUE ) { // ДЕЛАЕМ ИКОНКУ ЛОКАЦИИ НА КАРТЕ МИРА АКТИВНОЙ WR_SetWorldMapLocationStatus(GetObjectByTag(WML_WOW_Custom), WM_LOCATION_ACTIVE); } }
- Замените в 1-ой строке "eshmeswp" на тэг вашей иконки локации на карте. Эта иконка должна быть серой, неактивной. Подробную информацию о создании иконок на карте мира вы найдёте по этой ссылке (en).
Экспортируйте скрипт, карту и запускайте игру. Иконка локации на карте мира станет активной, когда вы покинете Лотеринг, как и многие другие иконки локаций. Это сделано, чтобы соблюдать ход истории, хотя вы конечно можете выбрать и другой момент, для этого:
- Выберите Plot-файл с флагом, в зависимость от которого вы хотите поставить активацию иконки. В данном примере это Plot-файл с основными событиями игры и флаг первого кошмара с с Архидемоном.
- Замените название Plot-файла ("mnp000pt_main_events") в скрипте. Не забудьте оставить префикс "plt_".
- Замените флаг ("ARCHDEMON_EVENT_ONE") на флаг, который вы выбрали в новом Plot-файле.
Данный метод должен работать для любого Plot-файла.
Конечно, для активации иконки локации на карте Plot-файлы совсем не обязательны, ведь можно изначально сделать иконку активной, но этот пример и использование Plot-файлов позволяет привязать ваше расширение к основной кампании и сделать его более логичным. Например ГГ не должен попасть в вашу локацию до того, как закончит дела в Лотеринге, так как это повлияет на нить игры.
Добавление вещей в инвентарь
Настройка M2DA:
- "AreaListName" может быть "any".
- Скопируйте PRCSCR-файл в папку "override" вашего модуля.
Скрипт:
//ПОДКЛЮЧАЕМ utility_h ДЛЯ РАБОТЫ ФУНКЦИИ UT_AddItemToInventory() #include "utility_h" //ПОДКЛЮЧАЕМ ПОЛЬЗОВАТЕЛЬСКИЙ PLOT-ФАЙЛ #include "plt_$plot_file_name$" void main() { // ЕСЛИ ФЛАГ ИМЕЕТ ИСТИННОЕ ЗНАЧЕНИЕ ТОГДА ПРЕДМЕТ УЖЕ ВЫДАН РАНЕЕ // В ОБРАТНОМ СЛУЧАЕ НАДО ЕГО ВЫДАТЬ if ( WR_GetPlotFlag( PLT_$plot_file_name$, $check_flag_name$ ) == FALSE ) { UT_AddItemToInventory(R"$item_file_name$.uti"); // И УСТАНОВИТЬ ЗНАЧЕНИЕ ФЛАГА КАК ИСТИННОЕ ДЛЯ УКАЗАНИЯ О СОСТОЯВШЕЙСЯ ВЫДАЧЕ ПРЕДМЕТА WR_SetPlotFlag( PLT_$plot_file_name$, $check_flag_name$, TRUE ); } }
- Замените все имена, заключённые между знаками $ на используемые вами имена.
Далее экспортируете скрипт, предмет и запускаете игру. При загрузке первой же локации нужный предмет добавится в инвентарь.
Добавление вещей существующему торговцу или в контейнер
Настройка M2DA:
Кампания | Контейнер | Тэг контейнера | AreaListName |
Начало | Бодан | store_camp_bodahn | cam100ar_camp_plains |
Начало | Интендант в королевском лагере | pre100sr_quartermaster | pre01al_kings_camp |
Пробуждение | Yuriah | store_vgk100cr_merchant | vgk210ar_throne_room |
Пробуждение | Сундук отряда в Башне Бдения | vgk210ip_party_chest | vgk210ar_throne_room |
Песнь Лелианы | Бонни Лем (первая встреча) | store_lel00cr_lem | lel100ar_market |
- Создайте файл PRCSCR используя представленную выше таблицу.
- Поместите созданный M2DA-файл в папку "override" вашего модуля.
Скрипт:
#include "wrappers_h" #include "plt_$plot_file_name$" // ВКЛЮЧАЕМ НУЖНЫЙ PLOT-ФАЙЛ void main() { // ПРОВЕРЯЕМ КАКОЕ-НИБУДЬ УСЛОВИЕ И ЕСЛИ ОНО ИСТИННО, ТО ВЫХОДИМ ИЗ ПРОЦЕДУРЫ (return) if ( WR_GetPlotFlag( PLT_$plot_file_name$, $check_flag_name$ ) == TRUE ) return; object oContainer = GetObjectByTag($ContainerTag$); // ПРОВЕРИМ КОНТЕЙНЕР, ЕСЛИ ОБЪЕКТ НОРМАЛЬНЫЙ, ТО ДОБАВЛЯЕМ В НЕГО ПРЕДМЕТ if (IsObjectValid(oContainer)) { CreateItemOnObject(R"$resource_name$.uti", oContainer, 1, "", TRUE); // ПОВТОРИТЬ НУЖНОЕ КОЛИЧЕСТВО РАЗ WR_SetPlotFlag( PLT_$plot_file_name$, $check_flag_name$, TRUE ); // УСТАНОВИТЬ ФЛАГ ДЛЯ БУДУЩЕЙ ПРОВЕРКИ } }
- Замените "$plot_file_name$" и "$check_flag_name$" на используемые вами имена plot-файла и его флага.
- Замените "$resource_name$" на имя ресурса вашего предмета.
- Замените "$ContainerTag$" на тэг контейнера (смотри в таблице выше).
Далее экспортируете скрипт, предмет и запускаете игру. При загрузке нужной локации выбранный вами предмет добавится указанному торговцу (в иной контейнер).
Примечание: При заходе в лагерь отряда в первый раз (после ухода из Лотеринга) и просмотра первоого сна с Архидемоном,это скрипт не сработает (при использовании AreaListName "cam100ar_camp_plains"). Это связано с тем, что локация, используемая для катсцены с Архидемоном, имеет другой AreaListName. Поэтому надо выйти с локации и уже по-нормальному (без катсцены) зайти и скрипт сработает.
Добавление на локацию двери
Требования:
настройка M2DA:
Скрипт: [Undocumented]
Добавление квеста на доску проповедника
Требования:
настройка M2DA:
Скрипт: [Undocumented]
Язык: | English • русский |
---|