![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#4571
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
На счет боя, спасибо большое, я посмотрел и разобрался, но как быть с озвучкой?
|
![]()
Сообщение
#4572
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Не помню, но по моему их можно выбирать при создании диалога. Там вообще почти все звуки можно выбрать.
|
![]()
Сообщение
#4573
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Скажите пожалуйста, как сделать так, что бы твой спутник нападал на тебя после определённой фразы с посторонним npc.
Функция типа: AdjustReputation(GetPCSpeaker(), GetObjectByTag("тег хенча"), -100); DetermineCombatRound(GetPCSpeaker()); Почему-то не действует, нападает npc. Фразы хенча так же присутствуют в диалоге с npc. |
![]()
Сообщение
#4574
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Во-первых, нужно убрать хенча из пати с помощью RemoveHenchman(). Во-вторых, перебросить DetermineCombatRound() на хенча с помощью AssignCommand().
|
![]()
Сообщение
#4575
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Наверное я что-то не то делаю, скрипт не составляется. Не могли бы вы продемонстрировать на примере как это всё делается... если Вас не затруднит....
|
![]()
Сообщение
#4576
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Как-то так:
Neverwinter Script #include "nw_i0_generic" Скрипт не проверял, могут быть опечатки.
void main() { object oPC = GetPCSpeaker(); object oHenchman = GetObjectByTag("tag"); RemoveHenchman(oPC, oHenchman); AdjustReputation(oPC, oHenchman, -100); AssignCommand(oHenchman, DetermineCombatRound(oPC)); } |
![]()
Сообщение
#4577
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Благодарю Вас, всё прекрасно работает.
|
![]()
Сообщение
#4578
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Спасибо, я уже разобрался.
Кстати, если что, я разобрался наконец-то с портретами, хотя делал все как и раньше, только последнюю букву в имени файлов заглавной писал. (IMG:style_emoticons/kolobok_light/rolleyes.gif) |
![]()
Сообщение
#4579
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Я создал модуль, где с двух сторон создаются монстры, идут друг навстречу другу и начинают драться. Что-то вроде Dota Allstars. Стороны вполне сбалансированы, если какая-то сторона проигрывает, то ей присылают подкрепление. Короче он работает нормально. Если запустить, то битва будет происходить бесконечно, примерно по 10-13 монстров с каждой стороны.
Проблема в том, что если запустить его на dedicated server'е, то монстры продолжат спавниться, однако драться между собой будут только в присутствии игроков. Таким образом локация переполняется живностью и зайти посмотреть "как дела" не представляется возможным. Никаких обработчиков на onClientEnter и т.д. не стоит. Можно ли как-то сделать чтобы монстры дрались на dedicated сервере, даже если игроков нет? |
![]()
Сообщение
#4580
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
Можно, конечно.
Судя по тому, что говорит вирусман - то хербит имеет тенденцию отключатся в локах, в которых нет игроков, через какой-то промежуток времени (если я правильно понял) - можно сделать искусственый запуск через курсирующий на модуле скрипт (каждые 6 сек) - это единственное, что мне приходит в голову. Сообщение отредактировал Laajin - Aug 4 2011, 09:15 |
![]()
Сообщение
#4581
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Можно, конечно. Судя по тому, что говорит вирусман - то хербит имеет тенденцию отключатся в локах, в которых нет игроков, через какой-то промежуток времени (если я правильно понял) - можно сделать искусственый запуск через курсирующий на модуле скрипт (каждые 6 сек) - это единственное, что мне приходит в голову. Так хербит вон, работает походу, монстры то спавняться! Да кстати, скрипт на драку у меня в onPerception. Там просто, проверки на враждебность цели, проверка переменных свободен\нет, ну и ActionAttack. А в хертбите у меня задача идти вперед, если бить некого. Монстры просто не дерутся! [offtop: не вижу кнопки редактировать сообщение (IMG:style_emoticons/kolobok_light/crazy.gif) (IMG:style_emoticons/kolobok_light/crazy.gif) (IMG:style_emoticons/kolobok_light/crazy.gif) ] |
![]()
Сообщение
#4582
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
Дык АI хербит и останавливается
|
![]()
Сообщение
#4583
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Цитата Судя по тому, что говорит вирусман - то хербит имеет тенденцию отключатся в локах, в которых нет игроков, через какой-то промежуток времени (если я правильно понял) virusman дело говорит, да и в описаниях стандартных функций сказано, что ХБ отключается, когда игрок не в зоне. Не занимался этим вопросом специально, но видел освещение подобной темки в лексиконе. Вот этот абзац: Цитата Remarks When used for a creature, conditions set within the OnSpawn script are checked and executed if they are applicable; these include "fast buff" for enemies (used when a PC draws within a certain range to simulate preparation), day/night postings for the WalkWayPoints() function, and the standard ambient animations used by creatures when standing around. Though the PC doesn't have an OnHeartbeat event, if you create a script called "default", it will automatically trigger every PC heartbeat. It would be wiser to use the modules OnHeartbeat however. Setting the AI level to AI_LEVEL_HIGH on a creature will force the heartbeat to fire as if a PC was in the area. This is useful for monsters you want to travel across multiple area's with waypoints, but is costly on the CPU. Area of effects can have a Heartbeat script defined, and can apply damage (such as Acid Fog does) to everyone in the area, each combat round. Т.е. по идее, отключение хертбита при отсутствии игрока убирается с помощью функциии SetAILevel() с параметром AI_LEVEL_HIGH, но это должно стоить производительности. Описание констант там дано. Цитата Таким образом локация переполняется живностью Это странно. Если ты говоришь, что стороны балансируются в зависимости от того, какая проигрывает, а в отсутствие игрока боя не происходит, то почему тогда идет переполнение? В моем представлении, балансировка подразумевает проверку числа живых мобов. Нет боя - нет потерь - нет подкреплений. Разве нет? Сообщение отредактировал Talarasha - Aug 5 2011, 02:04 |
![]()
Сообщение
#4584
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Спасибо за наводки. Как будет возможность проверю.
Цитата Цитата Цитата Таким образом локация переполняется живностью Это странно. Если ты говоришь, что стороны балансируются в зависимости от того, какая проигрывает, а в отсутствие игрока боя не происходит, то почему тогда идет переполнение? В моем представлении, балансировка подразумевает проверку числа живых мобов. Нет боя - нет потерь - нет подкреплений. Разве нет? Просто нет ограничения на количество спавнящихся мобов, однако проигрывающая сторона всегда получает больше войск чем доминирующая. Если мобы дерутся, то все нормально подкрепления приходят, старые воины умирают чаши весов постоянно прыгают, но победу не может одержать ни одна сторона. А вместо проверки числа живых, я просто веду учет: заспавнился +1 в переменную, сдох -1 в переменную. Мне просто интересно наблюдать за ними (IMG:style_emoticons/kolobok_light/wink3.gif) сижу, пишу скрипты, пью чаек, болею за кого-нибудь. P.S. так и не нашел где тут на этой борде кнопка "редактировать сообщение" (IMG:style_emoticons/kolobok_light/ph34r.gif) |
![]()
Сообщение
#4585
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Цитата P.S. так и не нашел где тут на этой борде кнопка "редактировать сообщение" Если не ошибаюсь, возможность редактирования появляется при получении второго вроде бы уровня. От количества сообщений, в общем, зависит. |
![]()
Сообщение
#4586
|
|
Level 3 ![]() Класс: Теневой Танцор Характер: Lawful Neutral Раса: Человек ![]() |
Первое что пришло в голову, что мона поставить проверку на локалку, и принудительно запускать. а если нет никого на арене, ни ДМов, ни игроков, то просто на мобов ПВК, при заходе игрока на арену КВП и далее батл, стек команд на пустых локах запущенный принудительно не айс. как только игрок выходит из зоны видимости через турн выключается АИ, и моб выходит в режим "по дефолту" (даже когда в камне, т.е. в позе появления)
|
![]()
Сообщение
#4587
|
|
Level 5 ![]() ![]() Класс: Паладин Характер: Chaotic Good Раса: Человек ![]() |
Как поставить режим монстру, чтобы он разрушал все плэйсы в пределах своей видимости?
|
![]()
Сообщение
#4588
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
|
![]()
Сообщение
#4589
|
|
Level 5 ![]() ![]() Класс: Паладин Характер: Chaotic Good Раса: Человек ![]() |
Цитата Использовать GetNearestObject(OBJECT_TYPE_PLACEABLE) в аи-скриптах моба. Можно подробнее. (IMG:style_emoticons/kolobok_light/wacko.gif) |
![]()
Сообщение
#4590
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Можно подробнее. wacko.gif Neverwinter Script //::////////////////////////////////////////////////// //:: NW_C2_DEFAULT1 /* Default OnHeartbeat script for NPCs. This script causes NPCs to perform default animations while not otherwise engaged. This script duplicates the behavior of the default script and just cleans up the code and removes redundant conditional checks. */ //::////////////////////////////////////////////////// //:: Copyright © 2002 Floodgate Entertainment //:: Created By: Naomi Novik //:: Created On: 12/22/2002 //::////////////////////////////////////////////////// #include "nw_i0_generic" void main() { // * if not runnning normal or better Ai then exit for performance reasons if (GetAILevel() == AI_LEVEL_VERY_LOW) return; // Buff ourselves up right away if we should if(GetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY)) { // This will return TRUE if an enemy was within 40.0 m // and we buffed ourselves up instantly to respond -- // simulates a spellcaster with protections enabled // already. if(TalentAdvancedBuff(40.0)) { // This is a one-shot deal SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY, FALSE); // This return means we skip sending the user-defined // heartbeat signal in this one case. return; } } if(GetHasEffect(EFFECT_TYPE_SLEEP)) { // If we're asleep and this is the result of sleeping // at night, apply the floating 'z's visual effect // every so often if(GetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT)) { effect eVis = EffectVisualEffect(VFX_IMP_SLEEP); if(d10() > 6) { ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); } } } // If we have the 'constant' waypoints flag set, walk to the next // waypoint. else if ( GetWalkCondition(NW_WALK_FLAG_CONSTANT) ) { WalkWayPoints(); } // Check to see if we should be playing default animations // - make sure we don't have any current targets else if ( !GetIsObjectValid(GetAttemptedAttackTarget()) && !GetIsObjectValid(GetAttemptedSpellTarget()) // && !GetIsPostOrWalking()) && !GetIsObjectValid(GetNearestSeenEnemy())) { if (GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL) || GetBehaviorState(NW_FLAG_BEHAVIOR_OMNIVORE) || GetBehaviorState(NW_FLAG_BEHAVIOR_HERBIVORE)) { // This handles special attacking/fleeing behavior // for omnivores & herbivores. DetermineSpecialBehavior(); } else if (!IsInConversation(OBJECT_SELF)) { if (GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS) || GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVI AN) || GetIsEncounterCreature()) { PlayMobileAmbientAnimations(); } else if (GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIM ATIONS)) { PlayImmobileAmbientAnimations(); } // addition to original onHeartbeat else if (GetLocalInt(OBJECT_SELF, "AI_HAVE_TO_DESTROY_PLACEABLES")) { object placeable = GetNearestObject(OBJECT_TYPE_PLACEABLE); if (GetIsObjectValid(placeable)) { ActionAttack(placeable); } } // addition ends } } // Send the user-defined event signal if specified if(GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_HEARTBEAT)); } } Самый простой, а потому почти наверное далеко не лучший способ. |
![]()
Сообщение
#4591
|
|
Level 5 ![]() ![]() Класс: Паладин Характер: Chaotic Good Раса: Человек ![]() |
На что ставить? (IMG:style_emoticons/kolobok_light/ph34r.gif)
|
![]()
Сообщение
#4592
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
Цитата Neverwinter Script //::////////////////////////////////////////////////// //:: NW_C2_DEFAULT1 /* Default OnHeartbeat script for NPCs. This script causes NPCs to perform default animations while not otherwise engaged. This script duplicates the behavior of the default script and just cleans up the code and removes redundant conditional checks. */ //::////////////////////////////////////////////////// //:: Copyright © 2002 Floodgate Entertainment //:: Created By: Naomi Novik //:: Created On: 12/22/2002 //::////////////////////////////////////////////////// |
![]()
Сообщение
#4593
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Neutral Раса: Человек ![]() |
Приветствую всех на этом прекрасном форуме!
У меня небольшой вопрос, в каком 2да файле или может скрипте, редактируется система опыта? Скажем я хочу увеличить себе длительность игры небольшим модом, как увеличить порог до 45-50 уровня? |
![]()
Сообщение
#4594
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Lawful Evil Раса: Человек ![]() |
Насколько я знаю (раньше вроде задавались подобные вопросы), увеличить порог нельзя. Можно растянуть получение опыта, вроде бы как через xptable.2da (не знаю, к чему приведет добавление в нее строк за 40, скорее всего к ошибке при попытке подняться на уровень/на добавленный уровень, ибо есть куча таблиц классов, которые наверняка связаны с уровнями, класс/кросс-класс скиллы и так далее. К чему приведет оное добавление во все таблицы, которые связаны с уровнями, не знаю тем более, но можно попытаться. Кстати, на пг какой-то товарищ выкладывал xptable, отредактированный на ускорение кача - http://www.playground.ru/cheats/14583/ ). Кстати под 2da имеется отдельная тема, может найдешь там что-нибудь себе полезное. http://www.city-of-masters.ru/forums/index.php?showtopic=78
|
![]()
Сообщение
#4595
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
Цитата Скажем я хочу увеличить себе длительность игры небольшим модом, как увеличить порог до 45-50 уровня? Нафиг вам это? Если хотите +100500 лвл, лучше поиграйте в Пэрфэкт форд или Ла2 или Еверквест 2 или хз, чего там еще... там все это + лучше чем можно сделать тут. |
![]() ![]() |
Текстовая версия | Сейчас: 19th August 2025 - 22:34 |