В этом уроке я предоставляю Вам самый простой, самый удобный
и самый функциональный способ создания кодового замка на Ваших картах.
Работа этого кодового замка настолько проста для понимания,
что про неё можно просто рассказать, не предоставляя при этом графический материал.
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. Скачать карты-примеры:
Временно недоступно.
6. Про тему:
Поставь "Нравится" за тему

Изменено: Винни, 14 февраля 2018 - 06:37