![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2376
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Ой, перепутал GetIsPC и GetIsDM. (IMG:style_emoticons/kolobok_light/smile.gif)
OnClientEnter/OnClientLeave всегда срабатывают только на игроках. Дополнительные проверки тут не нужны. |
![]() ![]()
Сообщение
#2377
|
|
Level 3 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
Здраствуйте всем вам. Уезжал на долго не создавал. Весь опыт потерял набираю заново. Как сделать что когда игрок наступает на Триггер на него кастуется 5 заклинаний. Лечение, защита, сила, и еще чтонибудь на ваш вкус только не навороченное. (IMG:style_emoticons/kolobok_light/nea.gif)
|
![]()
Сообщение
#2378
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
На onEnter, триггера:
NSS void main()
{ object oPC = GetEnteringObject(); effect eHeal = EffectHeal(GetMaxHitPoints(oPC)); effect eStrength = EffectAbilityIncrease(ABILITY_STRENGTH,1); effect eAC = EffectACIncrease(1); // Остальные эффекты добавишь сам, ищи в фильтре Effect* if (!GetIsPC(oPC)) return; if (GetCurrentHitPoints(oPC) != GetMaxHitPoints(oPC)) { ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oPC); } ApplyEffectToObject(DURATION_TYPE_PERMANENT, eStrength, oPC); // Сила повышается на 1. Бесконечно. ApplyEffectToObject(DURATION_TYPE_PERMANENT, eAC, oPC); // AC повышается на 1. Бесконечно. DestroyObject(OBJECT_SELF, 0.4); // Удали строку если не нужно чтобы скрипт срабатывал 1 раз. } Сообщение отредактировал Dik Morris - Jul 7 2006, 15:44 |
![]()
Сообщение
#2379
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Chaotic Neutral Раса: Полуэльф ![]() |
Здрв!Нужен ответ.Как добавить в имя вещи слово,т.Е. Если был "топор" то сделать его "топор хлада" с помощью скрипта.Заране спасибо!%:-)
|
![]()
Сообщение
#2380
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
SetName(oItem, GetName(oItem)+" of Cold");
|
![]()
Сообщение
#2381
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Chaotic Neutral Раса: Полуэльф ![]() |
Спасибо,друг virusman!Ты продвинул мою работу на сто,нет на тысячу стае!Еще раз сенкс!
|
![]()
Сообщение
#2382
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Хотел уточнить что данная фун-ция, появляется только в версии 1.67. (IMG:style_emoticons/kolobok_light/wink3.gif)
Сообщение отредактировал Dik Morris - Jul 8 2006, 12:04 |
![]()
Сообщение
#2383
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Кстати, с помощью этой функции можно делать индивидуальные вещи. Т.е. вначале сохранять в строковую переменную название вещи, а уж потом менять в момент создания.
|
![]()
Сообщение
#2384
|
|
Level 3 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
Скажите как сделать чтобы при слове "далее" персонаж перемещался к указаному НПС. Тоесть.
ПОдоходит к капитану на одномо острове. -Переправь меня на другой остров. - не прооблема давай. -далее. и персонаж оказывается возле НПС капитана на другом острове. |
![]()
Сообщение
#2385
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
DarkDeivel, подобные ситуации разбираются очень часто, используй поиск.
Нашел, меньше чем за полминуты. Читать. Сообщение отредактировал Dik Morris - Jul 8 2006, 21:34 |
![]()
Сообщение
#2386
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Chaotic Neutral Раса: Полуэльф ![]() |
QUOTE(DarkDeivel @ Jul 8 2006, 21:20) [snapback]87410[/snapback] Скажите как сделать чтобы при слове "далее" персонаж перемещался к указаному НПС. Тоесть. ПОдоходит к капитану на одномо острове. -Переправь меня на другой остров.Заранее установи точку прыжка(оwp). - не прооблема давай. -далее. Здесь добавь скрипт:assigncommand(oPC,actionjumptoobject(oWp)); и персонаж(oPC) оказывается возле НПС капитана на другом острове(тут wp). |
![]() ![]()
Сообщение
#2387
|
|
Level 3 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
QUOTE(Dik Morris @ Jul 8 2006, 21:34) [snapback]87413[/snapback] DarkDeivel, подобные ситуации разбираются очень часто, используй поиск. Нашел, меньше чем за полминуты. Читать. Все нашле СпС. |
![]()
Сообщение
#2388
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Я вот недавно сел за Тулсет. и вот.
как сделать чтобы появилось строчка в диалоге при наличии 20 Animal Bone(в рюкзаке). |
![]()
Сообщение
#2389
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Cтавишь у нужной строки на Text Appears When... скрипт типа такого:
NSS int Match(a, с) { return (a == с); } int GetNumItemsInInventory(object oInventory = OBJECT_SELF, string sTag = "*") { int nNum = 0; object oItem = GetFirstItemInInventory(oInventory); while (GetIsObjectValid(oItem)) { if (Match(GetTag(oItem), sTag)) { nNum += GetItemStackSize(oItem); } oItem = GetNextItemInInventory(oInventory); } return nNum; } int StartingConditional() { object oPC = GetPCSpeaker(); int n = GetNumItemsInInventory(oPC, "ТЭГ_ЭТОЙ_САМОЙ_КОСТИ"); return (n >= 20); } По-моему этот вопрос разбирали в этой теме уже несколько раз, ты наверняка наткнулся бы на ответ пролистав тему (а заодно и на множество других крайне полезных вещей) и соседние, что настоятельно советую перед тем как спрашивать: "ух-хух, а как забрать 20 костей?". ---- P.S. Глюка (IMG:style_emoticons/kolobok_light/smile.gif) пишу: int Match(a, в); выдает: int Match(a, (IMG:style_emoticons/kolobok_light/dirol.gif) ; Сообщение отредактировал azathoth - Jul 9 2006, 03:09 |
![]()
Сообщение
#2390
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Да, там смайлы не парсятся, точнее парсятся... Как лечить я хз (IMG:style_emoticons/kolobok_light/pardon.gif)
|
![]() ![]()
Сообщение
#2391
|
|
Level 3 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
QUOTE(Dik Morris @ Jul 7 2006, 15:30) [snapback]87334[/snapback] На onEnter, триггера: NSS void main() { object oPC = GetEnteringObject(); effect eHeal = EffectHeal(GetMaxHitPoints(oPC)); effect eStrength = EffectAbilityIncrease(ABILITY_STRENGTH,1); effect eAC = EffectACIncrease(1); // Остальные эффекты добавишь сам, ищи в фильтре Effect* if (!GetIsPC(oPC)) return; if (GetCurrentHitPoints(oPC) != GetMaxHitPoints(oPC)) { ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oPC); } ApplyEffectToObject(DURATION_TYPE_PERMANENT, eStrength, oPC); // Сила повышается на 1. Бесконечно. ApplyEffectToObject(DURATION_TYPE_PERMANENT, eAC, oPC); // AC повышается на 1. Бесконечно. DestroyObject(OBJECT_SELF, 0.4); // Удали строку если не нужно чтобы скрипт срабатывал 1 раз. } Слухай у меня все работает. А как сделать к этому еще визуальные эффекты?? |
![]()
Сообщение
#2392
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
С помощью 2 фун-ций:
NSS // 1: // Apply eEffect to oTarget. void ApplyEffectToObject(int nDurationType, effect eEffect, object oTarget, float fDuration=0.0f) // 2: // * Create a Visual Effect that can be applied to an object. // - nVisualEffectId // - nMissEffect: if this is TRUE, a random vector near or past the target will // be generated, on which to play the effect effect EffectVisualEffect(int nVisualEffectId, int nMissEffect=FALSE) // + констант: DURATION_TYPE_INSTANT ; DURATION_TYPE_PERMANENT ; DURATION_TYPE_TEMPORARY. Константы, виз. эффектов начинаются с VFX_* (Рисунки см. в Лексиконе) PS: Т.е получится, например так: NSS ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_M), oPC);
Сообщение отредактировал Dik Morris - Jul 9 2006, 12:04 |
![]()
Сообщение
#2393
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Лучше всего залинковать эффекты бонусов с визуальными эффектами (см. скрипт любого спелла).
|
![]() ![]()
Сообщение
#2394
|
|
Level 3 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
QUOTE(Dik Morris @ Jul 9 2006, 12:00) [snapback]87436[/snapback] С помощью 2 фун-ций: NSS // 1: // Apply eEffect to oTarget. void ApplyEffectToObject(int nDurationType, effect eEffect, object oTarget, float fDuration=0.0f) // 2: // * Create a Visual Effect that can be applied to an object. // - nVisualEffectId // - nMissEffect: if this is TRUE, a random vector near or past the target will // be generated, on which to play the effect effect EffectVisualEffect(int nVisualEffectId, int nMissEffect=FALSE) // + констант: DURATION_TYPE_INSTANT ; DURATION_TYPE_PERMANENT ; DURATION_TYPE_TEMPORARY. Константы, виз. эффектов начинаются с VFX_* (Рисунки см. в Лексиконе) PS: Т.е получится, например так: NSS ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_M), oPC); Понятно ща попробую. (IMG:style_emoticons/kolobok_light/declare.gif) Aiwan: слушай, у нас не форум розовых дневничков, где спамят лишь бы постов набрать. Больше такого содержательного постинга что бы не было. Устный пред. Сообщение отредактировал Aiwan - Jul 9 2006, 17:45 |
![]()
Сообщение
#2395
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Chaotic Neutral Раса: Полуэльф ![]() |
Всем mass heal & level up!:)*как мне организовать скрипт на он персепт нпс чтобы он брал мои деиствия и реагировал.Например если он видит что рс в режиме parry,то он отбегает и лечиться!Ответ очень нужен!
|
![]()
Сообщение
#2396
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Noah, простой скрипт, взята функция "Талента" лечения из инклуда "x0_i0_talent":
NSS if (GetActionMode(oPercep, ACTION_MODE_PARRY) == TRUE) { if (TalentHealingSelf()) { // Подлечиться; } } Чтобы заработал скрипт, необходимо добавить в инвентарь противника бутылки лечения. Сработает, когда у противника жизни станет меньше половины полной жизни, а напавший войдет в режим парирования. All Всем, кто программирует, известен цикл "for", позволяющий сделать счетчик из числа, границы которого для Вот сложения, вычитания, и т.д., описываются в шапке цикла. Есть универсальный цикл для снятия вещей с персонажа: NSS for (i = 0; i < NUM_INVENTORY_SLOTS; i++) { oItem = GetItemInSlot(i, oPC); if (GetIsObjectValid(oItem)) AssignCommand(oPC, ActionUnequipItem(oItem)); } Сам цикл работает без проблем, к нему претензий нет, но не срабатывает при каждом новом проходе функция, ради который весь цикл и создавался, "ActionUnequipItem" (выполняется только 4 раза). Экспериментальным путем удалось установить, что в стэке может одновременно находиться лишь 4 действия. Т.е., если эти действия еще не выполнились, то все последующие окажутся вне стэка, и соответственно, не выполнятся. Что же делать? Ведь данный цикл раньше работал отлично. Тогда я решил немного перехитрить скрипт, заставив цикл выполняться не 1 раз, а 4 раза. Как бы проверяя, а точно ли все вещи сняты?! В итоге получилось следующее: NSS void TakeItemsFromPC(object oPC) { int k = GetLocalInt(oPC, "DropThings"); if (k > 3) { DeleteLocalInt(oPC, "DropThings"); AssignCommand(oPC, ClearAllActions()); return; } int i; object oItem; for (i = 0; i < 14; i++) { oItem = GetItemInSlot(i, oPC); if (GetIsObjectValid(oItem)) { AssignCommand(oPC, ActionUnequipItem(oItem)); } } SetLocalInt(oPC, "DropThings", ++k); DelayCommand(0.2, TakeItemsFromPC(oPC)); } void main() { TakeItemsFromPC(GetPCSpeaker()); } Не уверен, что это лучшее решение, но вещи снимаются все, правда не за 1 цикл. У меня возник вопрос, можно ли как-нибудь эту операцию осуществить иначе? Сообщение отредактировал Zirrex - Jul 12 2006, 00:56 |
![]()
Сообщение
#2397
|
|
Level 5 ![]() ![]() Класс: Убийца Характер: Chaotic Neutral Раса: Полуэльф ![]() |
Спасиб,Zirrex!1.B скриптах для новичков Айван приводил подобный скрипт,глянь.2.Как скриптом добавить крылья,хвост или костяну руку?Иль отобрать!Или это только через 2dа?
|
![]()
Сообщение
#2398
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
В стеке может находиться достаточно много действий, чтобы забыть об их количестве, если дело не касается катсценок, попробуй очистить стэк существа перед перебором.
По другому - копировать вещи CopyItem'ом в инвернтарь существа, а из слотов - удалять. Действия - побоку. |
![]()
Сообщение
#2399
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Вообще в стеке может быть 75 действий. Просто сам скрипт может в одном из блоков очищать акции. РС надо время на то что бы снять предмет. Попробуй накидать акций, повесить на каждую задержку в полсекунды и закройстек РС.
|
![]()
Сообщение
#2400
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE(Noah @ Jul 12 2006, 05:43) [snapback]87624[/snapback] 2.Как скриптом добавить крылья,хвост или костяну руку?Иль отобрать!Или это только через 2dа? Читать эту ссылку. От себя, как известно такие свойства появляются на эпическом уровне, у определенных классов, (например, светящиеся глаза, у монаха) значит попробуй добавить NPC несколько лишних уровней. |
![]() ![]() |
Текстовая версия | Сейчас: 16th June 2025 - 21:47 |