![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2876
|
|
Level 3 ![]() Класс: Обыватель Характер: Chaotic Evil Раса: Человек ![]() |
QUOTE для примера привел эти два оператора. Это не операторы, это функции. |
![]()
Сообщение
#2877
|
|
Level 7 ![]() Класс: Обыватель Характер: True Neutral Раса: Человек NWN: Модмейкер Начало Войны ![]() |
Есть невидимые объекты (creature). Нужно реализовать, чтобы они были видимыми только когда у PC надет определенный айтем (шлем к примеру), при этом всем другим PC они должны оставаться невидимыми. Подскажите как реализовать, если это возможно.
|
![]()
Сообщение
#2878
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
шлем с трусиингом?
|
![]()
Сообщение
#2879
|
|
Level 7 ![]() Класс: Обыватель Характер: True Neutral Раса: Человек NWN: Модмейкер Начало Войны ![]() |
Наподобе, но чтобы стандартные заклинания определяющие невидимых не работали на этих существах.
|
![]()
Сообщение
#2880
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Есть невидимые объекты (creature). Нужно реализовать, чтобы они были видимыми только когда у PC надет определенный айтем (шлем к примеру), при этом всем другим PC они должны оставаться невидимыми. Подскажите как реализовать, если это возможно. Стандартными средставми NWN именно так, как описано, сделать нельзя. Я недавно сделал Proof of Concept и в скором времени напишу NWNX-плагин для таких вещей (индивидуальное управление видимостью объектов).
|
![]()
Сообщение
#2881
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Добрый вечер. Скажите, пожалуйста, как можно прописать в скрипте, чтобы девастат не убивал, а, например, заберал 80% ХП?
Ответ можно прислать и на мыло: dracul@ukr.net |
![]()
Сообщение
#2882
|
|
Level 2 ![]() Класс: Маг Характер: Chaotic Good Раса: Человек ![]() |
Вообщето я не понял, кто такой девостат, но...
почему нельзя просто узнать сколько у персонажа XP и просто присвоить ему на 80% меньше? типа: Код object oPC=GetFirstPC();//работаем з нашим главным персонажем //або якщо комусь більше подобається, можна написати object oPC=GetEnteringObject(); int XP=0;//инициируем переменную XP = GetXP(oPC);//вытаскиваем нинищнее значение XP XP = FloatToInt(XP-XP*0.8); //Выщитываем результат SetXP(oPC,XP);//Бросаем назад нашему персонажу Если я правильно понял - то так (IMG:style_emoticons/kolobok_light/rolleyes.gif) Сообщение отредактировал ZipovUA - Feb 12 2008, 23:05 |
![]()
Сообщение
#2883
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
1. ХП - Хит Поинты, а не очки опыта. Так что приведенный код малек не туда
2. проблема описанной идеи не в написании кода (это как раз детский сад). А в том, чтобы привязать код к эффекту от девастата. Я не помню как там сделано в НВН1, но вроде бы девастат - фит не активируемый на противнике.. соотв своего скрипта-исполнителя у него нету. Поэтому как решить задачу не через nwnx не знаю (через нвнх тоже не знаю как, но знаю что можно) |
![]()
Сообщение
#2884
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Возможно вы не поняли суть вопроса, шард имеет лвлкап 25, девастат в чистом виде сильно крут для этого шарда, спасы не соответсвуют, но выключать его полностью - значит сделать дисбаланс в сторону магов, можно ли как-то или понизить дц девастата или сделать чтоб он не убивал, а снимал Х число хитов, либо в процентах?
|
![]()
Сообщение
#2885
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
|
![]()
Сообщение
#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 ![]() |
Массивы, хэшсеты + массив глобальных переменных были бы куда полезней. Классы всё равно бы больше лагали, чем приносили пользу.
|
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 01:04 |