![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2161
|
|
Level 8 ![]() ![]() ![]() Класс: Паладин Характер: Lawful Good Раса: Полуэльф ПОДМАСТЕРЬЕ ![]() |
Хотел спросить: есть ли возможность сохранить стек действий создания?..
То есть ему задана очередь действий, но стоит кому-то с ним заговорить или атаковать его - и он останавливается, последовательность прерывается и все... Можно ли на время разговора или сражения запомнить эту последовательность и потом ее возобновить с прерванной точки?.. |
![]()
Сообщение
#2162
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
1 действие можно через GetCurrentAction
|
![]()
Сообщение
#2163
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Kavin, если только после каждого выполненного действия не сохранять переменную. Например, НПС подошел к столу - сохраняем переменную; НПС открыл сундук - сохраняем переменную. Переменная одна, меняется лишь цифра. Если НПС прервали, продолжить с последней переменной. Расписать серию условий по переменным, что если переменная равна тому-то, начать с этого действия. И не важно, что делал НПС, и как далеко отошел от своей цели. Не сохранять новую переменную до тех пор, пока он не выполнит своего задания. Когда НПС начинает идти по второму разу, повторяя свой цикл, сбросить переменную в ноль.
Ради интереса можешь посмотреть скрипты Мораг. У нее все расписано по часам, что если происходит то-то, делать это. Использованы те же условия. |
![]()
Сообщение
#2164
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(Kavin @ Apr 19 2006, 22:19) [snapback]78804[/snapback] То есть ему задана очередь действий, но стоит кому-то с ним заговорить или атаковать его - и он останавливается, последовательность прерывается и все... Можно ли на время разговора или сражения запомнить эту последовательность и потом ее возобновить с прерванной точки?.. я подробно описывал алгоритм анимации НПС, который включает в себя такие вещи. (прерывание разговором. боем так же, небольшой добавкой в скрипт onEndCombatRaund). Причем там был приведен как сам код, так и подробное описание. Не говоря уже о демо-модуле. Насколько я знаю, ты интересовался этим еще осенью, неужели с тех пор без изменений? |
![]()
Сообщение
#2165
|
|
Level 8 ![]() ![]() ![]() Класс: Паладин Характер: Lawful Good Раса: Полуэльф ПОДМАСТЕРЬЕ ![]() |
Lex, да, с тех пор без изменений. Я тулсет закрыл в декабре, а открыл после этого 9-го апреля.
А в какой теме ты это описывал, не напомнишь?.. ЗЫ.: Про демо-модуль ничего не слышал, правда. (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) |
![]()
Сообщение
#2166
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
2 статьи по анимации на старом сайте. Сайт снесли в феврале вроде, а статьи на новый не переехали пока. Когда ты тогда интересовался этим вопросом, я давал линки. Сейчас у мя нет на харде тех материалов.
|
![]()
Сообщение
#2167
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Kavin
Статьи есть ЗДЕСЬ LEX: забыл про народ, уехали оттуда черте когда, а сайт висит. (IMG:style_emoticons/kolobok_light/smile.gif) ) Надеюсь перенесем на сайт статью. Сообщение отредактировал Dik Morris - Apr 20 2006, 18:06 |
![]()
Сообщение
#2168
|
|
Level 8 ![]() ![]() ![]() Класс: Паладин Характер: Lawful Good Раса: Полуэльф ПОДМАСТЕРЬЕ ![]() |
Спасибо! Работаю.
|
![]() ![]()
Сообщение
#2169
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
Кто-нибудь может написать скрипт на повышения силы, ловкости и т.д?
Так чтобы это было постаяннао. (IMG:style_emoticons/kolobok_light/swoon.gif) |
![]()
Сообщение
#2170
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
NSS // Apply eEffect to oTarget. void ApplyEffectToObject(int nDurationType, effect eEffect, object oTarget, float fDuration=0.0f) NSS // Create an Ability Increase effect // - bAbilityToIncrease: ABILITY_* effect EffectAbilityIncrease(int nAbilityToIncrease, int nModifyBy) NSS // Set the subtype of eEffect to Supernatural and return eEffect. // (Effects default to magical if the subtype is not set) // Permanent supernatural effects are not removed by resting effect SupernaturalEffect(effect eEffect) 1 минус - иконка справа от портрета игрока. (Хотя это как сказать... Кажется ЗДЕСЬ Lex, предлагал иной способ.) PS: QUOTE Так чтобы это было постаяннао int DURATION_TYPE_PERMANENT. Сообщение отредактировал Dik Morris - Apr 21 2006, 18:19 |
![]() ![]()
Сообщение
#2171
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
А можит кто-то другой сможыт исправить так чтобы небыло значька.
[/nss]void main() { object oTargetPC = GetPCSpeaker(); effect oEffectAbilityIncrease = EffectAbilityIncrease (ABILITY_CONSTITUTION, 1); ApplyEffectToObject(DURATION_TYPE_ PERMANENT, oEffectAbilityIncrease, oTargetPC); } И ещё напишыте пожалуйста скрипт на снятие одежды с героя. |
![]()
Сообщение
#2172
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
QUOTE И ещё напишыте пожалуйста скрипт на снятие одежды с героя. поиск юзай.. |
![]()
Сообщение
#2173
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
Здрасьте, не подскажете как можно в определенный момент, к примеру катсцены, включить воспроизведение музыки? пробовал через звук(обычный, как объект), но он не хочет воспроизводиться. А музыку свою в игру вставлял в формате BMU, как описано в мануале Айвана, но он ее не видит, хотя делал все точно по инструкции. Подсобите, пожалуйста, советом...
|
![]()
Сообщение
#2174
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Вкл. боевую музыку:
NSS // Play the battle music for oArea. void MusicBattlePlay(object oArea) Если нужно сменить уже играющею то: NSS // Change the background day track for oArea to nTrack. // - oArea // - nTrack void MusicBackgroundChangeDay(object oArea, int nTrack) Либо: NSS // Change the background night track for oArea to nTrack. // - oArea // - nTrack void MusicBackgroundChangeNight(object oArea, int nTrack) Соответственно с battle точно также. NSS // Change the battle track for oArea. // - oArea // - nTrack void MusicBattleChange(object oArea, int nTrack) QUOTE музыку свою в игру вставлял в формате BMU, как описано в мануале Айвана, но он ее не видит, хотя делал все точно по инструкции. Заместо константы TRACK_ , ставь номер своей композиции, из 2da ambietmusic. QUOTE А можит кто-то другой сможыт исправить так чтобы небыло значька. Повторюсь: http://www.wrg.ru/forums/index.php?showtopic=1798 QUOTE И ещё напишыте пожалуйста скрипт на снятие одежды с героя. NSS // Unequip oItem from whatever slot it is currently in.
void ActionUnequipItem(object oItem) Сообщение отредактировал Lex - Apr 23 2006, 16:36 |
![]()
Сообщение
#2175
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
А дык через что присваивать Area? Через Location? А Location тода через что?
|
![]()
Сообщение
#2176
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE А дык через что присваивать Area? Через Location? А Location тода через что? В зависимости от ситуации. Например, если ты хочешь сменить трек в текущей локации: NSS object oArea = GetArea(OBJECT_SELF);// Т.е oArea - сама лока Если в какой либо другой: NSS object oArea = GetArea(GetObjectBtTag(""));
Сообщение отредактировал Dik Morris - Apr 24 2006, 15:23 |
![]()
Сообщение
#2177
|
|
Level 3 ![]() Класс: Обыватель Характер: Chaotic Good Раса: Человек ![]() |
Доброго времени суток. У меня возник вопрос, если он глупый, прошу строго не судить - так как это мой первый опыт в написании скриптов.
Решил немного модифицировать скрипт с реакцией гварда на оружие в руках игрока: при виде игрока с оружием в руках, гвард начинает диалог(предлагает заплатить штраф), при отказе платить штраф вызывается следующий скрипт: CODE void main() { object oPC = GetPCSpeaker(); object OS = OBJECT_SELF; object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); if (!GetIsObjectValid(oWeapon)) return; DelayCommand(0.30, ActionSpeakString("Может так ты лучше поймешь!")); DelayCommand(0.60, ActionUseFeat(FEAT_IMPROVED_DISARM, oPC)); DelayCommand(1.40, ApplyEffectToObject(1, EffectKnockdown(), oPC, 8.0)); DelayCommand(0.25, SetStandardFactionReputation(REPUTATION_TYPE_ENEMY, 50, oPC)); DelayCommand(2.30, ClearAllActions(TRUE)); DelayCommand(4.30, ActionPickUpItem(oWeapon)); DelayCommand(7.20, ActionMoveToObject(oPC, FALSE, 1.4)); DelayCommand(10.0, AssignCommand(OBJECT_SELF, ActionStartConversation(oPC, "dl_afterdisarm"))); } Ведет он себя абсолютно непредсказуемо. Чаще всего гвард после проведения дизарма остается хостайл и продолжает атаковать игрока. Подскажите, пожалуйста в чем может быть проблема или скажите хоть куда копать. Спасибо. З.Ы. DelayComand() - это задержка от начала выполнения скрипта или от предыдущего действия? |
![]()
Сообщение
#2178
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(windhover @ Apr 26 2006, 02:49) [snapback]79626[/snapback] DelayComand() - это задержка от начала выполнения скрипта или от предыдущего действия? от начала QUOTE(windhover @ Apr 26 2006, 02:49) [snapback]79626[/snapback] Чаще всего гвард после проведения дизарма остается хостайл и продолжает атаковать игрока. ну ессно. Ты ж его заставляешь применить фит, который расценивается как атака. Смена отношения между РС и хостайлами не ясна. Если уж на то пошло, то тебе надо такое: - отчистить стеки акций у обоих участников - (тут можно поставить TemporaryEnemy) - применить фит дизарм - наложить кнок - с небольшой задержкой после дизарма очищай персональные отношения, можешь насильно поставить нейтрал - запускай диалог. Но учти, что после боя требуется время. как вариант - выкинуть дизарм. Те анимашка (быстрый взмах рукой.. скажем ANIMATION_LOOPING_TALK_FORCEFUL), эффект кнока, копирование оружия на землю и удаление из руки. Подбор и диалог сразу. |
![]()
Сообщение
#2179
|
|
Level 3 ![]() Класс: Обыватель Характер: Chaotic Good Раса: Человек ![]() |
QUOTE(Lex @ Apr 26 2006, 02:53) [snapback]79629[/snapback] как вариант - выкинуть дизарм. Те анимашка (быстрый взмах рукой.. скажем ANIMATION_LOOPING_TALK_FORCEFUL), эффект кнока, копирование оружия на землю и удаление из руки. Подбор и диалог сразу. Спасибо большое, вариант без дизарма действителшьно лучше, так как стража тоже иногда "1" бросает =) Еще один глупый вопрос: если скрипт вызывается из диалога, ClearAllActions(TRUE) у кого очистит стэк акций? P.S. простите, поправил.. Mozilla чегойто... (IMG:style_emoticons/kolobok_light/unsure.gif) (IMG:style_emoticons/kolobok_light/unsure.gif) Сообщение отредактировал windhover - Apr 26 2006, 18:55 |
![]()
Сообщение
#2180
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(Aiwan @ Apr 26 2006, 19:32) [snapback]79700[/snapback] Еще один глупый вопрос: если скрипт вызывается из диалога, ClearAllActions(TRUE) у кого очистит стэк акций? в диалоге если не указываешь объект, или указываешь OBJECT_SELF, то это относится к НПС, с которым разговариваешь. Тут это особо не нужно (я про отчистку), но лучше подстраховаться и ввести в правило: что-то делаешь с Игроком/Неписью - отчисть его стек, если это возможно. (бывают случаи когда стек наоборот чистить не нужно, но эт другая история) |
![]()
Сообщение
#2181
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Добрый день (IMG:style_emoticons/kolobok_light/smile.gif) . Не особо разбираюсь в скриптах - все познания ограничиваются установкой локальных переменных, созданием монстров и эффектами, поэтому частенько заглядываю сюда в поисках готовых примеров. Долго искал, но не смог обнаружить, как сделать:
1.Вызов приживалы (спутника, существа у магов и колдунов), вызов элементалей и планаров доступным только в определенных областях и с наличием определенных предметов в инвентаре. 2.Предмет, вызывающий определенное существо сроком на 6 минут, после чего его использование становится невозможным на 12 минут. Буду очень признателен, если кто-нибудь окажется достаточно терпеливым и объяснит мне, как это сделать (IMG:style_emoticons/kolobok_light/smile.gif) . |
![]()
Сообщение
#2182
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE 2.Предмет, вызывающий определенное существо сроком на 6 минут, после чего его использование становится невозможным на 12 минут. В закрытой локации, поставь готового NPC. Поскольку конкретно ничего не сказано о: QUOTE после чего его использование становится невозможным Я сделал так что NPC, после истечении 6 минут, прыгает на нужный вайпоин. (Скажем, в той же закрытой локе) На onActivateItem в мод. св-вах: NSS void main() { object oPC = GetItemActivator(); // Игрок; object oNPC = GetObjectByTag(""); // Таг вызываемого NPC; object oWP = GetObjectByTag(""); // Таг "домашнего" вейпа; object oItem = GetItemActivated(); // Активируемый предмет; if (GetTag(oItem) == "") // Здесь укажи таг oItem ; { if (GetLocalInt(oPC, "Local") == FALSE) { SetLocalInt(oPC,"Local", 1); DelayCommand(1200.0, SetLocalInt(oPC,"Local",0)); effect eVisual = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE); DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oPC)); DelayCommand(0.7, AssignCommand(oNPC, ClearAllActions(TRUE))); DelayCommand(1.0, AssignCommand(oNPC, ActionJumpToObject(oPC))); DelayCommand(599.7, AssignCommand(oNPC, ClearAllActions(TRUE))); DelayCommand(600.0, AssignCommand(oNPC, ActionJumpToObject(oWP))); } if (GetLocalInt(oPC, "Local") == TRUE) FloatingTextStringOnCreature("Нужное время еще не пришло.", oPC); } } QUOTE 1.Вызов приживалы (спутника, существа у магов и колдунов), вызов элементалей и планаров доступным только в определенных областях и с наличием определенных предметов в инвентаре. Это можно сделать, немного модернизировав вышеприведенный код, т.е добавить проверку на айтемы, локи и т.п... Сообщение отредактировал Dik Morris - Apr 28 2006, 07:48 |
![]()
Сообщение
#2183
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Премного благодарен (IMG:style_emoticons/kolobok_light/smile.gif) .
|
![]()
Сообщение
#2184
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Есть гостиница, в ней - разные комнаты. В некоторых есть окна, во всех есть различные источники искусственного освещения.
Нужно сделать естественное освещение, т.е. с наступлением дня и ночи менять тайловое освещение в тех комнатах, в которых есть окна. Но поскольку просто так скриптами границы комнаты не определишь (насколько я знаю), есть вопрос: Как, по-вашему, наиболее удобно/эффективно обозначать расположение тайлов комнаты для скрипта? Можно, конечно, и в скрипт коррдинаты каждого тайла запихнуть, но это как-то не очень. Повторюсь: ВСЕ тайлы менять не надо, только определённые комнаты. |
![]()
Сообщение
#2185
|
|
Level 1 Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
Недавно сел за редактор и никак не могу понять следующие вещи.
Как приказать NPC двигаться в точку? И как назначить эту точку? При генерации вещей в сундуках, они выбратся из указанного уровня вещей. А можно ли редактировать эти самые уровни? Например, при генерации золота на высоком уровне получается около 20 золотых, а мне нужно примерно 1000-3000. И можно как-то сделать, чтобы они генерировались из заданного мной списка вещей? Сообщение отредактировал mefist - Apr 29 2006, 18:53 |
![]() ![]() |
Текстовая версия | Сейчас: 29th April 2025 - 12:46 |