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

Project1

 找回密码
 注册会员
搜索
查看: 3049|回复: 10
打印 上一主题 下一主题

[已经解决] 有没有可能拦截地图事件,并在此前线执行一段代码?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3117
在线时间
205 小时
注册时间
2019-9-16
帖子
224
跳转到指定楼层
1
发表于 2019-10-13 18:13:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 寒凌天 于 2019-10-14 07:46 编辑

比如001地图的ID005事件,我知道了001和005这两个关键变量,在脚本里某处加个识别代码,判断有人运行这个位置的事件后,在此之前先执行一段代码?

就是说我想做个判定,在有人执行了某地图某特定位置的地图事件后,我能获知这个信息,并在他执行地图信息之前,先执行我自己的一段代码

可以实现吗?不过不能修改地图文件,只能在脚本或者公共事件里修改。

我自己开发了一款MOD,但是要改地图上的一些文件,不过随着游戏版本的更新,每次更新我都要再改一遍,因为改的地方多,所以特别麻烦。

假如我能在不改地图文件的情况下,识别玩家所选的地图事件是不是我MOD涉及的事件,我就能提前执行代码,实现不该地图完成效果。

Lv4.逐梦者

梦石
0
星屑
14624
在线时间
2152 小时
注册时间
2016-9-20
帖子
861
2
发表于 2019-10-13 19:11:08 | 只看该作者
本帖最后由 ppspssss 于 2019-10-13 21:48 编辑

看不懂你說什么,表达不清楚, 建議去整理好再問 ,
我发的贴子大多未经整理是草稿抱歉
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3117
在线时间
205 小时
注册时间
2019-9-16
帖子
224
3
 楼主| 发表于 2019-10-14 07:43:51 | 只看该作者
ppspssss 发表于 2019-10-13 19:11
看不懂你說什么,表达不清楚, 建議去整理好再問 ,

谢谢建议,我已经做了补充说明。
我是说我想做个判定,在有人执行了某地图某特定位置的地图事件后,我能获知这个信息,并在他执行地图信息之前,先执行我自己的一段代码
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
19468
在线时间
3108 小时
注册时间
2013-1-11
帖子
1292
4
发表于 2019-10-14 09:01:47 | 只看该作者
本帖最后由 张咚咚 于 2019-10-14 15:46 编辑
  1. $map_event_proc = {
  2.   :map => {
  3.     1 => {
  4.       1 => proc{ p '1号地图1号事件执行前' },
  5.       2 => proc{ p '1号地图2号事件执行前' },
  6.     },
  7.   },
  8.   :common_event => {
  9.     1 => proc{ p '1号公共事件执行前' },
  10.     2 => proc{ p '2号公共事件执行前' },
  11.   },
  12. }
  13. class Interpreter
  14.   alias qqeat_start_before_interpreter_setup setup
  15.   def setup(list, event_id)
  16.     if list.is_a?(RPG::CommonEvent)
  17.       common_event_id = list.id
  18.       list = list.list
  19.     end
  20.     qqeat_start_before_interpreter_setup(list, event_id)
  21.     if common_event_id
  22.       proc = $map_event_proc[:common_event][common_event_id]
  23.       proc.call if proc
  24.     else
  25.       proc = $map_event_proc[:map][@map_id]
  26.       proc[@event_id].call if proc and proc[@event_id]
  27.     end
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 公共事件
  31.   #--------------------------------------------------------------------------
  32.   def command_117
  33.     # 获取公共事件
  34.     common_event = $data_common_events[@parameters[0]]
  35.     # 公共事件有效的情况下
  36.     if common_event != nil
  37.       # 生成子解释器
  38.       @child_interpreter = Interpreter.new(@depth + 1)
  39.       @child_interpreter.setup(common_event, @event_id)
  40.     end
  41.     # 继续
  42.     return true
  43.   end
  44. end
复制代码

点评

哇!大神厉害啊……地图钩子已经完全问题了!可以满足我的一切需求,不过公共事件好像运行没效果,但好在这个需求不是紧迫,总之太谢谢了!  发表于 2019-10-14 17:41

评分

参与人数 1星屑 +100 +1 收起 理由
RyanBern + 100 + 1 认可答案

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3117
在线时间
205 小时
注册时间
2019-9-16
帖子
224
5
 楼主| 发表于 2019-10-14 09:52:31 | 只看该作者

哇!厉害啊,不愧是大神!能不能再请教个问题……
想要运行的地图事件因为“未满足出现条件”而未显示时,能不能让它出来,并执行上面你说的这个代码?
我说的出来,意思是类似给地图事件上添加新的没有出现条件的事件页……
前提还是不能修改地图文件……

点评

未满足条件运行?是走到某个地方运行么。。这样你直接一个公共事件并行判断角色坐标就行  发表于 2019-10-14 11:33
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3117
在线时间
205 小时
注册时间
2019-9-16
帖子
224
6
 楼主| 发表于 2019-10-14 11:56:27 | 只看该作者
本帖最后由 寒凌天 于 2019-10-14 12:38 编辑


不是……每个地图事件不是都可以设置出现条件吗?比如某开关为ON时出现,或者变量为多少时出现。
我想不管它满足不满足事件的出现条件,都可以强制出现,并执行我的代码,大神有办法么?


还有,公共事件能不能也拦截,并提前执行某代码?




例外,你之前告诉我的代码没有运行成功呢,请问是哪里出的问题?

QQ图片20191014123711.png (12.89 KB, 下载次数: 11)

QQ图片20191014123711.png

2.png (4.33 KB, 下载次数: 18)

2.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42399
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

7
发表于 2019-10-14 13:03:48 | 只看该作者
寒凌天 发表于 2019-10-14 11:56
不是……每个地图事件不是都可以设置出现条件吗?比如某开关为ON时出现,或者变量为多少时出现。
我想不 ...

脚本放在最下方main以上,不知道你放在什么地方的,至少不能在Interpreter上方

评分

参与人数 1星屑 +20 收起 理由
RyanBern + 20 醋疯

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3117
在线时间
205 小时
注册时间
2019-9-16
帖子
224
8
 楼主| 发表于 2019-10-14 13:41:37 | 只看该作者
本帖最后由 寒凌天 于 2019-10-14 13:43 编辑
fux2 发表于 2019-10-14 13:03
脚本放在最下方main以上,不知道你放在什么地方的,至少不能在Interpreter上方 ...


非常感谢,我按照你的指点把代码移动到了Main的上方、Interpreter的下方,(以前是在最上面)。

现在可以打开程序主页面了(以前打不开),但是在点完读取存档后,还是会报错,错误提示就是中间的那个提示,为了节省空间我P成了一个图

请教一下问题出在哪里?

另外,我把该代码和Interpreter同名类整合到了一起,但是还是会报错,报错提示是一模一样的……

QQ图片20191014133602.png (35.69 KB, 下载次数: 15)

QQ图片20191014133602.png

点评

修改了下,在复制试试  发表于 2019-10-14 15:33
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 09:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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