Так как Красти пока нет, Этот урок буду преподавать я. И мы с вами сразу перескочим к 10 уроку, самому сложному. Квесты. Вообще квест делать просто. Честно. Это с первого раза все тяжело и непонятно, но потом вы разберетесь и будете без труда создавать хорошие квесты. Но в данный момент мы сделаем простенький квест, по анологии моего. ============================================= Итак, запускаем Tes CS, и пока он загружается, я предлагаю определиться с идеей квеста. Для примера и для первого раза, смотрите за мной, вникайте, и делайте как я, чтобы не было путаницы. Вот сюжет квеста: В таверне "Ваунет" появился человек по имени Стенли и предлагает ГГ (главному герою) квест. На него напали разбойники и украли фамильное кольцо, и ГГ должен вернуть это кольцо за вознаграждение в 500 золотых монет. Перед созданием квеста, сначала нужно создать: 1. Персонажа, который дает квест. 2. заброшенный дом. 3. Разбойников. 4. Кольцо. 5. ключ. Я думаю, вы хорошо поняли урок по созданию домов, поэтому не буду останавливаться на этом, дам несколько советов: 1. Так как дом заброшен, обстановка должна быть в нем соответствующая. (темновато, грязно, полно сломанной мебели, старых ящиков и т.д.) 2.После этого используйте стандартный ключ. Измените его ID на новое. Я всегда пишу такой ID: RioKey. И вам советую использовать свои ники или хотя бы первые буквы, и название предмета, в данном случае Key, что значит ключ. Это не только облегчит вам поиск вашего созданного предмета, но и не будет путаницы. ID ключа: QuestKey.
============================================= Далее->в вашем доме создаем разбойников. Используем стандарт. идем: Actors(Актеры)->NPC(персонажи) и нажмите на раскрывшемся списке найдите Id начинающиеся на "Bandit" Это все ID бандитов. Октройте меню какого - нибудь бандита и напишите Новый ID:"QuestBandit". Зачем создавать новых, если есть обычные? Я считаю, что вас надо сразу научить тому как можно поставить уровневое ограничение на квест.
Позже, я расскажу об этом. Расположите этого бандита в вашем доме, и нажав комбинацию ctrl+D, сделайте трех бандитов. Эта комбинация копирует тот объект, который выделен, в нашем случае бандит. ============================================= Теперь создаем персонажа, который дает квест. По аналогии с бандитами. Найдите в списке Id: Athrelor. Это Id Атрелора. Откройте меню Атрелора, поставьте свой уникальный Id: "CtenQuest" и дайте ему имя Стенли. пожалуйста обратите внимание на Reference Edition ID. Впишите в эту строку ID персонажа и в конце добавьте "1". Что эти Id отличались. отметьте Галочкой Persistent reference. попытаюсь объяснить. вообще reference ID делает выбранный премет или персонажа уникальным в мире. Также Reference Id должен всегда отличаться от обычного ID.Когда вы поставите Reference ID, тогда отметьте Галочкой Persistent reference. это поможет в будущем для установки маркеров.
И кольцо. Дайте ему такой ID: QuestRing. и назовите "фамильное кольцо" Поставьте value=150. Также дайте ему уникальный Reference ID:QuestRing1 и отметьте Галочкой Persistent reference.
НА ЗАМЕТКУ: Если вы используете какого-либо персонажа, убедитесь, что на нем не "висит" какой-нибудь скрипт. Так, все, переходим к теме урока. ============================================= На заметку: старайтесь чаще сохранятся, потому что порой CS может зависнуть или вырубиться, а работа будет утеряна. Поверьте, я такое испытывал и вам этого не желаю. Идем: Character->Quests... И перед вами открывается окно со всеми квестами игры. Давайте в списке квестов кликнем правой кнопкой мыши(ПКМ) и нажмем "NEW" откроется окошечко. Впишите туда: "MyFirstQuest". Итак, теперь сначала настроим Quest data. Строка Quest name значит "название квеста". То есть, то что вы напишите в этой строке, будет отображаться в журнале. Напишите "Украденное кольцо" Дальше, Priority, что значит "приоритет". поставьте стандартное число: 60. Ниже находится окно "Quest Conditios" Что значит условия квеста. Кликаем в этом окне правой кнопкой мыши и нажимаем "new" Затем в Conditions Function,что значит "условия функции", найдите "GetPlayableRace" Поставьте эту функцию. А в "Value", что значит значение, поставьте 1. Чтож, на этом этапе стоит добавить, что эта функция имеется в условиях любого квеста. Эта основная функция.
Переходим в "Quests Stage", что значит стадии квеста. ============================================= Стадии квеста - это то, что будет отображаться в вашем журнале и непосредственно, при выполнении шагов квеста, журнал этого задания будет обновляться. Понимаете? тогда продолжим. В списке Index, что значит "индекс", как видите ничего нет. кликаете ПКМ, выбираете "new", и ставите "10".Теперь выбираем эту стадию 10 и в "Log Enty" кликаем ПКМ и нажимаем "NEW" и ниже в пустом окне "Log Entry" Пишем: "В таверне "Ваунет" мне повстречался человек по имени Стенли. Он рассказал о бандитах и просит вернуть его фамильное кольцо."
На заметку: Когда пишите журнал и темы о которых я позже расскажу, не употребляйте слова в мужском/женском роде, так как другой игрок может играть противоположным полом. Согласитесь, если игрок играет за мужской пол, он не может говорить "Я пошла." или "Я встретила" Заменяйте такие фразы. И еще, стадии квеста могут начинаться не с "10", а с "0". Это ваше желание. Продолжим. В index создаем строчку под индексом "15". В "Log Entry" создаем "new" и нижнем окне "Log Entry" пишем: "Мне удалось найти фамильное кольцо" Стенли. Нужно вернуть его."
Так, объясню обо всем позже. Опять в Index, создаем новую строчку с индексом "20". В Log entry создаем "new", и в нижнем окне пишем: "Стенли отблагодарил меня за колько и дал мне вознаграждение в виде 500 золотых монет." Ни для кого не секрет, что это конец квеста, но как его сделать? ниже окошечка, где вы писали все эти тексты есть "Complete Quest", что значит закончить квест. поставьте напротив него галочку. На этой стадии квест будет завершен, и задание будет перенесено в вкладку "Выполненные".
Ну, теперь переходим к самой сложной части создания квеста - "Topic" или темы квеста. ============================================= Темы отвечают за то, что будет "ляпать" персонаж, дающий квест, и что будет ваш герой отвечать. Как я уже сказал, это сложная часть квестостроения, потому, внимательно читайте, вникайте, и делайте как я. Конечно, возможно, вам покажется это пустяком. Приступим! Что мы видим в Topic? Множество окон и ничего не понятно. Я вам объясню. В списке "Editor ID" отображаются все темы квеста, которые вы добавите. Topic Text, это то, что будет отображаться в разговоре с персонажем. Затем,ниже располагается окно, в котором располагается Все, что говорит персонаж, после активации темы. Например, когда вы активируете тему слухи, персонаж говорит о слухах. Надеюсь вы поняли о чем я. Ниже располагается поле для скриптов. Result script. Оно нам в будущем тоже понадобится. Да! Здесь начинаются основы скриптинга. Под этим окном находится окно условий или Conditions. Здесь устанавливаются условия для квеста. Здесь можно настроить какой уровень героя нужен для выпонения квеста, настроить, кто какие темы будет говорить и много много еще всего. Теперь, справа, вы видете еще 3 маленьких окна: Add Topic, choices, Link from. Я рекомендую не использовать Add Topic, потому что CS из-за этого может вылетать и ваша работа вся накроется. Честно, будет обидно вам.
Итак, давайте создадим тему. ПКМ на Editor ID -> new. Ищем тему "Greeting", то есть тему приветствия.
В этой теме не меняем Topic Text!!! Только в следующем окне жмем ПКМ и new. В выпавшем окне в Response text пишем следующее: "Добрый день, вы не могли бы мне помочь?" Ниже вы видите "Emotion Type". Эта строка отвечает за эмоции персонажа, который говорит фразу, что вы написали вверху. Это может быть счастливое, аггресивное, печальное, удивленное, злое. Ниже расположено значение эмоции - от 0 до 100.
Так, вернемся к теме. Теперь, когда вы заговорите с персонажем, он будет приветствовать вас этой фразой. НО! Это еще надо настроить. Переходим в Conditions. ПКМ на окне -> "new". Ниже в Condition Function ищите функцию GetisID. Это функция отвечает за то, какой персонаж будет говорить ваши темы. Без этой функции обращаясь к каждому персонажу, он будет говорить только на ваши созданные темы. То есть мод испортит игру, к тому же сразу не пройдет Бета-тест. Поэтому эту функцию вставляем обязательно во все темы, которые вы создали! Поставили? теперь нажимаем справа на кнопку "Invalid" Помните Id персонажа ,который дает квест? Ищите его в списке и убедитесь, что "Value" стоит значение "1". Ну хорошо, создали. но согласитесь, нам же не нужно, чтоб персонаж приветствовал нас каждый раз, даже после выполнения квеста. Потому в том окне, где getisId создаем новую функцию и ищем GetStage. GETSTAGE отвечает за то, на какой стадии квеста будет появляться тема или приветствие. Ставим Getstage, нажимаем в поле NONE и ищем ID нашего с вами квеста. А в строке Comparison(равенство) ставим НЕ "==", а " Понимаете функцию Getstage? тогда дальше. В окне Result script добавьте скрипт: addTopic Quest1. Этим скриптом мы добавляем тему для разговора, которая будет после приветствия. В теме "Greeting", которую мы поставили, добавим еще одно приветсвие. Добавьте сами, чтобы закрепить знание о добавлении диалогов в тему квеста. и напишите текст: "Пожалуйста, найди мое кольцо." Ставим GetisId тот же, что и в первом приветствии. и GetStage, только теперь Value поставьте 15, а равенство " "Спасибо еще раз за помощь!" Тот же ставим GetisId, тот же GetStage, только равенство теперь "==", а Value "20" То есть теперь, если вы выполнили этот квест, персонаж будет говорит такую фразу. ============================================= Переходим в Editor ID. Добавляем новую тему, только теперь в списке тем жмите ПКМ и "new" Назовите тему Quest1. В этой теме можно менять все, потому что ее создали вы. В Topic Text: пишем "Украденное кольцо". Теперь, помимо слухов, вы можете поговорить с персонажем о кольце. Теперь ниже в окне создаем новый диалог и пишем следующее: "На меня напали бандиты, когда я шел по улице. Они обокрали меня, сняв с моего пальца мое фамильное кольцо. Хорошо, я остановился в таверне и оставил свои вещи в номере, иначе бы вообще остался ни с чем. Прошу помоги, я в долгу не останусь. Тут недалеко есть заброшенный дом, думаю они там обосновались. Вот, один из бандитов выронил этот ключ, когда они убежали." Заметьте, персонаж должен выдать ключ ГГ, а также после этого диалога, журнал должен обновиться. Что делать? Переходим в Result Script и пишем следующую строчку: SetStage MyFirstQuest 10. Этот скрипт переводит в стадию квеста на 10. Жмем Enter и пишем следующую строчку: player.additem QuestKey 1. Этот скрипт добавляет в инвентарь ключ. "1" это количество. Conditions поставьте тот же getisid, а GetStage >10. То есть теперь, когда ГГ взял квест, персонаж больше не скажет, что с ним случилось. ============================================= Так, а на этом месте я научу вас ставить ограничение. Допустим, чтобы начать этот квест, герой должен быть не менее 15 уровня. Как это сделать? Там, где getisId и Getstage создаем новую функцию и ищем "GetLevel". Да, именно эта функция отвечает за уровневое ограничение. Равенство ставим ">=" Value = 15. Теперь, если ГГ менее 15 уровня. темы для разговора. не будет, если же уровень ГГ 15 и более, то тема появится.Однако, есть еще один способ ограничения. Можно сделать так, Что тема будет отображаться, но если ГГ менее 15 уровня, персонаж откажется рассказывать, и журнал не обновиться. Но я обещал научить вас создавать простейшие квесты, если кому интересно объясню. ============================================= Продолжаем. Создайте новый диалог в теме "Quest1" и напишите: "Я же сказал, где они, а ты не сходил?" Тот же getisID, тот же Getstage, только Value = 15, равенство поставьте " Найдите строчку "Goodbay" и поставьте галочку напротив этой сточки. Это значит, что сказав эту фразу, персонаж перестанет вести разговор. Вот мы и на финишной прямой...почти. создайте диалог и напишите: "Ты нашел мое кольцо? Спасибо тебе! Большое спасибо! Вот, держи, спасибо!" Опять, персонаж дает вознаграждение и естественно забирает кольцо. Отправляемся в Result script и пишем:player.removeitem QuestRing 1 этот скрипт забирает у ГГ найденное кольцо. жмем enter далее пишем: player.additem gold001 500. Этот скрипт добавляет ГГ 500 золотых монет. Снова enter и пишем: Setstage MyFirstQuest 20. Этот квест переводит квест в завершающую стадию. ============================================= Закрываем окно квестов, но оно нам еще понадобиться, и сохраняемся. Не забывайте про сохранение! Зайдите в ячейку вашего заброшенного дома, найдите в списке объектов. открываем одного бандита, нажимаем "Edit Base" и в конец вашего ID добавляем цифру 1. Переименуйте бандита на Главаря бандитов. Найдите вкладку "Inventory". Это инвентарь персонажа. Удаляем все, что там есть, и добавляем кольцо. Конечно, стоит добавить броню и оружие. Смотрите оружие: Item->weapon, а броню: Item->Armor. Раз у ГГ 15 уровень, то поставьте что-нить хорошее,например, эльфийскую броню или что-нибудь на подобе, учитывайте уровень! Поставьте уровень бандиту, чтоб было сложнее, сделайте их уровень на 1-2 больше чем у ГГ. Нажмете "Ok" и в появившемся окне нажмите да.
На заметку: Не надо делать так, чтоб уровень бандитов был на 10 уровней больше, из-за этого не только пропадет интерес, но и пройти квест будет невозможно. Поставьте также остальным бандитам только кольцо им не добавляйте. откройте окно кольца и поставьте галочку напротив Quest Item. то есть квестовый предмет, и ГГ его выкинуть не сможет. нажмите "Ok" Теперь напишем скрипт посложнее. Читайте все внимательно и вникайте. ============================================= Скрипты...Для кого-то это просто иероглифы, но если разобраться и вникнуть, делать простенькие скрипты не так уж и сложно. Сейчас создадим скрипт, который поставим на кольцо. Когда ГГ возьмет кольцо - журнал обновится. Нажимаем на карандаш и в открывшемся окне находим Script->new.
Поле стало белым, Итак вот скрипт. Внимательно ознакомтесь с его содержанием, я объясню каждую строчку. ";" и то, что после ее писать не нужно! Scn RingScript ; эта строчка отвечает за название скрипта, по которому его можно будет найти в списке всех скриптов. Begin OnAdd ; эта строчка начинает начинает квест, то есть, в данном случае активирует скрипт тогда, когда ГГ поднимит предмет If (getstage MyfirstQuest == 10) ; эта строка делает условие. Если квест на стадии 10, то при поднятии предмета, на котором стоит этот скрипт, выполнится команда следующей строчки. Setstage MyFirstQuest 15 ; содержимое этой строчки выполняет условие предыдущей строчки. Если стадия квеста 10, то при поднятии объекта стадия перейдет в значение 15 endif ; ОБЯЗАТЕЛЬНАЯ строчка, если в скрипте имеются другие строчки, содержащие "if"! end ; Заканчивает скрипт. Теперь сохраняем скрипт и ставим его на кольцо. Квест можете считать завершенным. его можно тестировать, однако, вашему квесту нужно сделать маркеры.
============================================= Маркеры, дело совсем простое, особенно после проделанной работы. Итак, открываем окно квестов.(как это делать вы уже знаете) Находим ваш квест, выбираем его и идем в закладку Quest Target(квестовые цели). Что там? Пусто.
Надо добавить две цели: 1. маркер показывающий на кольцо 2. маркер, после обновления журнала показывающий на Стенли. Для начала, я вам объясню, что там за окна. Самое верхнее, Target ref, цели. То есть туда добавляем первую цель. ПКМ -> "new". Ниже "Quest target data". Там настраивается ячейка, в котором находится объект, в нашем случае кольцо. Это Cell, переводится как вы знаете "ячейка". Вторая строка -Ref, ставит маркер на объект, который нужно найти, ищите в ней Id и ref ID кольца. Обязательно поставьте в условиях(Conditions) функцию Getstage == 10. НЕ ЗАБУДЬТЕ про id квеста! Так, теперь поставим маркер на Стенли. В target ref жмем ПКМ->new. ниже в cell ищем таверну "Ваунет" (ее id - WawnetInnTavern), затем в Ref ищем ID и Ref ID Стенли. В условиях поставьте getstage ==15. Не забудьте настроить на id вашего квеста. Теперь после нахождения кольца, маркер будет показывать на Стенли. На этом квест полностью завершен. Я надеюсь вы поняли этот самый сложный из всех уроков урок. ============================================ Если вы освоили материал, я предлагаю закрепить знания. Постарайтесь не смотреть в материал и создать еще один квест. Делаете это по желанию и не для меня, а для себя. Не надо обманывать. Просто сделали, выложите скриншот один и описание квеста, и кратко расскажите как делали. Смотрели, или нет, может только подглядывали. В этом нет ничего плохого. С первого раза все усвоить сложно, надо тренироваться и стараться! Главные ваши союзники это терпение, желание и стремление. На этом урок окончен! Спасибо за внимание! Если есть вопросы, пожалуйста задавайте, помогу.
Сообщение отредактировал Rio - Среда, 29.06.2019, 17:54
Luna
Дата: Среда, 29.06.2019, 16:30 | Сообщение # 2
Граф
Группа: V.I.P.
Сообщений: 798
Статус:
Можно, я добавлю?
Quote (Rio)
В окне Result script добавьте скрипт: addTopic Quest1.
Quote (Rio)
Переходим в Editor ID. Добавляем новую тему, только теперь в списке тем жмите ПКМ и "new" Назовите тему Quest1
если сделать резалт скрипт ДО того, как будет создан топик, то КС будет сильно ругаться и откажется сохранять обрпщение к несуществующему топику. Поэтому тема Quest1 должна быть создана перед тем, как ее вставлять в результирующий скрипт. Обходя разложенные грабли, теряешь драгоценный опыт
Rio
Дата: Среда, 29.06.2019, 17:53 | Сообщение # 3
Эсквайр
Группа: V.I.P.
Сообщений: 454
Статус:
Quote (Luna)
если сделать резалт скрипт ДО того, как будет создан топик, то КС будет сильно ругаться и откажется сохранять обрпщение к несуществующему топику. Поэтому тема Quest1 должна быть создана перед тем, как ее вставлять в результирующий скрипт.
Да, блин, я об этом не подумал, просто когда читал документации в первый раз я вообще не вьехал, что там говорили, хотел тут нормально объяснить, а про этот глюк не подумал. Luna, спасибо.
Quote (Naratzul)
Косячок в скрипте.
Да, поторопился немного.
Nerealist
Дата: Вторник, 05.07.2019, 02:15 | Сообщение # 4
Странник
Группа: Ученик
Сообщений: 24
Статус:
Quote (Rio)
Теперь создаем персонажа, который дает квест. По аналогии с бандитами. Найдите в списке Id: Athrelor. Это Id Атрелора. Откройте меню Атрелора, поставьте свой уникальный Id: "CtenQuest" и дайте ему имя Стенли. пожалуйста обратите внимание на Reference Edition ID. Впишите в эту строку ID персонажа и в конце добавьте "1". Что эти Id отличались. отметьте Галочкой Persistent reference. попытаюсь объяснить. вообще reference ID делает выбранный премет или персонажа уникальным в мире. Также Reference Id должен всегда отличаться от обычного ID.Когда вы поставите Reference ID, тогда отметьте Галочкой Persistent reference. это поможет в будущем для установки маркеров. [img] http://i062.radikal.ru/1106/aa/f1a4584e6713.jpg[/img]
Битый спойлер изображение не отображаеца((
Добавлено (05.07.2019, 02:15) --------------------------------------------- Скрипты...Для кого-то это просто иероглифы, но если разобраться и вникнуть, делать простенькие скрипты не так уж и сложно. Сейчас создадим скрипт, который поставим на кольцо. Когда ГГ возьмет кольцо - журнал обновится. Нажимаем на карандаш и в открывшемся окне находим Script->new. И этот