Войти на сайт

Авторизация, ждите ...
×
Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

ТЕМА: Система нажатий клавиш в правильном порядке

Система нажатий клавиш в правильном порядке 4 года 7 мес. назад #115944

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 543
  • Проект месяца 2 местоПроект месяца 3 местоПроект года 3 местоПроект месяца 1 местоУчительВетеран
Здравствуйте. Пытаюсь сделать систему нажатий клавишь в правильном порядке несколько раз.
Вот код 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 раза.
Надеюсь найдутся те кто поможет сделать систему.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.

Система нажатий клавиш в правильном порядке 4 года 7 мес. назад #115945

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 543
  • Проект месяца 2 местоПроект месяца 3 местоПроект года 3 местоПроект месяца 1 местоУчительВетеран
В принципе единственное что я не знаю как написать это саму оболочку для игры. Тобишь котораяч бы замораживала бы процесс на время игры (Отдельная функция при вызове которой шла бы заморозка процесса игры) но не влияла бы на скорость и воспроизведение звуков. Тобишь чтобы в такой функции можно было бы без проблем отлавливать клавиши, делать задержку и воспроизводить звуки.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.

Система нажатий клавиш в правильном порядке 4 года 7 мес. назад #115949

  • Leprikon01
  • Leprikon01 аватар
  • Вне сайта
  • Мастер
  • Сообщений: 228
  • Спасибо получено: 145
Администратор запретил публиковать записи гостям.

Система нажатий клавиш в правильном порядке 4 года 7 мес. назад #115950

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 543
  • Проект месяца 2 местоПроект месяца 3 местоПроект года 3 местоПроект месяца 1 местоУчительВетеран
Немного не то. Мне именно что не просто 1 раз нажал все правильные клавиши за время а несколько раз.
Даже не знаю как правильно объяснить.
Ну скажем так система как в MAD Father (Чуть позже покажу как она там сделана).
Ну если вкратце то тоже самое что и по ссылке но не 1 длинный список а несколько коротких списков за 1 таймер.
Тем более сколько списоков и сколько клавишь в списке нужно указывать самому.
Повторюсь. Такой системы ни делал для MV никто. Во всяком случае плагинов нету. Копаться в коде чужого плагина чтобы менять меня интересует. Это гораздо больше времени зайдет. Писать нужно самому. Но мне нужно само ядро которое будет блокировать управления игрока и в котором можно написать свой плагин как тенбе это надо.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 4 года 7 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.

Система нажатий клавиш в правильном порядке 4 года 7 мес. назад #115964

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 543
  • Проект месяца 2 местоПроект месяца 3 местоПроект года 3 местоПроект месяца 1 местоУчительВетеран
Короче накрутил ряд необходимых мне параметров. Возможное кое какие мелочи упустил но основные точно указал
//=============================================================================
// InputKeyTime.js
//=============================================================================
 
/*:
 * @plugindesc InputKeyTime
 * @author ***
 *
 * @param PSwitchs
 * @text --- Переключатели ---
 * @default ---------------------------------
 *
 * @param PVariables
 * @text --- Variables ---
 * @default ---------------------------------
 *
 * @param PSettings
 * @text --- Настройки игры ---
 * @default ---------------------------------
 *
 * @param Var Id Out Status Game
 * @parent PVariables
 * @desc Variable with the status of the end of the game. 1 - Victory. 2 - Losses.
 * @type variable
 * @default 1
 *
 * @param Var Id Count Key
 * @parent PVariables
 * @desc
 * @type variable
 * @default 2
 *
 * @param Var Id Count List Keys
 * @parent PVariables
 * @desc
 * @type variable
 * @default 3
 *
 * @param Var Id Count Attempts
 * @parent PVariables
 * @desc Variable with the number of attempts
 * @type variable
 * @default 4
 *
 * @param Var Id Key Press Error Behaviors
 * @parent PVariables
 * @desc Variable with a key code for a keystroke error.
 * @type variable
 * @default 5
 * 
 * @param Keys
 * @parent PSettings
 * @desc
 * @type string[]
 * @default ["left","up","right","down"]
 *
 * @param Style Game
 * @parent PSettings
 * @desc Style Game
 * @type struct<StyleGame>
 *
 * @param Sounds Game
 * @parent PSettings
 * @desc Sounds Game
 * @type struct<SoundsGame>
 *
 * @param Time Game
 * @parent PSettings
 * @desc Time Game
 * @type struct<TimeGame>
 *
 * @help
 
 Описание параметров:
 
 --- Переменные ---
 Var Id Out Status Game - Переменная которой будет возвращен статукс игры
 0 - В случае ошибки или других причин прекращзения игры
 1 - Победа
 2 - Поражение
 
 Var Id Count Key - Переменная количества клавишь в 1 списке (те что отображаются на экране) (Минимум 4; Максимум 20)
 
 Var Id Count List Keys - Переменная количества списков клавишь (Минимум 1; Максимум неограничен)
 
 Var Id Count Attempts - Переменная количества попыток (Минимум 0; Максимум неограничен; -1 - Бесконечно)
 
 Var Id Key Press Error Behaviors - Переменная поведения при ошибки если есть попытки (0 - Начнется заново с 1 списка; 1 - Начнется заново на остановившемся списке)
 
 Keys - Массив доступных клавишь
 
 --- Style Game - Стиль игры: ---
 
 Background - Настройка фона игры:
 ---
 Enabled Background - Будет ли выводится фон.
 
 Background - Картинка фона
 ---
 
 Background Progress Bar Timers - Картинка фона полоски таймера игры
 
 Progress Bar Timers - Картинка полоски таймера игры
 
 Progress Bar List Keys - Полоска процента выполненных списков клавиш:
 ---
 Enabled Background Progress Bar List Keys - Будет ли отображаться данная полоска
 
 Background Progress Bar List Keys - Картинка фона полоски процента выполненных списков клавиш
 
 Progress Bar List Keys - Картинка полоски процента выполненных списков клавиш
 ---
 
 Picture Type Keys - Картинки отображающие какую клавишу нужно нажатать:
 ---
 Picture Left - Картинка не нажатой клавиши Влево
 Picture Left Pressed - Картинка нажатой клавиши Влево
 
 Picture Up - Картинка не нажатой клавиши Вверх
 Picture Up Pressed - Картинка нажатой клавиши Вверх
 
 Picture Right - Картинка не нажатой клавиши Вправо
 Picture Right Pressed - Картинка нажатой клавиши Вправо
 
 Picture Down - Картинка не нажатой клавиши Вниз
 Picture Down Pressed - Картинка не нажатой клавиши Вниз
 ---
 
 Select Picture Keys - Картинка выделения клавишь:
 ---
 Enabled Select Picture Type Keys - Будет ли отображаться картинка
 
 Picture Key - Картинка неактивной клавиши
 
 Picture Select Key - Картинка активной клавиши
 
 Примечание:
 Картинки с клавишами отображать В внизу по центру.
 Картинки выделенной и не выделенной клавиши отображать под картинками клавишь как фон
 ---
 
 --- Sounds Game - Звуки игры ---
 Success SFX - Звук правильно нажатой клавиши
 Error SFX - Звук неправильно нажатой клавиши
 
 --- Time Game - Тайминги игры ---
 Delay next list keys - Задержка перед переходом к следующему списку или концом игры в кадрах
 */
 
/*~struct~StyleGame:
 
 * @param Background
 * @desc Background Game
 * @type struct<StyleGameBackground>
 * 
 * @param Background Progress Bar Timers
 * @desc Background Progress Bar Timers
 * @type file
 * @dir img/IKTSystem/
 * 
 * @param Progress Bar Timers
 * @desc Progress Bar Timers
 * @type file
 * @dir img/IKTSystem/
 * 
 * @param Progress Bar List Keys
 * @desc Progress Bar
 * @type struct<StyleGameBGProgressBarListKeys>
 * 
 * 
 * @param Picture Type Keys
 * @desc Picture Type Keys
 * @type struct<StyleGamePictureTypeKeys>
 * 
 * @param Select Picture Keys
 * @desc Select Picture Keys
 * @type struct<StyleGameSelectPictureKeys>
 * 
 */
 
/*~struct~StyleGameBackground:
 
 * @param Enabled Background
 * @desc Enabled Background
 * @type boolean
 * @default false
 * 
 * @param Background
 * @desc Background Game
 * @type file
 * @dir img/IKTSystem/
 */
 
/*~struct~StyleGameBGProgressBarListKeys:
 
 * @param Enabled Background Progress Bar List Keys
 * @desc Enabled Background Progress Bar List Keys
 * @type boolean
 * @default false
 *
 * @param Background Progress Bar List Keys
 * @desc Background Progress Bar List Keys
 * @type file
 * @dir img/IKTSystem/
 * 
 * @param Progress Bar List Keys
 * @desc Progress Bar List Keys
 * @type file
 * @dir img/IKTSystem/
 */
 
/*~struct~StyleGamePictureTypeKeys:
 
 * @param Picture Left
 * @desc Picture Left
 * @type file
 * @dir img/IKTSystem/
 * @require iconIKT_left
 * @default "iconIKT_left"
 * 
 * @param Picture Left Pressed
 * @desc Picture Left Pressed
 * @type file
 * @dir img/IKTSystem/
 * @require iconIKT_left_Pressed
 * @default "iconIKT_left_Pressed"
 * 
 * @param Picture Up
 * @desc Picture Up
 * @type file
 * @dir img/IKTSystem/
 * @require iconIKT_up
 * @default "iconIKT_up"
 *
 * @param Picture Up Pressed
 * @desc Picture Up Pressed
 * @type file
 * @dir img/IKTSystem/
 * @require iconIKT_up_Pressed
 * @default "iconIKT_up_Pressed"
 * 
 * @param Picture Right
 * @desc Picture Right
 * @type file
 * @dir img/IKTSystem/
 * @require iconIKT_right
 * @default "iconIKT_right"
 *
 * @param Picture Right Pressed
 * @desc Picture Right Pressed
 * @type file
 * @dir img/IKTSystem/
 * @require iconIKT_right_Pressed
 * @default "iconIKT_right_Pressed"
 *
 * @param Picture Down
 * @desc Picture Down
 * @type file
 * @dir img/IKTSystem/
 * @require iconIKT_down
 * @default "iconIKT_down"
 *
 * @param Picture Down Pressed
 * @desc Picture Down Pressed
 * @type file
 * @dir img/IKTSystem/
 * @require iconIKT_down_Pressed
 * @default "iconIKT_down_Pressed"
 */
 
/*~struct~StyleGameSelectPictureKeys:
 
* @param Enabled Select Picture Type Keys
* @desc Enabled Background images for not keys
* @type boolean
* @default true
*
* @param Picture Key
* @desc Background images for not pressed keys
* @type file
* @dir img/IKTSystem/
* @default "BGIKT_NoSelect"
*
* @param Picture Select Key
* @desc Background images for pressed keys
* @type file
* @dir img/IKTSystem/
* @default "BGIKT_Select"
*/
 
/*~struct~SoundsGame:
 
 * @param Success SFX
 * @desc The sound to play when the sequence is complete.
 * @type file
 * @dir audio/se
 * @default "Heal3"
 * 
 * @param Error SFX
 * @desc The sound to play when an incorrect button is pressed.
 * @type file
 * @dir audio/se
 * @default "Blind"
 */
 
/*~struct~TimeGame:
 
 * @param Delay next list keys
 * @desc Delay before displaying the next list of keys or ending the game. 60 frames - 1 second.
 * @type number
 * @default 40
 */
 
var InputKeyTime = {};
 
InputKeyTime.JSONParse = function(string) {
    try {
        if (Number.isFinite(string) || typeof string === "boolean") {
            return string;
        }
 
        return JSON.parse(string, (key, value) => {
            if (Array.isArray(value)) {
                return value.map(val => MemoryMiniGame.JSONParse(val));
            } else {
                try {
                    return MemoryMiniGame.JSONParse(value);
                } catch (e) {
                    return value;
                }
            }
        });
    } catch (e) {
        return string;
    }
};
 
InputKeyTime.parameters = PluginManager.parameters("InputKeyTime");
Может кто из свободных программистов хорошо знающих возможности MV напишет плагин (Не оплачивается).
Возможно совместное написания. Не отрицаю но я лишь знаю основы.
Плюс также возможное использования плагинов от DK для написания мини игры. Точнее если кому удобнее через них то пожалуйста. Мне без разницы. Я лишь написал структуру того что должно быть в системе нажатий которая мне нужна.
Также можно заменить ряд переменных на команды плагинов. Просто я не работал еще с командами плагигинов. Даже не изучал как это устроено в mv так что мне проще путем переменных MV
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 4 года 7 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.
Время создания страницы: 0.270 секунд