查看: 3487|回复: 2

[已经解决] 请问“设置事件位置”这个指令,每重进入地图时都还原?

[复制链接]
梦石
3
星屑
3410
在线时间
451 小时
注册时间
2015-9-20
回帖
168
发表于 2018-2-20 16:33:25 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
就是NPC我放在A处,我和他对话后,用“设置事件位置”将NPC移动到B处,
这样每次再找这个NPC就要去B处啦。但是我离开这个地图后,再回来时,
NPC就又在A处啦!有没有什么方法可以使与NPC对话后,就一直留在B处。
还是说“设置事件位置”每次换地图都返回原位呢?有什么办法呢?
拜托大佬啊
梦石
0
星屑
3850
在线时间
925 小时
注册时间
2017-10-30
回帖
343
发表于 2018-2-20 16:43:26 | 显示全部楼层
本帖最后由 MireniamuYuki 于 2018-2-20 16:52 编辑

一个比较蠢的事件做法是设2个NPC,对话完后NPC的位置从A变为B,同时开关打开,第一个NPC消失第二个NPC显示
[pre lang="ruby"]    #==============================================================================
    # ■ 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] = [e.x,e.y,e.direction]
        else
          @event_pos[@map_id] = 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]
          e.moveto(@event_pos[@map_id][0],@event_pos[@map_id][1])
          e.set_direction(@event_pos[@map_id][2])
        }
      end
    end[/pre]
插入main之上,你懂的,原贴https://rpg.blue/forum.php?mod=v ... 6%E4%BD%8D%E7%BD%AE

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

点评

谢谢您的帮助,最后用了2个事件的方法。  发表于 2018-2-25 22:02

评分

参与人数 1星屑 +50 收起 理由
RaidenInfinity + 50 认可答案

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部