Project1

标题: 怎么用脚本立即执行某公共事件? [打印本页]

作者: 寒凌天    时间: 2019-10-18 16:14
标题: 怎么用脚本立即执行某公共事件?
以前我用脚本调用公共事件都是用的    $game_temp.common_event_id = 编号

但是这个命令只是把特定ID的公共事件加入消息循环,当前任务执行完以后才执行那个,我想要个可以立刻执行的代码,执行完公共事件后,才继续往下执行,请问怎么搞?
作者: soulsaga    时间: 2019-10-18 17:35
$game_system.map_interpreter.setup($data_common_events[10086].list, 0)

作者: 寒凌天    时间: 2019-10-20 21:59
soulsaga 发表于 2019-10-18 17:35
$game_system.map_interpreter.setup($data_common_events[10086].list, 0)

你的代码我第一次用时好用,但是再用就不行了。
请问那个setup执行后,是不是要清除原有数据后才能再次执行?
如果是的话,清除代码怎么写呢?
作者: soulsaga    时间: 2019-10-20 22:57
本帖最后由 soulsaga 于 2019-10-20 23:06 编辑
寒凌天 发表于 2019-10-20 21:59
你的代码我第一次用时好用,但是再用就不行了。
请问那个setup执行后,是不是要清除原有数据后才能再次执 ...


$game_system.map_interpreter.update刷新一下试试?
作者: guoxiaomi    时间: 2019-11-4 20:31
本帖最后由 guoxiaomi 于 2019-11-4 23:22 编辑

应该使用child_interpreter,回头我整理一个范例

如果在事件脚本中使用脚本代替原本事件中的“调用公共事件”的效果,可以直接复制 command_117 的代码:

  1. # 获取公共事件
  2. common_event = $data_common_events[1]
  3. # 公共事件有效的情况下
  4. if common_event != nil
  5.   # 生成子解释器
  6.   @child_interpreter = Interpreter.new(@depth + 1)
  7.   @child_interpreter.setup(common_event.list, @event_id)
  8. end
  9. # 继续
复制代码
可以去掉3,4,8行,因为你自己调用的公共事件不可能失效

如果在 scripts 里调用公共事件,这种做法是不推荐的。




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