golindor, можно легко и самому научиться... Ты ведь всё равно не научишься делать супер модели если у тя нет вкуса...
ЗЫ. да и вопрос не в ту тему....
QUOTE (golindor @ Oct 29 2005, 19:53) |
Vhall , только не руби с плеча, вoпрос: можно ли выучить 3dmax, Aurora Toolset, рукoводствуясь только форумом? unsure.gif |
Не совсем понимаю значение слова "выучить". Не в обиду будет сказано, но у нас никто не знает тулсет полностью.
А вот стать специалистом в определенной области - запросто. Правда, я рекомендовал бы не ограничиваться только этим форумом (туторы на nwnvault ОЧЕНЬ полезны).
Что до Макса, то советую начинать с книг, а продолжить уроками (именно в этой последовательности. в нэте их полно)
QUOTE (DEM @ Oct 29 2005, 20:54) |
golindor, можно легко и самому научиться... Ты ведь всё равно не научишься делать супер модели если у тя нет вкуса... |
Не соглашусь. Чувство вкуса можно в себе воспитать.
Nashman
Oct 30 2005, 01:16
QUOTE |
Vhall , только не руби с плеча, вoпрос: можно ли выучить 3dmax, Aurora Toolset, рукoводствуясь только форумом? |
ОДНОЗНАЧНО НЕТ!!!! ПРОВЕРЕНО. Нужно еще и много другого...
LEX: Нэш, посты, не несущие смысловой нагрузки (ничего нового после поста Vhallа ты не сказал) не приветствуются. Этот потом удалю
Белатрис
Oct 30 2005, 12:08
У меня такой модуль где есть доска объявлений, и каждый день там должен появлятся новый всплывающий текст, какой скрип нужен для этого?
NedWarN
Oct 30 2005, 20:51
Поставь на ОнЮзет твоей доски, и тогда будет появлятся, 1 из 10, высказываний при нажатии.
Neverwinter Script Source |
int nRan = Random(10); switch (nRan) { case 0: { SpeakString("1");break; } case 1: { SpeakString("2"); break; } case 2: { SpeakString("3..."); break; } case 3: { SpeakString("4"); break; } case 4: { SpeakString("5"); break; case 5: { SpeakString("6"); break; case 6: { SpeakString("7"); break; } case 7: { SpeakString("8"); break; } case 8: { SpeakString("9"); break; и т.д. } } } } } |
Белатрис
Oct 31 2005, 03:43
Они будут появлятся в разброс и повторятся, или нет?
Scaled
Oct 31 2005, 13:44
Привет...
Как удалить 1 драгоценный камень, а то когда их в слоте накапливаеться больше 1, скажем 10
то через DestroyObject удаляються все 10.
Заранее спасибо.
Белатрис
Oct 31 2005, 14:00
Напиши DestroyObject и тэг камня который удалить хочешь.
как после
QUOTE (Scaled @ Oct 31 2005, 14:44) |
то через DestroyObject удаляються все 10. |
можно написать это:
QUOTE (Белатрис @ Oct 31 2005, 15:00) |
Напиши DestroyObject и тэг камня который удалить хочешь. |
???
Neverwinter Script Source |
// Sets stack size of an item. // - oItem: item to change // - nSize: new size of stack. Will be restricted to be between 1 and the // maximum stack size for the item type. If a value less than 1 is passed it // will set the stack to 1. If a value greater than the max is passed // then it will set the stack to the maximum size void SetItemStackSize(object oItem, int nSize) |
Здравствуйте!
Прошу помощи в такой ситуации: решили вдвоем взяться за модуль, одну локацию рисую я, другую - товарищ.
Но собирать-то модуль нужно на одном компе!
Экспортируется локация вроде нормально, но вот при импорте в другой модуль она затирает мою, уже существующую.
Подскажите, пожалуйста, как правильно экспортировать локации с одной машины на другую.
Белатрис
Oct 31 2005, 15:26
QUOTE (Lex @ Oct 31 2005, 14:53) |
QUOTE (Белатрис @ Oct 31 2005, 15:00) Напиши DestroyObject и тэг камня который удалить хочешь. ??? |
Я думал что подсказал правильно, все таки я еще не мастер.
QUOTE (Kavin @ Oct 31 2005, 16:04) |
Подскажите, пожалуйста, как правильно экспортировать локации с одной машины на другую. |
ты все делаешь верно (импорт/экспорт), но дело скорее всего в том, что у вас резрефы локаций одинаковые. (area001, area002 и тд)
Делается просто: в тулсете в списке лок жми на локу правой, там выбирай Create Copy или что-то такое. Делай копию с УНИКАЛЬНЫМ РЕЗРЕФОМ. Потом оригинал удаляй, а копию экспортируй.
На будущее возьмите за правило при создании локации там в самом начале вводить не имя, а резреф уникальный сразу (типа a_town_prison), а потом уже редактируя локацию менять имя. Тогда будет меньше гемороя. Ну если работаете вдвоем, то заранее продумайте так, чтобы у вас не пересекались рефы.
Добавлено в 17:27
QUOTE (Белатрис @ Oct 31 2005, 16:26) |
Я думал что подсказал правильно |
есть золотое правило "не знаешь - не говори" (заодно и "не знаешь - не делай"), чтобы не вводить в заблуждение никого.
\\ все недовольства мне в ПМ. Еще увижу тут посты типа "да ладно, я хотел как лучше" и я выдам пред за оффтоп.
Добавлено в [mergetime]1130765886[/mergetime]
Белатрис
Nov 1 2005, 01:31
Когда просматриваеш большой диалог, всегда видно что есть текст, который нельзя исправить, он серым цветом, это текст который игроку НПС скажет после того как то что либо увидет или сделает для него, (я правильно понимаю?)это как сделать?
Серый текст - это ссылка на строку. Кликни на него двараза мышкой попадешь на родную строчку и правь ее.
Белатрис
Nov 1 2005, 02:32
А как ее сделать... ссылку на фразу?
правой кнопкой на нужной строке - copy
потом правой кнопкой на той строке, после которой нужен линк - paste as link
Белатрис
Nov 1 2005, 04:20
Aiwan, Lex, Спасибо.
У меня опять проблемма. Смотрел тему "скрипты для новичков", и там нашел скрипт который отвечает за перемещения персонажа... короче камень призыва я решил сделать, все дейстывия выполнил попорядку но камешек не сработал, может это потому что мой Тулсет не понимает русский(несмотря на то что установил патч dumbo!), если ошибка в этом, то кому не сложно перевидите скрипты:
Neverwinter Script Source |
void main() { object oActivator = GetItemActivator(); // это активатор объекта(наш PC) object oActivated = GetItemActivated(); // это активируемый объект (камень) object oTarget = GetObjectByTag("ТАГ ПОРТАЛА"); // наш портал
if ("ТАГ КАМНЯ" == GetTag(oActivated)) // проверка. Нужный ли объект использован { SetLocalLocation(oActivator, "ReturnLocation", GetLocation(oActivator)); // запоминаем //координаты игрока перед прыжком AssignCommand(oActivator, ClearAllActions()); // чистим игроку акции AssignCommand(oActivator, ActionJumpToLocation(GetLocation(oTarget))); // собственно //сам прыжок к порталу } } |
Neverwinter Script Source |
void main() { object oActivator = GetLastUsedBy(); // тот ,кто использовал портал (наш игрок) // если нужно сделать прыжок в диалоге, то закомментируйте строчку выше и //расскомментируйте строчку ниже //object oActivator = GetPCSpeaker(); // PC, который разговаривает с объектом
AssignCommand(oActivator, ClearAllActions()); // чистим игроку акции AssignCommand(oActivator, ActionJumpToLocation(GetLocalLocation(oActivator, "ReturnLocation"))); // прыжок к запомненным ранее координатам } |
-fenix-
Nov 1 2005, 08:56
Белатрис, а не проще просто стереть все комментарии?
Про русский в тулсете почитай в Вопросах и Ответах.
Белатрис
Nov 1 2005, 09:04
QUOTE (-fenix- @ Nov 1 2005, 08:56) |
Белатрис, а не проще просто стереть все комментарии? |
Да? А я думал что они обязательны...
-fenix-
Nov 1 2005, 09:06
Comments (Комментарии)
Комментарии были введены, чтобы дать возможность добавлять объяснения к вашему скрипту. Комментарии делают скрипт понятнее и позволяют прослеживать смысл более четко, комментарии повышают читабельность вашего скрипта.
Есть несколько способов добавить комментарий к NWNScript:
Neverwinter Script Source |
// одна строка комментария
/* одна строка комментария */
/* несколько строк комментария ... */ |
Комментарии не компилируются и не добавляют размер к конечному сценарию. Они не должны быть восприняты, как не нужные, отнимающие время - наоборот они сокращают время проверки сложных скриптов, позволяют лучше проследить логику скрипта, увеличивают читабельность скрипта. Часто комментарии используются для формальной документации сценария и функционируют как шапки.
Из официальной библиотеки сценария Bioware Corp.
Neverwinter Script Source |
//:://///////////////////////////////////////////// //:: Acid Fog: On Enter //:: NW_S0_AcidFogA.nss //:: Copyright © 2001 Bioware Corp. //::////////////////////////////////////////////// /* All creatures within the AoE take 2d6 acid damage per round and upon entering if they fail a Fort Save their movement is halved. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 17, 2001 //::////////////////////////////////////////////// |
Анамиэль
Nov 1 2005, 12:24
в стандартной палитре я никак не могу найти такие айтемы типа глаз ракшасы или головы орка - может или я плохо искала или их там нет? Ваулт из за этого копать не хочется
Анамиэль посмотри в разделе PLOT.
Белатрис
Nov 2 2005, 13:24
Снова я!
Вот вопрос возник с диалогом. Описать не могу в голове все перемешано но я постараюсь.
Вот короче:
После того как ПС получит инфу у него появится шанс взят халявную броню и оружие,(чешу голову).........................................
После того как он выберит оружие(ну это дальнего боя(Лук, Арбалет, Праща), ближнего(Меч, Алебарда, Топор и Кинжал)) ему предстоит выбрать броню,(кстати после того как он возьмет определенное оружие т.е. взял Алебадру то появляется строка "Дай броню."(опять чешу голову, не лезит и все!), и там выбор брони, после выбора брони Появляется строка "Дай еще инфы" и "Конец". Тоже самое нужно проделать и с "Дай броню", но если я сделаю "Дай броню" и "Дай оружие" проще всего будет связать "Дай оружие" с "Дай броню", и наоборот, но если так сделать то ПС сможет сколько угодно выбирать оружие и броню, а мне надо только один.................(рычу.)
Надеюсь вам все понятно...
Dik Morris
Nov 2 2005, 13:30
Можно было попроще описать, понятно в общем

Белатрис, такие вещи делаются просто. Размести локальные переменные, и все. (мастером скриптов лучше). Например: на самое начало диалога, повесь переменную (на совершены действия): BELATRIS = 1
Далее, в том месте, когда ты выбираешь меч/броню поставь, условие: (текст появ. при) переменной: BELATRIS = 1
Продолжим.
Когда, ты возьмешь меч, на строчке, в диалоге опять размести локальную переменную BELATRIS = 2
Все. Думаю, смысл понятен.
Я привел таки "грубый" пример, щас все же попробую обьяснить.
Ну во первых, BELATRIS --- это название переменной.
Значение (цифру) ты выбиришь сам. (int)
QUOTE |
BELATRIS = 2 туда где ПС'у дают броню |
Для начала, попробуй попроще. Скажем без ветки с оружием, а потом по аналогии думаю сделаешь.
Ф, запутался блин

PS: помнится, я приводил тебе одну оч. интересную ссылку. В ней подробно расписано, о диалогах и переменных.
Белатрис
Nov 2 2005, 13:37
Спасибо

, как сделаю начало модуля вышлю тебе для оценки!

Прошу прощения за оффтоп...
Добавлено в 14:02 Млин... прости так рад был, думал что все сразу получится, но... у меня там столько веток что путатся начинаю.
Мне нужно ставить BELATRIS = 2 туда где ПС'у дают броню а BELATRIS = 1 туда где оружие?
И еще BELATRIS =
2 - это число переменной или оно входит в название?
И локальную переменную нужно ставит:
"строка", "int" или "float"?
можно вообще без локалок, если не делать линкование, а сделать 2 ветки.
оружие - броня
броня - оружие
QUOTE (Lex @ Oct 31 2005, 16:24) |
ты все делаешь верно (импорт/экспорт), но дело скорее всего в том, что у вас резрефы локаций одинаковые. (area001, area002 и тд) Делается просто: в тулсете в списке лок жми на локу правой, там выбирай Create Copy или что-то такое. Делай копию с УНИКАЛЬНЫМ РЕЗРЕФОМ. Потом оригинал удаляй, а копию экспортируй.
На будущее возьмите за правило при создании локации там в самом начале вводить не имя, а резреф уникальный сразу (типа a_town_prison), а потом уже редактируя локацию менять имя. Тогда будет меньше гемороя. Ну если работаете вдвоем, то заранее продумайте так, чтобы у вас не пересекались рефы |
Благодарю! Ваш совет очень пригодился - теперь работаем вдвоем.
Добавлено в [mergetime]1130955350[/mergetime]
Еще один вопрос - если в свойствах объекта стоит галочка "Используемый", можно ли на событие OnUsed запускать диалог, минуя промежуточный скрипт типа:
CODE |
void main() { object oPC=GetLastUsedBy(); ActionStartConversation(oPC, "wall_shield"); } |
Или нет?.. У меня не получилось, несмотря на то, что в поле "Разговор" стояло имя соотв. диалога.
Не помню, во всяком случае у меня никогда не получалось обходиться без скрипта.
А зачем вообще без него обходиться? Это во всяком случае не сложно же создать один скриптик на разговор

А если ты имеешь ввиду что у тебя куча таких объектов - создай один universal скрипт, в котором будет браться локальная переменная с объекта с названием разговора.
например:
Neverwinter Script Source |
void main() { object oPC=GetLastUsedBy(); string sConv = GetLocalString(OBJECT_SELF, "my_conv"); ActionStartConversation(oPC, sConv); } |
где в "my_conv" строковой переменной сохранено название разговора.
хм.. господа, вы делаете из мошки слоника.

пишем
Neverwinter Script Source |
void main() { object oPC=GetLastUsedBy(); ActionStartConversation(oPC); } |
и запустится тот диалог, что стоит в поле "Разговор".
1 скрипт на все-все такие случаи.
Loxness
Nov 3 2005, 01:49
В играх Baldur Gate, Ice Wind Dale , Follault
герой играет на локациях а перемещается по внешнему миру
Имея возможность выйдя за пределы локации попасть на некую внешную обшую карту
Можно ли сделать аналогичное в Nevewrwinter ? если можно то как?
QUOTE (Loxness @ Nov 3 2005, 04:49) |
В играх Baldur Gate, Ice Wind Dale , Follault герой играет на локациях а перемещается по внешнему миру Имея возможность выйдя за пределы локации попасть на некую внешную обшую карту Можно ли сделать аналогичное в Nevewrwinter ? если можно то как? |
Конечно можно. Но для этого надо карту сделать в 3Д максе. А если не умеешь. Возьм нашу в ПЛ.
QUOTE (Lex @ Nov 2 2005, 23:54) |
хм.. господа, вы делаете из мошки слоника.  пишем
Neverwinter Script Source | void main() { object oPC=GetLastUsedBy(); ActionStartConversation(oPC); } |
и запустится тот диалог, что стоит в поле "Разговор". 1 скрипт на все-все такие случаи.
|
Мда. Точно. Все нормально запускается.
Кстати.... Написал скрипт, при помощи которого игрок может снять со стены висящий щит. Может, в базу скриптов добавить, вдруг кто из нас, новичков, нуждаться будет?..
QUOTE (Kavin @ Nov 3 2005, 19:58) |
Может, в базу скриптов добавить, вдруг кто из нас, новичков, нуждаться будет?.. |
Kavin пока не надо.
Nashman
Nov 4 2005, 00:07
Скачал из Вуальта все плагины для 3д макса, но редми нет. Может кто-то сказать для чего какой нужно?
ПОнемаю вопрос не очень, но надо... :Р
Белатрис
Nov 4 2005, 02:15
После вчерашнего мучения с объядинением СоУ и ХотУ(которые до сих пор продолжаются) разговоры в модуле который я делал не хотят включатся. Вот такую ошибку мне Тулсет выдает: Access violation at 007E8207 in module 'nwtoolset.exe'. Read of address 115A0000.
Что нужно делать?
Добавлено в [mergetime]1131103409[/mergetime] Все, уже исправил, можете не помогать.
Loxness
Nov 4 2005, 17:53
"Конечно можно. Но для этого надо карту сделать в 3Д максе. А если не умеешь. Возьм нашу в ПЛ. "
...
Aiwan, ПЛ - это что и где?
Dik Morris
Nov 4 2005, 17:55
ПЛ - Проклятье Левора, группа взаимосвязанных модулей (3 части)
Разработчики, команда WRG! Team.
Отличный аддон, к НВН (прод. в магазинах)
Короче, моя эпопея со светом почти закончилась - я повесил две люстры для виду, вешаю на них зажигание (SetPlaceableLight) на открвыание двери и гашу той же функцией при закрывании. Только вот когда свет гасится, комната остается слегка подсвеченной плюс люстры видны

.
P.S. Тут кто-то вопрошал, для чего это надо - я пишу модуль под шард, мне для антуражу нужна пустая комната, где персонажи, имеющие от комнаты ключ могут тайно поговорить. Только не надо "можно же в аське" и т.п. Это для отыгрыша нужно.
P.P.S. А все-таки, у кого-нибудь получилось этой дурацкой SetTileMainLightColor что-нибудь сделать? Ну не работает она, хоть ты тресни. Пишу вроде правильно:
Neverwinter Script Source |
location L1=GetLocation(GetObjectByTag ("invobj1")); location L2=GetLocation(GetObjectByTag ("invobj2")); SetTileMainLightColor(L1,TILE_MAIN_LIGHT_COLOR_WHITE,TILE_MAIN_LIGHT_COLOR_WHITE); SetTileMainLightColor(L2,TILE_MAIN_LIGHT_COLOR_WHITE,TILE_MAIN_LIGHT_COLOR_WHITE); RecomputeStaticLighting(GetArea(GetObjectByTag("invobj1"))); |
объекты с такими тегами есть, проверял дважды - написаны правильно. Не зажигается ареа и все тут.
QUOTE (Белатрис @ Nov 4 2005, 02:15) |
Все, уже исправил, можете не помогать. |
Каким образом исправил-то? Мало ло понадобится, а то у меня Невервинтер слетел подобным образом и не хотел запускаться.
Белатрис
Nov 5 2005, 01:30
Прошу прощения за оффтоп.
------------------------------------------------------------------------
QUOTE (L33t @ Nov 4 2005, 19:34) |
Каким образом исправил-то? |
Перенес локации моего старого модуля в новый.
QUOTE (L33t @ Nov 4 2005, 22:32) |
Только вот когда свет гасится, комната остается слегка подсвеченной плюс люстры видны |
Тебе надо делать RecomputeStaticLighting света в тех местах где были люстры. Если их только две, то это не беда. Но если много, то этот процесс очень ресурсоемкий и пересчитывает освещение всей локи. Я тебе дам свой скрипт факелов, посомтри как я сделал и подправь для себя.
Neverwinter Script Source |
//::////////////////////////////////////////////// //:: OnEnter am_ten_torch_on //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// /* ВКЛЮЧАЕМ ОГОНЬ ФАКЕЛОВ И ЗВУК К НИМ НОЧЬЮ.
Таг факела = "AM_PLS_TORCH_ON". Он должен быть с активированной анимацией и отключена опция Static. Звуковой объект ставим рядом с факелом, помните его таг ДОЛЖЕН БЫТЬ УНИКАЛЬНЫМ ВО ВСЕМ МОДУЛЕ. Иначе не сработает. К примеру таг моего звука, равен тагу триггера плюс порядковый номер, начиная с еденицы: AM_SOUND_TORTCH_(порядковый номер = i). Расставляйте на локации факела и звуки рядом. Все готово!
*/ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 08.06.2005 //::///////////////////////////////////////////// //#include "am_inc_debug" void main() { int i=1; // Первый порядковый номер тага звука float f=0.5; // Задержка включения float r=f+0.2; // Задержка пересчета освещения object oPC = GetEnteringObject(); string sSound = GetTag(OBJECT_SELF); // Приравнял таг триггера к звуовому object oTorch = GetFirstObjectInArea(OBJECT_SELF); object oSound = GetObjectByTag(sSound+IntToString(i)); // Звуковой объект if (!GetIsPC(oPC)) {return;} //---------------------------------- ДЕНЬ -------------------------------------- if (GetIsDay() && !GetLocalInt(OBJECT_SELF, "DEACTIVATED")) // Если день но факела горят { while (GetIsObjectValid(oTorch)) { if (GetTag(oTorch) == "AM_PLS_TORCH_ON" && !GetLocalInt(oTorch, "LIGHT_OFF")) /* Проверяем все объекты на локации, берем с нужным тегом и без локальной переменной, что с объектом уже выключен. */ { SetLocalInt(oTorch, "LIGHT_OFF", TRUE); AssignCommand(oTorch, PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)); DelayCommand(f, SetPlaceableIllumination(oTorch, FALSE)); DelayCommand(r, RecomputeStaticLighting(GetArea(oTorch))); //Debug(FloatToString(f)); //Debug(FloatToString®); f=f+0.4; // Сделай паузу! r=f+0.2; /* Каджый факел заставим съесть Твикс. И прересчитаем свет позже. Не должно быть рывков, но если они все же появились, увеличьте немного, на 0.2, к примеру. Если и потом не пропали, то выкиньте ваш компьютер в окно, Это надо было сделать года два назад. */ } if (GetIsObjectValid(oSound)) { SoundObjectStop(oSound); // Выключаем звук i++; // Присвоим объекту звука таг на единицу больше } oSound = GetObjectByTag("AM_SOUND_TORCH_"+IntToString(i)); oTorch = GetNextObjectInArea(OBJECT_SELF); } SetLocalInt(OBJECT_SELF, "DEACTIVATED", TRUE); } //----------------------------- НОЧЬ ------------------------------------------- if (GetIsNight() && GetLocalInt(OBJECT_SELF, "DEACTIVATED")) // Если ночь но мы затушили факела { while (GetIsObjectValid(oTorch)) { if (GetTag(oTorch) == "AM_PLS_TORCH_ON" && GetLocalInt(oTorch, "LIGHT_OFF")) { SetLocalInt(oTorch, "LIGHT_OFF", FALSE); AssignCommand(oTorch, PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)); DelayCommand(f, SetPlaceableIllumination(oTorch, TRUE)); DelayCommand(r, RecomputeStaticLighting(GetArea(oTorch))); Debug(FloatToString(f)); Debug(FloatToString®); f=f+0.4; r=f+0.2; } if (GetIsObjectValid(oSound)) { SoundObjectPlay(oSound); // Включаем звук i++; // Присвоим объекту звука таг на единицу больше } oSound = GetObjectByTag("AM_SOUND_TORCH_"+IntToString(i)); oTorch = GetNextObjectInArea(OBJECT_SELF); } SetLocalInt(OBJECT_SELF, "DEACTIVATED", FALSE); // ЧТо бы один раз сработало return; } } |
Но если честно, я работаю с другим скриптом, он дестроит факел и креетит на его месте другой:
Neverwinter Script Source |
//::////////////////////////////////////////////// //:: OnEnter am_aud_torch_del //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// /* ВКЛЮЧАЕМ ОГОНЬ ФАКЕЛОВ И ЗВУК К НИМ НОЧЬЮ.
Таг факела = "AM_PLS_TORCH_OFF". Он должен быть с в палитре с моделью факела без амбиент анимации. Именно его и надо расставить в локации. Иначе будет свет от факела гореть над ним. Его ResRef "am_pls_torchoff" Таг горящего факела = "AM_PLS_TORCH_ON" ResRef "am_pls_torchon" Звуковой объект ставим рядом с факелом, помните его таг ДОЛЖЕН БЫТЬ УНИКАЛЬНЫМ ВО ВСЕМ МОДУЛЕ. Иначе не сработает. К примеру таг моего звука, равен тагу триггера плюс порядковый номер, начиная с еденицы: AM_SOUND_TORTCH_(порядковый номер = i). Расставляйте на локации факела и звуки рядом. Все готово!
*/ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 08.06.2005 //::///////////////////////////////////////////// #include "am_inc_debug" void main() { int i=1; // Первый порядковый номер тага звука float f=0.5; // Задержка дестроя string sSound = GetTag(OBJECT_SELF); // Приравнял таг Локации к звуовому object oTorch = GetFirstObjectInArea(OBJECT_SELF); object oSound = GetObjectByTag(sSound+IntToString(i)); // Звуковой объект effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_20); // Свет факела int nEvent = GetUserDefinedEventNumber(); //======================= USERDEINE EVENT 1000 ================================= if (nEvent == 1000) //---------------------------------- ДЕНЬ -------------------------------------- { while (GetIsObjectValid(oTorch)) { if (GetTag(oTorch) == "AM_PLS_TORCH_ON" && !GetLocalInt(oTorch, "DO")) /* Проверяем все объекты на локации, берем с нужным тегом и без локальной переменной, что с объектом уже выключен. */ { SetLocalInt(oTorch, "DO", TRUE); DestroyObject(oTorch, f); CreateObject(OBJECT_TYPE_PLACEABLE,"am_pls_torchoff", GetLocation(oTorch)); Debug(FloatToString(f)); f=f+0.2; // Сделай паузу! } if (GetIsObjectValid(oSound)) { DebugObject(oSound); SoundObjectStop(oSound); // Выключаем звук i++; // Присвоим объекту звука таг на единицу больше } oSound = GetObjectByTag(sSound+IntToString(i)); oTorch = GetNextObjectInArea(OBJECT_SELF); } } //======================= USERDEINE EVENT 3000 ================================= if (nEvent == 3000) //----------------------------- НОЧЬ ------------------------------------------- { while (GetIsObjectValid(oTorch)) { if (GetTag(oTorch) == "AM_PLS_TORCH_OFF" && !GetLocalInt(oTorch, "DO")) { SetLocalInt(oTorch, "DO", TRUE); DestroyObject(oTorch, f); object oTorchNew = CreateObject(OBJECT_TYPE_PLACEABLE,"am_pls_torchon", GetLocation(oTorch)); DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oTorchNew)); Debug(FloatToString(f)); f=f+0.2; // Сделай паузу! } if (GetIsObjectValid(oSound)) { DebugObject(oSound); SoundObjectPlay(oSound); // Включаем звук i++; // Присвоим объекту звука таг на единицу больше } oSound = GetObjectByTag(sSound+IntToString(i)); oTorch = GetNextObjectInArea(OBJECT_SELF); } return; } } |
Я думаю ты парень грамотный сам разберешься что тебе над и что лучше. Главное помни, иногда после RecomputeStaticLighting надо выйти из ареныы и войти снова что бы сработало, это если во время пересчета РС был дальше чем видимый свет. Вот поэтому я и юзаю второй скрипт у себя он на юзердеф арены повешан. Тогда я спокоен, зашел в большую локу, факела поменялись и все путем. В верхнем скрипте надо было выйти из арены, если факел стял далеко он так и был со свечением.
Белатрис
Nov 5 2005, 15:09
Вопрос не по тулсету, а по версии 1.66.
Когда я пропатчил свой ХОТУ то у меня появились premium modules(там ничего нет), для чего они?
QUOTE (Белатрис @ Nov 5 2005, 18:09) |
Когда я пропатчил свой ХОТУ то у меня появились premium modules(там ничего нет), для чего они? |
Играть.
Белатрис
Nov 6 2005, 01:07
QUOTE (Aiwan @ Nov 6 2005, 06:08) |
Играть. |
Ну я то понимаю что играть, но их там ведь пусто. И вообще это что за модули такие? Оссобенные? Как их закинуть, где найти?
AliceDiren
Nov 6 2005, 01:44
Белатрис, найти их просто - store.bioware.com
Только они не за бесплатно

я могу ошибаться, но помоему от 5$ каждый.
http://www.wrg.ru/forums/index.php?showtopic=1860+ на форуме РПГпланета посмотри. Там выложили на фтп кракнутые премиум модули
За непоимением Лексикона (пока, увы...) спрошу у вас.
Вот функция SendMessageToPC отправляет тест в инфо-окно.
А какая функция выдает всплывающий такой текст, который появляется в двух звездочках и уплывает потом вверх, типа *Вы услышали звуки боя*?..
P.S.: Я имел ввиду не то действие, которое выполняет SpeakString.
Добавлено в [mergetime]1131383119[/mergetime]
Ай! Простите балбеса. Кое-что из курса английского вспомнил и сам нашел.
Для сведения: это функция
Neverwinter Script Source |
void FloatingTextStringOnCreature(string sStringToDisplay, object oCreatureToFloatAbove, int bBroadcastToFaction=TRUE) |
Добавлено в [mergetime]1131437205[/mergetime]
Такой теперь вопрос:
В случае, если два (оба) бандита убиты, запускается катсцена, описанная в отдельном скрипте.
На событие OnDeath обоих бандитов ставлю условие проверки такого типа "если первый (второй) бандит уже убит, то запуск катсцены".
Для запуска использую либо вызов функции из скрипта (подключая библиотечку через #include), либо функцию "ExecuteScript".
В результате режим катсцены включается, но далее не движется. Аминь.
В чем здесь проблема может быть?..
Daemonix
Nov 9 2005, 03:17
Простите за наитупейший вопрос.
Я переустановил свой НвН и теперь у меня в игре (на открытых пространствых) всё, что выше уровня первого этажа срезается! Раньше такого не было. Посмотрел видеоопции, всё, как раньше... что делать?
Белатрис
Nov 9 2005, 04:15
Мне нужно сделать чтобы после разговора НПС подбежал к двери, потом ее открыл, зашел(т.е. перешел в другую локацию), и дрерь захлопывается.
Как это сделать?
Dik Morris
Nov 9 2005, 07:09
На строчку в диалоге ставь:
Neverwinter Script Source |
void main() { object oNPC = GetObjectByTag("TAГ НПС"); // object oWP = GetObjectByTag("TAГ ВАЙПОИНТА НА КОТОРЫЙ НПС СМОТАЕТАЕТСЯ"); ActionDoCommand(AssignCommand(oNPC,ClearAllActions())); ActionDoCommand(AssignCommand(oNPC, ActionMoveToObject(GetObjectByTag("ТАГ ДВЕРИ",FALSE)))); ActionDoCommand(AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0f,3.0f))); ActionDoCommand(ActionOpenDoor(GetObjectByTag("ТАГ ДВЕРИ"))); ActionDoCommand(AssignCommand(oNPC, ActionJumpToObject(oWP))); ActionDoCommand(ActionCloseDoor(GetObjectByTag("ТАГ ДВЕРИ"))); } |