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