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

  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » Кузница » Вопросы по Dragon age toolset » Вопросы о скриптах. (вопросы о скриптах в DAO)
Вопросы о скриптах.
Donor (В тени)
Совершенный
ВЕЛИКИЙ МАГИСТР
Сообщений: 1156
Дата: 18.03.2010, 17:20 | Сообщение # 1

Вопрос такой:
вот этот, всем известный скрипт на добавление итема в инвентарь игроку работает не совсем корректно.
первая часть скрипта:
Code

////////////////////////////////////////////////////////////////////////
          // Sent by: The engine
          // When: срабатывает при загрузке с сохранения или когда запущено в первый раз
          //      Может вызываться несколько раз
          ////////////////////////////////////////////////////////////////////////
          case EVENT_TYPE_MODULE_LOAD:
          {                     
              //Делаем проверку, чтобы запускался только один раз. Если ниже лежащий код уже выполнялся,
              //повторять нам его не надо и пропускаем это событие.
              int iModuleLoaded = GetLocalInt(OBJECT_SELF, "aga_bowathena");
              if (iModuleLoaded == 1)
                  break;

не исполняется и получается, что вторая часть скрипта

Code
// Получим объект игрока
              object oPlayer = GetHero();

              // проверяем, нет ли уже этого объекта в рюкзаке игрока.               
              // Мы же не хотим создавать новый лук при очередной загрузке? Хотя можно это назвать системой крафтинга =) (прим. ред.)
              int iItemCount = CountItemsByTag(oPlayer, "aga_bowofathena");                       
              // Если это 0, тогда давайте дадим его.
              // Обратите внимание на формат  R"resource_file_name"
              // "R" является важной частью и определяет его в качестве ресурса.  Просто имя ресурса. Его можно увидеть в дереве объектов (справа)
              // Дадим только одну штуку
              if (iItemCount  == 0)
                  UT_AddItemToInventory(R"aga_bowofathena.uti",1); // добавляет предмет в инвентарь активного игрока

              // сохраняем ранее определенную переменную как локальную в объекте
              SetLocalInt(OBJECT_SELF, "aga_bowathena", 1);
              break;

исполняется снова и снова при каждой загрузке, при условии если итема нет в инвентаре игрока (продал, отдал сопартийцу, надел на себя, уничтожил).
В результате мы имеем бесконечный крафтинг итема. Нужно только зайти в игру, получить итем, продать его и снова зайти в игру.
Если не юзать итем и он продолжает оставаться в инвентаре - скрипт срабатывает нормально - новый итем не прибавляется.
Кто может сказать где ошибка в скрипте и как её исправить?







Darkspawn (В тени)
Сообщений: 1690
Дата: 25.04.2010, 18:57 | Сообщение # 2

Правильный скрипт:
Code
// All module events
#include "utility_h"
#include "wrappers_h"
#include "events_h"
void main()
{
      event ev   = GetCurrentEvent();
      int nEvent = GetEventType(ev);
      Log_Events("", ev);
      switch (nEvent)
      {
          case EVENT_TYPE_MODULE_LOAD:
          {
              // get the object which contains the player
              object oPlayer = GetHero();

              object oBow = GetObjectByTag("aga_bowofathena");
              if (!IsObjectValid(oBow))
                  UT_AddItemToInventory(R"aga_bowofathena.uti",1);
              break;
          }
          default:
          {
              break;
          }
      }
}

Взято отсюда, там есть пояснения ко всем командам.



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


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

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



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

Kartman,
Спасибо, попробую.
Мне номинатор еще один вариант скинул. Еще руки не дошли потестить.






Сообщение отредактировал Donor - Воскресенье, 25.04.2010, 19:09


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

Проще всего - просто поставить условием выполнения скрипта действие, которое выполняется только раз за игру.
Например: старт модуля, но тогда предмет будет добавляться только после генерации персонажа, то есть в самом начале. В уже начатую игру таким образом нельзя импортировать предмет.



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

nominator,
посмотри пожалуйста эти два скрипта.
в чем проблема - выдают ошибку при компиляции.

этот запускается через консоль и на экране должны отображаться координаты положения игрока в локации.

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

а этот должен добавить в локацию (лагерь) созданного торговца (скрипт для расширения осн. компании)

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






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


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

какие именно ошибки выдает? кажется, я понял



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

nominator,
вот так пишет:

W: 20:25:05 - Some resources failed their post processing. Please see below for more details.
S: 20:25:05 - Export Summary, 1 Requested, 1 Success, 0 Skipped, 0 Failed. Please see below for more details.
I: 20:25:05 - Offers.xml file has been updated successfully.
I: 20:25:05 - AddIns.xml file has been updated successfully.
I: 20:25:05 - Generated the campaign file.
W: 20:25:05 - No starting area specified for campaign.
E: 20:25:05 - d_store_merc.nss - d_store_merc.nss(1): After compound statement at end
I: 20:25:05 - Compiling exported scripts
I: 20:25:05 - PostProcessing







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

тут просто кавычки вокруг значений не те))
вот я поменял

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



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

nominator,
biggrin я подозревал, что какой то элементарный косяк в символах.
Спасибо






Darkspawn (В тени)
Сообщений: 1690
Дата: 26.04.2010, 23:41 | Сообщение # 11

Как скриптом сделать табличку с текстом?



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


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

Kartman,
Quote (Kartman)
Как скриптом сделать табличку с текстом?

ты имеешь ввиду доску с заданиями?

есть 2DA файл JobBoards там все прописано. работает доска со скриптом donate.ncs.
чтобы создать новую надо создать файл этой доски, расширить 2DA, и импортировать в игру.
в donate.ncs наверное тоже что нибудь надо добавить - не знаю не смотрел.







Darkspawn (В тени)
Сообщений: 1690
Дата: 27.04.2010, 14:06 | Сообщение # 13

Donor, Нет...короче я не знаю как объяснить, как винду переустановлю проскриню.



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


TUT-@NKH-AMUN (В тени)
Проходящий посвящение
Сообщений: 40
Дата: 11.06.2010, 14:38 | Сообщение # 14

1. Скажите пожалуйста, есть ли такой скрипт, чтобы предмет появился у персонажа в самом начале игры ???
2. В скрипте на добавление торговца в лагерь нужно поменять только координаты или ещё чё-то???
location lMerchantLocation = Location(oArea, Vector(166.61, 124.77, -1.33), 85.4);
3. При добавлении торговца в лагерь, можно ли обойтись без 2DA файла???



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

TUT-@NKH-AMUN,
1. http://www.city-of-masters.ru/forums/index.php?s=c0359b86887645bfb8e6df617951a7c8&showtopic=6082 тебе в помощь.
2. Какой скрипт? Дай ссылку или сюда кинь.



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