赞 | 27 |
VIP | 400 |
好人卡 | 13 |
积分 | 17 |
经验 | 69730 |
最后登录 | 2023-6-12 |
在线时间 | 3038 小时 |
Lv3.寻梦者 (暗夜天使) 精灵族の天使
- 梦石
- 0
- 星屑
- 1697
- 在线时间
- 3038 小时
- 注册时间
- 2007-3-16
- 帖子
- 33731
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 精灵使者 于 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
复制代码 |
|