扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 131|回复: 0

[转载发布] 【原创】Scene_Debug加强版(Ver1.2)

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    昨天 18:01
  • 签到天数: 114 天

    连续签到: 4 天

    [LV.6]常住居民II

    2339

    主题

    404

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10635
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13406

    灌水之王

    发表于 2024-4-19 23:05:54 | 显示全部楼层 |阅读模式
    不知道有没有人发过类似的。系统自带的Scene_Debug的修改范围十分有限,仅仅是限制在开关/变量的操作上。而这个加强过的Scene_Debug可以实时修改更多的游戏对象,方便测试者对游戏进行测试。原理都是简单的,就是实现比较麻烦。

    有什么BUG或者更好的建议希望大家能向我提出。
    更新记录:
    Ver 1.1(2014.9.6): 添加了修改独立开关的功能。
    Ver 1.1(2014.9.7): 修复地图没有事件时出现的BUG
    Ver 1.2(2014.9.11):添加了直接执行代码的功能。

    几张预览图:





    脚本(URL请自行去掉):
    RUBY 代码
    1. #============================================================================
    2. # 调试画面加强版(Ver 1.2)  BY : RyanBern
    3. #----------------------------------------------------------------------------
    4. # 系统自带的Scene_Debug可以用于实时调试游戏中的各种对象,数据,但是功能方面
    5. # 过于单一,因此对Scene_Debug作了很多扩充。在这里你可以更改物品/武器/防具的
    6. # 持有数,修改金钱的值,以及角色和队伍的调整。
    7. # Ver 1.1更新:增加了独立开关的更改。
    8. # Ver 1.2更新:增加了脚本直接输入的功能。(其实是在不关闭游戏的条件下利用外
    9. #              部txt文档,手懒没做Text Area)
    10. # 以后我要想到什么会陆续往上加。
    11. #----------------------------------------------------------------------------
    12. # 用法和默认调试画面的一样,在游戏测试模式下按F9可以打开调试画面。
    13. # 如果要使用脚本直接输入功能的话,先进入这个选项,然后会自动在游戏根目录下生
    14. # 成一个叫Debug.txt的文档,输入你想执行的脚本即可。这个不同于事件解释器里面
    15. # 的“脚本”命令,例如不可以用@event_id表示当前事件ID等。如果输入了有错误的
    16. # 代码,为了游戏的稳定,不使用rescue来补救,而是报错之后退出,所以请输入正确
    17. # 的代码。
    18. #----------------------------------------------------------------------------
    19. # 脚本冲突方面,可能和独立装备系统,背包系统,人物仓库系统,多货币系统冲突。
    20. # 说得简单点就是这个调试系统对游戏数据的更改是根据默认系统的方式,如果有别的
    21. # 外挂脚本更改了游戏数据结构,那么这个调试系统就会失效。
    22. #============================================================================
    23. #============================================================================
    24. # Game_Temp
    25. #----------------------------------------------------------------------------
    26. # 追加属性
    27. #============================================================================
    28. class Game_Temp
    29.   attr_accessor :debug_command        # 调试画面 保存状态用
    30.   alias rb_initialize initialize
    31.   def initialize
    32.     rb_initialize
    33.     @debug_command = 0
    34.   end
    35. end
    36. #============================================================================
    37. # Window_DebugCommand
    38. #----------------------------------------------------------------------------
    39. # 调试画面的命令窗口(用于选取模式)
    40. #============================================================================
    41. class Window_DebugCommand < Window_Selectable
    42.   #--------------------------------------------------------------------------
    43.   # 初始化对象
    44.   #--------------------------------------------------------------------------
    45.   def initialize
    46.     super(0, 0, 160, 320)
    47.     self.index = 0
    48.     refresh
    49.   end
    50.   #--------------------------------------------------------------------------
    51.   # 刷新
    52.   #--------------------------------------------------------------------------
    53.   def refresh
    54.     ifself.contents != nil
    55.       self.contents.dispose
    56.       self.contents = nil
    57.     end
    58.     @item_max = 9
    59.     self.contents = Bitmap.new(width - 32, @item_max * 32)
    60.     self.contents.draw_text(4, 0, 120, 32, "开关")
    61.     self.contents.draw_text(4, 32, 120, 32, "变量")
    62.     self.contents.draw_text(4, 64, 120, 32, "物品")
    63.     self.contents.draw_text(4, 96, 120, 32, "武器")
    64.     self.contents.draw_text(4, 128, 120, 32, "防具")
    65.     self.contents.draw_text(4, 160, 120, 32, "金钱")
    66.     self.contents.draw_text(4, 192, 120, 32, "角色")
    67.     self.contents.draw_text(4, 224, 120, 32, "独立开关")
    68.     self.contents.draw_text(4, 256, 120, 32, "输入代码")
    69.   end
    70. end
    71. #==============================================================================
    72. # ■ Window_DebugLeft
    73. #------------------------------------------------------------------------------
    74. #  调试画面、指定开关及变量块的窗口。
    75. #==============================================================================
    76. class Window_DebugLeft < Window_Selectable
    77.   #--------------------------------------------------------------------------
    78.   # ● 初始化对像
    79.   #--------------------------------------------------------------------------
    80.   def initialize
    81.     super(160, 0, 192, 352)
    82.     self.active = false
    83.     self.index = -1
    84.     @mode = 0
    85.     @debug_actor_items = ["替换队员", "增减等级", "增减MaxHP", "增减MaxSP",
    86.       "增减力量", "增减灵巧", "增减速度", "增减魔力"]
    87.     refresh
    88.   end
    89.   def adjust_cursor
    90.     ifself.index > @item_max - 1
    91.       self.index = @item_max - 1
    92.     end
    93.   end
    94.   def mode=(mode)
    95.     if@mode != mode
    96.       @mode = mode
    97.       refresh
    98.     end
    99.   end
    100.   def real_max
    101.     case@mode
    102.     when0
    103.       return$data_system.switches.size - 1
    104.     when1
    105.       return$data_system.variables.size - 1
    106.     when2
    107.       return$data_items.size - 1
    108.     when3
    109.       return$data_weapons.size - 1
    110.     when4
    111.       return$data_armors.size - 1
    112.     when6
    113.       return@debug_actor_items.size
    114.     when7
    115.       return@map_info.nil? ? 1 : @map_info.keys.size
    116.     else
    117.       return1
    118.     end
    119.   end
    120.   #--------------------------------------------------------------------------
    121.   # ● 刷新
    122.   #--------------------------------------------------------------------------
    123.   def refresh
    124.     ifself.contents != nil
    125.       self.contents.dispose
    126.       self.contents = nil
    127.     end
    128.     case@mode
    129.     # Switches
    130.     when0
    131.       @item_max = ($data_system.switches.size - 1 + 9) / 10
    132.     # Variables
    133.     when1
    134.       @item_max = ($data_system.variables.size - 1 + 9) / 10
    135.     # Items
    136.     when2
    137.       @item_max = ($data_items.size - 1 + 9) / 10
    138.     # Weapons
    139.     when3
    140.       @item_max = ($data_weapons.size - 1 + 9) / 10
    141.     # Armors
    142.     when4
    143.       @item_max = ($data_armors.size - 1 + 9) / 10
    144.     # Actors
    145.     when6
    146.       @item_max = @debug_actor_items.size
    147.     # SelfSwitches
    148.     when7
    149.       if@map_info.nil?
    150.         @map_info = load_data("Data/MapInfos.rxdata")
    151.         @map_id_array = @map_info.keys.sort
    152.       end
    153.       @item_max = @map_info.keys.size
    154.     else
    155.       @item_max = 1
    156.     end
    157.     case@mode
    158.     when5
    159.       self.contents = Bitmap.new(width - 32, 32)
    160.       self.contents.draw_text(4, 0, width - 36, 32, "点击修改金钱")
    161.     when6
    162.       self.contents = Bitmap.new(width - 32, @item_max * 32)
    163.       @debug_actor_items.each_with_indexdo |item, i|
    164.         self.contents.draw_text(4, i*32, width - 36, 32, item)
    165.       end
    166.     when7
    167.       self.contents = Bitmap.new(width - 32, @item_max * 32)
    168.       @map_id_array.each_with_indexdo |id, i|
    169.         name = @map_info[id].name
    170.         text = sprintf("%03d:%s", id, name)
    171.         self.contents.draw_text(4, i*32, width - 36, 32, text)
    172.       end
    173.     when8
    174.       self.contents = Bitmap.new(width - 32, 32)
    175.       self.contents.draw_text(4, 0, width - 36, 32, "点击执行代码")
    176.     else
    177.       self.contents = Bitmap.new(width - 32, @item_max * 32)
    178.       (0...@item_max).eachdo |i|
    179.         text = sprintf("%s [%04d-%04d]", ["S","V","I","W","A"][@mode], i*10+1, [i*10+10,real_max].min)
    180.         self.contents.draw_text(4, i*32, width - 36, 32, text)
    181.       end
    182.     end
    183.   end
    184.   #--------------------------------------------------------------------------
    185.   # ● 获取模式
    186.   #--------------------------------------------------------------------------
    187.   def mode
    188.     @mode
    189.   end
    190.   #--------------------------------------------------------------------------
    191.   # ● 获取开头显示的 ID
    192.   #--------------------------------------------------------------------------
    193.   def top_id
    194.     returnself.index * 10 + 1
    195.   end
    196.   #--------------------------------------------------------------------------
    197.   # 获取地图 ID (在模式为7[独立开关]的情况下有效)
    198.   #--------------------------------------------------------------------------
    199.   def map_id
    200.     return@mode == 7 ? @map_id_array[self.index] : 0
    201.   end
    202. end
    203. #==============================================================================
    204. # ■ Window_DebugRight
    205. #------------------------------------------------------------------------------
    206. #  调试画面、个别显示开关及变量的窗口。
    207. #==============================================================================
    208. class Window_DebugRight < Window_Selectable
    209.   #--------------------------------------------------------------------------
    210.   # ● 定义实例变量
    211.   #--------------------------------------------------------------------------
    212.   attr_reader   :mode                     # 模式
    213.   attr_reader   :sub_mode                 # 子模式(角色用)
    214.   attr_reader   :top_id                   # 开头显示的 ID
    215.   #--------------------------------------------------------------------------
    216.   # ● 初始化对像
    217.   #--------------------------------------------------------------------------
    218.   def initialize
    219.     super(160+192, 0, 448-160, 352)
    220.     self.index = -1
    221.     self.active = false
    222.     @item_max = 10
    223.     @mode = 0
    224.     @sub_mode = -1
    225.     @map_id = 0
    226.     @map = nil
    227.     @top_id = 1
    228.     refresh
    229.   end
    230.   #--------------------------------------------------------------------------
    231.   # 获取实际显示最大项目数
    232.   # (这个方法是为了解决越界BUG)
    233.   #--------------------------------------------------------------------------
    234.   def real_max
    235.     case@mode
    236.     when0
    237.       return$data_system.switches.size - 1
    238.     when1
    239.       return$data_system.variables.size - 1
    240.     when2
    241.       return$data_items.size - 1
    242.     when3
    243.       return$data_weapons.size - 1
    244.     when4
    245.       return$data_armors.size - 1
    246.     when6
    247.       return$data_actors.size - 1
    248.     when7
    249.       return@map.nil? ? 1 : 4 * @map.events.keys.size
    250.     when8
    251.       return3
    252.     else
    253.       return1
    254.     end
    255.   end
    256.   #--------------------------------------------------------------------------
    257.   # 模式为7[独立开关]的条件下,获取当前开关的主键
    258.   #--------------------------------------------------------------------------
    259.   def key
    260.     return[]if@mode != 7 || @item_max == 0
    261.     event_id = @event_id_array[self.index / 4]
    262.     tag = ['A', 'B', 'C', 'D'][self.index % 4]
    263.     return[@map_id, event_id, tag]
    264.   end
    265.   #--------------------------------------------------------------------------
    266.   # ● 刷新
    267.   #--------------------------------------------------------------------------
    268.   def refresh(need_reload_map = false)
    269.     ifself.contents != nil
    270.       self.contents.dispose
    271.       self.contents = nil
    272.     end
    273.     if@mode == 7
    274.       if@map.nil? || need_reload_map
    275.         @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
    276.         @event_id_array = @map.events.keys.sort
    277.       end
    278.     end
    279.     @item_max = [6,7,8].include?(@mode) ? real_max : [1 + real_max - @top_id, 10].min
    280.     returnif@item_max == 0
    281.     self.contents = Bitmap.new(width - 32, @item_max * 32)
    282.     (0...@item_max).eachdo |i|
    283.       case@mode
    284.       when0
    285.         name = $data_system.switches[@top_id+i]
    286.         status = $game_switches[@top_id+i] ? "[ON]" : "[OFF]"
    287.       when1
    288.         name = $data_system.variables[@top_id+i]
    289.         status = $game_variables[@top_id+i].to_s
    290.       when2
    291.         name = $data_items[@top_id+i].name
    292.         status = $game_party.item_number(@top_id+i).to_s
    293.       when3
    294.         name = $data_weapons[@top_id+i].name
    295.         status = $game_party.weapon_number(@top_id+i).to_s
    296.       when4
    297.         name = $data_armors[@top_id+i].name
    298.         status = $game_party.armor_number(@top_id+i).to_s
    299.       when5
    300.         name = "金钱"
    301.         status = $game_party.gold.to_s
    302.       when6
    303.         actor = $game_actors[i+1]
    304.         name = actor.name
    305.         case@sub_mode
    306.         when0
    307.           status = $game_party.actors.include?(actor) ? "[IN]" : "[OUT]"
    308.         when1
    309.           status = actor.level.to_s
    310.         when2
    311.           status = actor.maxhp.to_s
    312.         when3
    313.           status = actor.maxsp.to_s
    314.         when4
    315.           status = actor.str.to_s
    316.         when5
    317.           status = actor.dex.to_s
    318.         when6
    319.           status = actor.agi.to_s
    320.         when7
    321.           status = actor.int.to_s
    322.         else
    323.           status = ""
    324.         end
    325.       when7
    326.         event_id = @event_id_array[i/4]
    327.         event = @map.events[event_id]
    328.         tag = ['A', 'B', 'C', 'D'][i%4]
    329.         name = event.name + " : " + tag
    330.         status = $game_self_switches[[@map_id, event_id, tag]] ? "[ON]" : "[OFF]"
    331.       else
    332.         name = ''
    333.         status = ''
    334.       end
    335.       if name == nil
    336.         name = ''
    337.       end
    338.       if@mode == 5
    339.         self.contents.draw_text(4, 0, width - 36, 32, name)
    340.         self.contents.draw_text(0 ,0, width - 32, 32, status, 2)
    341.         return
    342.       end
    343.       if@mode == 8
    344.         texts = []
    345.         texts[0] = "在游戏根目录下的"
    346.         texts[1] = "Debug.txt文件内键入"
    347.         texts[2] = "代码,点击确认键执行"
    348.         texts.each_with_indexdo |s, i|
    349.           self.contents.draw_text(4, 32 * i, width - 36, 32, s)
    350.         end
    351.         return
    352.       end
    353.       if@mode == 7
    354.         self.contents.draw_text(4, i * 32, 204, 32, name)
    355.         self.contents.draw_text(208, i * 32, 48, 32, status, 2)
    356.         next
    357.       end
    358.       id_text = sprintf("%04d:", @mode == 6 ? 1+i : @top_id+i)
    359.       self.contents.draw_text(4, i * 32, 60, 32, id_text)
    360.       self.contents.draw_text(60, i * 32, 148, 32, name)
    361.       self.contents.draw_text(208, i * 32, 48, 32, status, 2)
    362.     end
    363.   end
    364.   #--------------------------------------------------------------------------
    365.   # 设置子模式(在主模式为6[角色]的时候有效)
    366.   #   sub_mode : 新的子模式
    367.   #--------------------------------------------------------------------------
    368.   def sub_mode=(sub_mode)
    369.     if@sub_mode != sub_mode
    370.       @sub_mode = sub_mode
    371.       refresh
    372.     end
    373.   end
    374.   #--------------------------------------------------------------------------
    375.   # 设置要显示的地图(在主模式为7[独立开关]的时候有效)
    376.   #   map_id : 新的地图 ID
    377.   #--------------------------------------------------------------------------
    378.   def map_id=(map_id)
    379.     if@map_id != (map_id)
    380.       @map_id = map_id
    381.       refresh(true)
    382.     end
    383.   end
    384.   #--------------------------------------------------------------------------
    385.   # ● 设置模式
    386.   #     mode : 新的模式
    387.   #--------------------------------------------------------------------------
    388.   def mode=(mode)
    389.     if@mode != mode
    390.       @mode = mode
    391.       refresh if@mode != 7
    392.     end
    393.   end
    394.   #--------------------------------------------------------------------------
    395.   # ● 设置开头显示的 ID
    396.   #     id : 新的 ID
    397.   #--------------------------------------------------------------------------
    398.   def top_id=(id)
    399.     if@top_id != id
    400.       @top_id = id
    401.       refresh
    402.     end
    403.   end
    404. end
    405. #==============================================================================
    406. # ■ Scene_Debug
    407. #------------------------------------------------------------------------------
    408. #  处理调试画面的类。
    409. #==============================================================================
    410. class Scene_Debug
    411.   #--------------------------------------------------------------------------
    412.   # ● 主处理
    413.   #--------------------------------------------------------------------------
    414.   def main
    415.     # 生成窗口
    416.     @command_window = Window_DebugCommand.new
    417.     @left_window = Window_DebugLeft.new
    418.     @right_window = Window_DebugRight.new
    419.     @help_window = Window_Base.new(160, 352, 480, 128)
    420.     @help_window.contents = Bitmap.new(448, 96)
    421.     # 还原为上次选择的项目
    422.     @command_window.index = $game_temp.debug_command
    423.     @left_window.top_row = $game_temp.debug_top_row
    424.     @left_window.index = $game_temp.debug_index
    425.     @right_window.mode = @left_window.mode = @command_window.index
    426.     @right_window.top_id = @left_window.top_id
    427.     # 连按计数
    428.     @press_count = 0
    429.     # 执行过渡
    430.     Graphics.transition
    431.     # 主循环
    432.     loopdo
    433.       # 刷新游戏画面
    434.       Graphics.update
    435.       # 刷新输入情报
    436.       Input.update
    437.       # 刷新画面
    438.       update
    439.       # 如果画面被切换的话就中断循环
    440.       if$scene != self
    441.         break
    442.       end
    443.     end
    444.     # 刷新地图
    445.     $game_map.refresh
    446.     # 装备过渡
    447.     Graphics.freeze
    448.     # 释放窗口
    449.     @command_window.dispose
    450.     @left_window.dispose
    451.     @right_window.dispose
    452.     @help_window.dispose
    453.   end
    454.   #--------------------------------------------------------------------------
    455.   # ● 刷新画面
    456.   #--------------------------------------------------------------------------
    457.   def update
    458.     # 刷新窗口
    459.     @right_window.mode = @left_window.mode = @command_window.index
    460.     @right_window.sub_mode = @left_window.indexif@left_window.mode == 6
    461.     if@left_window.mode == 7
    462.       @right_window.map_id = @left_window.map_id
    463.     else
    464.       @right_window.map_id = 0
    465.     end
    466.     @right_window.top_id = @left_window.top_id
    467.     @command_window.update
    468.     @left_window.update
    469.     @right_window.update
    470.     # 记忆选择中的项目
    471.     $game_temp.debug_command = @command_window.index
    472.     $game_temp.debug_top_row = @left_window.top_row
    473.     $game_temp.debug_index = @left_window.index
    474.     if@command_window.active
    475.       update_command
    476.       return
    477.     end
    478.     # 左侧窗口被激活的情况下: 调用 update_left
    479.     if@left_window.active
    480.       update_left
    481.       return
    482.     end
    483.     # 右侧窗口被激活的情况下: 调用 update_right
    484.     if@right_window.active
    485.       update_right
    486.       return
    487.     end
    488.   end
    489.   def update_command
    490.     @left_window.adjust_cursor
    491.     # 按下 B 键的情况下
    492.     if Input.trigger?(Input::B)
    493.       # 演奏取消 SE
    494.       $game_system.se_play($data_system.cancel_se)
    495.       # 切换到地图画面
    496.       $scene = Scene_Map.new
    497.       return
    498.     end
    499.     if Input.trigger?(Input::C)
    500.       $game_system.se_play($data_system.decision_se)
    501.       @command_window.active = false
    502.       @left_window.active = true
    503.       # 模式为8[执行代码]的情况下,不存在调试文件的,新建之
    504.       if@command_window.index == 8
    505.         text = "C (Enter) : Execute Code"
    506.         @help_window.contents.draw_text(4, 0, 406, 32, text)
    507.         unlessFileTest.exist?("Debug.txt")
    508.           file = File.open("Debug.txt", "w")
    509.           file.close
    510.         end
    511.       end
    512.       return
    513.     end
    514.   end
    515.   #--------------------------------------------------------------------------
    516.   # ● 刷新画面 (左侧窗口被激活的情况下)
    517.   #--------------------------------------------------------------------------
    518.   def update_left
    519.     # 按下 B 键的情况下
    520.     if Input.trigger?(Input::B)
    521.       # 演奏取消 SE
    522.       $game_system.se_play($data_system.cancel_se)
    523.       @command_window.active = true
    524.       @left_window.active = false
    525.       @help_window.contents.clear
    526.       return
    527.     end
    528.     # 按下 C 键的情况下
    529.     if Input.trigger?(Input::C)
    530.       # 演奏确定 SE
    531.       $game_system.se_play($data_system.decision_se)
    532.       # 显示帮助
    533.       if@left_window.mode == 0 || @left_window.mode == 7
    534.         text1 = "C (Enter) : ON / OFF"
    535.         @help_window.contents.draw_text(4, 0, 406, 32, text1)
    536.       elsif@left_window.mode == 5
    537.         text1 = "← : -100  → : +100  ↑ : +1000  ↓ : -1000"
    538.         text2 = "L (Pageup) : -10000"
    539.         text3 = "R (Pagedown) : +10000"
    540.         @help_window.contents.draw_text(4, 0, 406, 32, text1)
    541.         @help_window.contents.draw_text(4, 32, 406, 32, text2)
    542.         @help_window.contents.draw_text(4, 64, 406, 32, text3)
    543.       elsif@left_window.mode == 6
    544.         case@right_window.sub_mode
    545.         when0
    546.           text1 = "C (Enter) : IN / OUT"
    547.         when1
    548.           text1 = "← : -1   → : +1"
    549.         when2..3
    550.           text1 = "← : -10   → : +10"
    551.         when4..7
    552.           text1 = "← : -5   → : +5"
    553.         end
    554.         @help_window.contents.draw_text(4, 0, 406, 32, text1)
    555.       elsif@left_window.mode != 8
    556.         text1 = "← : -1   → : +1"
    557.         text2 = "L (Pageup) : -10"
    558.         text3 = "R (Pagedown) : +10"
    559.         @help_window.contents.draw_text(4, 0, 406, 32, text1)
    560.         @help_window.contents.draw_text(4, 32, 406, 32, text2)
    561.         @help_window.contents.draw_text(4, 64, 406, 32, text3)
    562.       end
    563.       # 模式为8[执行代码]的情况下,直接执行
    564.       if@left_window.mode == 8
    565.         execute_code
    566.         return
    567.       end
    568.       # 激活右侧窗口
    569.       @left_window.active = false
    570.       @right_window.active = true
    571.       @right_window.index = 0
    572.       return
    573.     end
    574.   end
    575.   #--------------------------------------------------------------------------
    576.   # ● 刷新画面 (右侧窗口被激活的情况下)
    577.   #--------------------------------------------------------------------------
    578.   def update_right
    579.     # 按下 B 键的情况下
    580.     if Input.trigger?(Input::B)
    581.       # 演奏取消 SE
    582.       $game_system.se_play($data_system.cancel_se)
    583.       # 激活左侧窗口
    584.       @left_window.active = true
    585.       @right_window.active = false
    586.       @right_window.index = -1
    587.       # 删除帮助
    588.       @help_window.contents.clear
    589.       return
    590.     end
    591.     # 获取被选择的开关 / 变量的 ID
    592.     current_id = @right_window.top_id + @right_window.index
    593.     case@right_window.mode
    594.     # 开关的情况下
    595.     when0
    596.       # 按下 C 键的情况下
    597.       if Input.trigger?(Input::C)
    598.         # 演奏确定 SE
    599.         $game_system.se_play($data_system.decision_se)
    600.         # 逆转 ON / OFF 状态
    601.         $game_switches[current_id] = (not$game_switches[current_id])
    602.         @right_window.refresh
    603.         return
    604.       end
    605.     # 变量的情况下
    606.     when1
    607.       # 按下右键的情况下
    608.       if Input.repeat?(Input::RIGHT)
    609.         # 演奏光标 SE
    610.         $game_system.se_play($data_system.cursor_se)
    611.         # 变量加 1
    612.         $game_variables[current_id] += 1
    613.         # 检查上限
    614.         if$game_variables[current_id] > 99999999
    615.           $game_variables[current_id] = 99999999
    616.         end
    617.         @right_window.refresh
    618.         return
    619.       end
    620.       # 按下左键的情况下
    621.       if Input.repeat?(Input::LEFT)
    622.         # 演奏光标 SE
    623.         $game_system.se_play($data_system.cursor_se)
    624.         # 变量减 1
    625.         $game_variables[current_id] -= 1
    626.         # 检查下限
    627.         if$game_variables[current_id] < -99999999
    628.           $game_variables[current_id] = -99999999
    629.         end
    630.         @right_window.refresh
    631.         return
    632.       end
    633.       # 按下 R 键的情况下
    634.       if Input.repeat?(Input::R)
    635.         # 演奏光标 SE
    636.         $game_system.se_play($data_system.cursor_se)
    637.         # 变量加 10
    638.         $game_variables[current_id] += 10
    639.         # 检查上限
    640.         if$game_variables[current_id] > 99999999
    641.           $game_variables[current_id] = 99999999
    642.         end
    643.         @right_window.refresh
    644.         return
    645.       end
    646.       # 按下 L 键的情况下
    647.       if Input.repeat?(Input::L)
    648.         # 演奏光标 SE
    649.         $game_system.se_play($data_system.cursor_se)
    650.         # 变量减 10
    651.         $game_variables[current_id] -= 10
    652.         # 检查下限
    653.         if$game_variables[current_id] < -99999999
    654.           $game_variables[current_id] = -99999999
    655.         end
    656.         @right_window.refresh
    657.         return
    658.       end
    659.     # 物品的情况下
    660.     when2
    661.       # 按下右键的情况下
    662.       if Input.repeat?(Input::RIGHT)
    663.         # 演奏光标 SE
    664.         $game_system.se_play($data_system.cursor_se)
    665.         # 物品数加 1
    666.         $game_party.gain_item(current_id, 1)
    667.         @right_window.refresh
    668.         return
    669.       end
    670.       # 按下左键的情况下
    671.       if Input.repeat?(Input::LEFT)
    672.         # 演奏光标 SE
    673.         $game_system.se_play($data_system.cursor_se)
    674.         # 物品数减 1
    675.         $game_party.lose_item(current_id, 1)
    676.         @right_window.refresh
    677.         return
    678.       end
    679.       # 按下 R 键的情况下
    680.       if Input.repeat?(Input::R)
    681.         # 演奏光标 SE
    682.         $game_system.se_play($data_system.cursor_se)
    683.         # 物品数加 10
    684.         $game_party.gain_item(current_id, 10)
    685.         @right_window.refresh
    686.         return
    687.       end
    688.       # 按下 L 键的情况下
    689.       if Input.repeat?(Input::L)
    690.         # 演奏光标 SE
    691.         $game_system.se_play($data_system.cursor_se)
    692.         # 物品数减 10
    693.         $game_party.lose_item(current_id, 10)
    694.         @right_window.refresh
    695.         return
    696.       end
    697.     # 武器的情况下
    698.     when3
    699.       # 按下右键的情况下
    700.       if Input.repeat?(Input::RIGHT)
    701.         # 演奏光标 SE
    702.         $game_system.se_play($data_system.cursor_se)
    703.         # 武器数加 1
    704.         $game_party.gain_weapon(current_id, 1)
    705.         @right_window.refresh
    706.         return
    707.       end
    708.       # 按下左键的情况下
    709.       if Input.repeat?(Input::LEFT)
    710.         # 演奏光标 SE
    711.         $game_system.se_play($data_system.cursor_se)
    712.         # 武器数减 1
    713.         $game_party.lose_weapon(current_id, 1)
    714.         @right_window.refresh
    715.         return
    716.       end
    717.       # 按下 R 键的情况下
    718.       if Input.repeat?(Input::R)
    719.         # 演奏光标 SE
    720.         $game_system.se_play($data_system.cursor_se)
    721.         # 武器数加 10
    722.         $game_party.gain_weapon(current_id, 10)
    723.         @right_window.refresh
    724.         return
    725.       end
    726.       # 按下 L 键的情况下
    727.       if Input.repeat?(Input::L)
    728.         # 演奏光标 SE
    729.         $game_system.se_play($data_system.cursor_se)
    730.         # 武器数减 10
    731.         $game_party.lose_weapon(current_id, 10)
    732.         @right_window.refresh
    733.         return
    734.       end
    735.     # 防具的情况下
    736.     when4
    737.       # 按下右键的情况下
    738.       if Input.repeat?(Input::RIGHT)
    739.         # 演奏光标 SE
    740.         $game_system.se_play($data_system.cursor_se)
    741.         # 防具数加 1
    742.         $game_party.gain_armor(current_id, 1)
    743.         @right_window.refresh
    744.         return
    745.       end
    746.       # 按下左键的情况下
    747.       if Input.repeat?(Input::LEFT)
    748.         # 演奏光标 SE
    749.         $game_system.se_play($data_system.cursor_se)
    750.         # 防具数减 1
    751.         $game_party.lose_armor(current_id, 1)
    752.         @right_window.refresh
    753.         return
    754.       end
    755.       # 按下 R 键的情况下
    756.       if Input.repeat?(Input::R)
    757.         # 演奏光标 SE
    758.         $game_system.se_play($data_system.cursor_se)
    759.         # 防具数加 10
    760.         $game_party.gain_armor(current_id, 10)
    761.         @right_window.refresh
    762.         return
    763.       end
    764.       # 按下 L 键的情况下
    765.       if Input.repeat?(Input::L)
    766.         # 演奏光标 SE
    767.         $game_system.se_play($data_system.cursor_se)
    768.         # 防具数减 10
    769.         $game_party.lose_armor(current_id, 10)
    770.         @right_window.refresh
    771.         return
    772.       end
    773.     # 金钱的情况下
    774.     when5
    775.       # 按下右键的情况下
    776.       if Input.repeat?(Input::RIGHT)
    777.         # 演奏光标 SE
    778.         $game_system.se_play($data_system.cursor_se)
    779.         # 金钱数加 100
    780.         $game_party.gain_gold(100)
    781.         @right_window.refresh
    782.         return
    783.       end
    784.       # 按下左键的情况下
    785.       if Input.repeat?(Input::LEFT)
    786.         # 演奏光标 SE
    787.         $game_system.se_play($data_system.cursor_se)
    788.         # 金钱数减 100
    789.         $game_party.lose_gold(100)
    790.         @right_window.refresh
    791.         return
    792.       end
    793.       if Input.repeat?(Input::UP)
    794.         $game_system.se_play($data_system.cursor_se)
    795.         $game_party.gain_gold(1000)
    796.         @right_window.refresh
    797.         return
    798.       end
    799.       if Input.repeat?(Input::DOWN)
    800.         $game_system.se_play($data_system.cursor_se)
    801.         $game_party.lose_gold(1000)
    802.         @right_window.refresh
    803.         return
    804.       end
    805.       # 按下 R 键的情况下
    806.       if Input.repeat?(Input::R)
    807.         # 演奏光标 SE
    808.         $game_system.se_play($data_system.cursor_se)
    809.         # 金钱数加 10000
    810.         $game_party.gain_gold(10000)
    811.         @right_window.refresh
    812.         return
    813.       end
    814.       # 按下 L 键的情况下
    815.       if Input.repeat?(Input::L)
    816.         # 演奏光标 SE
    817.         $game_system.se_play($data_system.cursor_se)
    818.         # 防具数减 10
    819.         $game_party.lose_gold(10000)
    820.         @right_window.refresh
    821.         return
    822.       end
    823.     # 角色的情况下
    824.     when6
    825.       update_debug_actor
    826.     # 独立开关的情况下
    827.     when7
    828.       # 按下 C 键的情况下
    829.       if Input.trigger?(Input::C)
    830.         # 获取信息
    831.         key = @right_window.key
    832.         # 无效的情况下
    833.         if key == []
    834.           $game_system.se_play($data_system.buzzer_se)
    835.           return
    836.         end
    837.         # 演奏确定 SE
    838.         $game_system.se_play($data_system.decision_se)
    839.         # 逆转 ON / OFF 状态
    840.         $game_self_switches[key] ^= true
    841.         @right_window.refresh
    842.         return
    843.       end
    844.     end
    845.   end
    846.   def update_debug_actor
    847.     # 连按计数(只对左右键有效,这个是为了处理变化过慢的问题)
    848.     if Input.press?(Input::LEFT) || Input.press?(Input::RIGHT)
    849.       @press_count += 1
    850.     else
    851.       @press_count = 0
    852.     end
    853.     actor = $game_actors[@right_window.index+1]
    854.     if Input.trigger?(Input::C)
    855.       if@right_window.sub_mode == 0
    856.         $game_system.se_play($data_system.decision_se)
    857.         if$game_party.actors.include?(actor)
    858.           $game_party.remove_actor(actor.id)
    859.         else
    860.           $game_party.add_actor(actor.id)
    861.         end
    862.       end
    863.       return
    864.     end
    865.     if Input.repeat?(Input::LEFT) && @right_window.sub_mode > 0
    866.       if@press_count  80 && @press_count  200
    867.         rate = 10
    868.       end
    869.       $game_system.se_play($data_system.cursor_se)
    870.       case@right_window.sub_mode
    871.       when1
    872.         actor.level -= 1 * rate
    873.       when2
    874.         actor.maxhp -= 10 * rate
    875.       when3
    876.         actor.maxsp -= 10 * rate
    877.       when4
    878.         actor.str -= 5 * rate
    879.       when5
    880.         actor.dex -= 5 * rate
    881.       when6
    882.         actor.agi -= 5 * rate
    883.       when7
    884.         actor.int -= 5 * rate
    885.       end
    886.       return
    887.     end
    888.     if Input.repeat?(Input::RIGHT) && @right_window.sub_mode > 0
    889.       if@press_count  80 && @press_count  200
    890.         rate = 10
    891.       end
    892.       $game_system.se_play($data_system.cursor_se)
    893.       case@right_window.sub_mode
    894.       when1
    895.         actor.level += 1 * rate
    896.       when2
    897.         actor.maxhp += 10 * rate
    898.       when3
    899.         actor.maxsp += 10 * rate
    900.       when4
    901.         actor.str += 5 * rate
    902.       when5
    903.         actor.dex += 5 * rate
    904.       when6
    905.         actor.agi += 5 * rate
    906.       when7
    907.         actor.int += 5 * rate
    908.       end
    909.       return
    910.     end
    911.     @right_window.refresh
    912.   end
    913.   def execute_code
    914.     ifFileTest.exist?("Debug.txt")
    915.       file = File.open("Debug.txt", "r")
    916.       str = file.read
    917.       eval(str)
    918.       file.close
    919.       print"代码执行完毕!"
    920.     else
    921.       print'找不到文件"Debug.txt"'
    922.     end
    923.   end
    924. end
    复制代码

                本帖来自P1论坛作者1041235896,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=371014  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    本帖子中包含更多资源

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

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-3-15 15:59 , Processed in 0.119962 second(s), 54 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表