Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103
T34
QUOTE (Ghost @ Aug 22 2005, 16:20)
В папке NWM лежат файлы кампании.. Перенеси их в папку Modules и измени окончание с nwm на mod.

О! Спасибо большое!
Vitalist
Напишите, плиз, скрипт, заставляющий топать NPC после разговора к точке и оставаться там.
Dik Morris
Vitalist, на строчку вешай:
Neverwinter Script Source
void main()
{
object oWP=GetObjectByTag("Таг Точки");
object oNPC=GetObjectByTag("Таг НПС");
AssignCommand(oNPC, ActionMoveToObject(oWP));
}

DraX
Спасибо, ответ на мой вопрос теперь не требуется. Спасибо Dik'у и Lex'у.
За оффтоп простите. Не могу счастья сдержать. biggrin.gif
Lex
QUOTE (Dik Morris @ Aug 22 2005, 18:57)
Vitalist, на строчку вешай:

Neverwinter Script Source
void main()
{
object oWP=GetObjectByTag("Таг Точки");
object oNPC=GetObjectByTag("Таг НПС");
AssignCommand(oNPC, ActionMoveToObject(oWP));
}

если этот скрипт в диалоге НПС, то сам НПС это OBJECT_SELF.. так что все упрощается.
Neverwinter Script Source
void main()
{
object oWP=GetObjectByTag("Таг Точки");
ActionMoveToObject(oWP);
}

Vitalist
Dik Morris и Lex, сенкс!
Далее. Нужно, чтобы когда NPC пришел на нужное мне место, у второго NPC появился текст, то есть "активизировался" диалог.
DEM
Попробуй поставить на триггер...

Neverwinter Script Source
void main()
{
object oNPC2 = GetObjectByTag("NPC2");
DelayCommand(1.0,AssignCommand(oNPC2,ActionSpeakString("Введите сюда слова...")));
}

Вроде так. Просто ща глючит тулсет и не могу проверить. Ну только поставь проверку на то что бы этот триер действовал тлько один раз (как это зделать не помню sad.gif)

Скрипт до этого был не привильный
-fenix-
DEM, ему нужно, чтоб диалог активизировался, а не чел фразу сказал. Тут надо локалку вешать, которую проверять на условии начала диалога.

НА OnEnter тригера
Neverwinter Script Source
void main()
{
object oNPC2 = GetObjectByTag("NPC2");

if(!GetLocalInt(OBJECT_SELF, "TRIGER") == 1) // проверка
    {
    SetLocalInt(OBJECT_SELF, "TRIGER", 1); // проверка
    SetLocalInt(oNPC2, "Имя переменной", 1);
    }
}



А на условие появления диалога у NPC2, проверяем локалку
Neverwinter Script Source
int StartingConditional()
{
    if(!(GetLocalInt(GetPCSpeaker(), "Имя переменной") == 1))
        return FALSE;

    return TRUE;
}
DEM
Вот я когда-то спрашивал: Как зделать, что бы когда НЕПИСИ били друг-друга, или игрока и т.д., что бы им не наносились повреждения.

Мне ответили, что надо зделать их сюжетными (бесмертными).
Так вот. Я всё таки решил прочитать ЛЕКСИКОН(немного понимаю... вот если бы он был на немецком, который я изучаю, так точно бы нифига не понял lol.gif lol.gif )... Так там написано...
С переводом как я понял..... МОжет он просто неправельныйй??

QUOTE
//ActionAttack (Действие - Атака)
void ActionAttack(object oAttackee, int bPassive=FALSE)

object - это объект, который будет боксёрской груши.
int bPassive= - атака в пассивном (если стоит TRUE) или в активном режиме (если стоит FALSE)

Добавлено в [mergetime]1124733555[/mergetime]
QUOTE
DEM, ему нужно, чтоб диалог активизировался, а не чел фразу сказал.


Блина, не заметил.... день сегодня какой-то smile.gif
-fenix-
ДА, тут надо бы еще проверку сделать, на того, кто наступил. А то наступит на тригер, кто угодна и диалог откроется. Вылядеть будет так.
Neverwinter Script Source
void main()
{
object oNPC2 = GetObjectByTag("NPC2");
string sTag = GetTag(GetEnteringObject());

if ("Таг наступившего НПС" == sTag)
    if(!GetLocalInt(OBJECT_SELF, "TRIGER") == 1) // проверка
        {
        SetLocalInt(OBJECT_SELF, "TRIGER", 1); // проверка
        SetLocalInt(oNPC2, "Имя переменной", 1);
        }
}


QUOTE (DEM @ Aug 22 2005, 20:58)
int bPassive= - атака в пассивном (если стоит TRUE) или в активном режиме (если стоит FALSE)

Атаки означают: в пассивном - НПС не будет подбегать к атакуемому, а будет использовать дистанционные атаки, в активном - он подбежит к атакуемому и будет с ним махаться.
Так вроде.
Поэтому делай их сюжетными.
Агрессинг
Подскажите пожалуйст. где event'ы шмоток находятся.
-fenix-
QUOTE (Агрессинг @ Aug 22 2005, 21:31)
Подскажите пожалуйст. где event'ы шмоток находятся.

Их кажись нет? Все, что можно с вещями делать, делается по другому.
А что ты хочешь с вещью сделать?
Агрессинг
onequipitem,
onunequipitem
-fenix-
Ах эти!
Это в модульных св-вах смотри.
Агрессинг
-fenix-
А надо для определенной вещи - например на oneqip плаща локалку
-fenix-
Агрессинг, ты их не полностью называешь, я так понимаю, что при утрате плаща локалку?
Тут надо просто смотерть, кокой предмет был утерян. Введи в Редакторе скрипта Acquired и получешь 4 функции, в частности
Neverwinter Script Source
// Use this in an OnItemAcquired script to get the item that was acquired.
// * Returns OBJECT_INVALID if the module is not valid.
object GetModuleItemAcquired()


Проверка на ТАГ аналогично, как и стегом НПС, написано выше.
Агрессинг
Мне надо поставить при экепировании плаща локалку. this.gif
Alian REXis
Спасибо. yes.gif Я так и думал, что надо через last equiped, но решил удостоверится, точно ли нет евентов в вещах. Оказалось - нет.
Alian REXis
Агрессинг,
Это событие срабатывает при надевании любого предмета.
Пример скрипта(на OnPlayerEquipItem):

Neverwinter Script Source
object oITM= GetPCItemLastEquipped(); // Последняя вещь, которая была надета
object oPC = GetPCItemLastEquippedBy();//последний PC, который надел вещь

if (GetTag(oITM) =="тэг плаща")
{
..........
}


Аналогично со снятием вещей
на OnPlayerUnEquipItem
GetPCItemLastUnequipped();
GetPCItemLastUnequippedBy();
T34
Стал ковыряться в переводе NWN... (который лежит тут) ну вообще беда. Переводили точняк не ручками, а каким-то полуавтоматом.
А где приложили ручки - получились перлы вроде "умрите буратины!".
И диалоги низкоинтеллектуальных персонажей переводчики не просекли, а поправили "ошибки" английского языка.

Я решил поправить все имена собственные, названия существ и местностей, то есть привести к единообразному виду.
Для чего написал прогу, которая преобразует dialog.tlk в plain-text и обратно. Для удобства подправления.
Дополнил dialog.tlk до версии 1.66

Если есть какие пожелания по исправлению наиболее жутких мест, то сообщайте.
Тотально перевести заново, конечно, в разумные сроки, в одиночку нереально.

Знатоки AD&D, кто такой Umber Hulk? По-русски?
Vitalist
Спасибо за тригер!
Напишите как:
1) после смерти NPC открылся портал
2) NPC после разговора телепортировал игрока в друшую локацию
Dik Morris
QUOTE
2) NPC после разговора телепортировал игрока в друшую локацию

Ставится на последнюю строчку в диалоге
Neverwinter Script Source
void main()
{
object oPC = GetPCSpeaker();
AssignCommand(oPC, ClearAllActions());
ActionWait(3.0);
AsignCommand(oPC, JumpToObject(GetObjectByTag("ТЭГ_ВЭЙПОИНТА")));
}
-fenix-
QUOTE (Vitalist @ Aug 23 2005, 18:05)
1) после смерти NPC открылся портал

Скажем на месте смерти откроется портал, так пойдет?
В св-вах нпс в OnDeath добавь строку.
Neverwinter Script Source
CreateObject(OBJECT_TYPE_PLACEABLE, "рес реф портала", Location(GetArea(OBJECT_SELF), GetPosition(OBJECT_SELF), GetFacing(OBJECT_SELF)));

Vitalist
Fenix. самое то!
DikMorris, так все правильно? Что-то не хочет...
Lex
QUOTE (Vitalist @ Aug 23 2005, 19:05)
2) NPC после разговора телепортировал игрока в друшую локацию

Neverwinter Script Source
void main()
{
object oPC = GetPCSpeaker();
AssignCommand(oPC, ClearAllActions());
AsignCommand(oPC, ActionJumpToObject(GetObjectByTag("ТЭГ_ВЭЙПОИНТА")));
}

так.
Daemonix
Вот мне, наконец, понадобилась ваша квалифицированная помощь.
У меня есть сундук. Я кладу туда один сюжетный предмет. Когда захожу в игру, то в сундуке помимо нужного мне предмета лежат ещё несколько случайно сгенерированных игрой. Можно ли убрать как-нибудь эти случайно сгенерированные предметы?
Tiger Greyhawk
2 Daemonix
Правь скрипт на OnEnter этого сундука. Или удали его вообще. wink.gif
Aiwan
Daemonix убери все скрипты в слотах сундука и положи в инвентарь свой предмет.
Vitalist
Что-то не хочет... Наверняка, я где-то не прав: в конце диалога пихаю этот скрипт, в другой области ставлю "точку" с нужным тэгом?
А как телепортировать просто в другую локацию?
DEM
прото в другую нельзя. Надо поставить в другой локации вэйпоинт и телепортироваться туда...

Кажеться так...
Neverwinter Script Source
void main()
{

object oPC = GetPCSpeaker();

AssignCommand(oPC, ClearAllActions());

object oTarget;
location lTarget;
oTarget = GetWaypointByTag("Тэг вэйпоинта");

lTarget = GetLocation(oTarget);

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

DelayCommand(3.0, AssignCommand(oPC, ActionJumpToLocation(lTarget)));

oTarget = oPC;

//Визуальный эффект

int nInt;
nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oTarget);
else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), GetLocation(oTarget));

}
Vitalist
DEM good.gif! Теперь все в шоколаде...
Можно ли задать интервал между игроком и NPC во время разговора? Мне хотелось бы, чтобы игрок не подходил так близко.
DEM
Да? Сам был не уверен... Такие скрипты для меня впервые smile.gif
QUOTE
Можно ли задать интервал между игроком и NPC во время разговора? Мне хотелось бы, чтобы игрок не подходил так близко.


Скорее всего можно, но как... dntknw.gif
Dik Morris
Можно, написать кутсценку yes.gif (если уж сильно надо, я напишу)
Еще игрока, закинуть на вайпоинт biggrin.gif
DEM
Ну а вот, если не хочешь эффекта, но вместе со всей партией smile.gif


Neverwinter Script Source
void main()
{

object oPC = GetPCSpeaker();

AssignCommand(oPC, ClearAllActions()); //почистить все ДЕЙСТВИЯ у игрока

object oTarget;
location lTarget;
oTarget = GetWaypointByTag("тэг вэйпоинта");

lTarget = GetLocation(oTarget);

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

oTarget=GetFirstFactionMember(oPC);

while (GetIsObjectValid(oTarget))
   {
   AssignCommand(oTarget, ActionJumpToLocation(lTarget));
   oTarget=GetNextFactionMember(oPC);
   }

}
-fenix-
QUOTE (Vitalist @ Aug 26 2005, 16:49)
Можно ли задать интервал между игроком и NPC во время разговора? Мне хотелось бы, чтобы игрок не подходил так близко.


Vitalist, можно растянуть перед НПС тригер(если НПС стоячий) и на OnEnter написать такой скрипт. Тогда НПС сам начнет диалог на минимально допустимом расстоянии.

Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
object oNPC = GetObjectByTag("ТАГ НЕВИДИМОГО ТРУПА");

if(GetIsPC(oPC))
    {
    AssignCommand(oPC, ClearAllActions());
    AssignCommand(oPC, SetCommandable(FALSE, oPC));
    AssignCommand(oNPC, ActionStartConversation(oPC));
    }
}


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

Neverwinter Script Source
void main()
{
object oPC = GetPCSpeaker();
SetCommandable(TRUE, oPC);
}


Можно еще написать на onPerseption, но он не такой надежный.

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

if (GetLastPerceptionSeen() && GetIsPC(oPercep))
    {
    AssignCommand(oPercep, ClearAllActions());
    AssignCommand(oPercep, SetCommandable(FALSE, oPercep));
    AssignCommand(OBJECT_SELF, ActionStartConversation(oPercep));
    }
}


Не забудь на последнюю строчку в диалоге поставить скрипт!

З.Ы Если поставить НПС максимальную дальность чувствительности, то вроде все ОК и на OnPerseption. Только надо учитывать, где НПС будет гулять, чтобы откуда бы ПС на него не выскочил, он был достаточно далеко.
Вот замечательная возможность заставить ПС договорить с НПС без использования КАТСЦЕН.


А еще можно во как.
Растягиваешь перед НПС тригер(длинный), короче от длины тригера зависит расстояние разговора(сам разберешься и подстроишь как надо). В начале тригера(со стороны ПС) ставешь Труп(невидимый - есть в палитре), ему ставешь имя и портрет НПС, а в скрипте ставешь его ТАГ. Так можно какое угодно расстояние сделать.


Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
object oInv = GetObjectByTag("ТАГ НЕВИДИМОГО ТРУПА");

if(GetIsPC(oPC))
    {
    AssignCommand(oPC, ClearAllActions());
    AssignCommand(oPC, SetCommandable(FALSE, oPC));
    AssignCommand(ooInv, ActionStartConversation(oPC));
    }
}


На OnPerseption то же можно, только прейдется создавать объект рядом с увиденным ПС. Поэтому готовый труп надо будет добавить в палитру с уникальным РесРефом, вот скрипт.

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

if (GetLastPerceptionSeen() && GetIsPC(oPercep))
    {
    AssignCommand(oPercep, ClearAllActions());
    AssignCommand(oPercep, SetCommandable(FALSE, oPercep));
    object iTrup = CreateObject(OBJECT_TYPE_PLACEABLE, "РесРеф", GetLocation(oPercep));
    AssignCommand(iTrup, ActionStartConversation(oPercep));
    }
}
Daemonix
Вот скрипт. Но не компилируется! dntknw.gif
CODE
void main()
{

   if (GetLocalInt(OBJECT_SELF, "nTriggered" == 1)
       return;
   SetLocalInt(OBJECT_SELF, "nTriggered", 1);
object oNPC=GetObjectByTag("nerilhome_guard_vick";
AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFUL,1.0,10.0));
AssignCommand(oNPC, ActionSpeakString("Íàì íóæíî ñðî÷íî ïîãîâîðèòü!");
}


Не знаю почему... не я писал..
Добавлено в [mergetime]1125090924[/mergetime]
Самое обидное, что я ни фига не знаю.. поэтому и исправить не могу.. могу тока юзать, но учусь, учусь, учусь, учусь, учусь.........
DEM
Ну во первых у тебя допущены ма-а-аленькие ошибки.. Типа, нету второй скобки и т.д.
Вот так будет правильнее, но всё равно не апускаеться...
Neverwinter Script Source
void main()
{
  if (GetLocalInt(OBJECT_SELF, "nTriggered"==1))
      return;
  SetLocalInt(OBJECT_SELF, "nTriggered", 1);
object oNPC=GetObjectByTag("nerilhome_guard_vick");
AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFUL,1.0,10.0));
AssignCommand(oNPC, ActionSpeakString("Iai io?ii n?i?ii iiaiai?eou!"));
}

Добавлено в [mergetime]1125092393[/mergetime]
А что собственно этот скрипт должен делать?
Добавлено в [mergetime]1125092482[/mergetime]
Не ну лично я понимаю, что происходит анимация разговора, а потом НеПиСь что-то говорит... А зачем тебе нужно всё до этого?
Добавлено в [mergetime]1125092692[/mergetime]
В общем у тебя где-то тут ошибка...
Neverwinter Script Source
if (GetLocalInt(OBJECT_SELF, "nTriggered"==1))
Daemonix
А этот скриптик должен делать так, чтобы один непись всё время размахивал руками и кричал, что нужно поговорить.
DEM
Хм... я ты не пробовал поставить на OnHeartBeatоставить просто:
Neverwinter Script Source
void main()
{
object oNPC=GetObjectByTag("nerilhome_guard_vick");
AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFUL,1.0,10.0));
AssignCommand(oNPC, ActionSpeakString("Iai io?ii n?i?ii iiaiai?eou!"));
}


Правда, тогда НЕПИСЬ будет просто орать каждые 6 сек... Но как-то можно исправить....
Добавлено в 01:30
А всё оказалось намного проще smile.gif Ставишь на OnPerception
Neverwinter Script Source
void main()
{
object oNPC = GetObjectByTag("NPC");
AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFUL,1.0,10.0));
AssignCommand(oNPC, SpeakString("ЭЙ!! Волочи сюда свои кривые ноги!!!!"));
}


Суть такая. Когда НЕПИСЬ видит игрока (поэтому и ставили на OnPerception), он (НЕПИСЬ) махает руками 10 сек и говорит:"ЭЙ!! Волочи сюда свои кривые ноги!!!!" Я поменял ActionSpeakString, на "SpeakString", а иначи пришлось бы ждать 10 сек и тольок потом НЕПИСЬ бы что-то сказал... Если тебе надо ЧТо бы это происходило когда ты натупаешь на триггер, то ставь на "OnEnter" триггера
-fenix-
QUOTE (DEM @ Aug 27 2005, 00:38)
В общем у тебя где-то тут ошибка...


Строчка эта должна вот так выглядить.
Neverwinter Script Source
if (GetLocalInt(OBJECT_SELF, "nTriggered") ==1 )

Вам видь нужно получить переменную и сравнить ее с 1, а тут сравнение в получении переменной, за скобками следите.

QUOTE (DEM @ Aug 27 2005, 01:14)
Хм... я ты не пробовал поставить на OnHeartBeatоставить просто:

Не надо такое на хертбит ставить, хотя бы потому, что анимация длиться 10 секунд, а скрипт будет работать каждые 6.

QUOTE (DEM @ Aug 27 2005, 01:14)
Суть такая. Когда НЕПИСЬ видит игрока (поэтому и ставили на OnPerception),

И где это в скрипте? тут надо не НПС опеределять(он OBJECT_SELF), а увиденного чела и проверять является ли увиденный героем, вот
Neverwinter Script Source
void main()
{
object oPercep = GetLastPerceived();

if (GetLastPerceptionSeen() && GetIsPC(oPercep))
{
AssignCommand(OBJECT_SELF, ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFUL,1.0,10.0));
AssignCommand(OBJECT_SELF, SpeakString("ЭЙ!! Волочи сюда свои кривые ноги!!!!"));
}
}
Aiwan
QUOTE (Vitalist @ Aug 26 2005, 19:49)
Можно ли задать интервал между игроком и NPC во время разговора? Мне хотелось бы, чтобы игрок не подходил так близко.

Смотрел я на ваши художества и не выдержал...
-fenix-, ты лексикон читаешь хоть иногда? Не надо изобретать велосипед.
Neverwinter Script Source
// Cause the action subject to move to a certain distance from oMoveTo.
// If there is no path to oMoveTo, this command will do nothing.
// - oMoveTo: This is the object we wish the action subject to move to
// - bRun: If this is TRUE, the action subject will run rather than walk
// - fRange: This is the desired distance between the action subject and oMoveTo
// * No return value, but if an error occurs the log file will contain
//  "ActionMoveToObject failed."
void ActionMoveToObject(object oMoveTo, int bRun=FALSE, float fRange=1.0f)


Вот так будет за пять метров останавливаться. Двоечники...

Neverwinter Script Source
ActionMoveToObject(oPC, FALSE, 5.0f);


-fenix-
Aiwan, я это понимаю. Но скажем если нужно 15, 20 метров? Игрока так можно подвести, но НПС все равно подойдет к игроку, чтобы начать разговор. Не может он на 15, 20 метрах говорить. Пролема как я понял в этом или нет dntknw.gif

Только там скрипты нужно немного доделать. Скажем и на тригере лучше создавать невидимый объект, потому что тригеры могут быть разных размеров. А на последний строчке в диалоге нужно еще сделать удаление этого объекта, особенно если скрипт будет несколько раз выполняться.
DEM
QUOTE
Aiwan, я это понимаю. Но скажем если нужно 15, 20 метров? Игрока так можно подвести, но НПС все равно подойдет к игроку, чтобы начать разговор. Не может он на 15, 20 метрах говорить. Пролема как я понял в этом или нет


Зачем так далеко? Тут уж легче мне кажеться поставить еще один невидимый объект, с таким же именем и портретом, и пусть игрок говорит с ним...
-fenix-
DEM, а это что по твоему?
QUOTE (-fenix- @ Aug 26 2005, 20:29)
В начале тригера(со стороны ПС) ставешь Труп(невидимый - есть в палитре), ему ставешь имя и портрет НПС, а в скрипте ставешь его ТАГ.

2Aiwan, я кажись протупил!
Эту функцию можно использовать, чтобы назначить точное расстояние разговора, но на тригере это наверное не так актуально, а вот на OnPerseption, чтобы не маяться с настройкой чувств, самое оно. Но запускаться она будет все равно с тех скриптов и сам разговор будет осуществляться то же. Я с самого начала подумал об этой функции, но потом нарисовал тригер и забыл о ней sorry.gif
DASADA
Люди что мне надо сделать, чтобы чела заставить идти из одной точки в другую. unsure.gif
Aiwan
QUOTE (DASADA @ Aug 28 2005, 01:16)
Люди что мне надо сделать, чтобы чела заставить идти из одной точки в другую.

Чел - это твой младший брат? И ты его за пивом не можешь отправить в точку?
Надо скомандовать так: "ЧЕЛ! ИДИ ИЗ ОДНОЙ ТОЧКИ В ДРУГУЮ!" girl_devil.gif
Что за идиотские вопросы? Понятно, что тема для абсолютных глупостей, но не для тупости же. dntknw.gif
Что бы получить нормальный ответ, надо задать нормально вопрос. А именно. Какой чел? РС, НПС, ДМ? В какие точки и при каких условиях? В разговоре, или просто пинать бычки на двух точках? Сделай два вейпоинта в радиальном меню НПС. Он будет ходить по ним вечно.
DEM
Айван, у тебя сегодня день не задался? dntknw.gif, это ИМХО не красиво... А не правильная формулировка вопроса, ну... Вспомни себя когда ты стал изучать ТУЛСЕТ вначале....
QUOTE
Чел - это твой младший брат? И ты его за пивом не можешь отправить в точку?
Надо скомандовать так: "ЧЕЛ! ИДИ ИЗ ОДНОЙ ТОЧКИ В ДРУГУЮ!"
Что за идиотские вопросы? Понятно, что тема для абсолютных глупостей, но не для тупости же. 


В общем делай так:
Neverwinter Script Source
object oNPC = GetObjectByTag("ТЭГ НЕПИСИ КОТОРУЮ ТЫ ПОСЫЛАЕШЬ");
WP1 = GetWaypointByTag("тэг первого вэйпоинта");
WP2 = GetWaypointByTag("тэг второго вэйпоинта");
WP3 = GetWaypointByTag("тэг третьего вэйпоинта");
AssignCommand(oNPC, ActionMoveToObject(WP1));
AssignCommand(oNPC, ActionMoveToObject(WP2));
AssignCommand(oNPC, ActionMoveToObject(WP3));


Это ставишь между "voi main ()" и скобочек...



А вообще про анимацию и т.д. ПРошу на старую версию ВРГ www.wrg.ru/old (кажеться так), обязательно просмотрите статью по анимации, мне она помогает всегда good.gif
Добавлено в [mergetime]1125221270[/mergetime]
Neverwinter Script Source
object oPC = GetEnteringObject
WP1 = GetWaypointByTag("тэг первого вэйпоинта");
WP2 = GetWaypointByTag("тэг второго вэйпоинта");
WP3 = GetWaypointByTag("тэг третьего вэйпоинта");
AssignCommand(oPC, ActionMoveToObject(WP1));
AssignCommand(oPC, ActionMoveToObject(WP2));
AssignCommand(oPC, ActionMoveToObject(WP3));



Это если тебе надо послать игрока из точки в точку...
DASADA
Ну ладно тебе Aiwan unsure.gif . Спать хотелось, вот и по быстрому решил вопрос написать. this.gif
А если так то вот что я хочу, чтобы НПС ходил из одного города в другой или чтоб по городу шарил.
А можно чтоб НПС появлялся и шел по WP, а когда умирал то через какое-то врем респаундил и опять шел.
Люди, а чё это за фишка я когда кого ни будь атакую то меня выкидывает из игры (В своем модуле).

DEM спаибо. shout.gif
DEM
QUOTE
чтобы НПС ходил из одного города в другой
... тогда гадо делать прыжки из одного вэйпоинта в другой.. ну конечно если у тебя города не в одной локации smile.gifsmile.gif
Добавлено в [mergetime]1125222471[/mergetime]
напишу когда приду и если уже кто-нить не ответит...
-fenix-
QUOTE (DASADA @ Aug 28 2005, 12:36)
А если так то вот что я хочу, чтобы НПС ходил из одного города в другой

Есть две функции
Neverwinter Script Source
void ActionMoveToLocation(location lDestination, int bRun=FALSE)

Движение к локации
location lDestination - локация, к кторой идти
int bRun=FALSE - если TRUE, то побежит, если FALSE, то пойдет
Если путь сложный, то он может не дойти, тогда имеет смысл подвести его поближе и тогда уже давать команду.

Neverwinter Script Source
void ActionForceMoveToLocation(location lDestination, int bRun=FALSE, float fTimeout=30.0f)

Движение к локации
location lDestination - локация, к кторой идти
int bRun=FALSE - если TRUE, то побежит, если FALSE, то пойдет
Появляется еще одно значение
float fTimeout=30.0f - время за которое он должен дойти. Если за это время он не дойдет, то произойдет джамп с текущего места.
Вот пример
Neverwinter Script Source
void main()
{
object oWP = GetObjectByTag("ТАГ ВЕЙПА");
location lLocation = GetLocation(oWP);

AssignCommand(OBJECT_SELF, ActionForceMoveToLocation(lLocation, FALSE, 10.0));
}

QUOTE (DASADA @ Aug 28 2005, 12:36)
или чтоб по городу шарил

Нажми на НПС левой кнопкой, потом нажми на нужном месте правую и выбери "Создать точку маршрута", от НПС до точки будет видна линия. Таких точек ставь сколько хочешь и при загрузки он начнет ходить по ним без остановки.

QUOTE (DASADA @ Aug 28 2005, 12:36)
А можно чтоб НПС появлялся и шел по WP, а когда умирал то через какое-то врем респаундил и опять шел.

Можно так, довольно интересно, на OnDeath НПС ставешь скрипт, вейпы создаешь, как написано выше.

Neverwinter Script Source
void main()
{
object oNPC = OBJECT_SELF;
effect eEffect = EffectResurrection();

SetIsDestroyable(FALSE);
DelayCommand(5.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, OBJECT_SELF));
DelayCommand(5.5, ActionCastSpellAtObject(SPELL_GREATER_RESTORATION, OBJECT_SELF, METAMAGIC_ANY, TRUE));
}
DEM
QUOTE
Neverwinter Script Source
object oWP = GetObjectByTag("ТАГ ВЕЙПА");



Э-э-э-э... А разве вэйпоинты перечисляются через GetObjectByTag??? Я думал, через GetWaypointByTag, или так тоже можно??
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.