Project1

标题: 如何不用插件,只用脚本显示一大篇书页的内容? [打印本页]

作者: nhycs01    时间: 2022-12-26 11:07
标题: 如何不用插件,只用脚本显示一大篇书页的内容?
普通对话框只能显示几排内容,我想显示一大篇内容,比如打开一封信这样的效果,请问该怎么做呢?
作者: xiamumomo    时间: 2022-12-26 12:06
滚动文字不就好了
作者: 小秋橙    时间: 2022-12-26 12:53
试试这个官方插件,可以把多行文字视为一张图片显示呢。
JAVASCRIPT 代码复制下载
  1. //=============================================================================
  2. // RPG Maker MV - Text Picture
  3. //=============================================================================
  4.  
  5. /*:
  6.  * @target MV
  7.  * @plugindesc Displays text as a picture.
  8.  * @author Yoji Ojima
  9.  *
  10.  * @help TextPicture.js
  11.  *
  12.  * This plugin provides a command to show text as a picture.
  13.  *
  14.  * Use it in the following procedure.
  15.  *   1. Call the plugin command "Set Text Picture".
  16.  *   2. Execute "Show Picture" without specifying an image.
  17.  *
  18.  * @command set
  19.  * @text Set Text Picture
  20.  * @desc Sets text to display as a picture.
  21.  *       After this, execute "Show Picture" without specifying an image.
  22.  *
  23.  * @arg text
  24.  * @type multiline_string
  25.  * @text Text
  26.  * @desc Text to display as a picture.
  27.  *       Control characters are allowed.
  28.  */
  29.  
  30. (() => {
  31.     const pluginName = "TextPicture";
  32.     let textPictureText = "";
  33.  
  34.     PluginManager.registerCommand(pluginName, "set", args => {
  35.         textPictureText = String(args.text);
  36.     });
  37.  
  38.     const _Game_Picture_show = Game_Picture.prototype.show;
  39.     Game_Picture.prototype.show = function() {
  40.         _Game_Picture_show.apply(this, arguments);
  41.         if (this._name === "" && textPictureText) {
  42.             this.mzkp_text = textPictureText;
  43.             this.mzkp_textChanged = true;
  44.             textPictureText = "";
  45.         }
  46.     };
  47.  
  48.     const _Sprite_Picture_destroy = Sprite_Picture.prototype.destroy;
  49.     Sprite_Picture.prototype.destroy = function() {
  50.         destroyTextPictureBitmap(this.bitmap);
  51.         _Sprite_Picture_destroy.apply(this, arguments);
  52.     };
  53.  
  54.     const _Sprite_Picture_updateBitmap = Sprite_Picture.prototype.updateBitmap;
  55.     Sprite_Picture.prototype.updateBitmap = function() {
  56.         _Sprite_Picture_updateBitmap.apply(this, arguments);
  57.         if (this.visible && this._pictureName === "") {
  58.             const picture = this.picture();
  59.             const text = picture ? picture.mzkp_text || "" : "";
  60.             const textChanged = picture && picture.mzkp_textChanged;
  61.             if (this.mzkp_text !== text || textChanged) {
  62.                 this.mzkp_text = text;
  63.                 destroyTextPictureBitmap(this.bitmap);
  64.                 this.bitmap = createTextPictureBitmap(text);
  65.                 picture.mzkp_textChanged = false;
  66.             }
  67.         } else {
  68.             this.mzkp_text = "";
  69.         }
  70.     };
  71.  
  72.     function createTextPictureBitmap(text) {
  73.         const tempWindow = new Window_Base(new Rectangle());
  74.         const size = tempWindow.textSizeEx(text);
  75.         tempWindow.padding = 0;
  76.         tempWindow.move(0, 0, size.width, size.height);
  77.         tempWindow.createContents();
  78.         tempWindow.drawTextEx(text, 0, 0, 0);
  79.         const bitmap = tempWindow.contents;
  80.         tempWindow.contents = null;
  81.         tempWindow.destroy();
  82.         bitmap.mzkp_isTextPicture = true;
  83.         return bitmap;
  84.     }
  85.  
  86.     function destroyTextPictureBitmap(bitmap) {
  87.         if (bitmap && bitmap.mzkp_isTextPicture) {
  88.             bitmap.destroy();
  89.         }
  90.     }
  91. })();

作者: nhycs01    时间: 2022-12-26 13:12
本帖最后由 nhycs01 于 2022-12-26 13:15 编辑
小秋橙 发表于 2022-12-26 12:53
试试这个官方插件,可以把多行文字视为一张图片显示呢。
//============================================= ...


感谢指点,但是这个插件是不是有问题,我新建了一个新工程去试验,也出不来效果,按下F8也有提示错误。

事件里我是这样写的:

插件指令:Set Text Picture
显示图片:图像设置为“无”
显示对话框文字




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1