Project1
标题:
【不是创意的创意】【通用】解决公共事件引起的地图拖沓
[打印本页]
作者:
精灵使者
时间:
2011-7-16 09:49
标题:
【不是创意的创意】【通用】解决公共事件引起的地图拖沓
本帖最后由 精灵使者 于 2015-11-13 11:59 编辑
来源:
https://rpg.blue/forum.php?mod=viewthread&tid=31794
by Sailcat 两行脚本解决公共事件的地图拖沓
原理:
在地图中,每帧都会把所有的事件和公共事件刷新一次
但是对于公共事件来说,当其不执行时,只刷新条件
如果把那些永远也不会主动执行到的公共事件去掉,就会减少很多刷新
因为相信大家在做游戏的时候,不主动执行的公共事件是绝大多数
(有的时候只是因为一些多个场合都要调用的公用的功能,写在了公共事件里)
优化的目标是,在地图装载的时候,那些trigger为0的公共事件——即执行条件为“无”的公共事件,不会被装载到地图里,从而在刷新的时候也不会被列入刷新名单。
然后让我们来大量的编写王道的公共事件吧:)
====================================
精灵特意的写了VX版,和XP版一起,而且加入了脚本判断(感谢忧雪君)。
更新日志:
2011年7月16日 发布原始版本v1.0
脚本如下:
#----------------------------------------------------------------------------
#
# 解决公共事件引起的地图拖沓 v 1.0(XP&VX)
# 感谢忧雪君提供的版本判断
#
#----------------------------------------------------------------------------
OS_VER = self ? :rv : :rx
class Game_Map
if OS_VER == :rv
#--------------------------------------------------------------------------
# ● 设置事件
#--------------------------------------------------------------------------
def setup_events
@events = {} # 地图事件
for i in @map.events.keys
@events[i] = Game_Event.new(@map_id, @map.events[i])
end
#########################################################################
@common_events = {} # 公共事件
for i in 1...$data_common_events.size
unless $data_common_events[i].trigger == 0
@common_events[i] = Game_CommonEvent.new(i)
end
end
#########################################################################
end
elsif OS_VER == :rx
#--------------------------------------------------------------------------
# ● 设置
# map_id : 地图 ID
#--------------------------------------------------------------------------
def setup(map_id)
# 地图 ID 记录到 @map_id
@map_id = map_id
# 地图文件装载后、设置到 @map
@map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
# 定义实例变量设置地图元件信息
tileset = $data_tilesets[@map.tileset_id]
@tileset_name = tileset.tileset_name
@autotile_names = tileset.autotile_names
@panorama_name = tileset.panorama_name
@panorama_hue = tileset.panorama_hue
@fog_name = tileset.fog_name
@fog_hue = tileset.fog_hue
@fog_opacity = tileset.fog_opacity
@fog_blend_type = tileset.fog_blend_type
@fog_zoom = tileset.fog_zoom
@fog_sx = tileset.fog_sx
@fog_sy = tileset.fog_sy
@battleback_name = tileset.battleback_name
@passages = tileset.passages
@priorities = tileset.priorities
@terrain_tags = tileset.terrain_tags
# 初始化显示坐标
@display_x = 0
@display_y = 0
# 清除刷新要求标志
@need_refresh = false
# 设置地图事件数据
@events = {}
for i in @map.events.keys
@events[i] = Game_Event.new(@map_id, @map.events[i])
end
##############################################################
# 设置公共事件数据
@common_events = {}
for i in 1...$data_common_events.size
unless $data_common_events[i].trigger == 0
@common_events[i] = Game_CommonEvent.new(i)
end
end
##############################################################
# 初始化雾的各种信息
@fog_ox = 0
@fog_oy = 0
@fog_tone = Tone.new(0, 0, 0, 0)
@fog_tone_target = Tone.new(0, 0, 0, 0)
@fog_tone_duration = 0
@fog_opacity_duration = 0
@fog_opacity_target = 0
# 初始化滚动信息
@scroll_direction = 2
@scroll_rest = 0
@scroll_speed = 4
end
end
end
复制代码
作者:
yangff
时间:
2011-7-16 14:36
其实没效果的恶
作者:
逸豫
时间:
2011-7-17 09:51
t = Time.new
100000.times{if 1<2
end}
print Time.new - t #=>0.125
复制代码
作者:
精灵使者
时间:
2012-2-3 15:07
经测试,VA会自动过滤不需要运行的公共事件,因此不需要加入此脚本。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1