cover photo

Dmy

Личное сообщение
Добавить в друзья
Dmy

Обо мне

Общая информация

  • Пол

  • Дата рождения

    10/11/1989

Контактная информация

Регистрация
01.06.2017 17:05
Последний вход
12 мин. назад
  • yuryol поблагодарил Dmy в теме Вопрос про .update()
  • Cabbit поблагодарил Dmy в теме Вопрос про .update()
  • Noxmils поблагодарил Dmy в теме Вопрос про .update()
  • Doctor_Bug поблагодарил Dmy в теме Вопрос про .update()
  • Dmy ответил(а) в теме 'Вопрос про .update()' форума.

    update() сама по себе не вызывается. Тебе надо прописать её в чьём-то чужом update(). Чтобы прописать код в чужой функции, в RPG Maker MV принято делать так:

    //Сохраняем оригинальный метод update в переменную
    var Scene_Map_update = Scene_Map.prototype.update;
    //Заменяем метод update своим методом
    Scene_Map.prototype.update = function() {
      //Делаем тут что что-то своё (например, вызываем update своего объекта)
      //...
    
      //А теперь вызываем оригинальный update, который мы сохранили
      Scene_Map_update.call(this);
    }
    Теперь, когда Scene_Map вызывает свой метод .update, она на самом деле вызывает наш метод update! :)

    Примечание. С названиями Scene_Map_update надо быть осторожным: названия такого типа легко могут совпасть в разных модулях. Чтобы не случалось совпадений, обязательно нужно делать пременную локальной — var в var Scene_Map_update нужен именно для этого — и окружить весь свой код в большую самовызываемую функцию (function () { ... })() — потому что var’ы локальны только в пределах функции.
    Noxmils пишет:
        Zooming = function (zoom, period) {
            new CameraZoom(zoom, period);
        };
    Этот кусочек скорее всего неправильный. В нём ты создаёшь новый класс Zooming, в инициализаторе которого создаётся CameraZoom... И сразу же выбрасывается. Потому что ты никуда его не сохраняешь.

    Вместо этого надо переписать какие-то функции стандартных объектов RPG Maker MV и сделать, чтобы CameraZoom создавалась в них. Какие именно функции и каких объектов надо переписать — не знаю.

    Я не знаю, что ты пытаешься сделать и поэтому не знаю, какую функцию тебе надо переписать. Я могу только примерно показать, как можно переписать функции, чтобы добавить твой объект:
    //Пример, как переписывать функции
    //Я не знаю, какие функции ты будешь переписывать и что тебе вообще надо сделать
    
    //Во-первых надо где-то хранить этот cameraZoom: либо в переменной,
    //либо в каком-то из стандартных объектов типа Scene_Map; зависит от того,
    //сколько у тебя должно быть этих CameraZoom’ов. Предположим, что он у
    //тебя один на всю игру — тогда можно сделать так:
    var cameraZoom;
    
    //Создадим его в какой-то момент. Допустим, при использовании
    // команды плагина ‘create_camera_zoom zoom period’, где zoom и period — числа.
    // В RPG Maker MV есть готовая функция для команд плагина, которая разбивает
    // введённый пользователем текст по пробелам и передаёт первое слово как
    // command, а остальное — как массив args (т.е. если выбрать команду
    // Команда плагина в событии и ввести create_camera_zoom 10 20,
    // то нам передастся command = 'create_camera_zoom' и args = ['10', '20'].
    // Вот её и используем:
    var Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
      if (command == 'create_camera_zoom' && args.length > 2) {
        //если команда наша — обрабатываем её сами
        var zoom = parseFloat(args[0]);
        var period = parseFloat(args[1]);
        if (!isNaN(zoom) && !isNaN(period)) {
          //создаём cameraZoom, только если нам передали числа, а не какую-то
          //пакость типа текста
          cameraZoom = new CameraZoom(zoom, period)
        }
      }
      else {
        //если команда не наша — вызываем сохранённую функцию, пусть
        //другие плагины свои команды отработают
        Game_Interpreter_pluginCommand.call(this, command, args)
      }
    }
    
    //И перепишем чем-то update, чтобы вызывал update нашего CameraZoom. Если CameraZoom
    //будет использоваться на карте, кажется логичным переписать метод update объекта
    //Scene_Map, отвечающего за отрисовку экрана хождения по карте:
    var Scene_Map_update = Scene_Map.prototype.update;
    Scene_Map.prototype.update = function() {
      if (cameraZoom) {
        //проверим, что cameraZoom вообще существует, чтобы не было ошибки
        cameraZoom.update();
      }
    
       //А потом выполним стандартные действия при update Scene_Map
      Scene_Map_update.call(this);
    }

    Если непонятно, спрашивай!

    Подробнее...

  • Dmy создал(а) новую тему ' GRB_ Region Event Triggers (события для регионов)' в форуме.

    Dmy пишет:

    Плагин GRB_RegionEventTriggers для RPG Maker MV позволяет исключить некоторых персонажей из битвы.

    Плагин можно скачать здесь: GRB_NonBattlerActors.js
    [Полный код плагина]

    Так как редактор не позволяет добавлять новые триггеры, для их указания используется команда «Команда плагина» (третья страница, в самом конце списка). Просто разместите команду, начинающуюся «триггер:», в начале команд события, и она будет использоваться вместо стандартного триггера.

    Вот иллюстрация:

    explanation.png

    Итак, можно добавить такие триггеры:
    • триггер: вход в регион 1 (замените 1 на номер региона; событие будет вызвано при переходе с другого региона на клетку с регионом 1)
    • триггер: вход в регионы 1, 2 (замените «1, 2» на номера регионов через запятую; событие будет вызвано при переходе из региона, не входящего в список, или из клетки без региона, в один из регионов, входящих в список)
    • триггер: выход из региона 1 (замените 1 на номер региона; событие будет вызвано, если герой раньше стоял на клетке с указанным регионом, и переходит на клетку другого региона)
    • триггер: выход из регионов 1, 2 (замените «1, 2» на номера регионов через запятую; событие будет вызвано при переходе из региона, входящего в список, в один из регионов, не входящих в список, или на клетку с пустым регионом)
    • триггер: шаг в регионе 1 (замените 1 на номер региона; событие будет вызвано, когда герой переходи на клетку региона с указанным номером)
    • триггер: шаг в регионах 1, 2 (замените «1, 2» на номера регионов через запятую; событие будет вызвано, когда герой переходи на клетку любого из перечисленных регионов)

    Доступны также версии команд на других языках:
    • «тригер: вхід в регіон 1», или «трыгер: уваход у рэгіён 1», или «trigger: region 1 entered»
    • «тригер: вхід в регіони 1, 2», или «трыгер: уваход у рэгіёны 1, 2», или «trigger: regions 1, 2 entered»
    • «тригер: вихід з регіону 1», или «трыгер: выхад з рэгіёну 1», или «trigger: region 1 left»
    • «тригер: вихід з регіонів 1, 2», или «трыгер: выхад з рэгіёнаў 1, 2», или «trigger: regions 1, 2 left»
    • «тригер: крок у регіоні 1», или «трыгер: крок у рэгіёнё 1», или «trigger: step in region 1»
    • «тригер: крок у регіонах 1, 2», или «трыгер: крок у рэгіёнах 1, 2», или «trigger: step in regions 1, 2»

    Пробелы в кодах важны: между словами должен быть один пробел, или не сработает.

    Я сделал небольшой пример использования плагина:
    RegionTriggers.zip (5,5 Мб)
    (запустить пример онлайн)

    Идею плагина подсказала Alisa в чате — спасибо ей!


    Подробнее...

  • Dmy ответил(а) в теме '[MV] GRB_Non Battler Actors (убрать героев из боя)' форума.

    Фред Канниг пишет:

    В чью пользу?
    Ни в чью. Это будет считаться побегом (по крайней мере если в переменную записывать «Счёт побегов», то он после такой битвы увеличится на 1), но текста о побеге не будет, просто битва закончится.

    Если надо, можно это поменять на проигрыш, это можно сделать вот таким скриптом:
    (function () {
    
        var BattleManager_checkBattleEnd = BattleManager.checkBattleEnd;
        BattleManager.checkBattleEnd = function() {
            if (this._phase && $gameParty.isEmpty()) {
                this.processDefeat();
                return true;
            }
            return BattleManager_checkBattleEnd.call(this);
        }
    
        var Game_Party_name = Game_Party.prototype.name;
        Game_Party.prototype.name = function () {
            var numBattleMembers = this.allMembers().length;
            if (numBattleMembers === 0) {
                return '';
            } else if (numBattleMembers === 1) {
                return this.leader().name();
            } else {
                return TextManager.partyName.format(this.leader().name());
            }
        };
    
    })();


    Подробнее...

  • Dmy ответил(а) в теме '[MV] GRB_Non Battler Actors (убрать героев из боя)' форума.

    Doctor_Bug пишет:

    А что будет если в пати все будут выключены? Выдаст ошибку?
    Битва начнётся и сразу же закончится. Это стандартное поведение MV, я это не менял.

    Подробнее...

Группы

Участник не состоит в группах.