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

Кто мой траф выкачал? Суппорт разводит руками...
Цитата(Вик Станжер @ 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;}
}
}
}
//------------------------------------------------------------------------------
}
Этот скрипт вешай на любую пустую строку НПС желательно самую верхнюю. В начале диалога он отключит все слокалки на НПС и он не станет бегать за РС все время

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