加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 九夜神尊 于 2012-8-15 22:29 编辑
一种把公共事件当做方法的创意,虽然早都有,但是知道的人不多。
再次发布,不过改成VA用的。#============================================================================== # ■ Game_Interpreter_Self #------------------------------------------------------------------------------ # 独立公共事件执行器 #============================================================================== =begin 独立公共事件执行器用于随时执行公共事件,不受公共事件调用地方的限制。 □使用方法: 1。将脚本插入main前。 2。在需要使用公共事件的地方 插入、 Game_Interpreter_Self.new(公共事件ID) □可能的冲突:无 =end class Game_Interpreter_Self < Game_Interpreter #-------------------------------------------------------------------------- # ● 初始化对像 # depth : 堆置深度 # main : 主标志 #-------------------------------------------------------------------------- def initialize(com_id) @com_id = com_id common_event = $data_common_events[@com_id] setup(common_event.list) update clear end #-------------------------------------------------------------------------- # ● 公共事件 #-------------------------------------------------------------------------- def command_117 common_event = $data_common_events[@params[0]] if common_event != nil @child_interpreter = Game_Interpreter_Self.new(@params[0]) # @child_interpreter.setup(common_event.list, @event_id) end return true end end
#==============================================================================
# ■ Game_Interpreter_Self
#------------------------------------------------------------------------------
# 独立公共事件执行器
#==============================================================================
=begin
独立公共事件执行器用于随时执行公共事件,不受公共事件调用地方的限制。
□使用方法:
1。将脚本插入main前。
2。在需要使用公共事件的地方
插入、
Game_Interpreter_Self.new(公共事件ID)
□可能的冲突:无
=end
class Game_Interpreter_Self < Game_Interpreter
#--------------------------------------------------------------------------
# ● 初始化对像
# depth : 堆置深度
# main : 主标志
#--------------------------------------------------------------------------
def initialize(com_id)
@com_id = com_id
common_event = $data_common_events[@com_id]
setup(common_event.list)
update
clear
end
#--------------------------------------------------------------------------
# ● 公共事件
#--------------------------------------------------------------------------
def command_117
common_event = $data_common_events[@params[0]]
if common_event != nil
@child_interpreter = Game_Interpreter_Self.new(@params[0])
# @child_interpreter.setup(common_event.list, @event_id)
end
return true
end
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]
这只是很小的很小的用法其中之一。
其实这脚本的作用也就是把公共事件插入方法里面。这样许多脚本在最初定义的时候可以借助公共事件完成一些复杂的定义。
公共事件在许多时候会比脚本方便的多。
|