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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
 
Ответить в эту темуОткрыть новую тему
> НПС шагают друг за другом, Идет караван по пустыне...
Aiwan
сообщение Jun 22 2006, 20:37
Сообщение #1


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

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



Попробовал потыкался и понял что это мне ковырять на несколько дней. Суть такая. Идет НПС, за ним караван из трех верблюдов. Типа торговец шляющийся по модулю. Но заставить этих гадов идти строго не джампая при большой дистанции не могу. А времени уже нет заниматься таким. Мож кто делал себе? Дайте пжалуста скриптики (IMG:style_emoticons/kolobok_light/pardon.gif) Или скажите где капать (IMG:style_emoticons/kolobok_light/yes3.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
StalkerDtN
сообщение Jun 23 2006, 07:55
Сообщение #2


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [Sn]



Если я прально понял и приемлим ХБ, то можно просто на него повесит что-то вроде:
NSS
void scaner();
void scaner()
{
    object oNPC    = GetObjectByTag("NPC_MERCHANT_001");
    object oAnimal1 = GetObjectByTag("NPC_ANIMAL_001");
    object oAnimal2 = GetObjectByTag("NPC_ANIMAL_002");
    object oAnimal3 = GetObjectByTag("NPC_ANIMAL_003");

    location lLoc = GetLocation(oNPC);
    if (GetDistanceBetween(oNPC    , oAnimal1) >= 20.0f)
        AssignCommand(oAnimal1, ActionMoveToObject(oNPC));
    if (GetDistanceBetween(oAnimal1, oAnimal2) >= 20.0f)
        AssignCommand(oAnimal2, ActionMoveToObject(oAnimal1));
    if (GetDistanceBetween(oAnimal2, oAnimal3) >= 20.0f)
        AssignCommand(oAnimal3, ActionMoveToObject(oAnimal2));
}

void main()
{
    ...
    scaner();
    ...
}

Просто, вместо ActionForceFollowObject использовать ActionMoveToObject. Проверил, вроде не жамкались (IMG:style_emoticons/kolobok_light/unknw.gif)
ps: предполагается, что торговец уже ходит по пустыне.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 23 2006, 23:49
Сообщение #3


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

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



Спасибо, попробую. (IMG:style_emoticons/kolobok_light/yes3.gif)

NSS
//:://////////////////////////////////////////////
//:: OnUserDefaine  am_csp_common
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
    Стандартный UserDefaine скрипт
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 09.07.2005
//:://///////////////////////////////////////////
void MoveTo()
{
    object oNPC = GetObjectByTag("NPC_MERCHANT_001");
    object oAnimal1 = GetObjectByTag("NPC_ANIMAL_001");
    object oAnimal2 = GetObjectByTag("NPC_ANIMAL_002");
    object oAnimal3 = GetObjectByTag("NPC_ANIMAL_003");

    location lLoc = GetLocation(oNPC);
    if (GetDistanceBetween(oNPC, oAnimal1) >= 5.0f)
    {
        AssignCommand(oAnimal1, ClearAllActions());
        AssignCommand(oAnimal1, ActionMoveToObject(oNPC, FALSE, 2.0));
    }
    if (GetDistanceBetween(oAnimal1, oAnimal2) >= 5.0f)
    {
        AssignCommand(oAnimal2, ClearAllActions());
        AssignCommand(oAnimal2, ActionMoveToObject(oAnimal1, FALSE, 2.0));
    }
    if (GetDistanceBetween(oAnimal2, oAnimal3) >= 5.0f)
    {
        AssignCommand(oAnimal3, ClearAllActions());
        AssignCommand(oAnimal3, ActionMoveToObject(oAnimal2, FALSE, 2.0));
    }
}
void main()
{
  int nEvent = GetUserDefinedEventNumber();
  if (GetIsDead(OBJECT_SELF)==TRUE) return; // Если он помер, то пусть молчит
  if (GetArea(OBJECT_SELF)!=GetArea(GetFirstPC())) return;
//=========================== HEARTBEAT EVENT ==================================
  if (nEvent == EVENT_HEARTBEAT) // Сигнал поступает User Defined Event 1001
    {
      MoveTo();
    }
}

Спасибо, действительно идут "гуськом" (IMG:style_emoticons/kolobok_light/yes3.gif) Я правдап немного скрипт поправил, что бы акции не копились в стеке. Как сделаю полностью скрипт выложу.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29th March 2024 - 14:54