Задача 3: Автоактивация

Автор: Visman

Задача:
Требуется заставить фонарь зажигать пламя при приближении и тушить его при удалении игрока.

Решение:
Используем ф-ию GetDistance для определения расстояния от объекта до игрока.

Сначала подготовим фонарь. Его создадим из объекта IronOutdoorLampPostYellow256, который находится в источниках света Light.
Переименуем его Editor ID в svaLampPostTestQ3 и на вопрос "Create a new object?" ответим "Да".
Далее создаем и сохраняем новый скрипт svaScriptTestQ3. Тип скрипта Object (задаем в поле Script Type).

scn svaScriptTestQ3

short flag; переменная будет отвечать за пламя (горит или нет)

; при загрузке объекта в игру
Begin OnLoad

; производим первоначальную настройку пламени
if ( GetDistance Player >= 300 ); если игрок далеко
RemoveFlames ; удаляем пламя
Set flag to 0 ; и переводим флаг в 0
else ; иначе игрок близко
AddFlames; значит добавляем пламя
Set flag to 1 ; и переводим флаг в 1
endif

End

; в игровом режиме
Begin GameMode

if ( flag == 0 ) ; если флаг указывает на то, что пламя не горит
if ( GetDistance Player < 300 ) ; проверяем положение игрока на близость к фонарю и если он близко
AddFlames ; включаем пламя
Set flag to 1 ; и флаг
endif
else ; иначе флаг указывает на горение пламени
if ( GetDistance Player > 400 ) ; тогда проверяем положение игрока на удаленность и если он далеко
RemoveFlames ; выключаем пламя
Set flag to 0 ; и флаг
endif
endif

End


Затем вернитесь к объекту svaLampPostTestQ3 в источниках света и пропишите в его свойствах скрипт svaScriptTestQ3. И установите радиус освещения Radius данного источника света равным 16 (чтобы не смущал :) ).

После этого поставьте два таких фонаря недалеко друг от друга в Торговом районе Имперского города и протестируйте их работу.

Задания:
1. Измените скрипт так, чтобы пламя пропадало не сразу после удаления игрока от фонаря, а через 10 секунд. (Смотрите ф-ию GetSecondsPassed)
2. Измените скрипт так, чтобы каждый раз при включении пламени на игрока кастовался огненный шар (заклинание StandardFireDamageArea3Journeyman). (Смотрите ф-ию Cast)
3. Создайте новый сундук и разместите на нем этот скрипт. Скрипт измените так, чтобы при приближении игрока к сундуку, сундук активировался автоматически (т.е. открывалось меню обмена вещами). (Смотрите ф-ию Activate)
4. Переделайте скрипт так, чтобы при первом посещении сундука возле него появлялось два бандита. (Смотрите ф-ию PlaceAtMe)


Оглавление