В этом уроке мы рассмотрим как создавать новые зоны на примере NoWeaponZone.
Цель. Создать зону, при попадании в которую любое оружие удаляется.
Применение. Это может быть мирная зона, куда запрещен вход с оружием. Или дно пропасти, чтобы игроки не накидали туда много оружия и карта не начала лагать. Это могут быть различные типы арен на одной карте - одна для мечей, вторая только для молотов и тд.
Как это сделать?
Запускаем редактор, открываем карту. Должна быть приготовлена и отделена зона, по аналогии ы noKillzone.
Заходим в classes - info - zone info.
Нажимает правой кнопкой на zoneinfo. Выбираем 'create new class below zoneinfo'
Название - NoWeaponZone
Package - MyLevel (не ошибитесь в названии пакета, обязательно MyLevel, ни в коем случае не runei, иначе можно запороть руну)
Щелкаем два раза на новой зоне, откроется окошко для скриптов.
Добавляем скрипт:
Code
event ActorEntered( actor Other )
{
if (Other.IsA('Weapon'))
Other.Destroy();
else
Super.ActorEntered(Other);
}
В итоге должно выглядеть вот так:
Code
//=============================================================================
// WeaponDeleteZone.
//=============================================================================
class WeaponDeleteZone expands ZoneInfo;
event ActorEntered( actor Other )
{
if (Other.IsA('Weapon'))
Other.Destroy();
else
Super.ActorEntered(Other);
}
Теперь рассмотрим, что делает этот скрипт.
event ActorEntered(actor Other) - событие вызывается, когда объект Other входит в зону.
if (Other.IsA('Weapon')) - проверяется, является ли этот объект классом Weapon. (Вместо weapon можно уточнить sword, DwarfBattleAxe и т.д.)
Other.Destroy - если да, то Other уничтожается
else
Super.actorEntered(Other) - если нет, тогдa выполняется событие ActorEntered для простой ZoneInfo. Можете поэкспериментировать. Например, замените Other.Destroy(); на
Other.DrawScale = 2;
и тогда при входе в зону оружие раздуется в два раза.
Теперь добавляйте зону на карту и тестируйте!