Project1

标题: 脚本里如何调用事件和事件命令 [打印本页]

作者: cimmy210    时间: 2015-2-20 21:33
标题: 脚本里如何调用事件和事件命令

我想在脚本里调用事件,这样写:

module TestModule
  def self.TestFunc
    Mess_Text.write("My Test Success !!!")
    $game_temp.reserve_common_event(1)
  end
end

结果执行时报错:

["Z", #<NoMethodError: undefined method 'reserve_common_event' for # <Game_Temp:0x4f9b0d8>>]

怎么办?

我看了这两个贴:

https://rpg.blue/forum.php?mod=viewthread&tid=369340
https://rpg.blue/thread-245258-1-1.html

都说只要一句 $game_temp.reserve_common_event(事件id) 就行了,但实际不行?

作者: cimmy210    时间: 2015-2-20 21:39
另外,公共事件编辑器里提供很多“事件指令”,如“显示文章”、“显示选择项”等:



我能用脚本调用这些事件指令吗?如果能,怎么调用?

作者: cimmy210    时间: 2015-2-20 21:52
改写成这样:

class Interpreter
  def TestFunc()
    Mess_Text.write("My Test Success !!!")
    $game_temp.reserve_common_event(1)
  end
end

也不行,报错:


["Z", #<NoMethodError: undefined method 'reserve_common_event' for # <Game_Temp:0x4f9cfc8>>]

怎么办?
作者: cimmy210    时间: 2015-2-20 21:54
而且游戏里一报错就没完没了弹框,只能用任务管理器强制结束游戏,郁闷.............
作者: cimmy210    时间: 2015-2-20 22:05
唔,用 $game_temp.common_event_id = 事件ID 就行了.....

但是,编辑公共事件用的“事件指令”,能用脚本调用吗?
作者: cimmy210    时间: 2015-2-21 04:54
我看到这个贴子,说似乎可以这样:

http://forums.rpgmakerweb.com/in ... uivalent-of-events/

但缺乏例子啊,还是不懂怎么弄..............
作者: cimmy210    时间: 2015-2-21 09:29
被扣分了............但无人回答我的问题??
作者: cimmy210    时间: 2015-2-21 09:35
这个贴我也看了:
https://rpg.blue/thread-368281-1-1.html

还是弄不清怎么在脚本里调用事件指令,需要实例啊实例~~~~~~~~
作者: RyanBern    时间: 2015-2-21 10:38
本帖最后由 RyanBern 于 2015-2-21 10:44 编辑

LZ从昨晚到现在发了不少帖,问题我稍后回答,LZ是新人,先给LZ纠正一下发帖规范。
在提问区里面,对连帖的处理虽然不像在水区那样严厉,但是连帖也是不好的。所以发帖的时候要尽量避免连帖,否则版主可能会前来扣分。
如果你发帖之后,想要对自己的帖子进行补充,不要连帖。你刚发的帖子下面有一个【编辑】按钮,你可以编辑你自己发过的帖子,在里面补充你想要的内容。不要担心帖子沉底问题,如果你问题描述清楚是有人过来回答的。

然后我说一下LZ提出的问题。用脚本调用事件其实不是非常的简单,因为RMXP的事件都是封包好的,如果用脚本写往往比较困难。调用公共事件的方法,可以直接写$game_temp.common_event_id = id,也可以仿照Interpreter3里面的def command_117去调用。二者有微小的差别(差别在于二者公共事件的深度不同)。
RUBY 代码复制
  1. ev = $data_common_events[1]
  2. if ev != nil
  3.   @child_interpreter = Interpreter.new(@depth + 1)
  4.   @child_interpreter.setup(ev.list, @event_id)
  5. end

至于调用事件指令,其实这只是对部分事件指令而言的,像调用“显示选择项”这种事件指令,实现起来是非常麻烦的。LZ提供的那个网站上面的帖子,其实是“Script call equivalent of events”,翻译过来就是“事件指令的脚本等价调用”。那个帖子说的不是用脚本直接调用事件,而是说某些事件指令的内容,如果换成脚本写法应该怎么写。例如,事件指令【开关操作】,换成脚本就是$game_switches[n] = true/false。但是比较复杂的指令,如“显示选择项”,用脚本写的话就会非常麻烦,因为你要考虑选择项的文字,每个选择项的分支,取消的场合,还有缩进(indent)问题,这些东西用事件脚本是写不下的。
如果实现事件和脚本的完全调用,你可以自己用脚本写事件的数据结构,然后吧这个数据结构放到@map_interpreter里面跑,其原理就是你用脚本生成了一个真正的事件一样,而不是“脚本的等价写法”,不过,搞清事件的数据结构本身就是个很麻烦的事情,而且把RMXP事件编辑器的工作转移到脚本上也会十分不便。

作者: cimmy210    时间: 2015-2-21 11:06
RyanBern 发表于 2015-2-21 10:38
LZ从昨晚到现在发了不少帖,问题我稍后回答,LZ是新人,先给LZ纠正一下发帖规范。
在提问区里面,对连帖的 ...

我想用脚本来调用事件指令的原因是,不能把单独一个公共事件导入/导出游戏(做补丁/MOD需要),这里有详述:

https://rpg.blue/thread-376786-1-1.html

有没有解决办法?




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