![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3001
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Как можно заставить объект двигаться к определенной точке. Правда иногда пропадают кадры, т.е. плейсы...Neverwinter Script //ПЕРЕДВИЖЕНИЕ ПЛЕЙСА
// object oSelf - Объект управлЯющий передвижением // string sGtTag - тэг передвигаемого объекта // float fDist=0.1 - дистанциЯ одного шага // float fSpeed=0.3 - скорость кадра // int iShag=20 количество создаваемых объектов (кадров) // float fOrient=180.0 - направление движениЯ void multik(object oSelf, string sGtTag, float fDist=0.1, float fSpeed=0.3, int iShag=20, float fOrient=180.0); //____________________ ПЕРЕДВИЖЕНИЕ ПЛЕЙСА _____________________________________ void multik(object oSelf, string sGtTag, float fDist=0.1, float fSpeed=0.3, int iShag=20, float fOrient=180.0) { if (GetLocalInt(oSelf,"STENA") == 1) return; object oPlace = GetNearestObjectByTag(sGtTag, oSelf); effect eVis = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY); // невидимость effect eIskra = EffectVisualEffect(VFX_COM_SPARKS_PARRY); int i; AssignCommand(oSelf, ClearAllActions()); AssignCommand(oSelf, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE )); ApplyEffectToObject(DURATION_TYPE_INSTANT, eIskra, oSelf); DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, oPlace)); for (i=1; i<iShag; i++) { vector vSpawn = GetPosition(oPlace); float fFacing = GetFacing(oPlace); vSpawn.x += cos(fFacing) * fDist*i; vSpawn.y += sin(fFacing) * fDist*i; // Если отрицательное значение, то locSpawn позади oPC location locSpawn = Location(GetArea(oPlace), vSpawn, fOrient+fFacing); object oNew = CreateObject(OBJECT_TYPE_PLACEABLE, GetResRef(oPlace), locSpawn, FALSE, sGtTag); SetPlotFlag(oNew, TRUE); // Сюжетный ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, oNew); AssignCommand(oSelf, ActionDoCommand(RemoveEffect(oNew, GetFirstEffect(oNew)))); if (i<(iShag-1)) { if (i<3) AssignCommand(oSelf, ActionWait(1.0)); else AssignCommand(oSelf, ActionWait(fSpeed)); AssignCommand(oSelf, ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_ PERMANENT, eVis, oNew))); AssignCommand(oSelf, ActionDoCommand(DestroyObject(oNew, 0.5))); } } AssignCommand(oPlace,PlaySound("al_cv_millwheel1")); DelayCommand(4.0, AssignCommand(oPlace,PlaySound("as_cv_minercar1"))); SetLocalInt(oSelf,"STENA",1); AssignCommand(oSelf, ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_ INSTANT, eIskra, oSelf))); AssignCommand(oSelf, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)) ; AssignCommand(oSelf, ActionDoCommand(SetLocalInt(oSelf,"STENA",0))); AssignCommand(oSelf, ActionDoCommand(DestroyObject(oPlace))); } |
![]()
Сообщение
#3002
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
нипаняяяяяятна:
Событие OnDeath того же плейса (тарана): Код void main() { ActionCastSpellAtLocation(SPELL_EARTHQUAKE, GetLocation(GetWaypointByTag("taran_wp")), METAMAGIC_MAXIMIZE, 1, PROJECTILE_PATH_TYPE_DEFAULT, TRUE); } НИ-ЧЕ-ГО не происходит... А если поставить этот КастСпелл, скажем в другой обработчик (ну за пару секунд до дестроя итема), то все нормально - земля трясется, град сыпется... |
![]()
Сообщение
#3003
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Всё верно, плейс не успевает выполнить экшен.
|
![]()
Сообщение
#3004
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
и каг быть? )
разобралась... |
![]()
Сообщение
#3005
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Перевесить этот экшен на что-нибудь рядом и живое (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#3006
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
так он и так, сам экшн повешен на Вейпоинт, который находится рядом с плейсом (который и уничтожается).
|
![]()
Сообщение
#3007
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Нет, ты кастуешь на этот вэйпоинт, а плейс не успевает собственно сотворить заклинание перед смертью.
Можно попробовать ExecuteScript, думаю. Сообщение отредактировал greye - Nov 8 2008, 19:00 |
![]()
Сообщение
#3008
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Neverwinter Script object oWP = GetWaypointByTag("taran_wp"); Можно попробовать так. Чёрт его знает, выполнит ли вейпоинт экшен, если нет - надо плейс невидимый рядом создать и на него перевесить (IMG:style_emoticons/kolobok_light/smile.gif)
AssignCommand(oWP, ActionCastSpellAtLocation(SPELL_EARTHQUAKE, GetLocation(oWP), METAMAGIC_MAXIMIZE, 1, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); |
![]()
Сообщение
#3009
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
щас (на 1.69) хз, но раньше через вэйпы такую штуку было нельзя протащить.
|
![]()
Сообщение
#3010
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
И снова всем привет.
Так и не вышло у меня со скриптом для враждебности к трем фракциям игроков,но не их монстрам, хотя знаю что возможно, так как видел подобное на Американских серверах(К примеру Серевер:"Alestorm LOTR Team PvP", вообщем вот мой модуль, если кто то может с моим проектом я буду счастлив, но сейчас я застрял на враждебности, игроков друг к другу. Пожалуйста посмотрите мой модуль, со скриптами, завершённый на 50%, и помогите с завершающим скриптом, дальше я его доделаю сам, но если кто то присоединится к моему проекту, и будет помощником, я буду очень счастлив: http://narutoandothers.ucoz.ru/Files/STARC...aFinishOn60.zip Так же я могу создать для этого сервера, свой сайт, форум и всё что угодно, с этим у меня нет проблем. Сообщение отредактировал Sugo77 - Nov 18 2008, 18:16 |
![]()
Сообщение
#3011
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Как и где определяется в игре, будет ли существо умерщвлено жестоко или нет(месиво или нет)? В EffectDeath есть параметр nSpectacularDeath, отвечающий за это, но для начала мне надо отконтролить его срабатывание в модуле.
|
![]()
Сообщение
#3012
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Цитата Как и где определяется в игре, будет ли существо умерщвлено жестоко или нет(месиво или нет)? В EffectDeath есть параметр nSpectacularDeath, отвечающий за это, но для начала мне надо отконтролить его срабатывание в модуле. Да там есть такой параметр, но особой разницы я не увидела...если хочешь жестко, то тебе нужны спецэффекты разбрасывания костей и кровищи...они есть в стандартном наборе все эффекты,которые можно задавать скриптово, можно глянуть в visualeffect.2da....как то так называется. Кстати есть интересная анимация - судороги...с взрывом кровищи и последующем создавании плэйсов было бы эффектно ^ ^ P.S. на ваулте можно найти плэйсовые куски рук и ног, голов...там этого полно )) Сообщение отредактировал Melisse - Nov 25 2008, 17:00 |
![]()
Сообщение
#3013
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Как и где определяется в игре, будет ли существо умерщвлено жестоко или нет(месиво или нет)? В EffectDeath есть параметр nSpectacularDeath, отвечающий за это, но для начала мне надо отконтролить его срабатывание в модуле. Не уверен, но на это может влиять настройка в SetIsDestroyable.Хотя подозреваю, что это где-нибудь в 2da определяется. |
![]()
Сообщение
#3014
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
2Melisse )) Спасибо за идею с эффектами, не думал об этом.
2virusman В 2da я этого не нашел, но SetIsDestroyable хватает для работы, спасибо. |
![]()
Сообщение
#3015
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Вопрос наполовину глупый: как можно выйти из очереди OnDeath события? Мне надо поставить с него команду, но так, чтобы она выполнялась без флага "умирающий".
P.S. Прошу прощения за даблпост. Обошелся без этого, но вопрос остается: можно ли вызвать команду так, чтобы она была в очереди другого события? SignalEvent это не то, т.к. все равно последующие команды идут в очередь основного события(по-крайней мере, по действию). Сообщение отредактировал greye - Nov 29 2008, 13:36 |
![]()
Сообщение
#3016
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
greye, опиши задачу. Так будет проще думать.
|
![]()
Сообщение
#3017
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Вопрос наполовину глупый: как можно выйти из очереди OnDeath события? Мне надо поставить с него команду, но так, чтобы она выполнялась без флага "умирающий". AssignCommand? Действия назначаются не на события, а на объекты.
P.S. Прошу прощения за даблпост. Обошелся без этого, но вопрос остается: можно ли вызвать команду так, чтобы она была в очереди другого события? SignalEvent это не то, т.к. все равно последующие команды идут в очередь основного события(по-крайней мере, по действию). |
![]()
Сообщение
#3018
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Я уж и забыл про это. В общем, мне надо было SetIsDestroyable(FALSE) ставить в скрипт OnDeath при некоторых условиях, после чего было воскрешение, соответственно, сразу за ним необходимо было вернуть SetIsDestroyable(TRUE), но в таком случае крич исчезал согласно corpse fade time. Любые перенаправления в OnUserDefined или через ExecuteScript приводили к тому же.
Сообщение отредактировал greye - Dec 7 2008, 11:18 |
![]()
Сообщение
#3019
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Видимо, флаг, заданный SetIsDestroyable, отрабатывает до события OnDeath. Так что лучше поставить SetIsDestroyable(FALSE) на спауне, а при смерти либо "добивать", либо нет.
|
![]()
Сообщение
#3020
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Это да, просто я забыл еще сказать, что это может происходить с одним существом много раз, то есть OnSpawn тут не поможет, так как надо было, чтобы это значение менялось туда-обратно при каждом выполнении.
Добавлено: не каждый раз, а при определенных условиях, другое дело, что эти условия могут много раз повторяться. P.S. Да и еще, проблема была также с тем, что если этот флаг оставить FALSE, то при убийстве крича будет невидимая подвеска < name> dead, что тоже неприятно, поэтому и надо было переставлять флаг. Сообщение отредактировал greye - Dec 7 2008, 12:11 |
![]()
Сообщение
#3021
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
А зачем тебе тогда SetIsDestroyable трогать, если каждый раз существо будет воскрешаться?
|
![]()
Сообщение
#3022
|
|
Level 2 ![]() Класс: Воин Характер: Neutral Good Раса: Человек ![]() |
Товарищи, подскажите пожалуйста, как составить скрипт, чтобы, например персонажа арестовали и сажают в тюрьму, при этом у него забирают все его вещи из инвентаря и все что на нем, но потом, когда его выпускают из тюрьмы, все вещи ему возвращают обратно. Мне интересно, как должны выглядеть скрипты на такую манипуляцию с вещами персонажа? Перерыл форум, смотрел в других модулях - ничего такого похожего ненашел. Может кто-нибудь знает?
С уважением, Андрей ЮП. |
![]()
Сообщение
#3023
|
|
Level 1 Класс: Фея Характер: Chaotic Good Раса: Фея ![]() |
Это целый цикл скриптов.
Очень широкий вопрос, слишком много тонкостей. Например: Как ты хочешь чтобы это выглядело - кат сценой или игровой процесс...сжали в тюрму - вели или просто персонаж прыгл в тюрму после ареста... Эти нюансы прямо пропорциональны количеству скритов и времени затраченного на их синхронизацию. А вообще все функции действий описаны ТУТ |
![]()
Сообщение
#3024
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
нене, там не те функции.
Андрей ЮП, глянь ПЛ, первую главу. Тот эпизод, где игрока огревают по башке и он оказывается у Ви. Но вообще все просто, скрипт отбора всех вещей есть (выкладывался не раз, обычно юзают в начале модуля. Просто надо до дестроя добавить копирвание в сундук). Ну а вернуть обратно - все тоже самое, но объекты (игрок-сундук) местами меняются. А как это все обставлено (стража, катсцена, тюрьма) - это уже совсем другая история. |
![]()
Сообщение
#3025
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Андрей ЮП, еще можешь глянуть в ПВ скрипты которые срабатывают при попытке украсть что-то. Но боюсь разобраться будет в них сложно...
|
![]() ![]() |
Текстовая версия | Сейчас: 27th April 2025 - 15:42 |