Плохо! Плохо!:  0
Показано с 1 по 8 из 8

Тема: Стелс (зрение событий) [MV]

  1. #1
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,420
    Записей в дневнике
    44
    Репутация: 60 Добавить или отнять репутацию

    По умолчанию Стелс (зрение событий) [MV]

    Название плагина: Стелс (зрение событий)
    Автор: Yuryol
    Версия: 2-я (добавлена справка и возможность самому указать вкладку, которая будет активироваться)
    Поддерживаемые языки: Русский

    Описание:

    Позволяет задать "зрение" событию, т.е. событие будет активировать определенную локальную вкладку (по умолчанию - вкладку '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:

    Спойлер тык:
    PHP код:
    //===================================================================
    // 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(distsw) {
            list.
    push({
                
    idthis._eventId
                
    distdist,
                
    swsw
            
    });
        };

        
    //рассчеты
        
    Scene_Map.prototype.YuryolStealthCoordinate = function() {
            
            for(var 
    0< list.lengthi++){
                
                
    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(), idsw], true);
            }
        };
    })(); 


    Минимизированную версию скачать по ссылке (вырезана справка, минифицировано, вес 1 кб)
    Переименовать в YuryolStealth.js.
    Последний раз редактировалось Yuryol; 09.04.2019 в 17:34.

  2. #2
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,420
    Записей в дневнике
    44
    Репутация: 60 Добавить или отнять репутацию

    По умолчанию

    благодаря Deme теперь можно сделать поле зрения полукругом, первый пост и плагин обновлены

  3. #3

    По умолчанию

    Если вдруг кто не поймет:
    Создаем событие и пишем скрипт $gameMap.event(001).YurStealth(3)
    где 001 это ID события, а 3 это расстояние срабатывания. Ставим событию триггер "параллельно" и создаем новую страницу с локальным переключателем "А" и вот на нем уже делаем что нам нужно по срабатыванию события... Вызывать локальный переключатель "А" не нужно, скрипт сам его вызывает.

  4. #4
    Авторитет Аватар для Bloody
    Информация о пользователе
    Регистрация
    22.04.2008
    Сообщений
    1,752
    Записей в дневнике
    94
    Репутация: 36 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Yuryol Посмотреть сообщение
    Версия: крайняя
    Последняя на данный момент
    Проекты:
    Мини-игры: El Presidente -- Red & Blue -- Roll Me Away -- Wizard's Revenge
    На перерыве: Mémoire
    Кажется, заброшены: Street Magic -- Hack in the Dark

  5. #5
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,420
    Записей в дневнике
    44
    Репутация: 60 Добавить или отнять репутацию

    По умолчанию

    Немного обновил, добавил демку, добавил минифицированную версию

    Обновление:

    - добавлена возможность указать также определенную вкладку (раньше была только вкладку "A")
    - более подробная справка. Также справка теперь в меню плагина
    - плагин переписан под ES6 (ну как переписан - добавлены let и const)

    Спасибо DK, Caveman, Deme, Dirge, Mur

    Демка

    скачать демку
    Вес 6,38 мб

    Скачать:

    Первую версию плагина скачать по ссылке (не рекомендуется, она всем хуже)

    Обновленную версию скачать по ссылке (вес 6 кб)

    Минимизированную версию скачать по ссылке (вырезана справка, минифицировано, вес 1 кб)
    Переименовать в YuryolStealth.js.

    Цитата Сообщение от snr93 Посмотреть сообщение
    Если вдруг кто не поймет:
    Создаем событие и пишем скрипт $gameMap.event(001).YurStealth(3)
    где 001 это ID события, а 3 это расстояние срабатывания. Ставим событию триггер "параллельно" и создаем новую страницу с локальным переключателем "А" и вот на нем уже делаем что нам нужно по срабатыванию события... Вызывать локальный переключатель "А" не нужно, скрипт сам его вызывает.
    запоздалое спасибо! проглядел в свое время твой комментарий, только щас заметил

  6. #6

    По умолчанию

    При переходе на другую локацию выдаёт TypeError "Cannot read property '_x' of undefied".

    Очень жаль, что такой баг выскочил серьёзный. Отличный плагин! (Отключал остальные плагины, проблема не исчезла).

  7. #7

    По умолчанию

    Испрвление багов и возможность дать игроку Полную невидимость скриптом и плагин был бы идеальным.

  8. #8
    Администратор Аватар для Пётр
    Информация о пользователе
    Регистрация
    24.04.2014
    Адрес
    Краснодар
    Сообщений
    3,940
    Записей в дневнике
    6
    Репутация: 132 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от GreyDeer Посмотреть сообщение
    При переходе на другую локацию выдаёт TypeError "Cannot read property '_x' of undefied".

    Очень жаль, что такой баг выскочил серьёзный. Отличный плагин! (Отключал остальные плагины, проблема не исчезла).
    Я плагин не юзал, но я так предполагаю, что на новой карте тупо нет ивента с id, координаты которого ты проверяешь...

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Стелс (зрение событий) [MV]