Project1

标题: 面向事件党的脚本:独立公共事件执行器 [打印本页]

作者: 九夜神尊    时间: 2012-8-15 22:22
标题: 面向事件党的脚本:独立公共事件执行器
本帖最后由 九夜神尊 于 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]

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

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

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

作者: 菜鸟飞呀飞    时间: 2012-8-16 02:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: 九夜神尊    时间: 2012-8-16 10:57
本帖最后由 九夜神尊 于 2012-8-16 10:58 编辑
菜鸟飞呀飞 发表于 2012-8-16 02:45
不错,同做口袋的支持下。说下感想,这样的话一个公共事件要有上百个分歧才能满足众精灵进化条件。而每次都 ...


我这实例是应用之一,面向事件的东西,就会吧效率靠后放。此外其实事件上ID分歧是可以优化的。
比方说有100个角色需要分歧。
则先分歧ID比较50,
如果小于50,则分歧比较25,
如果小于25,则分歧比较13
……
但是因为其实效率上来说没人在意,所以也没什么人去做这种优化。

作者: 姬文翔    时间: 2012-8-16 23:31
这个居然也能造福大众。支持!幸好我的公共事件里暂时还没出现什么猥琐的名字…偷笑。 那个不懂使用脚本的苦逼就是偶啦……
作者: 1032103505    时间: 2012-10-12 11:55
非常支持这个脚本,这样我的6个成就事件就可以放在公共事件里面了,放在地图上有点卡(人物移动的有一点慢,我地图上只有7个事件)
作者: 晴兰    时间: 2012-10-12 12:18
提示: 作者被禁止或删除 内容自动屏蔽




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