![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#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 |
![]()
Сообщение
#2186
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
mefist
Для начала прочитай FAQ по тулсету - отпадет много вопросов. ЗДЕСЬ ~ 4mb QUOTE Как приказать NPC двигаться в точку? С помощью фун-ции: NSS void ActionMoveToObject( object oTarget, int bRun = FALSE, float fRange = 1.0f ); QUOTE И как назначить эту точку? WayPoints Wizard. QUOTE И можно как-то сделать, чтобы они генерировались из заданного мной списка вещей? Например так: NSS void main()
{ // OnOpen сундука object oPC = GetLastOpenedBy(); if (GetLocalInt(OBJECT_SELF,"Open") == 0) { SetLocalInt(OBJECT_SELF,"Open",TRUE); if (GetHitDice(oPC) == 1) CreateItemOnObject("ResRef_itema", OBJECT_SELF); if (GetHitDice(oPC) == 2) CreateItemOnObject("ResRef_itema", OBJECT_SELF); if (GetHitDice(oPC) == 2) CreateItemOnObject("ResRef_itema", OBJECT_SELF); // 3, 4, 5 левелы и т.д... } } Сообщение отредактировал Dik Morris - Apr 29 2006, 19:27 |
![]()
Сообщение
#2187
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
QUOTE(virusman @ Apr 29 2006, 15:15) [snapback]80129[/snapback] Но поскольку просто так скриптами границы комнаты не определишь (насколько я знаю), есть вопрос: Как, по-вашему, наиболее удобно/эффективно обозначать расположение тайлов комнаты для скрипта? в 1.67 есть что-то вроде GetAreaSize(), но близко не смотрел. Для обозначения тайлов удобнее всего ставить вэйпоинты, и по их координатам определять, что за тайл. Почему-то когда пыталася сделать нечто подобное, то ничего не было видно, пока не выйдешь и снова не зайдешь в область. RecalculateStaticLighting() не помогает. Похоже цвет вделанных в тайлы факелов считается статическими данными, т.е. считываются один раз при заходе в область, а RecalculateStaticLighting пересчитывает карту теней, учитывая статические данные о свете и свет плейсов. Кажется по этой же причине нельзя создавать звуки скриптами. Хотя, может быть просто что-то криво делал (IMG:style_emoticons/kolobok_light/wacko.gif) |
![]()
Сообщение
#2188
|
|
Level 1 Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
Спасибо. А можно все-таки менять границы категорий при генерации вещей? Например, при генерации золота категории high создается около 20 золота, а мне нужно, допустим, около 1000. Или есть какая-то другая альтернатива? С деньгами то проще, их можно делать через рандом, а вот с вещами мне что-то ничего в голову не приходит.
И еще вопрос, как сделать чтобы в диалоге учавствали сразу несколько NPC? |
![]()
Сообщение
#2189
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(mefist @ Apr 30 2006, 00:16) [snapback]80189[/snapback] И еще вопрос, как сделать чтобы в диалоге учавствали сразу несколько NPC? Читайте мой мануал с сайта. Очень много чего написано. |
![]()
Сообщение
#2190
|
|
Level 1 Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
Ты про Цикл "Aurora Toolset"? я что-то там этого не нашел. Не мог бы дать ссылку?
|
![]() ![]() |
Текстовая версия | Сейчас: 29th April 2025 - 23:19 |