![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#276
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Объект NWN в стеке команд может содержать 75 аций. Их можно назвать очередю действий. Можно их объединить, а можно пониимать по разному. Айв, тут дело банально в придирках. Есть FIFO, есть FILO. FIFO - очередь, FILO - стек. Устоявшиеся программерские определения. в НВН - FIFO, но почему-то называется стек. Стороннего программиста может поначалу ввести в заблуждение, но в принципе быстро приходит понимание, что это всетаки FIFO. В общем не нужно заморачивать себе этим голову (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#277
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
|
![]()
Сообщение
#278
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
ни.. парнишка спрашивает про запуск скрипта с параметром. Я не знаю, как с этим дело обстоит в НВН2, но в НВН1 так было делать низя (с параметром). Можно только так, как Айв написал.
Но параметрические скрипты там точно есть - диалоговые как минимум. |
![]()
Сообщение
#279
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Если бы еще описание было задачи, тогда другое дело. МОжно и стрингами поиграть, сложить, и прочее.
|
![]()
Сообщение
#280
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
ExecuteScript вызывает скрипт без параметров, "ExecuteScript("SomeScript(10)",oPC);" будет искать скрипт под названием "SomeScript(10)", и запустить его без всяких параметров, Conditional скрипты тоже проверять нельзя. Если же нужно передать какую-то инфу в скрипт, можешь установить куда-нибудь нужные локальные переменные, а в запускаемом скрипте их проверять.
|
![]()
Сообщение
#281
|
|
Level 2 ![]() Класс: Псионик Характер: Lawful Neutral Раса: Баатезу ![]() |
У меня вопрос к начальству. Тут побывал на вашем wiki и наткнулся на статью по созданию плагинов для тулсета (на англиском), если можно то дайте пожалуйста ссылку на источник (там пропушены строки нужного мне кода).
|
![]()
Сообщение
#282
|
|
Level 6 ![]() ![]() Класс: Некромант Характер: Lawful Evil Раса: Нежить ![]() |
не помню что именно на вики за статья по плагинам лежит, но по идее ее брали отсюда http://nwvault.ign.com/View.php?view=NWN2P...Detail&id=1
|
![]() ![]()
Сообщение
#283
|
|
Level 3 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
Всем респект, левел ап.
Нужна срочно помощ вот народ что у мя такое. Я как тока моудль начну создавать так я поставил стены, дома, деревья. А как начинаю тестить все стоит но у меня перс проходит через все стены, через дереьвя уороче перс неможет не в чо упереться кроме конца локации ((( срочно нужна помощ ПОМАГИТЕ!!! |
![]()
Сообщение
#284
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Очертить все надо триггерами и бэйк надо делать. В википедии подробно расписано, почитай по ссылке ввреху форума.
|
![]()
Сообщение
#285
|
|
Level 3 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
Скажите пожалуйста как мне сделать чтобы когда я умирал появлялась таблица типа реснуться в городе ну например Локация 1 Вейпоинт 1 и чтобы я потерял либо еси мона 10% опыта либо 500 опыта. Оч нужнл помогите плиз ну мона без потери опыта но тока чтобы я воскрешался в городе (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#286
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
Скажите пожалуйста как мне сделать чтобы когда я умирал появлялась таблица типа реснуться в городе ну например Локация 1 Вейпоинт 1 и чтобы я потерял либо еси мона 10% опыта либо 500 опыта. Оч нужнл помогите плиз ну мона без потери опыта но тока чтобы я воскрешался в городе (IMG:style_emoticons/kolobok_light/smile.gif) Атеперьпожалуйстатожесамоетолькосознакамипрепинани - читатьневозможно=\ Сообщение отредактировал Leon PRO - Nov 12 2007, 15:50 |
![]() ![]()
Сообщение
#287
|
|
Level 3 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
КАк мне сделать так! чтобы когда персонаж умирает появалалсь окно с кнопкой воскреситься в городе и при нажатии этой кнопки персонаж появляется в городе (имя города например: сity), но за это снималось 500 опыта??? ну можно чтоб опыт не снимался.
|
![]()
Сообщение
#288
|
|
Level 1 Класс: Бледный Мастер Характер: Neutral Evil Раса: Человек ![]() |
Есть ли возможность редактировать заклинания? Хотелось вызывать несколько существ (например, поднять мертвеца, а вторым применением закла поднять уже второго , а не заменить первого вызванного). Может скриптами? Или что-то подправить надо?
|
![]()
Сообщение
#289
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Есть ли возможность редактировать заклинания? Хотелось вызывать несколько существ (например, поднять мертвеца, а вторым применением закла поднять уже второго , а не заменить первого вызванного). Может скриптами? Или что-то подправить надо? скриптами. см spells.2da, ищи там нужный закл и смотри, какой скрипт за него отвечает. Потом в скриптовом редакторе open - флажок "показать все скрипты" - ищешь нужный скрипт и редактируешь. \\ с реализацией твоей идеи могут быть проблемы, так как саммонер вроде как только 1 может быть. Может помочь вариант с доминированием, но надо пробовать. |
![]()
Сообщение
#290
|
|
Level 1 Класс: Бледный Мастер Характер: Neutral Evil Раса: Человек ![]() |
2Lex
Спасибо, нашел нужные скрипты, но взникли вопросы (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) Расковырял архивчик Scripts. Нашел файл nw_s0_crundead.NSS. Насколько понял здесь находится скрипт описывающий заклинания Поднятие нежити. В остальных поднятиях структура та же. И вопросы по файлу: в скрипте используется 3 метода (функции), это X2PreSpellCastCode() -- не нашел его объявление в nwscript.NSS и врядли имеет отношение к вопросу, т.к. используется во всех заклах и отменяет их действие при не выполнении (на сколько понял). effect EffectSummonCreature(string, int, float, int) -- задаются первые два аргумента, остальные по умолчанию, вроде. void ApplyEffectAtLocation(int, effect, location, float) -- последний аргумент берется по умолчанию. Последние 2 метода объявлены в nwscript.NSS. Но где их описание? Перерыл весь Scripts и не нашел описания EffectSummonCreature(string, int, float, int). С ApplyEffectAtLocation(int, effect, location, float), наверное, та же история. Где описаны эти функции? Может кто-то знает или предполагает? Вроде эти функции и надо править, т.к. больше и нечего. Но скорее всего дело в EffectSummonCreature, описание: // Create a Summon Creature effect. The creature is created and placed into the // caller's party/faction. // - sCreatureResref: Identifies the creature to be summoned // - nVisualEffectId: VFX_* // - fDelaySeconds: There can be delay between the visual effect being played, and the // creature being added to the area // - nUseAppearAnimation: should this creature play it's "appear" animation when it is // summoned. If zero, it will just fade in somewhere near the target. If the value is 1 // it will use the appear animation, and if it's 2 it will use appear2 (which doesn't exist for most creatures) effect EffectSummonCreature(string sCreatureResref, int nVisualEffectId=VFX_NONE, float fDelaySeconds=0.0f, int nUseAppearAnimation=0); Не могу понять за что отвечает последний параметр. Помогите разобраться, пожалуйста. А что за "вариант с доминированием"? Пробовать готов (IMG:style_emoticons/kolobok_light/rolleyes.gif) Теперь что смог найти. Вот здесь есть что-то подобное. http://nwn2forums.bioware.com/forums/viewtopic.html?topic=590809&forum=114&highlight=Summoning Там есть вот этот скрипт, но самому с ним разобраться трудно. И имеются подключаемые библиотеки, созданные автором, а что в них -- загадка. Помогите, пожалуйста, разобраться. В программировании немного разбираюсь, но в NWN2 залез впервые. Чем лучше занятся: делать с нуля или использовать нижеприведенный скрипт? CODE Neverwinter Script Source #include "x2_inc_itemprop" #include "x2_i0_spells" #include "x0_i0_assoc" #include "x2_inc_switches" #include "_inc_propertystrings" #include "_inc_helper_functions" void DestroyUndead( object oPC ) { // KILLS ALL DOMINATED CREATURES OF A PC int nCnt = GetLocalInt( oPC, "UNDEADCOUNT" ); if ( nCnt==0 ) return; object oArea = GetArea( oPC ); object oMinion = GetFirstObjectInArea( oArea ); while ( GetIsObjectValid( oMinion )) { if ( GetObjectType( oMinion )==OBJECT_TYPE_CREATURE && GetMaster( oMinion )==oPC && GetRacialType( oMinion )==RACIAL_TYPE_UNDEAD ) { ApplyEffectToObject( DURATION_TYPE_INSTANT, EffectNWN2SpecialEffectFile( "fx_turn_undead.sef", oMinion ), oMinion ); DelayCommand( 0.0, DestroyObject( oMinion )); } oMinion = GetNextObjectInArea( oArea ); } DeleteLocalInt( oPC, "UNDEADCOUNT" ); } int BuffUndeadItem( object oSum, int nSlot, int nEB, int nDamBonus ) { object oItem = GetItemInSlot( nSlot, oSum ); // ENCHANT THE CLAWS if ( oItem!=OBJECT_INVALID ) { IPSafeAddItemProperty( oItem, ItemPropertyEnhancementBonus( nEB )); if ( nDamBonus ){ IPSafeAddItemProperty( oItem, ItemPropertyDamageBonus( IP_CONST_DAMAGETYPE_NEGATIVE, nDamBonus )); } else { } return TRUE; } return FALSE; } void BoostUndeadSummon( object oPC, object oSum = OBJECT_INVALID ) { if ( oSum==OBJECT_INVALID ) oSum = GetAssociate( ASSOCIATE_TYPE_SUMMONED, oPC ); int nLevel = GetLevelByClass( CLASS_TYPE_PALEMASTER, oPC ); //GetUndeadLevel( oPC ); int nNecro = GetHasFeat( FEAT_GREATER_SPELL_FOCUS_NECROMANCY, oPC ) ? 2 : ( GetHasFeat( FEAT_SPELL_FOCUS_NECROMANCY, oPC ) ? 1 : 0 ); if ( GetHasFeat( FEAT_AUGMENT_SUMMONING, oPC )) { nNecro++; effect eAug = EffectAbilityIncrease( ABILITY_STRENGTH, 4 ); eAug = EffectLinkEffects( eAug, EffectAbilityIncrease( ABILITY_CONSTITUTION, 4 )); ApplyEffectToObject( DURATION_TYPE_INSTANT, ExtraordinaryEffect( eAug ), oSum ); } if ( nNecro ) { nNecro++; nLevel += nNecro; SendMessageToPC( oPC, "Pale Master Necromancy Boost +" + IntToString( nNecro )); } int nBonus = nLevel / 2; // MAX 6 if ( !nBonus ) return; int nEB = GetMax( 5, nBonus ); int nDamBonus = 0; if ( nBonus==1 ) nDamBonus = DAMAGE_BONUS_1d4; else if ( nBonus==2 ) nDamBonus = DAMAGE_BONUS_1d6; else if ( nBonus==3 ) nDamBonus = DAMAGE_BONUS_1d8; else if ( nBonus==4 ) nDamBonus = DAMAGE_BONUS_1d10; else if ( nBonus==5 ) nDamBonus = DAMAGE_BONUS_2d6; else if ( nBonus==6 ) nDamBonus = DAMAGE_BONUS_2d8; else if ( nBonus==7 ) nDamBonus = DAMAGE_BONUS_2d10; else if ( nBonus==8 ) nDamBonus = DAMAGE_BONUS_2d12; SendMessageToPC( oPC, "Pale Master Necromancy Boost applied: +" + IntToString( nBonus ) + " AC / +" +IntToString( nEB ) + " EB / +" + DamageBonusString( nDamBonus ) + " Negative damage." ); if ( BuffUndeadItem( oSum, INVENTORY_SLOT_RIGHTHAND, nEB, nDamBonus )) BuffUndeadItem( oSum, INVENTORY_SLOT_LEFTHAND, nEB, nDamBonus ); else if ( BuffUndeadItem( oSum, INVENTORY_SLOT_CWEAPON_R, nEB, nDamBonus )) BuffUndeadItem( oSum, INVENTORY_SLOT_CWEAPON_L, nEB, nDamBonus ); ApplyEffectToObject( DURATION_TYPE_PERMANENT, EffectACIncrease( nBonus ), oSum ); } int CountUndead( object oPC ) { int nCnt = 0; if ( GetAssociate( ASSOCIATE_TYPE_DOMINATED, oPC )==OBJECT_INVALID ) return 0; object oArea = GetArea( oPC ); object oMinion = GetFirstObjectInArea( oArea ); while ( GetIsObjectValid( oMinion )) { if ( GetObjectType( oMinion )==OBJECT_TYPE_CREATURE ) { if ( GetMaster( oMinion )==oPC && GetRacialType( oMinion )==RACIAL_TYPE_UNDEAD ) { nCnt++; } } oMinion = GetNextObjectInArea( oArea ); } return nCnt; } void CreateUndead( object oPC, string sResRef, int nMaxDom = 1, int bRedEyes = FALSE ) { int nCount = CountUndead( oPC ) + 1; if ( nCount > nMaxDom ) { FloatingTextStringOnCreature( "There are too many Undead currently at your service...", oPC, FALSE ); return; } location lLocation = GetLocation( oPC ); SetLocalInt( oPC, "UNDEADCOUNT", nCount ); object oMinion = CreateObject( OBJECT_TYPE_CREATURE, sResRef, lLocation, FALSE ); FloatingTextStringOnCreature( "A " + GetName( oMinion ) + " is now at your service.", oPC, FALSE ); SetLastName( oMinion, "of " + GetName( oPC ));//GetName( oMinion )+ SetLocalObject( oMinion, "DOMINATED", oPC ); if ( bRedEyes ) ApplyEffectToObject( DURATION_TYPE_PERMANENT, EffectNWN2SpecialEffectFile( "red_eyes.sef" ), oMinion ); ApplyEffectToObject( DURATION_TYPE_TEMPORARY, ExtraordinaryEffect( EffectCutsceneDominated( ) ), oMinion, HoursToSeconds( 24 )); ApplyEffectAtLocation( DURATION_TYPE_INSTANT, EffectVisualEffect( VFX_FNF_SUMMON_UNDEAD ), lLocation ); BoostUndeadSummon( oPC, oMinion ); int nDistance = NW_ASC_DISTANCE_6_METERS; if ( nCount==1 ) nDistance = NW_ASC_DISTANCE_2_METERS; if ( nCount==2 ) nDistance = NW_ASC_DISTANCE_4_METERS; SetAssociateState( nDistance, TRUE, oMinion ); int nSpawnInConditions = GetLocalInt( oMinion, "NW_GENERIC_MASTER" ); nSpawnInConditions = nSpawnInConditions | NW_FLAG_STEALTH | NW_FLAG_AMBIENT_ANIMATIONS | NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS | NW_FLAG_FAST_BUFF_ENEMY; SetLocalInt( oMinion, "NW_GENERIC_MASTER", nSpawnInConditions ); int nCombatConditions = GetLocalInt( oMinion, "X0_COMBAT_CONDITION" ); if ( nCount==1 ) nCombatConditions = nCombatConditions | X0_COMBAT_FLAG_AMBUSHER; else nCombatConditions = nCombatConditions | X0_COMBAT_FLAG_RANGED; SetLocalInt( oMinion, "X0_COMBAT_CONDITION", nCombatConditions ); } void SummonUndead( ) { object oPC = OBJECT_SELF; string sResRef = ""; int bRedEyes = FALSE; int nSpellId = GetSpellId( ); int nLevel = GetLevelByClass( CLASS_TYPE_PALEMASTER, oPC );//GetUndeadLevel( oPC ); int nConjure = GetHasFeat( FEAT_GREATER_SPELL_FOCUS_CONJURATION, oPC ) ? 2 : ( GetHasFeat( FEAT_SPELL_FOCUS_CONJURATION, oPC ) ? 1 : 0 ); nConjure += GetHasFeat( FEAT_AUGMENT_SUMMONING, oPC ); if ( nConjure ) { nLevel += nConjure; SendMessageToPC( oPC, "Pale Master Conjuration Boost +" + IntToString( nConjure )); } if ( nSpellId==SPELLABILITY_PM_ANIMATE_DEAD ) { if ( nLevel < 3 ) sResRef = "pm_zombie1"; else if ( nLevel < 5 ) sResRef = "pm_zombie2"; else sResRef = "pm_zombie3"; } else if ( nSpellId==SPELLABILITY_PM_SUMMON_UNDEAD ) { if ( nLevel < 5 ) sResRef = "pm_skeleton1"; else if ( nLevel < 7 ) sResRef = "pm_skeleton2"; else sResRef = "pm_skeleton3"; } else if ( nSpellId==SPELLABILITY_PM_SUMMON_GREATER_UNDEAD ) { if ( nLevel < 10 ) sResRef = "pm_ghast1"; else if ( nLevel < 12 ) sResRef = "pm_ghast2"; else sResRef = "pm_ghast3"; } bRedEyes = ( GetStringRight( sResRef, 1 )=="3" ); CreateUndead( oPC, sResRef, 3, bRedEyes ); } |
![]()
Сообщение
#291
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
Не надо ссылки на офф. форум прятать в спойлер )
|
![]()
Сообщение
#292
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
X2PreSpellCastCode() -- не нашел его объявление в nwscript.NSS Это запуск стандартного спел-хука. Те код который исполняется до любого закла. Через него можно сделать например невозможность колдовства в какой-то локации или по какому-то условию или негативные/позитивные бонусы для кастера при каких-то условиях. В общем штука хорошая. Но где их описание? описание всех функций есть в лексиконе. Можно его смотреть и в редакторе скриптов (2 клика на функцию в редакторе - внизу будет описание). Но тут могут быть проблемы с тем, что функция описана в какой-нить библе (IMG:style_emoticons/kolobok_light/smile.gif) Поэтому для изучения вопроса лучше лексикон использовать + там инфа по багам этой функции есть. Где описаны эти функции? Может кто-то знает или предполагает? Вроде эти функции и надо править, т.к. больше и нечего. это встроенные (стандартные) функции. На нашем пользовательском уровне их поправить низя. Только если влезть внутрь и там что-то поковырять. Не могу понять за что отвечает последний параметр. Помогите разобраться, пожалуйста. дословно - использовать ли анимацию появления (падение с неба) или нет для саммонера. Прикольно смотрится для летающих саммонеров. Но в принципе можно всем ставить. Теперь что смог найти. Вот здесь есть что-то подобное. эта штука - реализация всяких фичей для пэйлмастера. В принципе написано прилично. Из этого всего тебе нужно фактически только CreateUndead. Как я успел по коду пробежаться, автор пошел по варианту доминирования. Neverwinter Script Source ..ExtraordinaryEffect( EffectCutsceneDominated( ) ).. Так что можно взять ядро функции (все что относится к созданию миньона, эффектам. Выставление спавн-кондишенов по желанию) почистить от кастомных вещей (Boost например) и засунуть в заклинание вызова нежити. |
![]()
Сообщение
#293
|
|
Level 1 Класс: Бледный Мастер Характер: Neutral Evil Раса: Человек ![]() |
2Lex
Большое спасибо за помощь и подробные разъяснения (IMG:style_emoticons/kolobok_light/thank_you.gif) Вот начал копаться и на тебе! Не могу скомпилировать содержание файла nw_s0_crundead.NSS! Выдает ginc_crafting.nss: Search2DA //типа ошибка, но ERROR не пишет и где обнаружена ошибка не ясно И при повторном нажатии F7 после двоеточия может быть "что угодно" (IMG:style_emoticons/kolobok_light/biggrin.gif) В чем проблема? Я файл не модифицировал! Да и ginc_crafting.nss причем!? CODE Neverwinter Script Source #include "x2_inc_spellhook" void main( ) { if ( !X2PreSpellCastCode( ) ) { // If code within the PreSpellCastHook ( i.e. UMD ) reports FALSE, do not run this spell return; } //Declare major variables int nMetaMagic = GetMetaMagicFeat( ); int nCasterLevel = GetCasterLevel( OBJECT_SELF ); int nDuration = nCasterLevel; //nDuration = 24; effect eSummon; //Check for metamagic extend if ( nMetaMagic == METAMAGIC_EXTEND ) { nDuration = nDuration *2; //Duration is +100% } //Set the summoned undead to the appropriate template based on the caster level if ( nCasterLevel <= 11 ) { eSummon = EffectSummonCreature( "c_ghoul", VFX_HIT_SPELL_SUMMON_CREATURE ); } else if ( (nCasterLevel >= 12 ) && ( nCasterLevel <= 13 )) { eSummon = EffectSummonCreature( "c_ghast", VFX_HIT_SPELL_SUMMON_CREATURE ); } else if ( (nCasterLevel >= 14 ) && ( nCasterLevel <= 15 )) { eSummon = EffectSummonCreature( "c_mummy", VFX_HIT_SPELL_SUMMON_CREATURE ); } else if ( (nCasterLevel >= 16 )) { eSummon = EffectSummonCreature( "c_mummylord", VFX_HIT_SPELL_SUMMON_CREATURE ); } //Apply VFX impact and summon effect ApplyEffectAtLocation( DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation( ), HoursToSeconds( nDuration )); } |
![]()
Сообщение
#294
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
ошибка в библиотеке. Тут удаленно помочь трудно. Попробуй убрать
Neverwinter Script Source #include "x2_inc_spellhook" и Neverwinter Script Source if ( !X2PreSpellCastCode( ) )
{ // If code within the PreSpellCastHook ( i.e. UMD ) reports FALSE, do not run this spell return; } |
![]()
Сообщение
#295
|
|
Level 1 Класс: Бледный Мастер Характер: Neutral Evil Раса: Человек ![]() |
2Lex
Огромное спасибо! Благодарю! Вышло (IMG:style_emoticons/kolobok_light/yahoo.gif) Смог поднять более одного мертвеца! Когда доведу скрипт до ума выложу. Есть еще вопрос: можно убрать тотальную паузу во время обычных диалогов в официальной кампании? Невозможно играть по сети! Где-то читал, что нужно в тулсете открыть кампанию и там, в диалогах, должна быть кнопочка отключения всеобщей паузы. Это правда? Если да, то как "открыть" оф. кампанию и где может быть эта "кнопочка"? |
![]()
Сообщение
#296
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Огромное спасибо! Благодарю! Вышло yahoo.gif Смог поднять более одного мертвеца! Когда доведу скрипт до ума выложу. выкладывай. а благодарить особо не за что, я лишь слегка подсказал направление, где копать. Есть еще вопрос: можно убрать тотальную паузу во время обычных диалогов в официальной кампании? там что, реально все замирает, когда кто-то разговаривает?? (IMG:style_emoticons/kolobok_light/wacko.gif) |
![]()
Сообщение
#297
|
|
Level 1 Класс: Бледный Мастер Характер: Neutral Evil Раса: Человек ![]() |
Цитата там что, реально все замирает, когда кто-то разговаривает?? Играем по сетке, 2 человека, если один с кем-то говорит (появляется диалог), то второй не может сойти с места и вообще ничего не может, только камеру крутить. |
![]()
Сообщение
#298
|
|
Level 2 ![]() Класс: Псионик Характер: Lawful Neutral Раса: Баатезу ![]() |
У меня такая проблема: написал скрипт который должен снимать с вещей ограничения на использования (такие как мироввозрение, класс и т.д.) и он конечно не работает. Кто-нибудь может сказать где ошибка?
Вот сам скрипт: void main() { itemproperty prop = ItemPropertyLimitUseByAlign(IP_CONST_ALIGNMENTGROU _ALL); RemoveItemProperty(OBJECT_SELF, prop); int i; for(i=0; i<=8; i++) { prop = ItemPropertyLimitUseByClass(i); RemoveItemProperty(OBJECT_SELF, prop); } for(i=0 ;i<=25 ;i++) { prop = ItemPropertyLimitUseByRace(i); RemoveItemProperty(OBJECT_SELF, prop); } for(i=0;i<=8 ;i++) { prop = ItemPropertyLimitUseBySAlign(i); RemoveItemProperty(OBJECT_SELF, prop); } } |
![]()
Сообщение
#299
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
ну.. собсна грабля очень старая. Есть свойство (оно как бы само по себе, оторвано от предмета. Все что с ним можно сделать - наложить куда-то)
Например вот это: Neverwinter Script Source prop = ItemPropertyLimitUseBySAlign( i ); для удаления нужно брать уже наложенные свойства. GetFirstItemProperty, GetNextItemProperty - перебор свойств у предмета, а дальше анализируешь. Если тип свойства - Limit что-то там - удаляешь его. работа со свойствами абсолютно аналогична работой с эффектами. |
![]()
Сообщение
#300
|
|
Level 2 ![]() Класс: Псионик Характер: Lawful Neutral Раса: Баатезу ![]() |
Спасибо, оказывается можно боыло сделать проще:
void main() { itemproperty prop = GetFirstItemProperty(OBJECT_SELF); int PropType; while(GetIsItemPropertyValid(prop)) { PropType = GetItemPropertyType(prop); if((PropType>=ITEM_PROPERTY_USE_LIMITATION_ALIGNMENT_GROUP)&&(PropType>=ITEM_PROPERTY_USE_LIMITATION_SPECIFIC_ALIGNMEN )) RemoveItemProperty(OBJECT_SELF, prop); prop = GetNextItemProperty(OBJECT_SELF); } } |
![]() ![]() |
Текстовая версия | Сейчас: 26th April 2025 - 09:31 |