查看: 4698|回复: 11

[已经解决] 怎么返回事件页的“ID”?

[复制链接]
梦石
0
星屑
50
在线时间
130 小时
注册时间
2013-6-30
回帖
76
发表于 2014-6-29 13:22:11 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 俄罗斯方块 于 2014-6-30 22:45 编辑

不进入游戏,只站在脚本与数据库的角度来看,事件页与事件页之间没有绝对的差别,也就是ID。是这样吗?
就是说,事件页是没有Id的。两个事件页如果条件图案指令完全相同的话,那在电脑看来它们就是同一个事件页是吗?
如果是的话,
      为什么在RMaker里编辑事件的时候事件页会有编号1、2、3?这个1、2、3只是为了方便作者吗?
而且
      如果两个内容不同的事件页的启动条件一样,那么事件为什么只执行其中一个?何来的优先级顺序?
如果不是的话,
      那么通过谁(event?interpreter?page?)的什么方法或实例变量可以返回那种类似于ID的东西?

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2014-6-29 13:33:34 | 显示全部楼层
不是很懂,但是如果两个事件页条件一样,那么会先执行编号大的那页事件。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
130 小时
注册时间
2013-6-30
回帖
76
 楼主| 发表于 2014-6-29 13:34:56 | 显示全部楼层
VIPArcher 发表于 2014-6-29 13:33
不是很懂,但是如果两个事件页条件一样,那么会先执行编号大的那页事件。 ...

也就是说那个编号是真实存在的吗?那么通过什么方法可以返回该事件页的编号呢?
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-6-29 13:36:12 | 显示全部楼层
本帖最后由 taroxd 于 2014-6-29 13:37 编辑

[pre lang="ruby" line="1"]event.pages.index(page) + 1[/pre]

event是RPG::Event的实例,也就是数据库中地图里的事件;page是RPG::Event::Page的实例,也就是数据库的事件页

未测试

点评

我相信没人会蛋疼到为 RPG::Event::Page 去定义个 == 的  发表于 2014-6-29 14:07
除非你私自打开过rvdata2文件,否则不可能出现事件页相同的情况  发表于 2014-6-29 14:06
不可能。==当且仅当两个对象是同一对象时才会为真  发表于 2014-6-29 14:05
两个事件页完全相同的情况怎么办?  发表于 2014-6-29 13:58
回复

使用道具 举报

梦石
0
星屑
50
在线时间
269 小时
注册时间
2014-5-9
回帖
124

开拓者

发表于 2014-6-29 13:39:38 | 显示全部楼层
本帖最后由 泉塚四季 于 2014-6-29 13:46 编辑

站在数据库的地方来看,每一页都是事件页数组中的一个元素,比如这个数组[1,1],两个都是1,但是它们却是有差别的。
而进入游戏后事件的实例则通过Game_event中的find_proper_page寻找出合适的事件页进行读取,事件实例中同时保存了数据库中的全部事件页数组以及自己本身要执行的那个事件页的事件列表
优先级顺序也就这么出来了,第一个找到的可以执行的事件列表就是最优先的
要返回读取了哪个事件页方法也很简单,在find_proper_page方法里加一个变量记录一下就好
泉眼无声惜细流,树阴照水爱晴柔。
小荷才露尖尖角,早有蜻蜓立上头。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
130 小时
注册时间
2013-6-30
回帖
76
 楼主| 发表于 2014-6-29 13:42:39 | 显示全部楼层
taroxd 发表于 2014-6-29 13:36
event.pages.index(page) + 1[/pre]

event是RPG::Event的实例,也就是数据库中地图里的事件;page是RPG::E ...

报错,说没有找到适用于<Game_Event:某某某>的方法pages。
我又定义了attr_accessor  :pages
结果报错说没有找到适用于nil的方法index。。。。。。。

点评

Game_Event 和 RPG::Event 是不一样的  发表于 2014-6-29 13:47
好奇怪啊。明明看到默认脚本里有@event.pages这样的代码,为什么我那样会返回nil?  发表于 2014-6-29 13:46
回复

使用道具 举报

梦石
0
星屑
50
在线时间
130 小时
注册时间
2013-6-30
回帖
76
 楼主| 发表于 2014-6-29 13:44:39 | 显示全部楼层
泉塚四季 发表于 2014-6-29 13:39
站在数据库的地方来看,每一页都是事件页数组中的一个元素,比如这个数组[1,1],两个都是1,但是它们却是有 ...

说的是啊。归根结底他们无非是数组里的两个数组。
事件肯定执行第一个符合条件的那一个。
我现在去试试在find_proper_page里加一个变量的方法
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-6-29 13:46:34 | 显示全部楼层
俄罗斯方块 发表于 2014-6-29 13:42
报错,说没有找到适用于的方法pages。
我又定义了attr_accessor  :pages
结果报错说没有找到适用于nil的 ...


我说的很清楚,是RPG::Event的实例而不是Game_Event
一般来说,基本上没有获取事件页id的必要

点评

哈?抱歉,脚本小白想当然的就以为RPG::Event是Game_Event了。  发表于 2014-6-29 13:48
回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2014-6-29 18:19:27 | 显示全部楼层
本帖最后由 tseyik 于 2014-6-29 18:22 编辑

イベントの呼び出し拡張
http://canarialt.blog.fc2.com/blog-entry-73.html
このスクリプトは既存の機能である「コモンイベントの呼び出し」を拡張した機能を実装します。


マップイベントの呼び出し
コモンイベントの呼び出しのマップイベント版です。
イベントIDとページ番号を指定して呼び出します。
IDの代わりにイベント名を指定して呼び出す事も可能です。
※同一名が複数見つかった場合は念の為にコンソールに注意を表示します。


並列処理で呼び出し
通常の呼び出し方法に加えて、並列処理で呼び出す事も出来ます。
通常の呼び出しの場合は、呼び出したイベントが終了するまで待ちますが、
並列処理で呼び出した場合は、終了を待たずにイベントコマンドの処理を続けます。

クローンイベントEX
http://canarialt.blog.fc2.com/blog-entry-68.html
このスクリプトは同じ内容・似た内容のマップイベントの作成を補助するスクリプトです。
マップイベントのクローンのマップイベントを作成できるようにします。
オリジナルの完全なコピーではなく一部のイベント内容を変更したクローンの作成も可能です。
また、クローンに限らず全てのマップイベントで別のイベントページの内容を継承する機能を利用できるようになります。
これは以前に公開した「クローンイベント」の改良版のスクリプトです。スクリプト名のEXはextendのEXです。
003.png
03.png

点评

:call_map_event(5, 0) #=> イベントID 5番の表示中のページを呼び出し  发表于 2014-6-29 18:35
第一個是可喚出事件,頁如call_map_event(id, page_num):parallel_event(0, 3) #=> このイベントのページ番号 3番を呼び出し(並列処理)  发表于 2014-6-29 18:34
↓ 而且还需要翻墙+1  发表于 2014-6-29 18:30
而且还要翻墙  发表于 2014-6-29 18:28
我总觉得楼主看不懂,而且脚本内容和问题没什么关系?  发表于 2014-6-29 18:26
回复

使用道具 举报

梦石
0
星屑
50
在线时间
130 小时
注册时间
2013-6-30
回帖
76
 楼主| 发表于 2014-6-29 21:57:57 | 显示全部楼层
tseyik 发表于 2014-6-29 18:19
イベントの呼び出し拡張
http://canarialt.blog.fc2.com/blog-entry-73.html
このスクリプトは既存の機能で ...

哈,我看到你这个头像我就猜到回复内容是什么了,果不其然。
新高三表示确实看不懂。
算了,结贴了吧。我问这个问题主要是想实现类似于事件复制一样的效果,但又不想用搜索到的那个从某个作为仓库的地图里拷贝事件到指定位置的脚本。总之,结贴了吧。
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部