LofZ Опубликовано 3 ноября, 2006 Жалоба Поделиться Опубликовано 3 ноября, 2006 В Морровинде довольно часто приходится сталкиваться в турнирных поединках с неписями. Исход таких боев однообразен: как только здоровье у непися достигает определенной отметки, он начинает просить о пощаде. Однако привычную ситуацию можно разнообразить, причем это довольно просто. Я расскажу, как помимо привычного создать альтернативный вариант, когда в бою не только израненный оппонент просит пощады, но и в случае серьезного ранения игрока непись начинает глумиться над ним и требовать, чтобы он просил прощения. 1. Итак, создайте врага с запасом здоровья больше 50 и поместите его в игре. У меня это нордлинг-задира по имени aa_mantas. Товарищ не очень сообразительный, но не лишенный своеобразного очарования. Назван в честь надоедливых монстров из Fallout, ведет себя соответствующе 2. Создайте новую журнальную запись "aaa_zadira" и запишите для нее примерно такие фразы со следующими индексами: Вначале ячейка диалога с флажком Questname «Задира»20 – я был атакован незнакомым нордлингом 89 – я проиграл этот бой30 – отношения выяснены – я побил задиру95 – я убил обидчика90 – обидчик не стал меня убиватьВ этим трех последних записях поставьте галочку Finished. 3. Используйте на обидчике следующий скрипт: begin neuvazhay-koryto; автор - LofZshort once if ( Menumode == 1 )returnendif if ( GetJournalIndex "aaa_zadira" >= 30 )returnendif if ( GetHealth <= 0 )journal "aaa_zadira" 95endif if ( once == 0 )if ( GetDistance, Player <= 350 )forcegreetingset once to 1endifendif if ( once == 1 )if ( GetHealth, "aa_mantas" < 50 )say, "vo\n\m\Hit_NM005.mp3", "стон" ; голос нордлингаstopcombat forcegreetingSetFight 30set once to 2endifendif if ( once == 1 )if ( Player -> GetFatigue <= 0 )if ( Player -> getHealth <= 20 )say, "vo\n\m\Fle_NM004.mp3", "Конец драки, я ухожу" ; а что ему еще остается сказать?journal "aaa_zadira" 89stopcombat SetFight 30forcegreetingset once to 2endifendifendif end Обратите внимание на строчки: if ( Player -> GetFatigue <= 0 )if ( Player -> getHealth <= 20 )Во-первых, вы можете регулировать цифры, задавая сколько пунктов должна быть усталость и здоровье игрока (20 – это, конечно, очень мало. Игрок почти при смерти. Если противник слишком силен, он может все-таки прибить Нери и диалог не состоится). Во-вторых, в самый главных, - уже прокачанного игрока сложно повалить на землю, условие if ( Player -> GetFatigue <= 0 ) для него может не сработать никогда. Если ваш квест рассчитан на опытного игрока, поставьте для «усталости» другое значение или вовсе уберите это условие. 3. Напишите для агрессора гритинг с условием journal “aaa_zadira” < 20 примерно следующего содержания: «Сейчас я устрою тебе драку, %PCRace! Я не стану убивать тебя, но окуну пару раз в лужи на улице и посмотрю, какого цвета у тебя кровь!»В результате пишем: journal "aaa_zadira" 20startcombat, playergoodbye 4. Создаем следующий гритинг повыше с условием journal “aaa_zadira” == 20: описываем ситуацию, когда наш громила проигрывает: «Остановись! Я признаю свое поражение. Вот тебе даже пара монет. Купи себе выпивку и не злись»В результате: player -> additem "gold_001" 50journal "aaa_zadira" 30stopcombat goodbye 5. Создаем еще выше гритинг с условием journal “aaa_zadira” == 89. Описываем самый интересный момент – проигрыш игрока: «Достаточно, %PCRAce? Я победил тебя, все честно! Иди теперь зализывай раны и помни, что я мог даже убить тебя, но не сделал этого! Не каждый из противников, которых ты найдешь в этом мире, способен на такое!»В результате: journal "aaa_zadira" 90goodbye6. Реакция программы, если непись, несмотря ни на что, был убит в этой драке происходит автоматически – возникает журнальная запись с индексом 95. Готово. При желании создайте для задиры диалог с новыми темами. Сохраняйте плагин и наслаждайтесь игрой. Ссылка на комментарий Поделиться на другие сайты Поделиться
Малолетний Раб Отаку Опубликовано 10 августа, 2007 Жалоба Поделиться Опубликовано 10 августа, 2007 (изменено) В результате пишем: journal "aaa_zadira" 20startcombat, playergoodbye насколько я знаю тут нужно приписать сет файт 100 ;).. Изменено 10 августа, 2007 пользователем Реван Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 10 августа, 2007 Автор Жалоба Поделиться Опубликовано 10 августа, 2007 насколько я знаю тут нужно приписать сет файт 100 ;)..Параметр SetFight отвечает за уровень агрессивности. Чем он выше, тем вероятность, что непись/кричер атакует игрока. Значение 90 и 100 по сути означает, что встреча с Нери закончится боем. Но это только один из способов управления поведением ИИ. В случае, который ты приводишь, применяется другая команда, с тем же эффектом. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения