Название плагина: Стелс (зрение событий)
Автор: Yuryol
Версия: крайняя
Поддерживаемые языки: Русский
Описание:
Позволяет задать "зрение" событию, т.е. событие будет активировать определенную локальную вкладку (по умолчанию - вкладку 'A') только если герой находится на определенном расстоянии от него и при этом герой стоит не позади события.
По умолчанию поле зрения события будет прямоугольным.
Чтобы поле зрение было полукругом, следует изменить параметр плагина "circle" в положение "false"
Чтобы сделать событию "зрение" следует:
1) Если требуется вызвать событие из другого события, то в команде "скрипт" ввести:
$gameMap.event(id).YurStealth(distance, switch)
, где:
id - id события,
distance - расстояние от героя до события, на котором
sw - локальный переключатель, который активируется, когда враг "увидит" героя. Если параметр не указан, то включится переключатель 'A'
2) Также можно ввести скрипт в маршрут события командой "скрипт":
$gameMap.event(id).YurStealth(distance, switch)
Если требуется включить "зрение" в том же событии, в маршруте которого и вызван
скрипт, ты можем написать просто:
this.YurStealth(distance, switch)
Настройка параметров плагина:
По умолчанию поле зрения события будет
прямоугольным. Герой будет виден, если он зайдет с темно-зеленый квадратик
Чтобы поле зрение было полукругом, следует изменить параметр плагина "circle" в положение "false"
Оба примера зрения события при distance=4.
Обновление:
- добавлена возможность указать также определенную вкладку (раньше была только вкладку "A")
- более подробная справка. Также справка теперь в меню плагина
- плагин переписан под ES6 (ну как переписан - добавлены let и const)
Спасибо DK, Caveman, Deme, Dirge, Mur
Лицензии и правила использования плагина:
Вы можете:
-Бесплатно использовать данный плагин в некоммерческих и коммерческих проектах
-Переводить плагин на другие языки
-Изменять код плагина, но Вы обязаны указать ссылку на оригинальный плагин
Вы не можете:
-Убирать или изменять любую информацию о плагине (название, авторство)
Демка
скачать демку
Вес 6,38 мб
Скачать:
Первую версию плагина скачать по
ссылке
Обновленную версию скачать по
ссылке (вес 6 кб)
либо скопировать в блокнот, назвать YuryolStealth.js:
//===================================================================
// YuryolStealth.js
//===================================================================
/*:ru
* @plugindesc Стелс (зрение событий)
* @author Yuryol
* @help
* @param circle
* @desc Включить зрение полукруг?
* @type Boolean
* @default false
* @help
* ### Информация о плагине ###
*
* Название: YuryolStealth
* Автор: YuryOl
*
* ### Справка ###
*
* Позволяет задать "зрение" событию, т.е. событие будет активировать
* определенную локальную вкладку (по умолчанию - вкладку 'A') только
* если герой находится на определенном расстоянии от него и при этом
* герой стоит не позади события.
* По умолчанию поле зрения события будет прямоугольным.
* Чтобы поле зрение было полукругом, следует изменить параметр плагина
* "circle" в положение "false"
* Чтобы сделать событию "зрение" следует:
* 1) Если требуется вызвать событие из другого события, то в команде
* "скрипт" ввести:
* $gameMap.event(id).YurStealth(distance, switch)
* , где:
* id - id события,
* distance - расстояние от героя до события, на котором
* sw - локальный переключатель, который активируется, когда враг "увидит" героя.
* если параметр не указан, то включится переключатель 'A'
*
* 2) Также можно ввести скрипт в маршрут события командой "скрипт":
* $gameMap.event(id).YurStealth(distance, switch)
*
* Если требуется включить "зрение" в том же событии, в маршруте которого и вызван
* скрипт, ты можем написать просто:
* this.YurStealth(distance, switch)
*
* ### Лицензии и правила использования плагина ###
*
* Вы можете:
* -Бесплатно использовать данный плагин в некоммерческих и коммерческих проектах
* -Переводить плагин на другие языки
* -Изменять код плагина, но Вы обязаны указать ссылку на оригинальный плагин
*
* Вы не можете:
* -Убирать или изменять любую информацию о плагине (название, авторство)
*/
(function(){
const parameters = PluginManager.parameters('YuryolStealth'),
circle = parameters['circle'],
list = []; // хранение событий, которые следят за героем
//апдейт
var YuryolStealthUpdate = Scene_Map.prototype.update;
Scene_Map.prototype.update = function() {
YuryolStealthUpdate.call(this);
if (list) this.YuryolStealthCoordinate();
};
//добавление события
Game_Character.prototype.YurStealth = function(dist, sw) {
list.push({
id: this._eventId,
dist: dist,
sw: sw
});
};
//рассчеты
Scene_Map.prototype.YuryolStealthCoordinate = function() {
for(var i = 0; i < list.length; i++){
let id = list[i].id,
dist = list[i].dist,
sw = (list[i].sw) ? list[i].sw : 'A';
let distX = $gameMap.event(id)._x - $gamePlayer.x,
distY = $gameMap.event(id)._y - $gamePlayer.y;
//проверка расстояния от события до героя
if (circle) {
if (Math.abs(distX) > dist || Math.abs(distY) > dist) continue;
}
else {
if (distX*distX + distY*distY > dist*dist) continue;
};
//проверка стоит ли событие спиной к герою
switch($gameMap.event(id).direction()) {
case 2:
if (distY > 0) continue;
break;
case 4:
if (distX < 0) continue;
break;
case 6:
if (distX > 0) continue;
break;
case 8:
if (distY < 0) continue;
break;
}
//включение лок. страницы "А"
$gameSelfSwitches.setValue([$gameMap.mapId(), id, sw], true);
}
};
})();
Минимизированную версию скачать по
ссылке (вырезана справка, минифицировано, вес 1 кб)
Переименовать в YuryolStealth.js.