QUOTE (Ghost @ Aug 22 2005, 16:20) |
В папке NWM лежат файлы кампании.. Перенеси их в папку Modules и измени окончание с nwm на mod. |
О! Спасибо большое!
Vitalist
Aug 22 2005, 17:32
Напишите, плиз, скрипт, заставляющий топать NPC после разговора к точке и оставаться там.
Dik Morris
Aug 22 2005, 17:57
Vitalist, на строчку вешай:
Neverwinter Script Source |
void main() { object oWP=GetObjectByTag("Таг Точки"); object oNPC=GetObjectByTag("Таг НПС"); AssignCommand(oNPC, ActionMoveToObject(oWP)); } |
Спасибо, ответ на мой вопрос теперь не требуется. Спасибо Dik'у и 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
Aug 22 2005, 19:57
Dik Morris и Lex, сенкс!
Далее. Нужно, чтобы когда NPC пришел на нужное мне место, у второго NPC появился текст, то есть "активизировался" диалог.
Попробуй поставить на триггер...
Neverwinter Script Source |
void main() { object oNPC2 = GetObjectByTag("NPC2"); DelayCommand(1.0,AssignCommand(oNPC2,ActionSpeakString("Введите сюда слова..."))); } |
Вроде так. Просто ща глючит тулсет и не могу проверить. Ну только поставь проверку на то что бы этот триер действовал тлько один раз (как это зделать не помню

)
Скрипт до этого был не привильный
-fenix-
Aug 22 2005, 20:55
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; } |
Вот я когда-то спрашивал: Как зделать, что бы когда НЕПИСИ били друг-друга, или игрока и т.д., что бы им не наносились повреждения.
Мне ответили, что надо зделать их сюжетными (бесмертными).
Так вот. Я всё таки решил прочитать ЛЕКСИКОН(немного понимаю... вот если бы он был на немецком, который я изучаю, так точно бы нифига не понял

)... Так там написано...
С переводом как я понял..... МОжет он просто неправельныйй??
QUOTE |
//ActionAttack (Действие - Атака) void ActionAttack(object oAttackee, int bPassive=FALSE)
object - это объект, который будет боксёрской груши. int bPassive= - атака в пассивном (если стоит TRUE) или в активном режиме (если стоит FALSE) |
Добавлено в [mergetime]1124733555[/mergetime]
QUOTE |
DEM, ему нужно, чтоб диалог активизировался, а не чел фразу сказал. |
Блина, не заметил.... день сегодня какой-то
-fenix-
Aug 22 2005, 21:30
ДА, тут надо бы еще проверку сделать, на того, кто наступил. А то наступит на тригер, кто угодна и диалог откроется. Вылядеть будет так.
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) |
Атаки означают: в пассивном - НПС не будет подбегать к атакуемому, а будет использовать дистанционные атаки, в активном - он подбежит к атакуемому и будет с ним махаться.
Так вроде.
Поэтому делай их сюжетными.
Агрессинг
Aug 22 2005, 21:31
Подскажите пожалуйст. где event'ы шмоток находятся.
-fenix-
Aug 22 2005, 21:38
QUOTE (Агрессинг @ Aug 22 2005, 21:31) |
Подскажите пожалуйст. где event'ы шмоток находятся. |
Их кажись нет? Все, что можно с вещями делать, делается по другому.
А что ты хочешь с вещью сделать?
Агрессинг
Aug 22 2005, 21:47
onequipitem,
onunequipitem
-fenix-
Aug 22 2005, 21:54
Ах эти!
Это в модульных св-вах смотри.
Агрессинг
Aug 22 2005, 22:08
-fenix-
А надо для определенной вещи - например на oneqip плаща локалку
-fenix-
Aug 22 2005, 22:32
Агрессинг, ты их не полностью называешь, я так понимаю, что при утрате плаща локалку?
Тут надо просто смотерть, кокой предмет был утерян. Введи в Редакторе скрипта 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() |
Проверка на ТАГ аналогично, как и стегом НПС, написано выше.
Агрессинг
Aug 22 2005, 22:39
Мне надо поставить при экепировании плаща локалку.
Alian REXisСпасибо.

Я так и думал, что надо через last equiped, но решил удостоверится, точно ли нет евентов в вещах. Оказалось - нет.
Alian REXis
Aug 22 2005, 22:39
Агрессинг,
Это событие срабатывает при надевании любого предмета.
Пример скрипта(на OnPlayerEquipItem):
Neverwinter Script Source |
object oITM= GetPCItemLastEquipped(); // Последняя вещь, которая была надета object oPC = GetPCItemLastEquippedBy();//последний PC, который надел вещь
if (GetTag(oITM) =="тэг плаща") { .......... } |
Аналогично со снятием вещей
на OnPlayerUnEquipItem
GetPCItemLastUnequipped();
GetPCItemLastUnequippedBy();
Стал ковыряться в переводе NWN... (который лежит тут) ну вообще беда. Переводили точняк не ручками, а каким-то полуавтоматом.
А где приложили ручки - получились перлы вроде "умрите буратины!".
И диалоги низкоинтеллектуальных персонажей переводчики не просекли, а поправили "ошибки" английского языка.
Я решил поправить все имена собственные, названия существ и местностей, то есть привести к единообразному виду.
Для чего написал прогу, которая преобразует dialog.tlk в plain-text и обратно. Для удобства подправления.
Дополнил dialog.tlk до версии 1.66
Если есть какие пожелания по исправлению наиболее жутких мест, то сообщайте.
Тотально перевести заново, конечно, в разумные сроки, в одиночку нереально.
Знатоки AD&D, кто такой Umber Hulk? По-русски?
Vitalist
Aug 23 2005, 18:05
Спасибо за тригер!
Напишите как:
1) после смерти NPC открылся портал
2) NPC после разговора телепортировал игрока в друшую локацию
Dik Morris
Aug 23 2005, 19:03
QUOTE |
2) NPC после разговора телепортировал игрока в друшую локацию |
Ставится на последнюю строчку в диалоге
Neverwinter Script Source |
void main() { object oPC = GetPCSpeaker(); AssignCommand(oPC, ClearAllActions()); ActionWait(3.0); AsignCommand(oPC, JumpToObject(GetObjectByTag("ТЭГ_ВЭЙПОИНТА"))); } |
-fenix-
Aug 23 2005, 19:11
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
Aug 25 2005, 18:49
Fenix. самое то!
DikMorris, так все правильно? Что-то не хочет...
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
Aug 26 2005, 00:17
Вот мне, наконец, понадобилась ваша квалифицированная помощь.
У меня есть сундук. Я кладу туда один сюжетный предмет. Когда захожу в игру, то в сундуке помимо нужного мне предмета лежат ещё несколько случайно сгенерированных игрой. Можно ли убрать как-нибудь эти случайно сгенерированные предметы?
Tiger Greyhawk
Aug 26 2005, 02:29
2
DaemonixПравь скрипт на OnEnter этого сундука. Или удали его вообще.
Daemonix убери все скрипты в слотах сундука и положи в инвентарь свой предмет.
Vitalist
Aug 26 2005, 14:50
Что-то не хочет... Наверняка, я где-то не прав: в конце диалога пихаю этот скрипт, в другой области ставлю "точку" с нужным тэгом?
А как телепортировать просто в другую локацию?
прото в другую нельзя. Надо поставить в другой локации вэйпоинт и телепортироваться туда...
Кажеться так...
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
Aug 26 2005, 16:49
DEM

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

QUOTE |
Можно ли задать интервал между игроком и NPC во время разговора? Мне хотелось бы, чтобы игрок не подходил так близко. |
Скорее всего можно, но как...
Dik Morris
Aug 26 2005, 16:58
Можно, написать кутсценку

(если уж сильно надо, я напишу)
Еще игрока, закинуть на вайпоинт
Ну а вот, если не хочешь эффекта, но вместе со всей партией

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-
Aug 26 2005, 20:29
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
Aug 27 2005, 00:14
Вот скрипт. Но не компилируется!
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]
Самое обидное, что я ни фига не знаю.. поэтому и исправить не могу.. могу тока юзать, но учусь, учусь, учусь, учусь, учусь.........
Ну во первых у тебя допущены ма-а-аленькие ошибки.. Типа, нету второй скобки и т.д.
Вот так будет правильнее, но всё равно не апускаеться...
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
Aug 27 2005, 01:09
А этот скриптик должен делать так, чтобы один непись всё время размахивал руками и кричал, что нужно поговорить.
Хм... я ты не пробовал поставить на 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 А всё оказалось намного проще

Ставишь на 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-
Aug 27 2005, 09:26
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("ЭЙ!! Волочи сюда свои кривые ноги!!!!")); } } |
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-
Aug 27 2005, 09:48
Aiwan, я это понимаю. Но скажем если нужно 15, 20 метров? Игрока так можно подвести, но НПС все равно подойдет к игроку, чтобы начать разговор. Не может он на 15, 20 метрах говорить. Пролема как я понял в этом или нет

Только там скрипты нужно немного доделать. Скажем и на тригере лучше создавать невидимый объект, потому что тригеры могут быть разных размеров. А на последний строчке в диалоге нужно еще сделать удаление этого объекта, особенно если скрипт будет несколько раз выполняться.
QUOTE |
Aiwan, я это понимаю. Но скажем если нужно 15, 20 метров? Игрока так можно подвести, но НПС все равно подойдет к игроку, чтобы начать разговор. Не может он на 15, 20 метрах говорить. Пролема как я понял в этом или нет |
Зачем так далеко? Тут уж легче мне кажеться поставить еще один невидимый объект, с таким же именем и портретом, и пусть игрок говорит с ним...
-fenix-
Aug 27 2005, 12:49
DEM, а это что по твоему?
QUOTE (-fenix- @ Aug 26 2005, 20:29) |
В начале тригера(со стороны ПС) ставешь Труп(невидимый - есть в палитре), ему ставешь имя и портрет НПС, а в скрипте ставешь его ТАГ. |
2Aiwan, я кажись протупил!
Эту функцию можно использовать, чтобы назначить точное расстояние разговора, но на тригере это наверное не так актуально, а вот на OnPerseption, чтобы не маяться с настройкой чувств, самое оно. Но запускаться она будет все равно с тех скриптов и сам разговор будет осуществляться то же. Я с самого начала подумал об этой функции, но потом нарисовал тригер и забыл о ней
DASADA
Aug 27 2005, 22:16
Люди что мне надо сделать, чтобы чела заставить идти из одной точки в другую.
QUOTE (DASADA @ Aug 28 2005, 01:16) |
Люди что мне надо сделать, чтобы чела заставить идти из одной точки в другую. |
Чел - это твой младший брат? И ты его за пивом не можешь отправить в точку?
Надо скомандовать так: "ЧЕЛ! ИДИ ИЗ ОДНОЙ ТОЧКИ В ДРУГУЮ!"

Что за идиотские вопросы? Понятно, что тема для абсолютных глупостей, но не для тупости же.
Что бы получить нормальный ответ, надо задать нормально вопрос. А именно. Какой чел? РС, НПС, ДМ? В какие точки и при каких условиях? В разговоре, или просто пинать бычки на двух точках? Сделай два вейпоинта в радиальном меню НПС. Он будет ходить по ним вечно.
Айван, у тебя сегодня день не задался?

, это ИМХО не красиво... А не правильная формулировка вопроса, ну... Вспомни себя когда ты стал изучать ТУЛСЕТ вначале....
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 (кажеться так), обязательно просмотрите статью по анимации, мне она помогает всегда
Добавлено в [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
Aug 28 2005, 12:36
Ну ладно тебе Aiwan

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

Добавлено в [mergetime]1125222471[/mergetime] напишу когда приду и если уже кто-нить не ответит...
-fenix-
Aug 28 2005, 15:58
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)); } |
QUOTE |
Neverwinter Script Source | object oWP = GetObjectByTag("ТАГ ВЕЙПА"); |
|
Э-э-э-э... А разве вэйпоинты перечисляются через GetObjectByTag??? Я думал, через GetWaypointByTag, или так тоже можно??