|
|
发表于 2026-8-16 17:30:52
|
显示全部楼层
本帖最后由 无忧谷主幻 于 2026-8-16 17:34 编辑
纯事件就能做
Project2.zip
(206.86 KB, 下载次数: 2)
当然,切换地图后会导致事件复位,如果你不想让踩的东西复位,可以再加一个能够记忆事件位置的脚本
[pre lang="ruby"]#==============================================================================
# ■ Game_Event
#------------------------------------------------------------------------------
# 处理事件的类。拥有条件判断、事件页的切换、并行处理、执行事件等功能。
# 在 Game_Map 类的内部使用。
#==============================================================================
class Game_Event < Game_Character
# 改为true将会变成保存被标记为不保存的事件
INVERSE_MARK = false
#--------------------------------------------------------------------------
# ● 是否储存位置
#--------------------------------------------------------------------------
def save_pos?
return true unless @list
return true 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.direction = @event_pos[@map_id][2]
}
end
end[/pre] |
评分
-
查看全部评分
|