Project1

标题: 截图脚本中的错误 [打印本页]

作者: zgm1100    时间: 2009-1-15 02:47
标题: 截图脚本中的错误

   怎么才会使 一下脚本中的第19行出错?

  19行: @screen = Win32API.new 'screenshot', 'Screenshot', %w(l l l l p l l), ''
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,转载和使用请保留此信息
  3. #===============================================================================

  4. BBS_66RPG_DIR = "Save/"  # 储存文件夹名,请制作游戏时自行建立此文件夹

  5. # 若想使用自定义背景图,脚本62行的井号去掉,并放置一张相应图形。

  6. # 在你的Scene_Title中找到这一段(如果使用其他插件脚本,在插件中找):
  7. #    for i in 0..3
  8. #      if FileTest.exist?("Save#{i+1}.rxdata")
  9. # 请自行把0..3改为0..最大进度号,比如0..9
  10. # "Save#{i+1}.rxdata" 改为"Save/Save#{i}.rxdata"

  11. # 增加进度的方法:138,258行,继续添加。你也可以改“进度X”为“回忆X”或者“红/绿/蓝笔记本”

  12. #===============================================================================
  13. module Screen  
  14.   @screen = Win32API.new 'screenshot', 'Screenshot', %w(l l l l p l l), ''
  15.   @readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
  16.   @findwindow = Win32API.new 'user32', 'FindWindowA', %w(p p), 'l'
  17.   module_function
  18.   #-----------------------------------------------------------------------------
  19.   # here comes the stuff...
  20.   # i add here the stuff for automatic change of the number for the screenshot
  21.   # so it wont overrite the old one...
  22.   # if you want to change so stuff change them in this line below
  23.   # or you can change them in your command line... like
  24.   # Screen::shot("screenshot", 2)
  25.   # this change the name and the type of the screenshot
  26.   # (0 = bmp, 1 = jpg and 2 = png)
  27.   # ----------------------------------------------------------------------------
  28.   def shot(file = "shot", typ = 1)
  29.     # to add the right extension...
  30.     if typ == 0
  31.       typname = ".bmp"
  32.     elsif typ == 1
  33.       typname = ".jpg"
  34.     elsif typ == 2
  35.       typname = ".png"
  36.     end   
  37.     file_index = 0   
  38.     dir = "Save/"   
  39.     # make the filename....
  40.     file_name = dir + file.to_s + typname.to_s   
  41.     # make the screenshot.... Attention dont change anything from here on....
  42.     @screen.call(0,0,640,480,file_name,handel,typ)
  43.   end
  44.   # find the game window...
  45.   def handel
  46.     game_name = "\0" * 256
  47.     @readini.call('Game','Title','',game_name,255,".\\Game.ini")
  48.     game_name.delete!("\0")
  49.     return @findwindow.call('RGSS Player',game_name)
  50.   end
  51. end

  52. class Window_File < Window_Base
  53.   attr_accessor :index
  54.   def initialize(index = 0)
  55.     @backsp = Sprite.new
  56.     @backsp.bitmap = Bitmap.new("Graphics/Pictures/系统图片/存档画面.png")
  57.     @backsp.z = 100
  58.     super(160,0,480,480)
  59.     self.opacity = 0
  60.     #这行可以不用
  61.     self.contents = Bitmap.new(width - 32, height - 32)
  62.     @index = index
  63.     #这里我要说明一句,之所以用sprite是为了放缩图片
  64.     @sprite = Sprite.new
  65.     @sprite.visible = false
  66.     @sprite.z = 200
  67.     @sp_ch = []
  68.     @sp_ch[0] = Sprite.new
  69.     refresh
  70.   end
  71.   def refresh
  72.     self.contents.clear
  73.     for i in @sp_ch
  74.       i.visible = false
  75.     end
  76.     @sprite.visible = false
  77.     if FileTest.exist?(BBS_66RPG_DIR+"Save#{@index}.rxdata")
  78.       @sprite.visible = true
  79.       if FileTest.exist?(BBS_66RPG_DIR+"Save#{@index}.jpg")
  80.         @sprite.bitmap = Bitmap.new(BBS_66RPG_DIR+"Save#{@index}.jpg")
  81.       else
  82.         self.contents.draw_text(32,64,400,32,"截图出错")
  83.       end
  84.       @sprite.x = 176
  85.       @sprite.y = 16
  86.       @sprite.zoom_x = 0.5
  87.       @sprite.zoom_y = 0.5
  88.       file = File.open(BBS_66RPG_DIR+"Save#{@index}.rxdata", "r")
  89.       @time_stamp = file.mtime
  90.       @characters = Marshal.load(file)
  91.       @frame_count = Marshal.load(file)
  92.       @game_system = Marshal.load(file)
  93.       @game_switches = Marshal.load(file)
  94.       @game_variables = Marshal.load(file)
  95.       @total_sec = @frame_count / Graphics.frame_rate
  96.       file.close
  97.       for i in [email protected]
  98.         @sp_ch[i] = Sprite.new
  99.         #bitmap=Bitmap.new()
  100.         testname = @characters[i][2].id  #修改
  101.         @sp_ch[i].bitmap = Bitmap.new("Graphics/Pictures/存档脸图/#{testname}")
  102.         @sp_ch[i].x = 200 + i*100      
  103.         @sp_ch[i].y = 400 - @sp_ch[i].bitmap.height
  104.         @sp_ch[i].z = 200
  105.         @sp_ch[i].opacity = 245
  106.       end
  107.       # 描绘游戏时间
  108.       hour = @total_sec / 60 / 60
  109.       min = @total_sec / 60 % 60
  110.       sec = @total_sec % 60
  111.       time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
  112.       self.contents.font.color = normal_color
  113.       self.contents.draw_text(-240, 396, 420, 32, time_string, 2)
  114.       # 描绘时间标记
  115.       self.contents.font.color = normal_color
  116.       time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
  117.       self.contents.draw_text(-152, 420, 420, 32, time_string, 2)
  118.     else
  119.       self.contents.draw_text(80,32,420,32,"这个存档是空的")
  120.     end
  121.   end
  122.   def dispose
  123.     super
  124.     @sprite.dispose
  125.     @backsp.dispose
  126.     for i in @sp_ch
  127.       i.dispose
  128.     end
  129.   end
  130. end


  131. class Scene_Save
  132.   def initialize
  133.     # 再生成临时对像
  134.     $game_temp = Game_Temp.new
  135.     # 选择存档时间最新的文件
  136.     $game_temp.last_file_index = 0
  137.     latest_time = Time.at(0)
  138.     for i in 5..19
  139.       filename = BBS_66RPG_DIR+"Save#{i+1}.rxdata"
  140.       if FileTest.exist?(filename)
  141.         file = File.open(filename, "r")
  142.         if file.mtime > latest_time
  143.           latest_time = file.mtime
  144.           $game_temp.last_file_index = i
  145.         end
  146.         file.close
  147.       end
  148.     end
  149.   end  
  150.   def main
  151.     @command_window = Window_Command.new(160,["自动存档 01","自动存档 02","自动存档 03","自动存档 04","自动存档 05","宿命轨迹 01","宿命轨迹 02","宿命轨迹 03","宿命轨迹 04","宿命轨迹 05","宿命轨迹 06","宿命轨迹 07","宿命轨迹 08","宿命轨迹 09","宿命轨迹 10","宿命轨迹 11","宿命轨迹 12","宿命轨迹 13","宿命轨迹 14","宿命轨迹 15","宿命轨迹 16","宿命轨迹 17","宿命轨迹 18","宿命轨迹 19","宿命轨迹 20"])
  152.     @command_window.y = 100
  153.     @command_window.height = 350
  154.     @command_window.opacity = 0
  155.     @command_window.index = $game_temp.last_file_index
  156.     @content_window = Window_File.new($game_temp.last_file_index)   
  157.     # 执行过
  158.     Graphics.transition
  159.     # 主循环
  160.     loop do
  161.       # 刷新游戏画面
  162.       Graphics.update
  163.       # 刷新输入信息
  164.       Input.update
  165.       # 刷新画面
  166.       update
  167.       # 如果画面被切换的话就中断循环
  168.       if $scene != self
  169.         break
  170.       end
  171.     end
  172.     # 准备过渡
  173.     Graphics.freeze
  174.     @command_window.dispose
  175.     @content_window.dispose
  176.   end
  177.   def update
  178.     @command_window.update   
  179.     if @command_window.index != @content_window.index
  180.       @content_window.index = @command_window.index
  181.       @content_window.refresh
  182.     end   
  183.     #——————下面这一部分是原装脚本——————#
  184.     if Input.trigger?(Input::B)  
  185.       $game_system.se_play($data_system.cancel_se)
  186.       if $game_temp.save_calling
  187.         $game_temp.save_calling = false
  188.         $scene = Scene_Map.new
  189.         return
  190.       end
  191.       $scene = Scene_Map.new
  192.     end   
  193.     #———————————————————————#   
  194.     if Input.trigger?(Input::C)
  195.       # 演奏存档 SE
  196.       $game_system.se_play($data_system.save_se)
  197.       # 写入存档数据
  198.       file = File.open(BBS_66RPG_DIR+"Save#{@command_window.index}.rxdata", "wb")
  199.       write_save_data(file)
  200.       if FileTest.exist?(BBS_66RPG_DIR+"shot.jpg")
  201.         File.rename(BBS_66RPG_DIR+"shot.jpg", BBS_66RPG_DIR+"Save#{@command_window.index}.jpg")
  202.       end
  203.       file.close
  204.       $game_temp.last_file_index = @command_window.index
  205.       # 如果被事件调用
  206.       if $game_temp.save_calling
  207.         # 清除存档调用标志
  208.         $game_temp.save_calling = false
  209.         # 切换到地图画面
  210.         $scene = Scene_Map.new
  211.         return
  212.       end
  213.       # 切换到菜单画面
  214.       $scene = Scene_Map.new
  215.     end
  216.     #———————————————————————#
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 写入存档数据
  220.   #     file : 写入用文件对像 (已经打开)
  221.   #--------------------------------------------------------------------------
  222.   def write_save_data(file)
  223.     # 生成描绘存档文件用的角色图形
  224.     characters = []
  225.     for i in 0...$game_party.actors.size
  226.       actor = $game_party.actors[i]
  227.       characters.push([actor.character_name, actor.character_hue, actor.id, actor.battler_name, actor.battler_hue])
  228.     end
  229.     # 写入描绘存档文件用的角色数据
  230.     Marshal.dump(characters, file)
  231.     # 写入测量游戏时间用画面计数
  232.     Marshal.dump(Graphics.frame_count, file)
  233.     # 增加 1 次存档次数
  234.     $game_system.save_count += 1
  235.     # 保存魔法编号
  236.     # (将编辑器保存的值以随机值替换)
  237.     $game_system.magic_number = $data_system.magic_number
  238.     # 写入各种游戏对像
  239.     Marshal.dump($game_system, file)
  240.     Marshal.dump($game_switches, file)
  241.     Marshal.dump($game_variables, file)
  242.     Marshal.dump($game_self_switches, file)
  243.     Marshal.dump($game_screen, file)
  244.     Marshal.dump($game_actors, file)
  245.     Marshal.dump($game_party, file)
  246.     Marshal.dump($game_troop, file)
  247.     Marshal.dump($game_map, file)
  248.     Marshal.dump($game_player, file)
  249.   end
  250. end


  251. class Scene_Load
  252.   def initialize
  253.     # 再生成临时对像
  254.     $game_temp = Game_Temp.new
  255.     # 选择存档时间最新的文件
  256.     $game_temp.last_file_index = 0
  257.     latest_time = Time.at(0)
  258.     for i in 5..19
  259.       filename = BBS_66RPG_DIR+"Save#{i}.rxdata"
  260.       if FileTest.exist?(filename)
  261.         file = File.open(filename, "r")
  262.         if file.mtime > latest_time
  263.           latest_time = file.mtime
  264.           $game_temp.last_file_index = i
  265.         end
  266.         file.close
  267.       end
  268.     end
  269.   end  
  270.   def main
  271.     @command_window = Window_Command.new(160,["自动存档 01","自动存档 02","自动存档 03","自动存档 04","自动存档 05","宿命轨迹 01","宿命轨迹 02","宿命轨迹 03","宿命轨迹 04","宿命轨迹 05","宿命轨迹 06","宿命轨迹 07","宿命轨迹 08","宿命轨迹 09","宿命轨迹 10","宿命轨迹 11","宿命轨迹 12","宿命轨迹 13","宿命轨迹 14","宿命轨迹 15","宿命轨迹 16","宿命轨迹 17","宿命轨迹 18","宿命轨迹 19","宿命轨迹 20"])
  272.     @command_window.y = 100
  273.     @command_window.height = 350
  274.     @command_window.opacity = 0
  275.     @command_window.index = $game_temp.last_file_index
  276.     @content_window = Window_File.new($game_temp.last_file_index)
  277.    # 执行过渡
  278.     Graphics.transition
  279.     # 主循环
  280.     loop do
  281.       # 刷新游戏画面
  282.       Graphics.update
  283.       # 刷新输入信息
  284.       Input.update
  285.       # 刷新画面
  286.       update
  287.       # 如果画面被切换的话就中断循环
  288.       if $scene != self
  289.         break
  290.       end
  291.     end
  292.     # 准备过渡
  293.     Graphics.freeze
  294.     @command_window.dispose
  295.     @content_window.dispose
  296.   end
  297.   def update
  298.     @command_window.update
  299.     if @command_window.index != @content_window.index
  300.       @content_window.index = @command_window.index
  301.       @content_window.refresh
  302.     end   
  303.     #——————下面这一部分是原装脚本——————#
  304.     if Input.trigger?(Input::B)  
  305.     # 演奏取消 SE
  306.     $game_system.se_play($data_system.cancel_se)
  307.     # 切换到标题画面
  308.     $scene = Scene_Map.new
  309.     end   
  310.     #———————————————————————#   
  311.     if Input.trigger?(Input::C)
  312.       # 文件不存在的情况下
  313.       unless FileTest.exist?(BBS_66RPG_DIR+"Save#{@command_window.index}.rxdata")
  314.         # 演奏冻结 SE
  315.         $game_system.se_play($data_system.buzzer_se)
  316.         return
  317.       end
  318.       # 演奏读档 SE
  319.       $game_system.se_play($data_system.load_se)
  320.       # 写入存档数据
  321.       file = File.open(BBS_66RPG_DIR+"Save#{@command_window.index}.rxdata",

  322. "rb")
  323.       read_save_data(file)
  324.       file.close
  325.       # 刷新地图 (执行并行事件)
  326.       $game_map.update
  327.       $game_system.bgm_play($game_system.playing_bgm)
  328.       $game_system.bgs_play($game_system.playing_bgs)
  329.       # 切换到地图画面
  330.       $scene = Scene_Map.new
  331.     end
  332.     #———————————————————————#
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   # ● 写入存档数据
  336.   #     file : 写入用文件对像 (已经打开)
  337.   #--------------------------------------------------------------------------
  338.   def read_save_data(file)
  339.     # 读取描绘存档文件用的角色数据
  340.     characters = Marshal.load(file)
  341.     # 读取测量游戏时间用画面计数
  342.     Graphics.frame_count = Marshal.load(file)
  343.     # 读取各种游戏对像
  344.     $game_system        = Marshal.load(file)
  345.     $game_switches      = Marshal.load(file)
  346.     $game_variables     = Marshal.load(file)
  347.     $game_self_switches = Marshal.load(file)
  348.     $game_screen        = Marshal.load(file)
  349.     $game_actors        = Marshal.load(file)
  350.     $game_party         = Marshal.load(file)
  351.     $game_troop         = Marshal.load(file)
  352.     $game_map           = Marshal.load(file)
  353.     $game_player        = Marshal.load(file)
  354.     # 魔法编号与保存时有差异的情况下
  355.     # (加入编辑器的编辑过的数据)
  356.     if $game_system.magic_number != $data_system.magic_number
  357.       # 重新装载地图
  358.       $game_map.setup($game_map.map_id)
  359.       $game_player.center($game_player.x, $game_player.y)
  360.     end
  361.     # 刷新同伴成员
  362.     $game_party.refresh
  363.   end
  364. end
  365. class Scene_Mload
  366.   def initialize
  367.     # 再生成临时对像
  368.     $game_temp = Game_Temp.new
  369.     # 选择存档时间最新的文件
  370.     $game_temp.last_file_index = 0
  371.     latest_time = Time.at(0)
  372.     for i in 5..19
  373.       filename = BBS_66RPG_DIR+"Save#{i}.rxdata"
  374.       if FileTest.exist?(filename)
  375.         file = File.open(filename, "r")
  376.         if file.mtime > latest_time
  377.           latest_time = file.mtime
  378.           $game_temp.last_file_index = i
  379.         end
  380.         file.close
  381.       end
  382.     end
  383.   end  
  384.   def main
  385.     @command_window = Window_Command.new(160,["自动存档 01","自动存档 02","自动存档 03","自动存档 04","自动存档 05","宿命轨迹 01","宿命轨迹 02","宿命轨迹 03","宿命轨迹 04","宿命轨迹 05","宿命轨迹 06","宿命轨迹 07","宿命轨迹 08","宿命轨迹 09","宿命轨迹 10","宿命轨迹 11","宿命轨迹 12","宿命轨迹 13","宿命轨迹 14","宿命轨迹 15","宿命轨迹 16","宿命轨迹 17","宿命轨迹 18","宿命轨迹 19","宿命轨迹 20"])
  386.     @command_window.y = 100
  387.     @command_window.height = 350
  388.     @command_window.opacity = 0
  389.     @command_window.index = $game_temp.last_file_index
  390.     @content_window = Window_File.new($game_temp.last_file_index)
  391.    # 执行过渡
  392.     Graphics.transition
  393.     # 主循环
  394.     loop do
  395.       # 刷新游戏画面
  396.       Graphics.update
  397.       # 刷新输入信息
  398.       Input.update
  399.       # 刷新画面
  400.       update
  401.       # 如果画面被切换的话就中断循环
  402.       if $scene != self
  403.         break
  404.       end
  405.     end
  406.     # 准备过渡
  407.     Graphics.freeze
  408.     @command_window.dispose
  409.     @content_window.dispose
  410.   end
  411.   def update
  412.     @command_window.update
  413.     if @command_window.index != @content_window.index
  414.       @content_window.index = @command_window.index
  415.       @content_window.refresh
  416.     end   
  417.     #——————下面这一部分是原装脚本——————#
  418.     if Input.trigger?(Input::B)  
  419.     # 演奏取消 SE
  420.     $game_system.se_play($data_system.cancel_se)
  421.     # 切换到标题画面
  422.     $scene = Scene_Map.new
  423.     end   
  424.     #———————————————————————#   
  425.     if Input.trigger?(Input::C)
  426.       # 文件不存在的情况下
  427.       unless FileTest.exist?(BBS_66RPG_DIR+"Save#{@command_window.index}.rxdata")
  428.         # 演奏冻结 SE
  429.         $game_system.se_play($data_system.buzzer_se)
  430.         return
  431.       end
  432.       # 演奏读档 SE
  433.       $game_system.se_play($data_system.load_se)
  434.       # 写入存档数据
  435.       file = File.open(BBS_66RPG_DIR+"Save#{@command_window.index}.rxdata",

  436. "rb")
  437.       read_save_data(file)
  438.       file.close
  439.       # 还原 BGM、BGS
  440.       $game_system.bgm_play($game_system.playing_bgm)
  441.       $game_system.bgs_play($game_system.playing_bgs)
  442.       # 刷新地图 (执行并行事件)
  443.       $game_map.update
  444.       # 切换到地图画面
  445.       $scene = Scene_Map.new
  446.     end
  447.     #———————————————————————#
  448.   end
  449.   #--------------------------------------------------------------------------
  450.   # ● 写入存档数据
  451.   #     file : 写入用文件对像 (已经打开)
  452.   #--------------------------------------------------------------------------
  453.   def read_save_data(file)
  454.     # 读取描绘存档文件用的角色数据
  455.     characters = Marshal.load(file)
  456.     # 读取测量游戏时间用画面计数
  457.     Graphics.frame_count = Marshal.load(file)
  458.     # 读取各种游戏对像
  459.     $game_system        = Marshal.load(file)
  460.     $game_switches      = Marshal.load(file)
  461.     $game_variables     = Marshal.load(file)
  462.     $game_self_switches = Marshal.load(file)
  463.     $game_screen        = Marshal.load(file)
  464.     $game_actors        = Marshal.load(file)
  465.     $game_party         = Marshal.load(file)
  466.     $game_troop         = Marshal.load(file)
  467.     $game_map           = Marshal.load(file)
  468.     $game_player        = Marshal.load(file)
  469.     # 魔法编号与保存时有差异的情况下
  470.     # (加入编辑器的编辑过的数据)
  471.     if $game_system.magic_number != $data_system.magic_number
  472.       # 重新装载地图
  473.       $game_map.setup($game_map.map_id)
  474.       $game_player.center($game_player.x, $game_player.y)
  475.     end
  476.     # 刷新同伴成员
  477.     $game_party.refresh
  478.   end
  479. end

  480. class Scene_Menu
  481.   alias bbs_66rpg_shotsave_main main
  482.   def main
  483.     if @map_index == 0
  484.       Screen::shot
  485.     end   
  486.     bbs_66rpg_shotsave_main
  487.   end
  488. end

  489. class Interpreter
  490.   #--------------------------------------------------------------------------
  491.   # ● 调用存档画面
  492.   #--------------------------------------------------------------------------
  493.   def command_352
  494.     # 设置战斗中断标志
  495.     $game_temp.battle_abort = true
  496.     # 设置调用存档标志
  497.     $game_temp.save_calling = true
  498.     # 推进索引
  499.     @index += 1
  500.     Screen::shot
  501.     return false
  502.   end
  503. end
复制代码
[LINE]1,#dddddd[/LINE]此贴于 2009-1-17 21:42:29 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]此贴于 2009-1-18 10:30:46 被版主redant提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]版务信息:版主帮忙结贴~
作者: 风花雪月    时间: 2009-1-15 04:34
你在第19行随便打些乱七八糟的字符就行了{/hx}(你不是问怎么才会使第19行出错吗{/tp}认可我吧,我的方法最简洁……)
作者: zgm1100    时间: 2009-1-15 05:03

     我就是要让它不要出错。。。。。。
        
                 我是问什么因素回让它出错。。。好改!!!
作者: 暴风の龙    时间: 2009-1-15 05:38
截图工程里除RM工程外还有几个文件,那些有没有复制到你游戏工程目录下啊
作者: zgm1100    时间: 2009-1-15 06:29
有哦。。。。还是有错。。。
作者: goahead    时间: 2009-1-16 18:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: zgm1100    时间: 2009-6-12 08:00
哦。。这样啊。。。谢谢了!!!




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