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