![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3226
|
|
Level 2 ![]() Класс: Оборотень Характер: Lawful Good Раса: Человек ![]() |
1. Чета искал, искал и не нашел, можно ли такую фичу сделать, чтоб NPC мог пользоваться определенным предметом (точнее даже свойством предмета - заклинанием с него, уникальные способности там всякие). Скриптово можно только найти талант у NPC в определенной категории (атака, защита, лечение, зелье; на всех, на себя, на кого-то одного), и заставить его использовать, но при этом не контролируется, что именно будет использовать NPC. Можно ли это как то явно указывать. Я чувствую, стандартными средствами этого не сделать, но может в nwnx реализовано?
Мне в частности нужно, чтобы после смерти PC его хенч пытался его воскресить жезлом или свитком. Заклинанием можно заставить, но ждать до 5 круга заклятий для хенча-клерика совсем не вариант, а у остальных даже и этого нет. 2. Можно ли заставить NPC-клерика читать исцеляющие заклинания, если он их не запоминал? Кажись для них самопроизвольное чтение не работает и GetHasSpell() вернет 0... (IMG:style_emoticons/kolobok_light/unsure.gif) Сообщение отредактировал Mingun - Mar 21 2010, 09:18 |
![]()
Сообщение
#3227
|
|
Level 2 ![]() Класс: Оборотень Характер: Lawful Good Раса: Человек ![]() |
Да, и еще. Кто объяснит мне, почему народ так активно юзает CopyObject/DeleteObject для предметов, а не TakeFrom...|GiveTo... ? Переместить ведь должно быть быстрее и идеологически более правильно, чем копирование и последующее удаление? (IMG:style_emoticons/kolobok_light/snoozer_17.gif) (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif)
|
![]()
Сообщение
#3228
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Neverwinter Script void main() { object oSelf = OBJECT_SELF; object oWp01 = GetNearestObjectByTag("WP1_"+ GetTag(OBJECT_SELF)) // какая проблема здесь? он нехочет компилить... пишет: // ОШИБКА: ПОТЕРЯ АНАЛИЗАТОРА ПЕРЕМЕННОЙ object oWp05 = GetNearestObjectByTag("WP5_"+ GetTag(OBJECT_SELF)) object oWpT01 = GetNearestObjectByTag("WP1_Tavern"+ GetTag(OBJECT_SELF)) //суть этого всего: обозначить теги точек для определенного нпс. //Он будет ходить просто по 5ти точкам(гулять), и будет заходить в таверну. object oWpT05 = GetNearestObjectByTag("WP5_Tavern"+ GetTag(OBJECT_SELF)) object oWpH01 = GetNearestObjectByTag("WP1_HOME"+ GetTag(OBJECT_SELF)) //5 точек, ведушие нпс к дому object oWpH05 = GetNearestObjectByTag("WP5_HOME"+ GetTag(OBJECT_SELF)) if(GetArea(GetFirstPC()) != GetArea(OBJECT_SELF)) return; int T = GetTimeHour(); if (T<7 && T>15) AssignCommand(oSelf, ActionForceMoveToObject(oWp01, TRUE, 4.0)); AssignCommand(oSelf, ActionWait(2.0)); AssignCommand(oSelf, ActionForceMoveToObject(oWp05, TRUE, 4.0)); AssignCommand(oSelf, ActionWait(2.0)); // Как сделать цикл? необходимо, чтобы эти действия // //производились циклически, пока идет время от 7 до 15ти// if (T<15 && T>21) AssignCommand(oSelf, ActionForceMoveToObject(oWpT01, TRUE, 4.0)); AssignCommand(oSelf, ActionWait(2.0)); AssignCommand(oSelf, ActionForceMoveToObject(oWpT05, TRUE, 4.0)); AssignCommand(oSelf, ActionWait(2.0)); ExecuteScript(sit_on_ch_tav) //когда нпс подойдет, он должен быдет сесть на стул. if(T<21 && T>7) AssignCommand(oSelf, ActionForceMoveToObject(oWpH01, TRUE, 4.0)); AssignCommand(oSelf, ActionWait(2.0)); AssignCommand(oSelf, ActionForceMoveToObject(oWpH05, TRUE, 4.0)); AssignCommand(oSelf, ActionWait(2.0)); ExecuteScript(1sleep)//когда настанет ночь, нпс пойдет домой и ляжет спать я немного ужал этот скрипт, убрал повторяюшиеся действия, типа: object oWp01 = GetNearestObjectByTag("WP1_"+ GetTag(OBJECT_SELF)) Мне нужно чтобы этот скрипт работал, и оживил немножко моих нпс-селян. а то они ходят как зомби, или тупо стоят... както нетак=) PS Все вопросы внесены в сам скрипт |
![]()
Сообщение
#3229
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Ошибку выдает т.к. нет точки с запятой после сроки кода. А вот сам скрипт врятли тебе кто напишет... Могу порекомендовать тебе мой мануал по созданию скриптов НПС стоящих в ХБ слоте.
http://remmgen.narod.ru/tscript3.html#SC_HB Сообщение отредактировал gennady - Sep 4 2010, 16:26 |
![]()
Сообщение
#3230
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата 1. Чета искал, искал и не нашел, можно ли такую фичу сделать, чтоб NPC мог пользоваться определенным предметом (точнее даже свойством предмета - заклинанием с него, уникальные способности там всякие). Скриптово можно только найти талант у NPC в определенной категории (атака, защита, лечение, зелье; на всех, на себя, на кого-то одного), и заставить его использовать, но при этом не контролируется, что именно будет использовать NPC. Можно ли это как то явно указывать. Я чувствую, стандартными средствами этого не сделать, но может в nwnx реализовано? Да, в NWNX реализовано, плагин Funcs.Цитата 2. Можно ли заставить NPC-клерика читать исцеляющие заклинания, если он их не запоминал? Кажись для них самопроизвольное чтение не работает и GetHasSpell() вернет 0... Кусок кода из джасперовсого АИ:Neverwinter Script int AI_ActionCastSpontaeousSpell(int iSpellID, int nTalent, object oTarget) Насколько я понимаю, GetHasSpell() прекрасно работает, единственный момент - заставить непися кастить спелл, даже если у него его нет (IMG:style_emoticons/kolobok_light/smile.gif)
{ if(nTalent > i0 && GetHasSpell(iSpellID) && GetObjectSeen(oTarget)) { // Note: Not stored or used in time stop // 8: "[DCR: Casting] Workaround for Spontaeous [SpellID] " + IntToString(iSpellID) + " [Target] " + GetName(oTarget) DebugActionSpeakByInt(8, oTarget, iSpellID); // Equip the best shield we have AI_EquipBestShield(); // Decrement the spell being cast by one as we cheat cast it DecrementRemainingSpellUses(OBJECT_SELF, iSpellID); // Cheat cast, it'll remove inflict wounds if it is an inflict spell anyway. ActionCastSpellAtObject(iSpellID, oTarget, METAMAGIC_NONE, TRUE); return TRUE; } return FALSE; } Сообщение отредактировал Ilerien - Mar 21 2010, 13:57 |
![]()
Сообщение
#3231
|
|
Level 2 ![]() Класс: Оборотень Характер: Lawful Good Раса: Человек ![]() |
Насколько я понимаю, GetHasSpell() прекрасно работает, единственный момент - заставить непися кастить спелл, даже если у него его нет (IMG:style_emoticons/kolobok_light/smile.gif) Это то я понимаю, что работает функция как положено для заклинаний. Мне непонятно, почему у нее нет отдельного возвращаемого значения для заклинаний исцеления клериков, и приходится вручную реализовывать им спонтанное чтение. Да. Воистину неисповедимы пути биотварей... (IMG:style_emoticons/kolobok_light/biggrin.gif) А как заставить NPC скастовать то, чего у него нет, я знаю (IMG:style_emoticons/kolobok_light/prankster2.gif) Да, в NWNX реализовано, плагин Funcs. Можно чуток поконкретней? Что то я там такого не видел... может плохо смотрел? В смысле какая функция? Уже нашел. что то у них на сайте как то плохо описаны возможности, а в скрипте все есть (IMG:style_emoticons/kolobok_light/smile.gif) Хотя нет, радость преждевременна. Где сам то плагин funcs??? На nwnx.org его нет. Есть только Functions, а это, как я понимаю. не одно и тоже (IMG:style_emoticons/kolobok_light/bb.gif) Сообщение отредактировал Mingun - Mar 22 2010, 10:21 |
![]()
Сообщение
#3232
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Где сам то плагин funcs??? На nwnx.org его нет. Есть только Functions, а это, как я понимаю. не одно и тоже Funcs на SVN virusman'a
|
![]()
Сообщение
#3233
|
|
Level 2 ![]() Класс: Оборотень Характер: Lawful Good Раса: Человек ![]() |
Спасибо! Жалко, под винду нету (IMG:style_emoticons/kolobok_light/smile.gif) Придется поколдовать (IMG:style_emoticons/kolobok_light/biggrin.gif)
|
![]()
Сообщение
#3234
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Ну, убунта в виртуалке (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#3235
|
|
Level 2 ![]() Класс: Оборотень Характер: Lawful Good Раса: Человек ![]() |
Ну, убунта в виртуалке (IMG:style_emoticons/kolobok_light/smile.gif) Не-е-е, так не пойдет. Я ж не могу заставить игрока в мой модуль запускать невер в виртуалке (IMG:style_emoticons/kolobok_light/biggrin.gif) |
![]()
Сообщение
#3236
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Поскольку это моя функция, в Functions она тоже есть.
Один человек недавно начал портировать Funcs на винду: http://www.nwnx.org/phpBB2/viewtopic.php?t=1535 Можешь попросить его сделать эту функцию. |
![]()
Сообщение
#3237
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Не-е-е, так не пойдет. Я ж не могу заставить игрока в мой модуль запускать невер в виртуалке biggrin.gif (IMG:style_emoticons/kolobok_light/offtopic.gif) эммм... Если ты делаешь шард, то под чем сидит игрок тебя не будет интересовать, а если сингл: я что-то пропустил, или сделали нвнх под сингл? |
![]()
Сообщение
#3238
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
(IMG:style_emoticons/kolobok_light/offtopic.gif) эммм... Если ты делаешь шард, то под чем сидит игрок тебя не будет интересовать, а если сингл: я что-то пропустил, или сделали нвнх под сингл? Сделали.http://www.nwnx.org/phpBB2/viewtopic.php?t=1263 |
![]()
Сообщение
#3239
|
|
Level 2 ![]() Класс: Оборотень Характер: Lawful Good Раса: Человек ![]() |
Разве NWNX только для сервера? Мне казалось, что он и в клиентском невере может работать. Хотя.. с другой стороны, exe-шника я в ядре NWNX не видел, только dll.
А делаю я сингл. Просто мне хочется, чтобы хенчи могли воскрешать игрока после смерти, а для этого им надо уметь пользоваться палочками и свиточками воскрешения (в идеале - любым предметом, могущим возвращать к жизни). Типа придать им осмысленную деятельность при наличии возможностей (IMG:style_emoticons/kolobok_light/smile.gif) .Ну, а так как это стандартными средствами невозможно, пришлось обратится к не совсем стандартным (IMG:style_emoticons/kolobok_light/biggrin.gif) . Вообщем, спасибо, что просветили (IMG:style_emoticons/kolobok_light/rolleyes.gif) (IMG:style_emoticons/kolobok_light/offtopic.gif) Да, а чем различаются Funcs и Functions? Вроде многие функции у них совершенно аналогичные (IMG:style_emoticons/kolobok_light/unsure.gif) |
![]()
Сообщение
#3240
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
В общем, можешь использовать файлы из раздела Client Extender Downloads тут:
http://www.nwnx.org/index.php?id=nwnx2 Но учти, что тогда при распространении модуля тебе нужно будет включать NWNCX в его состав и объяснить пользователям, как запускать NWNCX. Functions - изначально плагин с разными функциями. Funcs - почти то же самое, но ещё со множеством дополнительных функций, касающихся игромеханики. Правда, иногда бывает, что в Functions что-то появляется, а в Funcs - ещё нет. |
![]()
Сообщение
#3241
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Я нигде не нашел, как проверять, какой уровень моего персонажа. Мне нужно, чтобы диалог с одним персонажем проходил следуюшим образом: Сначала он дает мне задание на ковку меча, и на тренеровку моих навыков, а потом на 3ем уровне он просит меня разобраться с ограми.
Мастер скриптов неправильно пишет мне скрипт, или просто не работает... |
![]()
Сообщение
#3242
|
|
Level 2 ![]() Класс: Оборотень Характер: Lawful Good Раса: Человек ![]() |
Помоему функция
Neverwinter Script // Получает число броска хитов (hitdice) для oCreature, что является его уровнем. // * Возвращаемое значение, если oCreature - невалидное существо: 0 int GetHitDice(object oCreature); Комментарии мои, сам я ею не пользовался и как то дело не доходило, чтобы проверить, чтоже она возвращает, но по слухам вроде оно |
![]()
Сообщение
#3243
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Ладно, вроди сделал пальцем скрипт, и боевая задача была решена=)
Но теперь новая проблема: я ненашел в базе скриптов следующего: НПС подходит и начинает разговор. Чтото помню, было такое... но невспомню, где видел... А такая фишка нужна мне уже в 2х местах... Сообщение отредактировал GoOfs - Mar 31 2010, 18:49 |
![]()
Сообщение
#3244
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Влей мой модуль ПВ, там куча стандартных триггеров и скриптов в палитре, с описанием. Почитай и попробуй. На них работает весь модуль.
|
![]()
Сообщение
#3245
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Aiwan, благодарю! Думаю это привнесет в мой мод немного большее, чем я жду от ХотУ и СОУ. Я достаточно долго искал Хакпаки для нвн, и наконец то их нашел. А есть ли еще другие паки? Ну чтобы выбор был побольше.
|
![]()
Сообщение
#3246
|
|
Level 18 ![]() Класс: Страж Тьмы Характер: True Neutral Раса: Человек МАСТЕР D&D ![]() |
GoOfs, на nwvault.ign.com, правда все на английском.
|
![]()
Сообщение
#3247
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Neverwinter Script void main() { object oWP = GetNearestObjectByTag("Point_"+GetTag(OBJECT_SELF)); object oPC = GetFirstPC(); object oSelf = OBJECT_SELF; int iFIRST_TIME = GetLocalInt (oSelf, "FIRST_TIME"); if (iFIRST_TIME = 1) { AssignCommand(oSelf, ActionMoveToObject(oPC, TRUE, 0.1)); AssignCommand(oSelf, ActionStartConversation(oPC, "111", FALSE, FALSE)); AssignCommand(oSelf, ActionWait(15.0)); SetLocalInt (oSelf,"FIRS_TIME", 0); } else { AssignCommand(oSelf, ActionMoveToObject(oWP, TRUE, 0.1)); } } Скрипт должен: 1)отправить НПС к игроку 2)начать диалог с игроком 3)уйти на точку и стоять там, ожидая возвращения игрока. Вроди и работает скрипт, но собака, нехочет 2ую часть выполнять(та что после else)... В чем проблема? Как её решить? Может какието конфликты с слотом OnPerception?.. Уже 2ой день маюсь, бьюсь над этим скриптом, все никак не выходит... Сообщение отредактировал GoOfs - Apr 5 2010, 18:21 |
![]()
Сообщение
#3248
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Надо
Neverwinter Script if (iFIRST_TIME == 1) То, что написал ты - это присваивание, оно всегда возвращает 1.
Сообщение отредактировал Ilerien - Apr 5 2010, 18:45 |
![]()
Сообщение
#3249
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Ilerien, благодарю, без этого бесспорно мой скрипт бы и не заработал. проверял=)
Но я сам нашел ошибку. Это была банальная опечатка. --- Еще один такой вопрос: как непися отправить в тартарары, или просто убить. Моя задача сейчас Отправить непися к игроку. Поговорив с неписем, последний должен уйти и либо умереть и воскреснуть в близлежащей таверне, либо портануться в ту же таверну. Сообщение отредактировал GoOfs - Apr 7 2010, 16:17 |
![]()
Сообщение
#3250
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
на слот end conversation (слот этот ищи в диалоге, там в одной из закладок справа внизу) ставь скрипт с телепортом игрока.
|
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 01:13 |