Задача 2: Записи в квестовом журнале

Автор: Visman

Задача:
Оставить записи в квестовом журнале о посещении определенных мест (городов).

Решение:
Нужен квест в котором пропишем требуемые записи и скрипт для управления выводом этих записей в журнал квестов.

Сначала создаем квест svaQuestTestQ2. В имени квеста пишем Посещение городов и ставим галку Start Game Enabled для автостарта квеста (скрипт пока не указываем).

pic1


На вкладке Quest Stages прописываем стадии квеста. Это и будут наши сообщения в журнале квестов.
Стадии с 10 по 70 однотипны. В них заполняется поле Log Entry, которое и видно в игре.
10 - Я посетил Анвил.
20 - Я посетил Бравил.
30 - Я посетил Бруму.
40 - Я посетил Чейдинхолл.
50 - Я посетил Коррол.
60 - Я посетил Лейавиин.
70 - Я посетил Скинград.

pic2


80 стадия отличается от предыдущих. Она финальная - установлена галка Complete Quest и в поле результирующего скрипта Result Script стоит команда StopQuest svaQuestTestQ2 (для остановки данного квеста).
Поле Log Entry для этой стадии содержит Все города посещены.

pic3


Жмем OK.
Далее создаем и сохраняем новый скрипт svaScriptTestQ2. Тип скрипта Quest (задаем в поле Script Type).

scn svaScriptTestQ2

; переменные s1-7 будут отвечать за посещении городов
short s1
short s2
short s3
short s4
short s5
short s6
short s7

Begin GameMode

if ( s1==0 && Player.GetInWorldspace AnvilWorld )
; если посещение Анвила еще не было отслежено скриптом и игрок в Анвиле
SetStage svaQuestTestQ2 10; включаем 10 стадию квеста про Анвил, при этом выводится квестовое сообщение и в журнал квестов заносится запись
Set s1 to 1; отмечаем посещение этого города
elseif ( s2==0 && Player.GetInWorldspace BravilWorld )
; аналогично Бравил
SetStage svaQuestTestQ2 20
Set s2 to 1
elseif ( s3==0 && Player.GetInWorldspace BrumaWorld )
; аналогично Брума
SetStage svaQuestTestQ2 30
Set s3 to 1
elseif ( s4==0 && Player.GetInWorldspace CheydinhalWorld )
; аналогично Чейдинхолл
SetStage svaQuestTestQ2 40
Set s4 to 1
elseif ( s5==0 && Player.GetInWorldspace ChorrolWorld )
; аналогично Коррол
SetStage svaQuestTestQ2 50
Set s5 to 1
elseif ( s6==0 && Player.GetInWorldspace LeyawiinWorld )
; аналогично Лейавиин
SetStage svaQuestTestQ2 60
Set s6 to 1
elseif ( s7==0 && Player.GetInWorldspace SkingradWorld )
; аналогично Скинград
SetStage svaQuestTestQ2 70
Set s7 to 1
endif
End


Снова открываем окно квестов, выбираем квест svaQuestTestQ2 и в поле Script выбираем скрипт svaScriptTestQ2.
Жмем ОК.
Сохраняем плагин.
P.S. Подключаем плагин, запускаем игру и посещаем города. В каждом городе один раз будет выдаваться соответствующее сообщение и записываться в квестовый журнал.

Задания:
1. Добавьте стадию квеста 75 - Я посетил Университет Волшебства и измените скрипт, чтобы при посещении университета в журнал квестов была добавлена эта запись.
2. Измените скрипт так, чтобы после посещения всех 7 городов включилась 80-ая стадия квеста. (При наступлении этой стадии квест завершиться и в журнале перейдет в разряд выполненных)
3. (Трудное) Дополните стадии квеста так, чтобы построение предложений было правильно для женского и мужского персонажей. (Смотрите ф-ию GetPCIsSex)

Замечание:
Для добавления стадий квестов и их описаний жмем ПКМ в соответствующих областях окна квестов.


Оглавление