![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3161
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Ошибка либо в строках (тег, название локалки), либо локалка не становится равной 2. Дебаг в помощь.
Neverwinter Script int StartingConditional()
{ object oPC = GetPCSpeaker(); SendMessageToPC(oPC, IntToString(GetLocalInt(oPC, "LOCAL"))); SendMessageToPC(oPC, IntToString(HasItem(oPC, "METLA"))); return GetLocalInt(oPC, "LOCAL") == 2 && HasItem(oPC, "METLA"); } |
![]()
Сообщение
#3162
|
|
Level 3 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Эльф ![]() |
да нет локалка становится "2". Двойкой она становится после кастсцены, которая нормально работает, и журнал выдает сообщение, то есть локалка становится "2"-кой. Тег локалки проверял раз 20 тоже все нормально. А диалог не появляется. сегодня вечером попробую то чо ты написал Илериен, спс огромное. (IMG:style_emoticons/kolobok_light/good.gif)
|
![]()
Сообщение
#3163
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
|
![]()
Сообщение
#3164
|
|
Level 3 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Эльф ![]() |
Да, тег журнальной записи. Я так понял, что не стоило этого было делать? А как тогда обозначить переход состояния переменной с 1 до 2 и так далее, если не через тег журнальной записи в каком-то скрипте?
Сообщение отредактировал serafim - Jul 1 2009, 09:35 |
![]()
Сообщение
#3165
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Я так и думал... Тут тебе нужна именно локалка об этом событие, вот её и нужно проверять... Журнальную запись по номеру задания не отследить... В диалоги тогда нужно будет проверять правильную локалку, только реши на кого её повесить. Например:
Neverwinter Script void main() { object oPC = GetFirstPC(); // Наш герой AddJournalQuestEntry("LOCAL_quest", 2, oPC); // журнал 2 запись SetLocalInt(oPC, "LOCAL" ,2); // Локалка о 2 записи в журнале } Теперь проверка в диалоге этого события: Neverwinter Script #include "nw_i0_tool"
int StartingConditional() { object oPC = GetPCSpeaker(); // Наш герой if(GetLocalInt(oPC , "LOCAL") == 2 && HasItem(oPC , "METLA")) return TRUE; return FALSE; } /* Проверить численное значение локалки на герое LOCAL равное 2 Проверить предмет с тегом METLA При наличие этих двух составляющих, откроется ветка диалога */ |
![]()
Сообщение
#3166
|
|
Level 3 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Эльф ![]() |
[quote name='gennady' date='Jul 1 2009, 21:20' post='129787']
Я так и думал... Тут тебе нужна именно локалка об этом событие, вот её и нужно проверять... Журнальную запись по номеру задания не отследить... В диалоги тогда нужно будет проверять правильную локалку, только реши на кого её повесить. Например: Neverwinter Script void main() { object oPC = GetFirstPC(); // Наш герой AddJournalQuestEntry("LOCAL_quest", 2, oPC); // журнал 2 запись SetLocalInt(oPC, "LOCAL" ,2); // Локалка о 2 записи в журнале } СПС только я непонял три вещи: 1) почему таки журнальная запись не проверяется? 2) куда эвешать этот скрипт? можно пример? Я так понял он должен стоять у меня в каст сцене да? что бы журнальная запись стала "2" и локалка тоже? 3) Обьясните мне сразу что есть локалка? например, вот это -- AddJournalQuestEntry("LOCAL_quest", 2, oPC); // журнал 2 запись -- я понял, а вот это не совсем -- SetLocalInt(oPC, "LOCAL" ,2); // Локалка о 2 записи в журнале. тоесть я непонимаю откуда брать Тег локалки потоум как непонимаю что есть сама локалка. (IMG:style_emoticons/kolobok_light/smile.gif) ЗЫ: РЕБЯТА, Я ХОТЕЛ ПОБЛАГОДАРИТЬ ВАС ВСЕХ, КТО ПОМОГАЕТ НАМ НАЧИНАЮЩИМ. НЕ ПОТОМУ КАК ВЫ ТАКИЕ МОЛОДЦЫ,.. И ПРОЧИЕ ДЕФЕРАМБЫ В ВАШУ СТОРОНУ ЛИТЬ НЕ БУДУ. А ПОТОМУ КАК, ЕСТЬ ВЕЩИ, КОТОРЫЕ ТЫ ДЕЛАЕШЬ ИЛИ ХОЧЕШЬ СДЕЛАТЬ, НО, ОТЧАСТИ, НЕ ПОНИМАЕШЬ, И, ХОРОШО, КОГДА ЕСТЬ ЛЮДИ СПООБНЫЕ ТЕБЕ ПОДСКАЗАТЬ И ПОКАЗАТЬ "КАК" И "ЧТО" НУЖНО (Д)СДЕЛАТЬ, ТОГДА И ИНТЕРЕС К РАБОТЕ РАСТЕТ И РАБОТАТЬ СТАНОВИТСЯ ЛЕГЧЕ И ЯСНЕЕ. СПАСИБО ВАМ. (ох, прям на слеЗу потянуло (IMG:style_emoticons/kolobok_light/thank_you.gif) ) Сообщение отредактировал serafim - Jul 2 2009, 09:50 |
![]()
Сообщение
#3167
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата 1) почему таки журнальная запись не проверяется? А зачем? (IMG:style_emoticons/kolobok_light/smile.gif) Журнальная запись - просто информация игроку о квесте, смысловой нагрузки для системы скриптов она не несёт.Цитата 2) куда эвешать этот скрипт? можно пример? Я так понял он должен стоять у меня в каст сцене да? что бы журнальная запись стала "2" и локалка тоже? Да, значение локалки изменять в то же время, что и журнальную запись.Цитата 3) Обьясните мне сразу что есть локалка? например, вот это -- AddJournalQuestEntry("LOCAL_quest", 2, oPC); // журнал 2 запись -- я понял, а вот это не совсем -- SetLocalInt(oPC, "LOCAL" ,2); // Локалка о 2 записи в журнале. тоесть я непонимаю откуда брать Тег локалки потоум как непонимаю что есть сама локалка. У каждого объекта есть список переменных, который представляет собой ассоциативный массив (строка -> тип (число, строка, etc.)). Иначе говоря, локалка - это навешенная на на объект переменная, обладающая, во-первых, названием (string), во-вторых, значением (какой-либо тип; если используется, к примеру, функция SetLocalInt(), то значение будет типа int). Если данная локалка не была установлена на объект, то её значение считается 0 для GetLocalInt(), 0.0 для GetLocalFloat(), "" (пустая строка) для GetLocalString(), OBJECT_INVALID для GetLocalObject().Функции SetLocalX(object o, string s, X a), где Х - тип локалки, устанавливают на объекте о (первый аргумент) значение локалки с названием s (второй аргумент) в а (третий аргумент). Т. е. той локалке нужно присвоить какое-то уникальное название. Сообщение отредактировал Ilerien - Jul 2 2009, 11:50 |
![]()
Сообщение
#3168
|
|
Level 3 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Эльф ![]() |
А журнал квестов тоже есть обьектом, то есть локалкой (у нее же то же есть переменные)?
Например, у меня журнальная запись с тегом ybor_sar. правильно ли будет прописать: SetLocalInt(oPC, "ybor_sar" ,2); или журнальная запись не есть локалкой? Если не есть, тогда что должно писатся под значением Х, где: SetLocalInt(oPC, "Х" ,2); ???? Ребята, простите за дотошность, но мне легче воспринимать инфу сразу же на примере. СПС Сообщение отредактировал serafim - Jul 2 2009, 12:37 |
![]()
Сообщение
#3169
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата А журнал квестов тоже есть обьектом, то есть локалкой (у нее же то же есть переменные)? Журнал - не объект.Цитата Neverwinter Script SetLocalInt(oPC, "ybor_sar" ,2); Журнал - это вообще фигня. Забудь про запись в журнале, это всего лишь информация игроку. Скрипт твой будет учитывать именно локалку, а уж как ты её назовёшь - твоё дело. Сообщение отредактировал Ilerien - Jul 2 2009, 12:49 |
![]()
Сообщение
#3170
|
|
Level 3 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Эльф ![]() |
все теперь понял (IMG:style_emoticons/kolobok_light/smile.gif) СПС (IMG:style_emoticons/kolobok_light/smile.gif) сегодня вечером попробую. потом отпишусь.
|
![]() ![]()
Сообщение
#3171
|
|
Level 2 ![]() Класс: Оборотень Характер: Lawful Good Раса: Человек ![]() |
Мне бы хотелось узнать, свойство предмета Ранение (Wounding) является эффектом или нет? Т.е. как оно работает - по схеме - (удар -- скрипт -- эффект Ранения на цели) или это типично движковая функция? Вообщем, можно ли наложить этот эффект без использования оружия? (IMG:style_emoticons/kolobok_light/ph34r.gif)
|
![]()
Сообщение
#3172
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Это движковое, эффект нельзя наложить скриптом.
|
![]()
Сообщение
#3173
|
|
Level 2 ![]() Класс: Оборотень Характер: Lawful Good Раса: Человек ![]() |
Ээх!, такая жалость! (IMG:style_emoticons/kolobok_light/swoon.gif) А сколько времени она действует и можно ли это как то указать?
Я так подозреваю, что длительность указать нельзя. В таком случае меня интересует, сколько длится эффект, или он снимается ТОЛЬКО лечением? |
![]()
Сообщение
#3174
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Указать нельзя. Длительность - надо тестить, так не знаю (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#3175
|
|
Level 5 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Человек ![]() |
Не уверен, но возможно длительность есть в 2da файлах.
|
![]() ![]()
Сообщение
#3176
|
|
Level 1 Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
Доброго времени суток всем! Перейду сразу к делу:
Мне нужно написать несколько скриптов, которыеми я хотел бы обогатить свой мод. Требуется -1- Скрипт, который воскрешает монстра или нпц через определенное время. Если возможно, выложить скрипт, который ресает всех монстров на локации после определенного времени и при полной зачистке этой локации. -2- Скрипт, который создает монстров в определенной локации через небольшой промежуток времени пока живет определенный монстр или нпц (время можно установить). -3- Скрипт, который заставляет монстра кастовать заклинания не сразу, а через некоторое время. Можноли это привязать к жизням монстра? Например: 100% жизней - моб кастует слепоту, 75% жизней - монстр кастует оглушение и т. д. Очень прошу написать, можно ли создать такие скрипты! При создании мода, я обязательно укажу автора скрипта! |
![]() ![]()
Сообщение
#3177
|
|
Level 1 Класс: Волшебник Характер: Chaotic Neutral Раса: Человек ![]() |
Всем привет!
Знатоки, помогите пожалуйста. Хотелось бы изменить действие заклинаний Magic Fang/Greater Magic Fang так, чтобы их мог применять на себя "превращённый" друид/Shifter. В NWN2 это вроде бы есть, а вот в первом - нет. Я пытался изменить скрипт, но для первого заклинания там только две коротких строчки, а второй скрипт явно - расширение первого. |
![]()
Сообщение
#3178
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
ShurikVch, думаю там различие не столько в скрипте, сколько в 2да (разрешение кастовать на разные объекты и в разных состояниях зашито вроде бы там).
-1- Скрипт, который воскрешает монстра или нпц через определенное время. Если возможно, выложить скрипт, который ресает всех монстров на локации после определенного времени и при полной зачистке этой локации. Можно. и вроде бы где-то на форуме пару раз что-то очень похожее всплывало. Поищи. -2- Скрипт, который создает монстров в определенной локации через небольшой промежуток времени пока живет определенный монстр или нпц (время можно установить). Можно. Раньше не встречал, но по сути этот скрипт мало отличается от предыдущего. -3- Скрипт, который заставляет монстра кастовать заклинания не сразу, а через некоторое время. Можноли это привязать к жизням монстра? Например: 100% жизней - моб кастует слепоту, 75% жизней - монстр кастует оглушение и т. д. нормально сделать сложно. Если просто вприсать так, как ты написал, монстр будет тупить и скорее всего эти действия будут конфликтовать с его АИ. А если по всем правилам писать АИ.. лучше не надо. По крайней мере на данном этапе. За тебя такое врядли кто будет писать - крайне большой объем работы. |
![]()
Сообщение
#3179
|
|
Level 5 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Человек ![]() |
Всем привет! Знатоки, помогите пожалуйста. Хотелось бы изменить действие заклинаний Magic Fang/Greater Magic Fang так, чтобы их мог применять на себя "превращённый" друид/Shifter. В NWN2 это вроде бы есть, а вот в первом - нет. Я пытался изменить скрипт, но для первого заклинания там только две коротких строчки, а второй скрипт явно - расширение первого. Для начала переведи, что такое "Magic Fang/Greater Magic Fang". |
![]()
Сообщение
#3180
|
|
Level 1 Класс: Волшебник Характер: Chaotic Neutral Раса: Человек ![]() |
Для начала переведи, что такое "Magic Fang/Greater Magic Fang". Волшебный клык и Великий(Большой) волшебный клык Заклинание делает природное оружие, т. е. когти зубы кулаки и т. д. магическим. "Превращенный" герой ведь не может использовать инвентарь, но это заклинание позволит его хоть как-то усилить. |
![]()
Сообщение
#3181
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Насколько я знаю, в нвне колдовать в полиморфе нельзя.
|
![]()
Сообщение
#3182
|
|
Level 1 Класс: Волшебник Характер: Chaotic Neutral Раса: Человек ![]() |
|
![]()
Сообщение
#3183
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Функция DoMagicFang(), библиотека x0_i0_spells. После
Neverwinter Script object oTarget = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION); написатьNeverwinter Script if(GetBaseItemType(GetSpellCastItem()) == BASE_ITEM_POTION) После этого перекомпилировать скрипты этих заклинаний.oTarget = OBJECT_SELF; Только, вполне возможно, что их нельзя юзать с зелий. Сообщение отредактировал Ilerien - Sep 20 2009, 16:05 |
![]()
Сообщение
#3184
|
|
Level 1 Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
ShurikVch, думаю там различие не столько в скрипте, сколько в 2да (разрешение кастовать на разные объекты и в разных состояниях зашито вроде бы там). Можно. и вроде бы где-то на форуме пару раз что-то очень похожее всплывало. Поищи. Можно. Раньше не встречал, но по сути этот скрипт мало отличается от предыдущего. нормально сделать сложно. Если просто вприсать так, как ты написал, монстр будет тупить и скорее всего эти действия будут конфликтовать с его АИ. А если по всем правилам писать АИ.. лучше не надо. По крайней мере на данном этапе. За тебя такое врядли кто будет писать - крайне большой объем работы. спс за ответ! если не сложно, покажите сам скрипт. просто сам я не умею писать скрипты, а просто копирую их и пытаюсь делать по примеру, но сам мод очень хочется написать, реально мысть глобальная ))) заранее спс за понимание Автор:::::::::::::::::Milez::::::::::::::::::::::: ::::::: Jun 29 2003 Еще один спавн. Фишка в том, что респавн существ основан на вероятностом законе, а не на времени, через которое спавн должен происходить. Может кому пригодиться. Основной скрипт на Heartbeat плейсабла, играющего роль спавна:Neverwinter Script Source void main() { object oSelf=OBJECT_SELF; object oPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,P LAYER_CHAR_IS_PC); if (!GetIsObjectValid(oPC)) return; float fActDist=IntToFloat(GetMaxHitPoints()); // расстоЯние, на к-ом должен поЯвитьсЯ игрок от спавна, чтобы тот заработал if (GetDistanceBetween(oPC,oSelf)>fActDist) return; int iSpawnDist=GetReflexSavingThrow(oSelf); // макс. расст-ие, на к-ом будут поЯвлЯться сущ-ва int iSpawnChance=GetWillSavingThrow(oSelf); // вероЯтность поЯвлениЯ существа, % int iMaxSpawn=GetFortitudeSavingThrow(oSelf); // макс. кол-во сущ-в, поддерживаемых спавном int iSpawned=GetLocalInt(oSelf,"SpawnedCreatures"); object oMonster; string sMonster; float fSpawnAngle; float fSpawnDist; vector vSpawnPlace; location lSpawnLoc; if (iSpawned<iMaxSpawn) { if (d100()<=iSpawnChance) { iSpawned++; fSpawnDist=IntToFloat(Random(iSpawnDist)+1); fSpawnAngle=IntToFloat(Random(360)); vSpawnPlace=GetPosition(oSelf); vSpawnPlace.x+=fSpawnDist*cos(fSpawnAngle); vSpawnPlace.y+=fSpawnDist*sin(fSpawnAngle); lSpawnLoc=Location(GetArea(oSelf),vSpawnPlace,IntT oFloat(Random(360))); // Здесь вставьте подобным образом список сущ-в, которые будут спавнитьсЯ switch (Random(2)) { case 0: sMonster="nw_skeleton"; break; case 1: sMonster="nw_zombie01"; break; } oMonster=CreateObject(OBJECT_TYPE_CREATURE,sMonste r,lSpawnLoc); SetLocalObject(oMonster,"MySpawner",oSelf); SetLocalObject(oSelf,"LastMonsterSpawned",oMonster); } } SetLocalInt(oSelf,"SpawnedCreatures",iSpawned); } нашел )) только вопросы сразу возникают: с каким игровым объектом это связывать и можноли респаун поставить на время? |
![]()
Сообщение
#3185
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
написано же, placeable. Те на любой объект в локации, который удален не будет и который эту локацию не покинет.
чтобы перевести скрипт с вероятности на время, нужно модифицировать эту строку: Neverwinter Script if (d100()<=iSpawnChance) Чтобы проверять время, нужно хранить время последнего спавна и знать текущее время. Разницу сравнивать с периодом спавна. Все крайне просто. Время лучше всего хранить и сравнивать в игровых минутах, сконвертировав в них текущий день и час. А возможно даже месяц. Либо заменит время на запуски скрипта (он запускается 1 раз в 6 секунд, примерно.) и сравнивать количество запусков скрипта. |
![]() ![]() |
Текстовая версия | Сейчас: 2nd May 2025 - 00:15 |