Project1

标题: 怎么返回事件页的“ID”? [打印本页]

作者: 俄罗斯方块    时间: 2014-6-29 13:22
标题: 怎么返回事件页的“ID”?
本帖最后由 俄罗斯方块 于 2014-6-30 22:45 编辑

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

也就是说那个编号是真实存在的吗?那么通过什么方法可以返回该事件页的编号呢?
作者: taroxd    时间: 2014-6-29 13:36
本帖最后由 taroxd 于 2014-6-29 13:37 编辑

RUBY 代码复制
  1. event.pages.index(page) + 1


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

未测试
作者: 泉塚四季    时间: 2014-6-29 13:39
本帖最后由 泉塚四季 于 2014-6-29 13:46 编辑

站在数据库的地方来看,每一页都是事件页数组中的一个元素,比如这个数组[1,1],两个都是1,但是它们却是有差别的。
而进入游戏后事件的实例则通过Game_event中的find_proper_page寻找出合适的事件页进行读取,事件实例中同时保存了数据库中的全部事件页数组以及自己本身要执行的那个事件页的事件列表
优先级顺序也就这么出来了,第一个找到的可以执行的事件列表就是最优先的
要返回读取了哪个事件页方法也很简单,在find_proper_page方法里加一个变量记录一下就好
作者: 俄罗斯方块    时间: 2014-6-29 13:42
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。。。。。。。
作者: 俄罗斯方块    时间: 2014-6-29 13:44
泉塚四季 发表于 2014-6-29 13:39
站在数据库的地方来看,每一页都是事件页数组中的一个元素,比如这个数组[1,1],两个都是1,但是它们却是有 ...

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

作者: taroxd    时间: 2014-6-29 13:46
俄罗斯方块 发表于 2014-6-29 13:42
报错,说没有找到适用于的方法pages。
我又定义了attr_accessor  :pages
结果报错说没有找到适用于nil的 ...


我说的很清楚,是RPG::Event的实例而不是Game_Event
一般来说,基本上没有获取事件页id的必要
作者: tseyik    时间: 2014-6-29 18:19
本帖最后由 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です。



作者: 俄罗斯方块    时间: 2014-6-29 21:57
tseyik 发表于 2014-6-29 18:19
イベントの呼び出し拡張
http://canarialt.blog.fc2.com/blog-entry-73.html
このスクリプトは既存の機能で ...

哈,我看到你这个头像我就猜到回复内容是什么了,果不其然。
新高三表示确实看不懂。
算了,结贴了吧。我问这个问题主要是想实现类似于事件复制一样的效果,但又不想用搜索到的那个从某个作为仓库的地图里拷贝事件到指定位置的脚本。总之,结贴了吧。
作者: feizhaodan    时间: 2014-6-30 20:40
$game_map.instance_variable_get(:@map).events[n].pages[x]
获取当前地图的N号事件的编号为x的事件页,x从0开始(事件页1为0)
作者: 俄罗斯方块    时间: 2014-6-30 22:32
feizhaodan 发表于 2014-6-30 20:40
$game_map.instance_variable_get(:@map).events[n].pages[x]
获取当前地图的N号事件的编号为x的事件页,x ...

非常感谢!!就是这个!!{:2_260:}




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