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

Project1

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

[RMVA发布] 面向事件党的脚本:独立公共事件执行器

[复制链接]

Lv3.寻梦者

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

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

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

x
本帖最后由 九夜神尊 于 2012-8-15 22:29 编辑

一种把公共事件当做方法的创意,虽然早都有,但是知道的人不多。
再次发布,不过改成VA用的。
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Game_Interpreter_Self
  3. #------------------------------------------------------------------------------
  4. # 独立公共事件执行器
  5. #==============================================================================
  6. =begin
  7.  
  8. 独立公共事件执行器用于随时执行公共事件,不受公共事件调用地方的限制。
  9. □使用方法:
  10. 1。将脚本插入main前。
  11. 2。在需要使用公共事件的地方
  12. 插入、
  13. Game_Interpreter_Self.new(公共事件ID)
  14. □可能的冲突:无
  15. =end
  16.  
  17. class Game_Interpreter_Self < Game_Interpreter
  18.   #--------------------------------------------------------------------------
  19.   # ● 初始化对像
  20.   #     depth : 堆置深度
  21.   #     main  : 主标志
  22.   #--------------------------------------------------------------------------
  23.   def initialize(com_id)
  24.     @com_id = com_id
  25.     common_event = $data_common_events[@com_id]
  26.     setup(common_event.list)
  27.     update
  28.     clear
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # ● 公共事件
  32.   #--------------------------------------------------------------------------
  33.   def command_117
  34.     common_event = $data_common_events[@params[0]]
  35.     if common_event != nil
  36.       @child_interpreter = Game_Interpreter_Self.new(@params[0])
  37.   #    @child_interpreter.setup(common_event.list, @event_id)
  38.     end
  39.     return true
  40.   end
  41.  
  42. end

使用实例

这是我写一个口袋妖怪脚本中的一段,用于判断一个宠物是否可以进化。
大家可能都知道,在口袋妖怪一类游戏里,宠物进化的条件各不相同,可能会与一切事物有关,那么这些条件是不是都应该放到这个方法里面?
如果使用者不会使用脚本呢?
要知道如果是一个团队制作游戏,主编可能不会那些脚本,制作起来会不会所有条件都会找程序呢?
况且自己去写条件也会比较麻烦吧?

解释实例脚本
$game_variables[7] = @actor_id #将该角色的ID保存在7号变量里,备用
$temp_actor = self #将本角色保存在全局变量里,备用
$game_switches[7] = false #将返回值(开关)初始化
独立执行对应公共事件。
return 返回值(开关)


那么这个公共事件都执行些什么呢?
来看看这个公共事件。

先说明一下,参数角色被同步成$temp_actor 了。
那么解释出来就是,11号角色在25级以上才可以进化,12号角色在30级以上,而且需要有神兽图鉴。
最后得到的结果就是7号开关,(返回用开关)

然后脚本里 return $game_switches[7]

这只是很小的很小的用法其中之一。

其实这脚本的作用也就是把公共事件插入方法里面。这样许多脚本在最初定义的时候可以借助公共事件完成一些复杂的定义。

公共事件在许多时候会比脚本方便的多。

评分

参与人数 1星屑 +24 收起 理由
闻人翎 + 24 认可答案

查看全部评分

精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
菜鸟飞呀飞 该用户已被删除
2
发表于 2012-8-16 02:45:29 手机端发表。 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
3
 楼主| 发表于 2012-8-16 10:57:05 | 只看该作者
本帖最后由 九夜神尊 于 2012-8-16 10:58 编辑
菜鸟飞呀飞 发表于 2012-8-16 02:45
不错,同做口袋的支持下。说下感想,这样的话一个公共事件要有上百个分歧才能满足众精灵进化条件。而每次都 ...


我这实例是应用之一,面向事件的东西,就会吧效率靠后放。此外其实事件上ID分歧是可以优化的。
比方说有100个角色需要分歧。
则先分歧ID比较50,
如果小于50,则分歧比较25,
如果小于25,则分歧比较13
……
但是因为其实效率上来说没人在意,所以也没什么人去做这种优化。
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
301
在线时间
573 小时
注册时间
2005-10-27
帖子
1164
4
发表于 2012-8-16 23:31:59 | 只看该作者
这个居然也能造福大众。支持!幸好我的公共事件里暂时还没出现什么猥琐的名字…偷笑。 那个不懂使用脚本的苦逼就是偶啦……
认真地猥琐,猥琐地认真
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
63
在线时间
211 小时
注册时间
2011-7-7
帖子
148
5
发表于 2012-10-12 11:55:45 | 只看该作者
非常支持这个脚本,这样我的6个成就事件就可以放在公共事件里面了,放在地图上有点卡(人物移动的有一点慢,我地图上只有7个事件)
签名被我吃了
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

6
发表于 2012-10-12 12:18:39 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-5 19:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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