Difference between revisions of "PRCSCR Script Templates/ru"

From Dragon Age Toolset Wiki
Jump to: navigation, search
m (Небольшие правки)
m (Перевод)
Line 100: Line 100:
 
#Замените "lot100ar_lothering" тэгом локации, где НПС должен быть создан.
 
#Замените "lot100ar_lothering" тэгом локации, где НПС должен быть создан.
 
#Замените "joblo.utc" на имя файла ресурса вашего {{ulink|Creature|НПС}}.
 
#Замените "joblo.utc" на имя файла ресурса вашего {{ulink|Creature|НПС}}.
#Вычислите и установите координаты появления НПС в переменной "vJobloLocation" и процедуре "CreateObject". Как это сделать расскано в описании скрипта [[#Размещение объекта на локации|Размещение объекта на локации]].
+
#Вычислите и установите координаты появления НПС в переменной "vJobloLocation" и процедуре "CreateObject". Как это сделать рассказано в описании скрипта [[#Размещение объекта на локации|Размещение объекта на локации]].
  
 
Экспортируйте скрипт, НПС и запустите игру. Когда вы зайдёте на нужную локацию НПС будет уже там.
 
Экспортируйте скрипт, НПС и запустите игру. Когда вы зайдёте на нужную локацию НПС будет уже там.
Line 106: Line 106:
 
== Активация локации на карте мира ==
 
== Активация локации на карте мира ==
  
'''Requirements:''' Your module must extend Single Player.  
+
'''Требования:'''  
 +
# Ваш модуль должен быть расширением основаной кампании (Single Player).
  
'''M2DA Setup:'''
+
'''Требования к PRCSCR-файлу:'''
  
#AreaListName must be "any". Because Waypoint activation should be universal and it is Plot driven.
+
# "AreaListName" может быть "any". так как этот скрипт должен быть универсальным и управляется Plot-флагом.
#Copy the GDA into your modules override folder.
+
# Скопируйте PRCSCR-файл в папку "override" вашего модуля.
  
 
'''Script:'''
 
'''Script:'''
Line 120: Line 121:
 
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 130:
 
</dascript>
 
</dascript>
  
#Replace "eshmeswp" in the 1st line with the "Tag" of your Waypoint (Map Pin) which u created. That Map Pin can be greyed out or inactive or so. Map Pin information can be found at: [[Map]].
+
#Замените в 1-ой строке "eshmeswp" на тэг вашей иконки локации на карте. Эта иконка должна быть серой, неактивной. Подробную информацию о создании иконок на карте мира вы найдёте по {{ulink|Map|этой ссылке}}.
  
Export the script, the Map ,and start the game. The Waypoint will now be activated once you leave Lothering, just like the other main Waypoints. This is to get in line with the Story. However to change the time of it happening..
+
Экспортируйте скрипт, карту и запускайте игру. Иконка локации на карте мира станет активной, когда вы покинете Лотеринг, как и многие другие иконки локаций. Это сделано, чтобы соблюдать ход истории, хотя вы конечно можете выбрать и другой момент, для этого:
 +
#Выберите {{ulink|Plot|Plot-файл}} с флагом, в зависимость от которого вы хотите поставить активацию иконки. В данном примере это Plot-файл с основными событиями игры и флаг первого кошмара с с Архидемоном.
 +
#Замените название Plot-файла ("mnp000pt_main_events") в скрипте. Не забудьте оставить префикс "plt_".
 +
#Замените флаг ("ARCHDEMON_EVENT_ONE") на флаг, который вы выбрали в новом Plot-файле.
  
#Choose which [[Plot]] should activate the Waypoint. The above example uses the Archdemon quest, when your nightmare triggers for example.
+
Данный метод должен работать для любого Plot-файла.  
#Exchange "mnp000pt_main_events" in the 2nd and 6th line with the name of that other [[Plot]]. Leaving the "plt_" there.
+
#Exchange "ARCHDEMON_EVENT_ONE" with a "Flag" of your choice from that Plot.
+
  
This "should" work for any plot. Actually, waypoints dont need all this PRCSCR stuff and can be set "Active" in the first place. But the above example is to get in line with the Main Campaign, and potential gamebreaking Plot conflicts if able to leave Lothering too early.
+
Конечно, для активации иконки локации на карте Plot-файлы совсем не обязательны, ведь можно изначально сделать иконку активной, но этот пример и использование Plot-файлов позволяет привязать ваше расширение к основной кампании и сделать его более логичным. Например ГГ не должен попасть в вашу локацию до того, как закончит дела в Лотеринге, так как это повлияет на нить игры.  
  
 
== Добавление вещей в инвентарь ==
 
== Добавление вещей в инвентарь ==

Revision as of 08:43, 4 June 2012

Шаблоны скриптов PRCSCR
Начало / Русская DA Builder Wiki / Поделиться ВКонтакте

На этой странице собираются скрипты, готовые к использованию в системе PRCSCR в сочетании с M2DA-файлом PRCSCR.

Ссылки:


Содержание:

- Размещение объекта на локации - Этот скрипт позволяет разместить объект на загружаемой локации.
- Размещение НПС на локации - Этот скрипт позволяет разместить НПС на загружаемой локации.
- Активация локации на карте мира - Этот скрипт позволяет активировать иконку локации на карте мира.
- Добавление вещей в инвентарь - Этот скрипт позволяет добавить любую вещь в инвентарь игрока.
- Добавление вещей торговцу или в контейнер - Этот скрипт позволяет добавлять предметы существующим на локации торговцам или в контейнеры.
- Adding a Working Door into an existing Area - This Script serves to add a custom Door into a existing Area, that the Player can enter into a custom Area.
- Adding a Quest to an existing Chanters Board - This Script serves to add a new Quest to a existing Chanters Board, at any chosen time into the Game.


Размещение объекта на локации

Требования к PRCSCR-файлу:

  1. "AreaListName" не может быть "any". Укажите определённую локацию.
  2. Скопируйте 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);
    }
}
  1. Замените "tal_ip_storage_chest" в 1-й строке на тэг объекта, который вы хотите разместить (обязательно в нижнем регистре).
  2. Замените "tal_ip_storage_chest.utp" во 2-й строке на имя файла вашего объекта.
  3. В 13-ой строке укажите координаты, по которым будет размещён объект. Как определить координаты? В следующем пункте.
  4. Создайте временный дубликат локации (можете и в оригинале сделать, но не сохраняйте изменения) и поместите объект в нужное место (впоследствии не экспортируйте изменённую локацию).
  5. В инспекторе свойств объекта найдите свойство "Position". Это координаты позиции объекта, замените на них числа в скобках за словом "Vector".
  6. В инспекторе свойств объекта найдите свойство "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".

Размещение НПС на локации

Требования к PRCSCR-файлу:

  1. "AreaListName" может быть "any". Этот скрипт управляется Plot-флагом.
  2. # Скопируйте 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);
    }
}
  1. Замените "joblos_quest" на название вашего Plot-файла.
  2. Замените "JOBLO_ADDED_TO_TOWN" на название флага, определяющего, что НПС уже создан на локации.
  3. Замените "lot100ar_lothering" тэгом локации, где НПС должен быть создан.
  4. Замените "joblo.utc" на имя файла ресурса вашего НПС (en).
  5. Вычислите и установите координаты появления НПС в переменной "vJobloLocation" и процедуре "CreateObject". Как это сделать рассказано в описании скрипта Размещение объекта на локации.

Экспортируйте скрипт, НПС и запустите игру. Когда вы зайдёте на нужную локацию НПС будет уже там.

Активация локации на карте мира

Требования:

  1. Ваш модуль должен быть расширением основаной кампании (Single Player).

Требования к PRCSCR-файлу:

  1. "AreaListName" может быть "any". так как этот скрипт должен быть универсальным и управляется Plot-флагом.
  2. Скопируйте PRCSCR-файл в папку "override" вашего модуля.

Script:

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. Замените в 1-ой строке "eshmeswp" на тэг вашей иконки локации на карте. Эта иконка должна быть серой, неактивной. Подробную информацию о создании иконок на карте мира вы найдёте по этой ссылке (en).

Экспортируйте скрипт, карту и запускайте игру. Иконка локации на карте мира станет активной, когда вы покинете Лотеринг, как и многие другие иконки локаций. Это сделано, чтобы соблюдать ход истории, хотя вы конечно можете выбрать и другой момент, для этого:

  1. Выберите Plot-файл с флагом, в зависимость от которого вы хотите поставить активацию иконки. В данном примере это Plot-файл с основными событиями игры и флаг первого кошмара с с Архидемоном.
  2. Замените название Plot-файла ("mnp000pt_main_events") в скрипте. Не забудьте оставить префикс "plt_".
  3. Замените флаг ("ARCHDEMON_EVENT_ONE") на флаг, который вы выбрали в новом Plot-файле.

Данный метод должен работать для любого Plot-файла.

Конечно, для активации иконки локации на карте Plot-файлы совсем не обязательны, ведь можно изначально сделать иконку активной, но этот пример и использование Plot-файлов позволяет привязать ваше расширение к основной кампании и сделать его более логичным. Например ГГ не должен попасть в вашу локацию до того, как закончит дела в Лотеринге, так как это повлияет на нить игры.

Добавление вещей в инвентарь

Requirements:

M2DA Setup:

  1. AreaListName is "any".
  2. Copy the GDA into your modules override folder.

Script:

//include utility_h for the UT_AddItemToInventory() function.
#include "utility_h"
//include the custom made plot file
#include "plt_$plot_file_name$"
 
void main()
{
    // If plot flag is TRUE then item already given.
    // Otherwise add item to inventory.
    if ( WR_GetPlotFlag( PLT_$plot_file_name$, $check_flag_name$ ) == FALSE )
    {
        UT_AddItemToInventory(R"$item_file_name$.uti");
        //Set the plot flag to TRUE to indicate that the item was given.
        WR_SetPlotFlag( PLT_$plot_file_name$, $check_flag_name$, TRUE );
    }
}
  1. Replace everything between and including the $ signs with appropriate names (without the file extensions).

Adding an Item to an existing Vendor or Container

Requirements:

M2DA Setup:

Campaign Container ContainerTag AreaListName
Origins Bodahn store_camp_bodahn cam100ar_camp_plains
Origins daytime King's Camp quartermaster pre100sr_quartermaster pre01al_kings_camp
Awakening Yuriah store_vgk100cr_merchant vgk210ar_throne_room
Awakening Party Chest in Vigil's Keep vgk210ip_party_chest vgk210ar_throne_room
Leliana's Song first Lem encounter store_lel00cr_lem lel100ar_market
  1. Create a PRCSCR M2DA override using the desired AreaListName from the above table
  2. Copy this new PRCSCR M2DA into your module's override folder (AddIns\{YourMod}\core\override)

Script:

#include "wrappers_h"
#include "plt_$plot_file_name$"  // include your custom plot
 
void main()
{
  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); // repeat this for each item
 
    WR_SetPlotFlag( PLT_$plot_file_name$, $check_flag_name$, TRUE );
  }
}
  1. Replace "$plot_file_name$" and "$check_flag_name$" with the custom plot and plot flags you create for your module.
  2. Replace "$resource_name$" with the resource name of your custom item.
  3. Replace "$ContainerTag$" with the desired container tag from the table in the M2DA setup section.
  4. The very first time you go to the party camp in Origins (after leaving Lothering) and view the Archdemon cutscene, this script will NOT run when using "cam100ar_camp_plains" as the AreaListName. This is because the cutscene version of the camp is actually a different area. In this case you must exit and return to the "normal" (non-cutscene) party camp for the script to run for the first time.

Adding a Working Door into an existing Area

Requirements:

M2DA Setup:

Script: [Undocumented]

Adding a Quest to an existing Chanters Board

Requirements:

M2DA Setup:

Script: [Undocumented]


Язык: English  • русский