![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3491
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Как сделать, чтобы мобы возрождались после смерти спустя некоторое время?
|
![]()
Сообщение
#3492
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Например, использовать систему энкаунтер-триггеров из тулсета, там вроде есть опция периодического спавна. Но в онлайне чаще используются аналогичные скриптовые системы, как правило самописные, они более гибкие (можно динамически менять списки мобов, подгружать их из базы и т.п.). Посмотри на волте что-то типа spawn system, этого добра там должно быть навалом.
|
![]()
Сообщение
#3493
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Например, использовать систему энкаунтер-триггеров из тулсета, там вроде есть опция периодического спавна. Но в онлайне чаще используются аналогичные скриптовые системы, как правило самописные, они более гибкие (можно динамически менять списки мобов, подгружать их из базы и т.п.). Посмотри на волте что-то типа spawn system, этого добра там должно быть навалом. А есть готовый скрипт на spawn монстров, но в котором можно будет менять монстров, и время spawna, спавн убудет делаться для онлайна, сам со скриптами не умею работать, по возможности если есть скрипт допишите с нормальный разяснением, чтобы человек не пользовавшийся скриптами понял Автор:::::::::::::::::Milez::::::::::::::::::::::: ::::::: |
![]()
Сообщение
#3494
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
На волте и есть готовые скрипты. Но без знания скриптового языка всё равно ничего не сделать. Нельзя же читать, не зная букв, или решать дифференциальные уравнения, не зная математики.
|
![]()
Сообщение
#3495
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Чем, кстати, не устраивают обычные встречи? там можно настраивать мобов и их кол-во, даже генерацию от того какой фракцией наступаешь.
Сообщение отредактировал Melisse - Feb 6 2012, 13:59 |
![]()
Сообщение
#3496
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
В смысле встречи?
Если ставить триггеры, то респ я так понимаю будет происходить, если на него снова наступить, получается надо будет всех информировать, что при входе снова в локацию, будет респ мобов, и ставить триггер как раз на входе, или может я что то не понимаю? Потом допустим если мне нужно поставить моба где нибудь на возвышении гор одного, как я это сделаю с триггером, он респаться будет на каком растоянии.. У меня просьба, если кто делал скрипты на спавн мобов с пропись разных мобов, чтобы их можно было поменять на других, ну тоесть на любых других какие будут в модуле, и время через каторое будет респ, я в скриптах почти 0, а разбиратся в них просто времени нет работаю много, если кто напишет, потом обязательно договоримся$$$ |
![]()
Сообщение
#3497
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Рекомендую - для написания тривиальных эвентов и в качестве удобного пособия примеров для изучения NWN-скриптинга. Запускаем тулсет, открываем нужную локацию, открываем вкладку с монстрами и жмем кнопку «редактировать и копировать» на понравившемся, делаем что хотим с этим монстром и создаем ему уникальный резреф в конце сохраняя в кастомной своей палитре, копируем этот резреф себе в сторонку. Скачиваем скрипт генератор, запускаем, выбираем (в окошке вверху слева) тип скрипта «нормальный скрипт», выбираем источник запуска скрипта «ПС входит куда-то», отменяем спец условие, выбираем из списка скриптовых эвентов «сделать если ЭТО тогда ТО условие» и жмем кнопку «скрипт»: - выбираем тип условия «проверить локальную целочисленную»; - вводим в поле название для нашей переменной (ну например MONSTER_SPAWN_CHECK); - выбираем галочку на условие «точно равно»; - выставляем значение «0»; - жмем «ок»; выбираем из списка скриптовых эвентов «спавн созданий» и жмем кнопку «скрипт», заполняем поля: - «резреф» (копируем его из описалова монстра которого хотим спавнить); - визуальный эффект спавна (можно не трогать); - точка спавна – по вейпоинту (указываем таг нашего вейпоинта); - действия создания при респавне – выбираем «без действия»; - жмем «ок – выход»; выбираем из списка скриптовых эвентов «установка локальных переменных» и жмем кнопку «скрипт»: - выбираем тип переменной «целочисленная» и ставим соответствующий флажок (integer); - вводим в поле название нашей переменной упомянутое блоком выше (в примере MONSTER_SPAWN_CHECK); - устанавливаем ее в значение «1»; - жмем «ок – выход»; жмем кнопку «окончить текущие если», выбираем вариант «просто закончить», жмем кнопку «закрыть», видим в окошке наш сгенерированный скрипт и комент «поместите на OnEnter»: Код //Put this script OnEnter void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; if (GetLocalInt(oPC, "MONSTER_SPAWN_CHECK")== 0) { oTarget = GetWaypointByTag("TAG_OF_WAYPOINT "); lTarget = GetLocation(oTarget); oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "resref_of_creature", lTarget); SetLocalInt(oPC, "MONSTER_SPAWN_CHECK", 1); } } копируем все это дело, жмем «свойства локации» в тулсете, открываем вкладку «события» и ищем окошко «OnEnter», жмем кнопочку чуть правее чтоб открыть редактирование скрипта на этот триггер и вставляем туда этот скопированный из генератора скрипт и сохраняем его под оригинальным именем, ставим на локации вейпоинт упомянутый в скрипте с упомянутым оригинальным тагом («TAG_OF_WAYPOINT» или что там придумается) – это будет точка спавна упомянутого монстра (резреф которого не забываем указать посмотрев в своей кастомной палитре в свойствах монстра). Жмем в генераторе скриптов кнопку «очистить для нового скрипта», «ок», снова выбираем тип скрипта «нормальный», выбираем стартер «ПС разрушивает/убивает монстра или плейсебл», выбираем че будет если убьет последователь – «отразится на ПС», отменяем наличие спец условия, выбираем из списка скриптовых эвентов «установка локальных переменных» и жмем кнопку «скрипт»: - выбираем тип переменной «целочисленная» и ставим соответствующий флажок (integer); - вводим в поле название нашей переменной упомянутое блоками выше (в примере MONSTER_SPAWN_CHECK); - устанавливаем ее в значение «0»; - жмем «ок – выход»; жмем кнопку «закрыть», видим и копируем наш сгенерированный скрипт с пометкой «поместить на OnDeath»: Код //Put this script OnDeath void main() { object oPC = GetLastKiller(); while (GetIsObjectValid(GetMaster(oPC))) { oPC=GetMaster(oPC); } if (!GetIsPC(oPC)) return; SetLocalInt(oPC, "MONSTER_SPAWN_CHECK", 0); } копируем это дело и жмем свойства нашего кастомного монстра с упомянутым резрефом в нашей кастомной палитре, выбираем пункт «событий» и находим триггер «OnDeath», жмем справа чтоб редактировать скрипт и вставляем наш скопированный сохранив его под оригинальным названием. Итого: имеем локацию; на ней точку респавна монстра (наш вейпоинт); и скрипт на входе в локацию который проверяет игрока в нее входящего на локальную переменную – если игрок уже убивал нашего оригинального монстра или еще не был на этой локации, значит новенький и целенький монстр появится в указанной точке при входе, если уже заходил в локацию но монстра еще не убивал, значит спавнить нового не будем. Система будет отлично работать для синглплеерного спавна монстра – для мультиплеерного как правило они сложнее и индивидуальнее. Сообщение отредактировал Flaristan - Feb 7 2012, 04:19 |
![]()
Сообщение
#3498
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Valeroy, скажу грубовато, но прямо - во всём нужно разбираться. Если ничего не изучать самому, а только просить сделать другого и показать, где тут настройки, ничего у тебя не выйдет. Для начала могу посоветовать, как бы странно ни звучало, - погуглить про нвн тулсет. Когда я начинал (лет 9 назад, с сингловых модулей), с интернетом было туго, да и форума этого вроде не было вообще, однако я нашёл себе статьи по тулсету с разжёвыванием всего и вся. Даже кастом контент зацепили. Кажется, они были на сайте либо игромании, либо лки.
Когда выкуришь мануалы с элементарными основами, у тебя не будет вопросов по поводу того, как работает тот же триггер встреч. Скрипты да, в полной мере понятны далеко не всем, но уж выучить настройки плейсов, итемов и триггеров ума много не надо. До кучи, стоит распотрошить все модули под рукой (первым делом - кампанию). К слову, нордок (по крайней мере его версия, доступная для скачивания) в качестве спавнера использует как раз-таки самые обычные триггеры. Гем1 в своё время тоже использовал триггеры для спавна. |
![]()
Сообщение
#3499
|
|
Level 7 ![]() Класс: Обыватель Характер: True Neutral Раса: Человек NWN: Модмейкер Начало Войны ![]() |
Valeroy, есть тут на форуме такая штука как база скриптов, страница 2 пятый сверху.
|
![]()
Сообщение
#3500
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Место где появится новый NPC определяется путём выставления вэйпоинтов с названием типа "WPR_"+ тэг_умершего_NPC. Если в начале тэга NPC стоит "NPC_", то эти четыре символа отрежутся. Может кто нибудь разжевать? Flaristan спасибо тебе огромное, приду домой буду пробовать, а на мультиплеер разве не пойдут такие скрипты? А как сделать допустим, чтобы было 4 сундука на боссе и в каждом сундуке были вещи, около 5-7, на каждый класс, и еще чтобы после каждого появления босса вещи тоже появлялись в сундуках, но уже другие, ну с небольшим добавлением |
![]()
Сообщение
#3501
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Было бы легче, если бы знать кусок пояснения к чему это, и видеть полный текст.
Очевидно имеется в виду, что если у нас есть монстры к примеру с тагами «TAG001» и «NPC_TAG002», то точки их респавнов будут обозначаться вейпоинтами с тагами соответственно «WPR_TAG001» и «WPR_TAG002». Пойдут или не пойдут – решает уже сам разработчик. Тот простенький скрипт сделанный в скриптгенераторе, который я предложил - не универсален. Хорошо если задумка описанной точки респавна при входе в локацию игрока спавнить ему противника по штуке на игрока без заморочек, но если это особый противник вроде босса? Тогда получится: зашел 1 игрок на локацию и стал драться с ним, и тут на локацию заходит другой игрок - внезапно появляется еще один босс на голову первому игроку. А если заходит отряд в 10 человек – появятся 10 боссов. А если в локацию зашел один игрок, не смог убить монстра и убежал, и тут в локацию приходит второй игрок – он монстра еще не убивал и получится у него отреспится и свой монстр и на локации будет еще тот которого отреспил предыдущий игрок. В общем, делая для мультиплеера, приходится учитывать кучу нюансов относительно конечного вида реализации своих задумок. Как правило, для качественного внедрения единичной идеи требуется прописывание айсберга неявных нюансов удерживающих эту идею именно в той форме, которая была задумана. Чтоб успешно заниматься этим - одного владения «скрипт-генератором» мало, нужно быть на «ты» с НВН-скриптингом. Поставить 4 сундука; написать скрипт, который при открытии сундука единожды на смерть босса находящегося рядом генерирует в нем определенные вещи в определенном количестве, и если вещи уже лежат в сундуке при новом открытии после новой смерти босса – добавлять в их свойства определенные заранее улучшения; развесить этот скрипт на эти 4 сундука. (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#3502
|
|
Level 5 ![]() ![]() Класс: Вор Характер: Neutral Good Раса: Человек ![]() |
Подскажите - как заставить катапульту стрелять огненными шарами?Или метеоритным штормом? Плиз дайте скрипт!
Сообщение отредактировал ReZkiy - Feb 18 2012, 13:03 |
![]()
Сообщение
#3503
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Для балист и катапульт
Neverwinter Script void main() { object oBal = OBJECT_SELF; object oZel = GetNearestObjectByTag("ZEL_BAL");//Объект на который должен быть скастован спелл. if (GetIsObjectValid(oZel) && GetDistanceToObject(oZel) <= 50.0f && GetLocalInt(oBal,"BALL") != 1) { SetLocalInt(oBal,"BALL",1); PlaySound("as_cv_winch1"); DelayCommand(15.3, SetLocalInt(oBal,"BALL",FALSE)); if (GetTag(oBal) == "CATAPULTA") AssignCommand(oBal,ActionCastSpellAtObject(SPELL_F IREBALL,oZel)); else switch (Random(2)+1) { case 1: AssignCommand(oBal,ActionCastSpellAtObject(SPELL_F LAME_ARROW,oZel)); break; case 2: AssignCommand(oBal,ActionCastSpellAtObject(SPELL_M ELFS_ACID_ARROW,oZel)); break; } } } Спец скрипт для мощной катапульты Neverwinter Script void main() { object oPC = GetFirstPC(); object oBal = OBJECT_SELF; int i = 1; object oZel = GetNearestObject(OBJECT_TYPE_CREATURE, oBal, i); vector vFace = GetPosition(oPC); if (GetArea(oPC) != GetArea(oBal)) return; if (GetLocalInt(oBal,"BALL") == 1) return; while(GetIsObjectValid(oZel)) { int iRepa = GetReputation(oZel, oBal); if (iRepa < 40) { if (GetDistanceToObject(oZel) <= 23.0 && !GetIsDead(oZel)) { if (GetDistanceToObject(oZel) <= 3.0) return; effect eDamage = EffectDamage(GetCurrentHitPoints(oZel)/5, DAMAGE_TYPE_BLUDGEONING); effect eIMM = EffectSpellResistanceDecrease(30); AssignCommand(oBal, SetFacingPoint(vFace)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eIMM,o Zel,5.0); PlaySound("cb_sh_ballista"); DelayCommand(0.5, AssignCommand(oBal,ActionCastSpellAtObject(SPELL_M AGIC_MISSILE,oZel))); DelayCommand(1.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oZel));// Наносим удар DelayCommand(3.0, PlaySound("as_cv_winch1")); DelayCommand(11.0, SetLocalInt(oBal,"BALL",FALSE)); SetLocalInt(oBal,"BALL",1); break; } } i++; oZel = GetNearestObject(OBJECT_TYPE_CREATURE, oBal, i); } } Скрипты стоят на ХБ |
![]()
Сообщение
#3504
|
|
Level 5 ![]() ![]() Класс: Вор Характер: Neutral Good Раса: Человек ![]() |
Спец скрипт для мощной катапульты Neverwinter Script void main() { object oPC = GetFirstPC(); object oBal = OBJECT_SELF; int i = 1; object oZel = GetNearestObject(OBJECT_TYPE_CREATURE, oBal, i); vector vFace = GetPosition(oPC); if (GetArea(oPC) != GetArea(oBal)) return; if (GetLocalInt(oBal,"BALL") == 1) return; while(GetIsObjectValid(oZel)) { int iRepa = GetReputation(oZel, oBal); if (iRepa < 40) { if (GetDistanceToObject(oZel) <= 23.0 && !GetIsDead(oZel)) { if (GetDistanceToObject(oZel) <= 3.0) return; effect eDamage = EffectDamage(GetCurrentHitPoints(oZel)/5, DAMAGE_TYPE_BLUDGEONING); effect eIMM = EffectSpellResistanceDecrease(30); AssignCommand(oBal, SetFacingPoint(vFace)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eIMM,o Zel,5.0); PlaySound("cb_sh_ballista"); DelayCommand(0.5, AssignCommand(oBal,ActionCastSpellAtObject(SPELL_M AGIC_MISSILE,oZel))); DelayCommand(1.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oZel));// Наносим удар DelayCommand(3.0, PlaySound("as_cv_winch1")); DelayCommand(11.0, SetLocalInt(oBal,"BALL",FALSE)); SetLocalInt(oBal,"BALL",1); break; } } i++; oZel = GetNearestObject(OBJECT_TYPE_CREATURE, oBal, i); } } Слушай, а важно ли здесь что бы катапульта или баллиста как плейсбл была используемая? |
![]()
Сообщение
#3505
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Важно, т.к. скрипт стоит на ХБ и катапульты кастуют спелы.
|
![]()
Сообщение
#3506
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Для того, чтоб плейсбл мог кастовать спеллы, он не должен быть «статик» - но при этом он может быть не «активным».
Используй только галочку «сюжетный», если хочешь, чтоб катапульты нельзя было разрушить, и он будет как статик, колдующий спеллы. Сообщение отредактировал Flaristan - Feb 19 2012, 18:32 |
![]()
Сообщение
#3507
|
|
Level 5 ![]() ![]() Класс: Вор Характер: Neutral Good Раса: Человек ![]() |
|
![]()
Сообщение
#3508
|
|
Level 1 Класс: Обыватель Характер: Lawful Neutral Раса: Человек ![]() |
Всех приветствую!Возник вопрос.Прошу прощения,если пишу не туда...
Вопрос:необходимо,чтобы НПС появился после выполнения какого-либо действия,а не сразу при запуске модуля(например,через присвоение ему локальной переменной).То есть,поговорил с каким-нибудь челом,и,в указанном месте появился новый НПС.Ещё,хотел спросить:как заставить появиться НПС при наступлении ГГ на определённый участок локации?То есть,созданная мною группа НПС через "Мастер встреч",появлялась после выполнения разговора с кем-либо.Заранее,спасибо за помощь (IMG:style_emoticons/kolobok_light/declare.gif) |
![]()
Сообщение
#3509
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Здраствуйте, извините может не туда пишу, но у меня серьезный вопрос, мне нужен человек который бы объяснил по скайпу как работать со скриптами, для меня это не знакомо, поэтому прошу строго не судить если я обратился с этой просьбой суда, просто у меня хорошая идея для создания онлайн-модуля, но без скриптов ни как, хорошо отблагодарю человека который сможет помоч, пишите суда или скайп nemi44441
|
![]()
Сообщение
#3510
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
redlist2009, все эти моменты разжёваны по 100 раз, тут огромная база примеров (IMG:style_emoticons/kolobok_light/smile.gif) В качестве наводки:
- Для выполнения действия в ветке диалога есть соответствующий слот для скрипта. - Для выполнения действия в определённом месте локации есть слот OnEnter у триггеров, который там надо заранее нарисовать. - Создать объект в скрипте можно функцией типа CreateObject по его resref-у, который можно подглядеть в палитре. - Можно распотрошить оригинальную кампанию, там есть такие ситуации. Если ты конечно её проходил. На подобные вопросы тут неохотно отвечают, т.к. это всё есть в мануалах. Valeroy, говорю как преподаватель информатики (в т.ч. и программирования) - если ты совсем ничего не понимаешь в программировании, то обучить тебя этому за пару вечеров в скайпе невозможно в принципе. Самый действенный вариант - заинтересуй кого-нить своей идеей, тут 100% несколько скриптеров без дела шатается. Если идея интересна не только тебе, может выйти положительный результат. Сообщение отредактировал denis0k - Feb 22 2012, 23:30 |
![]()
Сообщение
#3511
|
|
Level 1 Класс: Обыватель Характер: Lawful Neutral Раса: Человек ![]() |
denis0k, спасибо за совет,но,в этом и проблема...Я запутался во всём этом...Или,вы,меня не правильно поняли.Постараюсь объяснить.Все,наверное,играли в The Elder Scrolls 4 Oblivion.Так вот,кто помнит,в конце игры на имперский город нападают демоны...Именно это мне нужно...То,что,вы,мне сказали-я знаю...И,по поводу диалогов,и,по поводу триггеров...Я не знаю,что именно нужно писать в скипте.
|
![]()
Сообщение
#3512
|
|
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Neutral Раса: Хафлинг ![]() |
denis0k, спасибо за совет,но,в этом и проблема...Я запутался во всём этом...Или,вы,меня не правильно поняли.Постараюсь объяснить.Все,наверное,играли в The Elder Scrolls 4 Oblivion.Так вот,кто помнит,в конце игры на имперский город нападают демоны...Именно это мне нужно...То,что,вы,мне сказали-я знаю...И,по поводу диалогов,и,по поводу триггеров...Я не знаю,что именно нужно писать в скипте. Вообще.. имхо такие вопросы говорят о непостижении дзена тулсета, посозерцайте побольше контента и понимание придет само. |
![]()
Сообщение
#3513
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Дело не в дзен самого тулсета. Программирование - наука непростая, нахрапом её не взять. Это требует наличия некоторых знаний, которых в одном-двух абзацах не описать. Если лень найти в инете хотя бы лекции по программированию для школьников (не говоря о мануале по программированию на нвскрипт), то тут поможет только специально
|
![]()
Сообщение
#3514
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Мне на самом деле много не надо, около 5-ти скриптов, которых сам сделать не смогу, я даже готовые скрипты с города мастеров поставить не могу, они у меня не ребатают, говорю о скриптах на респ мобов, если у кого есть время в воскресенье или понедельник пишите мне в скайп Nemi44441 эти дни я буду дома, пока мне нужно только скрипт на респ мобов, тут мне к сожалению не объяснить, так как я большенства терминов не знаю, к тому же у меня модуль с непонятным переводом
|
![]()
Сообщение
#3515
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Доброе время суток, извините может пишу не в ту тему, но знаю тут быстро могут помочь, я запустил сервер, но другие игроки не могут его увидет, в чем может быть проблема это на линуксе
|
![]() ![]() |
Текстовая версия | Сейчас: 9th May 2025 - 15:31 |