![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3541
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Попросту говоря сей объект в игре далее доступен только для ПС – сам движок лутбэг никак не видит. Можно удалить мертвое тело по тагу, заставить его исчезнуть или даже перенести в «лимбо» (что приведет к утрате всяческого доступа к его лутбэгу), но на полу при подсветке по табу все еще можно будет наблюдать силуэт его никуда не девшегося лутбэга. Единственный способ избавиться от стандартного лутбэга – вынуть все содержимое ПС-персонажем вручную. Неверно. Все стандартные лутбеги имеют тег "BodyBag", по нему можно получить доступ к объекту (видимому или нет), очистить от итемов и удалить, что и наблюдается в скрипте gennady. Единственное, лутбег ещё не создан на момент срабатывания OnDeath, поэтому его либо приходится искать с задержкой, либо запускать чистку с "внешних" событий. Сообщение отредактировал greye - Jan 10 2013, 09:56 |
![]()
Сообщение
#3542
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Ну, тогда все еще проще – можно поставить в локации блок на «онхеартбит» с заглушкой на выполнение скажем раз в игровые сутки, который попросту будет очищать все объекты с этим тагом на локации:..
Neverwinter Script void main()
{ object oArea = OBJECT_SELF; object oTarget = GetFirstObjectInArea(oArea); object oItem; if (GetTimeHour() == 0) { if (GetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF))== 0) { SetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF), 1); } else { return; } } else { if (GetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF))== 1) { SetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF), 0); } return; } while(GetIsObjectValid(oTarget)) { if (GetTag(oTarget) == "BodyBag") { oItem = GetFirstItemInInventory(oTarget); while(GetIsObjectValid(oItem)) { DestroyObject(oItem); oItem = GetNextItemInInventory(oTarget); } } oTarget = GetNextObjectInArea(oArea); } } Сообщение отредактировал Flaristan - Jan 10 2013, 10:50 |
![]()
Сообщение
#3543
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
При большой загрузке модуля локациями, больше 100+ и большим кол-вом мобов ии других штук зависает время. Что будет в этом случае?))) - ты используешь GetTimeHour() (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#3544
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Ну это вообще не проблема:
1) счетчик вообще можно поставить принципиально какой удобно; 2) зависающее время в модуле вроде чинят перематывая его искусственно, если оно заедает естественно. |
![]()
Сообщение
#3545
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
1.: gennady , при сохранении Вашего скрипта, указывает на какую-то неточность\ошибку в данной строчке:
int iFut = Day()+iD; И ещё, куда вставляется Ваш скрипт? 2.: А вот скрипт от Flaristan-прекрасно работает под НВН2, но!, уменьшить бы время задержки на исчезновения лута с локации, в его скрипте(Пока не могу дотумкать, как это сделать), а то сутки-это много, мне бы меньше минуты, то есть в секундах(Секунд: 30)... Предпологаю, что что-то связанное с DelayCommand 6.0f(Значение времени, выдернутое мною из скрипта на респавн мобов), но куда это вставить, что на что заменить?, и будет ли это правильно работать в скрипте от Flaristan? Заранее спасибо! Сообщение отредактировал Sugo77 - Jan 10 2013, 20:00 |
![]()
Сообщение
#3546
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Верхний блок скрипта:..
Neverwinter Script if (GetTimeHour() == 0) { if (GetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF))== 0) { SetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF), 1); } else { return; } } else { if (GetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF))== 1) { SetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF), 0); } return; } Если его заменить на такой блок:.. Neverwinter Script int iCount = GetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF)); …он каждые 6 секунд «онхеартбита» будет считать переменную присваиваемую его локации с ее же мименем – как только досчитает до 5 (5 «онхеартбитов» по 6 секунд = 30 секунд) сбросит счет в «0» и выполнит дальнейший скрипт.if (iCount==5) { SetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF), 0); } else { iCount++; SetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF), iCount); return; } Можно через «DelayCommand» тоже, но мне показалось так проще и надежней. Сообщение отредактировал Flaristan - Jan 11 2013, 04:21 |
![]()
Сообщение
#3547
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
Спасибо за помощь!
То что надо!, и всё работает! Ещё бы с замками разобраться(В НВН2), ранее уже спрашивал: Можно ли вообще, в принципе, сделать так, чтобы дверь снова закрыть на тот же ключ, которым открывал, любому классу, без соответствующих скиллов? Может, через какой-то скрипт? Так как облазил весь тулсет, не дотумкал, как это сделать обычным способом, получается только открывание замка, и дверь уже потом постоянно открыта-входи любой, а хотелось бы получить возможность, и снова закрыть эту же самую дверь, на этот же самый ключ... Сообщение отредактировал Sugo77 - Jan 11 2013, 08:23 |
![]()
Сообщение
#3548
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Чистка локации от предметов
Тут что-то глючат коды NNS. Кому нужно смотрим здесь: http://remmgen.narod.ru/tmodul.html |
![]()
Сообщение
#3549
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Могу лишь предложить сделать на ключи «уникальную силу предмета» которая по юзу на дверь будет проверять ее ли это ключ, и если да – то закрывать ее на замок.
Если нужно просто чтоб двери через какое-то время закрывались и запирались – можно сделать соответствующий скрипт с задержкой на «онопен» и раздать его нужным дверям. P.S.: И да - если уж отсылать то тогда еще мои две любимые ссылки на ресурсы которые помогли мне достигнуть того уровня скриптинга который сейчас имею: - скрипт-генератор Лилака; - Лексикон. Сообщение отредактировал Flaristan - Jan 11 2013, 10:08 |
![]()
Сообщение
#3550
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
gennady, а вот скрипт с Вашего сайта-сработал!
Но там он в днях, а у меня трейниг модуль для спелл кастеров, где мобы с 10-100 ХП, убиваются за секунды, и спавняться, через 6 секунд, поэтому скрипт от Flaristan, мне более подходит! А вообще, обоим участникам большое спасибо за помощь, и отзывчивость! Сообщение отредактировал Sugo77 - Jan 11 2013, 14:18 |
![]()
Сообщение
#3551
|
|
Level 1 Класс: Монах Характер: True Neutral Раса: Рептилия ![]() |
В общем дело такое. Скрипт отвечающий за бардовскую песню, не помню точное название, вроде X0_nw_что-то. Суть в том что я сделал так, что при поднятии уровня Тайного Лучника и ученика дракона учитывались их уровни при определении силы песни (int GetLevelByClass кажется). Так же: в feat_archer дописал что Арчер получает песню барда так же как если бы он был бардом (допустим бард 8 арчер 4 - 12 песен в день). Сделал исполнение классовым навыком для Арчера. В чем проблема - кастую песню. Она работет, растет вместе с персонажем бард-лучник, дает как надо все параметры, работает сколько нужно по времени, могу кастовать сколько надо раз в день (1уровень=1каст\день). НО! Иногда при получении большого урона (выше 10 единиц, как я понял) все эффекты песни спадают, однако над головой сохраняются нотки, как будто песня продолжается.
В чем может быть проблема? |
![]()
Сообщение
#3552
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Навскидку: песня может давать группу связанных (link) эффектов, один из которых - временные хитпоинты. Вполне возможно, что нвн при снятии временных хп удаляет весь набор эффектов (багофича т.е.). Лечение, если я угадал: накладывать хиты отдельным эффектом.
|
![]()
Сообщение
#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 |
![]()
Сообщение
#3554
|
|
Level 1 Класс: Монах Характер: True Neutral Раса: Рептилия ![]() |
Навскидку: песня может давать группу связанных (link) эффектов, один из которых - временные хитпоинты. Вполне возможно, что нвн при снятии временных хп удаляет весь набор эффектов (багофича т.е.). Лечение, если я угадал: накладывать хиты отдельным эффектом. К сожалению немного мимо =) я разобрался. Взял скрипт из оригинала, а там нет как я понял параметра Duration, и песня обрывалась при снятии хитов (ваша версия). С скриптом из HotU проблем нет |
![]()
Сообщение
#3555
|
|
Level 7 ![]() Класс: Обыватель Характер: True Neutral Раса: Человек NWN: Модмейкер Начало Войны ![]() |
Проверьте, и подскажите, что не так в скрипте на возможность садиться игроку на стул\скамейку\кресло?(В Neverwinter Nights 2): В NWN2 с ActionSit проблемы, функция изначально не работала и ее вроде не пофиксили, хотя могу ошибаться. На ваулте есть куча решений этой проблемы, например, вот. |
![]()
Сообщение
#3556
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Обсидианы добавили в нвн2 немало клёвых ништяков, при этом, как водится, похерив немало старых (IMG:style_emoticons/kolobok_light/smile.gif) ActionSit - один из них.
|
![]()
Сообщение
#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 |
![]()
Сообщение
#3558
|
|
Level 6 ![]() ![]() Класс: Друид Характер: Chaotic Neutral Раса: Гном ![]() |
Кстати, это ветка авроры, а не электры
|
![]()
Сообщение
#3559
|
|
Level 5 ![]() ![]() Класс: Паладин Характер: Chaotic Good Раса: Человек ![]() |
В общем прошу пояснить почему не у меня не работает этот http://www.city-of-masters.ru/forums/index...amp;#entry31706 скрипт. Точнее его первая часть. Я так думаю это потому что у меня версия 1.69, хотя кто знает... Я недавно начал осваивать написание скриптов и очень прошу помочь мне с моими вопросами.
|
![]()
Сообщение
#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 |
![]()
Сообщение
#3561
|
|
Level 5 ![]() ![]() Класс: Паладин Характер: Chaotic Good Раса: Человек ![]() |
Да, не появляются новые зомби и людишки погибают без эффекта, а вот некролог и сверкает и на колени становиться. Мне вобще интересно что это за "ZombieWeak07", не похоже на стандартный объект, хотя я заменял эту надпись на таги своих зомби, все равно не появлялся никто. И ссылку на патч пожалуйста, если он так важен. Можно и на остальные полезные штучки если не трудно.
|
![]()
Сообщение
#3562
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Ну погибать они должны без эффекта - этого в скрипте нет,а вот не воскресать они могут если не тот рес-реф поставлен.
Еще может быть момент в том что в примере в Базе скриптов у функции Raise не объявлен OBJECT_SELF, хотя локация его берется. Вообщем потести так и сяк - в итоге получиться, скрипт рабочий на первый взгляд. Патч http://wrg.ru/download.php?view.109 |
![]()
Сообщение
#3563
|
|
Level 5 ![]() ![]() Класс: Паладин Характер: Chaotic Good Раса: Человек ![]() |
Спасибо, да вот на меня этот рес - реф свалился, не знаю что такое. Где то читал но не вник все ж таки.
|
![]()
Сообщение
#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 |
![]()
Сообщение
#3565
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Делей лучше вообще вешать на какой либюо объект не участвующий в скрипте, в смысле, например на плейс рядом или на модуль вообще. Тогда 100% сработает.
Я имею ввиду давать команду постороннему объекту сделать что-либо с нужным объектом. Neverwinter Script AssignCommand(oModules, DelayCommand(3.0f, Raise)); Как пример, не знаю правильно ли я описал, сто лет не кодил нвн. Я много делал разных комплексов скриптов с делеем в ПВ, понял одну закономерность, если делей без указания того, кто его будет исполнять, то команда часто теряется. Если указать кто будет делать задержку, то срабатывает. |
![]() ![]() |
Текстовая версия | Сейчас: 10th May 2025 - 02:30 |