![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3676
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
Нужны walkable тайловые кровати (IMG:style_emoticons/kolobok_light/smile.gif) А сами тайлы при этом стандартные или тоже из хака? |
![]()
Сообщение
#3677
|
|
Level 3 ![]() Класс: Псионик Характер: Neutral Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Там может и есть все (много чего через поиск нашел), но вот ответа на вопрос, как сделать развитвления, я так и не получил.
Сделал, все, как в описании, "мастеру" - номера строк "под-спеллов", а "под-спеллам" номер строки с мастером. В итоге получил 4 спелла, вместо одного. |
![]()
Сообщение
#3678
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата А сами тайлы при этом стандартные или тоже из хака? Из хака.
|
![]()
Сообщение
#3679
|
|
Level 3 ![]() Класс: Обыватель Характер: Neutral Good Раса: Человек ![]() |
Скрипт для триггера: Neverwinter Script void main() { object oPC = GetEnteringObject(); object oHench = GetHenchman(oPC); if(GetIsObjectValid(oHench) && GetIsPC(oPC)) { AssignCommand(oHench, SpeakString("<слова хенча>")); DelayCommand(0.5f, AssignCommand(oPC, SpeakString("<слова игрока>"))); } } Интересно, что когда с одним хенчем идешь, скрипт срабатывает и все ок, а вот если возьмешь двоих, молчат как рыбы. Где и как там приписать про то, чтобы говорил первый из хенчей? На заход в модуль. Что с игроком произойдёт - это нужно вписать в блок. Вот спасиб огромный!!!! Не хотелось как-то зверствовать и убивать героя прямо сразу. Тока вот как быть, если на EnterModule уже стоит какое-то условие? Как безболезненно соединять скрипты? |
![]()
Сообщение
#3680
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Тока вот как быть, если на EnterModule уже стоит какое-то условие? Как безболезненно соединять скрипты? Этот блок кинуть перед закрывающей скобкой функции main. Например.Цитата Интересно, что когда с одним хенчем идешь, скрипт срабатывает и все ок, а вот если возьмешь двоих, молчат как рыбы. Где и как там приписать про то, чтобы говорил первый из хенчей? По идее там первый болтать и должен в любом случае. Припиши после описания переменныхNeverwinter Script SendMessageToPC(oPC, GetName(oHench)); , это выведет в лог игроку имя первого хенча.
|
![]()
Сообщение
#3681
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Там с хенчами какая-то хитрож... хитрость (IMG:style_emoticons/kolobok_light/smile.gif) Мел делала возможность присоединения нескольких хенчей, но забила. Если я не ошибаюсь, там постоянно их ид (номера) сбиваются и кажется даже идут не по порядку после нескольких присоединений/разделений. Т.е. имеем 2 хенча, делаем цикл ид от 1 до 2 и получаем OBJECT_INVALID два раза.
В общем, в граблях не уверен, но то, что мы их встретили - 100%. P.S. А еще был такой замечательный модуль по сеттингу DragonLance, там хенчей штуки 3-4 было. Ух как они глючили... |
![]()
Сообщение
#3682
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
P.S. А еще был такой замечательный модуль по сеттингу DragonLance, там хенчей штуки 3-4 было. Ух как они глючили... А КАК они глючили? Ну, чтобы быть готовым к тому, что они могут выкинуть=) (а если помимо хенчей еще их и свои фамильяры и др. зверюшки? Это ж вовсе жуть=)) |
![]()
Сообщение
#3683
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Цитата А КАК они глючили? Ну, чтобы быть готовым к тому, что они могут выкинуть=) Дело было давно и неправда, года 4 назад (IMG:style_emoticons/kolobok_light/smile.gif) Так что помню смутно.Например, иногда они не слушались команд, теряли статус хенча (правый клик не показывал меню хенча, хотя они были в пати), ко всему этому они как любая компьютерная болванка ужасно тупили. Когда хенч один, он тупит как один, когда их 5 - этот зоопарк тупит в 5 раз сильнее (IMG:style_emoticons/kolobok_light/smile.gif) Я себя всегда представлял мамой-мартышкой из одного старого отечественного мультика. А когда кто-то из них умирал... Это словами не передать (IMG:style_emoticons/kolobok_light/smile.gif) Частые сейв-лоад как раз по-моему меняли их местами в пати и иногда ломали меню. Все имхо из-за того, что множественные хенчи были добавлены в хоту через какой-то костыль. Изначально нвн под это не приспособлен. |
![]()
Сообщение
#3684
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Попробуйте
Neverwinter Script object oHench = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1 или 2);
|
![]()
Сообщение
#3685
|
|
Level 3 ![]() Класс: Обыватель Характер: Neutral Good Раса: Человек ![]() |
Этот блок кинуть перед закрывающей скобкой функции main. Например.По идее там первый болтать и должен в любом случае. Припиши после описания переменных Neverwinter Script SendMessageToPC(oPC, GetName(oHench)); , это выведет в лог игроку имя первого хенча.Так вот не говорят они, ни один, ни другой. Как будто триггер не срабатывает вообще(IMG:style_emoticons/kolobok_light/sad.gif) Попробуйте Neverwinter Script object oHench = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, 1 или 2); А эту строку куда вставить? До функции в самое начало? |
![]()
Сообщение
#3686
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Neverwinter Script void main()
{ object oPC = GetEnteringObject(); object oHench = GetHenchman(oPC); if(GetIsObjectValid(oHench) && GetIsPC(oPC)) { AssignCommand(oHench, SpeakString("<слова хенча>")); DelayCommand(0.5f, AssignCommand(oPC, SpeakString("<слова игрока>"))); } //Дебаг: выведет имена хенчей от 1 до 20 (чтоб уж наверняка) в лог игроку, можно поэкспериментировать с этой штукой, юзая сейв/лоад и всё такое int i; for(i = 1; i <= 20; i++) SendMessageToPC(oPC, "Henchman №" + IntToString(i) + ": " + GetName(GetHenchman(oPC, i))); } Сообщение отредактировал Ilerien - Jun 18 2008, 16:42 |
![]()
Сообщение
#3687
|
|
Level 3 ![]() Класс: Обыватель Характер: Neutral Good Раса: Человек ![]() |
Neverwinter Script //Дебаг: выведет имена хенчей от 1 до 20 (чтоб уж наверняка) в лог игроку, можно поэкспериментировать с этой штукой, юзая сейв/лоад и всё такое Ну что ж, поэкспериментируем! Только вот где взять 20 хенчей? Их всего-то 14, и то не весь же зоопарк сразу нанимать=))))) Вот еще одна фиговина. Мы не можем понять, почему визуальный эффект не проявляется никак? Neverwinter Script object oPlayer = GetPCSpeaker(); void main() { DestroyObject(OBJECT_SELF); { object oBoss1 = CreateObject(OBJECT_TYPE_CREATURE, "alienhunter", GetLocation(GetNearestObjectByTag("WP_alienhunter"))); DelayCommand(1.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectV isualEffect(VFX_FNF_ELECTRIC_EXPLOSION),oBoss1)); DelayCommand(1.3,ActionDoCommand(SetFacingPoint(GetPosition(oPlaye r)))); DelayCommand(1.5,AssignCommand(oBoss1,SetFacingPoint(GetPosition(OBJECT_SELF)))); } } Там один объект исчезает, на его месте возникает другой. Должен бы с эффектом, но он просто вылазит и все! А ПС вообще на него внимания не обращает. Чем ему этот новый объект не нравится, не поймем. Помогите, плиз! |
![]()
Сообщение
#3688
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Ну что ж, поэкспериментируем! Только вот где взять 20 хенчей? Их всего-то 14, и то не весь же зоопарк сразу нанимать=))))) Да не важно, сколько их будет, эта штука отловит номер каждого хенча (IMG:style_emoticons/kolobok_light/smile.gif) Цитата Должен бы с эффектом, но он просто вылазит и все! Neverwinter Script void main() { DestroyObject(OBJECT_SELF); object oPlayer = GetPCSpeaker(); object oBoss1 = CreateObject(OBJECT_TYPE_CREATURE, "alienhunter", GetLocation(GetNearestObjectByTag("WP_alienhunter"))); DelayCommand(1.0, AssignCommand(GetModule(), ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectV isualEffect(VFX_FNF_ELECTRIC_EXPLOSION),oBoss1))); DelayCommand(1.3, ActionDoCommand(SetFacingPoint(GetPosition(oPlaye r)))); // не понял смысла этой строчки (IMG:style_emoticons/kolobok_light/smile.gif) DelayCommand(1.5, AssignCommand(oBoss1, SetFacingPoint(GetPosition(OBJECT_SELF)))); // и этой тоже... } Что мы сделали? Перекинули заделеенные команды на модуль. В старом варианте объект убивался, а после этого через некоторое время он пытался выполнить функцию ApplyEffectToObject. Любая скриптовая команда выполняется определённым объектом, а когда этого объекта в природе уже нет, команда не выполняется. Сообщение отредактировал Ilerien - Jun 18 2008, 22:40 |
![]()
Сообщение
#3689
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
GetAssociate() мы и пробовали. GetHenchman() скорее всего просто морда к GetAssociate(), смысла нет разводить зоопарк одинаковых функций в движке. Жаль хистори крякнулась после очередного отключения света, нашел бы логи (IMG:style_emoticons/kolobok_light/smile.gif)
Кстати, тот эксперимент надо проводить и сразу после взятия хенчей, и после пары операций удаления-взятия. |
![]()
Сообщение
#3690
|
|
Level 3 ![]() Класс: Обыватель Характер: Neutral Good Раса: Человек ![]() |
Да не важно, сколько их будет, эта штука отловит номер каждого хенча (IMG:style_emoticons/kolobok_light/smile.gif) Neverwinter Script void main() { ... DelayCommand(1.3, ActionDoCommand(SetFacingPoint(GetPosition(oPlaye r)))); // не понял смысла этой строчки (IMG:style_emoticons/kolobok_light/smile.gif) DelayCommand(1.5, AssignCommand(oBoss1, SetFacingPoint(GetPosition(OBJECT_SELF)))); // и этой тоже... } Что мы сделали? Перекинули заделеенные команды на модуль. В старом варианте объект убивался, а после этого через некоторое время он пытался выполнить функцию ApplyEffectToObject. Любая скриптовая команда выполняется определённым объектом, а когда этого объекта в природе уже нет, команда не выполняется. Смысел этих двух строчек в том, что игрок и объект новый отворачиваются друг от друга, а надо чтобы лицом к лицу (точнее лицом к морде=)))). Если на новоявленный объект строка срабатывает, то вот РС-зараза заканчивает диалог с предыдущим существом, а потом поворачивается боком или спиной (в зависимости от своего желания видимо) к новому объекту. А за объяснения про то, что скрипт относится к старому объекту - спасибо! Были подозрения на этот счет, но мы не поняли, как поменять тогда. Теперь пойдем пробовать=))))) |
![]()
Сообщение
#3691
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Что мы сделали? Перекинули заделеенные команды на модуль. В старом варианте объект убивался, а после этого через некоторое время он пытался выполнить функцию ApplyEffectToObject. Ой-ли! Чтобы перекинуть команды на модуль, нужно пробить сразу ассинг, а потом только делай... Иначе Делай остается за объектом сельф... Второй нюанс. Если кидаешь вектор поворота на модуль, то GetPosition(OBJECT_SELF) чез 1.5 секунд уже не существует... Нужно вектор пробить сразу. Третий нюанс. Желательно еффекты сразу задавать, а не совать их в функцию, т.к. могут быть баги на некоторых эффектах, особенно на смерть... Четвертый нюанс. Если пишем большой скрипт на дестроющемся НПС, то лучше кинуть сигнал и через OnUserDefined там все пробить. Тогда не нужно пробивать команды на модуль, или еще кого... Вот как примерно должен выглядеть твой скрипт: Neverwinter Script void main()
{ DestroyObject(OBJECT_SELF); object oPlayer = GetPCSpeaker(); object oMod = GetModule(); object oBoss1 = CreateObject(OBJECT_TYPE_CREATURE, "alienhunter", GetLocation(GetNearestObjectByTag("WP_alienhunter"))); effect eVis = EffectVisualEffect(VFX_FNF_ELECTRIC_EXPLOSION); vector vFace = GetPosition(OBJECT_SELF); AssignCommand(oMod, DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,oBo ss1))); AssignCommand(oMod, DelayCommand(1.3, AssignCommand(oBoss1, SetFacingPoint(vFace)))); AssignCommand(oMod, DelayCommand(1.5, AssignCommand(oPlayer, SetFacingPoint(GetPosition(oBoss1))))); AssignCommand(oMod, DelayCommand(1.5, AssignCommand(oBoss1, SpeakString("Я родилсЯ!")))); } |
![]()
Сообщение
#3692
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Ой-ли! Чтобы перекинуть команды на модуль, нужно пробить сразу ассинг, а потом только делай... Иначе Делай остается за объектом сельф... По логике делей сразу выполнится объектом, до завершения скрипта и срабатывания DestroyObject. Надо тестить, мб ты и прав (IMG:style_emoticons/kolobok_light/wink3.gif)
Сообщение отредактировал Ilerien - Jun 19 2008, 14:46 |
![]()
Сообщение
#3693
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Цитата По логике делей сразу выполнится объектом конечно выполнится (IMG:style_emoticons/kolobok_light/smile.gif) и установит задержку, только вот велики шансы на то, что эта задержка пропадёт вместе с объектом (IMG:style_emoticons/kolobok_light/wink3.gif) подпишусь под каждым словом gennady, кроме одного - OnUserDefined даже биоварями признаётся глючным. Оно хоть и прекрасно работает в большнистве случаев, но лучше обойтись. |
![]()
Сообщение
#3694
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
А как вообще быть, если object'ов несколько? По-моему, компиллятор это не любит, ругается=) Матом=) Как правильно задать двум разным объектам в пределах одного скрипта разные действия? Когда я попробовал механически соединять два скрипта, все object'ы выписав в начале, у меня выходил фиг!=(
|
![]()
Сообщение
#3695
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Если ты про переменные, то хоть сколько. Не знаю, сколько максимально памяти движок выделяет под локальные переменные скрипта, но обжектов можно напихать под завязку.
Цитата конечно выполнится и установит задержку, только вот велики шансы на то, что эта задержка пропадёт вместе с объектом Логично (IMG:style_emoticons/kolobok_light/smile.gif) Потестю - расскажу (IMG:style_emoticons/kolobok_light/wink3.gif)
Сообщение отредактировал Ilerien - Jun 19 2008, 18:11 |
![]()
Сообщение
#3696
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
Вопрос № следующий:
как это Neverwinter Script ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDa mage(GetCurrentHitPoints(oPlayer)/2),oPlayer,0.5f); преобразовать, чтоб забирало не половину жизни, а скажем... 90%. Или еще сколько-нить этих процентов. |
![]()
Сообщение
#3697
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Neverwinter Script ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(FloatToInt(GetCurrentHitPoints(oPlaye Можно было и самому догадаться...
r) * 0.9)), oPlayer);//не понял, зачем тут длительность, всё равно эффект мгновенный Сообщение отредактировал Ilerien - Jun 19 2008, 18:48 |
![]()
Сообщение
#3698
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
Гр-р-р...=(( Иногда все тупят. Но это не мешает мне сказать спасибо=)
|
![]()
Сообщение
#3699
|
|
Level 3 ![]() Класс: Обыватель Характер: Neutral Good Раса: Человек ![]() |
Знаете чего, пиплы! Вы супер! Спасибо вам всем за то, что даете много вариантов и объясняете для нас, ньюбов, чего к чему! Мы знакомы всего неделю, а уже прогресс виден. Сами даже чего-то понимаем и делаем=)))))
|
![]()
Сообщение
#3700
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Все еще надеюсь левелапнуть своего хенчмена.
Надо копаться, пробовать разные варианты (IMG:style_emoticons/kolobok_light/smile.gif) 1. Убрать скриптово плот и иммортал флаги. 2. Перекинуть дестрой на модуль: assigncommand(getmodule(), destroy...). 3. Попробовать отложенное удаление через пару секунд. Вот это не проходит ни в какую. Не работает, хоть убейся. 4. Кардинально - не удалять, а именно апать и переодевать. А это как? Можно поподробнее? |
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 19:20 |