![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#761
|
|
Level 3 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Если есть placeable по которым сможешь ходить, то это хороший способ.
|
![]()
Сообщение
#762
|
|
Level 10 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
Я про тоже placeable есть проверял но скрипт не проверял тока идея появилась.
А хак Пак стандартный СЕР. |
![]()
Сообщение
#763
|
|
Level 8 ![]() ![]() ![]() Класс: Маг Характер: Lawful Good Раса: Полуэльф ![]() |
Nokoll прости, ошибка не в этой строчке...ошибки нет...мне нужно добавить строчку, которая перенесет туда, куда ты шел, после ролика
|
![]()
Сообщение
#764
|
|
Level 4 ![]() ![]() Класс: Волшебник Характер: True Neutral Раса: Полуэльф ![]() |
В разделе скриптов есть скрипт на умирание в котором (насколько я понял) есть строчька которая должна создавать пятно крови возле игрока - как ее создать, а вернее в каком разделе предметов. Я нашел в стандартной политре это пятно поставил в тут строчьку ее тег но пятно не появляется. Подскажите что нетак.
|
![]()
Сообщение
#765
|
|
Level 10 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
Тег не нужен добавь в скрипт эффект VFX_COM_BLOOD_CRT_RED, их в тулсете много выбери любой.
|
![]()
Сообщение
#766
|
|
Level 5 ![]() ![]() Класс: Маг Характер: Chaotic Evil Раса: Танар'ри ![]() |
Вопрос из области cut-сцен. Каким образом можно быстро убрать накастованые на область заклинания типа кислотного тумана? Смысл преблизительно следующий - после "мажеского" поединка включается cut-сцена. Эффекты от накастованых во время боя заклинаний просто заполняют собой экран и мешают правильному визуальному восприятию сцены. Причем надо учитывать тот факт, что на некоторых объктах области висят перманентные эффекты, которые весьма желательно сохранить.
|
![]()
Сообщение
#767
|
|
Level 10 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
СЛУШАЙ ВРОДЕ ТАК ПОПРОБУЙ EffectAbilityDecrease, ИЛИ EffectAbilityIncrease, ПРОСТО СЕЙЧАС ГОЛОВА ЕДЕТ немогу сосредоточится!
|
![]()
Сообщение
#768
|
|||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Перебери циклом все эффекты. effect eE=GetFirstEffect ... потом посмотри, если их криатер - маг1 или маг2, удаляй их. GetEffectCreater(); цикл while (GetIsEffectValid(eE)) Добавлено в [mergetime]1109005998[/mergetime]
Дело в том, что объекты создаются не по тэгу, а по ресрефу. Поэтому 2 выхода: 1. или заменяй в скрипте ресреф(в CreateObject) на ресреф пятна стандатрного, либо 2. создавай новый обжект с нужным (скрипту) ресрефом |
||
![]() ![]()
Сообщение
#769
|
|
Level 5 ![]() ![]() Класс: Маг Характер: Chaotic Evil Раса: Танар'ри ![]() |
>Tarre Talliorne
Нечто в этом роде я и предполагал. Громаднейшее спасибо :crazy: Добавлено в [mergetime]1109056973[/mergetime] А еще один мааленький вопросик: GetEffectCreater(); - насколько я пронимаю выдает объекта-криэйтора эффекта. То бишь условно говоря мага2. А если к примеру маг2 уже подох, и соответственно функция вернет INVALID'а (ну насколько я понимаю - или нет?). Надо ли onDeath мага2 к примеру вешать функцию криэйта его копии в закрытой локации или вешать какой нибудь EffectRespawn() и т.д, и только после этого удалять эффекты? |
![]()
Сообщение
#770
|
|
Level 10 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
Я считаю что надо я так и делаю вешаю onDeath мага2 и только после этого удаляю эффекты. :V:
Добавлено в [mergetime]1109060073[/mergetime] А зачем ващще EffectRespawn(), здесь незнаю :xz: Возможно я опозорюсь но я думал что INVALID это фракцыя как и OBJECT_SELF. |
![]() ![]()
Сообщение
#771
|
|||
Level 5 ![]() ![]() Класс: Маг Характер: Chaotic Evil Раса: Танар'ри ![]() |
Респаун просто не даст задестроится объекту маг2, после чего его можно пихать в цикл, где будет GetEffectCreater(), после выполнения цикла дать EffectDeath() или DestroyObject() на мага2. При этом надо учитывать, что при десторое onDeath выполнится еще раз. Следовательно надо сделать еще один цикл, в котором на первом шаге снимаются эффекты, а на втором собственно маг и дохнет. Видимо как-то так. В меру моего понимания данной реализации конечно и не имея под руками Лексикона... |
||
![]()
Сообщение
#772
|
|||
Level 10 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
Попробуй так EffectDeath(), будет лучше смотреца, и поставь мою выдуманную но рабочую функцыю DestroyEffect, иба маг умрёт со звучком даже, эффекты исчезнут. :oh: |
||
![]()
Сообщение
#773
|
|||||
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
:swoon: :D
Копия объекта-креатора не будет являться креатором эффекта. Это не выход. Выход тогда: 1. Делать TEMPORARY эффект. Подстраивать его длительность ручками. 2. Сделать креатора SetIsDestroyable(FALSE); и не бояться, что креатор дестроится, когда загнется. |
||||
![]()
Сообщение
#774
|
|
Level 10 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
ДБ нет ты не отом подумал, я мимел в виде не то что INVALID тоже самое что и
OBJECT_SELF. |
![]() ![]()
Сообщение
#775
|
|||
Level 5 ![]() ![]() Класс: Маг Характер: Chaotic Evil Раса: Танар'ри ![]() |
Тут я немножко хочу прояснить для себя c точки зрения теории: если последовательно обьект маг2 был в какой-то момент задестроен, а потом в локации был создан другой точно такой-же объект маг2. Например: DestroyObject(bla-bla-bla); DelayCommand(0.1,CreateObject(bla-bla-bla)); То почему с точки зрения функционирования системы он не будет являтся креатором эффекта? Ведь фактически он в конкретный момент вемени уникален -т.е. никаких других обьектов с такими тэгом и ресцефом на локации (да и во всем модуле) не присутствует. Я понимаю так, что существует некий стэк обьектов, и у обьекта, если он присутствует в локации, кроме тэга и ресцефа существует еще некий int-идентификатор. Это видно например из функции, возвращающей ближайший к объекту oPC объект: object oMage=GetNearestObjectByTag("oMage2",oPC,i); - где i - насколько я понимаю и является этим идентификатором. Следовательно, если предположить существуют 2 объекта oMage2, то у одного условно говоря в конкретный момент времени i=0, а у другого i=1 - очевидно, что объекты разные. Но если объект в конкретный момент времени ОДИН, то и значение i для него будет всегда условно говоря равно 0. Так почему для функции GetEffectCreater(); он будет ДРУГИМ объектом? Непонятно? Или у обьектов есть еще какой-то скрытый идентифицирующий их признак? Или я что-то неправильно понимаю? |
||
![]()
Сообщение
#776
|
|||||
Level 5 ![]() ![]() Класс: Рейнджер Характер: Neutral Good Раса: Человек ![]() |
Рес-реф и тэг тут не причем. А что такое object? object - это 32 битное целое, которое указывает на определенный объект в модуле (что это - адрес в памяти или просто абсолютный номер объекта, точно не знаю, скорее второе). Имеется функция string ObjectToString(object), возвращающая (как строку) значение идентификатора объекта в виде шестнадцатиричного числа. Соответственно, GetEffectCreater() вернет значение указателя на объект-креатор, предположительно, просто достав его из соответствующего поля эффекта (effect - это, кажется, по сути struct такой). Проверки на существование объекта с таким идентификатором при этом, происходить не должно (хотя ХЗ, чего там на самом деле происходит :xz: ). Видимо для подобных ситуаций, когда значение объекта не равно OBJECT_INVALID но самого объекта в модуле уже нет, и написана функция GetIsObjectValid(..). Когда же ты создаешь новый объект, он получает новый идентификатор, который, естественно, не будет соответствовать идентификатору объекта, созданного когда-то по тому же рес-рефу и имевшему тот же тэг (а жив он сейчас или нет - не важно). Исходя из вышесказанного можно предложить следующие. Накладывая эффект мы одновременно сохраняем в локалке идентификатор объекта-креатора: SetLocalObject(oTarget, "effect_creator", OBJECT_SELF); А потом, будем проверять соответствие креатора эффекта этой локалке, а не вновь найденному по тэгу объекту. Правда, нет никакой уверенности в том, что это будет работать, но можно попробовать. Заодно проверить истинность моих домыслов. Сообщение отредактировал Friedrich - Feb 22 2005, 20:47 |
||||
![]()
Сообщение
#777
|
|||||
Level 5 ![]() ![]() Класс: Рейнджер Характер: Neutral Good Раса: Человек ![]() |
Да. Усе работает. :yahoo: Если сохранить креатора эффекта в локалку, то потом можно использывать это значение, независимо от бытия самого креатора. Фрагмент лога:
Объекта с oСreator == 0x04 уже не существует (причем oCreator != OBJECT_INVALID), но созданный им эфект удаляется. 0x7FFFFFFF - это первый игрок. OBJECT_INVALID, кажется, равен 0x7F000000 (хотя это и не важно)
вот функция - в общем виде. |
||||
![]()
Сообщение
#778
|
|
Level 5 ![]() ![]() Класс: Маг Характер: Chaotic Evil Раса: Танар'ри ![]() |
>Friedrich
Thanks :D :D :D |
![]()
Сообщение
#779
|
|
Level 10 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
Дайте плизз ктонибудь скрипт, чтобы любой Непись сделался статуей, я видел такой скрипт в 1 Аддоне.
Но ево у меня уже нет! Стереть все эктион у Непися и Наложить Камень в Плоть! тоюеж чтобы он недвигался и покрылся камнем! |
![]()
Сообщение
#780
|
|
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Тут надо юзать эффекты катсцен: CutsceneParalyse и еще что-нибудь (я б кинул для верности все, кроме инвизбла)
|
![]()
Сообщение
#781
|
|||
Level 5 ![]() ![]() Класс: Рейнджер Характер: Neutral Good Раса: Человек ![]() |
Окаменение - это, вроде EffectPetrify() |
||
![]()
Сообщение
#782
|
|
Level 6 ![]() Класс: Фея Характер: Chaotic Good Раса: Элементаль NWN: Маппинг Gem of the North ![]() |
Вставить в скрипт OnSpawn Creature.
// * If Statue, apply statue visual effect if (GetCreatureFlag(OBJECT_SELF, "STATUE") == TRUE) { effect eStatue = EffectPetrify(); eStatue = ExtraordinaryEffect(eStatue); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eStatue, OBJECT_SELF); SetPlotFlag(OBJECT_SELF, TRUE); } В Тулсете на монстер-статуе прописать переменную тип int, имя STATUE, значение TRUE. В теории надо еще спелл Stone to Flesh слегка отредактировать, чтобы такую статую нельзя было раскаменить. |
![]()
Сообщение
#783
|
|||
Level 10 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
Lexey aka Hawk Спасибо Сделаю!
.
Можно чуть по подробнее как сделать! |
||
![]()
Сообщение
#784
|
|||||
Level 6 ![]() Класс: Фея Характер: Chaotic Good Раса: Элементаль NWN: Маппинг Gem of the North ![]() |
В SoU это было сделано так. На событии OnSpellCastAt моба-статуи стоит такой скрипт
Я бы в соответствующие спеллы просто вставил такую строчку.
В любом случае это лишь один из многочисленных вариантов. |
||||
![]()
Сообщение
#785
|
|
Level 4 ![]() ![]() Класс: Маг Характер: Chaotic Good Раса: Эльф ![]() |
Как выглядит скрипт из начала компании ХоТУ, который обдирал игрока как липку и переносил все его вещи в отдаленный сундук в Андердарке. Я искал, но не нашел.
|
![]() ![]() |
Текстовая версия | Сейчас: 12th May 2025 - 10:18 |