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

Project1

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

[RMVX发布] 独立公共事件执行器【已更新】

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
跳转到指定楼层
1
发表于 2011-12-15 20:38:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 九夜神尊 于 2011-12-20 01:58 编辑

好吧,好久没发帖子了,这次我用的是手机。

首先解释一下独立公共事件执行器的作用。
能够随时执行公共事件。

好吧听到这里觉得蛋痛的撤吧,因为后面更蛋痛。


其实默认的执行公共事件,只能在地图上或者战斗中,这对事件派以及绝大多数人认可,的确,它做的很对。

独立公共事件执行器实际上只是让这些公共时间能够随时执行。就这么简单。。。。

有用么?坑爹呢?忽悠人呢?
其实作用是脚本的任意地方都能调用公共事件,然后通过计算得到结果后继续执行脚本,就好像脚本里面调用了一个方法。
其实我们在写脚本的时候,有些地方是可以让作者自行设定的,但是为了脚本容易使用,有些地方就采用了自己的设定,那是因为脚本复杂,让作者去自己设定很难实现,当然,除了能用哈洗表完成的设定。
所以,某一个方法能让作者来定义,能大大增加脚本的灵活度。
所以,我就写了用公共事件当方法调用的脚本。某些需要作者自行设定的方法,就搬到公共事件上来吧。每一个作者都会用事件,有很多作者都能用事件做ARPG了,但依旧不会脚本。那么,让脚本搬到事件上来写吧。

懂?

切慢,我得告诉你们很蛋疼的,
那就是我还没写这个脚本,最近坑的厉害,先把自己的信誉压出去,这样自己就有动力写了。
然后顺便调查一下用户群大不大。

独立公共事件执行器
功能:可以随时执行公共事件,而不受公共事件只能在地图和战斗中执行的限制。

  1. #==============================================================================
  2. # ■ Game_Interpreter_Self
  3. #------------------------------------------------------------------------------
  4. # 独立公共事件执行器
  5. #==============================================================================
  6. =begin

  7. 独立公共事件执行器用于随时执行公共事件,不受公共事件调用地方的限制。
  8. □使用方法:
  9. 1。将脚本插入main前。
  10. 2。在需要使用公共事件的地方
  11. 插入、
  12. Game_Interpreter_Self.new(公共事件ID)
  13. □可能的冲突:无
  14. =end

  15. class Game_Interpreter_Self < Game_Interpreter
  16.   #--------------------------------------------------------------------------
  17.   # ● 初始化对像
  18.   #     depth : 堆置深度
  19.   #     main  : 主标志
  20.   #--------------------------------------------------------------------------
  21.   def initialize(com_id)
  22.     @com_id = com_id
  23.     common_event = $data_common_events[@com_id]
  24.     setup(common_event.list)
  25.     update
  26.     clear
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 公共事件
  30.   #--------------------------------------------------------------------------
  31.   def command_117
  32.     common_event = $data_common_events[@params[0]]
  33.     if common_event != nil
  34.       @child_interpreter = Game_Interpreter_Self.new(@params[0])
  35.   #    @child_interpreter.setup(common_event.list, @event_id)
  36.     end
  37.     return true
  38.   end
  39.   
  40. end
复制代码

我也没想到就这几句就写出来了。
可以在这个类定义完以后任意地方使用该脚本。

■以下我列举一些这种脚本的用法。
模仿读图功能
可以在脚本内找到场所传送,然后判断地图ID不同,就可以执行一个公共事件。
这个公共事件用来模仿读图效果。

事件自制战斗公式
脚本作者只需要将一些战斗时需要的数据保存在一些变量里。
例如:
攻击者攻击力 → 101变量
攻击者力量 → 102变量
攻击者暴击率 → 103变量
……
被攻击者 防御力131变量
被攻击力 回避 132变量
……
这样作者就可以轻松应用这些变量按照自己的想法做运算。
然后把最后算出来的伤害保存在181号变量。
然后脚本内读取181号变量继续战斗处理。

这个脚本使用到什么地方,什么地方就相当于有了一个可以让作者自己定义的方法。
可以极大的增加脚本的自由度。

===================================================================
不过要注意,可能会有些事件在某些情况下不能使用。
比如还没进入游戏就使用角色移动。
正在传送的时候,控制怪物等等。

欢迎测试指出BUG!!!!!!!!!!

评分

参与人数 2星屑 +602 收起 理由
阿尔西斯的马甲 + 2 没想到这万年大坑已经满了
fux2 + 600 感觉有点像内联函数。

查看全部评分

精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。

Lv1.梦旅人

梦石
0
星屑
66
在线时间
140 小时
注册时间
2012-2-6
帖子
384
15
发表于 2012-8-30 14:14:20 | 只看该作者
  1. #==============================================================================
  2. # ■ ggsj
  3. #------------------------------------------------------------------------------
  4. # 独立公共事件执行器
  5. #==============================================================================
  6. =begin

  7. 独立公共事件执行器用于随时执行公共事件,不受公共事件调用地方的限制。
  8. □使用方法:
  9. 1。将脚本插入main前。
  10. 2。在需要使用公共事件的地方
  11. 插入、
  12. ggsj(公共事件ID)
  13. □可能的冲突:无
  14. =end
  15. def ggsj(com_id)
  16.   cm = Interpreter.new
  17.   if $data_common_events[com_id] != nil
  18.     cm.setup($data_common_events[com_id].list, @event_id)
  19.   end
  20.   cm.update
  21. end
复制代码
以上是XP版

点评

我要告诉你,你没有考虑到公共事件的递归哦!  发表于 2012-8-30 16:31
签名是什么?可以吃么?
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人

梦石
0
星屑
49
在线时间
88 小时
注册时间
2011-12-17
帖子
281
14
发表于 2012-1-28 10:17:48 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
13
 楼主| 发表于 2011-12-20 01:59:05 | 只看该作者
终于做好了,用时1小时,我也没想到这么简单。
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

12
发表于 2011-12-18 14:33:21 | 只看该作者
我发现我看了半天不知道你想表达什么
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人

梦石
0
星屑
49
在线时间
88 小时
注册时间
2011-12-17
帖子
281
11
发表于 2011-12-17 21:11:25 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
10
 楼主| 发表于 2011-12-17 19:41:31 | 只看该作者

RE: 写给脚本作者的脚本-独立公共事件执行器。

各种压力的猫君 发表于 2011-12-17 06:54
事件解释器的效率 = = b 创意是有了实用性呢?
感觉这东西就是想用用户的不一定会用(脚本0基础),会用的 ...

效率很差,估计只有脚本一半的效率,或者还不到,然后本来0.1秒能算好的东西,要0.3秒,极大的耽误了玩家玩游戏的速度。
其实学不会脚本并不是因为基础,而是出于对自己的不自信和对脚本的恐惧,于是就安慰说事件党都是很有能力的,能用有限的资源做无穷的创意。的确,他们思路绝对到家。
一次我看到一篇帖子,使用技能消耗物品,然后他采用了冲突最少的哈洗表方法让作者设置,然后我就想到了全域条件技能。意思就是一个技能能否释放,可以和游戏内任何事物关联。比如地图,角色,开关,物品,进程,乃至金钱等等,这些条件在脚本内设置,还真得会脚本了。我当时想,如果能把技能ID交给作者,让作者自行应用这个ID然后通过分歧来实现技能条件,岂不是一切皆有可能。
然后我很兴奋的写出来,发现不行,原因 公共事件执行不是随时的。
将某个方法交给作者,让作者用事件完成定义,,这是这个脚本的目的,比方说让作者设定战斗公式,或者会心几率,或者战斗中回血等等等等。
实用性在哪?不在这个脚本里,在用这个脚本的脚本里。

点评

前面粗心少了个$  发表于 2011-12-18 09:16
用game_temp.commonevents结果成功了。不过这会打断已有事件执行器。。  发表于 2011-12-18 09:16
呵呵,我很久以前就思考过用公共事件自制菜单(当时没学过Ruby,是脚本盲)  发表于 2011-12-18 09:14
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv2.观梦者

(?????)

梦石
0
星屑
728
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

9
发表于 2011-12-17 06:54:33 | 只看该作者
本帖最后由 各种压力的猫君 于 2011-12-17 06:55 编辑

事件解释器的效率 = = b 创意是有了实用性呢?
感觉这东西就是想用用户的不一定会用(脚本0基础),会用的用户不一定想用(还不如自己写脚本了)

点评

同感  发表于 2011-12-17 08:11
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
8
 楼主| 发表于 2011-12-16 23:00:22 | 只看该作者
rainfly 发表于 2011-12-16 17:29
不管是什么Scene,只要在update里面加上$game_system.map_interpreter.update这一句,就可以在当前Scene执行 ...

这样貌似可行,但是会产生未知错误。
就我想到的就是会覆盖掉本来在准备执行的公共事件。以及嵌套公共事件能否执行不清楚。

PS,这两天狂加班。就纠结。。。
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
461 小时
注册时间
2008-11-19
帖子
607
7
发表于 2011-12-16 21:49:32 | 只看该作者
這個功能似乎不錯 想學習!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 21:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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