Здравствуйте. Пытаюсь сделать систему нажатий клавишь в правильном порядке несколько раз.
Вот код 1 общего события старта системы
◆Сохранить BGM
◆Воспроизвести BGM:HMIX_kinpaku (90, 100, 0)
◆Переменная:#0113 [Нажатие клавишь] Номер = 1
◆Переменная:#0115 [Нажатие клавишь] Номер клавиши = 1
◆Если:[Нажатие клавишь] Количество = 5
◆Показать изображение:#1, IK5_1, Верхний левый угол (320,608), (100%,100%), 255, Нормальный
◆Переменная:#0116 [Нажатие клавишь] Массив клавишь = $script.getIKKeys();
◆Переместить изображение:#1, Верхний левый угол (320,544), (100%,100%), 255, Нормальный, 30 кадры(ов) (Ждать)
◆Скрипт:$script.setIKPic($gameVariables.value(116));
◆Таймер:Запустить, 1 мин 0 сек
◆Переключатель:#0120 [Нажатие клавишь] Игра = ВКЛ
◆
:Иначе
◆
:Конец
Код 2 общего события
◆Если:Таймер ≤ 0 мин 0 сек
◆Скрипт:$script.erasePictureIK($gameVariables.value(116));
◆Переменная:#0211 Статус окончание игры = 2
◆Показать изображение:#1, Defeat_01, Верхний левый угол (-800,0), (100%,100%), 0, Нормальный
◆Показать изображение:#2, Defeat_02, Верхний левый угол (800,304), (100%,100%), 0, Нормальный
◆Переместить изображение:#1, Верхний левый угол (0,0), (100%,100%), 255, Нормальный, 60 кадры(ов)
◆Переместить изображение:#2, Верхний левый угол (0,304), (100%,100%), 255, Нормальный, 60 кадры(ов) (Ждать)
◆Сообщение:Нет, Окно, Низ
: :
◆Переместить изображение:#1, Верхний левый угол (800,0), (100%,100%), 255, Нормальный, 60 кадры(ов)
◆Переместить изображение:#2, Верхний левый угол (-800,304), (100%,100%), 255, Нормальный, 60 кадры(ов) (Ждать)
◆Удалить изображение:#1
◆Удалить изображение:#2
◆Продолжить BGM
◆Переключатель:#0120 [Нажатие клавишь] Игра = ВЫКЛ
◆
:Иначе
◆Если:Скрипт:Input.anyTriggered(["left", "up", "right", "down"], false) != null
◆Если:Скрипт:$script.isIKInputAnyTriggered($gameVariables.value(116), $gameVariables.value(115))
◆Воспроизвести SE:Cursor3 (90, 100, 0)
◆Если:Скрипт:$gameVariables.value(115) < $script.getLengthVarArray($gameVariables.value(116))
◆Если:[Нажатие клавишь] Номер < [Нажатие клавишь] Количество
◆Скрипт:$script.nextIKPic($gameVariables.value(116), $gameVariables.value(115), $gameVariables.value(115) + 1);
◆Переменная:#0115 [Нажатие клавишь] Номер клавиши += 1
◆Ждать:7 кадры(ов)
◆
:Иначе
◆Скрипт:$script.nextIKPic($gameVariables.value(116), $gameVariables.value(115), $gameVariables.value(115) + 1);
◆Ждать:30 кадры(ов)
◆Скрипт:$script.erasePictureIK($gameVariables.value(116));
◆Переменная:#0211 Статус окончание игры = 1
◆Показать изображение:#1, Victory_01, Верхний левый угол (-800,0), (100%,100%), 0, Нормальный
◆Показать изображение:#2, Victory_02, Верхний левый угол (800,304), (100%,100%), 0, Нормальный
◆Переместить изображение:#1, Верхний левый угол (0,0), (100%,100%), 255, Нормальный, 60 кадры(ов)
◆Переместить изображение:#2, Верхний левый угол (0,304), (100%,100%), 255, Нормальный, 60 кадры(ов) (Ждать)
◆Сообщение:Нет, Окно, Низ
: :
◆Переместить изображение:#1, Верхний левый угол (800,0), (100%,100%), 255, Нормальный, 60 кадры(ов)
◆Переместить изображение:#2, Верхний левый угол (-800,304), (100%,100%), 255, Нормальный, 60 кадры(ов) (Ждать)
◆Удалить изображение:#1
◆Удалить изображение:#2
◆Продолжить BGM
◆Переключатель:#0120 [Нажатие клавишь] Игра = ВЫКЛ
◆
:Конец
◆
:Иначе
◆Переменная:#0116 [Нажатие клавишь] Массив клавишь = $script.getIKKeys();
◆Переменная:#0113 [Нажатие клавишь] Номер += 1
◆Переменная:#0115 [Нажатие клавишь] Номер клавиши = 1
◆Скрипт:$script.setIKPic($gameVariables.value(116));
◆
:Конец
◆
:Иначе
◆Воспроизвести SE:Damage2 (90, 150, 0)
◆Переменная:#0115 [Нажатие клавишь] Номер клавиши = 1
◆Скрипт:$script.setIKPic($gameVariables.value(116));
◆
:Конец
◆
:Конец
◆
:Конец
И дополнительные скрипты
static getLengthVarArray(varArr) {
return varArr.length;
}
static getIKKeys(lengthKey = 5) {
var ArrKeys = [];
for (var i = 0; i < lengthKey; i++) {
ArrKeys.push(SPProject.ArrKey[this.getRandomInRange(0, 3)]);
}
return ArrKeys;
}
static setIKPic(arrKeys) {
var pixX = 800 / 2 - (arrKeys.length * 32) / 2;
var addPixX = 0;
var pixY = 544;
$gameScreen._pictures[1]._name = "IK" + arrKeys.length + "_1";
for (var i = 0; i < arrKeys.length; i++) {
addPixX = i * 32;
$gameScreen.erasePicture(i + 2);
$gameScreen.showPicture(i + 2, "iconInputKey_" + arrKeys[i], 0, pixX + addPixX, pixY, 100, 100, 255, 0);
}
}
static nextIKPic(arrKeys, idKey, newIDKey) {
$gameScreen._pictures[1]._name = "IK" + arrKeys.length + "_" + newIDKey;
$gameScreen._pictures[idKey + 1]._name = "iconInputKey_" + arrKeys[idKey - 1] + "_Down";
}
static isIKInputAnyTriggered(arrKeys, idKey) {
return Input.anyTriggered(["left", "up", "right", "down"], false) === arrKeys[idKey - 1];
}
static erasePictureIK(arrKeys) {
$gameScreen.erasePicture(1);
for (var i = 0; i < arrKeys.length; i++) {
$gameScreen.erasePicture(i + 2);
}
}
Короче. Проблема в том что при нажатии клавишь пропадает звук на время задержки Ждать.
Плюс не всегда отлавливается нажатие.
Для нажатия я использую плагин DKTools_Full_Input.js
Проще конечно не исправлять эту систему а написать с нуля. Проблема в том что я не так чтоб силен в JS. А система следующая
У нас генерируется массив определенной длинны с рандомными клавишами.
Мы должны нажать клавиши в правильном порядке и сделать это несколько раз. Каждый раз новая генерация клавишь
Короче такая система в игре Mad Father есть который на Wolf сделан.
Для mv таких плагинов тупо не существует или они не правильно работают.
Вот гроафика подготовленная для системы
yadi.sk/d/6Q84MZvKnspO4w
В идеале конечно лучше плагин сделать но как уже сказал я не так чтоб силен в JS.
Вообще итоговый вариант должен быть следующим.
1. Таймер игры.
2. Это любое количество клавишь и количество их нажатий всего.
3. При неправильном нажатии 1 клавиши нажатые клавиши сбрасываются к нулю но количество нажатий всего остается.
4. Ну к слову в конце игры возвращать победу или поражения.
5. Ну и небольшая задершка после правильного нажатия массива клавишь до генерации нового массива для последующего нажатия.
Моя система та что выше работает практически так как нужно но несколько недочетов.
1. Это как уже сказал пропадает звук на задержках.
2. Это сам отклик нажатий срабатывает не с 1 раза.
Надеюсь найдутся те кто поможет сделать систему.