Команди RPG Maker MV та MZ/Змінити набір тайлів

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

Змінити набір тайлів(анг. Change Tileset, ​рос. Заменить тайлсет)команда подій в RPG Maker MV та MZ, яка дозволяє тимчасово замінити набір тайлів на активній карті.

Ця команда подій знаходиться на третій сторінці в правому стовпчику. Це друга команда подій в розділі «Карта».

Показати команду на скриншоті

Третя сторінка команд подій в RPG Maker MV.png

Встановлений набір тайлів зберігається до переходу на іншу карту.

Принцип роботи[ ]

Набір тайлів визначає, яка графіка може використовуватися для малювання карти. При зміні набора тайлів міняються всі об'єкти одного типу. Таким чином, цю команду зручно використовувати для того, щоб зробити масштабні зміни на карті (наприклад, перетворити звичайну карту у зруйновану, або змінити пору року).

Ця команда не підходить для невеликих змін на карті. Для них краще використовувати події з декількома сторінками.

Налаштування[ ]

У команди є тільки одне налаштування: набір тайлів, який буде встановлено для карти.

Використання в JavaScript[ ]

Простого способу повторити дію команди на JavaScript немає. В RPG Maker MV можна використовувати такий код:

//код створено на основі Game_Interpreter.prototype.command282
//зі стандартного коду RPG Maker MV, доступного за ліцензією MIT

var tilesetId = 3; //замініть 3 на номер набору тайлів

(function () {
    var imageReservationId;
    
    function recursiveCheck() {
      var tileset = $dataTilesets[tilesetId];
      if(!imageReservationId){
          imageReservationId = Utils.generateRuntimeId();
      }
  
      var allReady = tileset.tilesetNames.map(function(tilesetName) {
          return ImageManager.reserveTileset(tilesetName, 0, imageReservationId);
      }).every(function(bitmap) {return bitmap.isReady();});
  
      if (allReady) {
          $gameMap.changeTileset(tilesetId);
          ImageManager.releaseReservation(imageReservationId);
          imageReservationId = null;
      } else {
          window.setTimeout(recursiveCheck, 100);
      }
    }
    recursiveCheck();
})();

Є пропозиції щодо покращення цієї сторінки. Якщо ви хочете цим зайнятися, зверніть увагу на коментарі <!-- ... --> в коді сторінки.