![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2051
|
|
Level 9 ![]() ![]() ![]() Класс: Волшебник Характер: Neutral Good Раса: Эльф ![]() |
Если зомби всегда будут лежать на одних и тех же местах (или может это убитые на случайном месте персонажи?) то имхо, легче всего нарисовать тригер со скриптом на OnEnter.
Если нет, можно убить чара на спауне (не забыв поставить нон-дестроибл) а на хертбите организовать подобие персепшена: как увидел игрока лечиться и делаться хостайлом (при мертвом персонаже персепшен работать вроде не будет). Кстати можно сделать так чтобы зомби не просто вскакивал, а поднимался с анимацией. Точно не знаю, но для этого похоже нужно его заставить либо "использовать" самого себя либо идти на локацию где он лежал. Надо выяснять эксперементально (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#2052
|
|
Level 5 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Дракон NWN: Скриптинг [Sn] ![]() |
Lorendroll
QUOTE Если нет, можно убить чара на спауне (не забыв поставить нон-дестроибл) а на хертбите организовать подобие персепшена Не смотря на то, что тушка зомби не исчезла, формально для движка зомби мертв, а потому не один эвент с него не сработает, в тч и ХБ. Имхо удобнее в данной ситуации все же триггер, соответственно всю анимацию туда же...какую - на вкус автора модуля, я бы предложил туже что и при закле воскрешения. (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#2053
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Есть один прекрасный скрипт, который создает скелетов из сложенных черепов. Работает не на основе триггера, а проверяет, есть ли рядом игрок, если есть, пересоздать объект. Также можно и тут. Лежат, к примеру, мертвые зомби (каламбур; куда уж мертвее), а проходящий мимо игрок их поднимает. Учуяли свежую кровь и душу (IMG:style_emoticons/kolobok_light/smile.gif)
самим зомби сделать в момент появления анимацию. Я так создавал Таннари. Вначале кидал на них эффект нулевого объекта, потом пересоздавал через 1-2 секунды в нормальном облике, чтобы монстры не тупили, а сразу шли в бой. В нашем случае это нужно, чтобы зомби положить на землю, а потом через анимацию их плавно поднять. Но необходимо так подгадать время исчезновения трупов, чтобы это не казалось пропущенными кадрами в плохом кино. |
![]()
Сообщение
#2054
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Neutral Раса: Человек ![]() |
Спасибо вам всем.Придется ставить на триггер.
|
![]()
Сообщение
#2055
|
|
Mystery ![]() Класс: Маг Характер: Lawful Evil Раса: Тварь NWN: Контент Амен ![]() |
QUOTE(Zirrex @ Mar 13 2006, 10:26) [snapback]72517[/snapback] Есть один прекрасный скрипт, который создает скелетов из сложенных черепов. Работает не на основе триггера, а проверяет, есть ли рядом игрок, если есть, пересоздать объект. Также можно и тут. Лежат, к примеру, мертвые зомби (каламбур; куда уж мертвее), а проходящий мимо игрок их поднимает. Учуяли свежую кровь и душу Хм-хм... более того, есть такой объект среди стандартных, во вкладке Battlefield... даже два - Zombie Corpse и одна из Pile of Sculls. Они ровненько это и делают. (скрипты там назначены на hb) |
![]() ![]()
Сообщение
#2056
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
КТО ЗНАЕТ ГДЕ МОЖНО НАЙТИ ЛЕКСИКОН РУССКОЙ ВЕРСИИ?
|
![]()
Сообщение
#2057
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE(Артём @ Mar 13 2006, 22:07) [snapback]72578[/snapback] КТО ЗНАЕТ ГДЕ МОЖНО НАЙТИ ЛЕКСИКОН РУССКОЙ ВЕРСИИ? НИ КТО НЕ ЗНАЕТ - НЕТ ЕГО!!! (IMG:style_emoticons/kolobok_light/biggrin.gif) Есть на сайте перевод некоторых статей, а так - промт или сократ в руки и вперед. Я так лексикон и читаю, вроде успешно. |
![]() ![]()
Сообщение
#2058
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
То-что на сайте я давно скачал.Попробую абайтися переводчиком!
|
![]()
Сообщение
#2059
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Артём, подобные вещи редко переводят, если только не нужно их пускать в большой тираж и знакомить множество людей с их тематикой. Но если человека интересует данный предмет, он сделает все, чтобы его изучить. Мне хватает английской версии, да и все познается экспериментальным путем.
|
![]()
Сообщение
#2060
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
QUOTE(mamuc @ Feb 27 2006, 09:33) [snapback]71143[/snapback] Вот кусок скрипта официантки. Нужно, чтобы она шла так, как нужно, и при этом не зависала и не прерывалась. Попробовал делать блокировку/разблокировку очереди - официантка подбегает и ничего не делает. (Скрипт висит на OnConversation) Нужно отделить мух от котлет. Не все команды станут в очередь, а тем более проверки идут мгновенно. Попробуй повесить подобный скрипт на ХБ официантки. Написан по твой идеи, для 4 персов. Блокировка на весь маршрут, но в конце можно поговорить с персом. NSS void GoToObject(object oTarget, object oPC)
{ AssignCommand(oPC, ActionMoveToObject(oTarget, FALSE)); AssignCommand(oPC, ActionSpeakString("Получите ваш заказ.")); AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_READ, 1.0, 3.0)); AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 1.0, 2.0)); } void WalkToObject(object oTarget, object oPC, vector vFace) { AssignCommand(oTarget, ClearAllActions()); AssignCommand(oTarget, SetFacingPoint(vFace)); DelayCommand(3.0, AssignCommand(oTarget, ActionSpeakString("Спасибо!"))); DelayCommand(5.0, AssignCommand(oTarget, ActionPlayAnimation(ANIMATION_FIREFORGET_DRINK, 1.0, 5.0))); } void main() { object oPC = OBJECT_SELF; object oTarget = GetNearestObjectByTag("POSIT_1"); object oTarget2 = GetNearestObjectByTag("POSIT_2"); object oTarget3 = GetNearestObjectByTag("HOZYAIN"); vector vFace = GetPosition(oPC); //================ МАРШРУТ ==================================================== if(GetLocalInt(OBJECT_SELF, "MARSH") != 1) { SetLocalInt(oPC,"MARSH",1); AssignCommand(OBJECT_SELF, ClearAllActions()); DelayCommand(0.3, SetCommandable(FALSE, oPC)); // заблокировать очередь GoToObject(oTarget, oPC); GoToObject(oTarget2, oPC); AssignCommand(oPC, ActionMoveToObject(oTarget3, FALSE)); AssignCommand(oPC, ActionSpeakString("Получите выручку. Ох, и жаркий денек!")); AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 1.0, 3.0)); DelayCommand(30.1,SetCommandable(TRUE,oPC)); // разблокировать очередь DelayCommand(30.5, AssignCommand(oPC, SpeakString("Ох, жара!"))); DelayCommand(40.0,SetLocalInt(OBJECT_SELF,"MARSH",FALSE)); // длительность маршрута } //---------------- проверки каждый раунд --------------------------------------- if (GetDistanceBetween(oTarget, oPC) < 3.0) WalkToObject(oTarget, oPC, vFace); if (GetDistanceBetween(oTarget2, oPC) < 3.0) WalkToObject(oTarget2, oPC, vFace); if (GetDistanceBetween(oTarget3, oPC) < 4.0) { switch (Random(3)+1) { case 1: AssignCommand(oPC, SpeakString("Ох, и жаркий денек!")); AssignCommand(oTarget3, SpeakString("Давай работай!")); AssignCommand(oTarget3, SetFacingPoint(vFace)); break; case 2: AssignCommand(oPC, SpeakString("Давай пива и рыбу, есть еще заказ.")); AssignCommand(oTarget3, SpeakString("Бойко торгуем!")); AssignCommand(oTarget3, SetFacingPoint(vFace)); break; case 3: AssignCommand(oPC, SpeakString("Ноги уже не держат...")); AssignCommand(oTarget3, SpeakString("Вперед и с песней!")); AssignCommand(oTarget3, SetFacingPoint(vFace)); break; } } } Сообщение отредактировал gennady - Mar 15 2006, 06:05 |
![]() ![]()
Сообщение
#2061
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
У меня вопрос.Как в он спаун одного непися, сделать анимацыю другого непися?
К примеру:После того как непись поздаровался (Аним преветствия) другой непись поклонился (Аним поклон)? |
![]()
Сообщение
#2062
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Артём, тебе ведь уже писали.
NSS object oNPC = OBJECT_SELF;//это тот на ком стоит скрипт object oNPC1 = GetOBjectByTag("ТАГ");//это тот другой //непись, нак отором стоит скрипт, что-то делает. //2.0 - время, через которое нужно выполнить действие. Ставь скока там надо. //AssignCommand - дать команду oNPC. //ActionPlayAnimation - команда проиграть анимацию DelayCommand(2.0, AssignCommand(oNPC, ActionPlayAnimation(ТУТ_НУЖНАЯ _АНИМАЦИЯ))); //другая непись что-то делает //2.0 - время, через которое нужно выполнить действие. Ставь скока там надо. //AssignCommand - дать команду oNPC. //ActionPlayAnimation - команда проиграть анимацию DelayCommand(3.0, AssignCommand(oNPC1, ActionPlayAnimation(ТУТ_НУЖНАЯ _АНИМАЦИЯ))); Читай на форуме тему по анимации! ТУТ Сообщение отредактировал -fenix- - Mar 19 2006, 12:32 |
![]() ![]()
Сообщение
#2063
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
Феникс я написал так как ты сказал.Но всеровно анимацыя второго неиграит.
NSS void main()
{ object oNPC = OBJECT_SELF; object oNPC1 = GetOBjectByTag("GAD_3"); DelayCommand(2.0, AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_LISTEN,1.0,3.0f)));; DelayCommand(0.5, SpeakString("?? ??… ??????? ????????, ??? ???? !")); DelayCommand(PlaySound("vs_favhen5m_say")(IMG:style_emoticons/kolobok_light/wink3.gif) ; DelayCommand(3.0, AssignCommand(oNPC1, ActionPlayAnimation(ANIMATION_LOOPING_LISTEN,1.0,3.0f))); object oNPC=GetObjectByTag("GAD_3"); DelayCommand(3.5, AssignCommand(oNPC, SpeakString("? ??????? ??? ?? ?????? ????????!"))); DelayCommand(2.0, AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_LISTEN,1.0,3.0f))); DelayCommand(6.5, SpeakString("?? ??? ?????? ????? !")); DelayCommand(PlaySound("vs_favhen5m_yes")(IMG:style_emoticons/kolobok_light/wink3.gif) ; } |
![]()
Сообщение
#2064
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
QUOTE DelayCommand(PlaySound("vs_favhen5m_say"); - неправельно QUOTE object oNPC = OBJECT_SELF; ... object oNPC=GetObjectByTag("GAD_3"); - неправельно QUOTE object oNPC1 = GetOBjectByTag("GAD_3"); - неправельно научись смотреть на ошибки компилятора.. 1. DelayCommand, 1й аргумент всегда время через которое действие будет воспроизводится! 2. нельзя так делать..если хочеш переменой задать другое значение, то тип нельзя указывать( object oPC = GetEnteringObject(); ... oPC=GetExitingObject(); к примеру) 3. компилятор различает регистр..( GETENTERINGOBJECT() - неправельно, GetEnteringObject() - правельно.... )... GetObjectByTag надо... З.Ы. QUOTE object oNPC = OBJECT_SELF; необязательноQUOTE object oNPC = OBJECT_SELF; object oNPC1 = GetOBjectByTag("GAD_3"); .. object oNPC=GetObjectByTag("GAD_3"); брет... Сообщение отредактировал [MoF]Darth_Nick - Mar 19 2006, 23:10 |
![]()
Сообщение
#2065
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(Артём @ Mar 19 2006, 22:32) [snapback]73339[/snapback] Феникс я написал так как ты сказал.Но всеровно анимацыя второго неиграит. а ЭТО скомпилировалось? (IMG:style_emoticons/kolobok_light/shok.gif) |
![]()
Сообщение
#2066
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Артём, вот так все компилируется, но явно не работает правильно, ибо разобраться кто у тебя когда что делает не представляется возможным - это сам правь.
NSS void main() { object oNPC = OBJECT_SELF; object oNPC1 = GetObjectByTag("GAD_3"); object oNPC2 = GetObjectByTag("GAD_4"); DelayCommand(2.0, AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_LISTEN,1.0,3.0f))); DelayCommand(0.5, SpeakString("?? ??… ??????? ????????, ??? ???? !")); DelayCommand(2.0, PlaySound("vs_favhen5m_say")); DelayCommand(3.0, AssignCommand(oNPC1, ActionPlayAnimation(ANIMATION_LOOPING_LISTEN,1.0,3.0f))); DelayCommand(3.5, AssignCommand(oNPC, SpeakString("? ??????? ??? ?? ?????? ????????!"))); DelayCommand(2.0, AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_LISTEN,1.0,3.0f))); DelayCommand(6.5, SpeakString("?? ??? ?????? ????? !")); DelayCommand(2.0, PlaySound("vs_favhen5m_yes")); } Пара пояснений: 1) object oNPC1 = GetObjectByTag("GAD_3"); object - тип переменной, вданном случае указывает, что в данной переменной хранится объект. oNPC1 - имя переменной с префиксом. Имя - вещь уникальная, двух переменных с одним именем быть не может. Точнее может, но это совсем не надо, ибо последняя заменяет первую. У тебя есть такая ошибка NSS object oNPC = OBJECT_SELF; object oNPC=GetObjectByTag("GAD_3"); GetObjectByTag("GAD_3") - функция, которая "помещает" в переменную объект с тегом GAD_3. И такая ошибка NSS object oNPC1 = GetObjectByTag("GAD_3"); object oNPC=GetObjectByTag("GAD_3"); 2) DelayCommand(2.0, PlaySound("vs_favhen5m_yes")); Надо указывать время, через которое будет выполнена команда. Я поставил 2.0 - ставь скока надо. 3) Следи за кол-вом скобок - слева и справа их должно быть одинаково и за кол-вом ";" - должна быть одна в строке. Прочитай темку, на которую я дал тебе ссылку, а еще вот ЭТУ, ЭТУ и ЭТУ. |
![]() ![]()
Сообщение
#2067
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
Теперь я понял свои глупые ошибки.
Спосибо! |
![]()
Сообщение
#2068
|
|
Level 8 ![]() ![]() ![]() Класс: Тайный Лучник Характер: Lawful Good Раса: Эльф ![]() |
Привет,
Такая вот проблемка, нужно сделать невидимую дверь... Но невидимая до тех пор, пока о ней не розкажет НПС. Надеюсь, что это можно сделать скриптами... |
![]()
Сообщение
#2069
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
вешаеш на дверь cutscene_invis, потом убираеш
NSS effect eVis = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY); object oDoor = GetObjectByTag(""); // or OBJECT_SELF ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVis,oDoor); потом к примеру NSS object oDoor = GetObjectByTag(""); // or OBJECT_SELF
RemoveEffect(oDoor,GetFirstEffect(oDoor)); Сообщение отредактировал [MoF]Darth_Nick - Mar 20 2006, 17:56 |
![]()
Сообщение
#2070
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE(Nashman @ Mar 20 2006, 16:24) [snapback]73434[/snapback] Такая вот проблемка, нужно сделать невидимую дверь... Но невидимая до тех пор, пока о ней не розкажет НПС. Надеюсь, что это можно сделать скриптами... Какая дверь? Ну вообще можно создавать в нужном месте из палитры секретную дверь(эт которая вместе с рамой), вот и все. Так пойдет? |
![]() ![]()
Сообщение
#2071
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
У меня как всегда очередной глупый вопрос! Какой нежно написать скрипт чтобы убить нужных мне неписей, желательно с каким-нибудь эффектом.
У меня как всегда очередной глупый вопрос! Какой нежно написать скрипт чтобы убить нужных мне неписей, желательно с каким-нибудь эффектом. |
![]()
Сообщение
#2072
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
хыть так:
NSS object oNPC = GetObjectByTag("some"); // можно и Nearest effect eEff = EffectDeath(); ApplyEffectToObject(DURATION_TYPE_INSTANT,eEff ,oNPC); еффект аналогично, но eEff будет равен EffectVisualEffect(константа VFX_*) от еффекта зависит еще его продолжительность DURATION_TYPE_* еще полезная ф-ция: NSS // Link the two supplied effects, returning eChildEffect as a child of
// eParentEffect. // Note: When applying linked effects if the target is immune to all valid // effects all other effects will be removed as well. This means that if you // apply a visual effect and a silence effect (in a link) and the target is // immune to the silence effect that the visual effect will get removed as well. // Visual Effects are not considered "valid" effects for the purposes of // determining if an effect will be removed or not and as such should never be // packaged *only* with other visual effects in a link. effect EffectLinkEffects(effect eChildEffect, effect eParentEffect ) Сообщение отредактировал [MoF]Darth_Nick - Mar 21 2006, 00:17 |
![]()
Сообщение
#2073
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
Понятно
|
![]()
Сообщение
#2074
|
|
Level 8 ![]() ![]() ![]() Класс: Тайный Лучник Характер: Lawful Good Раса: Эльф ![]() |
QUOTE Ну вообще можно создавать в нужном месте из палитры секретную дверь(эт которая вместе с рамой), вот и все. Так пойдет А как ею управлять? ТОесть загружается обл. и двери нету, а после разговора с НПС дверь есть?
|
![]()
Сообщение
#2075
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Nashman, по окончании разговора делается скриптовая проверка, есть ли нужный объект в области, если нет, создать его там, где необходимо. В момент перехода через такую дверь, поставить скрипт на действие OnUsed, чтобы удалить дверь.
|
![]() ![]() |
Текстовая версия | Сейчас: 29th April 2025 - 12:45 |