![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]() ![]()
Сообщение
#1
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Попробовал потыкался и понял что это мне ковырять на несколько дней. Суть такая. Идет НПС, за ним караван из трех верблюдов. Типа торговец шляющийся по модулю. Но заставить этих гадов идти строго не джампая при большой дистанции не могу. А времени уже нет заниматься таким. Мож кто делал себе? Дайте пжалуста скриптики (IMG:style_emoticons/kolobok_light/pardon.gif) Или скажите где капать (IMG:style_emoticons/kolobok_light/yes3.gif)
|
![]() |
![]()
Сообщение
#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: предполагается, что торговец уже ходит по пустыне. |
![]()
Сообщение
#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) Я правдап немного скрипт поправил, что бы акции не копились в стеке. Как сделаю полностью скрипт выложу. |
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 00:51 |