设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

脚本里如何调用事件和事件命令

查看数: 2355 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-2-20 21:33

正文摘要:

我想在脚本里调用事件,这样写: module TestModule   def self.TestFunc     Mess_Text.write("My Test Success !!!")     $game_temp.reserve_common_event(1)   end e ...

回复

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

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

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

有没有解决办法?
RyanBern 发表于 2015-2-21 10:38:28
本帖最后由 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事件编辑器的工作转移到脚本上也会十分不便。

点评

其实是一个意思了,处于@child_interpreter中的公共事件会立即执行,这也相当于深度+1,我一开始说的不太详细  发表于 2015-2-21 11:37
差别在于公共事件的执行时机(立即执行/等事件处理结束后执行)  发表于 2015-2-21 11:02
cimmy210 发表于 2015-2-21 09:35:24
这个贴我也看了:
https://rpg.blue/thread-368281-1-1.html

还是弄不清怎么在脚本里调用事件指令,需要实例啊实例~~~~~~~~
cimmy210 发表于 2015-2-21 09:29:02
被扣分了............但无人回答我的问题??
cimmy210 发表于 2015-2-21 04:54:19
我看到这个贴子,说似乎可以这样:

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

但缺乏例子啊,还是不懂怎么弄..............
cimmy210 发表于 2015-2-20 22:05:14
唔,用 $game_temp.common_event_id = 事件ID 就行了.....

但是,编辑公共事件用的“事件指令”,能用脚本调用吗?
cimmy210 发表于 2015-2-20 21:54:44
而且游戏里一报错就没完没了弹框,只能用任务管理器强制结束游戏,郁闷.............
cimmy210 发表于 2015-2-20 21:52:03
改写成这样:

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>>]

怎么办?
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-22 19:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表