Готовые скрипты.
|
|
|
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) --------------------------------------------- А теперь кое-что действительно веселое Воскрешение мертвеца: В закладке существа 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, где играешь за порождение тьмы. Что нужно написать в скриптах, что бы так же начать играть за порождение?
|
|