赞 | 391 |
VIP | 0 |
好人卡 | 11 |
积分 | 380 |
经验 | 242285 |
最后登录 | 2024-5-23 |
在线时间 | 5492 小时 |
Lv5.捕梦者
- 梦石
- 0
- 星屑
- 37972
- 在线时间
- 5492 小时
- 注册时间
- 2006-11-10
- 帖子
- 6557
|
本帖最后由 灯笼菜刀王 于 2022-11-23 11:26 编辑
一般来说4个是够用的, 我16年XP使用生涯, 同时使用3个独立开关的情况都没几次,笑
如果你非要扩展也不是不行
- class Game_Switches
- #在这里设置id对应的开关名称,注意名称要加双引号,格式: id=>"名称"
- LIST = {1=>"E",2=>"F"}
-
- #下面不要动--------------------------------
- alias old []
- def [](id)
- a = $game_map.map_id
- b = $game_system.map_interpreter.instance_variable_get(:@event_id)
- return $game_self_switches[[a,b,LIST[id]]] if LIST.keys.include?(id)
- old(id)
- end
-
- alias old2 []=
- def []=(id,val)
- if LIST.keys.include?(id)
- a = $game_map.map_id
- b = $game_system.map_interpreter.instance_variable_get(:@event_id)
- $game_self_switches[[a,b,LIST[id]]] = val
- else
- old(id,val)
- end
- end
-
- def event_page_swi(event_id,id)
- return false if !LIST.keys.include?(id)
- return $game_self_switches[[$game_map.map_id,event_id,LIST[id]]]
- end
- end
- class Game_Event < Game_Character
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- # 初始化本地变量 new_page
- new_page = nil
- # 无法暂时消失的情况下
- unless @erased
- # 从编号大的事件页按顺序调查
- for page in @event.pages.reverse
- # 可以参考事件条件 c
- c = page.condition
- # 确认开关条件 1
- if c.switch1_valid
- next if !$game_switches.event_page_swi(@id,c.switch1_id)
- end
- # 确认开关条件 2
- if c.switch2_valid
- next if !$game_switches.event_page_swi(@id,c.switch2_id)
- end
- # 确认变量条件
- if c.variable_valid
- if $game_variables[c.variable_id] < c.variable_value
- next
- end
- end
- # 确认独立开关条件
- if c.self_switch_valid
- key = [@map_id, @event.id, c.self_switch_ch]
- if $game_self_switches[key] != true
- next
- end
- end
- # 设置本地变量 new_page
- new_page = page
- # 跳出循环
- break
- end
- end
- # 与上次同一事件页的情况下
- if new_page == @page
- # 过程结束
- return
- end
- # @page 设置为现在的事件页
- @page = new_page
- # 清除启动中标志
- clear_starting
- # 没有满足条件的页面的时候
- if @page == nil
- # 设置各实例变量
- @tile_id = 0
- @character_name = ""
- @character_hue = 0
- @move_type = 0
- @through = true
- @trigger = nil
- @list = nil
- @interpreter = nil
- # 过程结束
- return
- end
- # 设置各实例变量
- @tile_id = @page.graphic.tile_id
- @character_name = @page.graphic.character_name
- @character_hue = @page.graphic.character_hue
- if @original_direction != @page.graphic.direction
- @direction = @page.graphic.direction
- @original_direction = @direction
- @prelock_direction = 0
- end
- if @original_pattern != @page.graphic.pattern
- @pattern = @page.graphic.pattern
- @original_pattern = @pattern
- end
- @opacity = @page.graphic.opacity
- @blend_type = @page.graphic.blend_type
- @move_type = @page.move_type
- @move_speed = @page.move_speed
- @move_frequency = @page.move_frequency
- @move_route = @page.move_route
- @move_route_index = 0
- @move_route_forcing = false
- @walk_anime = @page.walk_anime
- @step_anime = @page.step_anime
- @direction_fix = @page.direction_fix
- @through = @page.through
- @always_on_top = @page.always_on_top
- @trigger = @page.trigger
- @list = @page.list
- @interpreter = nil
- # 目标是 [并行处理] 的情况下
- if @trigger == 4
- # 生成并行处理用解释器
- @interpreter = Interpreter.new
- end
- # 自动事件启动判定
- check_event_trigger_auto
- end
- end
复制代码
把这个脚本塞到 main 这个脚本之上
设置方法, 在第三行的哈希表里设置开关对应关系, 比如 1号开关对应E 就在表里写上 1=>"E" 注意E要加英文标点的双引号, 你可以无限加,不限英文字母, 每个项目之间用英文逗号隔开,要换行就从逗号处换行
设置好后, 你就可以把对应id的开关当独立开关用了, 比如要打开某事件的独立开关E, 那就在该事件里把1号开关打开即可, 注意, 此时1号开关是对应到每个事件的哦, 你在1号事件打开1号开关是影响不了2号事件的 |
评分
-
查看全部评分
|