Разработка карт, моделирование.

ТЕМА: [HL2/CS:S] Кодовый замок/Coded lock (advanced)

[HL2/CS:S] Кодовый замок/Coded lock (advanced) 11 года 9 мес. назад #6274

  • TRiLLeR
  • TRiLLeR аватар
  • Не в сети
  • Подробнее
    • Сообщений:218
    • Спасибо получено:14
    • Репутация: -3

В этом уроке я предоставляю Вам самый простой, самый удобный
и самый функциональный способ создания кодового замка на Ваших картах.
Работа этого кодового замка настолько проста для понимания,
что про неё можно просто рассказать, не предоставляя при этом графический материал.

1. Подготовка


И так, создадим карту, на которой поставим стену с дверью (prop_door_rotating) со стандартными настройками. Имя двери - door1.

Рядом с дверью на стене установим кодовый замок.
Каким образом будет создан кодовый замок и как он будет выглядеть - остаётся на Ваше усмотрение, главное, чтобы на кодовом замке было 10 кнопок (func_button).
Для удобства можете "налепить" на кнопки изображения цифр. Имена кнопкам задавать не нужно.

2. logic_compare, math_counter и logic_case


Создадим объект logic_compare со стандартными настройками. Имя compare1.
Создадим объект math_counter со стандартными настройками. Имя counter1.

На этом этапе нужно определиться из скольки цифр будет состоять Ваш код. Или другими словами: "какой длины пароль"?
Максимальная длина пароля может быть равна 16 цифр!
Пусть для нашего примера длина пароля будет равна 5 цифрам
Создадим объект logic_case. Имя case1.
В зависимости от длины нашего пароля, в свойствах объекта case1 нужно указать соответствующее количество цифр от 0 до 15.
Так как наш пароль длиной 5 цифр, то в свойствах от "Case 01" до "Case 05" последовательно ставятся цифры от 0 до 4.
Настройки Case 01:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


3. Логика работы кодового замка



Создадим взаимосвязи между всеми элементами кодового замка.

Зайдем в Outputs кнопки №1 и добавим ей всего один Output:
OnIn | compare1 | SetValueCompare | 1
Для остальных кнопок добавляем по одному аналогичному Output'у:
для кнопки №2 - OnIn | compare1 | SetValueCompare | 2
для кнопки №3 - OnIn | compare1 | SetValueCompare | 3
и т.д.

Зайдем в Outputs объекта compare1 и добавим ему 2 Output'а:
OnEqualTo | counter1 | Add | 1
OnNotEqualTo | case1 | InValue | 0


Зайдем в Outputs объекта counter1 и добавим ему всего один Output:
OutValue | case1 | InValue

Зайдем в Outputs объекта case1 и добавим ему Output'ы:
OnCase01 | counter1 | SetValueNoFire | 0
OnCase01 | compare1 | SetCompareValue | 5
OnCase02 | compare1 | SetCompareValue | 0
OnCase03 | compare1 | SetCompareValue | 7
OnCase04 | compare1 | SetCompareValue | 5
OnCase05 | compare1 | SetCompareValue | 5
OnDefault | !self | InValue | 0
OnDefault | door1 | Unlock
OnDefault | door1 | Open | 0.01

Обратите внимание на Output'ы "SetCompareValue". Именно в них указывается наш пароль! Так как наш пароль состоит из 5 цифр, то и Output'ов тоже создано пять (OnCase01 - OnCase05).
Как не сложно заметить, пароль от двери "50755".

Зайдем в Outputs двери door1 и добавим ей всего один Output:
OnFullyClosed | !self | Lock
Это заставит дверь "захлопываться".

Теперь о том, как всё это работает.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Для подготовки кодового замка к работе необходимо сбросить все его параметры в начальное состояние.
Создайте где-нибудь на карте объект logic_auto со стандартными настройками. Добавьте ему один Output:
OnMapSpawn | case1 | InValue | 0
Таким образом в начале каждого раунда кодовый замок будет автоматически выставлять свои начальные значения.

Для подготовки кодового замка к работе необходимо сбросить все его параметры в начальное состояние.
Создайте где-нибудь на карте объект logic_auto со стандартными настройками. Добавьте ему один Output:
OnMapSpawn | case1 | InValue | 0
Таким образом в начале каждого раунда кодовый замок будет автоматически выставлять свои начальные значения.

4. Положительные стороны этого метода


+ Простота реализации.
+ Простота и наглядность изменения пароля.
+ Допустимость использования в пароле повторяющихся символов. Как в нашем примере: 3 раза используется цифра 5.
+ Метод одинаково прост для паролей любой допустимой длины - хоть из одного символа, хоть из шестнадцати.
+ Имеется возможность удобного и простого контроля за всеми циклами работы замка и за ошибками набора пароля.
+ Имеется возможность использовать в качестве пароля любую последовательность символов. Можно создать в игре хоть целую клавиатуру и использовать буквенно-циферные пароли типа таких: "hello world".
+ Расширяемость. Пароль для кодового замка может автоматически выбираться из нескольких вариантов, подготовленных заранее. Т.е. у одного и того же кодового замка в разных раундах может быть разный пароль с различной длиной символов.
+ Расширяемость. У одного и того же кодового замка одновременно может быть сразу несколько "активных" паролей с различной длиной символов.

5. Скачать карты-примеры:

http://webfile.ru/5364487 csssdk_CODED_LOCK.zip (6.8 Кбайт)

http://webfile.ru/5364489 csssdk_CODED_LOCK_2.zip (7.0 Кбайт)


Источник
Последнее редактирование: 11 года 4 нед. назад от Lynx.
Администратор запретил публиковать записи гостям.

Быстрая авторизация

Поделиться с друзьями

Полезные ссылки

Последние сообщения

Топ-10 пользователей

Популярные профили Просмотров
Lynx 5234
Мистер Выдра 5103
neon 2783
✔iR 1612
Natasha Heide 1450
ky3mu4 1445
|K|I|P|I|S|H| 1276
Aztek 1255
davich 1189
makaveli 1091

Статистика форума

  • Всего пользователей: 6135
  • Последний: yqegocyli
  • Всего сообщений: 64.8к
  • Всего тем: 3409
  • Всего разделов: 6
  • Всего категорий: 39
  • Открыто сегодня: 0
  • Открыто вчера: 0
  • Всего ответов сегодня?: 1
  • Всего ответов вчера: 0
Время создания страницы: 0.344 секунд