Скрипты, Все вопросы и ответы по скриптам |
Здравствуйте, гость ( Вход | Регистрация )
Скрипты, Все вопросы и ответы по скриптам |
Mar 15 2013, 21:00
Сообщение
#3551
|
|
Level 1 Класс: Монах Характер: True Neutral Раса: Рептилия |
В общем дело такое. Скрипт отвечающий за бардовскую песню, не помню точное название, вроде X0_nw_что-то. Суть в том что я сделал так, что при поднятии уровня Тайного Лучника и ученика дракона учитывались их уровни при определении силы песни (int GetLevelByClass кажется). Так же: в feat_archer дописал что Арчер получает песню барда так же как если бы он был бардом (допустим бард 8 арчер 4 - 12 песен в день). Сделал исполнение классовым навыком для Арчера. В чем проблема - кастую песню. Она работет, растет вместе с персонажем бард-лучник, дает как надо все параметры, работает сколько нужно по времени, могу кастовать сколько надо раз в день (1уровень=1каст\день). НО! Иногда при получении большого урона (выше 10 единиц, как я понял) все эффекты песни спадают, однако над головой сохраняются нотки, как будто песня продолжается.
В чем может быть проблема? |
Mar 17 2013, 15:35
Сообщение
#3552
|
|
Level 19 Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов |
Навскидку: песня может давать группу связанных (link) эффектов, один из которых - временные хитпоинты. Вполне возможно, что нвн при снятии временных хп удаляет весь набор эффектов (багофича т.е.). Лечение, если я угадал: накладывать хиты отдельным эффектом.
|
Mar 17 2013, 19:18
Сообщение
#3553
|
|
Level 3 Класс: Монах Характер: Lawful Good Раса: Эльф |
Проверьте, и подскажите, что не так в скрипте на возможность садиться игроку на стул\скамейку\кресло?(В Neverwinter Nights 2):
Код void main() { object oChair = OBJECT_SELF; if (!GetIsObjectValid(GetSittingCreature(OBJECT_SELF))) { AssignCommand(GetLastUsedBy(), ActionSit(oChair)); } } Игрок садиться, и тут же соскавкивает\встаёт, даже не успев сесть, что не так? Подправте, пожалуйста! Разумеется вставлял в On Used Script, и делал предметы Usable Добавлю: -Тестил на всех видах скамеек, стульев, кресел-везде, один и тот же эффект, как будто что-то не срабатывает, буд-то скрипт не доработан, хотя ошибок при сохранении(На F7)-не выдаёт! Добавлено позже!: -Отбой!, игрок всё же "садится" на стул, после задержки, где-то в секунд: 10(Если ждать, и не шевелиться), плюс, криво "садится", иногда вообще помимо скамейки! (IMG:style_emoticons/kolobok_light/sad.gif) Это что, так в НВН2 система сажания на стулья-настроена?!, или данный скрипт для НВН2-не совсем подходит?! Есть другие варианты? Заранее спасибо! Сообщение отредактировал Sugo77 - Mar 17 2013, 20:42 |
Mar 17 2013, 20:42
Сообщение
#3554
|
|
Level 1 Класс: Монах Характер: True Neutral Раса: Рептилия |
Навскидку: песня может давать группу связанных (link) эффектов, один из которых - временные хитпоинты. Вполне возможно, что нвн при снятии временных хп удаляет весь набор эффектов (багофича т.е.). Лечение, если я угадал: накладывать хиты отдельным эффектом. К сожалению немного мимо =) я разобрался. Взял скрипт из оригинала, а там нет как я понял параметра Duration, и песня обрывалась при снятии хитов (ваша версия). С скриптом из HotU проблем нет |
Mar 18 2013, 08:19
Сообщение
#3555
|
|
Level 7 Класс: Обыватель Характер: True Neutral Раса: Человек NWN: Модмейкер Начало Войны |
Проверьте, и подскажите, что не так в скрипте на возможность садиться игроку на стул\скамейку\кресло?(В Neverwinter Nights 2): В NWN2 с ActionSit проблемы, функция изначально не работала и ее вроде не пофиксили, хотя могу ошибаться. На ваулте есть куча решений этой проблемы, например, вот. |
Mar 18 2013, 22:30
Сообщение
#3556
|
|
Level 19 Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов |
Обсидианы добавили в нвн2 немало клёвых ништяков, при этом, как водится, похерив немало старых (IMG:style_emoticons/kolobok_light/smile.gif) ActionSit - один из них.
|
Mar 19 2013, 08:05
Сообщение
#3557
|
|
Level 3 Класс: Монах Характер: Lawful Good Раса: Эльф |
Да, спасибо!
Скрипт по ссылке, от Alian REXis, работает без задержек, и без сбоев!: NWN2, Drow At Picnic\НВН2, Дроу На Пикнике Меня сейчас волнует другая проблема, с визуальным эффектами(В NWN2), под названиями: fx_willowisp_blue fx_willowisp_green fx_willowisp_red fx_willowisp_yellow Так вот, если в самом тулсете, ставишь эти эффекты на мобов(Или в любые, другие прдметы, вещи, оружия), всё работает отлично, но стоит зайти в игру, почему-то, сразу выкидывает, интересно почему?!(Особенно если вставить данные, визуальные эффекты, в мобов, или в оружие, и когда пытаешься взять оружие в руки, сразу выбрасывает из игры, с неизвестной ошибкой, Windows 7 Максимальная 64-bit SP1-не может её определить\устранить!) Другие визуальные эффекты, работают без сбоев, потестил уже больше половины! С чем это может быть связано, и как можно решить данную проблему, есть идеи? -И интересует, это только у меня одного так, или у всех? Настройки видео, в самой игре, менял по разному, не помогает... Версия игры: Neverwinter Nights 2 Gold от Акеллы(На русском языке) + Патч от Акеллы: Akella_SoZ_1231765(На русском языке) Добавлю: -Хочу позже переустановить игру, с версии Gold от Акеллы, на Platinum от Акеллы, но, сомневаюсь, что поможет... Просьба!, у кого установлена игра: Neverwinter Nights 2, можете, пожалуйста, проверить данные визульные эффекты, будут у вас работать в модуле, или нет?! Желательно потестить на оружии... Заранее спасибо! Сообщение отредактировал Sugo77 - Mar 20 2013, 19:28 |
Apr 3 2013, 20:25
Сообщение
#3558
|
|
Level 6 Класс: Друид Характер: Chaotic Neutral Раса: Гном |
Кстати, это ветка авроры, а не электры
|
Jul 4 2013, 10:56
Сообщение
#3559
|
|
Level 5 Класс: Паладин Характер: Chaotic Good Раса: Человек |
В общем прошу пояснить почему не у меня не работает этот http://www.city-of-masters.ru/forums/index...amp;#entry31706 скрипт. Точнее его первая часть. Я так думаю это потому что у меня версия 1.69, хотя кто знает... Я недавно начал осваивать написание скриптов и очень прошу помочь мне с моими вопросами.
|
Jul 4 2013, 11:17
Сообщение
#3560
|
|
Level 11 Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов |
Подробнее что именно не работает?
Не создается объект, нет эффекта? Neverwinter Script // Может не компилироваться если у тебя не стоит патч Дамбо для буквы "я". Т.к. из-за нее не компилировалось раньше.
void Raise(object oNPC = OBJECT_SELF) { effect eVisDead = EffectVisualEffect(VFX_IMP_HEAD_ACID);///Эффект с которым объект будет воскресать. В данном случае это кислота! // Объект, который будет появляться (воскресать). Там надо вставлять не тэг а РЕСРЕФ объекта, потому что тэг и ресреф могут различаться // Если тэг и ресреф одинаковы - тогда без разницы. А вообще пиши тэги всегда верхним регистром, а ресреф нижним :З. Функции подобные этой // сами переводят верхний регистр в нижний, но для различия всегда удобнее тэг - верхним, ресреф - нижним object oNew = CreateObject(OBJECT_TYPE_CREATURE,"ZombieWeak07", GetLocation(oNPC )) ; ApplyEffectAtLocation(DURATION_TYPE_INTSTANT, eVisDead, GetLocation(oNew)); } void main() { object oCleric = GetNearestObjectByTag("Nekrolog01");// Тег объекта который будет оживлять. И которого надо убить чтобы остальные больше не оживали. // Объект есть, не мертвый и не дерется ни с кем if (GetIsObjectValid(oCleric) && !GetIsDead(oCleric) && !GetIsInCombat(oCleric)) { AssignCommand(oCleric, ClearAllActions()); // Чистка стэка действий объекта //Действия, которые выполняет "оживитель" как только умирает один из объектов. В данном случае становится на колени. AssignCommand(oCleric, ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP, 1.0, 3.0f)); // Анимация призыва/моления effect eVisCleric = EffectVisualEffect(VFX_IMP_AURA_NEGATIVE_ENERGY);// Эффект, с которым клирик воскрешает. В данном случае появляется красного цвета аура. Но эффекты можно менять! ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVisCleric, oCleric, 3.0f); // TEMPORARY тип для продолжительных во времени, INSTANT для мгновенных, а PERMANENT - постоянных DelayCommand(3.0f, Raise(OBJECT_SELF)); // Функция сверху void main() DelayCommand(0.2f,AssignCommand(oCleric, SpeakOneLinerConversation())) ; // Что-то типа воспроизвести 1-ю неветвящуюся строку диалога. } } Сообщение отредактировал Melisse - Jul 4 2013, 11:42 |
Jul 4 2013, 14:30
Сообщение
#3561
|
|
Level 5 Класс: Паладин Характер: Chaotic Good Раса: Человек |
Да, не появляются новые зомби и людишки погибают без эффекта, а вот некролог и сверкает и на колени становиться. Мне вобще интересно что это за "ZombieWeak07", не похоже на стандартный объект, хотя я заменял эту надпись на таги своих зомби, все равно не появлялся никто. И ссылку на патч пожалуйста, если он так важен. Можно и на остальные полезные штучки если не трудно.
|
Jul 4 2013, 16:41
Сообщение
#3562
|
|
Level 11 Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов |
Ну погибать они должны без эффекта - этого в скрипте нет,а вот не воскресать они могут если не тот рес-реф поставлен.
Еще может быть момент в том что в примере в Базе скриптов у функции Raise не объявлен OBJECT_SELF, хотя локация его берется. Вообщем потести так и сяк - в итоге получиться, скрипт рабочий на первый взгляд. Патч http://wrg.ru/download.php?view.109 |
Jul 4 2013, 22:16
Сообщение
#3563
|
|
Level 5 Класс: Паладин Характер: Chaotic Good Раса: Человек |
Спасибо, да вот на меня этот рес - реф свалился, не знаю что такое. Где то читал но не вник все ж таки.
|
Jul 4 2013, 22:44
Сообщение
#3564
|
|
Level 9 Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага |
У тебя не работает
Neverwinter Script DelayCommand(3.0f, Raise(OBJECT_SELF)); // Функция сверху void main() или маленькая выдержка уничтожения трупа или вообще не работает, т.к. скрипты на трупах не работают... про рес реф я тут подробно описал: http://remmgen.narod.ru/titem.html Сообщение отредактировал gennady - Jul 4 2013, 22:48 |
Jul 5 2013, 06:02
Сообщение
#3565
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
Делей лучше вообще вешать на какой либюо объект не участвующий в скрипте, в смысле, например на плейс рядом или на модуль вообще. Тогда 100% сработает.
Я имею ввиду давать команду постороннему объекту сделать что-либо с нужным объектом. Neverwinter Script AssignCommand(oModules, DelayCommand(3.0f, Raise)); Как пример, не знаю правильно ли я описал, сто лет не кодил нвн. Я много делал разных комплексов скриптов с делеем в ПВ, понял одну закономерность, если делей без указания того, кто его будет исполнять, то команда часто теряется. Если указать кто будет делать задержку, то срабатывает. |
Jul 5 2013, 07:27
Сообщение
#3566
|
|
Level 19 Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов |
Дело не в указании, просто часто объект, с которого запускается скрипт и который становится "исполнителем", уничтожается до делэя. Модуль в таких случаях - идеальный вариант.
|
Jul 5 2013, 08:49
Сообщение
#3567
|
|
Level 11 Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов |
А что происходит со скриптом который запустил делей? Он висит незавершенным вместе с делеем или таки завершается, а команда срабатывает позже?
Учитывая "однопоточность" нвн-сервера - это не сильно мешает? (IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Melisse - Jul 5 2013, 08:49 |
Jul 5 2013, 09:42
Сообщение
#3568
|
|
Level 5 Класс: Паладин Характер: Chaotic Good Раса: Человек |
Значит если на предмет то на OnHeartbeat? И на модуль так же? Куда лучше? И можно ли совместить этот скрипт с тем что там уже есть?
|
Jul 5 2013, 10:09
Сообщение
#3569
|
|
Level 9 Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага |
Neverwinter Script void Raise(location Loc) { effect eVisDead = EffectVisualEffect(VFX_IMP_HEAD_ACID);//Эффект с которым объект будет воскресать. В данном случае это кислота! object oNew = CreateObject(OBJECT_TYPE_CREATURE,"nw_zombie01", Loc) ;//Монстр из палитры который будет воскрешать. ApplyEffectAtLocation(DURATION_TYPE_PERMANENT, eVisDead, Loc); } void main() { object oCleric = GetNearestObjectByTag("Nekrolog01");// Тег объекта который будет оживлять. И которого надо убить чтобы остальные больше не оживали. location Loc = GetLocation(OBJECT_SELF); if (GetIsObjectValid(oCleric) == TRUE && GetIsDead(oCleric) == FALSE) { AssignCommand(oCleric, ClearAllActions()); AssignCommand(oCleric, ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP, 1.0, 3.0));//Действия которые выполняет "оживитель" как только умирает один из объектов. В данном случае становится на колени. effect eVisCleric = EffectVisualEffect(VFX_IMP_AURA_NEGATIVE_ENERGY);// Эффект с которым клирик воскрешает. В данном случае появляется красного цвета аура. Но эффекты можно менять! ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVisCleric, oCleric); AssignCommand(oCleric, DelayCommand(3.0, Raise(Loc))); AssignCommand(oCleric, DelayCommand(2.2, SpeakString("Воскресни!"))) ; } } Скрипт на слот смерти монста. как-то так... (IMG:style_emoticons/kolobok_light/declare.gif) Сообщение отредактировал gennady - Jul 5 2013, 10:18 |
Jul 5 2013, 10:52
Сообщение
#3570
|
|
Level 5 Класс: Паладин Характер: Chaotic Good Раса: Человек |
У меня кстати вместо русского языка в скриптах каракули какие то. И ничего, даже на колени не встал. Я поставил скрипт на onDeath некролога, на него же надо?
|
Jul 5 2013, 11:05
Сообщение
#3571
|
|
Level 9 Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага |
Это скрипт на монстров, у некролога стандартный. На монстров что их палитры, тоже нужен этот скрипт... Только ставь свой РЕСРЕФ зомби...
|
Jul 5 2013, 11:38
Сообщение
#3572
|
|
Level 5 Класс: Паладин Характер: Chaotic Good Раса: Человек |
А как его ставить? Знаю куда, но как и зачем?
|
Jul 5 2013, 12:53
Сообщение
#3573
|
|
Level 11 Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов |
Чтобы каракулей не было нужно когда копируют и вставляют - все была русская раскладка.
|
Jul 7 2013, 17:45
Сообщение
#3574
|
|
Тролль Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь |
А как его ставить? Знаю куда, но как и зачем? Резреф – это можно сказать «код» любого объекта, а таг - его «подпись». «Код» всегда будет сугубо индивидуальный и (если я правильно понимаю механику движка НВН) в любом модуле никогда не встретятся 2 объекта с одинаковым «кодом»/резрефом, потому что даже если сделать полную копию объекта – игра сгенерирует ему новый «код»/резреф непосредственно при создании этой копии. «Подпись»/таг отличается же от резрефа тем, что он всегда будет назначенным – либо изначально по воле разрабов НВН, либо впоследствии по воле скриптера (тоесть он никогда не берется из воздуха по своей воле путем генерации, и поэтому он нужен скриптовым функциям, чтоб искать и сортировать по нему объекты).В модуле объект можно создать двумя способами: копировать его из уже имеющегося в модуле объекта или копировать его из базы данных объектов самой игры называемой «палитрой» объектов. Когда речь идет не о клонировании объектов, а о непосредственно создании их в игре – то для этого необходим исходный «код»/резреф этого объекта в котором закодированы все его будущие свойства (наверное понятно, что если вы хотите создать не непойми что, а что-то вполне конкретное – то без «палитры»/базы данных никак не обойтись; а она по сути своей есть ничто иное, как полный перечень «кодов»/резрефов всех возможных объектов). «Палитр»/баз данных в модуле обычно бывает 2: «дефолтная»/стандартная (то что есть в тулсете независимо от того каким бы ни был модуль, главное лишь соответствие версий НВН – и как правило во всех более поздних версиях есть все то, что было в более ранних); и «кастомная»/модифицированная (то что делает модульмейкер дополнительно, если его не удовлетворяет стандартное разнообразие). Для создания собственной палитры в тулсете есть команда «добавить в палитру» прилагающаяся к любому объекту, который был «кастомизирован»/модифицирован из стандартной палитры. Для размещения в модуле «кастомизированных»/модифицированных объектов вручную при создании или редактировании модуля – в палитру их добавлять не обязательно; но если вы планируете создавать их в модуле по ходу игры скриптами – то необходимо создать модель этого объекта, добавив ее в палитру. В ходе добавления объекта в палитру (и только тогда) можно назначить ему резреф самостоятельно вручную (а не генерировать его автоматически). Таким образом, из какой бы палитры объект в модуле ни создавался скриптами – нам для этого нужен его резреф. Нет «валидного»/рабочего резрефа – нет объекта. P.S.: Никогда не понимал, зачем все советуют писать таги прописными буквами, а резрефы строчными – в редакторе скриптов тулсета существует всего одна функция, которой необходимо указывать резреф объекта. Если понять и запомнить это, то никогда не перепутаешь резреф с тагом. А еще лучше – делайте их одинаковыми для кастомных объектов; меняйте таг при создании их в модуле скриптами, если нужен будет совершенно уникальный. |
Jul 9 2013, 00:00
Сообщение
#3575
|
|
Level 12 Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] |
Цитата А что происходит со скриптом который запустил делей? Он висит незавершенным вместе с делеем или таки завершается, а команда срабатывает позже? Учитывая "однопоточность" нвн-сервера - это не сильно мешает? Механика примерно такая: скрипт отрабатывает и завершается (если не зависнет, конечно). Работа такого скрипта - повесить делей. Он это делает и довольный хорошо проделанной работой, завершается. Сами "отложенные действия" вешаются на объект - у нвн есть собственные стуктуры для представления скомпилированных скриптов. - на объкте "висят" эти "отложенные действия" - в виде этих самых структур. То ли это ссылка на скрипт, то ли тот же скрипт с другой точкой входа, то ли какое-то подмножество из скомпилированных функций (выделить их должно быть не так сложно, из-за иерархической продцедурности скриптового языка нвн) - в детали не вдавался, да и не стоит, они ничего в работе скрипт-процессора не меняют - просто эти команды со временем запустятся так же как запускается все остальные скрипты. Цитата P.S.: Никогда не понимал, зачем все советуют писать таги прописными буквами, а резрефы строчными – в редакторе скриптов тулсета существует всего одна функция, которой необходимо указывать резреф объекта. Если понять и запомнить это, то никогда не перепутаешь резреф с тагом. А еще лучше – делайте их одинаковыми для кастомных объектов; меняйте таг при создании их в модуле скриптами, если нужен будет совершенно уникальный. Не льсти себе - подойди ближе. К тому же это стандартное соглашение, вроде sString и lLocation, нотация устаревшая как говно мамонта, но повсеместно используется в скриптах нвн, потому что так уж условились обозначать, и зная эти договорённости можно быстрей вникнуть в чужие скрипты / библиотеки. Та же ситуация и с тэгами и резрефами - встречая в тектсе строчные - понимаем сразу, что это резреф, без необходимости искать по всему коду ту единственную функцию, где же эта строчка там используется, а она не обязательно будет тут же, потому что резреф может, к примеру, формироваться каким-то генератором из списка, например, и мы быстрей поймём что же тут в коде происходит - где тэг пистолета, где резреф ноги, без необходимости разбирать всю логику. Это сильно экономит время. |
Текстовая версия | Сейчас: 26th April 2024 - 06:36 |