Скрипты: Все вопросы, Алгоритмы, оптимизация, особености и хитрости в скриптинге |
Здравствуйте, гость ( Вход | Регистрация )
Скрипты: Все вопросы, Алгоритмы, оптимизация, особености и хитрости в скриптинге |
Jan 8 2007, 10:27
Сообщение
#51
|
|
Level 17 Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX |
ActionTakeItem - это действие, его можно использовать только от имени существ. Модуль (или даже OBJECT_INVALID), от имени которого вызывается OnItemAcquired, не может взять предмет у игрока.
Вместо этого поставь DestroyObject. В строчке NSS AddHenchman(oTaker, oHench); используется oHench, но она ранее не объявлена и не установлена.
|
Jan 8 2007, 11:38
Сообщение
#52
|
|
Level 9 Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага |
webkent, слишком много лишнего в твоем коде, для НВН я бы записал так: NSS void main() { object oTarget = GetModuleItemAcquiredBy(); object oItem = GetModuleItemAcquired(); location Loc = GetLocation(oTarget); if (GetTag(oItem) == "itm_***") // Лучше определить через тэг { // Сразу определим хенча object oHench = CreateObject(OBJECT_TYPE_CREATURE, "c_dogwolfdire", Loc, FALSE, "c_dogwolfdire1"); AddHenchman(oTarget, oHench); DestroyObject(oItem, 3.0); // Удалим с задержкой, чтобы исключить баги // На пожарный случай DelayCommand(3.0, DestroyObject(GetItemPossessedBy(oTarget, "itm_***"))); } } |
Jan 8 2007, 11:56
Сообщение
#53
|
|
Лорд AxisTown'a Класс: Монах Характер: Lawful Good Раса: Дварф NWN: Маппинг |
QUOTE ActionTakeItem(oItem, oTaker); //тут вылетает с ошибкой как говорится не в ту степь попали (IMG:style_emoticons/kolobok_light/biggrin.gif) кстати- лучше бы сразу не удалять токо что найденый итем, а сделать процесс подлинее (IMG:style_emoticons/kolobok_light/biggrin.gif) - этот итем делал бы волка на каком нить алтаре, например, или повесить скрипт одноразового юза на сам предмет - тогда появление волка -хенча будет или у алтаря илии после юза спец свойства итема (IMG:style_emoticons/kolobok_light/biggrin.gif) CODE CreateObject(nObjectType, "c_dogwolfdire",lLocationOfTaker, FALSE, "c_dogwolfdire1"); object oHench = GetObjectByTag("c_dogwolfdire1"); ..и еще ...а почему 2 строчки (IMG:style_emoticons/kolobok_light/biggrin.gif) ведь можно и одной (IMG:style_emoticons/kolobok_light/biggrin.gif) CODE object oHench = CreateObject(nObjectType, "c_dogwolfdire",lLocationOfTaker, FALSE, "c_dogwolfdire1"); а то создание обьекта - процесс сравнительно "громоздкий"( как правило лучше на этом процесе действие скрипта и заканчивать (IMG:style_emoticons/kolobok_light/biggrin.gif) ), а ты уже ищешь обьект (по тэгу), который еще может и не успел досоздатся (IMG:style_emoticons/kolobok_light/biggrin.gif) п.с. пока ходил по делам ( пост не завершил писать) gennady уже об этом написал (IMG:style_emoticons/kolobok_light/biggrin.gif) Сообщение отредактировал mamuc - Jan 8 2007, 11:59 |
Jan 8 2007, 15:05
Сообщение
#54
|
|
Level 2 Класс: Убийца Характер: Lawful Evil Раса: Рептилия |
QUOTE как говорится не в ту степь попали кстати- лучше бы сразу не удалять токо что найденый итем, а сделать процесс подлинее - этот итем делал бы волка на каком нить алтаре, например, или повесить скрипт одноразового юза на сам предмет - тогда появление волка -хенча будет или у алтаря илии после юза спец свойства итема Да там просто магазин петомцев =) Ок спасибо всем щас буду править. |
Jan 10 2007, 14:00
Сообщение
#55
|
|
Level 2 Класс: Убийца Характер: Lawful Evil Раса: Рептилия |
И вот что интересно - Я ставлю волка в тулсете, меняю ему некоторые параметры, меняю ТАГ и меняю Тэмплейт. Потом через скрипт хочу создать волка с таким темплейтом(еще одного) а он не создается. Если пробую создать НПЦ со стандартным темплейтом то всё отлично создается. Вот вопрос - что, разве обязательно еще 1 шаблон создавать чтобы потом через скрипт этого НПЦ создать или как-то можно без этого?
|
Jan 10 2007, 17:25
Сообщение
#56
|
|
Level 19 Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] |
Все объекты создаются из палитры по их РесРефу. Тобишь, добавляешь в палитру своего волка, делаешь ему уникальный РесРеф и потом по нему создаешь этого волка где тебе надо. В первом НВН была еще возможность создания копии, хз как тут. Но лучше делай через палитру. Еще, если этот непись тебе нужен тока раз, там по квесту он где появляется или еще чего, то можно его для начала кинуть в закрытую локу, а потом просто переместить куда надо.
|
Jan 12 2007, 23:16
Сообщение
#57
|
|
Level 2 Класс: Убийца Характер: Lawful Evil Раса: Рептилия |
Тупой вопрос: как скриптами убить объект? =)
Сообщение отредактировал webkent - Jan 12 2007, 23:40 |
Jan 12 2007, 23:47
Сообщение
#58
|
|
Level 17 Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX |
Убить или удалить?
|
Jan 13 2007, 13:37
Сообщение
#59
|
|
Level 4 Класс: Некромант Характер: Chaotic Evil Раса: Нежить |
2 webkent:
Самое простое: NSS // Destroy oObject (irrevocably). // This will not work on modules and areas. void DestroyObject(object oDestroy, float fDelay=0.0f) Так же, можно ипользовать эффекты. Например дамага/смерти: NSS effect EffectDamage(int nDamageAmount, int nDamageType=DAMAGE_TYPE_MAGICAL, int nDamagePower=DAMAGE_POWER_NORMAL) NSS effect EffectDeath(int nSpectacularDeath=FALSE, int nDisplayFeedback=TRUE) Применяюцца, они с помощью функции: NSS ApplyEffectToObject. Ну либа ApplyEffectAtLocation; Сообщение отредактировал Waromon - Jan 13 2007, 13:38 |
Jan 13 2007, 15:47
Сообщение
#60
|
|
Level 2 Класс: Паладин Характер: Lawful Good Раса: Человек |
Подскажите кто знает как "ловить" (как эвент) момент, когда по игроку бьют?
Нужно для реализации durability на вещах. Исользование только On Hit Cast Spell : Unique на мэйн арморе не подходит. Вдруг игрок без армора будет бегать (IMG:style_emoticons/kolobok_light/smile.gif) Тогда шлем, перчи etc. не будут ломаться. Сообщение отредактировал Narruin - Jan 13 2007, 15:50 |
Jan 13 2007, 16:13
Сообщение
#61
|
|
Level 12 Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] |
Тогда используй On Hit Cast Spell : Unique на оружие.
Еще вариант: на харбите модуля понижать прочность экипировки всем игрокам, находящимся в бою. Не столь реалистично, зато куда менее требовательно к ресурсам, елси игроков много. |
Jan 13 2007, 17:19
Сообщение
#62
|
|
Level 2 Класс: Паладин Характер: Lawful Good Раса: Человек |
QUOTE(azathoth @ Jan 13 2007, 17:13) [snapback]102185[/snapback] Тогда используй On Hit Cast Spell : Unique на оружие. Еще вариант: на харбите модуля понижать прочность экипировки всем игрокам, находящимся в бою. Не столь реалистично, зато куда менее требовательно к ресурсам, елси игроков много. Вариант уже был рассмотрен. Мне нужно когда по игроку бьют, а не когда он бьет. На хартбите не хочу, хотя если припрет, то сделаю. |
Jan 13 2007, 17:42
Сообщение
#63
|
|
Level 19 Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] |
Посмотри систему Alternative Core, что лежит на сайте (тока он у меня чет не пашет второй день). На скока помню там отслеживается такой момент.
Тебе для шарда или сингла? Сообщение отредактировал -fenix- - Jan 13 2007, 17:44 |
Jan 14 2007, 02:17
Сообщение
#64
|
|
Level 2 Класс: Паладин Характер: Lawful Good Раса: Человек |
QUOTE(-fenix- @ Jan 13 2007, 18:42) [snapback]102190[/snapback] Посмотри систему Alternative Core, что лежит на сайте (тока он у меня чет не пашет второй день). На скока помню там отслеживается такой момент. Тебе для шарда или сингла? для pw |
Jan 14 2007, 19:54
Сообщение
#65
|
|
Level 3 Класс: Тайный Лучник Характер: Neutral Good Раса: Эльф NWN: Скриптинг [PW] |
Драсте. (IMG:style_emoticons/kolobok_light/smile.gif)
Инетересно, как в NWN2 с поддержкой баз данных для PW? Так же, как и в nwn, SetCampagin*, или добавили поддержку нормальных баз данных через какие-нибудь плагины? |
Jan 14 2007, 20:16
Сообщение
#66
|
|
Level 17 Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX |
QUOTE(Lazy Ranma @ Jan 14 2007, 19:54) [snapback]102270[/snapback] Драсте. (IMG:style_emoticons/kolobok_light/smile.gif) Инетересно, как в NWN2 с поддержкой баз данных для PW? Так же, как и в nwn, SetCampagin*, или добавили поддержку нормальных баз данных через какие-нибудь плагины? Всё то же самое, что и с NWN1, только поддержку сохранения объектов в MySQL ещё не успели прикрутить. Сообщение отредактировал virusman - Jan 14 2007, 20:17 |
Jan 28 2007, 11:56
Сообщение
#67
|
|
Level 2 Класс: Псионик Характер: True Neutral Раса: Рептилия |
И сново вопрос...
NSS AssignCommand(oPC,PlayAnimation(ANIMATION_LOOPING_MEDITATE,1.0f,60.0f)); почему продолжительность анимации - стандартная, а не 60 секунд? |
Jan 28 2007, 13:51
Сообщение
#68
|
|
Level 5 Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
возможно не так применяешь функцию, или в другом скрипте у тебя сбивается анимашка (например в хб). Вся LOOPING анимация проигрывается столько, сколько указывается.
зы: попробуй ActionPlayAnimation и если есть опасность чистки очереди, закрой стек команд. |
Jan 28 2007, 16:58
Сообщение
#69
|
|
Level 2 Класс: Псионик Характер: True Neutral Раса: Рептилия |
ActionPlayAnimation аналогично, в хб врятли... и она не сбивается а именно заканчивается
чтобы быть уверенным на 100% сделал новый модуль, в нем тригер, на он_ентер тригера простой скрипт NSS void main() { object oPC =GetEnteringObject(); AssignCommand(oPC,PlayAnimation(ANIMATION_LOOPING_MEDITATE,1.0f,60.0f)); } работает, но длительность стандартная... |
Jan 28 2007, 18:20
Сообщение
#70
|
|
Level 5 Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
проверил в Авроре - нормально все работает. В Обси проверить не могу сейчас, но если там и правда такой косяк, эт очень странно.
|
Feb 4 2007, 16:24
Сообщение
#71
|
|
Level 5 Класс: Друид Характер: Lawful Neutral Раса: Человек |
Столкнулся с проблемой, надо сделать управляемого хенча. В официальной компании используется функция AddRosterMemberToParty, но у меня не получается присоеденить при помощи нее кого-то. Может кто-то знает как их присоеденять?
|
Feb 4 2007, 20:31
Сообщение
#72
|
|
Level 12 Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] |
Сначала нужно добавить непись в ростер, например при помощи AddRosterMemberByTemplate.
Насчет длительности анимации: это корявость обсидиана (см. http://www.city-of-masters.ru/forums/index...?showtopic=4296). |
Feb 4 2007, 21:01
Сообщение
#73
|
|
Level 5 Класс: Друид Характер: Lawful Neutral Раса: Человек |
Спасибо, все получилось. (IMG:style_emoticons/kolobok_light/smile.gif)
|
Mar 2 2007, 20:01
Сообщение
#74
|
|
Level 5 Класс: Друид Характер: Lawful Neutral Раса: Человек |
У меня вопрос. Добавляю на onSpawn НПС строку
NSS ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectSleep(),OBJECT_SELF); Но при проверке, НПС продолжает стоять, как и стоял. Может я что то не правильно делаю? На 1 НВНе этот скрипт вроде работал. Сообщение отредактировал Milfes - Mar 2 2007, 20:02 |
Mar 4 2007, 16:38
Сообщение
#75
|
|
Level 2 Класс: Паладин Характер: Lawful Good Раса: Человек |
QUOTE(Milfes @ Mar 2 2007, 21:01) [snapback]105272[/snapback] У меня вопрос. Добавляю на onSpawn НПС строку NSS ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectSleep(),OBJECT_SELF); Но при проверке, НПС продолжает стоять, как и стоял. Может я что то не правильно делаю? На 1 НВНе этот скрипт вроде работал. Этот скрипт кидает кондишен сна на кричу, но не заставляет ее лечь на землю. Сообщение отредактировал Narruin - Mar 4 2007, 16:40 |
Текстовая версия | Сейчас: 10th November 2024 - 20:51 |