设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3868|回复: 2
打印 上一主题 下一主题

[已经解决] (已解决)如何阻止在使用$gameMessage.add时事件继续执行?

[复制链接]

Lv4.逐梦者

梦石
7
星屑
1113
在线时间
334 小时
注册时间
2008-1-28
帖子
1566
跳转到指定楼层
1
发表于 2016-10-30 05:14:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 未命名 于 2016-10-30 11:33 编辑

我想制作由变量来控制内容的对话,所以使用事件脚本$gameMessage.add来显示文章。

但是在使用时发现其和直接用事件显示文章不一样,它会显示文章之后继续执行下面的命令,而用事件则会等到按下确定键后才继续。
即使使用$gameMessage.newPage();也只是让加入的对话分成两页,但不能停止它继续执行。

例如:

上图中,出现对话框“点点滴滴”的同时也会显示图片,而显示对话框“22222222”之后才会显示另一张图片。

我想请教下如何解决这个问题,让使用$gameMessage.add的对话也能等待按下确定键消失后才继续执行下面的命令?
终于有可以放在这里的游戏了……
极短13 新生 《箱子新世界》

Lv6.析梦学徒

老鹰

梦石
40
星屑
34836
在线时间
6748 小时
注册时间
2012-5-26
帖子
3261

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

2
发表于 2016-10-30 09:59:22 | 只看该作者
本帖最后由 百里_飞柳 于 2016-10-30 10:16 编辑

在add后面加上这一句看看 setWaitMode('message');
咳,其实我还不知道JGSS的结构,你可以对照着默认脚本试试
JAVASCRIPT 代码复制
  1. // Show Text
  2. Game_Interpreter.prototype.command101 = function() {
  3.     if (!$gameMessage.isBusy()) {
  4.         $gameMessage.setFaceImage(this._params[0], this._params[1]);
  5.         $gameMessage.setBackground(this._params[2]);
  6.         $gameMessage.setPositionType(this._params[3]);
  7.         while (this.nextEventCode() === 401) {  // Text data
  8.             this._index++;
  9.             $gameMessage.add(this.currentCommand().parameters[0]);
  10.         }
  11.         switch (this.nextEventCode()) {
  12.         case 102:  // Show Choices
  13.             this._index++;
  14.             this.setupChoices(this.currentCommand().parameters);
  15.             break;
  16.         case 103:  // Input Number
  17.             this._index++;
  18.             this.setupNumInput(this.currentCommand().parameters);
  19.             break;
  20.         case 104:  // Select Item
  21.             this._index++;
  22.             this.setupItemChoice(this.currentCommand().parameters);
  23.             break;
  24.         }
  25.         this._index++;
  26.         this.setWaitMode('message');
  27.     }
  28.     return false;
  29. };

评分

参与人数 2星屑 +85 梦石 +1 收起 理由
余烬之中 + 1 认可答案
未命名 + 85 感谢指点!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者

梦石
7
星屑
1113
在线时间
334 小时
注册时间
2008-1-28
帖子
1566
3
 楼主| 发表于 2016-10-30 11:21:16 | 只看该作者
本帖最后由 未命名 于 2016-10-30 11:30 编辑
百里_飞柳 发表于 2016-10-30 09:59
在add后面加上这一句看看 setWaitMode('message');
咳,其实我还不知道JGSS的结构,你可以对照着默认脚本试 ...


感谢指点!

虽然直接使用setWaitMode('message');或$gameMessage.setWaitMode('message');会出现“undefined is not function”。
但我找到了setWaitMode的函数,又发现了_waitMode和$gameMessage.isBusy(),最后找到了updateWaitMode函数。
只要让updateWaitMode返回$gameMessage.isBusy()就好。

终于我发现在使用$gameMessage.add的前或后加上:
  1. Game_Interpreter.prototype.updateWaitMode(Game_Interpreter.prototype.setWaitMode(this._waitMode = 'message'));
复制代码

就可以了,虽然暂时不知道有什么副作用。

再次感谢指点!
@余烬之中  希望认可2楼【百里_飞柳】,谢谢。
我似乎不会@人……
终于有可以放在这里的游戏了……
极短13 新生 《箱子新世界》
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-27 02:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表