Регистрация | Вход
[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Kirill, Chainka, Ghost  
Форум » RuneeD » Triggers, Events, UnrealScript » NoWeaponZone (subclass)
NoWeaponZone
rukaДата: Вторник, 04.08.2009, 15:08 | Сообщение # 1
Admin
Группа: Администраторы
Сообщений: 228
Репутация: 23
Статус: Offline
В этом уроке мы рассмотрим как создавать новые зоны на примере 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;
и тогда при входе в зону оружие раздуется в два раза.
Теперь добавляйте зону на карту и тестируйте!

 
rukaДата: Среда, 05.08.2009, 20:07 | Сообщение # 2
Admin
Группа: Администраторы
Сообщений: 228
Репутация: 23
Статус: Offline
чуть не забыл, перед тестом нажимаем Script - Compile All Changed Scripts или F7.
 
Форум » RuneeD » Triggers, Events, UnrealScript » NoWeaponZone (subclass)
  • Страница 1 из 1
  • 1
Поиск: