Новые сообщения · Участники · Поиск · Вход

  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » Кузница » Вопросы по Dragon age toolset » Готовые скрипты.
Готовые скрипты.
Darkspawn (В тени)
Сообщений: 1690
Дата: 25.04.2010, 19:41 | Сообщение # 1

Здесь выкладываем готовые скрипты для toolset.


Запустить катсцену тригером.
(Насколько я знаю, триггер-это невидимый предмет. Когда игрок пересечет его запустится катсцена.)
Создайте скрипт:
Code
#include "events_h"
#include "global_objects_h"
#include "utility_h"
   
void main ()
{
     event ev = GetCurrentEvent();
     int nEventType = GetEventType(ev);
     int bEventHandled = FALSE;
     switch (nEventType)
     {
         case EVENT_TYPE_ENTER:
         {
             object oCreature = GetEventCreator(ev);
             if(GetObjectActive(OBJECT_SELF)
                && IsPartyMember(oCreature))  
             {  
                 resource rCutscene = R"my_cutscene.cut";
                 CS_LoadCutscene(rCutscene);
                 SetObjectActive(OBJECT_SELF, FALSE);
             }          
          }
          break;
     }
     if (!bEventHandled) //If this event wasn't handled by this script, let the core script try (Если это событие не обработано этим скриптом, попробуйте основной скрипт)
     {
         HandleEvent(ev, RESOURCE_SCRIPT_TRIGGER_CORE);
     }
}

И установите его как event script для триггера, из которого вы хотите запустить катсцену.



Not all people are annoyng. Some of them are dead.


nominator (В тени)
Страж-магистр
Сообщений: 137
Дата: 25.04.2010, 19:45 | Сообщение # 2

Если вы не хотите, чтобы катсцена запускалась всякий раз, как вы проходите по триггеру - откройте закладку триггера Variables найдите строчки, которые содержат слова DoOnce и поставьте значение int на 1. Теперь триггер запуститься только один раз за игру.



Darkspawn (В тени)
Сообщений: 1690
Дата: 25.04.2010, 19:48 | Сообщение # 3

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



Not all people are annoyng. Some of them are dead.


nominator (В тени)
Страж-магистр
Сообщений: 137
Дата: 25.04.2010, 20:12 | Сообщение # 4

Kartman,
Вместо значения "my_cutscene.cut" в строчке resource rCutscene = R"my_cutscene.cut";, нужно проставить тэг катсцены которую вы хотите запустить.

Добавлено (25.04.2010, 19:54)
---------------------------------------------
Добавить компаньона:

Code
#include "var_constants_h"
#include "wrappers_h"

void main()
{
    object oFollower = GetObjectByTag("тэг существа, которого вы хотите сделать компаньоном");
    UT_HireFollower(oFollower);
   }

Добавлено (25.04.2010, 20:08)
---------------------------------------------
А теперь кое-что действительно веселое smile
Воскрешение мертвеца:
В закладке существа variables поставьте значение CREATURE_SPAWN_DEAD на 2. Существо появиться на карте мертвым.

Используйте этот скрипт, когда захотите чтобы существо ожило и напало:

Code
#include "wrappers_h"
...
object oCreature = GetObjectByTag("тэг оживающего существа");
WR_SetObjectActive(oCreature, TRUE);
SetCommandable(oCreature, TRUE);
SetLocalInt(oCreature, CREATURE_SPAWN_DEAD, 0);
UT_CombatStart(oCreature, oPC);

Этот скрипт можно использовать по разному, например в диалогах или триггерах.
Пример использования скрипта с триггером:
Code
#include "events_h"   
#include "global_objects_h"   
#include "utility_h"   
       
void main ()   
{   
       event ev = GetCurrentEvent();   
       int nEventType = GetEventType(ev);   
       int bEventHandled = FALSE;   
       switch (nEventType)   
       {   
           case EVENT_TYPE_ENTER:   
           {   
               object oCreature = GetEventCreator(ev);   
               if(GetObjectActive(OBJECT_SELF)   
                  && IsPartyMember(oCreature))    
               {
                   object oCreature = GetObjectByTag("тэг оживающего существа");
                   WR_SetObjectActive(oCreature, TRUE);
                   SetCommandable(oCreature, TRUE);
                   SetLocalInt(oCreature, CREATURE_SPAWN_DEAD, 0);
                   UT_CombatStart(oCreature, oPC);
               }            
            }   
            break;   
       }   
       if (!bEventHandled)
       {   
           HandleEvent(ev, RESOURCE_SCRIPT_TRIGGER_CORE);   
       }   
}

Вставляем этот скрипт в event script триггера и устанавливаем триггер на карте, теперь когда мы в игре пройдем по нему, выбранное вами существа восстанет

Добавлено (25.04.2010, 20:12)
---------------------------------------------
Если нужны скрипты на какое-то конкретное действие - спрашивайте в этой теме, постараюсь помочь.




Сообщение отредактировал nominator - Воскресенье, 25.04.2010, 20:14


Donor (В тени)
Совершенный
ВЕЛИКИЙ МАГИСТР
Сообщений: 1156
Дата: 25.04.2010, 21:47 | Сообщение # 5

Добавление итемов продавцу

Code
#include "wrappers_h"
#include "plt_YOUR_PLOT"

void main()
{
    event ev = GetCurrentEvent();
    int nEventType = GetEventType(ev);

    switch (nEventType)
    {
      case EVENT_TYPE_MODULE_LOAD:
      {   
        object vendor = GetObjectByTag("store_camp_bodahn"); //camp merchant
        if (WR_GetPlotFlag(PLT_YOUR_PLOT, YOUR_FLAG) || !IsObjectValid(vendor)) return;
        CreateItemOnObject(R"your_item1.uti", vendor);
        WR_SetPlotFlag(PLT_YOUR_PLOT, YOUR_FLAG, TRUE);
      }
    }
}

скрипт нужно вставить в поле Script в свойствах модуля создаваемого вами предмета. Предмет будет добавлен продавцу (в данном примере - Бодану)
как ниже отметил Номинатор нужно создать plot файл.






Сообщение отредактировал Donor - Понедельник, 26.04.2010, 16:10


nominator (В тени)
Страж-магистр
Сообщений: 137
Дата: 26.04.2010, 10:22 | Сообщение # 6

Donor, вы хоть поясняйте как эти скрипты в игре использовать, например к твоему скрипту необходимо создать соотвествующий plot файл с определенными значениями, иначе он не добавит предмет
Code
#include "wrappers_h"  
#include "plt_YOUR_PLOT"  

void main()  
{  
    event ev = GetCurrentEvent();  
    int nEventType = GetEventType(ev);  

    switch (nEventType)  
    {  
      case EVENT_TYPE_MODULE_LOAD:  
      {   
        object vendor = GetObjectByTag("store_camp_bodahn"); //camp merchant  
        CreateItemOnObject(R"your_item1.uti", vendor);  
      }  
    }  
}

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



Donor (В тени)
Совершенный
ВЕЛИКИЙ МАГИСТР
Сообщений: 1156
Дата: 26.04.2010, 16:05 | Сообщение # 7

nominator,
как понять для "простого" добавления?
а чем он отличается от того скрипта, что я выложил.
распиши пож. поподробнее по поводу создания plot файла. (и про FLAG, тоже. как я понял это какое то значение в plot)






nominator (В тени)
Страж-магистр
Сообщений: 137
Дата: 26.04.2010, 16:14 | Сообщение # 8

Donor,
Code
if (WR_GetPlotFlag(PLT_YOUR_PLOT, YOUR_FLAG) || !IsObjectValid(vendor)) return;  
         ...
         WR_SetPlotFlag(PLT_YOUR_PLOT, YOUR_FLAG, TRUE);

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



Donor (В тени)
Совершенный
ВЕЛИКИЙ МАГИСТР
Сообщений: 1156
Дата: 27.04.2010, 00:25 | Сообщение # 9

Скрипт "showlocation" для определения текущей позиции игрока в локации

Code

#include "utility_h"      
void main()      
{      
object oPC = GetHero();      
location lLoc = GetLocation(oPC);      
vector vPos = GetPositionFromLocation(lLoc);      
vector vOrientation = GetOrientationFromLocation(lLoc);      
float fAngle = GetFacing(oPC);      
DisplayFloatyMessage(oPC, VectorToString(vPos), FLOATY_MESSAGE, 16777215, 20.0);      
DisplayFloatyMessage(oPC, "————–", FLOATY_MESSAGE, 16777215, 20.0);      
DisplayFloatyMessage(oPC, FloatToString(fAngle), FLOATY_MESSAGE, 16777215, 20.0);      
}

компилируем скрипт, помещаем в override, в игре запускаем консоль, вводим runscript showlocation и видим на экране свои координаты.

Добавлено (27.04.2010, 00:25)
---------------------------------------------
Добавление продавца в локацию (лагерь)
выбираем нужное место в локации, с помощью showlocation определяем координаты и прописываем в скрипт

Code

#include "wrappers_h"      
void main()      
{      
// The first thing we want to do, before anything, is look around and see      
// if we have already spawned this merchant      
object oPlayer = GetMainControlled();      
DisplayFloatyMessage(oPlayer, "tut_merchant_spawn", FLOATY_MESSAGE, 16777215, 20.0);      
object oMerchant = UT_GetNearestObjectByTag(oPlayer, "jwv_t_creature1");      
if (!IsObjectValid(oMerchant))      
{      
// If we get to this code, it means the merchant has not been placed yet      
// So let’s do that      
// get an object pointer to the party camp area      
object oArea = GetObjectByTag("cam100ar_camp_plains");      
// create a location for where our merchant NPC will be placed      
location lMerchantLocation = Location(oArea, Vector(166.61, 124.77, -1.33), 85.4);      
// Spawn the NPC      
CreateObject(OBJECT_TYPE_CREATURE, R"jwv_t_creature1.utc", lMerchantLocation);      
}      
}

если в этот скрип добавить

Code
//Now lets create a location for our crate
location lCrate1Location = Location(oArea, Vector(167.27, 122.54, -1.27), 110.75);
// and spawn the crate
CreateObject(OBJECT_TYPE_PLACEABLE, R "genip_crate_wd_large_stat.utp" , lCrate1Location);

то вместе с продавцом добавится ящик (или можно прописать что то другое)

скрипт нужно вставить в свойства модуля в поле Script







Сообщение отредактировал Donor - Вторник, 27.04.2010, 00:33


Darkspawn (В тени)
Сообщений: 1690
Дата: 08.10.2010, 21:29 | Сообщение # 10

Скрипт вызова чаргена для своего модуля (не расширяющего сингл плеер)
Quote
#include "events_h"
#include "global_objects_h"

void main()
{
// keep track of whether the event has been handled
int nEventHandled = FALSE;

event ev = GetCurrentEvent();
switch(GetEventType(ev))
{
case EVENT_TYPE_MODULE_START:
{
// preloads resources needed for character generation
PreloadCharGen();

// initiates character generation
StartCharGen(GetHero(),0);

break;
}
}

// if this event wasn't handled by this script fall through to the core script
if(!nEventHandled)
{
HandleEvent(ev, RESOURCE_SCRIPT_MODULE_CORE);
}
}



Not all people are annoyng. Some of them are dead.


Darkspawn (В тени)
Сообщений: 1690
Дата: 08.10.2010, 21:31 | Сообщение # 11

Скрипт пропуска чаргена с выбором расы, пола, вещей итд.
Quote
#include "sys_chargen_h"
#include "utility_h"

void main()
{
// keep track of whether the event has been handled
int nEventHandled = FALSE;

event ev = GetCurrentEvent();
switch(GetEventType(ev))
{
case EVENT_TYPE_MODULE_START:
{
object oHero = GetHero();

// skip character generation
Chargen_InitializeCharacter(oHero);
Chargen_SelectGender(oHero, GENDER_MALE);
Chargen_SelectRace(oHero, RACE_HUMAN);
Chargen_SelectCoreClass(oHero, CLASS_WARRIOR);
Chargen_SelectBackground(oHero, BACKGROUND_NOBLE);

// give the player some equipment
EquipItem(oHero, UT_AddItemToInventory(R"gen_im_arm_cht_lgt_rlr.uti"));
EquipItem(oHero, UT_AddItemToInventory(R"gen_im_arm_bot_lgt_rlr.uti"));
EquipItem(oHero, UT_AddItemToInventory(R"gen_im_arm_glv_lgt_rlr.uti"));
EquipItem(oHero, UT_AddItemToInventory(R"gen_im_arm_shd_sml_wdn.uti"));
EquipItem(oHero, UT_AddItemToInventory(R"gen_im_wep_mel_lsw_lsw.uti"));

break;
}
}

// if this event wasn't handled by this script fall through to the core script
if(!nEventHandled)
{
HandleEvent(ev, RESOURCE_SCRIPT_MODULE_CORE);
}
}



Not all people are annoyng. Some of them are dead.


Shinsoo (В тени)
Одарённый магией
Сообщений: 15
Дата: 17.10.2010, 10:44 | Сообщение # 12

НАПИШИТЕ ПОЖАЛУЙСТА СКРИПТ ПРОПУСКА ЧАРГЕНА НО С ВВОДОМ ВНЕШНОСТИ И АТРИБУТОВ

не капси, тут на зрение никто не жалуется

© Donor

Добавлено (17.10.2010, 10:44)
---------------------------------------------
да я просто с телефона писал




Да прибудет с нами Сила...

warslav (В тени)
Бешеный пёс
Сообщений: 241
Дата: 17.10.2010, 16:50 | Сообщение # 13

А есть ли у кого-нибудь скрипт для начала игры за порождение тьмы?







Donor (В тени)
Совершенный
ВЕЛИКИЙ МАГИСТР
Сообщений: 1156
Дата: 17.10.2010, 18:01 | Сообщение # 14

Quote (warslav)
А есть ли у кого-нибудь скрипт для начала игры за порождение тьмы?

что ето еще за бред?






warslav (В тени)
Бешеный пёс
Сообщений: 241
Дата: 17.10.2010, 19:24 | Сообщение # 15

Есть же DLC, где играешь за порождение тьмы. Что нужно написать в скриптах, что бы так же начать играть за порождение?







Форум » Кузница » Вопросы по Dragon age toolset » Готовые скрипты.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: