查看: 4811|回复: 2

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

[复制链接]
梦石
7
星屑
1113
在线时间
334 小时
注册时间
2008-1-28
回帖
1506
发表于 2016-10-30 05:14:37 | 显示全部楼层 |阅读模式

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

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

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

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

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

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

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

老鹰

梦石
40
星屑
37812
在线时间
7091 小时
注册时间
2012-5-26
回帖
3297

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

发表于 2016-10-30 09:59:22 | 显示全部楼层
本帖最后由 百里_飞柳 于 2016-10-30 10:16 编辑

在add后面加上这一句看看 setWaitMode('message');
咳,其实我还不知道JGSS的结构,你可以对照着默认脚本试试
[pre lang="javascript"]// Show Text
Game_Interpreter.prototype.command101 = function() {
    if (!$gameMessage.isBusy()) {
        $gameMessage.setFaceImage(this._params[0], this._params[1]);
        $gameMessage.setBackground(this._params[2]);
        $gameMessage.setPositionType(this._params[3]);
        while (this.nextEventCode() === 401) {  // Text data
            this._index++;
            $gameMessage.add(this.currentCommand().parameters[0]);
        }
        switch (this.nextEventCode()) {
        case 102:  // Show Choices
            this._index++;
            this.setupChoices(this.currentCommand().parameters);
            break;
        case 103:  // Input Number
            this._index++;
            this.setupNumInput(this.currentCommand().parameters);
            break;
        case 104:  // Select Item
            this._index++;
            this.setupItemChoice(this.currentCommand().parameters);
            break;
        }
        this._index++;
        this.setWaitMode('message');
    }
    return false;
};[/pre]

评分

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

查看全部评分

回复 1 0

使用道具 举报

梦石
7
星屑
1113
在线时间
334 小时
注册时间
2008-1-28
回帖
1506
 楼主| 发表于 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 新生 《箱子新世界》
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部