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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 86 87 88 89 90 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Dik Morris
сообщение Apr 24 2006, 15:18
Сообщение #2176


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE
А дык через что присваивать Area? Через Location? А Location тода через что?

В зависимости от ситуации.
Например, если ты хочешь сменить трек в текущей локации:
NSS
object oArea = GetArea(OBJECT_SELF);// Т.е oArea - сама лока

Если в какой либо другой:
NSS
object oArea = GetArea(GetObjectBtTag(""));


Сообщение отредактировал Dik Morris - Apr 24 2006, 15:23
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
windhover
сообщение Apr 26 2006, 01:49
Сообщение #2177


Level 3
*

Класс: Обыватель
Характер: Chaotic Good
Раса: Человек



Доброго времени суток. У меня возник вопрос, если он глупый, прошу строго не судить - так как это мой первый опыт в написании скриптов.
Решил немного модифицировать скрипт с реакцией гварда на оружие в руках игрока: при виде игрока с оружием в руках, гвард начинает диалог(предлагает заплатить штраф), при отказе платить штраф вызывается следующий скрипт:
CODE

void main()
{
object oPC = GetPCSpeaker();
object OS = OBJECT_SELF;
object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);

      if (!GetIsObjectValid(oWeapon)) return;

      DelayCommand(0.30, ActionSpeakString("Может так ты лучше поймешь!"));
      DelayCommand(0.60, ActionUseFeat(FEAT_IMPROVED_DISARM, oPC));
      DelayCommand(1.40, ApplyEffectToObject(1, EffectKnockdown(), oPC, 8.0));
      DelayCommand(0.25, SetStandardFactionReputation(REPUTATION_TYPE_ENEMY, 50, oPC));
      DelayCommand(2.30, ClearAllActions(TRUE));
      DelayCommand(4.30, ActionPickUpItem(oWeapon));
      DelayCommand(7.20, ActionMoveToObject(oPC, FALSE, 1.4));
      DelayCommand(10.0, AssignCommand(OBJECT_SELF, ActionStartConversation(oPC, "dl_afterdisarm")));
}

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

З.Ы.
DelayComand() - это задержка от начала выполнения скрипта или от предыдущего действия?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 26 2006, 02:53
Сообщение #2178


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

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



QUOTE(windhover @ Apr 26 2006, 02:49) [snapback]79626[/snapback]
DelayComand() - это задержка от начала выполнения скрипта или от предыдущего действия?

от начала
QUOTE(windhover @ Apr 26 2006, 02:49) [snapback]79626[/snapback]
Чаще всего гвард после проведения дизарма остается хостайл и продолжает атаковать игрока.

ну ессно. Ты ж его заставляешь применить фит, который расценивается как атака. Смена отношения между РС и хостайлами не ясна.
Если уж на то пошло, то тебе надо такое:
- отчистить стеки акций у обоих участников
- (тут можно поставить TemporaryEnemy)
- применить фит дизарм
- наложить кнок
- с небольшой задержкой после дизарма очищай персональные отношения, можешь насильно поставить нейтрал
- запускай диалог. Но учти, что после боя требуется время.

как вариант - выкинуть дизарм. Те анимашка (быстрый взмах рукой.. скажем ANIMATION_LOOPING_TALK_FORCEFUL), эффект кнока, копирование оружия на землю и удаление из руки. Подбор и диалог сразу.

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
windhover
сообщение Apr 26 2006, 18:26
Сообщение #2179


Level 3
*

Класс: Обыватель
Характер: Chaotic Good
Раса: Человек



QUOTE(Lex @ Apr 26 2006, 02:53) [snapback]79629[/snapback]

как вариант - выкинуть дизарм. Те анимашка (быстрый взмах рукой.. скажем ANIMATION_LOOPING_TALK_FORCEFUL), эффект кнока, копирование оружия на землю и удаление из руки. Подбор и диалог сразу.

Спасибо большое, вариант без дизарма действителшьно лучше, так как стража тоже иногда "1" бросает =)
Еще один глупый вопрос: если скрипт вызывается из диалога, ClearAllActions(TRUE) у кого очистит стэк акций?

P.S. простите, поправил.. Mozilla чегойто... (IMG:style_emoticons/kolobok_light/unsure.gif) (IMG:style_emoticons/kolobok_light/unsure.gif)

Сообщение отредактировал windhover - Apr 26 2006, 18:55
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 26 2006, 20:45
Сообщение #2180


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

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



QUOTE(Aiwan @ Apr 26 2006, 19:32) [snapback]79700[/snapback]
Еще один глупый вопрос: если скрипт вызывается из диалога, ClearAllActions(TRUE) у кого очистит стэк акций?

в диалоге если не указываешь объект, или указываешь OBJECT_SELF, то это относится к НПС, с которым разговариваешь. Тут это особо не нужно (я про отчистку), но лучше подстраховаться и ввести в правило: что-то делаешь с Игроком/Неписью - отчисть его стек, если это возможно. (бывают случаи когда стек наоборот чистить не нужно, но эт другая история)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Talarasha
сообщение Apr 28 2006, 05:20
Сообщение #2181


Level 6
**

Класс: Маг
Характер: Lawful Evil
Раса: Нежить



Добрый день (IMG:style_emoticons/kolobok_light/smile.gif) . Не особо разбираюсь в скриптах - все познания ограничиваются установкой локальных переменных, созданием монстров и эффектами, поэтому частенько заглядываю сюда в поисках готовых примеров. Долго искал, но не смог обнаружить, как сделать:
1.Вызов приживалы (спутника, существа у магов и колдунов), вызов элементалей и планаров доступным только в определенных областях и с наличием определенных предметов в инвентаре.
2.Предмет, вызывающий определенное существо сроком на 6 минут, после чего его использование становится невозможным на 12 минут.
Буду очень признателен, если кто-нибудь окажется достаточно терпеливым и объяснит мне, как это сделать (IMG:style_emoticons/kolobok_light/smile.gif) .
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Apr 28 2006, 07:17
Сообщение #2182


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE
2.Предмет, вызывающий определенное существо сроком на 6 минут, после чего его использование становится невозможным на 12 минут.

В закрытой локации, поставь готового NPC.
Поскольку конкретно ничего не сказано о:
QUOTE
после чего его использование становится невозможным

Я сделал так что NPC, после истечении 6 минут, прыгает на нужный вайпоин.
(Скажем, в той же закрытой локе)

На onActivateItem в мод. св-вах:
NSS
void main()
{
  object oPC = GetItemActivator(); // Игрок;
  object oNPC = GetObjectByTag(""); // Таг вызываемого NPC;
  object oWP = GetObjectByTag(""); // Таг "домашнего" вейпа;
  object oItem = GetItemActivated(); // Активируемый предмет;

     if (GetTag(oItem) == "") // Здесь укажи таг oItem ;
      {
        if (GetLocalInt(oPC, "Local") == FALSE)
         {
            SetLocalInt(oPC,"Local", 1);
            DelayCommand(1200.0, SetLocalInt(oPC,"Local",0));
            effect eVisual = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE);
            DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oPC));

            DelayCommand(0.7, AssignCommand(oNPC, ClearAllActions(TRUE)));
            DelayCommand(1.0, AssignCommand(oNPC, ActionJumpToObject(oPC)));

            DelayCommand(599.7, AssignCommand(oNPC, ClearAllActions(TRUE)));
            DelayCommand(600.0, AssignCommand(oNPC, ActionJumpToObject(oWP)));

           
         }

        if (GetLocalInt(oPC, "Local") == TRUE)
         FloatingTextStringOnCreature("Нужное время еще не пришло.", oPC);
      }
}

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

Это можно сделать, немного модернизировав вышеприведенный код, т.е добавить проверку на айтемы, локи и т.п...

Сообщение отредактировал Dik Morris - Apr 28 2006, 07:48
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Talarasha
сообщение Apr 28 2006, 10:44
Сообщение #2183


Level 6
**

Класс: Маг
Характер: Lawful Evil
Раса: Нежить



Премного благодарен (IMG:style_emoticons/kolobok_light/smile.gif) .
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Apr 29 2006, 14:15
Сообщение #2184


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

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Есть гостиница, в ней - разные комнаты. В некоторых есть окна, во всех есть различные источники искусственного освещения.
Нужно сделать естественное освещение, т.е. с наступлением дня и ночи менять тайловое освещение в тех комнатах, в которых есть окна.
Но поскольку просто так скриптами границы комнаты не определишь (насколько я знаю), есть вопрос: Как, по-вашему, наиболее удобно/эффективно обозначать расположение тайлов комнаты для скрипта? Можно, конечно, и в скрипт коррдинаты каждого тайла запихнуть, но это как-то не очень. Повторюсь: ВСЕ тайлы менять не надо, только определённые комнаты.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mefist
сообщение Apr 29 2006, 18:42
Сообщение #2185


Level 1


Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Человек



Недавно сел за редактор и никак не могу понять следующие вещи.

Как приказать NPC двигаться в точку? И как назначить эту точку?

При генерации вещей в сундуках, они выбратся из указанного уровня вещей. А можно ли редактировать эти самые уровни? Например, при генерации золота на высоком уровне получается около 20 золотых, а мне нужно примерно 1000-3000. И можно как-то сделать, чтобы они генерировались из заданного мной списка вещей?


Сообщение отредактировал mefist - Apr 29 2006, 18:53
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Apr 29 2006, 18:51
Сообщение #2186


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



mefist
Для начала прочитай FAQ по тулсету - отпадет много вопросов. ЗДЕСЬ ~ 4mb

QUOTE
Как приказать NPC двигаться в точку?

С помощью фун-ции:
NSS
void ActionMoveToObject(
    object oTarget,
    int bRun = FALSE,
    float fRange = 1.0f
);

QUOTE
И как назначить эту точку?

WayPoints Wizard.
QUOTE
И можно как-то сделать, чтобы они генерировались из заданного мной списка вещей?

Например так:
NSS
void main()
{
  // OnOpen сундука
    object oPC = GetLastOpenedBy();

    if (GetLocalInt(OBJECT_SELF,"Open") == 0)
     {
      SetLocalInt(OBJECT_SELF,"Open",TRUE);

      if (GetHitDice(oPC) == 1)
         CreateItemOnObject("ResRef_itema", OBJECT_SELF);        

      if (GetHitDice(oPC) == 2)
         CreateItemOnObject("ResRef_itema", OBJECT_SELF);

      if (GetHitDice(oPC) == 2)
         CreateItemOnObject("ResRef_itema", OBJECT_SELF);
    // 3, 4, 5 левелы и т.д...
         }
}


Сообщение отредактировал Dik Morris - Apr 29 2006, 19:27
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Apr 29 2006, 19:31
Сообщение #2187


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

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



QUOTE(virusman @ Apr 29 2006, 15:15) [snapback]80129[/snapback]
Но поскольку просто так скриптами границы комнаты не определишь (насколько я знаю), есть вопрос: Как, по-вашему, наиболее удобно/эффективно обозначать расположение тайлов комнаты для скрипта?


в 1.67 есть что-то вроде GetAreaSize(), но близко не смотрел. Для обозначения тайлов удобнее всего ставить вэйпоинты, и по их координатам определять, что за тайл.

Почему-то когда пыталася сделать нечто подобное, то ничего не было видно, пока не выйдешь и снова не зайдешь в область. RecalculateStaticLighting() не помогает. Похоже цвет вделанных в тайлы факелов считается статическими данными, т.е. считываются один раз при заходе в область, а RecalculateStaticLighting пересчитывает карту теней, учитывая статические данные о свете и свет плейсов. Кажется по этой же причине нельзя создавать звуки скриптами. Хотя, может быть просто что-то криво делал (IMG:style_emoticons/kolobok_light/wacko.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mefist
сообщение Apr 29 2006, 21:16
Сообщение #2188


Level 1


Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Человек



Спасибо. А можно все-таки менять границы категорий при генерации вещей? Например, при генерации золота категории high создается около 20 золота, а мне нужно, допустим, около 1000. Или есть какая-то другая альтернатива? С деньгами то проще, их можно делать через рандом, а вот с вещами мне что-то ничего в голову не приходит.

И еще вопрос, как сделать чтобы в диалоге учавствали сразу несколько NPC?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Apr 29 2006, 21:39
Сообщение #2189


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

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



QUOTE(mefist @ Apr 30 2006, 00:16) [snapback]80189[/snapback]
И еще вопрос, как сделать чтобы в диалоге учавствали сразу несколько NPC?

Читайте мой мануал с сайта. Очень много чего написано.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mefist
сообщение Apr 29 2006, 22:22
Сообщение #2190


Level 1


Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Человек



Ты про Цикл "Aurora Toolset"? я что-то там этого не нашел. Не мог бы дать ссылку?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Apr 29 2006, 22:29
Сообщение #2191


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

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



Посомтри в теме ссылок здесь в это разделе. Там как раз мой мануал есть в PDF.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение May 4 2006, 18:10
Сообщение #2192


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

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



А вы знаете, что енкаучеры не удаляются (IMG:style_emoticons/kolobok_light/smile.gif) Я вот не шмог удалить... (IMG:style_emoticons/kolobok_light/pardon.gif) Кто шмог?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение May 8 2006, 06:58
Сообщение #2193


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

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



QUOTE(Aiwan @ May 4 2006, 19:10) [snapback]80757[/snapback]

А вы знаете, что енкаучеры не удаляются (IMG:style_emoticons/kolobok_light/smile.gif) Я вот не шмог удалить... (IMG:style_emoticons/kolobok_light/pardon.gif) Кто шмог?

Aiwan, я тоже не смог, но можно запретить после определенного события. Устроит?
NSS
void main()
{
object oPC = GetFirstPC();
AssignCommand(oPC, SetEncounterActive(FALSE, GetObjectByTag("VOLKI")));
}
// Удалить встречу с монстрами
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение May 8 2006, 09:27
Сообщение #2194


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

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



gennady, спасибо. У меня оно так и работает. Но бывает случай, когда енкаучер уже совсем не нужен. Раньше я ставил удалить. А вот недавно понял что не удаляется. Это гораздо обломнее узнать после выхода модуля... Я просто молодежи писал скрипт на срабатывание енкаучера по локалке. Вот его переписал заново. Енкаучер должен быть неактивен и срабатывать только один раз в настройках.

NSS
//:://////////////////////////////////////////////
//:: OnEnter  am_een_local_on
//:: Copyright © 2006 WRG!
//:://////////////////////////////////////////////
/*
  Включает енкаучер, если на РС нет ни одной
  локальной переменной равной стрингу LOCAL_PC_0X
  float "TIME" - время срабатывания енкаучера
  Локалка "NUMBER" - означает сколько раз сработает.
  Если ее нет, сразу уничтожится.
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 04.05.2006
//:://////////////////////////////////////////////
#include "am_inc_debug"

void main()
{
  object oPC = GetEnteringObject();
  object oEnc = OBJECT_SELF;
  object oArea = GetArea(OBJECT_SELF);
  float f = GetLocalFloat(oEnc, "TIME");
  int i = GetLocalInt(oEnc, "NUMBER");
  string sLl = GetLocalString(oEnc, "LOCAL_PC_01"); // Локальные переменные
  string sL2 = GetLocalString(oEnc, "LOCAL_PC_02"); // при каторых енкаучер
  string sL3 = GetLocalString(oEnc, "LOCAL_PC_03"); // не сработает.
  string sL4 = GetLocalString(oEnc, "LOCAL_PC_04");
  string sL5 = GetLocalString(oEnc, "LOCAL_PC_05");
  int iFalse;

  if(!GetIsPC(oPC)) return;
  if(GetLocalInt(oEnc, "FIGHT!")) return; // Енкаучер сработал
  if(sLl=="" && sL2 =="" && sL3=="" && sL4=="" && sL5=="") return;

  if(GetLocalInt(oPC, sLl) || GetLocalInt(oPC, sL2) || GetLocalInt(oPC, sL3)
  || GetLocalInt(oPC, sL4) || GetLocalInt(oPC, sL5))
  {
    Debug("Енкаучер '"+GetName(oEnc)+"' не сработает, т.к. переменные триггера и РС совпали.");
    return;
  }
  if(i == 0) // Если 0, то отключаем
  {
      Debug("Отключаем енкаучер. Манчи плачут на взрыд...");
      // Манчи плачут на взрыд...
      return;
    }
    else if(GetEncounterActive(oEnc) == FALSE)
      {
        if (f == 0.0) f = 600.0; // 10 минут, стандартный респавн
        SetEncounterActive(TRUE);
        DelayCommand(1.0, SetEncounterActive(FALSE, oEnc));
        SetLocalInt(oEnc, "FIGHT!", TRUE);
        // Тут самое интересное. Неактивный енкаучер DelayCommand не исполняет
        // поэтому я попросил это сделать локацию, в котором он стоит. Она вроде
        // как не против...
          SetLocalInt(oEnc, "NUMBER", i-1);
          Debug("Енкаучер сработает еще ["+IntToString(GetLocalInt(oEnc, "NUMBER"))+"] раз. ");
          AssignCommand(oArea, DelayCommand(f, SetLocalInt(oEnc, "FIGHT!", FALSE)));

      }
      else return;
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение May 8 2006, 14:50
Сообщение #2195


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

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



QUOTE(Aiwan @ May 8 2006, 10:27) [snapback]81091[/snapback]
Но бывает случай, когда енкаучер уже совсем не нужен.


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

NSS
//:://////////////////////////////////////////////
//:: Created By: Gennady
//:: Created On:27.04.2006
//:://////////////////////////////////////////////
void main()
{
object oPC = GetEnteringObject();
object oSelf = OBJECT_SELF;
object oPlc = GetNearestObjectByTag("LOC_"+GetTag(oSelf));
location lLoc = GetLocation(oPlc);
string sResRef = GetName(oSelf); // Объект создаваемый
string sNewTag = GetTag(oSelf);  // Тег созданиЯ
int iN = StringToInt(GetLockKeyTag(oSelf)); // Количество созданий
int iNN = StringToInt(sNewTag); // Количество встреч
int iNM = 0;
effect eEffect1 = EffectVisualEffect(VFX_IMP_LIGHTNING_M);
effect eEffect2 = EffectVisualEffect(VFX_IMP_DISPEL);

if(!GetIsPC(oPC)||GetLocalInt(oSelf, "DEACTIVATED")) return;
{
  while (iN != iNM)
  {
   if (GetIsObjectValid(oPlc))
   CreateObject(OBJECT_TYPE_CREATURE, sResRef, lLoc,TRUE,sNewTag);
   else
   CreateObject(OBJECT_TYPE_CREATURE, sResRef, GetLocation(oSelf),TRUE,sNewTag);
   iNM++;
  }
if (GetIsObjectValid(oPlc))
{
  ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect1, GetLocation(oPlc));
  DelayCommand(1.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect2, GetLocation(oPlc)));
}
else
{
  ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect1, GetLocation(oSelf));
  DelayCommand(1.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect2, GetLocation(oSelf)));
}
   if (sNewTag == "1")
  {
    DelayCommand(0.2, SetLocalInt(oSelf, "DEACTIVATED", TRUE));
   DestroyObject(oSelf, 2.0);
  }
   else
   {
    DelayCommand(0.2, SetLocalInt(oSelf, "DEACTIVATED", TRUE));
    DelayCommand(1000.0, SetLocalInt(oSelf, "DEACTIVATED", FALSE));
    if (iNN < 1) return;
    SetLocalInt(oSelf, "NUM", GetLocalInt(oSelf, "NUM") + 1);
    if (GetLocalInt(oSelf, "NUM") >= iNN)
    DestroyObject(oSelf, 2.0);
   }
}
}
/*            Встреча
  Триггер содержит в названии ResRef объкта, который появится.
  Точка, где появится объект LOC_+Тег триггера, если точки нет - то к триггеру.
  Поле триггера KeyTag - Количество созданий
  Если тег триггера 1, то встреча только один раз, если другой,
  то повтор через 1000 секунд, если цифра, то это количество встреч.
*/


Сообщение отредактировал gennady - May 20 2006, 05:26
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение May 8 2006, 18:43
Сообщение #2196


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

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



Если бы все было так просто.... (IMG:style_emoticons/kolobok_light/pardon.gif) Триггер залудить это две секунды. Даже если взять в расчет уровень игрока и потом спавнить НПС или монстров. Но ваш триггер громадный дизбаланс... Вы это поймете когда запустите в модуль игрокоы с уровнем 5-10 примерно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 8 2006, 19:00
Сообщение #2197


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

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



Триггер проигрывает энкаунтеру в:
- гибкости и легкости настройки (добавить, удалить из листа, уникальный спавн и прочее)
- спавн на энкаунтерах сбалансированный, по CR, а на триггерах нет.
а выигрыш только в том, что его можно удалить.
сомнительные преимущества триггера (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Don_Beavis
сообщение May 9 2006, 09:38
Сообщение #2198


Level 1


Класс: Клерик
Характер: Neutral Evil
Раса: Дварф



Глупый нубский вопрос (IMG:style_emoticons/kolobok_light/rolleyes.gif) . Как поднять максимальное кол-во опыта, получаемое при убийстве моба и как сделать так, что бы в пати опыт резался не по полам(в случае если патя из двух человек), а процентов на 10, и что бы сумоны не жрали экспу. Заранее спасибо (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение May 9 2006, 10:08
Сообщение #2199


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

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



1. Ставим уровень игры Изи. Открываем вкладку в свойствах модуля в Адвантес:
QUOTE

Приспособьте ползунок так, чтобы снимать тот опыт, который герой автоматически получит в течение игры:

0% - опыт должен быть присужден или вручную, или же по сценарию.
100% - стандартные вознаграждения опыта, основанные на таблице НН.
2000% - 20 x стандартный награды опыта
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение May 9 2006, 11:47
Сообщение #2200


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



Ситуация: у всех NPC в OnConversation стоит

NSS
оbject oPC = GetFirstPC();

SetCutsceneMode(oPC, TRUE);

ActionStartConversation(oPC, "", FALSE, TRUE);


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


NSS
void main()
{

object oPC = GetPCSpeaker();
object oTarget;

SetCutsceneMode(oPC, FALSE);


oTarget = GetObjectByTag("1");

DelayCommand(0.2, SetIsTemporaryEnemy(oPC, oTarget));

DelayCommand(0.2, ActionAttack(oPC));

oTarget = GetObjectByTag("2");

DelayCommand(0.2, SetIsTemporaryEnemy(oPC, oTarget));

DelayCommand(0.2, AssignCommand(oTarget, ActionAttack(oPC)));

oTarget = GetObjectByTag("3");

DelayCommand(0.2, SetIsTemporaryEnemy(oPC, oTarget));

DelayCommand(0.2, AssignCommand(oTarget, ActionAttack(oPC)));

}


Откладываю команды чуть-чуть, чтобы сначала выйти из фильма. Получается черт знает что, точнее, и того не выходит. Между прочим, пытался менять местами в TemporaryEnemy oPC и oTarget. Не помогает.

Или вот еще. Когда начинается разговор в том же режиме, то ставлю на первую реплику игрока следующее, чтобы к нему повернулись:

NSS
void main()
{

object oPC = GetPCSpeaker();

AssignCommand(GetObjectByTag("1"), SetFacingPoint(GetPosition(oPC)));

DelayCommand(0.5, AssignCommand(GetObjectByTag("2"), SetFacingPoint(GetPosition(oPC))));
DelayCommand(0.5, AssignCommand(GetObjectByTag("2"), ActionPlayAnimation(ANIMATION_FIREFORGET_SPASM)));

DelayCommand(1.2, AssignCommand(GetObjectByTag("3"), SetFacingPoint(GetPosition(oPC))));
DelayCommand(1.6, AssignCommand(GetObjectByTag("3"), ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD)));

}


Не работает. И еще какая-то странность. Тот скрипт выше, с которым полагается начинать драку, все же позволяет мне выйти из разговора и режима фильма. Правда, никто не нападает. Зато если потом обычным порядком напасть на тех NPC, то есть выбрать меч в меню, то все тут же переходит в режим фильма и драка уже разыгрывается как в театре - без интерфейса, без урона (раз все стали Plot) и без конца. Кто-нибудь может это объяснить?

Сообщение отредактировал Chimeric - May 9 2006, 11:47
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 86 87 88 89 90 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30th April 2025 - 00:12