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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 106 107 108 109 110 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Aiwan
сообщение Feb 22 2007, 19:01
Сообщение #2676


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

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



В скрипте что тебе привели НПС прыгнет а это некрасиво и неправильно. Он исчезнет на глазах РС (Фууу НВН2!!!)

NSS
void main()
{
    object oPC = GetPCSpeaker(); // Игрок
    object oNpc = OBJECT_SELF; // НПС с которым идет диалог
    object oExit = GetObjectByTag("WP_"); // Вейпоинт

    AssignCommand(oNpc, ClearAllActions()); // Почистим стек команд
    AssignCommand(oNpc, ActionForceMoveToObject(oExit, FALSE, 1.0, 30.0));
    AssignCommand(oNpc, ActionDoCommand(SetCommandable(TRUE, oNpc)));
    DelayCommand(0.2, SetCommandable(FALSE, oNpc)); // Что бы случайно не забыл
}

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Waromon
сообщение Feb 22 2007, 19:21
Сообщение #2677


Level 4
**

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить



2 Aiwan

Так, там именно игрок должен переместится. Если говорить о "некрасиво и неправильно" то можно добавить черный экран, получится весьма эффектно. (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
r1Stranger
сообщение Mar 1 2007, 19:15
Сообщение #2678


Level 4
**

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



Привет всем.
1.Никто не подскажет как в скриптах прописывать эффект полета или падения, если возможно(по моему в 1м аддоне нвн что то было там с кобольтами)?
2.Можно ли поднять скриптами уровень непися (дать ему опыта - он качнется по умолчанию или нет - а то это как то не проверяемо)? Или только навыки да умения ему выписывать да интеллект наворачивать и развивать?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 1 2007, 19:48
Сообщение #2679


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

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



1. EffectAppear EffectDisappear, это все что есть по полету (вроде как).
2. Можно. LevelupHenchman (или как-то так, фильтр функций на "Level" посмотри)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
r1Stranger
сообщение Mar 2 2007, 14:50
Сообщение #2680


Level 4
**

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



Спасибо.
Только я там имел в виду, что гоблины как то у очень эффектно в колодец прыгали.Но как не лазил по скриптам, что то там глубоко все попрятано. Так думаю может еще кто интересовался.
А скакать через эппеар и дизэппеар по поводу и без повода по локациям мона красиво - ето да.
А по вопросу об опыте неписей я имел в виду, что только ли как хэнчи они качаться могут (то если по идее они независимы, то для прокачки их надо кому либо подчинить, качнуть, а потом назад.), а так просто опыт не могут получать?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 2 2007, 14:53
Сообщение #2681


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

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



QUOTE(r1Stranger @ Mar 2 2007, 14:50) [snapback]105230[/snapback]
Только я там имел в виду, что гоблины как то у очень эффектно в колодец прыгали.Но как не лазил по скриптам, что то там глубоко все попрятано. Так думаю может еще кто интересовался.

интересовались. Там для этого специальная анимация сделана была. Те повторить это можно, но только 1-в-1, а в других местах не попользовать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Mar 31 2007, 10:19
Сообщение #2682


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

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



Вопрос такой. Можно ли сократить код? А то чет некрасиво записано...

Neverwinter Script Source
if(GetTag(oItem)=="Hlam_9" || GetTag(oItem)=="ITM_Kukla" ||
      GetTag(oItem)=="ITM_Necr_Cotel" || GetTag(oItem)=="Hlam_11" ||
      GetTag(oItem)=="Hlam_5" || GetTag(oItem)=="Hlam_4" ||
      GetTag(oItem)=="Hlam_1" || GetTag(oItem)=="Hlam_10" ||
      GetTag(oItem)=="Hlam_8" || GetTag(oItem)=="Hlam_7" || GetTag(oItem)=="Hlam_2")


Сообщение отредактировал gennady - Mar 31 2007, 12:23
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 31 2007, 10:31
Сообщение #2683


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

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



Neverwinter Script Source
object oItem;
  string sTag = GetTag(oItem);

  if(sTag =="Hlam_9" || sTag =="ITM_Kukla" || sTag =="ITM_Necr_Cotel"
  || sTag =="Hlam_11" || sTag =="Hlam_5" || sTag =="Hlam_4"
  || sTag =="Hlam_1" || sTag=="Hlam_10" || sTag=="Hlam_8"
  || sTag =="Hlam_7" || sTag=="Hlam_2")
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 31 2007, 10:44
Сообщение #2684


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

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



если нет других предметов с тэгом Hlam_* то можно так:
Neverwinter Script Source
object oItem;
  string sTag = GetTag(oItem);

  if(sTag =="ITM_Kukla" || sTag =="ITM_Necr_Cotel" || GetStringLeft(sTag,5) =="Hlam_")
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Mar 31 2007, 12:21
Сообщение #2685


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

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



Спасибо Aiwan, так красивше! Но суть в том, что видел вроде как-то запись методом перечисления…

Lex, идея проверить первые 5 символов интересная, но не данном случае, имеются и другие предметы с подобными тэгами, а тут после кода идет дестрой.

Ну, что ж нет других вариантов, так нет… Буду писать некрасиво (IMG:style_emoticons/kolobok_light/biggrin.gif) …
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Mar 31 2007, 15:29
Сообщение #2686


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

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



Цитата(gennady @ Mar 31 2007, 13:21) [snapback]106644[/snapback]
Спасибо Aiwan, так красивше! Но суть в том, что видел вроде как-то запись методом перечисления…

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

---
На крайняк можно так:
Neverwinter Script Source
if (FindSubString(" Hlam_9 ITM_Kukla ITM_Necr_Cotel Hlam_11 Hlam_5 Hlam_4 Hlam_1 Hlam_10 Hlam_8 Hlam_7 Hlam_2 ", " " + GetTag(oItem) + " ") >= 0)
{
    ...
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 31 2007, 18:37
Сообщение #2687


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

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



Цитата(gennady @ Mar 31 2007, 15:21) [snapback]106644[/snapback]
Ну, что ж нет других вариантов, так нет… Буду писать некрасиво

Чем проще написано тем больше шансов что не "вильнет" в сторону. (IMG:style_emoticons/kolobok_light/rolleyes.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Mar 31 2007, 21:39
Сообщение #2688


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

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



Цитата(azathoth @ Mar 31 2007, 16:29) [snapback]106656[/snapback]
В NWScript такого не предусмотрено - это тогда уже через свою "умную" функцию надо делать. Посмотри в базе, я как-то выкладывал инклюд с функциями для инвентаря, работающими со строками-списками.


Ясно, инклюду смотрел, но там наворочено… «умным» долго разбирать (IMG:style_emoticons/kolobok_light/biggrin.gif) … Но вот помню, что видел что-то подходящее. Это как раз самое то!!! (IMG:style_emoticons/kolobok_light/yahoo.gif) Только почему на крайняк? Проверил, все пашет и не «виляет» (IMG:style_emoticons/kolobok_light/wink3.gif)

Спасибо, azathoth беру на вооружение. (IMG:style_emoticons/kolobok_light/thank_you.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Вик Станжер
сообщение Apr 16 2007, 20:11
Сообщение #2689


Level 2
*

Класс: Теневой Танцор
Характер: Chaotic Neutral
Раса: Человек



господа и таварищи, помогите...

никак не могу реализовать... короче чел подходит в зону видимости моба (тег1), и врубается диалог такой-то.
Во время диалога игрока атакуют. как только у него становиться меньше а хитоВ, экран гаснет и его телепортируют на локагия (тег2). Подскажите как и что, плиз...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Apr 17 2007, 06:10
Сообщение #2690


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

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



Цитата(Вик Станжер @ Apr 16 2007, 21:11) [snapback]107195[/snapback]
господа и таварищи, помогите...

А где сами скрипты? И что там у тебя конкретно не получается?

Все ответы на эти вопросы, можешь и сам найти в базе скриптов или скриптов для новичков (IMG:style_emoticons/kolobok_light/biggrin.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Apr 17 2007, 07:41
Сообщение #2691


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

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



Цитата(gennady @ Apr 17 2007, 09:10) [snapback]107205[/snapback]
А где сами скрипты? И что там у тебя конкретно не получается?

Из цикла:
- "Привет ребзя! Хочу сделать свою модельку в НВН, скажите как?"
*Народ пишет пять листов как нарисовать, количество полигонов, вокмехи, тулзы для импорта, ограничения...*
- "Ух ты! Клева!"
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Вик Станжер
сообщение Apr 17 2007, 12:15
Сообщение #2692


Level 2
*

Класс: Теневой Танцор
Характер: Chaotic Neutral
Раса: Человек



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

я не знаю:

- на что вешать скрипт, проверающии здровьие и при ранении телепортирующий.
- я не знаю, как осуществить переход к обхекту на другой карте.

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 17 2007, 12:39
Сообщение #2693


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

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



Цитата(Вик Станжер @ Apr 17 2007, 13:15) [snapback]107220[/snapback]
- на что вешать скрипт, проверающии здровьие и при ранении телепортирующий.

так как игрок, проверять только на HeartBeat модуля или в скрипте default (ХБ игрока. Но если мультиплеерный модуль, лучше не использовать в данной ситуации). Ну или на HeartBeat самого НПС, который игрока долбает.

так как можно попасть в просак, если игрок будет убит 1 ударом или как-то еще (есть варианты), то перед таким боем лучше вешать на игрока Immortale флаг (ф-я SetImmortale). Потом проверив ХП (ф-я GetCurrentHitPoints) и определив, что их мало, перемещаем игрока (ф-я ActionJumpToObject), предварительно отчистив стек действий игрока (ф-я ClearAllActions) и задав точку перемещения (ф-я GetObjectByTag). Если пишется в скрипте default - то игрок - просто OBJECT_SELF, если в HeartBeat модуля, то игрока надо определять нужным образом. Зависит уже от ситуации.
да.. не забыть перед боем повесить локалку на игрока (SetLocalInt) о том, что он в сюжетном бою, а в скрипте по проверке ХП и переносе в точку проверять эту локалку (GetLocalInt) с тем, чтобы отсекать ситуации лишние. После перемещения локалку обнулить (SetLocalInt).

Цитата(Вик Станжер @ Apr 17 2007, 13:15) [snapback]107220[/snapback]
блин, я плачу за трафик, а от стипендии уже ничего не осталось, не могу я весь формум перерывать.

поиск попробовать можно. А вообще если такая беда, как можно четче формулируйте вопрос. И если пробуете писать сами скрипты, выкладывайте что получается и описание того, где проблема.

зы: просто к людям, которые пробуют сами и что-то не получается отношение другое немного, более... положительное чтоли. А то, что вы уже написали как раз показывает ваши попытки сделать самостоятельно. Ну это так, на заметку.

зыы: а если тупо нужен готовый скрипт с объяснениями, куда его ставить, то это тоже лучше сразу написать. (IMG:style_emoticons/kolobok_light/smile.gif) Чтобы не было недопонимания.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Apr 17 2007, 14:12
Сообщение #2694


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

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



Цитата(Вик Станжер @ Apr 17 2007, 13:15) [snapback]107220[/snapback]
- я не знаю, как осуществить переход к обхекту на другой карте.

Тогда запиши себе этот скрипт, поможет во многих ситуациях… Имя скрипта должно быть p_universal т.к. я использовал его в скрипте проверки урона и перемещения.
Neverwinter Script Source
//:://////////////////////////////////////////////
//::  ***  УНИВЕРСАЛЬНЫЙ СКРИПТ ПЕРЕМЕЩЕНИЙ  ***
//:: File name: p_universal
//:://////////////////////////////////////////////
// ***** ПЕРЕМЕЩЕНИЕ ГЕРОЯ *****
void JumpFirstPC(object oWP)
{
object oPC = GetFirstPC();
object oSP = GetHenchman(oPC);
object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION,oPC);
object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR,oPC);
object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED,oPC);
object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED,oPC);
   AssignCommand(oPC, ClearAllActions());
   AssignCommand(oSP, ClearAllActions());
   AssignCommand(oAnimal, ClearAllActions());
   AssignCommand(oFamiliar, ClearAllActions());
   AssignCommand(oDominated, ClearAllActions());
   AssignCommand(oSummoned, ClearAllActions());
AssignCommand(oPC, JumpToObject(oWP));
AssignCommand(oSP, JumpToObject(oWP));
AssignCommand(oAnimal, JumpToObject(oWP));
AssignCommand(oFamiliar, JumpToObject(oWP));
AssignCommand(oDominated, JumpToObject(oWP));
AssignCommand(oSummoned, JumpToObject(oWP));
}
void main()
{
object oSelf = OBJECT_SELF;
object oPoint = GetWaypointByTag("WP_" + GetTag(oSelf));
object oPC = GetFirstPC();
location lSmoke = GetLocation(oSelf);
effect eSmoke = EffectVisualEffect(VFX_FNF_LOS_NORMAL_10);

if ((GetArea(oPC) == GetArea(oSelf)&& GetDistanceBetween(oPC, oSelf) < 3.0) ||
     GetIsPC(GetEnteringObject()))
  {
   ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eSmoke,lSmoke);
   DelayCommand(0.6, JumpFirstPC(oPoint));
  }
else
AssignCommand(GetEnteringObject(), ClearAllActions());
}
// Точка перемещения содержит WP_+Тег объекта


Цитата(Вик Станжер @ Apr 17 2007, 13:15) [snapback]107220[/snapback]
- на что вешать скрипт, проверающии здровьие и при ранении телепортирующий.

И где скрипт? (IMG:style_emoticons/kolobok_light/biggrin.gif) Если нет, то попробуй повесить на перса, с которым будет драться герой, вот этот скрипт…
Neverwinter Script Source
//:://////////////////////////////////////////////////
//:: Прекращение атаки
//:: Слот: OnCombatRoundEnd
//:://////////////////////////////////////////////////
void main()
{
   object oPC = GetFirstPC();
   object oSelf = OBJECT_SELF;
   object oNPC = GetFirstObjectInShape(SHAPE_SPHERE, 30.0, GetLocation(oPC), TRUE);
   int iMXP = GetMaxHitPoints(oPC)-10; // Настрой нужную величину…
   int iCXP = GetCurrentHitPoints(oPC);

  if (iMXP > iCXP) //Урон не менее 10 пунктов от мах
  {
   while (GetIsObjectValid(oNPC))  // Все существа в радиусе 30 метров
   {
    if(GetIsInCombat(oNPC))
    {
     AssignCommand(oNPC, SurrenderToEnemies()); // Прекратим атаку
     AssignCommand(oNPC, ClearAllActions(TRUE));
    }
    oNPC = GetNextObjectInShape(SHAPE_SPHERE, 30.0, GetLocation(oPC), TRUE);
   }
   AssignCommand(oPC, SpeakString("Я сдаюсь... Прекратим бой!"));
   DelayCommand(1.5, ExecuteScript("p_universal", oSelf)); // Перемещение к точке WP_+Тег объекта
  }
}

P.S. Лекс правильно подметил о возможной смерти героя т.ч. учти это, в моем скрипте это не пробито… Но тут уже совсем другая история и другие варианты. Дерзай!

Сообщение отредактировал gennady - Apr 17 2007, 14:17
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Вик Станжер
сообщение Apr 17 2007, 17:15
Сообщение #2695


Level 2
*

Класс: Теневой Танцор
Характер: Chaotic Neutral
Раса: Человек



спасибо... все вроде пошло....
А то с начало перепутал названия скриптов и возникала такая ситуация:

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



да и еще...

на он перспейшен моба подвешен скрипт

void main()
{
AssignCommand(GetObjectByTag("ag"), ActionStartConversation(GetFirstPC(), "sosed", FALSE, TRUE));
}

при вхождении в зону видимости стоящего он должен вызывать диалог... но моб сломя голову несется через всю карту к игроку. что не так? я вообще правильно понял, что онперспейшен - это обнаружение?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Apr 17 2007, 18:14
Сообщение #2696


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

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



Вик, описание эвента из NWN Lexicon'a:
Цитата
The script attached to this event will fire whenever another creature perceives another creature or PC. Common uses of this script include having the creature yell a battle cry, greet the PC, or run away.


Далее, если диалог должен начинать тот NPC, в эвенте которого стоит данный скрипт, то строка:
Neverwinter Script Source
AssignCommand(GetObjectByTag("ag")

- совсем не обязательна, кстати, не используй в данном случае, фун-цию: GetFirstPC(), лучше ограничиться, скажем: GetLastPerceived и проверять - игрок ли, последний увиденный и собственно видит ли его NPC.
Скрипт будет таким:

Neverwinter Script Source
void main()
{
object oPC = GetLastPerceived();

if (GetIsPC(oPC))
{
if (GetLastPerceptionSeen())
  {
  ClearAllActions();
  ActionMoveToObject(oPC);
  ActionStartConversation(oPC, "sosed");
  }

}
}


PS: для надежности, что-бы NPC никто не сбил по пути, можно выключить его стэк-комманд (естественно на время, до выполнения задачи).
Функция: SetCommandable.

Сообщение отредактировал Dik Morris - Apr 17 2007, 18:15
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Apr 17 2007, 21:21
Сообщение #2697


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

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



Цитата(Вик Станжер @ Apr 17 2007, 15:15) [snapback]107220[/snapback]
блин, я плачу за трафик, а от стипендии уже ничего не осталось, не могу я весь формум перерывать.

А я что, не плачу? ВОт уезжал было +800 рублей, не было меня месяц (минус) -650. (IMG:style_emoticons/kolobok_light/vava.gif) Кто мой траф выкачал? Суппорт разводит руками...
Цитата(Вик Станжер @ Apr 17 2007, 15:15) [snapback]107220[/snapback]
- я не знаю, как осуществить переход к обхекту на другой карте.

Это есть в мануале моем. Я это разбирал. Скачай прочти, много вопросов отпадет. Я потратил месяц времени оформил для новичков.
Цитата(Dik Morris @ Apr 17 2007, 21:14) [snapback]107232[/snapback]
PS: для надежности, что-бы NPC никто не сбил по пути, можно выключить его стэк-комманд (естественно на время, до выполнения задачи).

И добавь локалку на то что бы НПС не бегал к РС каждый раз когда увидит. Кстати в базе скриптов есть мой скрипт который говорит НПС подойти к РС и начать диалог когда он его увидит. Вешается это дело на юзер деф через сигнал хертбита. Вот код:
Neverwinter Script Source
//:://////////////////////////////////////////////
//:: OnUserDefined  am_cud_talk_away
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
    НПС ходит за игроком, хочет сказать ему
    что-то важное. Игрок может отойти на fDist
    метров и НПС перестанет его преследовать.
    Если присвоить на объект локальную "RUN"
    == TRUE то побежит к игроку. Если присвоить
    локалку "ALL_DISTANCE", то будет преследовать
    игрока на всей локации. Float fDist "DISTANCE"
    расстояние на котором НПС реагирует на игрока.
    По умолчанию равно 10 метрам.
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 14.10.2005
//:://///////////////////////////////////////////
void main()
{
   object oSelf = OBJECT_SELF;
   object oPC = GetFirstPC(); // Только для сингла
   int nEvent = GetUserDefinedEventNumber();
   if (GetArea(OBJECT_SELF)!=GetArea(oPC)) return;
   if (GetIsDead(OBJECT_SELF)==TRUE) return; // Если он помер, то пусть молчит
   if (GetLocalInt(OBJECT_SELF, "START_CONVERSATION") == FALSE) return;
   if (GetIsEnemy(oPC, OBJECT_SELF) == TRUE) return;
//========================== HEARTBEAT EVENT  =================================
  if (nEvent == EVENT_HEARTBEAT)  // Стандартный сигнал User Defined Event 1001
  {
    // Если поставим эту локалку, то НПС будет преследовать игрока везде в локации
     if (!GetLocalInt(oSelf, "ALL_DISTANCE"))
     {
      float fDist = GetLocalFloat(oSelf, "DISTANCE"); // Расстояние реакции
      if(fDist == 0.0) {fDist=10.0;} // Если нет значения, то оно ровно 10 метрам
     // Если игрок дальше fDist метров, то ничего не будет. Будет стоять и ждать
      if (GetDistanceBetween(oPC, oSelf)> fDist)
       {
          AssignCommand(oSelf, ClearAllActions());
         // Debug("Игрок отошел дальше "+FloatToString(fDist)+" метров.");
          return;
       }
      }
      // Если бой, идет разговор то возврат
      if (GetIsInCombat(oPC) || GetIsInCombat(oSelf) || IsInConversation(oPC))
      {
         return;
      }
    // Если нет переменной для повтора
    if (GetLocalInt(oSelf, "REPEAT") == FALSE)
     {
        int iRun = FALSE;
        // iRun = TRUE - бежит к игроку
        if (GetLocalInt(oSelf, "RUN")) iRun = TRUE;
        // Присвоим переменную повтора
        SetLocalInt(oSelf, "REPEAT", TRUE);
        AssignCommand(oSelf, ClearAllActions());
        ActionDoCommand(SetFacingPoint(GetPosition(oPC)));
        AssignCommand(oSelf, ActionMoveToObject(oPC, iRun, 2.0));
        AssignCommand(oSelf, ActionStartConversation(oPC));
        // Обнулим ее через 20 секунд, можно увеличить или уменьшить
        DelayCommand(20.0, SetLocalInt(oSelf, "REPEAT", FALSE));
        // Случайные фразы
        string s1 = GetLocalString(oSelf, "String1");
        string s2 = GetLocalString(oSelf, "String2");
        string s3 = GetLocalString(oSelf, "String3");
        string s4 = GetLocalString(oSelf, "String4");
        string s5 = GetLocalString(oSelf, "String5");
        switch(Random(5))
          {
            case 0: if(s1!=""){SpeakString(s1+GetName(oPC)+"!"); break;}
            case 1: if(s2!=""){SpeakString(s2); break;}
            case 2: if(s3!=""){SpeakString(s3); break;}
            case 3: if(s4!=""){SpeakString(s4); break;}
            case 4: if(s5!=""){SpeakString(s5); break;}
          }
      }
  }
//------------------------------------------------------------------------------
}


Этот скрипт вешай на любую пустую строку НПС желательно самую верхнюю. В начале диалога он отключит все слокалки на НПС и он не станет бегать за РС все время (IMG:style_emoticons/kolobok_light/smile.gif)
Neverwinter Script Source
//:://////////////////////////////////////////////
//:: Отключает "START_CONVERSATION" на НПС
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
    НПС ходит за игроком, хочет сказать ему
    что-то важное. Игрок может отойти на 10
    метров и НПС перестанет его преследовать.
    Если присвоить на объект локальную "RUN"
    == TRUE то побежит к игроку. Если присвоить
    локалку "ALL_DISTANCE", то будет преследовать
    игрока на всей локации.
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 18.09.2005
//:://////////////////////////////////////////////

int StartingConditional()
{
   if (GetLocalInt(OBJECT_SELF, "START_CONVERSATION"))
   {
      SetLocalInt(OBJECT_SELF, "START_CONVERSATION", FALSE); // Отключаем
      SetLocalInt(OBJECT_SELF, "RUN", FALSE); // Ходит пешком
      if(GetCommandable(GetPCSpeaker())==FALSE)
      {
          SetCommandable(TRUE, GetPCSpeaker()); // Если РС закрыт стек команд
      }
    }
  return FALSE;
}


Надеюсь ты знаешь как запустить это:
Neverwinter Script Source
if (nEvent == EVENT_HEARTBEAT)  // Стандартный сигнал User Defined Event 1001
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Вик Станжер
сообщение Apr 18 2007, 14:53
Сообщение #2698


Level 2
*

Класс: Теневой Танцор
Характер: Chaotic Neutral
Раса: Человек



Цитата
Neverwinter Script Source
//:://////////////////////////////////////////////////
//:: Прекращение атаки
//:: Слот: OnCombatRoundEnd
//:://////////////////////////////////////////////////
void main()
{
object oPC = GetFirstPC();
object oSelf = OBJECT_SELF;
object oNPC = GetFirstObjectInShape(SHAPE_SPHERE, 30.0, GetLocation(oPC), TRUE);
int iMXP = GetMaxHitPoints(oPC)-10; // Настрой нужную величину…
int iCXP = GetCurrentHitPoints(oPC);

if (iMXP > iCXP) //Урон не менее 10 пунктов от мах
{
while (GetIsObjectValid(oNPC)) // Все существа в радиусе 30 метров
{
if(GetIsInCombat(oNPC))
{
AssignCommand(oNPC, SurrenderToEnemies()); // Прекратим атаку
AssignCommand(oNPC, ClearAllActions(TRUE));
}
oNPC = GetNextObjectInShape(SHAPE_SPHERE, 30.0, GetLocation(oPC), TRUE);
}
AssignCommand(oPC, SpeakString("Я сдаюсь... Прекратим бой!"));
DelayCommand(1.5, ExecuteScript("p_universal", oSelf)); // Перемещение к точке WP_+Тег объекта
}

}

лишнии раз убеждаюсь, что туп как пробка... или это от экзаменов? куды вставлять тег объекта адреса назначения?????

базу изучаю....
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Apr 18 2007, 19:01
Сообщение #2699


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

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



Не все так просто. Скорее всего кое -кто будет лупить по РС. Ты скажи нормальным языком что ты хочешь реализовать. Подробно. У меня есть скрипты прекращающиен атаки при определенных хитах как у РС так и у НПС. Опиши задачу.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Apr 19 2007, 05:41
Сообщение #2700


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

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



Цитата(Вик Станжер @ Apr 18 2007, 15:53) [snapback]107283[/snapback]
лишнии раз убеждаюсь, что туп как пробка... или это от экзаменов? куды вставлять тег объекта адреса назначения?????

Aiwan, скрипт рабочий, не раз проверенный… Ну, все равно открывай свою кубышку глянем, что у тебя там припасено и поучимся (IMG:style_emoticons/kolobok_light/biggrin.gif)
P.S. Лексу отправил…

Вик Станжер, все просто, возьми тэг перса с которым будет драться герой т.е. на которого ты повесишь этот скрипт. Добавь перед тэгом «WP_» например: тэг перса PERS_3, тогда точка к которой джампанется герой будет: WP_PERS_3
Neverwinter Script Source
DelayCommand(1.5, ExecuteScript("p_universal", oSelf)); // Перемещение к точке WP_+Тег объекта

Да, еще учти, что перемещение будет если будет рукопашная схватка, в скрипте перемещения пробито расстояние между объектами не более 3 метров.
Если этого не нужно, то запиши проще, заменив эту строку на этот код:
Neverwinter Script Source
AssignCommand(oPC, ClearAllActions(TRUE));
object oPoint = GetWaypointByTag("ТЭГ ТОЧКИ ПЕРЕМЕЩЕНИЯ");
AssignCommand(oPC, JumpToObject(oPoint));

Это хорошо если точка в другой области, а если в этой же, то лучше, так как я записал. Иначе у тебя вся команда героя останется на месте…


Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



Текстовая версия Сейчас: 27th April 2024 - 20:04