查看: 4073|回复: 20

[已经解决] 求问怎么判断是否在对话中

[复制链接]
梦石
0
星屑
328
在线时间
84 小时
注册时间
2018-3-30
回帖
6
发表于 2021-11-14 22:08:59 | 显示全部楼层 |阅读模式

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

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

×
就比如判断是否在对话中,如果是在对话,就打开某个开关或者调整某个数值之类的,对话结束就自动关闭开关,论坛里搜索了一下好像只看到有人问XP的,但没有看到VA的怎么解决_(:з」∠)_
梦石
0
星屑
2866
在线时间
446 小时
注册时间
2016-9-26
回帖
1175
发表于 2021-11-14 22:34:15 | 显示全部楼层
对话前开个开关,
对话事件用并行,对话事件要该开关开了才运行
控制开关的用另一个并行事件
(临时想到,不懂和有错别找我)
回复

使用道具 举报

梦石
0
星屑
328
在线时间
84 小时
注册时间
2018-3-30
回帖
6
 楼主| 发表于 2021-11-14 22:42:24 | 显示全部楼层
任小雪 发表于 2021-11-14 22:34
对话前开个开关,
对话事件用并行,对话事件要该开关开了才运行
控制开关的用另一个并行事件

不是这个意思,我是打算用在公共事件里和游戏同时并行处理的,每次对话都加一个开关真的太麻烦了,还可能漏加
其实我想的是,有没有在分支条件里填入某种脚本代码,就能直接判断是否在对话了并进行后续处理了

点评

懂了,建议用橙光  发表于 2021-11-14 22:55
回复 1 0

使用道具 举报

梦石
0
星屑
2419
在线时间
411 小时
注册时间
2021-11-7
回帖
171
发表于 2021-11-14 23:04:41 | 显示全部楼层
Window_Message类底下有open_and_wait方法,重写该方法可能有用
2021-11-14_230440.jpg
欲速春风山劝阻,不得恰恰不得呼。
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2021-11-14 23:36:37 | 显示全部楼层
本帖最后由 alexncf125 于 2021-11-15 00:24 编辑

黑历史$game_message.busy?
或者
$game_message.has_text?

busy?包括选项, 数值输入等的情形
has_text?单纯文本对话

[pre lang="ruby"]#--------------------------------------------------------------------------
  # ● 判定是否存在显示内容
  #--------------------------------------------------------------------------
  def has_text?
    @texts.size > 0
  end
  #--------------------------------------------------------------------------
  # ● 判定是否为选择模式
  #--------------------------------------------------------------------------
  def choice?
    @choices.size > 0
  end
  #--------------------------------------------------------------------------
  # ● 判定是否为数值输入模式
  #--------------------------------------------------------------------------
  def num_input?
    @num_input_variable_id > 0
  end
  #--------------------------------------------------------------------------
  # ● 判定是否为物品选择模式
  #--------------------------------------------------------------------------
  def item_choice?
    @item_choice_variable_id > 0
  end
  #--------------------------------------------------------------------------
  # ● 判定是否为繁忙状态
  #--------------------------------------------------------------------------
  def busy?
    has_text? || choice? || num_input? || item_choice?
  end[/pre]
回复

使用道具 举报

梦石
0
星屑
328
在线时间
84 小时
注册时间
2018-3-30
回帖
6
 楼主| 发表于 2021-11-14 23:45:23 | 显示全部楼层
夏虫沉默 发表于 2021-11-14 23:04
Window_Message类底下有open_and_wait方法,重写该方法可能有用

_(:з」∠)_对不起我是个程序小白,不敢乱动这个
回复

使用道具 举报

梦石
0
星屑
328
在线时间
84 小时
注册时间
2018-3-30
回帖
6
 楼主| 发表于 2021-11-14 23:47:46 | 显示全部楼层
alexncf125 发表于 2021-11-14 23:36
$game_message.busy?
或者
$game_message.has_text?

Snipaste_2021-11-14_23-45-16.jpg 好像报错了,不知道为啥,是我用错了么

点评

不用if, == true也可以不用加  发表于 2021-11-14 23:51
回复

使用道具 举报

梦石
0
星屑
328
在线时间
84 小时
注册时间
2018-3-30
回帖
6
 楼主| 发表于 2021-11-15 00:02:41 | 显示全部楼层
alexncf125 发表于 2021-11-14 23:36
$game_message.busy?
或者
$game_message.has_text?

ORZ好像还是不行,两个我都试过了,但是都没有效果,如果起效的话左边的小人应该会开始走路的,我试过开按钮开关可以触发 Snipaste_2021-11-14_23-59-56.jpg Snipaste_2021-11-15_00-00-10.jpg
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2021-11-15 00:14:40 | 显示全部楼层
本帖最后由 alexncf125 于 2021-11-15 00:23 编辑

黑历史
於十五 发表于 2021-11-15 00:02
ORZ好像还是不行,两个我都试过了,但是都没有效果,如果起效的话左边的小人应该会开始走路的,我试过开 ...


治标不治本的方案, 插入这段:
  1. class Game_Interpreter
  2.   #--------------------------------------------------------------------------
  3.   # ● 等待显示信息
  4.   #--------------------------------------------------------------------------
  5.   alias :old_wait_for_message_old :wait_for_message
  6.   def wait_for_message
  7.     return if $game_message.busy?
  8.     old_wait_for_message_old
  9.   end
  10. end
复制代码
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2021-11-15 00:23:24 | 显示全部楼层
本帖最后由 alexncf125 于 2021-11-15 09:04 编辑


黑历史治标又治本的方案, 插入这段:
  1. class Window_Message < Window_Base
  2.   alias :old_open_and_wait :open_and_wait
  3.   def open_and_wait
  4.     $game_switches[2] = true
  5.     old_open_and_wait
  6.   end
  7.   alias :old_close_and_wait :close_and_wait
  8.   def close_and_wait
  9.     old_close_and_wait
  10.     $game_switches[2] = false
  11.   end
  12. end
复制代码

点评

仔细看了眼, 8L的走路跟我想的走路不太一样,,,  发表于 2021-11-15 09:04
我以为LZ只是想让8L左边的小人开始走路,,,  发表于 2021-11-15 09:01
这个只是多一个开关用来判断,但是当用到并行事件里时,和busy?作用一样,依然会被wait_for_message暂停并行事件执行  发表于 2021-11-15 08:55
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部