![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#451
|
|
Level 18 ![]() Класс: Страж Тьмы Характер: True Neutral Раса: Человек МАСТЕР D&D ![]() |
Если ты располагал ВП по кругу, то НПС и должен ходить 1,2,3,4,1,2,3,4. Для того чтобы менять направление на рандомное есть скрипт:
Neverwinter Script #include "ginc_wp" void main() { int iCurrentWP = GetCurrentWaypoint();// the waypoint we just arrived at int iNextWP = iCurrentWP+1; if (iCurrentWP>4) iNextWP = 1; SetNextWaypoint(iNextWP); } Ставится на хартбит НПС. |
![]()
Сообщение
#452
|
|
Level 2 ![]() Класс: Клерик Характер: Lawful Neutral Раса: Человек ![]() |
Если ты располагал ВП по кругу, то НПС и должен ходить 1,2,3,4,1,2,3,4. хм, ты уверен? У меня вот как waypoint'ы расположены: (IMG:http://ipicture.ru/uploads/080729/14157/6SjOHBhppR.jpg) и все равно она ходит 1-2-3-4-3-2-1-2-3-4-3-2-1... может я как-то не так их расставил? если можешь - дай пожалуйста свой скрин с расположением waypoint'ов, позволяющим зациклить ходьбу NPC. Скрипт, устанавливаемый на "on heartbeat" хорош для одного NPC... а если у меня их 50-60? и в каждом раунде это будет обрабатываться? а в модуле ведь помимо этих и другие скрипты есть. Интересно, а можно реализовать как-нибудь так: создается скрипт с названием wp_<npctag>, и в нем уже прописывается что, мол, с последнего waypoint'а NPC должен идти на первый, а не на предпоследний? И вот таким образом зациклить waypoint'ы. |
![]()
Сообщение
#453
|
|
Level 18 ![]() Класс: Страж Тьмы Характер: True Neutral Раса: Человек МАСТЕР D&D ![]() |
У тебя три ВП! Как она может ходить 1,2,3,4????? И не надо их замыкать в треугольник она сама пойдет по 1,2,3,1,2,3......
Скрипт, устанавливаемый на "on heartbeat" хорош для одного NPC... а если у меня их 50-60? и в каждом раунде это будет обрабатываться? а в модуле ведь помимо этих и другие скрипты есть. ничего страшного они ж не все пойдут рандомно |
![]()
Сообщение
#454
|
|
Level 2 ![]() Класс: Клерик Характер: Lawful Neutral Раса: Человек ![]() |
У тебя три ВП! Как она может ходить 1,2,3,4????? И не надо их замыкать в треугольник она сама пойдет по 1,2,3,1,2,3...... не-не-не! Там где она стоит, не один вейпоинт, а два! У них просто координаты абсолютно одинаковые!(IMG:http://ipicture.ru/uploads/080729/14157/U5TBpaac1a.jpg) по алгебре у мну трояк был, но считать до четырех я умею (IMG:style_emoticons/kolobok_light/crazy.gif) еее к тому же между последним и первым waypoint'aми белых стрелочек не бывает! (IMG:http://ipicture.ru/uploads/080729/14157/4UPgY40J1o.jpg) ничего страшного они ж не все пойдут рандомно Да не в том дело, я читал, что если в моде много NPC со скриптом в "on heartbeat script", то просчет в каждом раунде скриптов для каждого NPC систему нагружает сильно. Это правда? Просто мне уже нужно первую локацию модуля заселять, а вдруг я сделаю - а потом тормоза сплошняком будут. Я же убьюсь переделывать (IMG:style_emoticons/kolobok_light/sad.gif)
|
![]()
Сообщение
#455
|
|
Level 6 ![]() ![]() Класс: Некромант Характер: Lawful Evil Раса: Нежить ![]() |
у тебя четвертый вэйпоинт лишний, если он стоит внутри стартового вэйпоинта. Возможно он и приводит к неправильной последовательности. Попробуй просто убрать его, тогда достигнув 3 вэйпоинт нпс пойдет к стартовому, создавая таким обрязом треугольник.
|
![]()
Сообщение
#456
|
|
Level 2 ![]() Класс: Клерик Характер: Lawful Neutral Раса: Человек ![]() |
у тебя четвертый вэйпоинт лишний, если он стоит внутри стартового вэйпоинта. Возможно он и приводит к неправильной последовательности. Попробуй просто убрать его, тогда достигнув 3 вэйпоинт нпс пойдет к стартовому, создавая таким обрязом треугольник. фигушки... сами смотрите. Так что насчет моего предыдущего вопроса, "on heartbeat" скрипты перегружают систему при просчете, если в модуле много NPC? |
![]()
Сообщение
#457
|
|
Level 6 ![]() ![]() Класс: Некромант Характер: Lawful Evil Раса: Нежить ![]() |
К сожелению не могу взглянуть лично, поскольку я забил на нвн2 и всем, что связано с ним больше года назад и, соответственно, клиента нвн2 у меня попросто не осталось. От ныне нвн1 во веки веков (IMG:style_emoticons/kolobok_light/pilot.gif) =)
|
![]()
Сообщение
#458
|
|
Level 2 ![]() Класс: Клерик Характер: Lawful Neutral Раса: Человек ![]() |
ыыы жаль (IMG:style_emoticons/kolobok_light/smile.gif) но все равно спасибо что пытался помочь
ага уже трое скачавших, может завтра кто и даст ответы... |
![]()
Сообщение
#459
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Да не в том дело, я читал, что если в моде много NPC со скриптом в "on heartbeat script", то просчет в каждом раунде скриптов для каждого NPC систему нагружает сильно. Это правда? Просто мне уже нужно первую локацию модуля заселять, а вдруг я сделаю - а потом тормоза сплошняком будут. Я же убьюсь переделывать сильно грузят систему корявые и не оптимизированные скрипты, особенно если они стоят в ХБ. Чтобы он ходил по кругу, а не туда-сюда, нужно переписать WalkWayPoints. Делается скриптерами это для себя довольно часто, кто-то вроде бы выкладывал такое в базу скриптов НВН1. Можно взять оттуда. Можно переписать Walk и самому (заодно оптимизировав его, если этого еще не сделали Обси. Ибо исходный код Биотварей малек тяжеловат и легко потдается упрощению и облегчению) |
![]()
Сообщение
#460
|
|
Level 2 ![]() Класс: Клерик Характер: Lawful Neutral Раса: Человек ![]() |
Чтобы он ходил по кругу, а не туда-сюда, нужно переписать WalkWayPoints. Делается скриптерами это для себя довольно часто, кто-то вроде бы выкладывал такое в базу скриптов НВН1. Можно взять оттуда. Можно переписать Walk и самому Ну а гайда как переписать WalkWayPoints или чего-то в этом роде не существует? Просто этот т.н. скриптинг для меня вновинку, у меня голова кругом идет уже от половины прочитанной странички тьютора по скриптингу на вики. Вообще я с незначительным скриптованием пересекался когда под half-life 1 и 2 маппил, но тут же просто кошмар, я не понимаю как вы в этом разбираетесь. (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) Может просто поначалу тяжело. |
![]()
Сообщение
#461
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Чтобы он ходил по кругу, а не туда-сюда, нужно переписать WalkWayPoints. Делается скриптерами это для себя довольно часто, кто-то вроде бы выкладывал такое в базу скриптов НВН1. Можно взять оттуда. Можно переписать Walk и самому (заодно оптимизировав его, если этого еще не сделали Обси. Ибо исходный код Биотварей малек тяжеловат и легко потдается упрощению и облегчению) Весь WalkWayPoints в моде переписывать с круговым движением нельзя! НПС не с круговым движением будут тыкаться по углам, как слепые котята... (т.е. с последней точки щемиться на первую) И вообще, эта функция запускается не только с ХБ, поэтому нужен комплексный подход... Если уж нужно запустить НПС по кругу, то проще сделать для этого другую функцию и почистить у него скрипты запускающие WalkWayPoints. Или перевести НПС на точки ходьбы с другими тегами... Помниться кто-то открыл отдельную тему по WalkWayPoints, но правда для 1 Невера (но я вижу, что мало что изменилось...) Можно глянуть там, что к чему, я писал свою функцию для сингла WalkWayPoints, можно оттуда выдрать круговую ходьбу, удалив обратный цикл подсчета точек. |
![]()
Сообщение
#462
|
|
Level 2 ![]() Класс: Клерик Характер: Lawful Neutral Раса: Человек ![]() |
Вопрос.
У меня на локации есть npc, тэг: npc1, есть стул, тэг: chair1. Мне нужно, чтобы npc подошел к стулу и сел, я пишу скрипт и ставлю его у npc на on spawn in script: void main() { object oNpc = GetObjectByTag("npc1"); object oChair = GetObjectByTag("chair1"); ActionMoveToObject(oChair); ActionDoCommand(ActionSit(oChair)); } npc подходит к стулу, начинает садиться на него, но тут же прерывается и тупо возле стула стоит. Что я не так делаю? |
![]()
Сообщение
#463
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
priest, если уж скрипт висит на НПС, то какой смысл запрашивать его тэг таким способом?
Neverwinter Script object oNpc = GetObjectByTag("npc1"); Достаточно сделать так: Neverwinter Script object oNpc = OBJECT_SELF; Попробуй использовать такой скрипт: Neverwinter Script void main() { // AI скрипт ... // скрипт посадки НПС на стул object oChair = GetObjectByTag("chair1"); float fDistance = GetDistanceToObject(oChair); AssignCommand(oPC, ClearAllActions(TRUE)); if (fDistance > 0.0) AssignCommand(oPC, ActionMoveToObject(oChair, FALSE, fDistance)); DelayCommand(fDistance, AssignCommand(oPC, ActionSit(oChair))); } Только есть одна мелкая деталь. НПС не сидят снова на стул, если с ним поговорить. Лучше подобный скрипт вешать на хартбит существа, и делать проверку с помощью переменной или проверки действия НПС, сидит ли НПС или нет. |
![]()
Сообщение
#464
|
|
Level 2 ![]() Класс: Клерик Характер: Lawful Neutral Раса: Человек ![]() |
Вопрос по объекту static camera. В диалогах я его научился использовать, а как сделать, чтобы камера некоторое время показывала просто игровую область - т.е. чтобы работала не в диалоге и не фокусировалась на персонаже?
|
![]()
Сообщение
#465
|
|
Level 18 ![]() Класс: Страж Тьмы Характер: True Neutral Раса: Человек МАСТЕР D&D ![]() |
Самое простое изменить задержку. Если же тебе нужно определенный ракурс, то поставить свою камеру и направить куда тебе надо или используй user defined фокус камеры, правда там всего три опции.
|
![]()
Сообщение
#466
|
|
Level 2 ![]() Класс: Клерик Характер: Lawful Neutral Раса: Человек ![]() |
Самое простое изменить задержку. Если же тебе нужно определенный ракурс, то поставить свою камеру и направить куда тебе надо или используй user defined фокус камеры, правда там всего три опции. А поподробнее можешь описать? Я просто не пойму, как это должно работать - тоже в диалоге, что ли? |
![]()
Сообщение
#467
|
|
Level 14 ![]() ![]() ![]() ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Эльф ![]() |
Коллеги, помогите, пожалуйста, с созданием вещей для шарда Балдурс Гейт:
1. Делаем броню "Подарок Ночи": Необходимо на броню повесить постоянный эффект окутанности тенями: как при выпритии бутылочки Death Armor. Как это сделать? 2. Делаем мечь "Лаликор": Мечь по сеттингу - разговаривающий. Как сделать так чтобы он при ударе по врангу с 20% вероятностью произносил фразу (текст всплывать должен) случайно выбранную из некого набора? А так же как следать так, чтобы с ним отдельно можно было поговорить, как с НПС? 3. Делаем щит "Щит Балдурана": По сеттингу он дает иммунитет к атакам Бехолдеров. Как сделать так, чтобы щит давал иммунитет к магии и магическому дамаджу именно от бехолдеров? 4. Делаем щит... забыл название: По сеттингу он отражает заклинания обратно на кастующего. Как это реализовать? Заранее спасибо. |
![]()
Сообщение
#468
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
"Не знаю, как там у вас, а у нас..." (с) Неизвестный Разработчик на НВН1
Цитата 1. Делаем броню "Подарок Ночи" посмотрите в скрипт этой самой Death Armor (в нвн1 она зовётся "X2_S0_DthArm.nss", вроде скрипты из первой части перенесли "как есть"), там будет наложение визуального эффекта, что-то типа: Neverwinter Script effect eDur = EffectVisualEffect(463); вот его и надо использовать... в онЭквип модудя или скрипт ещё по умолчанию запускается типа "i_+тэг предмета+еq" (опять же, не помню точно)... правда как снимать - непонятно, можно поставить псевдоцикл проверки на "надетость предмета", а эффект длительностью 5-10 сек, если броня надета - подновлять, нет - так нет. Цитата 2. Делаем мечь "Лаликор": выкрики - смотрите в сторону On Hit \ On Hit Cast Spell, разговор - Cast Spell, поредактировав .2da, можно добиться чтобы это выглядело естественно. Разговоры с оружием в ХотУ разработчики сделали через создание рядом невидимого нпц с видимым мечом в руке, пропадающего после разговора, но можно вроде игрока разговаривать и с самим собой. А если пять ударов в раунд - То выкрики каждый раунд получатся: "Этот раунд боя спонсирован Церковью Тора" (IMG:style_emoticons/kolobok_light/blum3.gif) Цитата 3. Делаем щит "Щит Балдурана": иммунитета от определённой расы вроде бы нет. пути решения: а) если у бихолдера ассортимент ограчичен только специальными Лучами Смерти \ Любви, то можно использовать EffectSpellImmunity. б) можно попробовать использовать спеллхуки, если они остались - "x2_inc_spellhook" в помощь. Если вкратце - то там задаётся в начале функцией SetModuleOverrideSpellscript(string sScriptName) где нибудь при старте модуля скрипт, который будет исполняться при касте любого спелла, и в нём уже можно делать всякие штуки с проверками. Цитата 4. Делаем щит... забыл название: малой кровью - не знаю как, в принципе спеллхуком можно отменить, GetSpellId() - выяснить, что за спел и в .2да к нему заглянуть через Get2DAString() - а вдруг площадное, и если в обратку кинуть - цикл бесконечный, а вот что дальше с ним делать - зх. невидимым монстром ActionCastSpellAtObject(...)? А вообще - имба. вобщем, в указаных вещах везде - гимор. (IMG:style_emoticons/kolobok_light/pardon.gif) |
![]()
Сообщение
#469
|
|
Level 18 ![]() Класс: Страж Тьмы Характер: True Neutral Раса: Человек МАСТЕР D&D ![]() |
|
![]()
Сообщение
#470
|
|
Level 9 ![]() ![]() ![]() Класс: Волшебник Характер: Neutral Good Раса: Эльф ![]() |
Все верно сказал azathoth.
Хочу только добавить что выкрики на мече можно сделать оверрайдом, заменив оригинальный скрипт стоящий на OnDamaged неписей (не дома сейчас поэтому не помню названия) скриптом с инициированием рандомного FloatingText на атакующем, экипированным данным мечом... А разговор с мечом проще всего сделать через "Use Item Special Power"... Позже могу написать пример. |
![]()
Сообщение
#471
|
|
Level 14 ![]() ![]() ![]() ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Эльф ![]() |
Цитата Позже могу написать пример Буду благодарен. |
![]()
Сообщение
#472
|
|
Level 9 ![]() ![]() ![]() Класс: Волшебник Характер: Neutral Good Раса: Эльф ![]() |
Создаешь скрипт, название которого i_item_ac где item - тег того айтема который активируешь. На айтеме ставь каст спела "Activate Object".
В скрипте пишешь: Neverwinter Script void main() { object oPC = GetItemActivator(); AssignCommand(oPC, ActionStartConversation(oPC, "dialog")); //где dialog - название диалога для разговора } Все просто. |
![]()
Сообщение
#473
|
|
Level 14 ![]() ![]() ![]() ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Эльф ![]() |
Спасибо, дружище!
|
![]()
Сообщение
#474
|
|
Level 2 ![]() Класс: Монах Характер: Lawful Neutral Раса: Эльф ![]() |
Еще раз по подробней, пожалуйста, как решить эту задачу (по возможности без редактирования 2да):?
Цитата 2. Делаем мечь "Лаликор":
Мечь по сеттингу - разговаривающий. Как сделать так чтобы он при ударе по врангу с 20% вероятностью произносил фразу (текст всплывать должен) случайно выбранную из некого набора? |
![]()
Сообщение
#475
|
|
Level 9 ![]() ![]() ![]() Класс: Волшебник Характер: Neutral Good Раса: Эльф ![]() |
Tristar, мне видится пока только один путь решения:
В скрипте NW_C2_DEFAULTD пиши следующее: Neverwinter Script void main() { int nEvent = GetUserDefinedEventNumber(); int iPercentage = 20; switch( nEvent ) { case EVENT_DAMAGED: { object oDamager = GetLastDamager(); if (GetIsPC(oDamager) && GetTag(GetLastWeaponUsed(oDamager)) == "lalikor_sword") { if (d100() <= iPercentage) { switch (d10()) { case 1: FloatingTextStringOnCreature("1", oDamager); break; case 2: FloatingTextStringOnCreature("2", oDamager); break; case 3: FloatingTextStringOnCreature("3", oDamager); break; case 4: FloatingTextStringOnCreature("4", oDamager); break; case 5: FloatingTextStringOnCreature("5", oDamager); break; case 6: FloatingTextStringOnCreature("6", oDamager); break; case 7: FloatingTextStringOnCreature("7", oDamager); break; case 8: FloatingTextStringOnCreature("8", oDamager); break; case 9: FloatingTextStringOnCreature("9", oDamager); break; case 10: FloatingTextStringOnCreature("10", oDamager); break; } } } break; } } } Где iPercentage - процент наступления этого события, "lalikor_sword" - тег говорящего меча, а "1", "2", "3" в case'е - строки которые будут случайным образом всплывать над атакующим. Сообщение отредактировал Lorendroll - Aug 24 2008, 15:20 |
![]() ![]() |
Текстовая версия | Сейчас: 26th April 2025 - 21:34 |