Project1

标题: 有没有独立的文本回放插件? [打印本页]

作者: fbeds    时间: 2024-4-2 22:23
标题: 有没有独立的文本回放插件?
如题,想要一个能在文本框中添加一个文本回放按钮的插件,点击后可以查看前几句文本。我知道有YEP的那个插件,但是那个插件需要一个前置的核心插件,而那个插件会和我用的一个根据角色名字改变字体颜色的插件冲突,装了那个核心插件会导致根据名字改变字体颜色的插件失效。所以有没有独立的一个文本回放的插件?
作者: 小秋橙    时间: 2024-4-2 22:23
上次在 https://rpg.blue/forum.php?mod=r ... amp;fromuid=2731820 问我「渐变色+依名字变色」的也是这位楼主呢,不知道最后楼主是怎么解决那个问题的。关于文本回放我倒是在MV区 https://rpg.blue/forum.php?mod=r ... amp;fromuid=2731820 回答过类似的问题,只不过对于MZ来说多了一个姓名框(下图右半部分的params[4])。

因此代码可以写成下面这样:
JAVASCRIPT 代码复制下载
  1. // Show Text
  2. Game_Interpreter.prototype.command101 = function(params) {
  3.     if ($gameMessage.isBusy()) {
  4.         return false;
  5.     }
  6.     $gameMessage.setFaceImage(params[0], params[1]);
  7.     $gameMessage.setBackground(params[2]);
  8.     $gameMessage.setPositionType(params[3]);
  9.     $gameMessage.setSpeakerName(params[4]);
  10.     if ($gameTemp.backLog == null) $gameTemp.backLog = []; // 本行为新增内容,防止backLog数组不存在
  11.     $gameTemp.backLog.unshift(params[4] + ':'); // 本行为新增内容,记录名字
  12.     while (this.nextEventCode() === 401) {
  13.         // Text data
  14.         this._index++;
  15.         $gameTemp.backLog.unshift(this.currentCommand().parameters[0]); // 本行为新增内容,记录正文
  16.         $gameMessage.add(this.currentCommand().parameters[0]);
  17.     }
  18.     switch (this.nextEventCode()) {
  19.         case 102: // Show Choices
  20.             this._index++;
  21.             this.setupChoices(this.currentCommand().parameters);
  22.             break;
  23.         case 103: // Input Number
  24.             this._index++;
  25.             this.setupNumInput(this.currentCommand().parameters);
  26.             break;
  27.         case 104: // Select Item
  28.             this._index++;
  29.             this.setupItemChoice(this.currentCommand().parameters);
  30.             break;
  31.     }
  32.     this.setWaitMode("message");
  33.     return true;
  34. };

然后楼主就可以在进行一些对话以后在F8控制台运行下面的代码查看到对话记录:
JAVASCRIPT 代码复制
  1. if ($gameTemp.backLog != null) {
  2.     let max = 5; // 最大回放条数,但若正文的某行以中文冒号结尾则会误判
  3.     for (let i = $gameTemp.backLog.length; --i >= 0;) {
  4.         let s = $gameTemp.backLog[i];
  5.         if (s.endsWith(':') && --max < 0)
  6.             break;
  7.         console.log(s);
  8.     }
  9. }

那么最后一步就是如何把这些记录在游戏中重现而不是通过console.log()打印到控制台,办法就比较多了,比如官方插件TextPicture什么的。




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