Loki87
Jul 19 2007, 14:46
ну если столько всего надо проверять и остерегаться, то да. а мне вообще было нужно чтоб НПС просто подошел и начал диалог, так как действие в городе происходит, и след. врагов нет, ничем он не занят, стульев нет. и тд и тп. так что по этому я так удивился и сказал, мол нафига, мне то все эти проверки.
вообще получается один такой скрипт начала диалога написал, универсальный, и юзай копи-пэйст на весь модуль.
Teranozavr_REX
Jul 19 2007, 15:15
Товарищи !! чето я немогу найти этот spell 2da помогите а ???
нашел spell 2da ( если точнее дали готовый так что вопрос де он лежит остался открытый)
Большогосвятилища там нет
Еще раз прошу помочь с сим вопросом ни какими поисками и тп найти егоне удаеться
скрипт обычногосвятилища ни чем не связан с большим ибо при его коментировании
большое как работало так и работает
Цитата(Loki87 @ Jul 19 2007, 15:46) [snapback]110755[/snapback]
вообще получается один такой скрипт начала диалога написал, универсальный, и юзай копи-пэйст на весь модуль.
зачем копи-паст? 1 скрипт на весь модуль достаточно. Именно в этом и суть.
Цитата(Loki87 @ Jul 19 2007, 15:46) [snapback]110755[/snapback]
и след. врагов нет
А банальный вариант - игрок сам начал геноцид НПС в городе, случайно наступил на триггер разговора, вы не рассматриваете?
А убийство этого самого НПС с дальней дистанции?
А наличие в партии игрока кучи народа и животных, что будет мешать движению?
все чуть сложнее, чем кажется на первый взгляд.
Worldowner
Jul 21 2007, 10:13
Пасиб большое! Нашёл и начал читать
Цитата(Dik Morris @ Jul 15 2007, 13:37)

2 Worldowner, он прячется в
этих краях, и найти его, можно набрав в поиске слово: Lexicon.
(Может это уже рассматривалось, но я не нашел.) Как снять ограничение на максимальное количество хенчманов в партии?
Dik Morris
Jul 22 2007, 09:55
"Добавить с скрипт на onModuleLoad - cтроку:
Цитата
SetMaxHenchmen(х);
где Х - это количество разрешенных хенчманов"
© в ХХХ раз.
Teranozavr_REX
Jul 22 2007, 10:18
как с криптом изменитьфракцию Моба или Плеера
gennady
Jul 22 2007, 10:47
Можно даже враждебного монстра сделать дружественным, сменив ему фракцию:
Neverwinter Script Source
void main()
{
object oPC = GetFirstPC();
object oGoblin = GetObjectByTag("TAG");
object oNeytral = GetObjectByTag("DEVA");
if(GetIsEnemy(oPC, oGoblin)) // Если враги
ChangeFaction(oGoblin, oNeytral); // Дать oGoblin фракцию oNeytral
}
И я поффравил...
Teranozavr_REX
Jul 24 2007, 10:00
ЗА пару дней узнал некоторые особенности по фракциям
еще раз перефразирую задачю))
Есть две воюющие стороны
назовем их А и Б
Игрок в начале захода выбирает себе сторону
По карте должны бегать мобы фракции А, фракции Б, нейтральные всем, и враждебные всем )))
Вопрос как заставить игроков быть постоянно в хостайле друг к другу, если они в разных фракциях,
как заставить мобов быть враждеными игрокам А и мирными к игрокам Б, и наоборот.
насколько я понимаю, надо сделать локальные переменные, на плеерах, разных фракций и поним как то менять реакцию мобов.
надо функции изменения реакции моба, + совет куда сие все лудше всего всунуть ( к какому событию прикрепить) так что бы минимально нагружать сервер.
так же еще интересует вопрос я сейчас использую функцию
Neverwinter Script Source
void ActionMoveToObject(object oMoveTo, int bRun=FALSE, float fRange=1.0f)
для того что бы хзаставитьмоба двигаться к вейпоинту
сия функция меня не устраивает по
причинам
того что моб идет попрямой и практически не способен обходить припятствия
во время передвижения практически ни на что не реангирует
нету ли чем ее заменить
стандартным или кто то может что то самописное подсказатьможет??? взамен
P.S. И сильно не бейте
если что то спросил глупое просто сейчас почти нет времени сидетьв тулсете а только время прикидыватьалгоритмы )) со всеми вытикающими
Dik Morris
Jul 24 2007, 10:06
2 Teranozavr_REX, можно использовать ActionForceMoveToObject. Тогда, когда NPC застрянет где-нибуть, через определенный промежуток времени, который ты указываешь сам, он перенесется в нужную точку.
Еще можно попробовать, поднять АI NPC. SetAILevel. Но это требовательно к ресурсам.
Ах-да, бегло прочитал. По поводу двух враждебных фракций игроков. Тут ты прав - нужно ставить локальные переменные, и потом функцией SetPCDislike выставлять дизлайк, всем "неверным".
Teranozavr_REX
Jul 24 2007, 10:15
QUOTE
2 Teranozavr_REX, можно использовать ActionForceMoveToObject. Тогда, когда NPC застрянет где-нибуть, через определенный промежуток времени, который ты указываешь сам, он перенесется в нужную точку.
Принципе перемещение телепортом не совсем то что надо
но если других способов не найду то принципе пойдет)
а самое главное я буду теперь знатьвсем разница ActionForceMoveToObject от ActionMoveToObject ))
QUOTE
Еще можно попробовать, поднять АI NPC. SetAILevel. Но это требовательно к ресурсам.
Боюсь сие мне уже непоможет((
SetAILevel насколько я понял устанавливает просто некоторую переменную которую потом читает стандартный скрипт АИ моба и в зависимости от ее значения принемает решения
АИ я переписал с нуля и моему скрипта SetAILevel это уже пустой звон ((
Еще вопрос, я скачал хак файл с лошадьми, их модели не появились среди доступных. Есть NWNViever , как с его помощью или другим способом добавить в модуль лошадей?
Teranozavr_REX
Jul 25 2007, 09:24
ТАК ну значит автоматом что бы раскидывало дизлайки сделал
а вот смонстрами незадача (((
как ни пробовал неполучаеться нормально
требуеться что бы фракция дружелюбыных мобов стала враждебной к конкретно заданому плееру, а к другому так и осталась доброжелательной
Помню, давно тут задавал один вопрос, но поиском уже не могу его отрыть, потому что даже не помню как я его тогда сформулировал.
Короче говоря, это касается системы лута, когда труп монстра не уничтожается, а лут собирается с его тела. Так вот, если лут не взять, тело исчезает, но на его месте остается пятно, которое видно при зажатой подсветке. Никто не в курсе как от него избавиться?
Teranozavr_REX
Jul 25 2007, 12:30
Сделал
Вроде еще нюб скриптописания а уже так достало биться головой об всякого рода не задокументированые фичи(((
делаеться все просто
Neverwinter Script Source
AdjustReputation(oPlayer,GetObjectByTag("ХХХ"), -100);
Где ХХХ моб чтостоит в локе робочей
так главная проблема была втом чтоя добрый человек решил себя обезапоситьи поставил ему галочки сюжетный безсмертный и тп
из за этого ничегоне работало
если оставить галочку только безсмертный то все происходит коректно и вся фракция в которой состоит ХХХ становиться враждебной
azathoth
Jul 25 2007, 12:39
Цитата(Teranozavr_REX @ Jul 25 2007, 10:24)

требуеться что бы фракция дружелюбыных мобов стала враждебной к конкретно заданому плееру, а к другому так и осталась доброжелательной
Neverwinter Script Source
// Set how nStandardFaction feels about oCreature.
// - nStandardFaction: STANDARD_FACTION_*
// - nNewReputation: 0-100 (inclusive)
// - oCreature
void SetStandardFactionReputation(int nStandardFaction, int nNewReputation, object oCreature=OBJECT_SELF)
Цитата(Лито @ Jul 25 2007, 12:35)

Короче говоря, это касается системы лута, когда труп монстра не уничтожается, а лут собирается с его тела. Так вот, если лут не взять, тело исчезает, но на его месте остается пятно, которое видно при зажатой подсветке. Никто не в курсе как от него избавиться?
Пятно обычно появляется если попробовать уничтожить трупик существа DestroyObject'ом. Чтобы избежать появления точки нужно вместо этого забрать все вещи и деньги существа - оставшееся тело через время уничтожится автоматически.
Teranozavr_REX
Jul 26 2007, 12:11
где находиться стсндартный скрипт что раздает экспу за мобов и как егопритушитьесли у меня своя система раздачи опыта ??
Dik Morris
Jul 26 2007, 12:40
Это не стандартный скрипт. Точнее вовсе не скрипт.
В свойствах модуля, во вкладке "Advanced", имеется "шкала XP", именно это и отвечает за раздачу опыта.
В твоем случае, нужно установить ее значение до нуля (по умолчанию параметр равен десяти).
Loki87
Jul 29 2007, 16:41
У меня вопрос к Gennady - я попробовал твой скрипт, (ну где при наступлении на триггер НПС начинает разговор). и вобщем при сохранении он не спомпилировался.
ERROR: NO FUNCTION STARTINGCONDITIONAL() IN SCRIPT
Dik Morris
Jul 29 2007, 17:13
Все скрипты на той странице приведенные gennady отлично составляются.
Про твою ошибку. Как я понял этот код, ты ставишь на эвент "Текст появляется при". Вопрос - зачем?
Ведь для такого скрипта, нужно рисовать триггер и ставить на эвент onEnter. Тогда все будет работать (конечно нужно пару деталей настроить, но про них уже говорили).
Еще раз: триггер -> onEnter -> настройка.
Ни про какие другие эвенты, речи не идет; в данном (и не очень) случае; читай описание внимательнее, все ведь уже было сказано.
Loki87
Jul 29 2007, 20:29
я поставил на onenter триггера, но дело не в этом. просто в скрипте где то ошибка. потому что он не компилируется.
Dik Morris
Jul 29 2007, 21:27
Честно говоря, не слишком-то охота терять время/трафик/нервы на некоторые, достаточно простые вещи. Дан готовый, работающий, составляющийся скрипт. Дано описание, куда его поставить, как его настроить. Причем подробное описание, со всеми мелочами. Почему так сложно все
внимательно, еще разок перечитать и сделать заново? Вот этого я не понимаю. Сам, будучи новичком, первым делом - прошарил весь форум и нашел интересные мне скрипты; ибо писать не умел. И использовал их. Все получалось. Можно ошибиться в составлении, написании; допустить ляп. Но как не засунуть готовый код, в определенный эвент, указать тэг NPC - я не представляю.
Click. Смотри в модуле.
Loki87
Jul 29 2007, 23:22
Ты меня не понял, я все разобрал все прочитал и тд и тп. просто скрипт нерабочий. я не виноват что он не компилируется. и я же не заставляю тебя траффик твой тратить на это.
Цитата(Loki87 @ Jul 30 2007, 00:22)

Ты меня не понял, я все разобрал все прочитал и тд и тп. просто скрипт нерабочий. я не виноват что он не компилируется. и я же не заставляю тебя траффик твой тратить на это.
я плакаю, ты опиши четко и внятно, куда ты поставил скрипт, как, как назвал, что в нем изменил, все четко и подробно, а лучше приведи в посте и текст скрипта из твоего модуля (не надо давать ссылку на пост)
Artlira
Jul 30 2007, 01:58
Loki87
Уверяю вас, что скрипт этот прекрасно составляется и работает. Он используется по всему модулю, и никаких сбоев пока еще не было. gennady только немного утрировал фразы, но это видимо для наглядности.
Единственное в чем я вижу, может быть у вас проблема – это если вы поменяли фразы и написали свои с буквой “я”.
В этом случае либо используйте патч DUMBO или вариант Lex, решающий проблему с этой буквой. Все это есть на форуме. Нужно только поискать. Или откажитесь совсем от буквы “я”.
А лучше еще раз внимательно прочтите все пояснения к скрипту – он рабочий!
Цитата(Loki87 @ Jul 29 2007, 17:41)

ERROR: NO FUNCTION STARTINGCONDITIONAL() IN SCRIPT
эта ошибка бывает когда скрипт типа void main() ставится в диалог в слот TextAppearsWhen. Бывает и просто иногда тупит редактор скриптов, но это очень редко. Обычно в таком случае компиляция будет со 2-3 попытки
Loki87
Jul 30 2007, 13:34
Artlira - буквы "я" там нет, потому что модуль я пишу на английском - след. все диалоги на англ.
Lex - Вот как выглядит скрипт. Я поменял только фразы диалога + комментарии.
Neverwinter Script Source
/////////////////////////////////////////////////
//:: Janeth starts talking to PC.
//:: File name: camera_dialog
//:://////////////////////////////////////////////////
void main()
{
object oPC = GetEnteringObject();
object oSP = GetHenchman(oPC);
vector vFace = GetPosition(oPC);
string sName = GetLockKeyTag(OBJECT_SELF);
int i = 1;
float fTime;
object oDL = GetNearestObjectByTag(sName, oPC, i);
int iA = GetGoodEvilValue(oPC);
if (!GetIsPC(oPC)) return;
while (GetIsObjectValid(oDL))
{
if (!GetIsInCombat(oPC)&&!GetIsInCombat(oDL)&&!GetIsEnemy(oPC, oDL)&&
!GetIsDead(oDL) && GetObjectType(oDL) == OBJECT_TYPE_CREATURE)
{
fTime = GetDistanceBetween(oPC, oDL);
SetLocalInt(OBJECT_SELF,"VALID",1);
break;
}
i++;
oDL = GetNearestObjectByTag(sName, oPC, i);
}
if (GetLocalInt(OBJECT_SELF, "VALID") != 1) return; // check
if(fTime < 5.0) fTime = 7.5;
string sPC = "???";
if (iA>30 && iA<70) sPC = "Get lost!";
if (iA>=70 && iA<100) sPC = "What? What's going on?";
if (iA==100) sPC = "Sure.";
AssignCommand(oDL, ClearAllActions());
AssignCommand(oDL, SetFacingPoint(vFace));
AssignCommand(oDL, ActionPlayAnimation(ANIMATION_LOOPING_PAUSE, 1.0, 2.5));
AssignCommand(oDL, ActionPlayAnimation(ANIMATION_FIREFORGET_GREETING)
;
AssignCommand(oDL, ActionWait(fTime-3.0));
AssignCommand(oDL, ActionStartConversation(oPC)); // PC dialog
AssignCommand(oDL, ActionDoCommand(SetCommandable(TRUE, oDL))); // unblock chain
DelayCommand(0.1, SetCommandable(FALSE, oDL)); // block chain
DelayCommand(0.2, SetCutsceneMode(oPC, TRUE));
DelayCommand(0.3, AssignCommand(oPC, ClearAllActions(TRUE)));
DelayCommand(0.4, AssignCommand(oSP, ClearAllActions(TRUE)));
DelayCommand(1.5, AssignCommand(oPC, ActionForceMoveToObject(oDL, FALSE, 1.0, fTime-2.0)));
DelayCommand(1.5, AssignCommand(oSP, ActionForceMoveToObject(oPC, FALSE, 1.0, fTime-2.0)));
DelayCommand(2.0, AssignCommand(oDL, SpeakString("<c>Hey, stranger, can I ask you for something?</c>")));
DelayCommand(fTime-3.5, AssignCommand(oPC, SpeakString(sPC)));
DelayCommand(fTime, SetCutsceneMode(oPC, FALSE));
DelayCommand(fTime, SetCommandable(TRUE, oDL)); // unblock chain
DelayCommand(fTime+0.1, AssignCommand(oPC, ActionStartConversation(oDL))); // PC dialog
DestroyObject(OBJECT_SELF, fTime+1.0);
}
этот скрипт я ставлю на onEnter триггера, который очерчен вокруг самой Janeth (НПС которая и должна заговорить с ПС).
Dik Morris
Jul 30 2007, 14:04
Loki87, почему в твоем последнем сообщение, шла речь совсем о другой ошибке? Впрочем ладно, делов-то; внимательно осмотри строку №39. Там есть небольшой ляп (кстати говоря, которого в скрипте автора и нет совсем, так что думай сам, кто не прав) в виде отсутствия скобки и точки с запятой (в строке №40 - убери знак).
Loki87
Jul 30 2007, 14:37
это так написалось в посте криво, в редакторе все ок с запятыми.
угар, щас нажал - save - приколитесь, но он скомпилировался, хотя я нифига не правил!!! чудеса науки!
еще кое что - попробовал я теперь это дело в игре. работает, но не так как я хотел. заходя на триггер я вижу только всплывшие на головами строчки с текстом. а сам диалог НПС не начала.
DelayCommand(fTime+0.1, AssignCommand(oPC, ActionStartConversation(oDL)));
попробуй сделать с указанием файла диалога. Или наоборот, чтобы НПС начал разговор, а не игрок.
Teranozavr_REX
Jul 31 2007, 14:33
подскажите
вот что сделать надо
у меня естьнекий НПСи в закрытой локе
мне бы сформировать пати из мобов и плееров так что бы главой пати был этот НПСи из закрытой локи.
сооответвенно
не нашел как добавитьв однопати плеера и моба ((
Teranozavr_REX
Aug 9 2007, 13:05
есть функции которыми можно померятьдистанцию между объектами
вопрос определить чему равна единица этогоизмерения
чему скажем например равено ребро квадрата мазайки
или же сколько видет моб с длинной средней или короткой зоной видимости ???
да еще вот у меня получилось два поста подряд с разными по сути вопросами
правильно было делитьна два поста или надо было редактирыватьпервый ???
azathoth
Aug 10 2007, 15:12
Цитата(Teranozavr_REX @ Aug 9 2007, 14:05)

есть функции которыми можно померятьдистанцию между объектами
В редакторе скриптов над списком всех функций есть окошко для поиска, впишите туда слово "distance" - и увидите эти функции.
Единица измерения -- "метр".
Размер тайла -- 10x10.
---
Если это поможет: GetObjectSeen(...) позволяет определить видит моб что-то или нет без всяких вычислений дистанций, зон видимости и т.п.
Teranozavr_REX
Aug 13 2007, 16:19
спасибо за исчерпывающий ответ но поиском меня уже научили пользоваться
QUOTE
Единица измерения -- "метр".
Размер тайла -- 10x10.
а вот за это огромное пасибо, а не простоспасибо
Вопрос глупый, но тем не менее. Как зайти на локальный шард ДМ-ом, что такое ДМ, и как он ведет квесты?
Цитата(Valor @ Aug 22 2007, 04:56)

Вопрос глупый, но тем не менее. Как зайти на локальный шард ДМ-ом, что такое ДМ, и как он ведет квесты?
Данжеон Мастер. В общем, это человек который ведет а попросту организовывает все в игре, в данном случае на шарде, модуле. Он отвечает за квесты, диалоги и все события вокруг игроков. Что то вроде админа Забыбтых Королевств

Искать их надо здесь или на шардах. Но хороший ДМ это редкость...
Leon PRO
Aug 22 2007, 14:56
Цитата
Как зайти на локальный шард ДМ-ом
Запускаешь NWN Launcher там выбираешь DM Client и коннектишься к шарду через стандартный интерфейс. Само собой если это твой шард. Если чужой - то у тебя просто не будет ДМ пасса, чтобы зайти.
Вот я и хотел бы узнать каким образом организовывать события, диалоги, квесты. Посредством каких-либо команд или специальной программы.
shadowdweller
Aug 27 2007, 23:02
Доброго времени суток всем!
Столкнулась с такой проблемой - хотела сделать светильник, который светит разными цветами и переключается с одного на другой в случайном порядке OnHeartbeat каждые 5 секунд. Подумала и написала вот что:
Neverwinter Script Source
int iRollTen = d10(1); // Action would be chosen at random from the 10 variants
void main()
{
switch(iRollTen) // Generated number
{
case 1:
effect eLight1 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN);
object oLight1 = GetObjectByTag("LIGHT1");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight
oLight1, 5.0);
break;
case 2:
effect eLight2 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_RED);
object oLight1 = GetObjectByTag("LIGHT1");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight
oLight1, 5.0);
break;
case 3:
effect eLight3 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_WHITE);
object oLight1 = GetObjectByTag("LIGHT1");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight
oLight1, 5.0);
break;
case 4:
effect eLight4 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE);
object oLight1 = GetObjectByTag("LIGHT1");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight
oLight1, 5.0);
break;
case 5:
effect eLight5 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_ORANGE);
object oLight1 = GetObjectByTag("LIGHT1");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight
oLight1, 5.0);
break;
case 6:
effect eLight6 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_PURPLE);
object oLight1 = GetObjectByTag("LIGHT1");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight
oLight1, 5.0);
break;
case 7:
effect eLight7 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_YELLOW);
object oLight1 = GetObjectByTag("LIGHT1");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight
oLight1, 5.0);
break;
case 8:
effect eLight8 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BROWN);
object oLight1 = GetObjectByTag("LIGHT1");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight
oLight1, 5.0);
break;
case 9:
effect eLight1 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN);
object oLight1 = GetObjectByTag("LIGHT1");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight
oLight1, 5.0);
break;
case 10:
effect eLight4 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE);
object oLight1 = GetObjectByTag("LIGHT1");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight
oLight1, 5.0);
}
}
Ставлю на слот хартбит невидимого статичного объекта с соответствующим тэгом.
Скрипт не компилируется, выдает
Код
ERROR: SKIPPING DECLARATION VIA "case" STATEMENT DISALLOWED.
Что это за ошибка такая? Как от нее избавиться? Вообще, возможно ли в принципе то, что я задумала?
virusman
Aug 27 2007, 23:09
Где объявлен eLight?
Ещё советую определить переменные до case.
shadowdweller
Aug 27 2007, 23:16
Virusman, сделала так, как вы посоветовали. Цифры после "eLight" упорно съедает редактор постов.

Код
int iRollTen = d10(1); // Action would be chosen at random from the 10 variants
void main()
{
switch(iRollTen) // Generated number
{ effect eLight1 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_GREEN);
effect eLight2 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_RED);
effect eLight4 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BLUE);
effect eLight5 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_ORANGE);
effect eLight6 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_PURPLE);
effect eLight7 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_YELLOW);
effect eLight8 = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_BROWN);
object oLight1 = GetObjectByTag("LIGHT1");
case 1:
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight1,oLight1, 5.0);
break;
case 2:
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight2,oLight1, 5.0);
break;
case 3:
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight1,oLight1, 5.0);
break;
case 4:
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight4,oLight1, 5.0);
break;
case 5:
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight5,oLight1, 5.0);
break;
case 6:
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight6,oLight1, 5.0);
break;
case 7:
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight7,oLight1, 5.0);
break;
case 8:
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight8,oLight1, 5.0);
break;
case 9:
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight1,oLight1, 5.0);
break;
case 10:
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLight4,oLight1, 5.0);
}
}
Результат тот же - ERROR: SKIPPING DECLARATION VIA "case" STATEMENT DISALLOWED. Выдается прямо на case 1:
virusman, ты проще объясняй. Человек только начинает это вкуривать. Ей по пол литры не осилить каждый день.
virusman
Aug 27 2007, 23:28
Да, в смысле до switch.
Neverwinter Script Source
void main()
{
object oLight = GetObjectByTag("LIGHT1");
effect eLight;
int nEffectID;
int iRollTen = d10(1); // Action would be chosen at random from the 10 variants
switch(iRollTen) // Generated number
{
case 1:
nEffectID = VFX_DUR_GLOW_LIGHT_GREEN;
break;
case 2:
nEffectID = VFX_DUR_GLOW_LIGHT_RED;
break;
case 3:
nEffectID = VFX_DUR_GLOW_LIGHT_WHITE;
break;
case 4:
nEffectID = VFX_DUR_GLOW_LIGHT_BLUE;
break;
case 5:
nEffectID = VFX_DUR_GLOW_LIGHT_ORANGE;
break;
case 6:
nEffectID = VFX_DUR_GLOW_LIGHT_PURPLE;
break;
case 7:
nEffectID = VFX_DUR_GLOW_LIGHT_YELLOW;
break;
case 8:
nEffectID = VFX_DUR_GLOW_LIGHT_BROWN;
break;
case 9:
nEffectID = VFX_DUR_GLOW_LIGHT_GREEN;
break;
case 10:
nEffectID = VFX_DUR_GLOW_LIGHT_BLUE;
}
eLight = EffectVisualEffect(nEffectID);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLight, oLight, 5.0);
}
Можно даже без свитча, но так понятнее.
shadowdweller
Aug 27 2007, 23:35
Virusman,
Aiwan, cпасибо

Компилируется, а работать не хочет...
virusman
Aug 28 2007, 00:05
Объект с тэгом LIGHT1 точно есть?
Кстати, вместо oLight можно использовать OBJECT_SELF, если этот скрипт висит на его Heartbeat.
shadowdweller
Aug 28 2007, 00:31
Цитата(virusman @ Aug 28 2007, 01:05)

Объект с тэгом LIGHT1 точно есть?
Да, есть такой объект. Статичный невидимый объект с этим тэгом.
Насколько я знаю, со статичными объектами нельзя проводить скриптовых (да и каких-либо) операций.
можно. Но попробуй сделать объекту другой апиранс, чтобы моделька была, ну стол например.
shadowdweller
Aug 28 2007, 10:27
Помогло, когда заменила невидимый объект вполне себе материальным и сняла флажок Static, не отмечая при этом Useable. Спасибо огромное всем.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.