Project1

标题: 请问“设置事件位置”这个指令,每重进入地图时都还原? [打印本页]

作者: 电车之熊    时间: 2018-2-20 16:33
标题: 请问“设置事件位置”这个指令,每重进入地图时都还原?
就是NPC我放在A处,我和他对话后,用“设置事件位置”将NPC移动到B处,
这样每次再找这个NPC就要去B处啦。但是我离开这个地图后,再回来时,
NPC就又在A处啦!有没有什么方法可以使与NPC对话后,就一直留在B处。
还是说“设置事件位置”每次换地图都返回原位呢?有什么办法呢?
拜托大佬啊
作者: MireniamuYuki    时间: 2018-2-20 16:43
本帖最后由 MireniamuYuki 于 2018-2-20 16:52 编辑

一个比较蠢的事件做法是设2个NPC,对话完后NPC的位置从A变为B,同时开关打开,第一个NPC消失第二个NPC显示
RUBY 代码复制
  1. #==============================================================================
  2.     # ■ Game_Event
  3.     #------------------------------------------------------------------------------
  4.     #  处理事件的类。拥有条件判断、事件页的切换、并行处理、执行事件等功能。
  5.     #   在 Game_Map 类的内部使用。
  6.     #==============================================================================
  7.  
  8.     class Game_Event < Game_Character
  9.       # 改为true将会变成保存被标记为不保存的事件
  10.       INVERSE_MARK = false
  11.       #--------------------------------------------------------------------------
  12.       # ● 是否储存位置
  13.       #--------------------------------------------------------------------------
  14.       def save_pos?
  15.         return !INVERSE_MARK unless @list
  16.         return !INVERSE_MARK if @list[0].code != 108
  17.         return (@list[0].parameters[0].include?("不保存事件位置") == INVERSE_MARK)
  18.       end
  19.     end
  20.     #==============================================================================
  21.     # ■ Game_Map
  22.     #------------------------------------------------------------------------------
  23.     #  管理地图的类。拥有卷动地图以及判断通行度的功能。
  24.     #   本类的实例请参考 $game_map 。
  25.     #==============================================================================
  26.  
  27.     class Game_Map
  28.       #--------------------------------------------------------------------------
  29.       # ● 初始化对象
  30.       #--------------------------------------------------------------------------
  31.       alias save_event_pos_initialize initialize
  32.       def initialize
  33.         save_event_pos_initialize
  34.         @event_pos = {}
  35.       end
  36.       #--------------------------------------------------------------------------
  37.       # ● 设置
  38.       #--------------------------------------------------------------------------
  39.       alias save_event_pos_setup setup
  40.       def setup(map_id)
  41.         save_event_pos
  42.         save_event_pos_setup(map_id)
  43.         load_event_pos
  44.       end
  45.       #--------------------------------------------------------------------------
  46.       # ● 保存事件位置
  47.       #--------------------------------------------------------------------------
  48.       def save_event_pos
  49.         return if @map_id == 0
  50.         @event_pos[@map_id] ||= []
  51.         @events.each{|i,e|
  52.         if e.save_pos?
  53.           @event_pos[@map_id][i] = [e.x,e.y,e.direction]
  54.         else
  55.           @event_pos[@map_id][i] = nil
  56.         end
  57.         }
  58.       end
  59.       #--------------------------------------------------------------------------
  60.       # ● 读取事件位置
  61.       #--------------------------------------------------------------------------
  62.       def load_event_pos
  63.         return if @map_id == 0
  64.         @event_pos[@map_id] ||= []
  65.         @events.each{|i,e|
  66.           next unless @event_pos[@map_id][i]
  67.           e.moveto(@event_pos[@map_id][i][0],@event_pos[@map_id][i][1])
  68.           e.set_direction(@event_pos[@map_id][i][2])
  69.         }
  70.       end
  71.     end

插入main之上,你懂的,原贴https://rpg.blue/forum.php?mod=v ... 6%E4%BD%8D%E7%BD%AE

搜索了一下,你不是也问过类似的问题吗,善用搜索总是好的。。。




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