![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2736
|
|
Level 1 Класс: Маг Характер: Neutral Good Раса: Чудовище ![]() |
Где можно узнать функции команд и принципы составления скриптов?
Может вопрос и не в тему. |
![]()
Сообщение
#2737
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Все функции, имеют описание в самом тулсете. Так же есть Лексикон. Перевод, тоже имеется (смотри сайт).
Принципы построения, разжеваны в мануалах, это опять сайт/Лексикон. |
![]()
Сообщение
#2738
|
|
Level 3 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
Neverwinter Script Source void RemoveXPFromParty(int nXP, object oPC, int bAllParty=TRUE) { if (!bAllParty) { nXP=(GetXP(oPC)-nXP)>=0 ? GetXP(oPC)-nXP : 0; SetXP(oPC, nXP); } else { object oMember=GetFirstFactionMember(oPC, TRUE); while (GetIsObjectValid(oMember)) { nXP=(GetXP(oMember)-nXP)>=0 ? GetXP(oMember)-nXP : 0; SetXP(oMember, nXP); oMember=GetNextFactionMember(oPC, TRUE); } } } void ApplyPenalty(object oDead) { int nXP = GetXP(oDead); int nPenalty = 250 * GetHitDice(oDead); int nHD = GetHitDice(oDead); // * You can not lose a level with this respawning int nMin = ((nHD * (nHD - 1)) / 2) * 1000; int nNewXP = nXP - nPenalty; if (nNewXP < nMin) nNewXP = nMin; SetXP(oDead, nNewXP); int nGoldToTake = FloatToInt(0.20 * GetGold(oDead)); // * a cap of 10 000gp taken from you if (nGoldToTake > 50000) { nGoldToTake = 50000; } AssignCommand(oDead, TakeGoldFromCreature(nGoldToTake, oDead, TRUE)); DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oDead, FALSE)); DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oDead, FALSE)); } #include "nw_i0_plot" /* Script generated by Lilac Soul's NWN Script Generator, v. 2.0 For download info, please visit: http://nwvault.ign.com/View.php?view=Other...4683&id=625 */ //Goes OnPlayerRespawn of the module properties void main() { object oPC = GetLastRespawnButtonPresser(); object oDead = oPC; string sArea = GetTag(GetArea(oPC)); if (!GetIsPC(oPC)) return; ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPC); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPC)), oPC); RemoveEffects(oPC); object oTarget; oTarget = oPC; //Visual effects can't be applied to waypoints, so if it is a WP //apply to the WP's location instead int nInt; nInt = GetObjectType(oTarget); if((sArea == "AREA1") || ( sArea == "AREA2") == FALSE ) { //Для Всех location lHALFELFTarget; oTarget = GetWaypointByTag("TN_SPAWN"); lHALFELFTarget = GetLocation(oTarget); if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_TIME_STOP), oTarget); else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_TIME_STOP), GetLocation(oTarget)); if (GetAreaFromLocation(lHALFELFTarget)==OBJECT_INVALID) return; AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionJumpToLocation(lHALFELFTarget)); ApplyPenalty(oDead); } } Задача скрипта: Ставиться в онреспавн, и должен кидать игрока после смерти в опр. точку. Тут все нормально, проблема в исключениях, когда игрок должен респавниться на месте. Есть 2 локации AREA1 & AREA2, когда игрок в этих локациях, после смерти при нажатии респавна он появляется на том же месте где и умер, без потери опыта\золота, с этим и проблема, в AREA2 все нормально, а первой не правильно работает, когда прописываю только одну локацию, то опять же все правильно работает. Может я использовал не тот символ " || " ? Помогите пожалуйста (IMG:style_emoticons/kolobok_light/rolleyes.gif) |
![]()
Сообщение
#2739
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Neverwinter Script Source if(sArea != "AREA1" || sArea != "AREA2") Попробуй так. Ты в своем выражинии описал ситуацию так: Если стринг арены 1 равен AREA1 или стринг арены2 не равен AREA2. Поэтому и косяк. Можно и так записать. Придет Лекс скажет как грамотней (IMG:style_emoticons/kolobok_light/smile.gif) Но я бы так написал. Neverwinter Script Source if(sArea == "AREA1" || sArea == "AREA2")
{ return; } else { // ТУТ ТВОЙ СКРИПТ } |
![]()
Сообщение
#2740
|
|
Level 3 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
Aiwan, спасибо большое. Первый вариант не сработал, но второй работает как часы (IMG:style_emoticons/kolobok_light/rolleyes.gif)
|
![]()
Сообщение
#2741
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
QUOTE(Aiwan @ Jun 26 2007, 22:48) [snapback]109930[/snapback] Neverwinter Script Source if(sArea != "AREA1" || sArea != "AREA2") Попробуй так. |
![]()
Сообщение
#2742
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(virusman @ Jun 27 2007, 03:42) [snapback]109938[/snapback] Не ||, а &&. Тогда не будет работать никогда, ведь будет поиск двух лок одновременно, а это всегда будет FALSE. |
![]()
Сообщение
#2743
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(Aiwan @ Jun 27 2007, 09:54) [snapback]109953[/snapback] Тогда не будет работать никогда, ведь будет поиск двух лок одновременно, а это всегда будет FALSE. нет. Neverwinter Script Source if(sArea != "AREA1" && sArea != "AREA2") будет выдавать TRUE для всех локаций, тэг который не АРЕНА1 И не АРЕНА2. (те будет делать как раз то, что нужно) ps: легко заметить, что условия, данные тобой и Вирусманом эквивалентны. Достаточно применить базовые принципы дискретной математики (ну или логики) |
![]()
Сообщение
#2744
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
QUOTE(Lex @ Jun 27 2007, 10:48) [snapback]109956[/snapback] ps: легко заметить, что условия, данные тобой и Вирусманом эквивалентны. Достаточно применить базовые принципы дискретной математики (ну или логики) То, что у Айвана, всегда возвращает TRUE.Я просто применил закон Де Моргана: QUOTE not (P and Q) = (not P) or (not Q)
not (P or Q) = (not P) and (not Q) |
![]()
Сообщение
#2745
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Да, я пропустил то что там два &&. Законы никакие не применял извините (IMG:style_emoticons/kolobok_light/pardon.gif)
|
![]()
Сообщение
#2746
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(virusman @ Jun 27 2007, 13:21) [snapback]109957[/snapback] Я просто применил закон Де Моргана: ага, я именно про него и говорил (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#2747
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
Задача такая. НПС бежит к цели по "коридору", и в конце атакует ее (это его единственная цель для атаки, и он направлен на нее через скрипт).
По обоим сторонам коридора стоят "орудия" которые непрерывно атакуют НПС. Это могут быть плейсы или кричи. Что и как необходимо изменить, чтобы бегущий НПС ни при каких случаях не стал бы атаковать или отвлекаться на стреляющих, даже если конечная цель будет недоступна (например заблокирован проход). Не знаю даже с чего начать. |
![]()
Сообщение
#2748
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
хм.. как вариант - переписать этому НПС скрипт onAttack и onDamage, чтобы НПС не атаковал в ответ тех, кто бьет его, если это не игрок или кто-то из партии игрока.
другой вариант - эти по краям корридора атакуют через FakeSpell, а дамаг кладется скриптом отдельно - тут нужно прописать для этих НПС ХБ скрипт свой. |
![]()
Сообщение
#2749
|
|
Level 4 ![]() ![]() Класс: Клерик Характер: Lawful Neutral Раса: Человек ![]() |
а можно я ляпну? (IMG:style_emoticons/kolobok_light/ph34r.gif) (IMG:style_emoticons/kolobok_light/unsure.gif) (IMG:style_emoticons/kolobok_light/unsure.gif)
хм.. как вариант - переписать этому НПС скрипт onAttack и onDamage, чтобы НПС не атаковал в ответ тех, кто бьет его, если это не игрок или кто-то из партии игрока. я бы наверно в этих скриптах делал проверку на текущее действие (бой) и если игрок в бою (GetIsInCombat (что то такое (IMG:style_emoticons/kolobok_light/unsure.gif) )) и последняя цель живая и/или действительная, чтоб он вообще ни на какие атаки и ущерб не реагировал (return) а добивал бы это до упора (если не надо делать проверку на собственные хп если не камикадзе), если нет списка приоритетов. Ну и в On perception поставил бы на дверь больший проиритет... сори если че.. Сообщение отредактировал r1Stranger - Aug 26 2007, 12:20 |
![]()
Сообщение
#2750
|
|
Level 1 ![]() Класс: Маг Характер: Lawful Evil Раса: Дракон NWN: Скриптинг [PW] ![]() |
делал спел, вроде все работает нормально, однако дамажит криво - то 3 раза, то 1.
Neverwinter Script Source #include "X0_I0_SPELLS"
#include "x2_inc_spellhook" void DoArmageddon() { vector vSelf = GetPosition(OBJECT_SELF); vector v1 = Vector(vSelf.x+10.0f, vSelf.y+10.0f, 0.0f); vector v2 = Vector(vSelf.x-10.0f, vSelf.y+10.0f, 0.0f); vector v3 = Vector(vSelf.x+10.0f, vSelf.y-10.0f, 0.0f); vector v4 = Vector(vSelf.x-10.0f, vSelf.y-10.0f, 0.0f); //вокруг чара 4 точки создаются, куда эффекты налагаются object oArea = GetArea(OBJECT_SELF); location Loc1 = Location(oArea, v1, GetFacing(OBJECT_SELF)); location Loc2 = Location(oArea, v2, GetFacing(OBJECT_SELF)); location Loc3 = Location(oArea, v3, GetFacing(OBJECT_SELF)); location Loc4 = Location(oArea, v4, GetFacing(OBJECT_SELF)); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_METEOR_SWARM), Loc1); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_METEOR_SWARM), Loc2); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_METEOR_SWARM), Loc3); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_METEOR_SWARM), Loc4); } void main() { int nDam1, nDam2; effect eDam, eDam2; DoArmageddon(); object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 20.0f, GetLocation(OBJECT_SELF), OBJECT_TYPE_CREATURE || OBJECT_TYPE_PLACEABLE); while (GetIsObjectValid(oTarget)) { if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF) { nDam1 = d10(20); nDam2 = d10(5); eDam = EffectDamage(nDam1, DAMAGE_TYPE_FIRE); eDam2 = EffectDamage(nDam2, DAMAGE_TYPE_MAGICAL); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam2, oTarget); } oTarget = GetNextObjectInShape(SHAPE_SPHERE, 20.0f, GetLocation(OBJECT_SELF), OBJECT_TYPE_CREATURE || OBJECT_TYPE_PLACEABLE); } } |
![]()
Сообщение
#2751
|
|
Level 4 ![]() ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек ![]() |
попробуй так
Neverwinter Script Source float fDelay;
nDam1 = d10(20); nDam2 = d10(5); fDelay = IntToFloat(Random(2+1)); eDam = EffectDamage(nDam1, DAMAGE_TYPE_FIRE); eDam2 = EffectDamage(nDam2, DAMAGE_TYPE_MAGICAL); DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); fDelay = IntToFloat(Random(2+1)); DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam2, oTarget)); Сообщение отредактировал Lex - Sep 10 2007, 08:26
Причины изменения: Neo: нет, ну я предупреждал? устное последнее китайское
|
![]()
Сообщение
#2752
|
|
Level 1 Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
Здравствуйте! Я в скриптинге совсем новичок, поэтому, возможно, спрошу глупость, но я пытаюсь разобраться с этим уже второй день и ничего не получается (IMG:style_emoticons/kolobok_light/crazy.gif) Гугл перерыла, туториалы перебрала, уже сил нет... короче, мне надо заставить непися (НВН1) спавниться с EffectKnockdown -
Код effect eEffect; eEffect = EffectKnockdown(); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oTarget); - как-то так. Это вроде как-то можно сделать через опцию Variables (правой кнопкой по имени непися)? В конце дефолтного скрипта onSpawn я этот код пробовала дописывать, не срабатывает, непись появляется стоя. Надо user defined писать? Или как-то еще?.. То же самое и с сидением, кстати. Не могу заставить непися появиться сидя (IMG:style_emoticons/kolobok_light/sad.gif) У меня есть вот такой user defined скрипт Код //:://///////////////////////////////////////////// //:: Name x2_def_userdef //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* Default On User Defined Event script */ //::////////////////////////////////////////////// //:: Created By: Keith Warner //:: Created On: June 11/03 //::////////////////////////////////////////////// const int EVENT_USER_DEFINED_PRESPAWN = 1510; const int EVENT_USER_DEFINED_POSTSPAWN = 1511; void main() { int nUser = GetUserDefinedEventNumber(); if(nUser == EVENT_HEARTBEAT ) //HEARTBEAT { } else if(nUser == EVENT_PERCEIVE) // PERCEIVE { } else if(nUser == EVENT_END_COMBAT_ROUND) // END OF COMBAT { } else if(nUser == EVENT_DIALOGUE) // ON DIALOGUE { } else if(nUser == EVENT_ATTACKED) // ATTACKED { } else if(nUser == EVENT_DAMAGED) // DAMAGED { } else if(nUser == 1007) // DEATH - do not use for critical code, does not fire reliably all the time { } else if(nUser == EVENT_DISTURBED) // DISTURBED { } else if (nUser == EVENT_USER_DEFINED_PRESPAWN) { ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0, 99999.9); } else if (nUser == EVENT_USER_DEFINED_POSTSPAWN) { ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0, 99999.9); } } Но один он тоже не срабатывает, неписи стоя спавнятся. Где-то что-то еще надо прописать?.. Спасибо большое! |
![]()
Сообщение
#2753
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Rowan, попробуй вот это на OnSpawn
Neverwinter Script Source #include "x0_i0_corpses" void main() { effect eKnock = EffectKnockdown(); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eKnock, OBJECT_SELF); } Если при этом бухается на колени, а тебе нужно, чтобы лежал, просто поверни под другим углом. Что касается спавна сидя, можно на OnPerception попробовать так: Neverwinter Script Source //Goes OnPerceived of a creature void main() { object oPC = GetLastPerceived(); if (!GetIsPC(oPC)) return; if (!GetLastPerceptionSeen()) return; ClearAllActions(); ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0f, 9000.0f); } Он все равно спавнится стоя, потом сразу садится. Но чтобы этого в игре не было видно, выстави ему в свойствах - вкладка Advanced - Perception Range - Long. Сообщение отредактировал shadowdweller - Sep 11 2007, 07:19 |
![]()
Сообщение
#2754
|
|
Level 1 Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
Все протестила.
EffectKnockdown опять не отработал, непись спавнится стоя. Я подумала - это не может быть потому, что где-то еще у него прописан скрипт, который заставляет его стоять? На OnPerception у него, к примеру, стоит дефолтное x2_def_percept Код void main() { ExecuteScript("nw_c2_default2", OBJECT_SELF); } Этот nw_c2_default2 не может перебивать те команды (лежать в данном случае), который пытаюсь назначить неписю я? Кстати, #include "x0_i0_corpses" - это он не мертвым появиться должен? Мне нужен живым )) И насчет сидячего нпс. Задумка такая, что при желании его можно выбрать в спутники. Perception Range - Long в таком случае будет ему лишним, нет? |
![]()
Сообщение
#2755
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Вот комплекс скриптов, которые стоят у меня на неписе, у которого эффект Knockdown прекрасно работает:
Код OnBlocked - x2_def_onblocked OnCombatRoundEnd - x2_def_endcombat OnConversation - x2_def_onconv OnDamaged - x2_def_ondamage OnDeath - x2_def_ondeath OnDisturbed - x2_def_ondisturb OnHeartbeat - x2_def_heartbeat OnPerception - x2_def_percept OnPhysicalAttacked - x2_def_attacked OnRested - x2_def_rested OnSpawn - тот скрипт, который я тебе кинула OnSpellcast - x2_def_spellcast OnUserdefined - x2_def_userdef При таком комплекте скриптов работает прекрасно. Попробуй те скрипты, которые стоят у непися, поменять на эти. Код #include "x0_i0_corpses" - не будет он мертвым. У меня, во всяком случае, живехонек. (IMG:style_emoticons/kolobok_light/smile.gif) Если НПС хенчмен в перспективе - попробуй усадить его на триггере. У хенчмена совершенно другой комплект скриптов, называется "set_xp1_henchmen", и менять дефолтный скрипт OnSpawn на другой не стоит, равно как и OnPerception. Сообщение отредактировал shadowdweller - Sep 11 2007, 22:49 |
![]()
Сообщение
#2756
|
|
Level 1 Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Человек ![]() |
Цитата Попробуй те скрипты, которые стоят у непися, поменять на эти. Ничего не понимаю. У меня все тоже самое, но непись, зар-раза, спавнится стоя (((( А почему неписю нельзя менять дефолтные скрипты, пока он не хенчмэн? Если я правильно тебя поняла, весь набор все равно заменится, когда непись перейдет в разряд спутников, нет? |
![]()
Сообщение
#2757
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Цитата А почему неписю нельзя менять дефолтные скрипты, пока он не хенчмэн? Если я правильно тебя поняла, весь набор все равно заменится, когда непись перейдет в разряд спутников, нет? Набор скриптов не заменится, нужно хенчу все сразу ставить, + если хотите в дальнейшем поднимать уровни, то у хенча должен стоять только первый… И вообще что за дилемма со скриптами на загрузку? Зачем туда переть эффекты? При первом клике сидячий НПС поднимется и будет стоять все время… Кому это надо? Такие скрипты нужно ставить на ХБ, примеров было уже море. К тому же скрипты на загрузку имеют тенденцию не сработать при загрузке мода. Их лучше непосредственно использовать при вызове существа из палитре уже во время игры… См. скрипты в этой теме по поиску, или откройте базу скриптов, или эту тему Монстры Сообщение отредактировал gennady - Sep 4 2010, 16:51 |
![]()
Сообщение
#2758
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Спавнится стоя и потом так и стоит?? (IMG:style_emoticons/kolobok_light/shok.gif) Ничччего не понимаю. Он у меня спавнится стоя, признаюсь, но стоит какую-то долю секунды, потом падает, в принципе, даже не успеваешь ничего заметить.
Насчет хенча - это один из самых серьезных моментов игры. Хенча надо долго и тщательно настраивать. Комплект скриптов, необходимых для хенча, выставляется ему сразу же, вручную. Так что если ты хочешь, чтобы потенциальный хенч у тебя сидел, лучше сделай это как триггер. Попробуй так Neverwinter Script Source //Put this script OnEnter void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; int DoOnce = GetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF)); if (DoOnce==TRUE) return; SetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF), TRUE); object oTarget; oTarget = GetObjectByTag("HENCH"); AssignCommand(oTarget, ClearAllActions()); AssignCommand(oTarget, ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0f, 6000.0f)); } По идее, как только игрок будет входить на триггер, НПС будет садиться. А триггер тем и хорош, что его можно разместить в локации где угодно (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#2759
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
пара подводных камней:
-- если на персонаже Plot флаг, то на него не действуют негативные эффекты, в т.ч Knockdown -- onPerception черт его знает как работает при спавне и когда точка старта модуля около монстра. |
![]()
Сообщение
#2760
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Стоит наложить эффект невидимости на НПС в момент его создания, и пока он будет невидим, успеет сесть на стул или свалиться на пол из-за эффекта "Сбивание с ног". Игроку такой персонаж предстанет уже в том действии, какого вы от него хотите. Эффект лучше брать из серии Кутсцен. Т.е. нужно использовать "VFX_DUR_CUTSCENE_INVISIBILITY", чтобы не сработало заклинание Истинное зрение или Видеть невидимое.
|
![]() ![]() |
Текстовая версия | Сейчас: 30th April 2025 - 08:38 |