Project1

标题: XP 版 调试输出框 + 变量开关输出窗口 不使用 RM 原版窗口 [打印本页]

作者: kula1900    时间: 2009-12-31 14:17
标题: XP 版 调试输出框 + 变量开关输出窗口 不使用 RM 原版窗口

代码如下
  1. #==============================================================================
  2. # ■ Out_Put
  3. #------------------------------------------------------------------------------
  4. #  处理调试文本输出的类
  5. #==============================================================================
  6. class Out_Put
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     @text = Win32API.new("lib/OutPut/OutPut.dll","OutDebugText","p",nil)
  12.     @window = Win32API.new("lib/OutPut/OutPut.dll","OpenOutPutWindow",nil,nil)
  13.     @window.Call
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 输出调试文本
  17.   #--------------------------------------------------------------------------
  18.   def debug_text(text)
  19.     @text.Call(text)
  20.   end
  21. end
  22. #==============================================================================
  23. # ■ Scene_Title
  24. #------------------------------------------------------------------------------
  25. #  处理标题画面的类。
  26. #==============================================================================

  27. class Scene_Title
  28.   #--------------------------------------------------------------------------
  29.   # ● 命令 : 新游戏
  30.   #--------------------------------------------------------------------------
  31.   alias command_new_game2 command_new_game
  32.   def command_new_game
  33.     command_new_game2
  34.     lib = Lib.new
  35.     lib.vinitialize
  36.     lib.sinitialize
  37.   end
  38. end
  39. #==============================================================================
  40. # ■ Scene_Load
  41. #------------------------------------------------------------------------------
  42. #  处理读档画面的类。
  43. #==============================================================================

  44. class Scene_Load < Scene_File
  45.   #--------------------------------------------------------------------------
  46.   # ● 读取存档数据
  47.   #     file : 读取用文件对像 (已经打开)
  48.   #--------------------------------------------------------------------------
  49.   alias read_save read_save_data
  50.   def read_save_data(file)
  51.     read_save(file)
  52.     lib = Lib.new
  53.     lib.sinitialize
  54.     lib.vinitialize
  55.   end
  56. end
  57. #==============================================================================
  58. # ■ Game_Variables
  59. #------------------------------------------------------------------------------
  60. #  处理变量的类。编入的是类 Array 的外壳。本类的实例请参考
  61. # $game_variables。
  62. #==============================================================================

  63. class Game_Variables
  64.   #--------------------------------------------------------------------------
  65.   # ● 设置变量
  66.   #     variable_id : 变量 ID
  67.   #     value       : 变量的值
  68.   #     为何要重新定义因为 变量发生改变 要回调给 DLL
  69.   #--------------------------------------------------------------------------
  70.   def []=(variable_id, value)
  71.     if variable_id <= 5000
  72.       @data[variable_id] = value
  73.       vlib = Lib.new
  74.       vlib.vinitialize
  75.     end
  76.   end
  77. end
  78. #==============================================================================
  79. # ■ Game_Switches
  80. #------------------------------------------------------------------------------
  81. #  处理开关的类。编入的是类 Array 的外壳。本类的实例请参考
  82. # $game_switches。
  83. #==============================================================================

  84. class Game_Switches
  85.   #--------------------------------------------------------------------------
  86.   # ● 设置开关
  87.   #     switch_id : 开关 ID
  88.   #     value     : ON (true) / OFF (false)
  89.   #--------------------------------------------------------------------------
  90.   def []=(switch_id, value)
  91.     if switch_id <= 5000
  92.       @data[switch_id] = value
  93.       slib = Lib.new
  94.       slib.sinitialize
  95.     end
  96.   end
  97. end
  98. #==============================================================================
  99. # ■ Lib
  100. #------------------------------------------------------------------------------
  101. # 处理变量开关扩展接口的类
  102. #==============================================================================
  103. class Lib
  104.   #-----------------------------------------------------------------------------
  105.   # □ 初始化变量调试窗口
  106.   #-----------------------------------------------------------------------------
  107.   def vinitialize
  108.     @variableslib = Win32API.new("lib/Lib.dll","Variable","ipp",nil)
  109.     @variablesempty = Win32API.new("lib/Lib.dll","EmptyVariable",nil,nil)
  110.     @variablesempty.Call
  111.     for i in 1..$data_system.variables.size
  112.       @variableslib.Call(i,$data_system.variables[i],$game_variables[i].to_s)
  113.     end
  114.   end
  115.   #-----------------------------------------------------------------------------
  116.   # □ 载入变量调试窗口
  117.   #-----------------------------------------------------------------------------
  118.   def loadv
  119.     @variablelibw = Win32API.new("lib/Lib.dll","OpenVariable",nil,nil)
  120.     @variablelibw.Call
  121.   end
  122.   #-----------------------------------------------------------------------------
  123.   # □ 初始化开关调试窗口
  124.   #-----------------------------------------------------------------------------
  125.   def sinitialize
  126.     @switchlib = Win32API.new("lib/Lib.dll","Switch","ipp",nil)
  127.     @switchempty = Win32API.new("lib/Lib.dll","EmptySwitch",nil,nil)
  128.     @switchempty.Call
  129.     for i in 1..$data_system.switches.size
  130.       status = $game_switches[i] ? "ON" : "OFF"
  131.       @switchlib.Call(i,$data_system.switches[i],status)
  132.     end
  133.   end
  134.   #-----------------------------------------------------------------------------
  135.   # □ 载入开关调试窗口
  136.   #-----------------------------------------------------------------------------
  137.   def loads
  138.     @switchlibw = Win32API.new("lib/Lib.dll","OpenSwitch",nil,nil)
  139.     @switchlibw.Call
  140.   end
  141. end
  142. #==============================================================================
  143. # ■ Top
  144. #------------------------------------------------------------------------------
  145. # 置顶
  146. #==============================================================================
  147. class Top
  148.   def home
  149.     # 没有任何说明,参见教程吧……
  150.     top = Win32API.new('user32', 'SetWindowPos', 'lllllll', 'l')
  151.     seek = Win32API.new("lib/OutPut/OutPut.dll","Get_Handle",nil,"l")
  152.     hwnd = seek.Call
  153.     top.call(hwnd, -1, 0, 0, 0, 0, 0x2 + 0x1 + 0x40)     
  154.   end
  155. end
  156. #==============================================================================
  157. # ■ Main
  158. #------------------------------------------------------------------------------
  159. #  各定义结束后、从这里开始实际处理。 为何要修改 因为 在结束后 会有异常
  160. #==============================================================================
  161. def exit(n = 0)
  162.   @close_variable_window = Win32API.new("lib/Lib.dll", "CloseVariable", nil, nil)
  163.   @close_variable_window.Call
  164.   @exit = Win32API.new("lib/OutPut/OutPut.dll","End_Process","p",nil)
  165.   @exit.Call("Game.exe")
  166. end
  167. def p(text)
  168.   $out.debug_text(text)
  169. end
  170. begin
  171.   $out = Out_Put.new
  172.   lib = Lib.new
  173.   lib.loadv
  174.   lib.loads
  175.   top = Top.new
  176.   top.home
  177.   # 准备过渡
  178.   # 设置系统默认字体
  179.   Font.default_name = (["黑体"])
  180.   Graphics.freeze
  181.   # 生成场景对像 (标题画面)
  182.   $scene = Scene_Title.new
  183.   # $scene 为有效的情况下调用 main 过程
  184.   loop do
  185.     if $scene != nil
  186.       $scene.main
  187.     else
  188.       exit
  189.     end
  190.   end
  191.   # 淡入淡出
  192.   Graphics.transition(20)
  193. rescue Errno::ENOENT
  194.   # 补充 Errno::ENOENT 以外错误
  195.   # 无法打开文件的情况下、显示信息后结束
  196.   filename = $!.message.sub("No such file or directory - ", "")
  197.   print("找不到文件 #{filename}。 ")
  198. end
复制代码
范例如下
因为不会直接贴图 所以 泪奔
VX 版的 明天发布
作者: 风中承诺    时间: 2009-12-31 19:27
来看看是什么
作者: DeathKing    时间: 2009-12-31 19:44
难道还可以执行调试语句?
不过……有明天么?
作者: yy461530593    时间: 2010-6-18 20:10
很不错呀,是不是就是弹出个窗口这样来输入?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1