Простейший кодовый замок (GoldSrc)

Материал из CSM Wiki
Перейти к навигации Перейти к поиску


Это незавершённая статья. Вы можете помочь проекту, исправив и дополнив её.


Замок действует просто: нужно нажать три правильные цифры подряд. Если нажмете не в том порядке или одну неправильную цифру - замок вернется в "нулевое" положение. Достоинство замка в том, что можно делать коды какой угодно длины и с повторяющимися цифрами. Заинтересовались? Приступим. Для начала сделаем замок с трёхзначным кодом без повторяющихся цифр, потом усложним задачу.

Простой способ

Используемые энтити

Реализация

Создайте панель с кнопками от 0 до 9. Теперь задумайте код. Например 279.

Превратите каждую кнопку в func_button. Поставьте Delay Before Reset равным 0.5 - так лучше.

Кнопку с цифрой 0 назовите "digit0", Target поставьте "wrong_digit". Кнопку "1" назовите "digit1", Target - "wrong_digit". И так все кнопки до 9, кроме кнопки "2", ей поставьте Target "right2".

Теперь создайте энтити trigger_changetarget со следующими параметрами:

Параметр Значение
Name wrong1
Entity to affect digit7
New target wrong_digit

Создайте еще один trigger_changetarget со следующими параметрами:

Параметр Значение
Name wrong2
Entity to affect digit9
New target wrong_digit

Создайте третий trigger_changetarget.

Параметр Значение
Name right2
Entity to affect digit7
New target right7

Создайте четветрый trigger_changetarget.

Параметр Значение
Name right7
Entity to affect digit9
New target door

Создайте multi_manager.

Параметр Значение
Name wrong_digit

В нем поставьте линки на wrong1 и wrong2.

Создайте объект с именем door, который будет активироваться правильным кодом. Готово.

Пояснение

При нажатии любой цифры кроме "2" ничего не происходит. Как только мы нажимаем "2" она изменяет цель "7", и "7" становится "правильной" цифрой. Если мы нажмем не "7" а, например, "3", "7" снова станет "неправильной" цифрой. Если же мы нажмем "7", это сделает "9" "правильной" цифрой, целью которой будет наш объект. Нажатие неправильной кнопки, опять же, сбросит все в начальное положение.

Минусы метода

В этом замке есть одна ошибка. Можно сколько угодно подряд нажимать "правильную" цифру и это ничего не будет менять, т.е. можно набрать и "279", и "2222279". Однако существует способ, который позволяет запретить кратные нажатия правильной кнопки.

Запрет на кратный ввод правильных цифр

К сожалению этот метод не работает для первой правильной кнопки, то есть комбинация "2222279" так и будет считаться корректной, но зато починится комбинация "277777779".

Итак приступим. Найдите trigger_changetarget с именем right2 и измените New target с right7 на right7_mm. Создайте multi_manager. Имя - "right7_mm". Ключи - "right7" - 0 сек. задержки, "wrong1" - 0.6 сек. задержки.

Теперь, если игрок нажмет "7" два раза подряд, замок вернется в начальное положение.

Автор: Kalash88
Дата: 07.08.2007

Продвинутый способ

Используемые энтити

Принцип работы

Итак, принцип прост. Есть неправильные кнопки, они активируют game_counter, который считает до 4-х (количество символов в коде) и активирует цель cp_reset.

cp_reset – это целая гирлянда из десяти trigger_changetarget + одного game_counter_set и одной красной лампочки, которая будет показывать, что код не правильный и набор кода сброшен. Все trigger_changetarget сбрасывают цели кнопок на изначальные, а game_counter_set сбрасывает счетчик game_counter. Также на табло есть кнопка сброса, она просто активирует цель cp_reset.

На табло есть одна правильная кнопка (например 1), она ссылается на multi_manager, который активирует счетчик game_counter, затем активирует trigger_changetarget, который меняет цель кнопки 1 на cp_reset, потом активируется trigger_changetarget, который меняет цель следующей цифры кода (например 9) с cp_reset на multi_manager, который активирует счетчик game_counter, затем активирует trigger_changetarget, который меняет цель кнопки 9 на cp_reset, потом активируется trigger_changetarget, который меняет цель следующей цифры кода (например 7) с cp_reset на multi_manager, который активирует счетчик game_counter, затем активирует trigger_changetarget, который меняет цель кнопки 7 на cp_reset, потом активируется trigger_changetarget, который меняет цель следующей цифры кода (например 8 ) с cp_reset на multi_manager, который наконец таки зажжет зеленую лампочку и откроет дверь, затем активирует гирлянду из 10 trigger_changetarget, которые сделают клавиши панели неактивными (т.е. сделают поля целей кнопок пустыми, тогда они не будут ничего активировать и панель будет заблокирована).

Автор: [)r0n
Дата: 21.04.2010