Цитата Сообщение от AntiGM Посмотреть сообщение
Чтоб не плодить одноразовых тем на форуме, спрошу тут. МБ не затеряется сообщение.
Использую плагин: https://forums.rpgmakerweb.com/index...nerator.51808/
А если быть точнее то его дополненную версию :https://forums.rpgmakerweb.com/index...-5#post-770247
Так вот автор добавил в настройки плагина тег для инвентов, чтоб те при появлении не заслоняли проходы.
Код:
<NoPassageBlock: 1>
Может ли мне кто нибудь подсказать, как и где мне подправить плагин, чтоб этот тег выполнял прямо противоположную функцию, то есть ивент с этим тегом появлялся только в проходах и заслонял входы в комнаты.
В оригинальной теме уже давно не было сообщений, и думаю мне там не ответят, а у нас на форуме много толковых ребят.
Вот я и надеюсь что вы мне поможете.

Я изначально по наивности думал, что смогу поправить всё сам, просто поменяв значения с True на Felse и наоборот, там где происходит описание проверки ивента на нахождение в проходе. Но всё оказалось сложнее. Посему прошу вашей помощи.
мельком глянул,времени и мозгов нет чтоб запустить,переписать и потестить, но судя по всему после строчки
Код:
if (NoPassageBlock === true) {
идет проверка на клетки вокруг ивента,т.е. в случаях загораживания прохода ивент не появляется.
НО при этом НЕ в проходах ивенты продолжают появляться,так эти проверки никак не влияют на случаи расположения ивента НЕ в проходах.

поэтому кроме того что возвращаем "тру" (return true) а не "фальш" для появления ивентов в проходах

Код:
if (NoPassageBlock === true) {
    // check passability to the left
    if (this.isWallRoofOrRubble(x - 1, y) === false && this.isWallRoofOrRubble(x - 1, y + 1) === true
      && this.isWallRoofOrRubble(x - 1, y - 1) === true) {
      return true;
    }
    // check passability to the right
    if (this.isWallRoofOrRubble(x + 1, y) === false && this.isWallRoofOrRubble(x + 1, y + 1) === true
      && this.isWallRoofOrRubble(x + 1, y - 1) === true) {
      return true;
    }
    // check passability up
    if (this.isWallRoofOrRubble(x, y - 1) === false && this.isWallRoofOrRubble(x + 1, y - 1) === true
      && this.isWallRoofOrRubble(x - 1, y - 1) === true) {
      return true;
    }
    // check passability down
    if (this.isWallRoofOrRubble(x, y + 1) === false && this.isWallRoofOrRubble(x + 1, y + 1) === true
      && this.isWallRoofOrRubble(x - 1, y + 1) === true) {
      return true;
    }
  }
также добавляем пару строк после последней проверки, чтобы в осталньых случаях возвращалась "Ложь"
Код:
(else {return false;}
получится что-то типа этого.

Код:
if (NoPassageBlock === true) {
    // check passability to the left
    if (this.isWallRoofOrRubble(x - 1, y) === false && this.isWallRoofOrRubble(x - 1, y + 1) === true
      && this.isWallRoofOrRubble(x - 1, y - 1) === true) {
      return true;
    }
    // check passability to the right
    if (this.isWallRoofOrRubble(x + 1, y) === false && this.isWallRoofOrRubble(x + 1, y + 1) === true
      && this.isWallRoofOrRubble(x + 1, y - 1) === true) {
      return true;
    }
    // check passability up
    if (this.isWallRoofOrRubble(x, y - 1) === false && this.isWallRoofOrRubble(x + 1, y - 1) === true
      && this.isWallRoofOrRubble(x - 1, y - 1) === true) {
      return true;
    }
    // check passability down
    if (this.isWallRoofOrRubble(x, y + 1) === false && this.isWallRoofOrRubble(x + 1, y + 1) === true
      && this.isWallRoofOrRubble(x - 1, y + 1) === true) {
      return true;
    } else {
      return false;
    }
  }
повторяю - не запускал,не разбирался, не тестил, просто предположение