设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1001|回复: 4
打印 上一主题 下一主题

截图存取档很奇怪的事

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
244 小时
注册时间
2008-1-25
帖子
312
跳转到指定楼层
1
发表于 2008-12-4 23:54:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
{/fd}{/pz}点开GAME.EXE,读档,跳出如下错误:


但是如果我进入新游戏之后,再无论是游戏内读取或者在标题上读取,都一切正常.{/gg}

难道和换行的HELP WINDOW有关?脚本如下:
截图存取档

  1. ###使用说明
  2. #使用前请复制sceneshot.dll到游戏文件下,并新建文件夹Save
  3. #将此文本插入main前面
  4. #游戏前显示头像的文件名为:人物角色名_f,请自行建立几张做测试,不然找不到图片会报错
  5. #自动存档按钮F5 存入档位0(也就是自动存档那栏)
  6. #使用前,请在菜单脚本:scene_menu里面,
  7. #     when 4 # 存档
  8. #     # 禁止存档的情况下
  9. #     if $game_system.save_disabled
  10. #       # 演奏冻结 SE
  11. #       $game_system.se_play($data_system.buzzer_se)
  12. #       return
  13. #     end
  14. #     # 演奏确定 SE
  15. #     $game_system.se_play($data_system.decision_se)
  16. #     # 切换到存档画面
  17. #     $scene = Scene_Save.new <--这行
  18. #替换为:   $scene = Scene_Loadsave.new
  19. #另,在原scene_title里,48行左右
  20. #    for i in 0..3
  21. #          for i in 0..3
  22. #     if FileTest.exist?("Save#{i+1}.rxdata")
  23. ###################改成if FileTest.exist?("Save/Save#{i+1}.rxdata")
  24. #        @continue_enabled = true
  25. #      end
  26. #    end
  27. #否则继续游戏时会检测不到存档

  28. class Window_File < Window_Base
  29. attr_accessor :index
  30. def initialize(index = 0)
  31.    @backsp = Sprite.new
  32.    #@backsp.bitmap = Bitmap.new("Graphics/Pictures/pass")
  33.    @backsp.z = 100
  34.    super(160,64,480,416)
  35.    #这行可以不用
  36.    self.contents = Bitmap.new(width - 32, height - 32)
  37.    self.opacity = 255
  38.    @index = index
  39.    #这里我要说明一句,之所以用sprite是为了放缩图片
  40.    @sprite = Sprite.new
  41.    @sprite.visible = false
  42.    @sprite.z = 100
  43.    @sp_ch = []
  44.    @sp_ch[0] = Sprite.new
  45.    refresh
  46. end
  47. def refresh
  48.    self.contents.clear
  49.    for i in @sp_ch
  50.      i.visible = false
  51.    end
  52.    @sprite.visible = false
  53.    if FileTest.exist?(DIR+"Save#{@index}.rxdata")
  54.      @sprite.visible = true
  55.      if FileTest.exist?(DIR+"Save#{@index}.jpg")
  56.        @sprite.bitmap = Bitmap.new(DIR+"Save#{@index}.jpg")
  57.      else
  58.        self.contents.draw_text(32,64,400,32,"截图似乎有点问题……您搞什么了您?")
  59.      end
  60.      @sprite.x = 290
  61.      @sprite.y = 96
  62.      @sprite.z = 998
  63.      @sprite.zoom_x = 0.5
  64.      @sprite.zoom_y = 0.5
  65.      file = File.open(DIR+"Save#{@index}.rxdata", "r")
  66.      @time_stamp = file.mtime
  67.      @characters = Marshal.load(file)
  68.      @frame_count = Marshal.load(file)
  69.      @game_system = Marshal.load(file)
  70.      @game_switches = Marshal.load(file)
  71.      @game_variables = Marshal.load(file)
  72.      @total_sec = @frame_count / Graphics.frame_rate
  73.      file.close
  74.      for i in [email protected]
  75.        @sp_ch[i] = Sprite.new
  76.        @sp_ch[i].visible = true
  77.        testname = @characters[i][2].name+"_f"
  78.        @sp_ch[i].bitmap = Bitmap.new("Graphics/battlers/#{testname}")
  79.        @sp_ch[i].zoom_x = 0.8
  80.        @sp_ch[i].zoom_y = 0.8
  81.        @sp_ch[i].x = 180        
  82.        @sp_ch[i].y = 96 + i*90
  83.        @sp_ch[i].z = 101
  84.      end
  85.      # 描绘游戏时间
  86.      hour = @total_sec / 60 / 60
  87.      min = @total_sec / 60 % 60
  88.      sec = @total_sec % 60
  89.      time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
  90.      self.contents.font.color = normal_color
  91.      self.contents.draw_text(4, 326, 420, 32, time_string, 2)
  92.      # 描绘时间标记
  93.      self.contents.font.color = normal_color
  94.      time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
  95.      self.contents.draw_text(4, 356, 420, 32, time_string, 2)
  96.    else
  97.      self.contents.draw_text(32,32,420,32,"这个存档是空的")
  98.    end

  99. end
  100. def dispose
  101.    super
  102.    @sprite.dispose
  103.    @backsp.dispose
  104.    for i in @sp_ch
  105.      i.dispose
  106.    end
  107. end
  108. end


  109. class Window_File2 < Window_Base
  110. attr_accessor :index
  111. def initialize(index = 0)
  112.    @backsp = Sprite.new
  113.    #@backsp.bitmap = Bitmap.new("Graphics/Pictures/pass")
  114.    @backsp.z = 100
  115.    super(160,0,480,480)
  116.    #这行可以不用
  117.    self.contents = Bitmap.new(width - 32, height - 32)
  118.    @index = index
  119.    #这里我要说明一句,之所以用sprite是为了放缩图片
  120.    @sprite = Sprite.new
  121.    @sprite.visible = false
  122.    @sprite.z = 100
  123.    @sp_ch = []
  124.    @sp_ch[0] = Sprite.new
  125.    refresh
  126. end
  127. def refresh
  128.    self.contents.clear
  129.    for i in @sp_ch
  130.      i.visible = false
  131.    end
  132.    @sprite.visible = false
  133.    if FileTest.exist?(DIR+"Save#{@index}.rxdata")
  134.      @sprite.visible = true
  135.      if FileTest.exist?(DIR+"Save#{@index}.jpg")
  136.        @sprite.bitmap = Bitmap.new(DIR+"Save#{@index}.jpg")
  137.      else
  138.        self.contents.draw_text(32,64,400,32,"截图似乎有点问题……您搞什么了您?")
  139.      end
  140.      @sprite.x = 290
  141.      @sprite.y = 32
  142.      @sprite.z = 998
  143.      @sprite.zoom_x = 0.5
  144.      @sprite.zoom_y = 0.5
  145.      file = File.open(DIR+"Save#{@index}.rxdata", "r")
  146.      @time_stamp = file.mtime
  147.      @characters = Marshal.load(file)
  148.      @frame_count = Marshal.load(file)
  149.      @game_system = Marshal.load(file)
  150.      @game_switches = Marshal.load(file)
  151.      @game_variables = Marshal.load(file)
  152.      @total_sec = @frame_count / Graphics.frame_rate
  153.      file.close
  154.      for i in [email protected]
  155.        @sp_ch[i] = Sprite.new
  156.        @sp_ch[i].visible = true
  157.        testname = @characters[i][2].name+"_f" #修改
  158.        @sp_ch[i].bitmap = Bitmap.new("Graphics/battlers/#{testname}")
  159.        @sp_ch[i].x = 180        
  160.        @sp_ch[i].y = 24 + i*110
  161.        @sp_ch[i].z = 101
  162.      end
  163.      # 描绘游戏时间
  164.      hour = @total_sec / 60 / 60
  165.      min = @total_sec / 60 % 60
  166.      sec = @total_sec % 60
  167.      time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
  168.      self.contents.font.color = normal_color
  169.      self.contents.draw_text(4, 390, 420, 32, time_string, 2)
  170.      # 描绘时间标记
  171.      self.contents.font.color = normal_color
  172.      time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
  173.      self.contents.draw_text(4, 420, 420, 32, time_string, 2)
  174.    else
  175.      self.contents.draw_text(32,32,420,32,"这个存档是空的")
  176.    end

  177. end
  178. def dispose
  179.    super
  180.    @sprite.dispose
  181.    @backsp.dispose
  182.    for i in @sp_ch
  183.      i.dispose
  184.    end
  185. end
  186. end



  187. $打开自动存档用的开关编号 = 999
  188. $自动存档位置 = 1
  189. $按下F5之后的自动存档的音效 = "Audio/SE/系统存档"
  190. $按下F5之后禁止存档时候的音效 = "Audio/Se/系统错误"
  191. DIR = "Save/"
  192. $打开自动存档开关之后调用的公共事件 = 0 #——默认未定义
  193. $按下F5之后可以存档调用的公共事件 = 0 #——默认未定义
  194. $按下F5之后禁止存档调用的公共事件 = 0 #——默认未定义
  195. class Scene_Map
  196. alias auto_update update
  197. def update
  198. auto_update
  199. #——按下F5的时候自动存档,可以修改为F5,F6,F7,F8,也可以修改成默认按键但是不推荐。
  200. #——注意在不可存档的时候是无效的
  201. if Input.trigger?(Input::F5)
  202.   unless $game_system.map_interpreter.running?
  203.   if $game_system.save_disabled
  204.     Audio.se_play($按下F5之后禁止存档时候的音效)
  205.     $game_temp.common_event_id = $按下F5之后禁止存档调用的公共事件
  206.   else
  207.     Audio.se_play($按下F5之后的自动存档的音效)
  208.     $game_temp.common_event_id = $按下F5之后可以存档调用的公共事件
  209.     auto_save
  210.   end
  211.   end
  212. end
  213. #——当BOSS战之前打开一下定义的开关,即可自动存档
  214. if $game_switches[$打开自动存档用的开关编号] == true
  215.   $game_switches[$打开自动存档用的开关编号] = false
  216.   $game_temp.common_event_id = $打开自动存档开关之后调用的公共事件
  217.   auto_save
  218. end
  219. end
  220. def auto_save
  221. #——这里定义了储存的文件,如果不希望用Save4可以自己修改编号
  222. # 写入存档数据
  223. Screen::shot
  224.     file = File.open( DIR+"Save#{$自动存档位置}.rxdata", "wb")
  225.     auto_save_data(file)
  226.     if FileTest.exist?( DIR+"shot.jpg")
  227.       File.rename( DIR+"shot.jpg", DIR+"Save#{$自动存档位置}.jpg")
  228.     end
  229.     file.close
  230. end
  231. def auto_save_data(file)
  232. #——以下定义内容和Scene_Save的write_save_data(file)完全一样
  233. #——如果你修改过该存档方法,不要忘记用你修改的覆盖这部分内容。
  234. # 生成描绘存档文件用的角色图形
  235. characters = []
  236. for i in 0...$game_party.actors.size
  237.   actor = $game_party.actors[i]
  238.   characters.push([actor.character_name, actor.character_hue, actor])
  239. end
  240. # 写入描绘存档文件用的角色数据
  241. Marshal.dump(characters, file)
  242. # 写入测量游戏时间用画面计数
  243. Marshal.dump(Graphics.frame_count, file)
  244. # 增加 1 次存档次数
  245. $game_system.save_count += 1
  246. # 保存魔法编号
  247. # (将编辑器保存的值以随机值替换)
  248. $game_system.magic_number = $data_system.magic_number
  249. # 写入各种游戏对像
  250. Marshal.dump($game_system, file)
  251. Marshal.dump($game_switches, file)
  252. Marshal.dump($game_variables, file)
  253. Marshal.dump($game_self_switches, file)
  254. Marshal.dump($game_screen, file)
  255. Marshal.dump($game_actors, file)
  256. Marshal.dump($game_party, file)
  257. Marshal.dump($game_troop, file)
  258. Marshal.dump($game_map, file)
  259. Marshal.dump($game_player, file)
  260. end
  261. end







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


  263. module Screen  
  264. @screen = Win32API.new 'screenshot', 'Screenshot', %w(l l l l p l l), ''
  265. @readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l

  266. p), 'l'
  267. @findwindow = Win32API.new 'user32', 'FindWindowA', %w(p p), 'l'
  268. module_function
  269. def shot(file = "shot", typ = 1)
  270.    # to add the right extension...
  271.    if typ == 0
  272.      typname = ".bmp"
  273.    elsif typ == 1
  274.      typname = ".jpg"
  275.    elsif typ == 2
  276.      typname = ".png"
  277.    end   
  278.    file_index = 0   
  279.    dir = "Save/"   
  280.    # make the filename....
  281.    file_name = dir + file.to_s + typname.to_s   
  282.    # make the screenshot.... Attention dont change anything from here on....
  283.    @screen.call(0,0,640,480,file_name,handel,typ)
  284. end
  285. # find the game window...
  286. def handel
  287.    game_name = "\0" * 256
  288.    @readini.call('Game','Title','',game_name,255,".\\Game.ini")
  289.    game_name.delete!("\0")
  290.    return @findwindow.call('RGSS Player',game_name)
  291. end
  292. end


  293. class Scene_Menu
  294. alias shotsave_main main
  295. def main
  296.    if @menu_index == 0
  297.      Screen::shot
  298.    end   
  299.    shotsave_main
  300. end
  301. end

  302. class Interpreter
  303. #--------------------------------------------------------------------------
  304. # ● 调用存档画面
  305. #--------------------------------------------------------------------------
  306. def command_352
  307.    # 设置战斗中断标志
  308.    $game_temp.battle_abort = true
  309.    # 设置调用存档标志
  310.    $game_temp.save_calling = true
  311.    # 推进索引
  312.    @index += 1
  313.    # 结束
  314.    Screen::shot
  315.    return false
  316. end
  317. end

  318. #==============================================================================
  319. # ■ Scene_Load
  320. #------------------------------------------------------------------------------
  321. #  处理读档画面的类。
  322. #==============================================================================

  323. class Scene_Load
  324. #--------------------------------------------------------------------------
  325. # ● 初始化对像
  326. #--------------------------------------------------------------------------
  327. def initialize
  328.    # 再生成临时对像
  329.    $game_temp = Game_Temp.new
  330.    # 选择存档时间最新的文件
  331.    $game_temp.last_file_index = 0
  332.    latest_time = Time.at(0)
  333.    for i in 0..51
  334.      filename = DIR+"Save#{i}.rxdata"
  335.      if FileTest.exist?(filename)
  336.        file = File.open(filename, "r")
  337.        if file.mtime > latest_time
  338.          latest_time = file.mtime
  339.          $game_temp.last_file_index = i
  340.        end
  341.        file.close
  342.      end
  343.    end
  344. end  
  345. def main
  346.    @command_window = Window_Command.new(160,["自动存档","快速存档","回忆二",
  347.    "回忆三","回忆四","回忆五","回忆六","回忆七","回忆八","回忆九","回忆十",
  348.    "回忆十一","回忆十二","回忆十三","回忆十四","回忆十五","回忆十六",
  349.    "回忆十七","回忆十八","回忆十九","回忆二十","回忆二一","回忆二二",
  350.    "回忆二三","回忆二四","回忆二五","回忆二六","回忆二七","回忆二八",
  351.    "回忆二九","回忆三十"])
  352.    @command_window.y = 0
  353.    @command_window.height = 480
  354.    @command_window.index = $game_temp.last_file_index
  355.    @content_window = Window_File2.new($game_temp.last_file_index)
  356.    # 执行过渡
  357.    Graphics.transition
  358.    # 主循环
  359.    loop do
  360.      # 刷新游戏画面
  361.      Graphics.update
  362.      # 刷新输入信息
  363.      Input.update
  364.      # 刷新画面
  365.      update
  366.      # 如果画面被切换的话就中断循环
  367.      if $scene != self
  368.        break
  369.      end
  370.    end
  371.    # 准备过渡
  372.    Graphics.freeze
  373.    @command_window.dispose
  374.    @content_window.dispose
  375. end
  376. def update
  377.    @command_window.update
  378.    if @command_window.index != @content_window.index
  379.      @content_window.index = @command_window.index
  380.      @content_window.refresh
  381.    end   
  382.    #——————下面这一部分是原装脚本——————#
  383.    if Input.trigger?(Input::B)  
  384.    # 演奏取消 SE
  385.    $game_system.se_play($data_system.cancel_se)
  386.    # 切换到标题画面
  387.    $scene = Scene_Title.new
  388.    end   
  389.    #———————————————————————#   
  390.    if Input.trigger?(Input::C)
  391.      # 文件不存在的情况下
  392.      unless FileTest.exist?(DIR+"Save#{@command_window.index}.rxdata")
  393.        # 演奏冻结 SE
  394.        $game_system.se_play($data_system.buzzer_se)
  395.        return
  396.      end
  397.      # 演奏读档 SE
  398.      $game_system.se_play($data_system.load_se)
  399.      # 写入存档数据
  400.      file = File.open(DIR+"Save#{@command_window.index}.rxdata",

  401. "rb")
  402.      read_save_data(file)
  403.      file.close
  404.      # 还原 BGM、BGS
  405.      $game_system.bgm_play($game_system.playing_bgm)
  406.      $game_system.bgs_play($game_system.playing_bgs)
  407.      # 刷新地图 (执行并行事件)
  408.      $game_map.update
  409.      # 切换到地图画面
  410.      $scene = Scene_Map.new
  411.    end
  412.    #———————————————————————#
  413. end
  414. #--------------------------------------------------------------------------
  415. # ● 写入存档数据
  416. #     file : 写入用文件对像 (已经打开)
  417. #--------------------------------------------------------------------------
  418. def read_save_data(file)
  419.    # 读取描绘存档文件用的角色数据
  420.    characters = Marshal.load(file)
  421.    # 读取测量游戏时间用画面计数
  422.    Graphics.frame_count = Marshal.load(file)
  423.    # 读取各种游戏对像
  424.    $game_system        = Marshal.load(file)
  425.    $game_switches      = Marshal.load(file)
  426.    $game_variables     = Marshal.load(file)
  427.    $game_self_switches = Marshal.load(file)
  428.    $game_screen        = Marshal.load(file)
  429.    $game_actors        = Marshal.load(file)
  430.    $game_party         = Marshal.load(file)
  431.    $game_troop         = Marshal.load(file)
  432.    $game_map           = Marshal.load(file)
  433.    $game_player        = Marshal.load(file)
  434.    # 魔法编号与保存时有差异的情况下
  435.    # (加入编辑器的编辑过的数据)
  436.    if $game_system.magic_number != $data_system.magic_number
  437.      # 重新装载地图
  438.      $game_map.setup($game_map.map_id)
  439.      $game_player.center($game_player.x, $game_player.y)
  440.    end
  441.    # 刷新同伴成员
  442.    $game_party.refresh
  443. end
  444. end

  445. #==============================================================================
  446. #  Window_LoadCommand
  447. #------------------------------------------------------------------------------
  448. #  存取档画面选择按钮窗口
  449. #==============================================================================

  450. class Window_LoadCommand < Window_Selectable
  451. #--------------------------------------------------------------------------
  452. #  初始化对象
  453. #--------------------------------------------------------------------------
  454. def initialize
  455. super(320, 0, 320, 64)
  456. self.contents = Bitmap.new(width - 32, height - 32)
  457. self.contents.font.color = normal_color
  458. @item_max = 2
  459. @column_max = 2
  460. @commands = ["读取", "存储"]
  461. refresh
  462. self.index = 0
  463. end
  464. #--------------------------------------------------------------------------
  465. #  刷新
  466. #--------------------------------------------------------------------------
  467. def refresh
  468. self.contents.clear
  469. for i in 0...@item_max
  470.    draw_item(i)
  471. end
  472. end
  473. #--------------------------------------------------------------------------
  474. #  描画按钮文字
  475. #--------------------------------------------------------------------------
  476. def draw_item(index)
  477. x = 4 + index * 160
  478. self.contents.draw_text(x, 0, 144, 32, @commands[index])
  479. end
  480. #--------------------------------------------------------------------------
  481. # ● 项目无效化
  482. #     index : 项目编号
  483. #--------------------------------------------------------------------------
  484. def disable_item(index)
  485.    draw_item(index, disabled_color)
  486. end

  487. end

  488. #==============================================================================
  489. #  Scene_Loadsave
  490. #------------------------------------------------------------------------------
  491. # 处理存取档画面的类。
  492. #==============================================================================

  493. class Scene_Loadsave
  494. #--------------------------------------------------------------------------
  495. # ● 初始化对像
  496. #     $last_savefile_index : 记录光标位置
  497. #--------------------------------------------------------------------------
  498. def initialize
  499.    $last_savefile_index = 0 if $last_savefile_index == nil
  500.    # 再生成临时对像
  501.    $game_temp = Game_Temp.new
  502.    # 选择存档时间最新的文件
  503.    $game_temp.last_file_index = 0
  504.    latest_time = Time.at(0)
  505.    for i in 0..51
  506.      filename =  DIR+"Save#{i}.rxdata"
  507.      if FileTest.exist?(filename)
  508.        file = File.open(filename, "r")
  509.        if file.mtime > latest_time
  510.          latest_time = file.mtime
  511.          $game_temp.last_file_index = i
  512.        end
  513.        file.close
  514.      end
  515.    end
  516. end
  517. #--------------------------------------------------------------------------
  518. #  主处理
  519. #--------------------------------------------------------------------------
  520. def main         

  521.    @savestate = 0
  522.    # 生成窗口
  523.    @help_window = Window_LoadHelp.new
  524.    @help_window.set_text("请选择.")
  525.    @option_window = Window_LoadCommand.new
  526.    @option_window.index = $last_savefile_index
  527.    ########################################################
  528.    @command_window = Window_Command.new(160,["自动存档","快速存档","回忆二",
  529.      "回忆三","回忆四","回忆五","回忆六","回忆七","回忆八","回忆九","回忆十",
  530.      "回忆十一","回忆十二","回忆十三","回忆十四","回忆十五","回忆十六",
  531.      "回忆十七","回忆十八","回忆十九","回忆二十","回忆二一","回忆二二",
  532.      "回忆二三","回忆二四","回忆二五","回忆二六","回忆二七","回忆二八",
  533.      "回忆二九","回忆三十"])
  534.      @command_window.y = 64
  535.      @command_window.height = 416
  536.      @command_window.index = $game_temp.last_file_index
  537.      @content_window = Window_File.new($game_temp.last_file_index)
  538.      @command_window.active = false
  539.        ###############覆盖存档
  540.        @confirm_window = Window_Base.new(120, 188, 400, 64)
  541.        @confirm_window.contents = Bitmap.new(368, 32)

  542.        @confirm_window.contents.font.color = Color.new(255,255,255,255)

  543.        string = "确定要覆盖这个回忆吗?"
  544.        @confirm_window.contents.font.name = "黑体"
  545.        @confirm_window.contents.font.size = 24
  546.        @confirm_window.contents.draw_text(4, 0, 368, 32, string)
  547.        @yes_no_window = Window_Command.new(100, ["覆盖", "取消"])
  548.        @confirm_window.z = 1500
  549.        @yes_no_window.index = 1
  550.        @yes_no_window.x = 270
  551.        @yes_no_window.y = 252
  552.        @yes_no_window.z = 1500
  553.        @confirm_window.visible = false
  554.        @yes_no_window.visible = false
  555.        @yes_no_window.active = false

  556.    # 执行过渡
  557.    Graphics.transition
  558.    # 主循环
  559.    loop do
  560.      # 刷新游戏画面
  561.      Graphics.update
  562.      # 刷新输入信息
  563.      Input.update
  564.      # 刷新画面
  565.      update
  566.      # 如果画面被切换的话就中断循环
  567.      if $scene != self
  568.        break
  569.      end
  570.    end
  571.    # 准备过渡
  572.    Graphics.freeze
  573.    # 释放窗口
  574.    @command_window.dispose
  575.    @content_window.dispose
  576.    @confirm_window.dispose
  577.    @yes_no_window.dispose
  578.    @help_window.dispose
  579.    @option_window.dispose
  580. end

  581. #--------------------------------------------------------------------------
  582. #  ● 刷新画面
  583. #--------------------------------------------------------------------------
  584. def update
  585.    # 刷新窗口
  586.    @help_window.update
  587.    @option_window.update
  588. #   @content_window.update
  589.    @command_window.update
  590.    if @yes_no_window.active
  591.        confirm_update
  592.        return
  593.    end
  594.    @content_window.index = @command_window.index
  595.    @content_window.refresh
  596.    case @savestate
  597.    when 0
  598.        if Input.trigger?(Input::B)
  599.        $game_system.se_play($data_system.cancel_se)
  600.        # 返回地图
  601.        if $menu_call == false
  602.        # 切换到地图画面
  603.        $scene = Scene_Map.new
  604.          return
  605.        end
  606.        # 切换到菜单画面
  607.        $menu_call = false
  608.        $scene = Scene_Map.new
  609.     end
  610.      if Input.trigger?(Input::C)
  611.        case @option_window.index
  612.        when 0
  613.          @command_window.active = true
  614.          @option_window.active = false
  615.          $game_system.se_play($data_system.decision_se)
  616.          @help_window.set_text("请选择一个文件进行读取.")
  617.          @savestate  = 1
  618.          return
  619.        when 1
  620.          @command_window.active = true
  621.          @option_window.active = false
  622.          $game_system.se_play($data_system.decision_se)
  623.          @help_window.set_text("请选择一个文件进行存储.")
  624.          @savestate = 2
  625.          
  626.          return
  627.        return
  628.        end
  629.      end
  630.    when 1,2
  631.      if Input.trigger?(Input::C)
  632.        if @savestate == 1
  633.          $menu_call = false
  634.          load_file
  635.          return
  636.        else
  637.          # 禁止存档的情况下
  638.          if $game_system.save_disabled
  639.            @help_window.set_text("抱歉,这里禁止存储.")
  640.            # 演奏冻结 SE
  641.            $game_system.se_play($data_system.buzzer_se)
  642.            return
  643.          end
  644.         $game_system.se_play($data_system.decision_se)
  645.         $last_savefile_index = @option_window.index

  646.         save_file
  647.          return
  648.        end
  649.      end
  650.      # 取消
  651.      if Input.trigger?(Input::B)
  652.        $game_system.se_play($data_system.cancel_se)
  653.        @command_window.active = false
  654.        @help_window.set_text("请选择.")
  655.        @savestate = 0
  656.        @option_window.active = true
  657.        return
  658.      end
  659.      
  660.      if Input.trigger?(Input::B)
  661.        $game_system.se_play($data_system.cancel_se)
  662.        @savestate = 2
  663.        @command_window.active = true

  664.        return
  665.      end
  666.    end
  667. end
  668. #--------------------------------------------------------------------------
  669. # 建立记录文件索引
  670. #--------------------------------------------------------------------------

  671. #--------------------------------------------------------------------------
  672. #  读取记录文件
  673. #     filename  : 被读取文件
  674. #--------------------------------------------------------------------------
  675. def load_file
  676.      # 文件不存在的情况下
  677.      unless FileTest.exist?( DIR+"Save#{@command_window.index}.rxdata")
  678.        # 演奏冻结 SE
  679.        $game_system.se_play($data_system.buzzer_se)
  680.        return
  681.      end
  682.      # 演奏读档 SE
  683.      $game_system.se_play($data_system.load_se)
  684.      # 写入存档数据
  685.      file = File.open( DIR+"Save#{@command_window.index}.rxdata", "rb")
  686.      read_save_data(file)
  687.      file.close
  688.      # 还原 BGM、BGS
  689.      $game_system.bgm_play($game_system.playing_bgm)
  690.      $game_system.bgs_play($game_system.playing_bgs)
  691.      # 刷新地图 (执行并行事件)
  692.      $game_map.update
  693.      # 切换到地图画面
  694.      $scene = Scene_Map.new
  695. end
  696. #--------------------------------------------------------------------------
  697. # ● 读取存档数据
  698. #     file : 读取用文件对像 (已经打开)
  699. #--------------------------------------------------------------------------
  700. def read_save_data(file)
  701.    # 读取描绘存档文件用的角色数据
  702.    characters = Marshal.load(file)
  703.    # 读取测量游戏时间用画面计数
  704.    Graphics.frame_count = Marshal.load(file)
  705.    # 读取各种游戏对像
  706.    $game_system        = Marshal.load(file)
  707.    $game_switches      = Marshal.load(file)
  708.    $game_variables     = Marshal.load(file)
  709.    $game_self_switches = Marshal.load(file)
  710.    $game_screen        = Marshal.load(file)
  711.    $game_actors        = Marshal.load(file)
  712.    $game_party         = Marshal.load(file)
  713.    $game_troop         = Marshal.load(file)
  714.    $game_map           = Marshal.load(file)
  715.    $game_player        = Marshal.load(file)
  716.    # 魔法编号与保存时有差异的情况下
  717.    # (加入编辑器的编辑过的数据)
  718.    if $game_system.magic_number != $data_system.magic_number
  719.      # 重新装载地图
  720.      $game_map.setup($game_map.map_id)
  721.      $game_player.center($game_player.x, $game_player.y)
  722.    end
  723.    # 刷新同伴成员
  724.    $game_party.refresh
  725. end
  726. #--------------------------------------------------------------------------
  727. # ● 写入存档文件
  728. #--------------------------------------------------------------------------
  729. def save_file
  730.    if Input.trigger?(Input::C)
  731.      unless FileTest.exist?( DIR+"Save#{@command_window.index}.rxdata")
  732.        # 演奏冻结 SE
  733.        # 演奏存档 SE
  734.          $game_system.se_play($data_system.save_se)
  735.          # 写入存档数据
  736.          file = File.open( DIR+"Save#{@command_window.index}.rxdata", "wb")
  737.          write_save_data(file)
  738.          if FileTest.exist?( DIR+"shot.jpg")
  739.            File.rename( DIR+"shot.jpg",  DIR+"Save#{@command_window.index}.jpg")
  740.          end
  741.          file.close
  742.          $game_temp.last_file_index = @command_window.index
  743.          # 如果被事件调用
  744.          if $game_temp.save_calling
  745.            # 清除存档调用标志
  746.            $game_temp.save_calling = false
  747.            @confirm_window.dispose
  748.            # 切换到地图画面
  749.            $scene = Scene_Map.new   
  750.            return
  751.          end
  752.        # 切换到菜单画面
  753.          $scene = Scene_Map.new  
  754.      end
  755.      @yes_no_window.active = true
  756.      @command_window.active = false            
  757.    end
  758.    #———————————————————————#     
  759. end
  760. #-------------------------------------------------------------------
  761. def confirm_update
  762.    @command_index = @command_window.index
  763.    @confirm_window.visible = true
  764.    @confirm_window.z = 1500
  765.    @yes_no_window.visible = true
  766.    @yes_no_window.active = true
  767.    @yes_no_window.z = 1500
  768.    @yes_no_window.update
  769.    if Input.trigger?(Input::C)
  770.      if @yes_no_window.index == 0
  771.          #######################################################
  772.          # 演奏存档 SE
  773.          $game_system.se_play($data_system.save_se)
  774.          # 写入存档数据
  775.          file = File.open( DIR+"Save#{@command_window.index}.rxdata", "wb")
  776.          write_save_data(file)
  777.          if FileTest.exist?( DIR+"shot.jpg")
  778.            File.rename( DIR+"shot.jpg",  DIR+"Save#{@command_window.index}.jpg")
  779.          end
  780.          file.close
  781.          $game_temp.last_file_index = @command_window.index
  782.          # 如果被事件调用
  783.          if $game_temp.save_calling
  784.            # 清除存档调用标志
  785.            $game_temp.save_calling = false
  786.            @confirm_window.dispose
  787.            @content_window.dispose
  788.            # 切换到地图画面
  789.            $scene = Scene_Map.new
  790.    
  791.            return
  792.          end
  793.        # 切换到菜单画面
  794.          $scene = Scene_Map.new        
  795.        else
  796.        @yes_no_window.visible = false
  797.        @confirm_window.visible = false
  798.        $game_system.se_play($data_system.cancel_se)
  799.        @yes_no_window.active = false
  800.        @command_window.active = true
  801.        end
  802.    end
  803.    if Input.trigger?(Input::B)
  804.      @yes_no_window.visible = false
  805.      @confirm_window.visible = false
  806.      $game_system.se_play($data_system.cancel_se)
  807.      @yes_no_window.active = false
  808.      @command_window.active = true
  809.    end
  810. end
  811. #--------------------------------------------------------------------------
  812. # ● 写入存档数据
  813. #     file : 写入用文件对像 (已经打开)
  814. #--------------------------------------------------------------------------
  815. def write_save_data(file)
  816.    # 生成描绘存档文件用的角色图形
  817.    characters = []
  818.    for i in 0...$game_party.actors.size
  819.      actor = $game_party.actors[i]
  820.      characters.push([actor.character_name, actor.character_hue, actor])
  821.    end
  822.    # 写入描绘存档文件用的角色数据
  823.    Marshal.dump(characters, file)
  824.    # 写入测量游戏时间用画面计数
  825.    Marshal.dump(Graphics.frame_count, file)
  826.    # 增加 1 次存档次数
  827.    $game_system.save_count += 1
  828.    # 保存魔法编号
  829.    # (将编辑器保存的值以随机值替换)
  830.    $game_system.magic_number = $data_system.magic_number
  831.    # 写入各种游戏对像
  832.    Marshal.dump($game_system, file)
  833.    Marshal.dump($game_switches, file)
  834.    Marshal.dump($game_variables, file)
  835.    Marshal.dump($game_self_switches, file)
  836.    Marshal.dump($game_screen, file)
  837.    Marshal.dump($game_actors, file)
  838.    Marshal.dump($game_party, file)
  839.    Marshal.dump($game_troop, file)
  840.    Marshal.dump($game_map, file)
  841.    Marshal.dump($game_player, file)
  842. end
  843. end

  844. #==============================================================================
  845. # ■ Window_LoadHelp
  846. #------------------------------------------------------------------------------
  847. #  存取档画面帮助信息的显示窗口。
  848. #==============================================================================

  849. class Window_LoadHelp < Window_Base
  850. #--------------------------------------------------------------------------
  851. #  初始化对象
  852. #--------------------------------------------------------------------------
  853. def initialize
  854. super(0, 0, 320, 64)
  855. self.contents = Bitmap.new(width - 32, height - 32)
  856. end
  857. #--------------------------------------------------------------------------
  858. #  刷新文本
  859. #--------------------------------------------------------------------------
  860. def set_text(text, align = 1)
  861. if text != @text or align != @align
  862.    self.contents.clear
  863.    self.contents.font.color = normal_color
  864.    self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
  865.    @text = text
  866.    @align = align
  867.    @actor = nil
  868. end
  869. self.visible = true
  870. end
  871. end
复制代码


换行的HELP

  1. #==============================================================================
  2. # ◎ GPRA_Window_Help
  3. #------------------------------------------------------------------------------
  4. # ◎ 特技及物品的说明、角色的状态显示的窗口加强。
  5. #------------------------------------------------------------------------------
  6. # 制作者:绿梨子红苹果
  7. # 个人主页:vbgm.9126.com
  8. # E-Mail:[email protected]
  9. # QQ:42378361
  10. #==============================================================================

  11. class Window_Help < Window_Base
  12. #--------------------------------------------------------------------------
  13. # ● 初始化对像
  14. #--------------------------------------------------------------------------
  15. def initialize
  16.    super(360, 60, 240, 104)
  17.    self.contents = Bitmap.new(width - 32, height - 32)
  18. end
  19. #--------------------------------------------------------------------------
  20. # ● 设置文本
  21. #     text  : 窗口显示的字符串
  22. #     align : 对齐方式
  23. #--------------------------------------------------------------------------
  24. def set_text(text, align = 0)
  25.    # 如果文本和对齐方式的至少一方与上次的不同
  26.    if text != @text or align != @align
  27.      # 清空原来的文字内容
  28.      self.contents.clear
  29.      # 设置颜色为默认颜色
  30.      self.contents.font.color = normal_color
  31.      # 定义变量记录文字行数
  32.      l=0
  33.      # 定义数组分别记录每行文字内容
  34.      s=["","",""]
  35.      # 利用临时变量存储text内容
  36.      temp=text.dup
  37.      # 首先处理文本,将"\\n"全部替换成换行符"\n"
  38.      temp.gsub!(/\\n/) { "\n" }
  39.      # c 获取 1 个字 (如果不能取得文字就退出循环)
  40.      while ((c = temp.slice!(/./m)) != nil)
  41.        # 另起一行文字的情况下
  42.        if c == "\n"
  43.          # 当超过3行时(0行开始,所以这里是2)
  44.          if l >= 2
  45.            # 退出循环体
  46.            break
  47.          end
  48.          # 否则l自增1
  49.          l += 1
  50.        end
  51.        # 不是换行符的其他情况
  52.        s[l]=s[l]+c
  53.      end
  54.      # 根据文字的行数进行不同的绘制
  55.      case l
  56.      when 0
  57.        self.contents.draw_text(4, 32, self.width - 40, 32, s[0], align)
  58.      when 1
  59.        self.contents.draw_text(4, 16, self.width - 40, 32, s[0], align)
  60.        self.contents.draw_text(4, 48, self.width - 40, 32, s[1], align)
  61.      when 2
  62.        self.contents.draw_text(4, 0, self.width - 40, 32, s[0], align)
  63.        self.contents.draw_text(4, 32, self.width - 40, 32, s[1], align)
  64.        self.contents.draw_text(4, 64, self.width - 40, 32, s[2], align)
  65.      end
  66.      # 保存此次绘图时的参数值
  67.      @text = text
  68.      @align = align
  69.      @actor = nil
  70.    end
  71.    # 可见状态为真
  72.    self.visible = true
  73. end
  74. #--------------------------------------------------------------------------
  75. # ● 设置角色
  76. #     actor : 要显示状态的角色
  77. #--------------------------------------------------------------------------
  78. def set_actor(actor)
  79.    if actor != @actor
  80.      self.contents.clear
  81.      draw_actor_name(actor, 4, 0)
  82.      draw_actor_state(actor, 140, 0)
  83.      draw_actor_hp(actor, 284, 0)
  84.      draw_actor_sp(actor, 460, 0)
  85.      @actor = actor
  86.      @text = nil
  87.      self.visible = true
  88.    end
  89. end
  90. #--------------------------------------------------------------------------
  91. # ● 设置敌人
  92. #     enemy : 要显示名字和状态的敌人
  93. #--------------------------------------------------------------------------
  94. #def set_enemy(enemy)
  95.    #text = enemy.name
  96.    #state_text = make_battler_state_text(enemy,false)
  97.    #if state_text != ""
  98.      #text += " " + state_text
  99.    #end
  100.    #set_text(text, 1)
  101. #end
  102. end
复制代码

版务信息:本贴由楼主自主结贴~

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

2
发表于 2008-12-5 00:04:14 | 只看该作者
精灵:如果使用过脚本必须将原存档全部删除。 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
244 小时
注册时间
2008-1-25
帖子
312
3
 楼主| 发表于 2008-12-5 00:31:16 | 只看该作者
我是新存的档  并不是原来的档案
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

4
发表于 2008-12-5 00:51:19 | 只看该作者
以下引用new1984于2008-12-4 16:31:16的发言:

我是新存的档  并不是原来的档案

以前原来的档案也要全部删除,不保留。
最好上传范例工程。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
244 小时
注册时间
2008-1-25
帖子
312
5
 楼主| 发表于 2008-12-5 01:31:44 | 只看该作者
{/hx} 找到原因和解决办法了,还是非常谢谢你.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-20 21:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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