Плохо! Плохо!:  0
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 19

Тема: [MV] Вызов меню во время сообщений

  1. #1
    Супер-модератор Аватар для dirge
    Информация о пользователе
    Регистрация
    25.02.2013
    Сообщений
    877
    Репутация: 76 Добавить или отнять репутацию

    По умолчанию [MV] Вызов меню во время сообщений

    [MV]Вызов меню


    Автор: dirge
    Описание: Позволяет вызывать меню игры во время сообщений\выбора.

    Спойлер плагин:
    Код:
    /*=============================================================================
     *  CallMenu.js
     *=============================================================================*/
    
    var Imported = Imported || {};
    Imported.CallMenu = true;
    
    /*:=============================================================================
    * @plugindesc v1.4.2 Позволяет вызвать меню игры во время сообщений\выбора при нажатии стандартных клавиш меню ESC, X, Insert, NUM0. 
    * @author dirge
    * @help
    * Если вам нужно вызвать меню во время выбора - отключите возможность отменить
    * выбор в вызове команды выбора.
    * Для лучшей совместимости с нестандартной системой сообщений\окон выбора
    * поместите этот плагин ниже остальных.
    * =============================================================================*/
    
    /*=============================================================================*/
    /* Alias */
    var _Game_Temp_initialize_Alias = Game_Temp.prototype.initialize;
    Game_Temp.prototype.initialize = function() {
        _Game_Temp_initialize_Alias.call(this)
        this._savedInterpreter = null;
    };
    /* NEW */
    Game_Temp.prototype.saveInterpreter = function(f) {
        this._savedInterpreter = f
    };
    /* NEW */
    Game_Temp.prototype.getSavedInterpreter = function() {
        return this._savedInterpreter
    };
    /* Alias */
    var _Game_Interpreter_setupChoices_Alias = Game_Interpreter.prototype.setupChoices;
    Game_Interpreter.prototype.setupChoices = function(params) {
        _Game_Interpreter_setupChoices_Alias.call(this, params);
        $gameTemp.saveInterpreter(this)
    };
    /* Alias */
    var _DataManager_makeSaveContents_Alias = DataManager.makeSaveContents;
    DataManager.makeSaveContents = function () {
        var contents = _DataManager_makeSaveContents_Alias.call(this);
        contents.message = $gameMessage;
        if ($gameMessage._choices.length !== 0) {
           contents.interpreter = $gameTemp.getSavedInterpreter()
        }
        return contents;
    };
    /* Alias */
    var _DataManager_extractSaveContents_Alias = DataManager.extractSaveContents;
    DataManager.extractSaveContents = function (contents) {
        _DataManager_extractSaveContents_Alias.call(this, contents);
        $gameMessage = contents.message;
        if ($gameMessage._choices.length !== 0) {
            var gameInterpreter = contents.interpreter
            $gameTemp.saveInterpreter(gameInterpreter)
            $gameMessage.setChoiceCallback(function(n) {
                gameInterpreter._branch[gameInterpreter._indent] = n;
            }.bind(this));
        }
    };
    /* Alias */
    var _Scene_Map_update_Alias = Scene_Map.prototype.update;
    Scene_Map.prototype.update = function () {
        _Scene_Map_update_Alias.call(this);
        if ((Input.isTriggered('escape') || Input.isTriggered('menu') || TouchInput.isCancelled()) && $gameMessage.isBusy() && $gameSystem.isMenuEnabled()) {
            this.callMenu();
        }
    };
    /* OVERWRITE */
    Window_Message.prototype.isTriggered = function () {
        return (Input.isRepeated('ok') || TouchInput.isRepeated());
    };
    /* Alias */
    var _Window_ChoiceList_WidthEx_Alias = Window_ChoiceList.prototype.textWidthEx;
    Window_ChoiceList.prototype.textWidthEx = function (text) {
        if(!SceneManager._scene.isActive()) return;
        return _Window_ChoiceList_WidthEx_Alias.call(this, text);
    };
    /* HIME_HiddenChoiceConditions Compatibility */
    var _Window_ChoiceList_makeCommandList_Alias = Window_ChoiceList.prototype.makeCommandList
    Window_ChoiceList.prototype.makeCommandList = function() {
        if(!SceneManager._scene.isActive()) return;
        _Window_ChoiceList_makeCommandList_Alias.call(this);
    }
    /* Galv_VisualNovelChoices Compatibility */
    if (Imported.Galv_VisualNovelChoices) {
        var _Window_ChoiceList_drawItem_Alias = Window_ChoiceList.prototype.drawItem
        Window_ChoiceList.prototype.drawItem = function(index) {
        if(typeof this.choice_background === 'undefined'){
            this.choice_background = [];
        };
            _Window_ChoiceList_drawItem_Alias.call(this, index);
        };
    }
    /* SRD_TitleCommandCustomizer Compatibility */
    if (SRD.TitleCommandCustomizer) {
        var _Scene_Title_createMessageWindow_Alias = Scene_Title.prototype.createMessageWindow
        Scene_Title.prototype.createMessageWindow = function() {
            $gameMessage.clear();
            _Scene_Title_createMessageWindow_Alias.call(this)
           
        };
    }
     
    /* End of File */
    /*=============================================================================*/


    P.S. Не уверен, что он кому-то еще пригодится, но вдруг кто-то решит сделать ВН)
    Последний раз редактировалось dirge; 12.11.2018 в 12:17. Причина: v 1.4.3

  2. #2
    Местный Аватар для Potato
    Информация о пользователе
    Регистрация
    12.04.2012
    Адрес
    Вторая палатка слева
    Сообщений
    242
    Записей в дневнике
    1
    Репутация: 4 Добавить или отнять репутацию

    По умолчанию

    Удивительно, как раз именно это мне сейчас только что нужно было больше всего

  3. #3
    Супер-модератор Аватар для dirge
    Информация о пользователе
    Регистрация
    25.02.2013
    Сообщений
    877
    Репутация: 76 Добавить или отнять репутацию

    По умолчанию

    Ну, если ты его таки будешь использовать, то не давай сохранять во время выборов (вовремя сообщений все ок, только выборы). Я нашел очень фиговый баг в мейкере на эту тему, пока пофиксить не могу, т.к. он не из легких, я даже не уверен удастся ли мне пофиксить...

  4. #4

    По умолчанию

    Не переписывай DataManager.makeSaveContents и DataManager.extractSaveContents. Делай через Alias
    Обними свои мечты
    Сайт: http://dk-plugins.ru
    Напиши свой отзыв: http://dk-plugins.ru/feedback/
    Группа ВК: http://vk.com/dkplugins
    Подписываемся в Instagram: http://instagram.com/denchikidze

  5. #5
    Супер-модератор Аватар для dirge
    Информация о пользователе
    Регистрация
    25.02.2013
    Сообщений
    877
    Репутация: 76 Добавить или отнять репутацию

    По умолчанию

    Ок, сделаем) Но проблема все равно не там. Проблема в том, что после загрузки с сейва во время выбора, очищается callback в gamemessage и я вот сижу уж который день, совсем без понятия как это пофиксит. После такой загрузки, то что лежит в выборе просто скипается и ивент идет дальше себе...

  6. #6
    Супер-модератор Аватар для dirge
    Информация о пользователе
    Регистрация
    25.02.2013
    Сообщений
    877
    Репутация: 76 Добавить или отнять репутацию

    По умолчанию

    фух, вроде через костыли(лучше решения просто не знаю...) пофиксил проблему с сейвами во время выбора.
    Было бы конечно хорошо, если бы узнать у тех кто ВДРУГ использует его, как оно работает и нет ли проблем в разных ситуациях. Но думаю на это мало надежды)
    В общем обновил первый пост на версию поновей.

  7. #7

    По умолчанию

    Цитата Сообщение от dirge Посмотреть сообщение
    фух, вроде через костыли(лучше решения просто не знаю...) пофиксил проблему с сейвами во время выбора.
    Было бы конечно хорошо, если бы узнать у тех кто ВДРУГ использует его, как оно работает и нет ли проблем в разных ситуациях. Но думаю на это мало надежды)
    В общем обновил первый пост на версию поновей.
    Тестировал старую версию и не смог словить баг. Как его получить?) загружался после сохранения из главного меню, и просто при открытии игры. Выбор работал, команды в выборе выполнялись. Только вот этот плагин не совместим с моим плагином выбора ответа с клавиатуры. Вернее частично совместим. Ответ выбирается, а номер ответа не отображается.
    Обними свои мечты
    Сайт: http://dk-plugins.ru
    Напиши свой отзыв: http://dk-plugins.ru/feedback/
    Группа ВК: http://vk.com/dkplugins
    Подписываемся в Instagram: http://instagram.com/denchikidze

  8. #8
    Супер-модератор Аватар для dirge
    Информация о пользователе
    Регистрация
    25.02.2013
    Сообщений
    877
    Репутация: 76 Добавить или отнять репутацию

    По умолчанию

    В старой версии сделав такой ивент

    Сохранив во время выбора, а потом загрузив, после загрузки какой бы вариант ты не выбрал попадаешь на "После выбора"(т.е вместо сообщения о выбраном варианте), без загрузки все нормально. Главное сохранить сразу как выбор будет в первый раз, а не после выбора какого-то варианта, а потом повторного вызова выбора. Ну, в любом случае я его так ловил+еще один буржуй которому тоже нужен был подобный плагин. В новой версии вроде уже нормально все, хотя я нифига не уверен...

    Вообще, все это из-за того, что пропадает callback в $gameMessage

    В старой версии до загрузки:


    В старой версии после загрузки, _choiceCallback уже отсутствует:


    А без _choiceCallback бранчи выбора просто скипаются. И я без понятия как это нормально пофиксить, потому и костыли всякие кручу... Откатываю команды интерпретера, повторно вызываю выбор.

    А несовместимость с твоим плагином, это еще одна борода... Причем для нормальной совместимости, там нужно фиксить в обоих плагинах.
    Последний раз редактировалось dirge; 18.02.2016 в 02:41.

  9. #9

    По умолчанию

    Может просто запретить сохранение во время выбора?)
    Обними свои мечты
    Сайт: http://dk-plugins.ru
    Напиши свой отзыв: http://dk-plugins.ru/feedback/
    Группа ВК: http://vk.com/dkplugins
    Подписываемся в Instagram: http://instagram.com/denchikidze

  10. #10
    Супер-модератор Аватар для dirge
    Информация о пользователе
    Регистрация
    25.02.2013
    Сообщений
    877
    Репутация: 76 Добавить или отнять репутацию

    По умолчанию

    Это конечно вариант, но мне нужно чтобы оно сохраняло во время выбора) Такое в общем, вроде пока работает, может больше ничего не вылезет.

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

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

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

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •