灯笼菜刀王 发表于 2022-11-23 10:24 刚才用在事件里面,就出现这个了,是不是我用的不对,还是?(这个是用事件里面脚本吧,是需要命令激活是吧) 执行脚本时发生NomEthodError。 undefined method '独立开关' for#<interpreter:0xef2e328> |
情歌诀 发表于 2022-11-23 12:01 可以运行游戏,刚才少输了一小段,真是抱歉 |
情歌诀 发表于 2022-11-23 12:01 是完成复制的,没有少一个字,这里只是告诉你出现问题,才搞这么短,方便浏览 |
情歌诀 发表于 2022-11-23 11:51 不行,另外搞了,还是原地方出现语法错误 #下面不要动-------------------------------- 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 |
灯笼菜刀王 发表于 2022-11-23 10:24 #下面不要动-------------------------------- 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 |
灯笼菜刀王 发表于 2022-11-23 10:24 #============================================================================== # ■ Game_Switches #------------------------------------------------------------------------------ # 处理开关的类。编入的是类 Array 的外壳。本类的实例请参考 # $game_switches。 #============================================================================== class Game_Switches #-------------------------------------------------------------------------- # ● 初始化对像 #-------------------------------------------------------------------------- def initialize @data = [] end #-------------------------------------------------------------------------- # ● 获取开关 # switch_id : 开关 ID #-------------------------------------------------------------------------- def [](switch_id) if switch_id <= 5000 and @data[switch_id] != nil return @data[switch_id] else return false end end #-------------------------------------------------------------------------- # ● 设置开关 # switch_id : 开关 ID # value : ON (true) / OFF (false) #-------------------------------------------------------------------------- def []=(switch_id, value) if switch_id <= 5000 @data[switch_id] = value end end end #--------------------------------------------------------------------------- #独立开关设置扩展 # #在这里设置id对应的开关名称,注意名称要加双引号,格式: id=>"名称" #设置方法, 在第三行的哈希表里设置开关对应关系, #比如 1号开关对应E 就在表里写上 1=>"E" #注意E要加英文标点的双引号, 你可以无限加,不限英文字母, #每个项目之间用英文逗号隔开,要换行就从逗号处换行 #设置好后, 你就可以把对应id的开关当独立开关用了, #不过操作独立开关需要用脚本命令: 独立开关("E", 1) #这样即可把独立开关E打开(1为开,0为关), 注意这里的括号,双引号,逗号都要用英文标点 #--------------------------------------------------------------------------- CAD_LIST = {1=>"E",2=>"F",3=>"G"} #下面不要动-------------------------------- 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 但是游戏还是报错,无法运行游戏,照样是语法错误 |
情歌诀 发表于 2022-11-23 11:22 我试试,真的是麻烦你了 |
情歌诀 发表于 2022-11-23 10:39 出现错误了,我是现在不会ruby脚本 #--------------------------------------------------------------------------- #独立开关设置扩展 # #在这里设置id对应的开关名称,注意名称要加双引号,格式: id=>"名称" #设置方法, 在第三行的哈希表里设置开关对应关系, #比如 1号开关对应E 就在表里写上 1=>"E" #注意E要加英文标点的双引号, 你可以无限加,不限英文字母, #每个项目之间用英文逗号隔开,要换行就从逗号处换行 #设置好后, 你就可以把对应id的开关当独立开关用了, #不过操作独立开关需要用脚本命令: 独立开关("E", 1) #这样即可把独立开关E打开(1为开,0为关), 注意这里的括号,双引号,逗号都要用英文标点 #--------------------------------------------------------------------------- CAD_LIST = {1=>"E",2=>"F",3=>"G"} #下面不要动-------------------------------- 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,CAD_LIST[id]]] if CAD_LIST.keys.include?(id) old(id) end end class Interpreter def 独立开关(key,val) $game_self_switches[[$game_map.map_id,@event_id,key]] = (val == 1) end end 是这样设置了,但是显示语法错误提示,无法运行游戏。 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2025-2-20 11:59
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.