Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > 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
Loki87
ну если столько всего надо проверять и остерегаться, то да. а мне вообще было нужно чтоб НПС просто подошел и начал диалог, так как действие в городе происходит, и след. врагов нет, ничем он не занят, стульев нет. и тд и тп. так что по этому я так удивился и сказал, мол нафига, мне то все эти проверки.

вообще получается один такой скрипт начала диалога написал, универсальный, и юзай копи-пэйст на весь модуль. good.gif
Teranozavr_REX
Товарищи !! чето я немогу найти этот spell 2da помогите а ???


нашел spell 2da ( если точнее дали готовый так что вопрос де он лежит остался открытый)

Большогосвятилища там нет
Еще раз прошу помочь с сим вопросом ни какими поисками и тп найти егоне удаеться
скрипт обычногосвятилища ни чем не связан с большим ибо при его коментировании
большое как работало так и работает
Lex
Цитата(Loki87 @ Jul 19 2007, 15:46) [snapback]110755[/snapback]
вообще получается один такой скрипт начала диалога написал, универсальный, и юзай копи-пэйст на весь модуль.

зачем копи-паст? 1 скрипт на весь модуль достаточно. Именно в этом и суть.

Цитата(Loki87 @ Jul 19 2007, 15:46) [snapback]110755[/snapback]
и след. врагов нет

А банальный вариант - игрок сам начал геноцид НПС в городе, случайно наступил на триггер разговора, вы не рассматриваете?
А убийство этого самого НПС с дальней дистанции?
А наличие в партии игрока кучи народа и животных, что будет мешать движению?
все чуть сложнее, чем кажется на первый взгляд.
Worldowner
Пасиб большое! Нашёл и начал читать good.gif
Цитата(Dik Morris @ Jul 15 2007, 13:37) *
2 Worldowner, он прячется в этих краях, и найти его, можно набрав в поиске слово: Lexicon.

Valor
(Может это уже рассматривалось, но я не нашел.) Как снять ограничение на максимальное количество хенчманов в партии?
Dik Morris
"Добавить с скрипт на onModuleLoad - cтроку:
Цитата
SetMaxHenchmen(х);

где Х - это количество разрешенных хенчманов"

© в ХХХ раз.
Teranozavr_REX
как с криптом изменитьфракцию Моба или Плеера
gennady
Можно даже враждебного монстра сделать дружественным, сменив ему фракцию:
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
ЗА пару дней узнал некоторые особенности по фракциям

еще раз перефразирую задачю))
Есть две воюющие стороны
назовем их А и Б
Игрок в начале захода выбирает себе сторону

По карте должны бегать мобы фракции А, фракции Б, нейтральные всем, и враждебные всем )))
Вопрос как заставить игроков быть постоянно в хостайле друг к другу, если они в разных фракциях,
как заставить мобов быть враждеными игрокам А и мирными к игрокам Б, и наоборот.

насколько я понимаю, надо сделать локальные переменные, на плеерах, разных фракций и поним как то менять реакцию мобов.

надо функции изменения реакции моба, + совет куда сие все лудше всего всунуть ( к какому событию прикрепить) так что бы минимально нагружать сервер.

так же еще интересует вопрос я сейчас использую функцию
Neverwinter Script Source
void ActionMoveToObject(object oMoveTo, int bRun=FALSE, float fRange=1.0f)

для того что бы хзаставитьмоба двигаться к вейпоинту
сия функция меня не устраивает по
причинам
того что моб идет попрямой и практически не способен обходить припятствия
во время передвижения практически ни на что не реангирует


нету ли чем ее заменить
стандартным или кто то может что то самописное подсказатьможет??? взамен



P.S. И сильно не бейте
если что то спросил глупое просто сейчас почти нет времени сидетьв тулсете а только время прикидыватьалгоритмы )) со всеми вытикающими
Dik Morris
2 Teranozavr_REX, можно использовать ActionForceMoveToObject. Тогда, когда NPC застрянет где-нибуть, через определенный промежуток времени, который ты указываешь сам, он перенесется в нужную точку.

Еще можно попробовать, поднять АI NPC. SetAILevel. Но это требовательно к ресурсам.


Ах-да, бегло прочитал. По поводу двух враждебных фракций игроков. Тут ты прав - нужно ставить локальные переменные, и потом функцией SetPCDislike выставлять дизлайк, всем "неверным".
Teranozavr_REX
QUOTE
2 Teranozavr_REX, можно использовать ActionForceMoveToObject. Тогда, когда NPC застрянет где-нибуть, через определенный промежуток времени, который ты указываешь сам, он перенесется в нужную точку.

Принципе перемещение телепортом не совсем то что надо
но если других способов не найду то принципе пойдет)
а самое главное я буду теперь знатьвсем разница ActionForceMoveToObject от ActionMoveToObject ))

QUOTE
Еще можно попробовать, поднять АI NPC. SetAILevel. Но это требовательно к ресурсам.

Боюсь сие мне уже непоможет((
SetAILevel насколько я понял устанавливает просто некоторую переменную которую потом читает стандартный скрипт АИ моба и в зависимости от ее значения принемает решения
АИ я переписал с нуля и моему скрипта SetAILevel это уже пустой звон ((
Valor
Еще вопрос, я скачал хак файл с лошадьми, их модели не появились среди доступных. Есть NWNViever , как с его помощью или другим способом добавить в модуль лошадей?
Teranozavr_REX
ТАК ну значит автоматом что бы раскидывало дизлайки сделал
а вот смонстрами незадача (((
как ни пробовал неполучаеться нормально

требуеться что бы фракция дружелюбыных мобов стала враждебной к конкретно заданому плееру, а к другому так и осталась доброжелательной
Лито
Помню, давно тут задавал один вопрос, но поиском уже не могу его отрыть, потому что даже не помню как я его тогда сформулировал.
Короче говоря, это касается системы лута, когда труп монстра не уничтожается, а лут собирается с его тела. Так вот, если лут не взять, тело исчезает, но на его месте остается пятно, которое видно при зажатой подсветке. Никто не в курсе как от него избавиться? wacko.gif
Teranozavr_REX
Сделал
Вроде еще нюб скриптописания а уже так достало биться головой об всякого рода не задокументированые фичи(((

делаеться все просто
Neverwinter Script Source
AdjustReputation(oPlayer,GetObjectByTag("ХХХ"), -100);

Где ХХХ моб чтостоит в локе робочей
так главная проблема была втом чтоя добрый человек решил себя обезапоситьи поставил ему галочки сюжетный безсмертный и тп
из за этого ничегоне работало
если оставить галочку только безсмертный то все происходит коректно и вся фракция в которой состоит ХХХ становиться враждебной
azathoth
Цитата(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
где находиться стсндартный скрипт что раздает экспу за мобов и как егопритушитьесли у меня своя система раздачи опыта ??
Dik Morris
Это не стандартный скрипт. Точнее вовсе не скрипт.
В свойствах модуля, во вкладке "Advanced", имеется "шкала XP", именно это и отвечает за раздачу опыта.

В твоем случае, нужно установить ее значение до нуля (по умолчанию параметр равен десяти).
Loki87
У меня вопрос к Gennady - я попробовал твой скрипт, (ну где при наступлении на триггер НПС начинает разговор). и вобщем при сохранении он не спомпилировался.

ERROR: NO FUNCTION STARTINGCONDITIONAL() IN SCRIPT
Dik Morris
Все скрипты на той странице приведенные gennady отлично составляются.

Про твою ошибку. Как я понял этот код, ты ставишь на эвент "Текст появляется при". Вопрос - зачем?
Ведь для такого скрипта, нужно рисовать триггер и ставить на эвент onEnter. Тогда все будет работать (конечно нужно пару деталей настроить, но про них уже говорили).

Еще раз: триггер -> onEnter -> настройка.
Ни про какие другие эвенты, речи не идет; в данном (и не очень) случае; читай описание внимательнее, все ведь уже было сказано.
Loki87
я поставил на onenter триггера, но дело не в этом. просто в скрипте где то ошибка. потому что он не компилируется.
Dik Morris
Честно говоря, не слишком-то охота терять время/трафик/нервы на некоторые, достаточно простые вещи. Дан готовый, работающий, составляющийся скрипт. Дано описание, куда его поставить, как его настроить. Причем подробное описание, со всеми мелочами. Почему так сложно все внимательно, еще разок перечитать и сделать заново? Вот этого я не понимаю. Сам, будучи новичком, первым делом - прошарил весь форум и нашел интересные мне скрипты; ибо писать не умел. И использовал их. Все получалось. Можно ошибиться в составлении, написании; допустить ляп. Но как не засунуть готовый код, в определенный эвент, указать тэг NPC - я не представляю.

Click. Смотри в модуле.
Loki87
Ты меня не понял, я все разобрал все прочитал и тд и тп. просто скрипт нерабочий. я не виноват что он не компилируется. и я же не заставляю тебя траффик твой тратить на это.
Neo
Цитата(Loki87 @ Jul 30 2007, 00:22) *
Ты меня не понял, я все разобрал все прочитал и тд и тп. просто скрипт нерабочий. я не виноват что он не компилируется. и я же не заставляю тебя траффик твой тратить на это.

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

эта ошибка бывает когда скрипт типа void main() ставится в диалог в слот TextAppearsWhen. Бывает и просто иногда тупит редактор скриптов, но это очень редко. Обычно в таком случае компиляция будет со 2-3 попытки
Loki87
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
Loki87, почему в твоем последнем сообщение, шла речь совсем о другой ошибке? Впрочем ладно, делов-то; внимательно осмотри строку №39. Там есть небольшой ляп (кстати говоря, которого в скрипте автора и нет совсем, так что думай сам, кто не прав) в виде отсутствия скобки и точки с запятой (в строке №40 - убери знак).
Loki87
это так написалось в посте криво, в редакторе все ок с запятыми.

угар, щас нажал - save - приколитесь, но он скомпилировался, хотя я нифига не правил!!! чудеса науки!

еще кое что - попробовал я теперь это дело в игре. работает, но не так как я хотел. заходя на триггер я вижу только всплывшие на головами строчки с текстом. а сам диалог НПС не начала.
Lex
DelayCommand(fTime+0.1, AssignCommand(oPC, ActionStartConversation(oDL)));

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

сооответвенно
не нашел как добавитьв однопати плеера и моба ((
Teranozavr_REX
есть функции которыми можно померятьдистанцию между объектами

вопрос определить чему равна единица этогоизмерения
чему скажем например равено ребро квадрата мазайки
или же сколько видет моб с длинной средней или короткой зоной видимости ???

да еще вот у меня получилось два поста подряд с разными по сути вопросами
правильно было делитьна два поста или надо было редактирыватьпервый ???
azathoth
Цитата(Teranozavr_REX @ Aug 9 2007, 14:05) *
есть функции которыми можно померятьдистанцию между объектами

В редакторе скриптов над списком всех функций есть окошко для поиска, впишите туда слово "distance" - и увидите эти функции.

Единица измерения -- "метр".

Размер тайла -- 10x10.

---

Если это поможет: GetObjectSeen(...) позволяет определить видит моб что-то или нет без всяких вычислений дистанций, зон видимости и т.п.
Teranozavr_REX
спасибо за исчерпывающий ответ но поиском меня уже научили пользоваться

QUOTE
Единица измерения -- "метр".

Размер тайла -- 10x10.

а вот за это огромное пасибо, а не простоспасибо scratch_one-s_head.gif
Valor
Вопрос глупый, но тем не менее. Как зайти на локальный шард ДМ-ом, что такое ДМ, и как он ведет квесты?
Aiwan
Цитата(Valor @ Aug 22 2007, 04:56) *
Вопрос глупый, но тем не менее. Как зайти на локальный шард ДМ-ом, что такое ДМ, и как он ведет квесты?

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

Запускаешь NWN Launcher там выбираешь DM Client и коннектишься к шарду через стандартный интерфейс. Само собой если это твой шард. Если чужой - то у тебя просто не будет ДМ пасса, чтобы зайти.
Valor
Вот я и хотел бы узнать каким образом организовывать события, диалоги, квесты. Посредством каких-либо команд или специальной программы.
shadowdweller
Доброго времени суток всем!

Столкнулась с такой проблемой - хотела сделать светильник, который светит разными цветами и переключается с одного на другой в случайном порядке 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
Где объявлен eLight?
Ещё советую определить переменные до case.
shadowdweller
Virusman, сделала так, как вы посоветовали. Цифры после "eLight" упорно съедает редактор постов. smile.gif
Код
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: unknw.gif
Aiwan
virusman, ты проще объясняй. Человек только начинает это вкуривать. Ей по пол литры не осилить каждый день. declare.gif
virusman
Да, в смысле до 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
Virusman, Aiwan, cпасибо thank_you.gif
Компилируется, а работать не хочет... sad.gif
virusman
Объект с тэгом LIGHT1 точно есть?
Кстати, вместо oLight можно использовать OBJECT_SELF, если этот скрипт висит на его Heartbeat.
shadowdweller
Цитата(virusman @ Aug 28 2007, 01:05) *
Объект с тэгом LIGHT1 точно есть?

Да, есть такой объект. Статичный невидимый объект с этим тэгом. scratch_one-s_head.gif
Vhall
Насколько я знаю, со статичными объектами нельзя проводить скриптовых (да и каких-либо) операций.
Lex
можно. Но попробуй сделать объекту другой апиранс, чтобы моделька была, ну стол например.
shadowdweller
Помогло, когда заменила невидимый объект вполне себе материальным и сняла флажок Static, не отмечая при этом Useable. Спасибо огромное всем.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2025 Invision Power Services, Inc.