//============================================================================= // NovelMessage.js //============================================================================= /*: * @plugindesc Provides the full screen type message window. * @author Yoji Ojima, Sasuke KANNAZUKI * * @param Switch ID * @desc The ID of the switch to determine novel mode. * @default 11 * * @help * Use control character '\F' to page break in novel mode. * * This plugin does not provide plugin commands. */ /*:ja * @plugindesc 全画面型のメッセージウィンドウです。 * @author Yoji Ojima, 神無月サスケ * * @param Switch ID * @desc ノベルモードにするためのスイッチのIDです。 * @default 11 * * @help * ノベルモードにて改ページをするには、制御文字「\F」を使用してください。 * * このプラグインには、プラグインコマンドはありません。 */ (function() { var parameters = PluginManager.parameters('NovelMessage'); var switchId = Number(parameters['Switch ID'] || 11); function isNovelMode() { return $gameSwitches.value(switchId); }; var _Window_Message_initMembers = Window_Message.prototype.initMembers; Window_Message.prototype.initMembers = function() { _Window_Message_initMembers.call(this); this._novelLineY = 0; this._novelNewPage = true; }; var _Window_Message_updatePlacement = Window_Message.prototype.updatePlacement; Window_Message.prototype.updatePlacement = function() { if (!isNovelMode()) { this.width = this.windowWidth(); this.height = this.windowHeight(); this.x = (Graphics.boxWidth - this.width) / 2; } _Window_Message_updatePlacement.call(this); if (isNovelMode()) { this.move(0, 0, Graphics.boxWidth, Graphics.boxHeight); } if (this.contents.height !== this.contentsHeight()) { this.contents.resize(this.contentsWidth(), this.contentsHeight()); } }; var _Window_Message_updateBackground = Window_Message.prototype.updateBackground; Window_Message.prototype.updateBackground = function() { _Window_Message_updateBackground.call(this); if (isNovelMode()) { this.setBackgroundType(2); } }; var _Window_Message_onEndOfText = Window_Message.prototype.onEndOfText; Window_Message.prototype.onEndOfText = function() { if (isNovelMode()) { this.processNewLine(this._textState); } _Window_Message_onEndOfText.call(this); }; var _Window_Message_startMessage = Window_Message.prototype.startMessage; Window_Message.prototype.startMessage = function() { _Window_Message_startMessage.call(this); if (isNovelMode()) { this._textState.y = this._novelLineY; } }; var _Window_Message_newPage = Window_Message.prototype.newPage; Window_Message.prototype.newPage = function(textState) { if (!isNovelMode() || this._novelNewPage) { _Window_Message_newPage.call(this, textState); this._novelLineY = 0; this._novelNewPage = false; } if (isNovelMode()) { textState.x = this.newLineX(); textState.left = this.newLineX(); textState.height = this.calcTextHeight(textState, false); this._lineShowFast = false; this._pauseSkip = false; if (this.needsNewPage(textState)) { textState.y = this.contents.height; this._novelNewPage = true; this._textState.index--; this.startPause(); } } }; var _Window_Message_processNewLine = Window_Message.prototype.processNewLine; Window_Message.prototype.processNewLine = function(textState) { _Window_Message_processNewLine.call(this, textState); if (isNovelMode()) { this._novelLineY = this._textState.y; } }; var _Window_Message_processEscapeCharacter = Window_Message.prototype.processEscapeCharacter; Window_Message.prototype.processEscapeCharacter = function(code, textState) { if (isNovelMode() && code === 'F') { textState.y = this.contents.height; this._novelNewPage = true; return; } _Window_Message_processEscapeCharacter.call(this, code, textState); }; var _Window_ChoiceList_updatePlacement = Window_ChoiceList.prototype.updatePlacement; Window_ChoiceList.prototype.updatePlacement = function() { _Window_ChoiceList_updatePlacement.call(this); if (isNovelMode()) { this.y = Graphics.boxHeight - this.height - 8; } }; var _Window_NumberInput_updatePlacement = Window_NumberInput.prototype.updatePlacement; Window_NumberInput.prototype.updatePlacement = function() { _Window_NumberInput_updatePlacement.call(this); if (isNovelMode()) { this.y = Graphics.boxHeight - this.height - 8; } }; var _Window_NumberInput_buttonY = Window_NumberInput.prototype.buttonY; Window_NumberInput.prototype.buttonY = function() { if (isNovelMode()) { return 0 - this._buttons[0].height - 8; } else { return _Window_NumberInput_buttonY.call(this); } }; })();
新耀012478 发表于 2022-3-21 20:01
那MZ的DLC目录里没有这个吗?
而且按F4不是可以切换全屏与窗口吗?
rkjspb 发表于 2022-3-22 20:31
这个不是游戏窗口的全屏哦,是对话用的那个框的全屏,就是显示超过4行字用的 ...
新耀012478 发表于 2022-3-22 21:24
就是要调整对话框的高度到足够显示所有文字?
还是说是文本回放?
rkjspb 发表于 2022-3-22 21:26
差不多就是那个意思吧,你在mv里面开启插件输入几个文字就了解效果了
其实这个插件名已经把主要功能都说 ...
2.06 KB, 下载次数: 1
LZ提醒后修复了bug
新耀012478 发表于 2022-3-23 16:24
就是在原有的顶部+透明的基础上。
增加了新文字不会被刷新掉,而是直到显示到画面能显示到的最后一行,
...
rkjspb 发表于 2022-3-27 15:40
比较接近了哎,不知道这是你写的还是网络上找到的
我试了一下,貌似最多只支持4行字,而我的意 ...
2.06 KB, 下载次数: 8
不好意思bug修复了
新耀012478 发表于 2022-3-27 18:20
不好意思,bug修好了。之前还以为是你用对话框输入文字,而不是用脚本输入了,抱歉。
顺道你之前那个,是 ...
rkjspb 发表于 2022-3-28 22:30
厉害了我的朋友,用那么几行代码就基本实现效果了。
太感谢了。
话说,不知道朋友你有没有时间 ...
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |