Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 48 49 50 51 52 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Lex
сообщение May 28 2005, 12:26
Сообщение #1211


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



эм..а более подробно?
- текст скрипта твой
- что было нужно
- и что собсна не срабатывает, я если честно не догнал
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение May 28 2005, 12:40
Сообщение #1212


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



Я бы скинул текст да вот сижу не за своим компом :no: . Нужно чтобы при определенных ингридиентах в сундуке и при определенном наложенном на него заклинании исчезали ингридиенты и появлялся предмет. Все бы хорошо, но срабатывает только первая комбинация. Никак не могу понять почему. Напихал в скрипт целую кучу тестовых сообщений ,но все равно не нашел где ошибка. Несколько раз проверял :yes: . При первом удобном случае скину скрипт.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение May 28 2005, 13:12
Сообщение #1213


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



мдя..тут без скрипта не разобраться..скрипт в студию! ( и ОЧЕНЬ желательно полный текст, а не отдельные вырезки)

Сообщение отредактировал mamuc - May 28 2005, 13:12
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение May 28 2005, 18:21
Сообщение #1214


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



QUOTE (dumbo @ May 28 2005, 08:49)
Лито
компилится без проблем. видимо, до тебя уже кто-то что-то подправил...

Все сделал, теперь работает :yes:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение May 28 2005, 18:49
Сообщение #1215


Level 6
Иконки Групп

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



Lex Ваш Скрипт про скелетообразную смерть неработает, блин чтоб я не делал, скелет с ресрефом поставил, ваш скрипт на онДамаге, тоже поставил, неработает. Помогите пожалуйста что нужно исправить.
А и на все слоты ваш скрипт, тоже ставил. Ничего!? :xz:
Добавлено в [mergetime]1117295550[/mergetime]
QUOTE
в свойствах НПС поставь immortale

Lex вот это я не поставил, может поэтому и не работает, можно узнать как это сделать?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 28 2005, 19:22
Сообщение #1216


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE (Мефистофель @ May 28 2005, 19:49)
Lex Ваш Скрипт про скелетообразную смерть неработает

работает 100%. Если я выкладываю скрипт, который сам не проверил, я об этом дополнительно сообщаю.
Надо просто сделать все именно так, как я сказал, а именно
QUOTE (Мефистофель @ May 28 2005, 19:49)
в свойствах НПС поставь immortale

Этот момент довольно критичен.

QUOTE (Мефистофель @ May 28 2005, 19:49)
можно узнать как это сделать?

Свойства создания - закладка advansed - флаг immortale (там всего 5 флажков, найти не проблема)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение May 29 2005, 00:19
Сообщение #1217


Level 6
Иконки Групп

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



QUOTE
Свойства создания - закладка advansed - флаг immortale (там всего 5 флажков, найти не проблема)

Дело в том что у меня Тулсет Русский и я незнаю где это.? эх.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 29 2005, 09:07
Сообщение #1218


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Там всего закладок пшик, найти за 10 минут, если во все тыкаться.

Свойства - Улучшенные - Бессмертие.. наверное так..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение May 29 2005, 17:41
Сообщение #1219


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Скрипт с инклюдом суб-рас от Lord of V@MPIRES, не работает :unsure:
Это тот который в базе скриптов на первой странице.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение May 29 2005, 17:56
Сообщение #1220


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



Вот инклуд как и обещал, ну и сам скрипт, хотя его писать и смысла нет.

Инклуд:
Neverwinter Script Source
//* Array Functions
void SetLokalArrayString (object oidObject, string sVarName, int nVarNum, string nValue);
string GetLocalArrayString (object oidObject, string sVarName, int nVarNum);
void SetLocalArrayInt (object oidObject, string sVarName, int nVarName, int nValue);
int GetLocalArrayInt (object oidObject, string sVarName, int nVarName);
//* Lab Functions
void CreateLabItem (int nSpellID);
int nNumberOfCombos = 5;
void BadResult ()
{
  SpeakString ("Bad Result!!!");
  object oTarget = GetLastSpellCaster ();
  int nDamage = d20*2;
  effect eVis = EffectVisualEffect (VFX_IMP_FLAME_S);
  effect eFire = EffectDamage (nDamage, DAMAGE_TYPE_FIRE);
  DelayCommand (0.6,ApplyEffectToObject (DURATION_TYPE_INSTANT, eFire, oTarget));
  DelayCommand (0.6,ApplyEffectToObject (DURATION_TYPE_INSTANT, eVis, oTarget));
}

void SetupLab ()
{
  SetLocalString (GetModule(), "NW_MYCHESTTAG", "M3Q1LABCHEST");
  //* M3Q1LABCHEST - тег сундука с ингридиентами
  int nComboNumber = 1;
  for (nComboNumber = 1; nComboNumber <= nNumberOfCombos; nComboNumber++)
      {
      switch (nComboNumber)
      {
        case 1:
        SetLocalArrayInt (OBJECT_SELF, "NW_COMBO_SPELL", nComboNumber, SPELL_MELFS_ACID_ARROW);
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT1", nComboNumber, "NW_IT_MSMLMISC12");
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT2", nComboNumber, "NW_IT_MSMLMISC09");
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REWARD", nComboNumber, NW_IT_MRING004);
        break;
        case 2:
        SetLocalArrayInt (OBJECT_SELF, "NW_COMBO_SPELL", nComboNumber, SPELL_MAGEARMOR);
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT1", nComboNumber, "NW_IT_MSMLMISC12");
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT2", nComboNumber, "NW_IT_MSMLMISC10");
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REWARD", nComboNumber, NW_IT_MNECK015);
        break;
        case 3:
        SetLocalArrayInt (OBJECT_SELF, "NW_COMBO_SPELL", nComboNumber, SPELL_ENERVATION);
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT1", nComboNumber, "NW_IT_MSMLMISC11");
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT2", nComboNumber, "NW_IT_MSMLMISC08");
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REWARD", nComboNumber, M3Q1A09LABROBE);
        break;
        case 4:
        SetLocalArrayInt (OBJECT_SELF, "NW_COMBO_SPELL", nComboNumber, SPELL_FEEBLEMIND);
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT1", nComboNumber, "NW_IT_MSMLMISC06");
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT2", nComboNumber, "NW_IT_MSMLMISC06");
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REWARD", nComboNumber, NW_WMGST005);
        break;
        case 5:
        SetLocalArrayInt (OBJECT_SELF, "NW_COMBO_SPELL", nComboNumber, SPELL_STONESKIN);
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT1", nComboNumber, "NW_IT_MSMLMISC14");
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT2", nComboNumber, "NW_IT_MSMLMISC06");
        SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REWARD", nComboNumber, NW_IT_MBOOTS004);
        break;
      }
      }
}

int GetSpellPosition (int nSpellID)
{
  int i;
  int nMatch = -1;
  for (i = 1; i <= nNumberOfCombos; i++)
  {
      if (GetLocalArrayInt(OBJECT_SELF, "NW_COMBO_SPELL", i) == nSpellID)
      {
      nMatch = i;
      }
  }
  return nMatch;
}

int GetCombo (int SpellID)
{
  string sReagent1, sReagent2;
  object oItem = GetFirstItemInInventory ();
  int i = 0;
  int nArrayPosition = -1;
  object oDeleteItem1, oDeleteItem2;
  while (bValid == TRUE)
  {
      i = i + 1;
      if (i == 1)
      {
        sReagent1 = GetTag (oItem);
        oDeleteItem1 = oItem;
      }
      if (i == 2)
      {
        sReagent2 = GetTag (oItem);
        oDeleteItem2 = oItem;
      }
      oItem = GetNextItemInInventory ();
      bValid = GetIsObjectValid (oItem);
      if (i>2)
        bValid = FALSE;
  }
  if ((i<=0)||(i>=3))
  {
      nArrayPosition = -1;
  }
  else
  {
      nArrayPosition = GetSpellPosition (nSpellID);
      if (nArrayPosition != -1)
      {
        string sArrayReagent1 = GetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT1", nArrayPosition);
        string sArrayReagent2 = GetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT2", nArrayPosition);
        if ((sArrayReagent1 == sReagent1 || sArrayReagent1 == sReagent2) && (sArrayReagent2 == sReagent1 || sArrayReagent2 == sReagent2))
        {
            DestroyObject (oDeleteItem1);
            DestroyObject (oDeleteItem2);
            return nArrayPosition;
        }
        else
        {
            nArrayPosition = -1;
        }
      }
  }
  return nArrayPosition;
}

void CreateLabItem (int nSpellID)
{
  int nCombo = GetCombo (nSpellID);
  string sItem = GetLocalArrayString (OBJECT_SELF, "NW_COMBO_REWARD", nCombo);
  if (sItem == "")
  {
      nCombo = -1;
  }
  if (nCombo != -1)
  {
      SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REWARD", nCombo, "");
      CreateItemOnObject (sItem);
      ApplyEffectToObject (DURATION_TYPE_INSTANT, EffectVisualEffect (VFX_IMP_MAGICAL_VISION), GetLastSpellCaster());
  }
  else
  {
      BadResult ();
  }
}

string GetLacalArrayString (object oidObject, string sVarName, int nVarNum)
{
  string sFullVarName = sVarName + IntToString (nVarNum);
  return GetLocalString (oidObject, sFullVarName);
}
void SetLacalArrayString (object oidObject, string sVarName, int nVarNum, string nValue)
{
  string sFullVarName = sVarName + IntToString (nVarNum);
  SetLocalString (oidObject, sFullVarName, nValue);
}
int GetLacalArrayInt (object oidObject, string sVarName, int nVarNum)
{
  string sFullVarName = sVarName + IntToString (nVarNum);
  return GetLocalInt (oidObject, sFullVarName);
}
void SetLacalArrayInt (object oidObject, string sVarName, int nVarNum, int nValue)
{
  string sFullVarName = sVarName + IntToString (nVarNum);
  SetLocalString (oidObject, sFullVarName, nValue);
}

Вот весь инклуд
Добавлено в [mergetime]1117378792[/mergetime]
В самом скрипте инклуд обозван как LabItemsCreate.
Сначала выполняется функция SetupLab ()
Потом определяю спелл который кастовали на сундук и выполняю функцию CreateLabItem

Сорри что не привожу текст. Его пришлось пол дня восстанавливать. Кто-то кривыми руками случайно стер.

Добавлено в [mergetime]1117378957[/mergetime]
Еще вопрос по функции GetLastSpellCaster
А если к примеру возможен ли такой вариант что в один момент кастовать спелл на объеке будут двое. Что тогда может произойти. Хотя бы теоритически?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение May 29 2005, 23:14
Сообщение #1221


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Помоему вот твои два ингредиента в этой функции. А ты насовал туда четыре. помоему тебе надо вписать еще для двух. Но я могу ошибиться...
Neverwinter Script Source
int GetCombo (int SpellID)
{
  string sReagent1, sReagent2;

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение May 30 2005, 09:22
Сообщение #1222


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



QUOTE
Я переписал скрипт на 4 ингридиента, которые ложатся в сундук.


...ну и где это видно, что переписано на 4 инградиента..в твоем скрипте( или вероятнее всего скрипте-основе) их всего 2... и проверка условий идет по этим 2 инградиентам..так что, если у тебя рецепты неотличаются особо началом, то и выполняться соотв будет первый рецепт удолетворяющий условие... но все это гадание на кофейной гуще, ибо именно самого скрипта на 4 инградиента не видно( тут только инклюд на 2)

.. и кстати, что по идее ты хочешь получить из void SetupLab () ?
из того что тут написано должно получиться, что в любом случае получаешь один и тот же результат :D
с циклом for ... ты упорно перебираешь все возможные 5 вариантов пока получаешь последний :yes: ..всегда :yes:

Сообщение отредактировал mamuc - May 30 2005, 09:24
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение May 30 2005, 13:18
Сообщение #1223


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



QUOTE (Lex @ May 20 2005, 22:22)
Через стоимость вещи вроде можно определить уровень. Где-то кто-то расписывал табличку такую. Сравнивай потом с уровнем игрока и все.

Где именно? Через поиск ничего не нашел. :(
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Archangel
сообщение May 30 2005, 19:20
Сообщение #1224


Восставший из пепла
***

Класс: Бледный Мастер
Характер: Neutral Evil
Раса: Человек
ПОДМАСТЕРЬЕ



Здрастеся, дорогие форумчане. Меня интересует возможно ли написать такой скрипт(сам я даже примерно непредставляю с чего начать(а не... вру... знаю... с void main() :lol: )):
когда наступает ночь на экране повляется табличка с произвольной надписью, она держиться определенное время, или пока игрок не нажмет ОК, а потом у игрока отнимается половина жизней.
Есть идеи? :this:


Сообщение отредактировал Archangel - May 30 2005, 19:21
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение May 30 2005, 20:12
Сообщение #1225


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Archangel, есть идея, ставь на хартбит игрока или модуля скрипт который будет проверять время суток(день-ночь). Если ночь, то начинается диалог(который будет за табличку). :drag:
Ну еще сделай локалку чтобы ночью диалог не начинался каждые 6 секунд :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение May 31 2005, 00:21
Сообщение #1226


Level 6
Иконки Групп

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



Спасибо Лекс, но возникли некоторые неполадки, дело в том что скелет, после смерти непися, долго появляется, и эффект смери не работает, скелет нападает на ПК.
Добавлено в [mergetime]1117488620[/mergetime]
Спецефический вопрос. Если играть за друида, то ПК может превращатся в жевотных, дак вот, скажите можно ли, также поменять ПК только ранне задуманным NPC?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение May 31 2005, 01:17
Сообщение #1227


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



Я выложил вариант с двумя ингридиентами так как он проще. Но и в не мчто-то не работает.
Функция SetupLab () создает своебразный массив по номеру комбинации. Допустим если было кастованр заклинание из первой комбинации, то имеем в переменной nComboNumber = 1. А в массиве под этим номером уже читаем сами ингридиенты и то что должно получиться.
mamuc в каком именно цикле for?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение May 31 2005, 09:46
Сообщение #1228


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Minion, ты можешь перепутать FALSE и TRUE и не будет пахать ничего. Сделай фукцию Debug и впиши ее после каждого действия в код. Пусть она выводит тебе мессаги, что сделано и что происходит. Так гадать можно до второго пришествия. Увидишь что и как, сам найдешь ошибку. У меян при входе в мод все пестрит мессагами, кто где пукнул, выдохнул у меян все пишет в дебаг.

2 Архангел. Табличку кроме панели смерти прилепить нельзя.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Archangel
сообщение May 31 2005, 09:49
Сообщение #1229


Восставший из пепла
***

Класс: Бледный Мастер
Характер: Neutral Evil
Раса: Человек
ПОДМАСТЕРЬЕ



QUOTE
Archangel, есть идея, ставь на хартбит игрока или модуля скрипт который будет проверять время суток(день-ночь). Если ночь, то начинается диалог(который будет за табличку). 
Ну еще сделай локалку чтобы ночью диалог не начинался каждые 6 секунд 

QUOTE
2 Архангел. Табличку кроме панели смерти прилепить нельзя.

Ладно, спасибо. Че-нить придумаем... ;)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение May 31 2005, 10:47
Сообщение #1230


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



QUOTE
Я выложил вариант с двумя ингридиентами так как он проще. Но и в не мчто-то не работает.
Функция SetupLab () создает своебразный массив по номеру комбинации. Допустим если было кастованр заклинание из первой комбинации, то имеем в переменной nComboNumber = 1. А в массиве под этим номером уже читаем сами ингридиенты и то что должно получиться.
mamuc в каком именно цикле for?


в SetupLab () .
..сначало напишу как у тебя работает по тому , что написано сейчас
1) устатнавливаешь int nComboNumber = 1;
2) запускаешь цыкл for для того же nComboNumber с 1 до 5 (nNumberOfCombos = 5) ...таким образом цыкл работает 5 раз
3) в цыкле у тебя токо один свич для того самого бедного nComboNumber , где в зависимости от значения создает твой "своебразный массив по номеру комбинации"...усе это срабатывает 5 раз каждый раз присваивается знач масива и в итоге ты получаешь в своем масиве ВСЕГДА то что присваиваешь, когда
nComboNumber=5, поскольку это действие присвоения в SetupLab () выполняеться последним

что бы работало так как ты описал SetupLab () должен быть с параметром nComboNumber, и цыкл там совсем ненужен, должен токо свич остатся....
короче- с исправлениями должна выглядеть примерно так
Neverwinter Script Source
void SetupLab (int nComboNumber)
{
  SetLocalString (GetModule(), "NW_MYCHESTTAG", "M3Q1LABCHEST");
  //* M3Q1LABCHEST - тег сундука с ингридиентами
      switch (nComboNumber)
      {
        case 1:
            SetLocalArrayInt (OBJECT_SELF, "NW_COMBO_SPELL", nComboNumber, SPELL_MELFS_ACID_ARROW);
            SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT1", nComboNumber, "NW_IT_MSMLMISC12");
            SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT2", nComboNumber, "NW_IT_MSMLMISC09");
            SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REWARD", nComboNumber, NW_IT_MRING004);
        break;
        case 2:
            SetLocalArrayInt (OBJECT_SELF, "NW_COMBO_SPELL", nComboNumber, SPELL_MAGEARMOR);
            SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT1", nComboNumber, "NW_IT_MSMLMISC12");
            SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT2", nComboNumber, "NW_IT_MSMLMISC10");
            SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REWARD", nComboNumber, NW_IT_MNECK015);
        break;
        case 3:
            SetLocalArrayInt (OBJECT_SELF, "NW_COMBO_SPELL", nComboNumber, SPELL_ENERVATION);
            SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT1", nComboNumber, "NW_IT_MSMLMISC11");
            SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT2", nComboNumber, "NW_IT_MSMLMISC08");
            SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REWARD", nComboNumber, M3Q1A09LABROBE);
        break;
        case 4:
            SetLocalArrayInt (OBJECT_SELF, "NW_COMBO_SPELL", nComboNumber, SPELL_FEEBLEMIND);
            SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT1", nComboNumber, "NW_IT_MSMLMISC06");
            SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT2", nComboNumber, "NW_IT_MSMLMISC06");
            SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REWARD", nComboNumber, NW_WMGST005);
        break;
        case 5:
             SetLocalArrayInt (OBJECT_SELF, "NW_COMBO_SPELL", nComboNumber, SPELL_STONESKIN);
             SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT1", nComboNumber, "NW_IT_MSMLMISC14");
             SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REAGENT2", nComboNumber, "NW_IT_MSMLMISC06");
             SetLocalArrayString (OBJECT_SELF, "NW_COMBO_REWARD", nComboNumber, NW_IT_MBOOTS004);
        break;
      }
}

..я конечно еще рекомендовал бы вместо SetLocalArrayInt ,SetLocalArrayString использовать структуры ...это гораздо удобнее ( и короче в записи тоже) ИМХО :yes:
вот примерно так...(это кроме всего дает возможность вообще обходиться без навешивания лишних локальных на плейс)
Neverwinter Script Source
struct stRec
{
    int spell;
    string req1;
    string req2;
    string rez;
};


struct stRec SetupLab(int nComboNumber)
{
    struct stRec stR;
    if (!nComboNumber) return stR;
    switch (nComboNumber)
    {
        case 1:
            stR.spell = SPELL_MELFS_ACID_ARROW;
            stR.req1 = "NW_IT_MSMLMISC12";
            stR.req2 = "NW_IT_MSMLMISC09";           
            stR.rez = "****";
            // kstati v sozdanii rezultata nuzhen resref, a ne tag itema
            // ( i resref obichno pishetsa strokovimi bukvami)
            break;
        case 2:
            stR.spell = SPELL_MAGEARMOR;
            stR.req1 = "NW_IT_MSMLMISC12";
            stR.req2 = "NW_IT_MSMLMISC10";           
            stR.rez = "****";
            break;
        // i tak dalee       
    }
    return stR;
}


Сообщение отредактировал mamuc - Jun 3 2005, 08:48
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DBColl
сообщение May 31 2005, 13:18
Сообщение #1231


4-х Кубовый
Иконки Групп

Класс: Некромант
Характер: Lawful Evil
Раса: Человек
NWN: Скриптинг [Sn]
Проклятие Левора



Народ, объясните плиз мне, как переопределить ряд стандартных спеллов? Что такое спеллхук и че с ним делать?..
В этом я совсем профан... :ph34r: =)

Проясните плз... только пошагово. Можно и кратко, но по шагам. А также о зависимостях между 2да-хами и скритами спеллов.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение May 31 2005, 13:28
Сообщение #1232


Level 9
Иконки Групп

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



QUOTE (Лито @ May 30 2005, 14:18)
QUOTE (Lex @  May 20 2005, 22:22)
Через стоимость вещи вроде можно определить уровень. Где-то кто-то расписывал табличку такую. Сравнивай потом с уровнем игрока и все.

Где именно? Через поиск ничего не нашел. :(

нарисовал тут на досуге:
1. dmb_inc_ilr:
Neverwinter Script Source
void Read2DA()
{
  int nRow;
  string sDA;
  // можно на модуль, можно на плэйс какой-нибудь...
  object oStore = GetModule();
  for (nRow = 0; nRow < 60; nRow++) {
    sDA = Get2DAString("itemvalue", "MAXSINGLEITEMVALUE", nRow);
    if (sDA == "") break;
    SetLocalInt(oStore, "ILR_"+IntToString(nRow+1), StringToInt(sDA));
  }
}

int GetILR(object oItem)
{
  object oStore = GetModule();
  int bIdentified = GetIdentified(oItem);
  if (!bIdentified) SetIdentified(oItem, TRUE);
  int nGP = GetGoldPieceValue(oItem);
  SetIdentified(oItem, bIdentified);
  int nLevel = 1;
  while (nLevel < 60 &&
        GetLocalInt(oStore, "ILR_"+IntToString(nLevel)) < nGP)
    nLevel++;
  return nLevel;
}

2. в OnModuleLoad:
Neverwinter Script Source
#include "dmb_inc_ilr"
void main() {
  Read2DA();
  ...

3. пользовать по усмотрению. например, в OnPlayerEquipItem:
Neverwinter Script Source
#include "dmb_inc_ilr"
void main() {
  object oPC = GetPCItemLastEquippedBy();
  object oItem = GetPCItemLastEquipped();
  int nLevel = GetILR(oItem);
  if (nLevel > GetHitDice(oPC))
  {
    SendMessageToPC(oPC, "Для ношения этой вещи требуется "+
                        IntToString(nLevel)+" уровень");
      // закрываем окно инвентаря, ибо его плющит...
      OpenInventory(oPC, oPC);
      OpenInventory(oPC, oPC);
      AssignCommand(oPC, ActionUnequipItem(oItem));
      return;
  }
  ...


ps. особо не проверялось, посему ежели что - пишите...
Добавлено в [mergetime]1117537069[/mergetime]
DBColl
по spell-hook'ам - ТУТ

основная зависимость скриптов спеллов от 2да'х - в spells.2da в колонке ImpactScript прописаны их имена.. :) или ты про что-то другое?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DBColl
сообщение May 31 2005, 14:27
Сообщение #1233


4-х Кубовый
Иконки Групп

Класс: Некромант
Характер: Lawful Evil
Раса: Человек
NWN: Скриптинг [Sn]
Проклятие Левора



QUOTE (dumbo @ May 31 2005, 13:28)
DBColl по spell-hook'ам - ТУТ

основная зависимость скриптов спеллов от 2да'х - в spells.2da в колонке ImpactScript прописаны их имена..или ты про что-то другое?

Да, я про это. Спасибо, почитаю ;). :good:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 1 2005, 13:20
Сообщение #1234


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE (Мефистофель @ May 31 2005, 01:21)
Спасибо Лекс, но возникли некоторые неполадки, дело в том что скелет, после смерти непися, долго появляется, и эффект смери не работает, скелет нападает на ПК.

так тебе это и надо было, нет?
Или надо чтобы скелет на земле валялся? Тогда при его создании ставь SetIsDestroyable(FALSE,FALSE); и накладывай эффект смерти EffectDeath() через ApplyEffectToObject()
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jun 2 2005, 00:16
Сообщение #1235


Level 6
Иконки Групп

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



QUOTE
так тебе это и надо было, нет?
Или надо чтобы скелет на земле валялся? Тогда при его создании ставь SetIsDestroyable(FALSE,FALSE); и накладывай эффект смерти EffectDeath() через ApplyEffectToObject()

Не лекс, эффекты ты прописал, но они не работают!? Мне надо было чтобы скелет мгновенно, появился за место НПК, как это было в ХотУ, я и сам эффекты накладывал, всё кампилилось, но не работало! во как.
Наверное я уже достал..Понимаю
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 48 49 50 51 52 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 4th May 2025 - 22:01