GRB MainMenuItems

Матеріал з РПГ.укр
Перейти до: навігація, пошук
Приклад меню, зміненого з допомогою цього плагіну

GRB_MainMenuItemsплагін для RPG Maker MV та MZ від команди Гарбата. Дозволяє додати пункти на екран меню або забрати стандартні пункти «Опції» та «Закінчити гру» (інші пункти можна забрати в базі даних).

Завантажити плагін можна тут: GRB_MainMenuItems.js.

Додавання пунктів меню[ ]

Цей плагін дозволяє додати пункт меню в одній з наступних позицій:

  • на початку списку,
  • в середині списку, після пункту «Порядок»,
  • в кінці списку.

У кожного пункту меню, що додається, є такі налаштування:

  • текст,
  • дія при активації: загальна подія або код мовою JavaScript,
  • змінна для героя: якщо вибрати змінну, перед викликом загальної події або виконанням коду буде показано вибір героїні або героя, а номер вибраної героїні або героя буде записано в цю змінну,
  • умови приховання: перемикач (якщо його увімкнено, пункт меню буде приховано) або код мовою JavaScript (щоб приховати, код має присвоїти змінній value значення true),
  • умови недоступності: перемикач (якщо його увімкнено, пункт меню буде недоступний) або код мовою JavaScript (щоб зробити пункт меню недоступним, код має присвоїти змінній value значення true).

Приховання пунктів меню[ ]

Плагін також дозволяє приховати стандартні пункти меню «Опції» та «Кінець гри».

Інші пункти меню можна приховати в базі даних, на сторінках Система (в RPG Maker MV) або Система 2 (в RPG Maker MZ).

Ліцензія[ ]

Плагін розповсюджується згідно з ліцензією Creative Commons Zero, тобто автори відмовляються від авторських прав (настільки, наскільки це взагалі можливо зробити згідно з законодавством).

Код[ ]

Показати код плагіну

//======================
// GRB_MainMenuItems.js
//======================
/*:
 * @plugindesc Set up items for the main menu screen
 * @author Garbata team
 * @url https://rpgukr.one/GRB_MainMenuItems
 * @target MV MZ
 *
 * @help
 * This plugin allows to add new menu items into the main menu, and also remove
 * some default items (non-removable in the System tab).
 *
 * The items can be added in one of the positions:
 * - At the top: in the beginning of the item list
 * - In the middle: after the "Formation" item
 * - In the bottom: at the end of the item list
 *
 * Each menu item added via this plugin have the following settings:
 * - Label: the text that will be displayed,
 * - Action that will be performed: either a common event or JS code,
 * - Actor variable: if set, the actor selection will be shown before
 * running the common event or JS code, and the result of the selection
 * will be stored in the variable (like for "Skills" or "Status" menu items),
 * - Hiding switch: if this switch is ON, the item will not be visible,
 * - Disabling switch: if this switch is ON, the item will be grayed-out and
 * it will be impossible to use it,
 * - Hiding JS code: if this code sets "value" variable to true, the item
 * will not be visible,
 * - Disabling JS code: if this code sets "value" variable to true, the item
 * will be grayed-out and impossible to use.
 *
 * The plugin allows to remove the two items that cannot be removed on the
 * System tab in the database: Options and End Game. Make sure to provide
 * alternative means of exiting the game if you hide this menu item.
 *
 * This plugin is placed into public domain according to the CC0 public domain
 * dedication. See https://creativecommons.org/publicdomain/zero/1.0/ for more
 * information.
 *
 * @param itemsToAddGroup
 * @text --- Items to add: ---
 * @desc Do not set this parameter. Instead, set the parameters below it.
 *
 * @param itemsStart
 * @parent itemsToAddGroup
 * @text Items at the top
 * @desc Items that will be added before Item/Skill/Equip/Status menu items.
 * @type struct<MenuItem>[]
 *
 * @param itemsMiddle
 * @parent itemsToAddGroup
 * @text Items in the middle
 * @desc Items that will be added in the middle of the command list (after "Formation").
 * @type struct<MenuItem>[]
 *
 * @param itemsEnd
 * @parent itemsToAddGroup
 * @text Items in the bottom
 * @desc Items that will be added in the bottom of the command list (after "End game").
 * @type struct<MenuItem>[]
 *
 * @param hideOptions
 * @text Hide "Options"
 * @desc Hide the default "Options" menu item.
 * @type boolean
 * @on Hide
 * @off Keep
 * @default false
 *
 * @param hideGameEnd
 * @text Hide "End Game"
 * @desc Hide the default "End game" menu item
 * @type boolean
 * @on Hide
 * @off Keep
 * @default false
 */
/*~struct~MenuItem:
 * @param label
 * @text Label
 * @desc Menu item label
 *
 * @param commonEvent
 * @text Common event to run
 * @type common_event
 * @desc If chosen, this common event will be run when the menu item is selected.
 *
 * @param jsAction
 * @text JS code to run
 * @type note
 * @desc If not empty, this JS code will be run when the menu item is selected.
 *
 * @param actorVar
 * @text Actor variable
 * @desc If set, actor selection will be shown before the common event/JS code.
 * @type variable
 *
 * @param hidingSwitch
 * @text Hiding switch
 * @type switch
 * @desc If this switch is ON, the menu item will be hidden.
 *
 * @param disablingSwitch
 * @text Disabling switch
 * @type switch
 * @desc If this switch is ON, the menu item will be disabled.
 *
 * @param hidingJsCode
 * @text Hiding JS code
 * @type note
 * @desc If this code is set, and it sets `value` to `true`, then the item will be hidden.
 *
 * @param disablingJsCode
 * @text Disabling JS code
 * @type note
 * @desc If this code is set, and it sets `value` to `true`, then the item will be disabled.
 */
/*:uk
 * @plugindesc Налаштування пунктів екрана головного меню
 * @author Команда Гарбата
 * @url https://rpgukr.one/GRB_MainMenuItems
 * @target MV MZ
 *
 * @help
 * Цей плагін дозволяє додати нові пункти меню в основне меню, а також видалити
 * деякі стандартні пункти (які не можна видалити на сторінці Система в базі
 * даних).
 *
 * Пункти можуть бути додані в одній з наступних позицій:
 * - Спочатку: на початку списку пунктів меню,
 * - В середині: після пункту «Порядок»,
 * - Внизу: в кінці списку пунктів меню.
 *
 * В кожного пункту меню, доданого через цей плагін, є наступні налаштування:
 * - Текст: текст, який буде показуватися в меню,
 * - Дія, яка буде виконуватися при виборі: або загальна подія, або код на JS,
 * - Змінна для героя: якщо вона вказана, перед викликом загальної події або
 * кода на JS буде показано вибір героя або героїні в партії, і номер вибраного
 * героя/героїні (ID в базі даних) буде записано в змінну (тобто пункт
 * меню буде працювати подібно на «Навички» або «Стан»),
 * - Перемикач приховання: якщо цей перемикач УВімкнено, пункт меню не буде
 * показано,
 * - Перемикач недоступності: якщо цей перемикач УВімкнено, пункт меню буде
 * затемнено і його не можна буде вибрати,
 * - Код JS приховання: якщо цей код запише в змінну «value» значення true,
 * пункт меню не буде показано.
 * - Код JS недоступності: якщо цей код запише в змінну «value» значення true,
 * пункт меню буде затемнено, і його не можна буде вибрати.
 *
 * Цей плагін також дозволяє забрати два пункт меню, які неможливо забрани
 * на сторінці Система в базі даних: Налаштування та Кінець гри. Якщо ви
 * приховуєте пункт Кінець гри, обов'язково дайте гравцям та гравчиням якийсь
 * альтернативний спосіб вийти з гри.
 *
 * Цей плагін передано до суспільного надбання згідно з CC0. Детальніше див.
 * на сторінці https://creativecommons.org/publicdomain/zero/1.0/deed.uk
 *
 * @param itemsToAddGroup
 * @text --- Що додати: ---
 * @desc Не міняйте цей параметр. Замість цього міняйте параметри під ним.
 *
 * @param itemsStart
 * @parent itemsToAddGroup
 * @text Пункти спочатку
 * @desc Пункти, які буде додано перед пунктами Річ/Навичка/Спорядження/Стан.
 * @type struct<MenuItem>[]
 *
 * @param itemsMiddle
 * @parent itemsToAddGroup
 * @text Пункти в середині
 * @desc Пункти, які буде додано в середині списку команд (після Порядку).
 * @type struct<MenuItem>[]
 *
 * @param itemsEnd
 * @parent itemsToAddGroup
 * @text Пункти внизу
 * @desc Пункти, які буде додано в кінці списку команд (після Кінця гри).
 * @type struct<MenuItem>[]
 *
 * @param hideOptions
 * @text Приховати «Опції»
 * @desc Приховує стандартний пункт меню «Опції» («Налаштування»).
 * @type boolean
 * @on Приховати
 * @off Залишити
 * @default false
 *
 * @param hideGameEnd
 * @text Приховати «Кінець гри»
 * @desc Приховує стандартний пункт меню «Кінець гри».
 * @type boolean
 * @on Приховати
 * @off Залишити
 * @default false
 */
/*~struct~MenuItem:uk
 * @param label
 * @text Текст
 * @desc Текст пункта меню.
 *
 * @param commonEvent
 * @text Загальна подія активації
 * @type common_event
 * @desc Якщо вибрана, ця загальна подія буде виконуватися при виборі пункту меню.
 *
 * @param jsAction
 * @text Код JS активації
 * @type note
 * @desc Якщо не пустий, цей код мовою JavaScript буде виконоуватися при виборі пункту меню.
 *
 * @param actorVar
 * @text Змінна для героя
 * @desc Якщо вибрана, перед загальною подією/кодом на JS буде показано вибор героя.
 * @type variable
 *
 * @param hidingSwitch
 * @text Перемикач приховання
 * @type switch
 * @desc Якщо цей перемикач УВімкнено, пункт меню буде приховано.
 *
 * @param disablingSwitch
 * @text Перемикач недоступності
 * @type switch
 * @desc Якщо цей перемикач УВімкнено, пункт меню буде недоступним.
 *
 * @param hidingJsCode
 * @text Код JS приховання
 * @type note
 * @desc Якщо цей код запише в змінну `value` значення `true`, пункт меню буде приховано.
 *
 * @param disablingJsCode
 * @text Код JS недоступності
 * @type note
 * @desc Якщо цей код запише в змінну `value` значення `true`, пункт меню буде недоступним.
 */
/*:be
 * @plugindesc Наладкі пунктаў асноўнага меню
 * @author Каманда Гарбата
 * @url https://rpgukr.one/GRB_MainMenuItems
 * @target MV MZ
 *
 * @help
 * Гэты плагін дазваляе дадаць новыя пункты меню ў асноўнае меню, а таксама
 * выдаліць некаторыя стандартныя пункты (якія нельга выдаліць на старонцы
 * Сістэма ў базе даных).
 *
 * Пункты могуць быць дададзеныя ў адной з наступных пазіцый:
 * - Спачатку: у пачатку спісу пунктаў меню,
 * - Усярэдзіне: пасля пункта «Парадак»,
 * - Унізе: у канцы спісу пунктаў меню.
 *
 * У кожнага пункта меню, дададзенага праз гэты плагін, ёсць наступныя наладкі:
 * - Тэкст: тэкст, які будзе паказвацца ў меню,
 * - Дзеянне, якое будзе выконвацца пры выбары: альбо агульная падзея, альбо
 * код на JS,
 * - Пераменная для героя: калі яна паказаная, перад выклікам агульнай падзеі
 * або кода на JS будзе паказаны выбар героя або гераіні ў партыі, і нумар
 * абранага героя/гераіні (ID ў базе дадзеных) будзе запісаны ў пераменную
 * (г. зн. пункт меню будзе працаваць як «Навыкі» ці «Стан»),
 * - Пераключальнік скрывання: калі гэты пераключальнік уключаны, пункт меню
 * не будзе паказаны,
 * - Пераключальнік недаступнасці: калі гэты пераключальнік уключаны, пункт
 * меню будзе зацемнены, і яго нельга будзе выбраць,
 * - Код JS скрывання: калі гэты код запіша ў зменную «value» значэнне true,
 * пункт меню не будзе паказаны.
 * - Код JS недаступнасці: калі гэты код запіша ў зменную «value» значэнне
 * true, пункт меню будзе зацемнены, і яго нельга будзе выбраць.
 *
 * Гэты плагін таксама дазваляе скрыць два пункты меню, якія немагчыма
 * скрыць на старонцы «Сістэма» ў базе дадзеных: Наладкі і Канец гульні.
 * Калі вы хаваеце пункт канец гульні, абавязкова дадайце нейкі альтэрнатыўны
 * спосаб выйсці з гульні.
 *
 * Гэты плагін пярэдадзены ў грамадскі набытак згодна з CC0. Падрабязней
 * гл. на старонцы https://creativecommons.org/publicdomain/zero/1.0/deed.be
 *
 * @param itemsToAddGroup
 * @text --- Што дадаць: ---
 * @desc Не мяняйце гэты параметр. Замест гэтага мяняйце параметры пад ім.
 *
 * @param itemsStart
 * @parent itemsToAddGroup
 * @text Пункты спачатку
 * @desc Пункты, якія будуць дададзеныя перад пунктамі Рэч/Навык/Экіпіроўка/Стан.
 * @type struct<MenuItem>[]
 *
 * @param itemsMiddle
 * @parent itemsToAddGroup
 * @text Пункты ўсярэдзіне
 * @desc Пункты, якія будуць дададзеныя ўсярэдзіне спісу каманд (пасля Парадку).
 * @type struct<MenuItem>[]
 *
 * @param itemsEnd
 * @parent itemsToAddGroup
 * @text Пункты ўнізе
 * @desc Пункты, якія будуць дададзеныя ў канцы спісу каманд (пасля Канца гульні).
 * @type struct<MenuItem>[]
 *
 * @param hideOptions
 * @text Скрыць «Наладкі»
 * @desc Скрывае стандартны пункт «Наладкі» («Опцыі»)
 * @type boolean
 * @on Скрыць
 * @off Пакінуць
 * @default false
 *
 * @param hideGameEnd
 * @text Скрыць «Канец гульні»
 * @desc Скрывае стандартны пункт «Канец гульні»
 * @type boolean
 * @on Скрыць
 * @off Пакінуць
 * @default false
 */
/*~struct~MenuItem:be
 * @param label
 * @text Тэкст
 * @desc Тэкст пункта меню.
 *
 * @param commonEvent
 * @text Агульная падзея актывацыі
 * @type common_event
 * @desc Калі выбраная, гэта агульная падзея будзе выконвацца падчас выбару пункта меню.
 *
 * @param jsAction
 * @text Код JS актывацыі
 * @type note
 * @desc Калі не пусты, гэты код на мове JavaScript будзе выконвацца падчас выбару пункта меню.
 *
 * @param actorVar
 * @text Пераменная для героя
 * @desc Калі выбраная, перад агульнай падзеяй/кодам на JS будзе паказаны выбар героя.
 * @type variable
 *
 * @param hidingSwitch
 * @text Пераключальнік скрывання
 * @type switch
 * @desc Калі гэты пераключальнік УКЛючаны, пункт будзе скрыты.
 *
 * @param disablingSwitch
 * @text Пераключальнік недаступнасці
 * @type switch
 * @desc Калі гэты пераключальнік УКЛючаны, пункт будзе недаступны.
 *
 * @param hidingJsCode
 * @text Код JS скрывання
 * @type note
 * @desc Калі гэты код запіша ў пераменную `value` значэнне `true`, пункт меню будзе скрыты.
 *
 * @param disablingJsCode
 * @text Код JS недаступнасці
 * @type note
 * @desc Калі гэты код запіша ў пераменную `value` значэнне `true`, пункт меню будзе недаступны.
 */
/*:ru
 * @plugindesc Настройки пунктов основного меню
 * @author Команда Гарбата
 * @url https://rpgukr.one/GRB_MainMenuItems
 * @target MV MZ
 *
 * @help
 * Этот плагин позволяет добавить новые пункты меню в основное меню, а также
 * удалить некоторые стандартные пункты (которые нельзя удалить на странице
 * Система в базе данных).
 *
 * Пункты могут быть добавлены в одной из следующих позиций:
 * - В начале: в начале списка пунктов меню,
 * - В середине: после пункта «Построение»,
 * - В конце: в конце списка пунктов меню.
 *
 * У каждого пункта меню, добавленного через этот плагин, есть такие настройки:
 * - Текст: текст, который будет показываться в меню,
 * - Действие, которое будет выполняться при выборе: либо общее событие, либо
 * код на JS,
 * - Переменная для героя: если она указана, перед вызовом общего события
 * или кода на JS будет показан выбор героя или героини в партии, и номер
 * выбранного героя/героини (ID в базе данных) будет записан в переменную
 * (т. е. пункт меню будет работать как «Навыки» или «Состояние»),
 * - Переключатель скрытия: когда этот переключатель включен, пункт меню
 * не будет показан,
 * - Переключатель недоступности: когда этот переключатель включен, пункт
 * меню будет затемнено, и его нельзя будет выбрать,
 * - Код JS скрытия: если этот код запишет в переменную» «value» значение true,
 * пункт меню не будет показан.
 * - Код JS недоступности: если этот код запишет в переменную «value» значение
 * true, пункт меню будет затемнен, и его нельзя будет выбрать.
 *
 * Этот плагин также позволяет скрыть два пункта меню, которые невозможно
 * скрыть на странице «Система» в базе данных: «Опции» и «Завершить игру».
 * Если вы скрываете пункт окончания игры, обязательно добавьте какой-то
 * альтернативный способ выйти из игры.
 *
 * Этот плагин передан в общественное достояние согласно CC0. Подробнее см. на
 * странице https://creativecommons.org/publicdomain/zero/1.0/deed.ru
 *
 * @param itemsToAddGroup
 * @text --- Что добавить: ---
 * @desc Не меняйте этот параметр. Вместо этого меняйте параметры под ним.
 *
 * @param itemsStart
 * @parent itemsToAddGroup
 * @text Пункты в начале
 * @desc Пункты, которые будут добавлены перед пунктами Вещь/Навык/Экипировка/Состояние.
 * @type struct<MenuItem>[]
 *
 * @param itemsMiddle
 * @parent itemsToAddGroup
 * @text Пункты в середине
 * @desc Пункты, которые будут добавлены в середине списка команд (после Построения).
 * @type struct<MenuItem>[]
 *
 * @param itemsEnd
 * @parent itemsToAddGroup
 * @text Пункты в конце
 * @desc Пункты, которые будут добавлены в конце списка команд (после «В титульное меню»).
 * @type struct<MenuItem>[]
 *
 * @param hideOptions
 * @text Скрыть «Опции»
 * @desc Скрывает стандартный пункт «Опции»
 * @type boolean
 * @on Скрыть
 * @off Оставить
 * @default false
 *
 * @param hideGameEnd
 * @text Скрыть «Завершить игру»
 * @desc Скрывает стандартный пункт «Завершить игру»
 * @type boolean
 * @on Скрыть
 * @off Оставить
 * @default false
 */
/*~struct~MenuItem:ru
 * @param label
 * @text Текст
 * @desc Текст пункта меню.
 *
 * @param commonEvent
 * @text Общее событие активации
 * @type common_event
 * @desc Если выбрано, это общее событие будет выполняться при выборе пункта меню.
 *
 * @param jsAction
 * @text Код JS активации
 * @type note
 * @desc Если не пустой, этот код на языке JavaScript будет выполняться при выборе пункта меню.
 *
 * @param actorVar
 * @text Переменная для героя
 * @desc Если выбрана, перед общим событием/кодом на JS будет показан выбор героя.
 * @type variable
 *
 * @param hidingSwitch
 * @text Переключатель скрытия
 * @type switch
 * @desc Если этот переключатель ВКЛючен, пункт будет скрыт.
 *
 * @param disablingSwitch
 * @text Переключатель недоступности
 * @type switch
 * @desc Если этот переключатель ВКЛючен, пункт будет недоступен.
 *
 * @param hidingJsCode
 * @text Код JS скрытия
 * @type note
 * @desc Если этот код запишет в переменную `value` значение `true`, пункт меню будет скрыт.
 *
 * @param disablingJsCode
 * @text Код JS недоступности
 * @type note
 * @desc Если этот код запишет в переменную `value` значение `true`, пункт меню будет недоступен.
 */

 if (typeof Imported === 'undefined') {
   Imported = {};
 }
 Imported.GRB_MainMenuItems = 0.01;

;(function () {

  var parameters = PluginManager.parameters('GRB_MainMenuItems');

  function parseDescriptions(jsonString) {
    if (jsonString) {
      return JSON.parse(jsonString).map(JSON.parse);
    }
    return [];
  }
  var itemsStart = parseDescriptions(parameters.itemsStart);
  var itemsMiddle = parseDescriptions(parameters.itemsMiddle);
  var itemsEnd = parseDescriptions(parameters.itemsEnd);
  var descsByIds = {};

  var Window_MenuCommand_makeCommandList = Window_MenuCommand.prototype.makeCommandList;
  Window_MenuCommand.prototype.makeCommandList = function() {
    this.grbAddMenuItems(itemsStart, 'grb-start-');
    Window_MenuCommand_makeCommandList.apply(this, arguments);
    this.grbAddMenuItems(itemsEnd, 'grb-end-');
  }

  var Window_MenuCommand_addOriginalCommands = Window_MenuCommand.prototype.addOriginalCommands;
  Window_MenuCommand.prototype.addOriginalCommands = function() {
    this.grbAddMenuItems(itemsMiddle, 'grb-middle-');
    Window_MenuCommand_addOriginalCommands.apply(this, arguments);
  }

  Window_MenuCommand.prototype.grbAddMenuItems = function(descs, idPrefix) {
    if (!descs) {
      return;
    }

    var window = this;
    descs.forEach(function (desc, index) {
      window.grbAddMenuItem(desc, idPrefix + index);
    });

  }

  Window_MenuCommand.prototype.grbAddMenuItem = function(desc, idPrefix) {
    var id = idPrefix + ':' + desc.label;
    descsByIds[id] = desc;

    var visible = this.grbMenuItemVisible(desc);

    if (visible) {
      var enabled = this.grbMenuItemEnabled(desc);
      this.addCommand(desc.label, id, enabled);
    }
  }

  function condition(switchId, jsonCode) {
    if (switchId && $gameSwitches.value(switchId)) {
      return true;
    }
    if (jsonCode) {
      var code = JSON.parse(jsonCode);
      if (code) {
        var value = false;
        console.log(code);
        eval(code);
        if (value) {
          return true;
        }
      }
    }

    return false;
  }

  Window_MenuCommand.prototype.grbMenuItemEnabled = function(desc) {
    return !condition(desc.disablingSwitch, desc.disablingJsCode);
  }

  Window_MenuCommand.prototype.grbMenuItemVisible = function(desc) {
    return !condition(desc.hidingSwitch, desc.hidingJsCode);
  }

  var Scene_Menu_createCommandWindow = Scene_Menu.prototype.createCommandWindow;
  Scene_Menu.prototype.createCommandWindow = function() {
    Scene_Menu_createCommandWindow.apply(this, arguments);
    this.grbAddMenuItemCallbacks();
  }

  Scene_Menu.prototype.grbAddMenuItemCallbacks = function () {
    var commandWindow = this._commandWindow;
    var personalCommand = this.commandPersonal.bind(this);
    var immediateCommand = this.grbCommandCallback.bind(this);
    Object.keys(descsByIds).forEach(function (id) {
      var desc = descsByIds[id];
      var callback = desc.actorVar ? personalCommand : immediateCommand;
      commandWindow.setHandler(id, callback);
    });
  }

  Scene_Menu.prototype.grbCommandCallback = function () {
    var id = this._commandWindow.currentSymbol();
    var desc = descsByIds[id];

    // In most cases, it makes sense to activate the command window here.
    //
    // There is a problem with actor selection: we can't deselect the actor
    // selection here, because AFTER this call, there is a
    // $gameParty.setMenuActor($gameParty.members()[this.index()]);
    // call inside Window_MenuStatus.prototype.processOk.
    //
    // So, we can't clean up the selection (at best we can activate
    // the command window, but the actor selection will still be shown.)
    //
    // I don't see a clean way to handle this, so I just assume people who
    // JS code + actor selection variable will know what they do (for example,
    // call another scene).
    //
    // This may be changed in the next version of the plugin.

    this._commandWindow.activate();

    if (desc.commonEvent) {
      this.popScene();
      $gameTemp.reserveCommonEvent(desc.commonEvent);
    }
    if (desc.jsAction) {
      var jsCode = JSON.parse(desc.jsAction);
      if (jsCode) {
        (function () {
          eval(jsCode)
        })();
      }
    }
  }

  var Scene_Menu_onPersonalOk = Scene_Menu.prototype.onPersonalOk;
  Scene_Menu.prototype.onPersonalOk = function() {
    var id = this._commandWindow.currentSymbol();
    var desc = descsByIds[id];
    if (desc && desc.actorVar) {
      var index = this._statusWindow.index();
      var actor = $gameParty.members()[index];
      $gameVariables.setValue(desc.actorVar, actor.actorId());
      return this.grbCommandCallback();
    }

    return Scene_Menu_onPersonalOk.apply(this, arguments);
  };

  var Window_MenuCommand_addCommand = Window_MenuCommand.prototype.addCommand;
  Window_MenuCommand.prototype.addCommand = function (name, symbol, enabled, ext) {
    var commandHidden = false;
    if (symbol === 'options' && parameters.hideOptions) {
      commandHidden = JSON.parse(parameters.hideOptions);
    } else if (symbol === 'gameEnd' && parameters.hideGameEnd) {
      commandHidden = JSON.parse(parameters.hideGameEnd);
    }

    if (!commandHidden) {
      Window_MenuCommand_addCommand.apply(this, arguments);
    }
  }


})();