Project1

标题: 【VA】场所移动后保存事件位置 [打印本页]

作者: feizhaodan    时间: 2012-5-2 12:38
标题: 【VA】场所移动后保存事件位置
本帖最后由 feizhaodan 于 2015-7-31 15:43 编辑
  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 !INVERSE_MARK unless @list
  15.     return !INVERSE_MARK 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.set_direction(@event_pos[@map_id][i][2])
  67.     }
  68.   end
  69. end
复制代码
默认每次更换地图都会刷新事件位置。这个脚本让游戏保存事件位置,下次切换到这个地图时移动事件到上次所在的位置。

使用方法:直接插入到Main上方即可
       2012/6/11
           在不想保存事件位置时,在不想保存的事件页的第一行添加注释,内容要包含“不保存事件位置”
       2012/8/10
            修正在第一行添加内含“不保存事件位置”的注释的效果反了的傻逼错误
       2014/2/11
            增加只保存指定事件的功能。将INVERSE_MARK改为true时只保存被标记上"不保存事件位置"的事件的位置
            增加保存事件朝向
       2014/7/27
            修正不会正确设置事件朝向的问题,感谢DeathKing的提醒。
       2015/7/31
            修正在反向模式时未被标记的事件还是会被保存
作者: 洛迪基尔    时间: 2012-5-3 16:22
我说这不是解决提问区新帖的问题~~脚本么?
大叔这行动也太——快了吧!(一没注意,你老人家就写出了)
佩服!ORZ请受我一拜!
那我也顺便收走了!
作者: alann    时间: 2012-6-10 01:00
本帖最后由 alann 于 2012-6-12 09:43 编辑




更新后需要保存位置的事件出现错误,是我的脚本冲突?


‘‘──alann于2012-6-12 09:42补充以下内容:

无论是这样……

还是那样……


都会保存事件位置……
’’
作者: 896409879    时间: 2012-10-22 08:45
感激不尽,有了这个脚本,就不用额外用事件保留家园系统中家居的位置了
作者: 冰鎮史萊姆    时间: 2012-10-29 23:05
VA VX XP 通用的???
作者: 魔潘安    时间: 2013-1-29 02:50
作者您好~
我非常喜歡這個腳本
但我實用後發現
它沒有儲存"角色面向"的功能
(被事件更改過的面向,讀取後變回原來事件的面向)
是否可以請作者加上這個功能呢?
作者: stevenrock    时间: 2013-1-29 23:55
是不是通用的呢?
作者: xingmot    时间: 2014-1-28 17:07
一直在纠结要不要用,因为我想要的刚好相反,在想要保存位置的事件里写上“保存事件位置”保存该多好...
作者: K先生的猫    时间: 2015-7-30 20:38
现在还能问嘛?我建了两个时间进行测试,一个写了注释“不保存事件位置”,一个没写注释,然而测试结果是两个都被保存了进度啊_(:з」∠)_求解
作者: acv255    时间: 2015-8-4 22:52
它能实现重进地图时跟离开时完全没变化的效果吗?时间流逝呢
作者: panzeyu199464    时间: 2015-8-23 15:07
能不能设置为行走图与行走图也保存呢?每次切换地图再回来,人物行走图和速度又复位成原状了。
作者: 蝉岭Cicada    时间: 2015-8-23 23:11
本帖最后由 蝉岭Cicada 于 2015-8-23 23:59 编辑

XP好像没有set_direction方法。。。
可以弄个吗?
作者: sq333333    时间: 2016-10-16 09:37
这下方便多了   感谢大神




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