спасибо за "+" в кратце система такая:
сцена - просто изображение клавиатуры (при необходимости можно сделать подсветку, звук, анимацию на нажатие кнопок или на др. события). в моем примере этого нет. активные зоны (кнопки) указаны обычными регионами.
вводится глобальная переменная в base.inc (например "dials") и присваивается ей значение "0". далее начинаем вводить код. при нажатии на цифру, которая не задействована в коде, этой переменной просто опять присваивается ноль. такой же скрипт повешен на кнопку "clear".
on "LeftClick"
{
dials = 0;
}
при нажатии на первую правильную цифру кода переменной присваивается "1". при этом проверяется что б переменная была равна нулю. в противном случае идет обнуление.
(хотя я вот только щас подумал: на первой цифре кода можно обойтись без условия, а сразу присвоить значение, т.к. при любом раскладе при вводе первой цифры "dials" будет равно "0")
on "LeftClick"
{
if(dials != 0)
{
dials = 0;
}
else
{
dials = 1;
}
}
при вводе второй цифры проверяется, что б переменная была равна тому значению, которое присвоено при вводе первой, иначе - обнуление
on "LeftClick"
{
if(dials == 1)
{
dials = 2;
}
else
{
dials = 0;
}
}
на третьей тож самое:
on "LeftClick"
{
if(dials == 2)
{
dials = 3;
}
else
{
dials = 0;
}
}
при нажатии на "энтер" проверяется итоговая цифра и запускается событие. если цифра не совпадает - обнуление.
on "LeftClick"
{
if(dials == 3)
{
Game.ChangeScene("scenes\end\end.scene");
}
else
{
dials = 0;
}
}
лэфтклики, естественно присваиваются к соответствующим регионам в редакторе сцены.