![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2886
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Вообще вариант есть (IMG:style_emoticons/kolobok_light/smile.gif) Если на оружие не планируется вешать кастомные OnHit-ы (т.к. движок поддерживает тока 1 на брата), то можно сделать свой девастат.
Получение: кастомные ничего не дающие фиты (просто флаги, подтверждающие взятие девастата) Включение: на одевание шмотки (OnItemEquip) или даже на ее получение (acquire), если у чара есть фит (см. выше) на оружие, вешать свое OnHit-свойство, которое и будет эмулировать девастат с нужными фиксами. На снятие свойство удаляется. Плюс ведро проверок. В результате каждое попадание будет запускаться наш скрипт и там уже хоть 80% хп, хоть отрубание головы (IMG:style_emoticons/kolobok_light/smile.gif) P.S. Да, я знаю толк в извращениях (IMG:style_emoticons/kolobok_light/smile.gif) Зато без нвнх. |
![]()
Сообщение
#2887
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Включение: на одевание шмотки (OnItemEquip) или даже на ее получение (acquire), если у чара есть фит (см. выше) на оружие, вешать свое OnHit-свойство, которое и будет эмулировать девастат с нужными фиксами. На снятие свойство удаляется. Плюс ведро проверок. А можно проверять, есть ли фит, в самом онхите (IMG:style_emoticons/kolobok_light/smile.gif) Только придётся руками делать хитрый чек, эмулирующий крит.
|
![]()
Сообщение
#2888
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Денисок, а как ты отследишь крит? Любой дамаг выше максимального для данного оружия с бонусами - крит? вроде как нет, да и нагрузка на такие расчеты при каждом ударе..
|
![]()
Сообщение
#2889
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Сразу видно, что я недостаточно играл на эпиках (IMG:style_emoticons/kolobok_light/smile.gif) Но и тут есть выход (IMG:style_emoticons/kolobok_light/smile.gif) Следуя уже придуманной извращенной схеме можно самому сделать параллельную проверку крита с учетом диапазона оружия и наличия фитов. Т.е. крит отдельно, девастат (хотя это уже не девастат, а плюшка, отдаленно его напоминающая) отдельно, но шансы их равны.
При провале чека прям сразу вначале скрипта выходим, так что особой нагрузки не будет. Главное тут диапазоны оружий вынести в инклуд, а не грузить каждый раз из 2да, иначе шляпа. Я при слове "нагрузка" всегда вспоминаю аи с его 15к строками в одном из инклудов (IMG:style_emoticons/kolobok_light/smile.gif) Громоздко, согласен. Даже кривовато. Но тем не менее реализуется без нвнх. Кстати, как сделать это через нвнх, ума не приложу. Видимо нужен свой плагин, блокирующий работу кода девастата и заодно запускающий вместо него скрипт. Но я такого не видел, поэтому и предложил то, что относительно реально сделать. |
![]()
Сообщение
#2890
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Не вариант (IMG:style_emoticons/kolobok_light/smile.gif) Ты не сможешь нормально посчитать атаку - только приблизительно, не учесть тучу бонусов (например, всякие там против видового разнообразия). Крит подтверждается броском против АС - там тоже проблемно, потому что точный АС ты не рассчитаешь - флетфутед и прочие пакости не дадут.
Сообщение отредактировал Ilerien - Feb 20 2008, 21:53 |
![]()
Сообщение
#2891
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Желание ищет тысячи возможностей, нежелание - тысячи причин (IMG:style_emoticons/kolobok_light/smile.gif) Или как там оно, не помню.
Мы уже далеко ушли от идеального варианта, значит и тут можем позволить условность - это же не девастат. Атака = баб + абилка + фиты + обкаст + плюшка на оружии (вроде так (IMG:style_emoticons/kolobok_light/smile.gif) ). Ас = GetAC() + проверка консила, посмотреть, что дает этот GetAC() в разных условиях и поправить если что. Насчет необходимости точного АС я бы поспорил, т.к. сам нвн далеко не всегда его верно рассчитывает (IMG:style_emoticons/kolobok_light/smile.gif) Тот же анкани либо не работает вообще, либо работает через раз. -2 от флет-футед в цифрах эпиков вообще теряется в принципе из-за незначительности. Можно (и имхо даже нужно) вообще сделать ход конем и придумать свои чеки (как вариант - д20 против диапазона крита, сделав шанс зависимым только от оружия, не забывая, что там еще чек на форту, и именно он является ключевым). Колхоз дело добровольное - хочешь вступай, не хочешь расстреляем. Либо человек несмотря ни на что изголяется и придумывает альтернативу девастату, либо как обычно на шарде будет 2 класса - сорки и все остальные. По мне мотивация довольно значительная. Т.е. основная идея - совсем отключить девастат и дать какую-то свою плюшку, по мощности ее заменяющую. |
![]()
Сообщение
#2892
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Продолжая тему извращений...
Neverwinter Script // The caller will perform a Melee Touch Attack on oTarget
// This is not an action, and it assumes the caller is already within range of // oTarget // * Returns 0 on a miss, 1 on a hit and 2 on a critical hit int TouchAttackMelee(object oTarget, int bDisplayFeedback=TRUE) |
![]()
Сообщение
#2893
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Я снова что-то намутил не того...
Neverwinter Script void main( ) { object oSelf = OBJECT_SELF; // Наш НПС object wp1 = GetObjectByTag( "p3_1" ); // ТОЧКА У КОСТРА object wp2 = GetObjectByTag( "p3_0" ); // ТОЧКА У КОСТРА(СМОТРИТ) object wp3 = GetObjectByTag( "p3_2" ); // ТОЧКА В ХРАМЕ object wp_center = GetObjectByTag( "pos_center" ); // ТОЧКА, куда смотрят все послушники object wp4 = GetObjectByTag( "p3_3" ); // ТОЧКА У ВТОРОГО КОСТРА object wp_center_cost = GetObjectByTag( "p3_4" ); // ТОЧКА У ВТОРОГО КОСТРА(СМОТРИТ) object wp5 = GetObjectByTag( "p3_5" ); // ИДЁТ СПАТЬ int i = GetTimeHour(); float fTime = 17.0; if ( IsInConversation( OBJECT_SELF )) { return; } // Проверим, не болтает ли с игроком... if ( GetIsInCombat( OBJECT_SELF )) // Не дерется ли { ExecuteScript( "nw_c2_default1", OBJECT_SELF ); return; } if ( i > 0 && i < 10 ) { // СПИТ if( GetDistanceBetween( oSelf, wp5 ) > 0.2 ) AssignCommand( oSelf, ActionForceMoveToObject( wp5, FALSE, 1.0, 25.0 ) ); ActionPlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 36000.0); } else if(i >= 10 && i < 16) { // CИДИТ У КОСТРА if( GetDistanceBetween( oSelf, wp1 ) > 0.2 ) ActionDoCommand(AssignCommand( oSelf, ActionForceMoveToObject( wp1, FALSE, 1.0, 25.0 ))); ActionDoCommand(AssignCommand( oSelf, SetFacingPoint(GetPosition(wp2)))); ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0, 21600.0); ActionWait(5.0); ANIMATION(oSelf); } else if ( i >= 16 && i < 20 ) { // МОЛИТСЯ if( GetDistanceBetween( oSelf, wp3 ) > 0.2 ) AssignCommand( oSelf, ActionForceMoveToObject( wp3, FALSE, 1.0, 25.0 )); ActionDoCommand(AssignCommand(oSelf, SetFacingPoint(GetPosition(wp_center)))); ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0, 14400.0); } else if ( i > 20 && i < 23 ) { // СНОВА У КОСТРА(ДРУГОГО) if( GetDistanceBetween( oSelf, wp4 ) > 0.2 ) AssignCommand( oSelf, ActionForceMoveToObject( wp4, FALSE, 1.0, 25.0 ) ); ActionDoCommand(AssignCommand( oSelf, SetFacingPoint(GetPosition(wp_center_cost)))); ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0, 14400.0); ActionWait(5.0); ANIMATION(oSelf); } } Проблема в том, что НПС не идет на точки и даже не думает этого делать. Только после разговора он(в зависимости от времени) поворачивается к точке(положенной по времени). П.С. И еще, как заставить его не реагировать на "тыки" по нему мышкой. П.П.С. Совсем забыл, я пытаюсь наложить эффект на невидимый(и видимый) предмет, но его не видно, только звук при проигровании... =( Заранее спасибо. Сообщение отредактировал Белатрис - Mar 10 2008, 13:14 |
![]()
Сообщение
#2894
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Намутил как всегда... (IMG:style_emoticons/kolobok_light/biggrin.gif)
Ты хоть пиши, где этот скрипт применяешь! Опять наверное на ХБ? Пора бы уже знать, что цикл равен 6 секундам, зачем в анимацию совать такое время? Оно же налагается друг на дружку! К тому же не понятна функция ANIMATION(oSelf); Если не можешь время просчитать, то можно перед блоком анимаций чистить акции... + неправильно проставлена проверка расстояния и подход к точке... + поворот сбивает ходьбу. Нужно акцию записать через DelayCommand, а лучше записать так: Neverwinter Script if( GetDistanceBetween( oSelf, wp4 ) > 0.2 ) { AssignCommand( oSelf, ActionForceMoveToObject( wp4, FALSE, 0.00, 25.0 ) ); return; } |
![]()
Сообщение
#2895
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
О, пасиб. Я, если честно, именно от тебя и ждал ответа (IMG:style_emoticons/kolobok_light/biggrin.gif)
А что с этим: Цитата П.С. И еще, как заставить его не реагировать на "тыки" по нему мышкой. П.П.С. Совсем забыл, я пытаюсь наложить эффект на невидимый(и видимый) предмет, но его не видно, только звук при проигровании... =( Цитата К тому же не понятна функция ANIMATION(oSelf); Я просто не вставил сюда функцию ANIMATION. Но если надо: Код void ANIMATION( object oD, float Speed=0.8, float Time=0.0 )
{ int A1; switch ( Random( 5 )+1 ) { case 1: A1=ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD; break; case 2: A1=ANIMATION_FIREFORGET_READ; break; case 4: A1=ANIMATION_FIREFORGET_DRINK; break; case 5: A1=ANIMATION_LOOPING_PAUSE_TIRED; Time=46.0; break; } if( Time==0.0 ) AssignCommand( oD, ActionPlayAnimation( A1, Speed ) ); else AssignCommand( oD, ActionPlayAnimation( A1, Speed, Time ) ); } Сообщение отредактировал Белатрис - Mar 11 2008, 07:26 |
![]()
Сообщение
#2896
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Как заставить НПС не реагировать на "тыки" по нему мышкой в то время, когда он проигрывает анимацию(или в определенное время)? Это на onUsed?
Сообщение отредактировал Белатрис - Mar 13 2008, 08:45 |
![]()
Сообщение
#2897
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
OnConversation
|
![]()
Сообщение
#2898
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Решил создать структуру, общую для всех НПС, но вот только чего-то не выходит так, как нужно...
Neverwinter Script struct C_NPC { int Circle; // * круг магии int Weapon; // * владени двуручным string SpPoint; // * точка привязки }; Neverwinter Script #include "0c_npc_class" void main() { C_NPC npc1; npc1.Circle = 2; npc1.Weapon = 1; npc1.SpPoint = "POINT"; } Ругается на C_NPC npc1;, говорит: НЕТ ТОЧКИ С ЗАПЯТОЙ ПОСЛЕ ВЫРАЖЕНИЯ (IMG:style_emoticons/kolobok_light/snoozer_17.gif) П.С. А почему классы создавать нельзя? Сообщение отредактировал Белатрис - Mar 27 2008, 14:27 |
![]()
Сообщение
#2899
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
|
![]()
Сообщение
#2900
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Массивы, хэшсеты + массив глобальных переменных были бы куда полезней. Классы всё равно бы больше лагали, чем приносили пользу.
|
![]()
Сообщение
#2901
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
ну массивы вполне удобно эмулируются.
|
![]()
Сообщение
#2902
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Neverwinter Script struct C_NPC npc1 Цитата ну массивы вполне удобно эмулируются. Не сказал бы, что удобно (IMG:style_emoticons/kolobok_light/smile.gif)
Сообщение отредактировал Ilerien - Mar 27 2008, 16:51 |
![]()
Сообщение
#2903
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
У меня есть книга, с помощью которой можно вызвать заклинание. Но как запретить вызов, если, к примеру, переменная ch не равна 4?
Сообщение отредактировал Белатрис - Mar 28 2008, 09:39 |
![]()
Сообщение
#2904
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Поставить проверку в скрипт спелла или в спелхук. Что-то типа
Neverwinter Script object oItem = GetSpellCastItem();
if(GetTag(oItem) == "тег_итема" && GetLocalInt(<объект, на котором лежит переменная>, "ch") != 4) return; |
![]()
Сообщение
#2905
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Поставить проверку в скрипт спелла или в спелхук. Модуля? (IMG:style_emoticons/kolobok_light/rolleyes.gif) |
![]()
Сообщение
#2906
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Скрипт спелла и спеллхук сами по себе не лежат ни в каких слотах.
В студию название спелла, который юзается со шмотки, её тег, и объект, на который вешается нужная локалка. Сообщение отредактировал Ilerien - Mar 30 2008, 21:24 |
![]()
Сообщение
#2907
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Полуэльф ![]() |
А как реализовать, чтобы персонаж куда-нибудь прыгал (да хоть бы и в котел, как было реализовано в СоУ)?
|
![]()
Сообщение
#2908
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Поищи на Ваулте тестовый модуль по слову "Jump". Там довольно подробно показано, как это делается. На самом деле нет ничего в этом сложного.
Для прыжков используется следующий эффект: Neverwinter Script effect EffectDisappearAppear(location lLocation, int nAnimation=1)
|
![]()
Сообщение
#2909
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Полуэльф ![]() |
Спасибо. (IMG:style_emoticons/kolobok_light/rolleyes.gif) буду знать...
просто у меня модуль, там по идее должны в ворота вбегать орки, на них кастуется заклинание (просто эффект) и они все сигают со скалы. Одновременно )) |
![]()
Сообщение
#2910
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
Привет всем!
Подскажите какая в этом скрипте ошибка для спавна монстров?( Никак не спавнится (в строчку монстра death ввел как меня учил Ineren и неработает уже 6 лет пытаюсь соспавнить хоть одного монстра и никак((((((((((((((((((((((((((((((((((((((((((((( Ну научите же кто нибудь через асю или скинтье мне мод на мой емаил с применром ПЛИЗЗЗЗЗ! Моё мыло:sugo3377@mail.ru Моя ася:263683769 Имя:Игорь А вот сам скрипт который не работает(IMG:style_emoticons/kolobok_light/sad.gif) Neverwinter Script #include "nw_i0_2q4luskan"
void main() { object oSelf = OBJECT_SELF; string sResRef = GetResRef(oSelf); location lLoc = GetLocation(oSelf); DelayCommand(60.0f, CreateObjectVoid(OBJECT_TYPE_CREATURE, sResRef, lLoc)); } Сообщение отредактировал Sugo77 - May 8 2008, 22:00 |
![]() ![]() |
Текстовая версия | Сейчас: 30th April 2025 - 22:15 |