![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#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 |
![]()
Сообщение
#2911
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
э.. и не будет работать. Вешать что-то на труп монстра, который щас исчезнет это вообще не айс.
попробуй вместо Neverwinter Script DelayCommand(60.0f, CreateObjectVoid(OBJECT_TYPE_CREATURE, sResRef, lLoc)); поставить Neverwinter Script AssignCommand(GetArea(OBJECT_SELF),DelayCommand(60.0, CreateObjectVoid(OBJECT_TYPE_CREATURE, sResRef, lLoc))); ps: юзать для скриптов nss тэг, а то буду по рукам бить. pss: На мыло никто писать ничего не будет. |
![]()
Сообщение
#2912
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
ОООООООО я неверю,это свершилось (IMG:style_emoticons/kolobok_light/yahoo.gif) !
СПАСИБООООООО! (IMG:style_emoticons/kolobok_light/rolleyes.gif) (IMG:style_emoticons/kolobok_light/angel.gif) Теперь буду создавать свои шарды. Спасибо вам большое Ilerien and Lex! (IMG:style_emoticons/kolobok_light/rolleyes.gif) (IMG:style_emoticons/kolobok_light/angel.gif) Охх рано радовался( Спавн то получился да только монстры спавнятся там где их убили,а как сделать так чтобы он респился на конкретную точку? Вот такой скриптик я выташил из стандартного модуля Кобольды против гоблинов для спавна на точку,но я нехочу чтобы у меня тока гоблины да кобльды спавнились,я его исправить пытался на Троля теги везде троля прописал но выдает ошибку на пункте 7 при нажатии F7,где что исправить пождскажите плиз?,где теги точки спавна прописать?и куда вообще этот скрипт вставить лучше?или предложите свой простенький скрипт для спавна монстра на точку плиз. Neverwinter Script void main() { int iUD = GetUserDefinedEventNumber(); int iRandom = Random(7)+1; string sRandom = IntToString(iRandom); object oNW_TROLLSpawn = GetNearestObjectByTag("NW_TROLL"); location lSpawn = GetLocation(oNW_TROLL Spawn); if (iUD == 1007) { CreateObject(OBJECT_TYPE_CREATURE, "NW_TROLL"+sRandom, lSpawn); } } Вот названия в моем модуле монстра и точки: Имя точки спавна:NW_TROLL Spawn Тэг точки спавна:Spawn_NW_TROLL Тэг Троля:NW_TROLL Имя Троля:Тролль И ещё плиз чтоб они бесконечно спавнились. П.C:Ilerien and Lex ваш скрипт работает,но он спавнит не на конкретную точку,а там где убили монстра,а мне бы на конкретную точку научиться(Научите плиз. Все вопрос со спавном снимается инерен научил меня (IMG:style_emoticons/kolobok_light/biggrin.gif) Всю ночь неспал учился(IMG:style_emoticons/kolobok_light/wacko.gif) Сообщение отредактировал Sugo77 - May 9 2008, 02:59 |
![]()
Сообщение
#2913
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Neverwinter Script object oNW_TROLL_Spawn = GetNearestObjectByTag("NW_TROLL"); location lSpawn = GetLocation(oNW_TROLL_Spawn); Сообщение отредактировал Melisse - May 9 2008, 17:43 |
![]()
Сообщение
#2914
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
в модуле с гоблинами и кобольдами создаются монстры с тегами типа "*goblin1", "*goblin2" и т.д. так что если у тебя тэг тролля "NW_TROLL" без циферок, то и спаунить надо без циферок:
Neverwinter Script void main() { int iUD = GetUserDefinedEventNumber(); //int iRandom = Random(7)+1; //string sRandom = IntToString(iRandom); <-- то есть это нам уже не надо, ну а если надо - используй предыдущий вариант object oNW_TROLLSpawn = GetNearestObjectByTag("NW_TROLL_Spawn"); // <-- тут нужен тэг именно точки спавна, а не существа, чтобы оно создавалось там, где нам нужно, а не там, где умер предыдущий тролль. название тролля и спавна нам не нужно вообще. location lSpawn = GetLocation(oNW_TROLLSpawn); // <-- а тут верно вписать название нужного object'a if (iUD == 1007) { CreateObject(OBJECT_TYPE_CREATURE, "NW_TROLL", lSpawn); // ну и тут циферь уберём (подразумевается, что "NW_TROLL" - это резреф тролля, хоть он и должен быть с маленькой буковки(IMG:style_emoticons/kolobok_light/wink3.gif) ) } } как-то так... P.S. Эх, помнится и я начинал свой скриптинг с разбора этого скрипта (только интернета у меня тогда ещё не было) - как раз повод если делать с нуля разобраться отличии резрефов, тэгов, названий и прочего. Сообщение отредактировал azathoth - May 12 2008, 09:32 |
![]()
Сообщение
#2915
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
Да спасибо со спавнами уже порядок умеем.
Следуший вопрос,точнее 2; 1.Первый-связвнный с фракциями,кто в этом мастер,я делаю модуль с тремя фракциями,дак вот вопрос в следующем,Как сделать так чтобы при заходе на следущую локацию игрок,именно Игрок,а не монстер,с изменеием фракции монстрам я уже спокойно разобрался,а вот как сделать так чтобы при заходе-нажатии на тригер,и при перемещении в новую локацию игрок становился бы либо торговцем,либо защитником,либо кем то другим по фракции? 2.Как сделать так чтобы после смерти игрок портировался к определенной точке,а не оставался лежать на том месте где его убили? при этом чтобы ему отнимались опыт и деньги,ну можно и без потерей,главное научите-подскажите как чтобы игрок портировался после смерти на какуюто определенную,заданную мною точку. Сообщение отредактировал Sugo77 - May 14 2008, 11:57 |
![]() ![]() |
Текстовая версия | Сейчас: 6th May 2025 - 04:46 |