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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 87 88 89 90 91 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
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
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 9 2006, 12:35
Сообщение #2201


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

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



скрипты атаки и поворота работают без режима катсцены, в старом варианте?

\\ переношу в скрипты

QUOTE(Chimeric @ May 9 2006, 12:47) [snapback]81184[/snapback]
Ситуация: у всех NPC в OnConversation стоит
NSS
оbject oPC = GetFirstPC();
SetCutsceneMode(oPC, TRUE);
ActionStartConversation(oPC, "", FALSE, TRUE);


Лучше не так.. Я же приводил скрипт для onConversation
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение May 9 2006, 16:38
Сообщение #2202


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

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



В твоем скрипте есть какой-то RespondToShout, который Аврора не признает.

Скрипты не работают и без катсцены. Только что теги проверял, думал, может, не те. Они. В точности тот же тег у существа, что и в скрипте, но SetFacingPoint - кукиш. Бой тоже не начинается.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 9 2006, 19:24
Сообщение #2203


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

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



QUOTE(Chimeric @ May 9 2006, 17:38) [snapback]81196[/snapback]
Скрипты не работают и без катсцены

значит дело не в ней (IMG:style_emoticons/kolobok_light/yes3.gif) .
QUOTE(Chimeric @ May 9 2006, 17:38) [snapback]81196[/snapback]
В твоем скрипте есть какой-то RespondToShout, который Аврора не признает.

это как это не признает???? RespondToShout описана в библе nw_i0_generic, она там в скрипте подключена сверху
NSS
#include "nw_i0_generic"


ща посмотрим, что там не так в скриптах

QUOTE(Chimeric @ May 9 2006, 12:47) [snapback]81184[/snapback]
Или вот еще. Когда начинается разговор в том же режиме, то ставлю на первую реплику игрока следующее, чтобы к нему повернулись:

это точно работает. Проверь:
- правильные ли тэги
- нет ли в модуле других объектов с такими же тэгами
- лучше (если возможно) юзай GetNearestObjectByTag чтобы брать не просто по тэгу, а еще и ближайших

QUOTE(Chimeric @ May 9 2006, 12:47) [snapback]81184[/snapback]
После чего они начинают свой разговор в режиме катсцены. Штука, однако, в том, что при таком режиме не работает то, что вроде бы должно. Например, нужно сделать так, чтобы трое неписей напали на нас и окончился режим катсцены. Ставил вот что на последнюю реплику

и это тоже работает. смотри что написано выше по поводу другого скрипта. + мб там с фракциями/но-ПвП чтонить, хотя врядли.

QUOTE(Lex @ May 9 2006, 18:04) [snapback]81197[/snapback]
- нет ли в модуле других объектов с такими же тэгами

это можно легко проверить вот таким образом:

NSS
void CheckTag(string sTag)
{
int i = 0;
object oObject = GetObjectByTag(sTag,i);
object oPC = GetFirstPC();
SendMessageToPC(oPC,"CHECK TAG: '"+sTag+"'. List of Objects:");
while (GetIsObjectValid(oObject))
    {
    SendMessageToPC(oPC,GetName(oObject)+" in area "+GetName(GetArea(oObject)));
    i++;
    oObject = GetObjectByTag(sTag,i);
    }
}

void main()
{
CheckTag("1");
CheckTag("2");
CheckTag("3");
}


запусти такой скрипт где-нить, или вставь в свой и посмотри в логах, где что есть повторное.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение May 9 2006, 20:46
Сообщение #2204


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

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



А! Черт! Ну конечно! Так, все, вроде понял. Завтра поменяю кое что и сообщу...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Don_Beavis
сообщение May 9 2006, 21:39
Сообщение #2205


Level 1


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



Aiwan, за ползунок спасибо, но меня больше интересует другая часть моего вопроса, а именно как сделать, что бы суммоны не жрали опыт и между патей он делился в меньшем процентном соотношении. Если это скрипт, напиши его пожалуйста. (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение May 9 2006, 21:56
Сообщение #2206


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

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



NSS
// Так даем обычному кричу ХР и РС тоже
GiveXPToCreature(GetPCSpeaker(), 150)

// Так дает партии ХР
#include "nw_i0_tool"
void main()
{
    RewardPartyXP(150, GetPCSpeaker());
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DarkDeivel
сообщение May 11 2006, 09:49
Сообщение #2207


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



Народ в Скриптах особо не шарю. Вот помогите мне я подхожу к НПС и надо так сделать что когда он отвечает "Да хочу" НПС наколдовал на игрока защиту и всякое такое + лечение. Напишите плиз скрипт он должен быть в диалоге. В завершении. (IMG:style_emoticons/kolobok_light/rolleyes.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение May 11 2006, 12:03
Сообщение #2208


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

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



NPC востaнавливает все хит-поинты игрока + увеличивает класс брони на 5.

Нужное время да и сам эффект, можешь поменять (IMG:style_emoticons/kolobok_light/smile.gif)

NSS
//На ActionTakens в диалоге
void main()
{
object oPC = GetPCSpeaker();
object oNPC = OBJECT_SELF;

  AssignCommand(oPC, ClearAllActions());
  AssignCommand(oNPC, ClearAllActions());

  AssignCommand(oPC, ActionPauseConversation());
  DelayCommand(1.0, AssignCommand(oNPC,    ActionPlayAnimation(ANIMATION_LOOPING_CONJURE2,1.0f, 5.0f)));
  DelayCommand(6.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_X ),oPC));
  DelayCommand(6.8, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectACIncrease(5), oPC, 1000.0f));
  DelayCommand(6.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(GetMaxHitPoints(oPC)), oPC));
  DelayCommand(7.1, AssignCommand(oPC, ActionResumeConversation());
}


PS: скрипт писал без тулсета, посему не исключены ошибки. (IMG:style_emoticons/kolobok_light/pleasantry.gif)

Сообщение отредактировал Dik Morris - May 11 2006, 12:40
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nuprahtor
сообщение May 11 2006, 12:42
Сообщение #2209


Level 3
*

Класс: Некромант
Характер: Chaotic Neutral
Раса: Человек



Вот у меня есть такой лилаковский скрипт:

NSS
/*  Script generated by
Lilac Soul's NWN Script Generator, v. 2.2

For download info, please visit:
http://nwvault.ign.com/View.php?view=Other...&id=4683&id=625    */


//Put this script OnEnter
void main()
{

object oPC = GetEnteringObject();

if (!GetIsPC(oPC)) return;

object oTarget;
location lTarget;
oTarget = GetWaypointByTag("WP_FromStart");

lTarget = GetLocation(oTarget);

//only do the jump if the location is valid.
//though not flawless, we just check if it is in a valid area.
//the script will stop if the location isn't valid - meaning that
//nothing put after the teleport will fire either.
//the current location won't be stored, either

if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;

SetLocalLocation(oPC, "ls_stored_loc", GetLocation(oPC));

AssignCommand(oPC, ClearAllActions());

AssignCommand(oPC, ActionJumpToLocation(lTarget));

FloatingTextStringOnCreature("Ловушка!Начни сначала.", oPC);

}

Ставлю его на триггер.При наступлении на него игроком, скрипт переносит PC в вейпоинт WP_FromStart.
Как можно сделать, чтобы триггер перемещал игрока в вейпоинт, так которого равен тегу ключа вейпоинта?
Помогите пожалуйста.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение May 11 2006, 12:49
Сообщение #2210


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

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



QUOTE
Как можно сделать, чтобы триггер перемещал игрока в вейпоинт, так которого равен тегу ключа вейпоинта?


Тэг ключа вайпоинта... ?

Если честно я ничего не понял. (IMG:style_emoticons/kolobok_light/pleasantry.gif)

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

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

 



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