本帖最后由 RyanBern 于 2015-2-21 10:44 编辑
LZ从昨晚到现在发了不少帖,问题我稍后回答,LZ是新人,先给LZ纠正一下发帖规范。
在提问区里面,对连帖的处理虽然不像在水区那样严厉,但是连帖也是不好的。所以发帖的时候要尽量避免连帖,否则版主可能会前来扣分。
如果你发帖之后,想要对自己的帖子进行补充,不要连帖。你刚发的帖子下面有一个【编辑】按钮,你可以编辑你自己发过的帖子,在里面补充你想要的内容。不要担心帖子沉底问题,如果你问题描述清楚是有人过来回答的。
然后我说一下LZ提出的问题。用脚本调用事件其实不是非常的简单,因为RMXP的事件都是封包好的,如果用脚本写往往比较困难。调用公共事件的方法,可以直接写$game_temp.common_event_id = id,也可以仿照Interpreter3里面的def command_117去调用。二者有微小的差别(差别在于二者公共事件的深度不同)。
ev = $data_common_events[1] if ev != nil @child_interpreter = Interpreter.new(@depth + 1) @child_interpreter.setup(ev.list, @event_id) end
ev = $data_common_events[1]
if ev != nil
@child_interpreter = Interpreter.new(@depth + 1)
@child_interpreter.setup(ev.list, @event_id)
end
至于调用事件指令,其实这只是对部分事件指令而言的,像调用“显示选择项”这种事件指令,实现起来是非常麻烦的。LZ提供的那个网站上面的帖子,其实是“Script call equivalent of events”,翻译过来就是“事件指令的脚本等价调用”。那个帖子说的不是用脚本直接调用事件,而是说某些事件指令的内容,如果换成脚本写法应该怎么写。例如,事件指令【开关操作】,换成脚本就是$game_switches[n] = true/false。但是比较复杂的指令,如“显示选择项”,用脚本写的话就会非常麻烦,因为你要考虑选择项的文字,每个选择项的分支,取消的场合,还有缩进(indent)问题,这些东西用事件脚本是写不下的。
如果实现事件和脚本的完全调用,你可以自己用脚本写事件的数据结构,然后吧这个数据结构放到@map_interpreter里面跑,其原理就是你用脚本生成了一个真正的事件一样,而不是“脚本的等价写法”,不过,搞清事件的数据结构本身就是个很麻烦的事情,而且把RMXP事件编辑器的工作转移到脚本上也会十分不便。
|