Project1

标题: 求关于保留事件位置脚本的问题 [打印本页]

作者: 无忧谷主幻    时间: 2016-10-29 02:40
标题: 求关于保留事件位置脚本的问题
虽然脚本已经找到了,但是一个房间进去后再出来就变成这样了

请问有没有只指定一个地图的事件或某一事件可以保存事件位置(支持读档)
目前的脚本

作者: yang1zhi    时间: 2016-10-29 12:23
  1. #==============================================================================
  2. # ■ Game_Event
  3. #------------------------------------------------------------------------------
  4. #  处理事件的类。拥有条件判断、事件页的切换、并行处理、执行事件等功能。
  5. #   在 Game_Map 类的内部使用。
  6. #==============================================================================

  7. class Game_Event < Game_Character
  8.   # 改为true将会变成保存被标记为不保存的事件
  9.   INVERSE_MARK = false
  10.   #--------------------------------------------------------------------------
  11.   # ● 是否储存位置
  12.   #--------------------------------------------------------------------------
  13.   def save_pos?
  14.     return true unless @list
  15.     return true if @list[0].code != 108
  16.     return (@list[0].parameters[0].include?("不保存事件位置") == INVERSE_MARK)
  17.   end
  18. end
  19. #==============================================================================
  20. # ■ Game_Map
  21. #------------------------------------------------------------------------------
  22. #  管理地图的类。拥有卷动地图以及判断通行度的功能。
  23. #   本类的实例请参考 $game_map 。
  24. #==============================================================================

  25. class Game_Map
  26.   #--------------------------------------------------------------------------
  27.   # ● 初始化对象
  28.   #--------------------------------------------------------------------------
  29.   alias save_event_pos_initialize initialize
  30.   def initialize
  31.     save_event_pos_initialize
  32.     @event_pos = {}
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 设置
  36.   #--------------------------------------------------------------------------
  37.   alias save_event_pos_setup setup
  38.   def setup(map_id)
  39.     save_event_pos
  40.     save_event_pos_setup(map_id)
  41.     load_event_pos
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 保存事件位置
  45.   #--------------------------------------------------------------------------
  46.   def save_event_pos
  47.     return if @map_id == 0
  48.     @event_pos[@map_id] ||= []
  49.     @events.each{|i,e|
  50.     if e.save_pos?
  51.       @event_pos[@map_id][i] = [e.x,e.y,e.direction]
  52.     else
  53.       @event_pos[@map_id][i] = nil
  54.     end
  55.     }
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● 读取事件位置
  59.   #--------------------------------------------------------------------------
  60.   def load_event_pos
  61.     return if @map_id == 0
  62.     @event_pos[@map_id] ||= []
  63.     @events.each{|i,e|
  64.       next unless @event_pos[@map_id][i]
  65.       e.moveto(@event_pos[@map_id][i][0],@event_pos[@map_id][i][1])
  66.       e.direction = @event_pos[@map_id][i][2]
  67.     }
  68.   end
  69. end
复制代码

作者: 无忧谷主幻    时间: 2016-10-30 17:00
yang1zhi 发表于 2016-10-29 12:23

我是这么设置的,结果…



作者: yang1zhi    时间: 2016-10-30 20:12
无忧谷主幻 发表于 2016-10-30 17:00
我是这么设置的,结果…

需要把  attr_reader   :direction   
改成
  attr_accessor   :direction           
不过这样说是有安全隐患。
还有就是那个注释要放在第一个位置。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1