[fold=已解决——]
[pre lang="ruby"]# 会刷新的事件的名称中,加上“[刷怪]”
# 触发事件后,用打开独立开关D使其消失
# $game_self_switches.refresh_enemy 在篝火处使用这个指令,能把带“[刷怪]”的事件的独立开关D全部关闭
class Interpreter
def command_123
if @event_id > 0
# 判断执行独立开关时,选的是不是ON
a = (@parameters[1] == 0)
# 如果打开独立开关D;且时间名称含有“[刷怪]” ; a = “ref”
if a and @parameters[0] == "D" and $game_map.events[
@event_id].instance_variable_get(:@event).name.include?("[刷怪]")
a = "ref"
end
# 正常的独立开关操作↓
key = [$game_map.map_id, @event_id,@parameters[0]]
# 如果不符合上面条件,就是普通的独立开关操作;如果满足,则这个变量值会变成“ref”
$game_self_switches[key] = a
end
$game_map.need_refresh = true
return true
end
end
class Game_SelfSwitches
# 这里是基于独立开关定义类的修改
# 获取独立开关(跟原版一样)
def [](key)
return @data[key] ? true : false
end
# 定义做篝火的方法,删除含有“ref”的开关
def refresh_enemy
@data.delete_if{|a,b|b=="ref"}
$game_map.need_refresh = true
end
end[/pre][/fold]
[fold=修正后的代码(顶楼工程文件已经更新)][pre lang="ruby"]# 会刷新的事件的名称中,加上“[刷怪]”
# 触发事件后,用打开独立开关D使其消失
# $game_self_switches.refresh_enemy 在篝火处使用这个指令,能把带“[刷怪]”的事件的独立开关D全部关闭
class Interpreter
def command_123
if @event_id > 0
# 判断执行独立开关时,选的是不是ON
a = (@parameters[1] == 0)
# 如果打开独立开关D;且时间名称含有“[刷怪]” ; a = “ref”
if a and @parameters[0] == "D" and $game_map.events[
@event_id].instance_variable_get(:@event).name.include?("[刷怪]")
a = "ref"
end
# 正常的独立开关操作↓
key = [$game_map.map_id, @event_id,@parameters[0]]
# 如果不符合上面条件,就是普通的独立开关操作;如果满足,则这个变量值会变成“ref”
$game_self_switches[key] = a
end
$game_map.need_refresh = true
return true
end
end
class Game_SelfSwitches
# 这里是基于独立开关定义类的修改
# 获取独立开关(跟原版一样)
def [](key)
return @data[key] ? true : false
end
# 定义做篝火的方法,删除含有“ref”的开关
def refresh_enemy
@data.delete_if{|a,b|b=="ref"}
$game_map.need_refresh = true
end
end[/pre][/fold]