| 
 
| 赞 | 2 |  
| VIP | 333 |  
| 好人卡 | 91 |  
| 积分 | 2 |  
| 经验 | 55775 |  
| 最后登录 | 2017-7-18 |  
| 在线时间 | 2070 小时 |  
 Lv1.梦旅人 Mr.Gandum 
	梦石0 星屑226 在线时间2070 小时注册时间2007-1-31帖子3039 
 | 
| 
本帖最后由 feizhaodan 于 2015-7-31 15:43 编辑
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  
 默认每次更换地图都会刷新事件位置。这个脚本让游戏保存事件位置,下次切换到这个地图时移动事件到上次所在的位置。复制代码#==============================================================================
# ■ Game_Event
#------------------------------------------------------------------------------
#  处理事件的类。拥有条件判断、事件页的切换、并行处理、执行事件等功能。
#   在 Game_Map 类的内部使用。
#==============================================================================
class Game_Event < Game_Character
  # 改为true将会变成保存被标记为不保存的事件
  INVERSE_MARK = false
  #--------------------------------------------------------------------------
  # ● 是否储存位置
  #--------------------------------------------------------------------------
  def save_pos?
    return !INVERSE_MARK unless @list
    return !INVERSE_MARK if @list[0].code != 108
    return (@list[0].parameters[0].include?("不保存事件位置") == INVERSE_MARK)
  end
end
#==============================================================================
# ■ Game_Map
#------------------------------------------------------------------------------
#  管理地图的类。拥有卷动地图以及判断通行度的功能。
#   本类的实例请参考 $game_map 。
#==============================================================================
class Game_Map
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  alias save_event_pos_initialize initialize
  def initialize
    save_event_pos_initialize
    @event_pos = {}
  end
  #--------------------------------------------------------------------------
  # ● 设置
  #--------------------------------------------------------------------------
  alias save_event_pos_setup setup
  def setup(map_id)
    save_event_pos
    save_event_pos_setup(map_id)
    load_event_pos
  end
  #--------------------------------------------------------------------------
  # ● 保存事件位置
  #--------------------------------------------------------------------------
  def save_event_pos
    return if @map_id == 0
    @event_pos[@map_id] ||= []
    @events.each{|i,e|
    if e.save_pos?
      @event_pos[@map_id][i] = [e.x,e.y,e.direction]
    else
      @event_pos[@map_id][i] = nil
    end
    }
  end
  #--------------------------------------------------------------------------
  # ● 读取事件位置
  #--------------------------------------------------------------------------
  def load_event_pos
    return if @map_id == 0
    @event_pos[@map_id] ||= []
    @events.each{|i,e|
      next unless @event_pos[@map_id][i]
      e.moveto(@event_pos[@map_id][i][0],@event_pos[@map_id][i][1])
      e.set_direction(@event_pos[@map_id][i][2])
    }
  end
end
 使用方法:直接插入到Main上方即可
 2012/6/11
 在不想保存事件位置时,在不想保存的事件页的第一行添加注释,内容要包含“不保存事件位置”
 2012/8/10
 修正在第一行添加内含“不保存事件位置”的注释的效果反了的傻逼错误
 2014/2/11
 增加只保存指定事件的功能。将INVERSE_MARK改为true时只保存被标记上"不保存事件位置"的事件的位置
 增加保存事件朝向
 2014/7/27
 修正不会正确设置事件朝向的问题,感谢DeathKing的提醒。
 2015/7/31
 修正在反向模式时未被标记的事件还是会被保存
 | 
 评分
查看全部评分
 |