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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 107 108 109 110 111 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
Lex
сообщение Jul 11 2006, 18:22
Сообщение #2696


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

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



QUOTE(Dik Morris @ Jul 11 2006, 18:59) [snapback]87598[/snapback]
PS: Перевод Lex'a ? Первый раз слышу.

я тоже.
о каких флагах речь? если те, что в спавне ставятся типа *_FLAG_*, то они все там в коментах и описаны. + почитай в топике..Готовые скрипты или Скрипты для хенчей, там есть Айвановские варианты спавна с русскими комментариями.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Noah
сообщение Jul 11 2006, 20:50
Сообщение #2697


Level 5
**

Класс: Убийца
Характер: Chaotic Neutral
Раса: Полуэльф



Да?А я где-то читал,что он твой...Спасиб,за подсказку(о флагах)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Симирель
сообщение Jul 12 2006, 02:17
Сообщение #2698


Level 2
*

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



я ДИКО извеняюсь, но у меня вопрос как можно чтобы после разговора существо ушло к двери и изчезло?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Artlira
сообщение Jul 12 2006, 05:53
Сообщение #2699


Level 4
**

Класс: Маг
Характер: Chaotic Neutral
Раса: Танар'ри



Симирель, здесь на форуме, в теме "Скрипты для новичков" есть скрипт с уходом Nps на WP(где он и дестроится), сам WP_EXSIT можно где угодно поставить. У меня, с помощью этого скрипта одно чудо даже в озере утопилось.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Jul 12 2006, 12:52
Сообщение #2700


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



Подскажите, как сделать что бы фонарь включался в 20 и выключался в 8 часов?

И ещё кто-нибудь знает скрипт, что бы если ты берёш что-то из контейнера, а рядом стоит NPC, то он к тебе подбегал и что-то говорил?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 12 2006, 12:58
Сообщение #2701


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

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



На OnHeartBeat фонаря:

NSS
void RemoveEffectType(object oTarger, int nEffect)
{
    effect eEffect = GetFirstEffect(oTarger);
    while (GetIsEffectValid(eEffect))
    {
      if (GetEffectType(eEffect) == nEffect)
      {
       RemoveEffect(oTarger, eEffect);
      }
      eEffect = GetNextEffect(oTarger);
    }}

void main()
{
  if (GetArea(GetFirstPC()) != GetArea(OBJECT_SELF))
   return;

  if (GetTimeHour() == 8 && GetLocalInt(OBJECT_SELF, "Day") == FALSE)
   {
    SetLocalInt(OBJECT_SELF, "Day", TRUE);
    SetLocalInt(OBJECT_SELF, "Night", FALSE);
    ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);
    RemoveEffectType(OBJECT_SELF, EFFECT_TYPE_VISUALEFFECT);
    return;
   }

  if (GetTimeHour() == 20  && GetLocalInt(OBJECT_SELF, "Night") == FALSE)
   {
    SetLocalInt(OBJECT_SELF, "Night", TRUE);
    SetLocalInt(OBJECT_SELF, "Day", FALSE);
    effect eLight = EffectVisualEffect(170);
    ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
    ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, OBJECT_SELF);
    return;
   }
// Вообще, проще использовать: GetDay, GetNight.
}


По поводу второго вопроса, посмотри в ПЛ там это было реализовано. (IMG:style_emoticons/kolobok_light/wink3.gif)

Сообщение отредактировал Dik Morris - Jul 12 2006, 13:02
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Jul 12 2006, 13:20
Сообщение #2702


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



Где-то в скрипте ошибка, фонари горят круглосуточно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 12 2006, 13:25
Сообщение #2703


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Milfes, у меня есть подобная система проверки. Сам делал. Вообще, чтобы проверить, что будет делать НПС, когда ты возьмешь вещь из сундука, достаточно изменить поле фракции у сундука на фракцию НПС. По умолчанию, как это прописано в скрипте "nw_o2_coninclude", функция "ShoutDisturbed", НПС лишь нападает на того, кто взял вещь из сундука. Посмотри данную функцию. При небольшой сноровке в скриптах, ее легко можно изменить, чтобы НПС не бил вора, а говорил с ним.

В моей системе НПС подбегает к вору, и предлагает ему выбор: заплатить штраф, пойти в тюрьму или сразиться. В диалоге есть проверка умений блеф и убеждение. Если НПС их проваливает, то вор уходит с вещью, а если наоборот, то НПС забирает у вора вещь и сажает его в тюрьму (IMG:style_emoticons/kolobok_light/smile.gif)

Dik Morris, а зачем на фонарь эффект вешать? (IMG:style_emoticons/kolobok_light/smile.gif) Есть же функция "SetPlaceableIllumination". Когда ночь, ее надо делать:

NSS
SetPlaceableIllumination(oLight, TRUE);

А когда день:
NSS
SetPlaceableIllumination(oLight, FALSE);

Далее, не надо использовать "ActionPlayAnimation". Фонари же стоят, и вообще ничего не делают (IMG:style_emoticons/kolobok_light/smile.gif) Зачем им действие? Достаточно, когда ночь:
NSS
AssignCommand(OBJECT_SELF, PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE));

А когда день:
NSS
AssignCommand(OBJECT_SELF, PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));

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

Сообщение отредактировал Zirrex - Jul 12 2006, 13:42
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Jul 12 2006, 13:32
Сообщение #2704


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



QUOTE
В моей системе НПС подбегает к вору, и предлагает ему выбор: заплатить штраф, пойти в тюрьму или сразиться. В диалоге есть проверка умений блеф и убеждение. Если НПС их проваливает, то вор уходит с вещью, а если наоборот, то НПС забирает у вора вещь и сажает его в тюрьму


Zirrex, хорошо придумал! Может быть воспользуюсь чем-нибудь в этом роде. Но интересно после того как тебя сажают в тюрьму ты оттуда просто сбегаешь или просто проходит несколько игровых часов и тебя отпускают?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Neo
сообщение Jul 12 2006, 13:35
Сообщение #2705



Иконки Групп

Класс: Пьяный Мастер
Характер: Lawful Good
Раса: Тварь
MySQL, PHP, JavaScript
Порядок Времени



Dik Morris, жжошь (IMG:style_emoticons/kolobok_light/biggrin.gif) ставишь порядка 30-40 фонарей и лока на средней машинке начинает тормозить (IMG:style_emoticons/kolobok_light/wink3.gif)
нах на каждый фонарь такое вешать? 1 объект, который пробежицца по всем объектам с заданными тегами и выполнит нужные действия гораздо эффективнее
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 12 2006, 13:47
Сообщение #2706


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Milfes, учитывая то, что есть еще система репутации, то вор в тюрьме сидит ровно столько, сколько у него значение репутации. Т.е., каждые, например, 6 секунд, у него репутация поднимается на 5 единиц (можно меньше; зависит от того, как настроишь). Когда репутация становится равной нулю, то вора перемещает на свободу в одну точку. На самом деле это не очень реалистично, в будущем переделаю, чтобы вора перемещало напротив камеры, в которой он сидел.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Симирель
сообщение Jul 12 2006, 14:01
Сообщение #2707


Level 2
*

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



Люди, просто не могу прочитать 100страниц,блин.
Прошу, может знает кто как сделать так, что
1.когда герой дергает за рычаг, или хотя бы дотронулся до предмета его шарахнуло молнией и перенесло в другое место?
2.После разговора существо изчезает с каким нибудь финтом(диспелс итд.)
3.Существо после разговора раздвоивается и нападает?

Если сможете, то подскажите плииииз, только с обьяснением если можно...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Jul 12 2006, 14:48
Сообщение #2708


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



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


Zirrex, если не трудно помети в базу скриптов, а то никак неполучается с фонарями. (IMG:style_emoticons/kolobok_light/unknw.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 12 2006, 18:57
Сообщение #2709


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

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



Создаешь в палитре два объекта фонаря. Убираешь в свйствах "статик". У одного делаешь без анимации и света модель. Второй нормально. На каждый объект вешаешь стринг "NEW_ResRef" ResRefa объекта другого. Напримере у горящего будет таг PLC_ON и на нем будет стинг NEW_ResRef - PLC_OFF который создается на его месте. Все варианты включать-выключать не канают. Работает не всегда верно. Этот вариант пашет круто и проверен сто раз. Звук обычно должен БЫТ ЬУНИКАЛЬНЫЙ КАЖДЫЙ. Соотвественно что бы не ошибиться я приравниваю его к тегу локации и добавляю номер порядковый. Ошибешься на один номер остальные не будут включаться.
NSS
//:://////////////////////////////////////////////
//:: OnEnter  am_exe_torch_del
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
    ВКЛЮЧАЕМ ОГОНЬ ФАКЕЛОВ И ЗВУК К НИМ НОЧЬЮ.

Таг факела = "AM_PLS_TORCH_OFF". Он должен быть с
в палитре с моделью факела без амбиент анимации.
Именно его и надо расставить в локации. Иначе будет
свет от факела гореть над ним. Его ResRef "am_pls_torchoff"
Таг горящего факела = "AM_PLS_TORCH_ON" ResRef "am_pls_torchon"
Звуковой объект ставим рядом с факелом, помните его таг
ДОЛЖЕН БЫТЬ УНИКАЛЬНЫМ ВО ВСЕМ МОДУЛЕ. Иначе не
сработает. К примеру таг моего звука, равен тагу
триггера плюс порядковый номер, начиная с еденицы:
AM_SOUND_TORTCH_(порядковый номер = i). Расставляйте
на локации факела и звуки рядом.
"NEW_ResRef" Локальный стринг ResRef-а объекта, который
создаем на месте этого. Все готово!

*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 08.06.2005
//:://///////////////////////////////////////////

void main()
{
  int i=1; // Первый порядковый номер тага звука
  float f=0.5; // Задержка дестроя
  string sSound = GetTag(OBJECT_SELF); // Приравнял таг Локации к звуовому
  object oTorch = GetFirstObjectInArea(OBJECT_SELF);
  object oSound = GetObjectByTag(sSound+IntToString(i)); // Звуковой объект
  effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_20); // Свет факела
  int nEvent = GetUserDefinedEventNumber();
//======================= USERDEINE EVENT 1000 =================================
if (GetIsDay() || GetIsDawn())
//---------------------------------- ДЕНЬ --------------------------------------
  {
  while (GetIsObjectValid(oTorch))
      {
      if (GetTag(oTorch) == "AM_PLS_TORCH_ON" && !GetLocalInt(oTorch, "DO"))
        /* Проверяем все объекты на локации, берем с нужным тегом и без
            локальной переменной, что с объектом уже выключен. */

          {
          string sResRef = GetLocalString(oTorch, "NEW_ResRef");
          SetLocalInt(oTorch, "DO", TRUE);
          DestroyObject(oTorch, f);
          CreateObject(OBJECT_TYPE_PLACEABLE,sResRef, GetLocation(oTorch));
          f=f+0.2; // Сделай паузу!
          }
          if (GetIsObjectValid(oSound))
            {
            SoundObjectStop(oSound); // Выключаем звук
            i++;  // Присвоим объекту звука таг на единицу больше
            }
      oSound = GetObjectByTag(sSound+IntToString(i));
      oTorch = GetNextObjectInArea(OBJECT_SELF);
      }
    return;
  }
//======================= USERDEINE EVENT 3000 =================================
  else if (GetIsNight() || GetIsDusk())
//----------------------------- НОЧЬ -------------------------------------------
  {
  while (GetIsObjectValid(oTorch))
      {
      if (GetTag(oTorch) == "AM_PLS_TORCH_OFF" && !GetLocalInt(oTorch, "DO"))
        {
          string sResRef = GetLocalString(oTorch, "NEW_ResRef");
          SetLocalInt(oTorch, "DO", TRUE);
          DestroyObject(oTorch, f);
          object oTorchNew = CreateObject(OBJECT_TYPE_PLACEABLE,sResRef, GetLocation(oTorch));
          DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oTorchNew));
          f=f+0.2; // Сделай паузу!
          }
          if (GetIsObjectValid(oSound))
            {
            SoundObjectPlay(oSound); // Включаем звук
            i++; // Присвоим объекту звука таг на единицу больше
            }
      oSound = GetObjectByTag(sSound+IntToString(i));
      oTorch = GetNextObjectInArea(OBJECT_SELF);
      }
  }
}


Запускат скрипт можно хоть где. И хоть как. Обычно я юзаю хертбит с пометкой что наступил день.
NSS
//:://////////////////////////////////////////////
//:: OnEnter  am_ahb_day_night
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
  Скрипт локаций День/Ночь. Запускает OnUserDefined
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Edit By: Lex
//:: Created On: 24.05.2005
//:://///////////////////////////////////////////

void main()
{
object oPC = GetFirstPC();
if (GetArea(oPC) != OBJECT_SELF) return;

if (GetIsDusk()||GetIsNight())
    {
    if (GetLocalInt(OBJECT_SELF, "Night") != 1)
        {
        SetLocalInt(OBJECT_SELF, "Day", 0);
        SetLocalInt(OBJECT_SELF, "Night", 1);
        SignalEvent(OBJECT_SELF, EventUserDefined(3000));
        SignalEvent(OBJECT_SELF, EventUserDefined(4000));
        return;
        }
    else return;
    }
if (GetIsDawn()||GetIsDay())
    {
    if (GetLocalInt(OBJECT_SELF, "Day") != 1)
        {
        SetLocalInt(OBJECT_SELF, "Night", 0);
        SetLocalInt(OBJECT_SELF, "Day", 1);
        SignalEvent(OBJECT_SELF, EventUserDefined(1000));
        SignalEvent(OBJECT_SELF, EventUserDefined(2000));
        return;
        }
    else return;
    }
}

Вот этот кусок на Юзер Деф локации.
NSS
int nEvent = GetUserDefinedEventNumber();
object oArea = OBJECT_SELF;

if (nEvent == 2000)
{
  {
    DelayCommand(5.0, ExecuteScript("am_exe_torch_del", OBJECT_SELF));
  }
}
//======================= USERDEINE EVENT 3000 =================================
if (nEvent == 3000)
  {

  }
//======================= USERDEINE EVENT 4000 =================================
if (nEvent == 4000)
{
  {
    DelayCommand(5.0, ExecuteScript("am_exe_torch_del", OBJECT_SELF));
  }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Jul 12 2006, 19:16
Сообщение #2710


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



Я маленько не вник, какой звук надо ставить?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 12 2006, 20:39
Сообщение #2711


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

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



Берешь звуковой файл. Простой в палитре. Например звук факел. Делаешь его с уникальным тегом ТАГ_ЛОКАЦИИ_1б ТАГ_ЛОКАЦИИ_2. Ставишь звуки рядом с факелами и у тебя звук вместе с костром - факелом по ночам. Ясно?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 12 2006, 20:42
Сообщение #2712


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Milfes, звук берется из тэга локации, к которому прибавляется 1, а когда прокручивается цикл, добавляется к тэгу звука 1, нумеруя и проигрывая его около фонаря. Звук ты можешь взять либо кастомный, либо из палитры, только измени его тэг на тэг локации.

Aiwan, одного не понял, как включаются и выключаются звуки, если изначально тэг звука равен "AM_SOUND_TORTCH_"? Сприт же просто не найдет звука с тэгом "AM_SOUND_TORTCH_1".

З.Ы. Aiwan, почему таг, а не тэг? (IMG:style_emoticons/kolobok_light/rolleyes.gif)

Сообщение отредактировал Zirrex - Jul 12 2006, 20:43
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Jul 12 2006, 20:43
Сообщение #2713


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



У меня фонари, а не факелы.

Мне кажеться глупо если будет проигрываться этот звук рядом с фонарём.

Сообщение отредактировал Milfes - Jul 12 2006, 20:46
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 12 2006, 20:45
Сообщение #2714


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Milfes, аж насмешил (IMG:style_emoticons/kolobok_light/swoon.gif) посмотри палитру звуков, подбери звук, который больше соответствует фонарю. Да и потом, фонарей в то время не было, были факелы, выглядящие как фонари, потому что устанавливались на большие шесты.

Сообщение отредактировал Zirrex - Jul 12 2006, 20:46
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Симирель
сообщение Jul 12 2006, 20:52
Сообщение #2715


Level 2
*

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



Люди, просто не могу прочитать 100страниц, хотя уже 40 смог осилить.
Прошу, может знает кто как сделать так, что
1.когда герой дергает за рычаг, или хотя бы дотронулся до предмета его шарахнуло молнией и перенесло в другое место?
2.После разговора существо изчезает с каким нибудь финтом(диспелс итд.)
3.Существо после разговора раздвоивается и нападает?

Если сможете, то подскажите плииииз, только с обьяснением если можно...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Jul 12 2006, 21:08
Сообщение #2716


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



Zirrex, а куда первую часть скрипта вставлять, тоже в хертбит или нет?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 12 2006, 21:20
Сообщение #2717


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

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



Zirrex, NeoJSmith, спасибо за поправки. Я еще новичок, посему ошибки частенько допускаю. (IMG:style_emoticons/kolobok_light/pleasantry.gif)
Все учту.

Симирель,

1. Ставь скрипт на onUsed плейса, не забуть сделать его юзабельным.

NSS
void main()
{
  object oPC = GetLastUsedBy();
  location lLoc = GetLocation(GetObjectByTag("Тэг_места"));

  if (GetLocalInt(OBJECT_SELF, "Used") == TRUE) return; // Если не нужно, чтобы скрипт сработал 1 раз - удалить,

  SetLocalInt(OBJECT_SELF, "Used", TRUE); // Если не нужно, чтобы скрипт сработал 1 раз - удалить,

  DelayCommand(0.5, AssignCommand(oPC, ClearAllActions()));
  DelayCommand(0.5, ApplyEffectToObject(0 , EffectVisualEffect(74), oPC));
  DelayCommand(0.8, AssignCommand(oPC, ActionJumpToLocation(lLoc)));
}


2. Фун-ция: DestroyObject + читать это.

3. На конец диалога, в строчку ActionTakens:

NSS
void main()
{
if (GetLocalInt(OBJECT_SELF, "Temp") == FALSE) // На всякий случай (IMG:style_emoticons/kolobok_light/smile.gif)
  {
    SetLocalInt(OBJECT_SELF, "Temp", TRUE);
    object oNPC = CopyObject(OBJECT_SELF, GetLocation(OBJECT_SELF), OBJECT_INVALID);
    DelayCommand(0.5, AssignCommand(oNPC, ActionAttack(GetFirstPC())));
    DelayCommand(0.5, AssignCommand(OBJECT_SELF, ActionAttack(GetFirstPC())));
  }
}


Сообщение отредактировал Dik Morris - Jul 12 2006, 21:32
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 12 2006, 21:23
Сообщение #2718


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



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

1. Неосторожного и любопытного персонажа бьет молнией и сбивает с ног. Скрипт ставится на эвент "OnUsed" объекта (рычаг):
NSS
void main()
{
    object oPC = GetLastUsedBy();

    int nSwitch = d10() + 1;
    string sSound;

    // Берем текущее значение жизни, и чтобы не убило, делим его на 2
    int nHP = GetCurrentHitPoints(oPC) / 2;
    nHP = Random(nHP);

    switch (nSwitch)
    {
        case 1: sSound = "as_pl_lafspook1"; break;
        case 2: sSound = "as_pl_lafspook3"; break;
        case 3: sSound = "vs_nzorxxxm_haha"; break;
        case 4: sSound = "vs_nx2sleem_haha"; break;
        case 5: sSound = "vs_nx2intlm_haha"; break;
        case 6: sSound = "vs_nx2grulm_haha"; break;
        case 7: sSound = "vs_nx0heurf_haha"; break;
        case 8: sSound = "vs_nx0headm_haha"; break;
        case 9: sSound = "vs_nthugxf1_haha"; break;
        case 10: sSound = "vs_nx0tymom_haha"; break;
    }
    // Проигрываем случайный звук
    PlaySound(sSound);

    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), oPC);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nHP, DAMAGE_TYPE_ELECTRICAL), oPC);
    DelayCommand(0.1, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectKnockdown(), oPC, 12.0));
}

2. На окончание разговора с НПС ставим скрипт:
NSS
void main()
{
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON), OBJECT_SELF);
    DestroyObject(OBJECT_SELF, 3.0);
}

3. Создаем копию НПС рядом с этим же НПС. Для профилактики изымаем деньги и делаем не выпадающими все его вещи (можно убрать, не актуально):
NSS
void CopyCreature(object oPC, object oCreature, location lLocation)
{
    oCreature = CopyObject(oPC, lLocation);

    int i;
    object oEquip;

    for (i = 0; i < 18; i++)
    {
        oEquip = GetItemInSlot(i, oCreature);

        if (GetIsObjectValid(oEquip)) SetDroppableFlag(oEquip, FALSE);
    }

    object oLoot = GetFirstItemInInventory(oCreature);

    while (oLoot != OBJECT_INVALID)
    {
        SetDroppableFlag(oLoot, FALSE);
        oLoot = GetNextItemInInventory(oCreature);
    }

    TakeGoldFromCreature(GetGold(oCreature), oCreature, TRUE);

    ChangeToStandardFaction(oCreature, STANDARD_FACTION_HOSTILE);
    ActionAttack(oPC);
}

void main()
{
    object oPC = GetPCSpeaker();

    ChangeToStandardFaction(OBJECT_SELF, STANDARD_FACTION_HOSTILE);
    CopyCreature(oPC, OBJECT_SELF, GetLocation(OBJECT_SELF));
    ClearAllActions();
    ActionAttack(oPC);
}

Последний скрипт не проверял, но работать, по идее, должен.

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

Сообщение отредактировал Zirrex - Jul 12 2006, 23:27
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Jul 12 2006, 22:26
Сообщение #2719


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



Всё равно не получаеться, звук работает даже днём, а факел ночью не загорается.

Так же немогу понять какой тег должен быть у фонаря, такой

QUOTE
Напримере у горящего будет таг PLC_ON


или такой

QUOTE
Таг горящего факела = "AM_PLS_TORCH_ON"


И весь ли скрипт надо писать в OnUserDefined?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 12 2006, 23:25
Сообщение #2720


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Milfes, нет, на эвент "OnUserDefined" необходимо поместить только последний скрипт. Первое, лишь приставка для тэга горящего фонаря. Но только "ON", а не "PLC_ON". Должно быть так:

1. Горящий фонарь: тэг "AM_PLS_TORCH_ON" (это пример, ты можешь имя тэга сделать любым, но сохрани приставку "ON" или "OFF". Писать можно и маленькими буквами. Это не актуально, ибо нет проверки.)
2. Не горящий фонарь: тэг "AM_PLS_TORCH_OFF".

В палитре у тебя должно лежать два объекта фонаря, у одного тэг "AM_PLS_TORCH_ON", у другого "AM_PLS_TORCH_OFF". Когда сменяется день на ночь, удаляются фонари с тэгом "AM_PLS_TORCH_OFF", заменяясь фонарями с тэгом "AM_PLS_TORCH_ON".
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

205 страниц V  « < 107 108 109 110 111 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 27th July 2025 - 19:37