![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3301
|
|
Level 7 ![]() Класс: Обыватель Характер: True Neutral Раса: Человек NWN: Модмейкер Начало Войны ![]() |
MMORPG Style Respawner Тут в базе есть скрипт нормальный. Раньше работал. http://www.city-of-masters.ru/forums/index...amp;#entry12810 |
![]()
Сообщение
#3302
|
|
Level 1 Класс: Рейнджер Характер: Chaotic Neutral Раса: Человек ![]() |
Всем одиночные вопросы не по делу постить в эту тему. Если сомневаетесь нужна ли тема, то постите вопрос сюда. Типа: вот у меня мышка не кликает на тулсете (IMG:style_emoticons/kolobok_light/crazy.gif) кстати о мышках. в тулсе я новичок - прям-таки профан. в самом неудачном смысле. начал тут переводить один мод. вопрос - как мне сохранить в отдельной папочке все переведенные файлы чтоб скинуть на другой комп или просто кому-то? =) как редактировать (читай-добавлять субтитры) вступительные ролики расширения .bin? засим благодарю! |
![]()
Сообщение
#3303
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
когда открывается модуль в тулсе, в папке modules создается папка temp со списком всех файлов. Оттуда можно вытаскивать нужный файл и потом точно так же добавлять в другой мод (после добавления в другой модуль, нужно сохраняться и перезапускаться, чтобы обновились списки, а для палитры - нужно в обновлять палитру, через правая кнопка - обновить палитры).
Файлы *.bin - попробуй поискать редакторы на ваулте ( https://neverwintervault.org ) |
![]()
Сообщение
#3304
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Всем привет! Рад, что форум живет и здравствует.
А теперь вопрос. Как и раньше у меня, дурацкий но ... нада... Как правильно запретить герою отдыхать везде, кроме триггеров рестзоны? С настройками модуля, скриптами диалогами, вейпами повозился достаточно. Короче, все, что мог сам - сделал, иначе бы не спрашивал. Проделал детский эксперимент: импортировал локацию из своего модуля сначала в ПЛ, потом в "Рыцарскую сагу". В обоих модах герой ведет себя прилично, на мостовую или в поле не присаживается. Везде, кроме это добавленной локи. В ней он отдыхает также строго через диалог, но ... везде и всюду! Даже под водой, так его! (IMG:style_emoticons/kolobok_light/biggrin.gif) Понял, что дело именно в локе. Но вот чем она принципиально отличается от ПЛ-овских или Саговских - не понял. На мой взгляд - ничем. Подумал, может, есть какой специальный полезный скрипт, который перебирает теги локаций? Стал искать - не нашел. Решил, что это глупая идея, собака порылась в чем-то другом. Но вот в чем именно? |
![]()
Сообщение
#3305
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
При отдыхе срабатывает событие OnRest, и запускается соответствующий модульный скрипт. Кинув на игрока ClearAllActions(), отдых можно прервать.
|
![]()
Сообщение
#3306
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Уважаемый denis0k, спасибо, что так быстро откликнулись. Рад, что Вы, ветеран форума ГМ, остаетесь ему верны. Это пишу без малейшей иронии.
Вот только спрашивал я немного о другом. Точнее, о противоположном. Не о том, как регулировать отдых или прервать его, а как запретить отдых везде, кроме триггеров рестзоны. Со скриптом "module_rest", который стоит на "OnPlayerRest" событий модуля у меня все в порядке. В ПЛ и "Рыцарской Саге", надо полагать, тем более. А именно к этим модулям я добавлял свою локацию для проверки. И, как уже писал, во всех локациях ПЛ и Саги герою разрешен отдых только в триггерах. В моей же, добавленной локе он отдыхает почти по биоваровскому дефолту. Только диалог срабатывает, а так где угодно может присесть и отдохнуть. Событие "module_rest" распространяется на весь модуль, так? Получается, что ошибка именно в этой добавленной локации? Или все-таки в чем то еще? И я хочу понять, что надо добавить (или убрать), чтобы все заработало корректно. Кидать на игрока ClearAllActions() на входе в каждую локу? Но ни в ПЛ, ни в Саге ничего подобного нет. Но все-таки на всякий случай я кинул на ПС ClearAllActions() при входе в локу. Не помогло. Все равно дрыхнет где вздумается. Конкретизирую вопрос: что еще, кроме регулирующего скрипта в событиях запрещает отдых везде, кроме триггеров зоны отдыха? Может, какой-то вейп? Или глобальный скрипт? Или еще что? |
![]()
Сообщение
#3307
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Он все правильно вам сказал. Используйте и отредактируйте скрипт модульного события на отдых в слоте OnPlayerRest. На старт отдыха, делайте проверку на нахождение в триггере, если нет - ClearAllActions()
Если подобное реализовано в скрипте Рыцарской саги, посмотрите как это сделано там. Примерно это выглядит так: Neverwinter Script // prevents a PC from resting // period void main() { object oPC = GetLastPCRested(); // capture begin rest attempts if (GetLastRestEventType() == REST_EVENTTYPE_REST_STARTED) { // fun, fun, fun! object oTrigger = getNearestObjectByTag ("REST", oPC); if (!GetIsObjectValid (oTrigger)) AssignCommand(oPC, ClearAllActions()); else { if(!GetIsInSubArea (oPC, oTrigger)) AssignCommand(oPC, ClearAllActions()); } } } https://nwnlexicon.com/index.php?title=OnPlayerRest Сообщение отредактировал Melisse - Oct 27 2017, 08:53 |
![]()
Сообщение
#3308
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Он все правильно вам сказал. Уважаемая Melisse, да разве кто спорит? Все мастер сказал коротко, ясно и верно. И скрипт, начало которого вы любезно привели в качестве примера, тоже понятен. А вот начало скрипта Геннадия из "Саги": Neverwinter Script /////////////////////////// START ///////////////////////////////////// if (GetLastRestEventType() == REST_EVENTTYPE_REST_STARTED) { if (!GetIsAreaNatural(GetArea(oPC))) { if (GetLocalInt(oPC, "RESTZONE") == 0)// ÂÍÅ ÇÎÍÛ ÎÒÄÛÕÀ { FloatingTextStringOnCreature("Îòäûõ çàïðåùåí! Íóæíî íàéòè êîìíàòó.", oPC); AssignCommand(oPC, ClearAllActions()); AssignCommand(oHench, ClearAllActions()); return; } } Кракозябрики капсом тут "ВНЕ ЗОНЫ ОТДЫХА", но, ПМСМ, и без русских комментов все яснее ясного. У нас с вами, уважаемые мастера, получается как в анекдоте про бедного студента: "Профессор, объяснить я сам могу, я ПОНЯТЬ хочу!" Понять, в чем "провинилось" именно моя локация, которую я импортировал и в ПЛ, и в "Сагу". Почему корректные, верные, сто раз проверенные (аж с 2004 гола!) скрипты настроек модуля ее в упор не видят. Довел эксперимент вообще до абсурда. Импортировал по одной локе из ПЛ в "Сагу" и наоборот. Специально выбрал самые простенькие, без "лишних" вейпов и плейсов. Все работает прекрасно. Скрипт "Саги" видит и обрабатывает "Дом в Прокампуре", скрипт ПЛ прекрасно принял домишко из поселка Большие Сети. Обе импортированных локи не имели триггеров зон отдыха. Нарисовал. Зарабатали. Моя локация ничем принципиально не отличается от оригинальных. Ее скрипт не хочет обрабатывать. Мистика? На всякий случай спрошу: уважаемые мастера, вы абсолютно уверены, что кроме правильного скрипта настроек "module_rest" больше ничего не требуется? Конкретно для локаций. Ну и попробую биться дальше сам. Потому что Ваши, уважаемые мастера, объяснения верны для стандартных ситуаций, а у меня дичь какая-то... но вообще на всякую дичь я всегда был везучим. Спасибо. |
![]()
Сообщение
#3309
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Есть возможность отменять отдых. Есть возможность проверять разные условия. Профит (IMG:style_emoticons/kolobok_light/smile.gif) Теперь немного подробнее.
if (!GetIsAreaNatural(GetArea(oPC))) <-- это значит, что локация не "естественная" (природа), эта настройка включается в свойствах локации. if (GetLocalInt(oPC, "RESTZONE") == 0) <-- это значит, что при нулевой переменной на игроке (или её отсутствии вовсе), отдых отменяется. Значит, как-то надо выставить RESTZONE не в 0 (например, в 1). Мне думается, в модуле есть на полу триггеры, которые на вход в него ставят эту локалку на игрока в 1, а при выходе - в 0. Это и будет зона отдыха. Подробнее описать наверно не смогу. |
![]()
Сообщение
#3310
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Подробнее описать наверно не смогу. И не надо, смысл я понял. И вообще разобрался. Хочется ругаться трехъетажным (на биотварей), но щас... выдохну... и просто скажу спасибо, уважаемый denis0k и уважаемая Melisse за понимание, участие и желание помочь. Все вы говорили верно, мастера. И ничего дополнительно не требуется для нормального отдыха кроме одного-единственного правильного скрипта в настройках. Короче, я скачал невер старой версии, ПЛ-овской. Сделал новый пустой модуль и тупо кинул в его настройки скрипт "module_rest". Только его, на остальные настройки плюнул. И все состоялось! Герой пытается присесть, а ему фиг по всей глупой роже. (IMG:style_emoticons/kolobok_light/biggrin.gif) Но самое смешное - дальше. Прежние свои опыты я проводил (и вообще пытался делать модуль) в "лошадках". Так вот, переписываю этот пустой модуль с единственной настройкой в эти самые "лошадки". Все корректно! Больше того, подрисовываю еще одну пустую локу уже в "лошадках". Перевожу ПС уже в нее. И опять все корректно, все ок! И вот вопрос (риторический, ясен пень) как это все прикажете понимать?! Ведь в локах, "подрисованных" к ПЛ и "Саге" (созданных в той же версии, что и мой пустой мод!) в "лошадках" ничего не работало. Да и сейчас не работает... Еще раз спасибо, мастера, а биотварям отдельный респект и побольше икоты по ночам. (IMG:style_emoticons/kolobok_light/vava.gif) Надеюсь, моя одиссея с экспортом-импортом локаций и настройками и без них правильного скрипта повеселит форумчан. |
![]()
Сообщение
#3311
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Цитата Хочется ругаться трехъетажным (на биотварей) Обещаю, это только начало (IMG:style_emoticons/kolobok_light/biggrin.gif)
|
![]()
Сообщение
#3312
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Обещаю, это только начало (IMG:style_emoticons/kolobok_light/biggrin.gif) Спасибо, обнадежил. (IMG:style_emoticons/kolobok_light/biggrin.gif) А главное, опять прав! Нарисовал тригеры зоны отдыха и все снова пошло наперекосяк. Но это ерунда, надеюсь, благодаря вашим с Мелиссой подсказкам все налажу. По крайней мере, когда хоть примерно видишь, куда двигаться, это гораздо более иначе, чем смотреть на глюки и хлопать глазами ничего не понимая. Спасибо! Дико извиняюсь, что напрочь зафлудил тему, но необходимо сказать: denis0k, отдельное спасибо за последнюю подсказку. Все оказалось даже еще проще. Не требуется нигде писать "if (!GetIsAreaNatural(GetArea(oPC)))", достаточно пометить любую локацию как "тип земли - искусственный". Ерунда получалась в основном из-за того, что я пытаюсь сочинить робинзонаду, скачав с WRG замечательную систему крафта PaiNt_craft. Ну и, понятно, у меня локи все поля-леса и прочие тропики. Помечать их как искусственные не сразу придет в голову. (IMG:style_emoticons/kolobok_light/unsure.gif) Так что зря я гнал на биоварей... хотя нет, они не этим, так многим другим заслужили! |
![]()
Сообщение
#3313
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Да у Биоварей полно пасхалок. Однажды я неделю бился над проблемой, в маленьких локациях спавнились одни и те же монстры в случайных генерациях. После недельного выноса мозга, оказалось, движок генерит случайные числа исходя из данных тайлов в локации. Это значит, если я тупо скопировал пять локаций 4х4 тайла, то в них будут тупо выпадать одинаковые "случайные" числа а это значит одинаковые монстры. Вот такие пироги.
|
![]()
Сообщение
#3314
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Удивительный факт в том, что сделать нормальный рандом вообще проще, чем городить свой. Там в параметре просто время указывается, оно каждую секунду уникально, но биовари замутили туда данные локации. Это телодвижение должно иметь какой-то смысл (IMG:style_emoticons/kolobok_light/smile.gif) Ну либо я ищу чёрную кошку в тёмной комнате, которой там нет, и они просто рукожопые индусы, во что тоже можно поверить, т.к. их SWTOR не имеет юникода в чатике, да и вообще глючит, если ставить в папку с русскими символами в пути (IMG:style_emoticons/kolobok_light/biggrin.gif)
|
![]()
Сообщение
#3315
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
С позволения мастеров продолжу веселить их дурацкими вопросами. Но что делать, если поиск и в темах, и расширенный по всему форуму ответа не дал...
Можно ли скриптом заставить героя вытаскивать из инвентаря определенный (по тегу, рефу, богу, черту ets) вид оружия и имитировать атаку на плейс? Именно имитировать, а не атаковать всерьез. У меня по команде Neverwinter Script AssignCommand(oPC, DelayCommand(0.5, ActionEquipMostDamagingMelee())); // Далее - атака. понятно, что произошло. Герой-тестер выхватил из инвентаря самое крутое оружие, которое имел и разнес горемычный булыжник с воплем "Я раздавлю тебя!". А это был не просто булыжник, а целый "выход горной породы", из него каменной киркой кремень для робинзонады добывать, а герой с ним так непочтительно. (Что любопытно, орал, негодяй, по-русски (IMG:style_emoticons/kolobok_light/biggrin.gif) ). Нет, можно было защитить булыгу галкой "сюжет", но тогда жалобный дефолтный скулеж героя и постоянно всплывающее "оружие неэффективно" бесит и портить всю атмосферу. В константах такого понятия как "анимация атаки", ПМСМ, вообще не существует. Что применить наиболее похожее? Я нашел только "ANIMATION_LOOPING_TALK_FORCEFUL", но это вроде то же самое, что галка на "говорить убедительно" в графе "другие действия" диалога? Попробовал применить. Получилось, сорри за каламбур, неубедительно... Заранее благодарен. З.Ы. Понимаю, что пост скорее для темы "вопросы новичков", но я вроде как 9 лет на форуме, хотя бы и с перерывом... Впрочем если уважаемый модератор перенесет пост туда - никаких вопросов. Пока писал, подумал... такое случается... Не обязательно имитировать, можно и натурально атаковать. Поставлю этой булыге максимум ХП, нарисую рядом пару-тройку таких-же. Атаковать будет с перекурами, присаживаясь и жалуясь на тяжелую жизнь шахтера, это я умею (и написать, и пожаловаться (IMG:style_emoticons/kolobok_light/biggrin.gif) ). Главное, чтобы выхватывал из инвентаря именно каменную кирку (простой молот без бонусов), а не "каменный нож +1". Вот как это сделать - без понятия... |
![]()
Сообщение
#3316
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Атаковать можно невидимого монстра или невидимый плейс, естесвенно с плотовым флажком.
Насчет того, что бы одеть нужный меч в нужный слот. В модуле Монета Судьбы, посмотри скрипты проклятых и сюжетных комплектов броней. Именно в них прописано, в какой слот РС одевает предмет с нужным тегом. НВН нет и я по памяти это не напишу. Там все сделано, как тебе нужно. Идет проверка инвентаря, потом снимается с игрока все в боевых слотах, и одевается комплект уникальных. А если комплект проклят, то снять предмет нельзя. Ради интереса кинь в обычную локу кучу уникального оружия и по надевай его увидишь эффект поймешь как работает. п.с. Вспомнил, это касается в основном проклятых вещей. Комплект ты сам одеваешь. |
![]()
Сообщение
#3317
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Спасибо, уважаемый Мастер! Уже копаюсь в хаках "am_x2_main.hak" и "am_x2_weapon.hak" (модельки тоже интересны) и сокрушаюсь, почему сам до этого не додумался. Основную проблему вряд ли этим решу. Не припоминаю, чтобы проклятое оружие само (то есть по приказу скрипта, ясен пень) прыгало в руку. Вроде бы это один раз делает Эсмерик-меч. Но, во-первых не факт, что я помню правильно (в Хорды, в отличие от "Монетки", которую юзаю довольно часто, играл лет десять тому). Во-вторых, рыться в дефолтных скриптах биотварей?! Может, я лучше пойду вагон уголечка разгрузить, нервных затрат на порядки меньше и точно знаешь, что рано или поздно результат будет. (IMG:style_emoticons/kolobok_light/swoon.gif)
Тем не менее уверен, что накопаю много полезного (в хаках "Монетки", не подумайте, что в "Хордах" (IMG:style_emoticons/kolobok_light/biggrin.gif) ). Отдельное спасибо за привычку коротко комментировать практически каждый скрипт. Да, "кровавый меч Lexа" тоже, пожалуй, стоит глянуть? И можно попросить еще одну подсказку, уважаемые мастера? Где поискать что-то похожее на скрипт выдачи вещей с палитры, но с процентным шансом? То есть мой робинзон долбит эту булыгу (монстра, плейс - не суть) и у него 90% шанса добыть кремень, 9% на то, что выпадет к примеру, малахит, и 1% - изумруд или алмаз, тоже не суть. И последний (на сегодня) вопрос. Наверное, конкретно к Вам, уважаемый Aiwan. Систему PaiNt_craft я, похоже, ниасилил (или она меня, подробности в соответствующей теме на WGR). Скрипты крафта придется занимать у доброй тети Опары и дяди Железнорукого. А вопрос насчет таблички "craftingrecipes.2da". Когда не надо брать за крафт деньги и не требуется нескольких дней (робинзон же, сам же все крафтит и сам себе, ясен пень не платит) что надо писать в соответствующих графах таблички: нули, пять звездочек, "NONE" или еще что? Потому что замена в Великом Плейсе Крафта CRAFT_HEALPER "WP" на "INSTANT", которую обещал так рано покинувший нас DBColl, не работает. По крайней мере, в моем модуле не работатет. Ответьте, если припомните, конечно. Если нет, сам проверю, муторно, но понятно что делать. Спасибо. |
![]()
Сообщение
#3318
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Не припоминаю, чтобы проклятое оружие само (то есть по приказу скрипта, ясен пень) прыгало в руку. Вроде бы это один раз делает Эсмерик-меч. В монетке при попытке снять проклятую вещь, ее вставят в тот же слот где была. Порядок слотов был где-то указан, там есть функция типа экипировать вещь и количество слот как параметр в этой функции. Если мне склероз не изменяет. Включая шкурку у существа и РС. Крафт не мой, я там даже не пытался разбираться. Если была проблема, я сразу обращался к хозяину скриптов. И можно попросить еще одну подсказку, уважаемые мастера? Где поискать что-то похожее на скрипт выдачи вещей с палитры, но с процентным шансом? То есть мой робинзон долбит эту булыгу (монстра, плейс - не суть) и у него 90% шанса добыть кремень, 9% на то, что выпадет к примеру, малахит, и 1% - изумруд или алмаз, тоже не суть. В ПЛ посмотри на ящиках и сундуках, выпадают плотовые вещи с рандомом. Например, в пещере Рэджика, там в зависимости от евила и класса дается уникальная шмотка. Отдельное спасибо за привычку коротко комментировать практически каждый скрипт. Это сделано по двум причинам, для себя и для таких случаев как сейчас. (IMG:style_emoticons/kolobok_light/snoozer_17.gif) |
![]()
Сообщение
#3319
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Ай да Aiwan! Ай да ... почти Пушкин, скажем так...
Спасибо огромное. Вот он, скрипт: Neverwinter Script object oPC = GetFirstPC(); object oItem=GetItemPossessedBy(oPC, "ITM_MOLOT"); object oBul = GetObjectByTag("BULYGA"); void main() { AssignCommand(oPC, ActionEquipItem(oItem, INVENTORY_SLOT_RIGHTHAND)); DelayCommand(0.0,ActionPauseConversation()); DelayCommand(1.0,AssignCommand (oPC,ActionAttack(oBul))); DelayCommand(2.0,AssignCommand (oPC,ActionAttack(oBul)));; DelayCommand(4.0,ActionResumeConversation()); } И правда простой, как мычание. Пять минут писанины и еще пять на проверку в модуле "Полигон". Ясен пень, тут еще много чего до ума доводить, эффект замедления вешать, давать в инвентарь вещички с палитры, "перекуривать" и т.п., но уж с этим я худо-бедно справлюсь. Главное, что удалось впихнуть эту злополучную "кирку" в этот неладный SLOT_RIGHTHAND. Остальное преодолимо. Спасибо насчет подсказки про пещеру Реджика. Пойду гляну... З.Ы. Сорри за офтоп. Aiwan, у тебя что вообще никакого невера? Даже ПЛ и родной "Монетки"? То есть никакой ностальжи, никаких сантиментов? Не-нет, подпись твою я вижу, вопрос риторический... Понимаю, достал, но исключительно чтобы закрыть вопрос и по нему больше никого не дергать. Нашел подходящий скрипт. Здесь, в старой базе. Переделать под свои нужды отказалось нетрудно. Автор, кстати, некий Aiwan, возможно, слышали? (IMG:style_emoticons/kolobok_light/biggrin.gif) З.Ы.Ы. Последняя реплика "приклеилась" к общему посту, потому поясняю: речь о скрипте рандома с шансом. |
![]()
Сообщение
#3320
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
З.Ы. Сорри за офтоп. Aiwan, у тебя что вообще никакого невера? Даже ПЛ и родной "Монетки"? То есть никакой ностальжи, никаких сантиментов? Не-нет, подпись твою я вижу, вопрос риторический... Я полностью ушел в реал, игр нет совсем. Точнее по инерции еще качаю иногда, но дальше установки не идет (IMG:style_emoticons/kolobok_light/smile.gif) Из игр остался только симулятор радиоуправляемых моделей ну и с сыном в НХЛ играю на PS4. (IMG:style_emoticons/kolobok_light/wink3.gif) |
![]()
Сообщение
#3321
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Aiwan, вопрос лично к тебе. Он может казаться странным, а в свете того, что на дворе 2017 год, так и вовсе нелепым, но тем не менее...
Решал дать денек отдыха своему робинзону и сел поиграть. Представь себе, в ПЛ. Такое иногда случается. Во всяком случае, со мной. Так вот, минут за 10 игры мне пришлось трижды вызывать диспетчер задач, чтобы он прихлопнул НВН. Как только на Прокампур опускалась ночь, я нервно нажимал кнопку быстрого сохранения чуть ли не каждую минуту... А все из-за печально-знаменитого непися-бандита. Он спавмится, подвешивает игру и идет по своим делам. Вместо того, чтобы нападать на героя, как это и задумано, изображает бродячего непися-обывателя. Вот скрипт на последнем слоте бандита: Neverwinter Script #include "nw_i0_generic" #include "mm_common" void main() { int nEvent = GetUserDefinedEventNumber(); if (nEvent == 1002) { object oPC = GetLastPerceived(); if (GetIsPC(oPC) && GetLastPerceptionSeen() && GetTag(OBJECT_SELF) == "SEWER1_BANDIT1") { SpeakString(ya("Это же то животное, что на менйа плюнуло!.. Убью!!!")); AssignCommand(oPC, PlaySound("vs_nhalorm1_bat2")); object oNPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_NOT_PC, OBJECT_SELF); // AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_TALK_LAUGHIN G, 1.0f, 6.0f)); DelayCommand(1.0f, AssignCommand(oNPC, SpeakString("Хе-хе-хе..."))); AssignCommand(oNPC, AssignCommand(oPC, PlaySound("vs_fvengaum_haha"))); return; } else if (GetIsPC(oPC) && GetLastPerceptionSeen() && GetTag(OBJECT_SELF) != "SEWER1_BANDIT1") { if (!GetIsInCombat() && !IsInConversation(OBJECT_SELF)) { SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS, FALSE); SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMA TIONS, FALSE); if (Random(4) == 0) SpeakString("Эй ты, стой!.."); SetCutsceneMode(oPC); vector vD = GetPosition(OBJECT_SELF) - GetPosition(oPC); float fDir = VectorToAngle(vD); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, SetCameraFacing(fDir, 8.0, 50.0, CAMERA_TRANSITION_TYPE_MEDIUM)); AssignCommand(oPC, SetFacing(fDir)); ClearAllActions(); ActionForceMoveToObject(oPC, TRUE); ActionDoCommand(SetCommandable(TRUE)); ActionDoCommand(SetCutsceneMode(oPC, FALSE)); ActionStartConversation(oPC, "bandit", TRUE, FALSE); DelayCommand(0.1, SetCommandable(FALSE)); } } } //Дальше реплики драки, которые тут не играют значения и не имеют роли Так вот, вопрс: что именно и куда вписать, чтобы эта чертова "ClearAllActions();" соскочила с героя, если: - бандит отошел далеко и уж точно не нападет. или - просто не нападает, допустим, 10-15 секунд реального времени. К примеру, достаточно будет написать в конце перед тремя галками: "DelayCommand(22.0,ActionResumeConversation()) ;" или надо как-то более иначе? Разумеется, я и сам могу покопаться, (исправил же в свое время "легендарный" квест с доилкой!). Но: У меня нет твоего опыта, а следовательно, уверенности что делаю правильно. С моей кармой скорее получится усугубить, чем исправить. Проверять сложно, эти бандюки то пропадают неделями, то вдруг начинают лезть из всех щелей, как тараканы. Во-вторых, ты, наверное, единственный из команды создателей ПЛ, который еще активен на форуме ГМ. Кого еще спрашивать? З.Ы. Ради прикола: самая дисциплинированная непись в ПЛ - бандит. Он накогда не лезет в триггер на сточной канаве. То есть если он отспавмился, а между ним и героем эта канава - все! Считай, висяк гарантирован. А простые быватели шастают по этим канавам как придется, и плевать им на триггеры... З.Ы.Ы. Так что лучше второй вариант, тупо на время. А то ПС и бандит могут часами стоять рядышком и любоваться друг на друга через канаву... |
![]()
Сообщение
#3322
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Во первых, к этому скрипту подрублены две инклюды, а это тоже скрипты. Причем вторая инклюда кастомная от ДБа наверное. ДБ автор скрипта и я никогда не лазил в нем и не проверял его (IMG:style_emoticons/kolobok_light/smile.gif) Так как я и ДБ это как юный падаван и джедай (IMG:style_emoticons/kolobok_light/smile.gif) Если хочется узнать что и как работает, разбирайся сам. Для этого, после каждого действа поставь в скрипт событие, типа в командную строку сообщение или текст над НПС. Тогда ты будешь видеть, что происходит и где затык случается. Найди в монетке мой скрипт am_inc_debug, там простые условия для отладки скриптов. Добавляй из него функции в скрипты и проверяй отлаживай работу.
Прописывается она так Neverwinter Script #include "am_inc_debug" Вот такой скрипт надо создать в палитре скриптов, он будет браться автоматически. Neverwinter Script //:://///////////////////////////////////////////// //:: Name: am_inc_common //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// /* БИБЛИОТЕКА ДЛЯ ОТЛАДКИ СКРИПТОВ */ //::////////////////////////////////////////////// //:: Created By: Aiwan Aiwan@e-mail.ru //:: Created On: 30.05.2005 //::////////////////////////////////////////////// // СООБЩЕНИЯ ДЛЯ ПРОВЕРКИ (ИСПОЛЬЗУЮТСЯ В СЛУЖЕБНЫХ ЦЕЛЯХ ДЛЯ ОТЛАДКИ КОДА СКРИПТОВ) // А ТАК ЖЕ ДЛЯ ДМ-ов // LocalInt - "DEBAG_PC" на модуле, отключит дебаг игрокам // LocalInt - "DEBAG_DM" на модуле, отключит дебаг DM-ам void Debug(string message); // Выводит в Debug: TAG, ResRef и Name объекта. void DebugObject(object oObject); //------------------------------------------------------------------------------ void Debug(string message) { object oPC = GetFirstPC(); if (!GetLocalInt(GetModule(), "DEBAG_PC")) { SendMessageToPC(oPC, "Debag message: "+message); } if (!GetLocalInt(GetModule(), "DEBAG_DM")) { SendMessageToAllDMs("Debag message to DMs: "+message); } } void DebugObject(object oObject) { string sTag = GetTag(oObject); string sResRef = GetResRef(oObject); string sName = GetName(oObject); Debug ("TAG = "+sTag+", ResRef = "+sResRef+", Name = "+sName+"."); } /* void main(){} Что такое инклюда есть в моем мануале, почитай, если забыл. Пример использования: Neverwinter Script //:://////////////////////////////////////////////////
//:: X0_CH_HEN_DEATH //:: Copyright © 2002 Floodgate Entertainment //::////////////////////////////////////////////////// /* OnDeath handler for henchmen ONLY. Causes them to respawn at (in order of preference) the respawn point of their master or their own starting location. */ //::////////////////////////////////////////////////// //:: Created By: Naomi Novik //:: Created On: 10/09/2002 //::////////////////////////////////////////////////// #include "x0_i0_henchman" #include "am_inc_debug" #include "am_inc_cutscene" void main() { // Handle a bunch of stuff to keep us from running around, // dying again, etc. PreRespawnSetup(); // Call for healing DelayCommand(0.5, VoiceHealMe(TRUE)); // Get our last master object oPC = GetLastMaster(); object oSelf = OBJECT_SELF; // Clear dialogue events ClearAllDialogue(oPC, OBJECT_SELF); ClearAllActions(); SetLocalLocation(oSelf, "POINT_DEATH", GetLocation(oSelf)); //-------------------------------------------------------------------------- // Если РС умер или у нас отключен дебаг, то помощник умрет. В противном // случае воскреснет рядом. //-------------------------------------------------------------------------- if(!GetIsObjectValid(oPC) || GetIsDead(oPC) == TRUE) { if(GetTag(GetItemInSlot(INVENTORY_SLOT_NECK,oSelf))= ="AM_MNECK_AZUTH") { effect eEffect1 = EffectVisualEffect(VFX_FNF_SOUND_BURST_SILENT); AssignCommand(oSelf, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect1, oSelf)); DelayCommand(0.7, RespawnHenchman()); DelayCommand(0.9, PostRespawnCleanup()); DelayCommand(1.5, AddCutEffects(oSelf)); DelayCommand(3.0, AssignCommand(oSelf, JumpToObject(GetWaypointByTag("AM_WP_AZUTH_RESPAWN")))); DelayCommand(6.0, RemoveCutEffects(oSelf)); Debug("Алишан в храме Азута. Забирайте ее там."); return; } if(!GetLocalInt(GetModule(), "DEBAG_PC")) { DelayCommand(1.0, RespawnHenchman()); DelayCommand(1.5, PostRespawnCleanup()); DelayCommand(1.9, AssignCommand(oSelf, JumpToLocation(GetLocalLocation(oSelf, "POINT_DEATH")))); DelayCommand(2.1, AddHenchman(GetFirstPC(), oSelf)); Debug("ВЫ В РЕЖИМЕ ТЕСТА. ВАШ ПОМОЩНИК НЕУБИВАЕМ."); return; } else //-------------------------------------------------------------------------- // Умерла, так умерла... =) //-------------------------------------------------------------------------- { SetPlotFlag(OBJECT_SELF,FALSE); SetImmortal(OBJECT_SELF, FALSE); SetIsDestroyable(TRUE, FALSE, FALSE); DestroyObject(OBJECT_SELF, 0.2); } } } |
![]()
Сообщение
#3323
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Мдя... как сложно то все. Я ведь всерьез думал, что две строчки кода приписать - и все океюшки будет. (IMG:style_emoticons/kolobok_light/vava.gif)
Теперь понятно, почему Ви в госпиталь уложили. Нет, Каетан тоже, конечно, хороша, но против Ви... Ладно, раз джедая нет, падавану не до этого - фиг с ним, с бандитом. Не полному же чайнику (это обо мне, если что) его отлаживать. Да еще после джедая. Не настолько я самонадеян. В конце-концов, не так часто играю в ПЛ, прокампурское начало пережить можно. А вот за подсказку методы - спасибо большое. Воспользуюсь неприменно. Как раз именно то, чего мне не хватает. Делаю все больше по интуиции и методом тыка. А эти тыки отнимают слишком много времени и нервов. Спасибо. |
![]()
Сообщение
#3324
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Всем здрасьте.
Вопрос не то чтобы очень тупой, разве что в перспективе. Облазил просторы нета, но нигде не нашел ответа на простой вопрос - где найти мод, позволяющий в оригинальной компании первого NWN нанимать более одного стандартного хенча одновременно. Аддоны все стоят, но нужно чтобы можно было собрать партию именно в самой первой компании. Есть масса отсылок на SetMaxHenchman (который не факт что будет работать в ОС), и большое количество дохлых ссылок на этот вопрос, в частности на форум биоваров. Но рабочего мода не нашел нигде. К сожалению, даже henchai 1.08 такой возможности не добавляет. Очень, очень прискорбно. Вроде бы вопрос решил. Всего то надо было отредактировать скрипт диалога (nw_ch_action13), он общий для всех хенчей, добавить туда SetMaxHenchmen и выкинуть зануление текущего хенча. Теперь гуляю в оригинальной кампании со своей небольшой армией. |
![]()
Сообщение
#3325
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Теперь другой вопрос.
Получилось сделать так что все хенчи теперь корректно переходят между главами, при этом не теряя снарягу, которую выдал им ранее. Проблема в том что для этого пришлось отредактировать скрипты в каждом чаптере оригинальной кампании. А они, как известно, из папки Override не подсасываются, приходится лезть в nwm файлы, что очень не нравится. Можно ли как то оверрайдить скрипты глобально, не редактируя модули? Я так понимаю - хак паки тоже требуют подключения через тулсет в сам модуль? И в догонку. Можно ли скриптом поправить пенальти к экспе за большую команду? В оригинальной кампании нвн2 размер партии не влияет на количество получаемого опыта, в нвн1 же каждый хенч, саммон и фамильяр откушивает изрядный кусок. А при большой партии вообще достаются крохи. Это как то настраивается? |
![]() ![]() |
Текстовая версия | Сейчас: 26th April 2025 - 08:14 |