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

Project1

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

求讀取存檔功能!

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
30
在线时间
0 小时
注册时间
2008-5-26
帖子
3
跳转到指定楼层
1
发表于 2008-5-26 08:08:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
因為我不太會用腳本......
所以只能來求檔
想讓遊戲更加方便......

Lv1.梦旅人

邪恶小龙包

梦石
0
星屑
55
在线时间
17 小时
注册时间
2006-5-22
帖子
7006

第2届短篇游戏比赛冠军第3届短篇游戏大赛小游戏及其他组冠军RMVX自由创作大赛冠军

2
发表于 2008-5-26 08:10:06 | 只看该作者
……?
RMVX本身就有存档功能啊……
虚无  堕落
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
30
在线时间
0 小时
注册时间
2008-5-26
帖子
3
3
 楼主| 发表于 2008-5-26 08:14:51 | 只看该作者
我記得因該沒有讀取存檔吧......
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-5-12
帖子
239
4
发表于 2008-5-26 08:15:36 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
30
在线时间
0 小时
注册时间
2008-5-26
帖子
3
5
 楼主| 发表于 2008-5-26 08:17:13 | 只看该作者
恩....好像真有點麻煩XD
笨笨的= =
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
192
在线时间
35 小时
注册时间
2008-5-26
帖子
15
6
发表于 2008-5-26 08:40:18 | 只看该作者
最近学脚本,粗糙做了个,不嫌弃将就用下好了{/gg}

  1. #===========================================================================
  2. #1、调用方法:$Scene = Scene_System.new(上级菜单索引编号,从菜单进入?
  3. #             从事件进入(false)?从标题进入(false)?)
  4. #
  5. #2、from_event和from_title可以无视,还没弄--|||
  6. #   要去掉的话改下return_Scene好了
  7. #3、想不出啥了,改了下Window_Help的initialize方法:
  8. #    def initialize(x = 0, y = 0, width = 544, heigh = WLH + 32)
  9. #      super(x, y, width, heigh)
  10. #    end
  11. #===========================================================================
  12. #==============================================================================
  13. # ■ Scene_System
  14. #------------------------------------------------------------------------------
  15. #  处理游戏系统的画面,包括存档,读档,退出游戏。
  16. #==============================================================================
  17. class Scene_System < Scene_Base
  18.   #--------------------------------------------------------------------------
  19.   # ● 初始化对象
  20.   #     saving     : 存档标志 (false 为载入画面)
  21.   #     from_menu  : 从菜单进入
  22.   #     from_title : 调用标题画面的 "继续" 标志
  23.   #     from_event : 事件的 "调用存档画面" 的调用标志
  24.   #     main_menu_index :主菜单索引号
  25.   #--------------------------------------------------------------------------
  26.   def initialize(main_menu_index,from_menu, from_event = false, from_title=false)
  27.     @from_menu  = from_menu
  28.     @from_title = from_title
  29.     @from_event = from_event
  30.     @main_menu_index = main_menu_index
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 开始处理
  34.   #--------------------------------------------------------------------------
  35.   def start
  36.     super
  37.     create_menu_background
  38.     create_command_window
  39.     create_savefile_windows
  40.     create_help_window
  41.     create_determine_command_window
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 结束处理
  45.   #--------------------------------------------------------------------------
  46.   def terminate
  47.     super
  48.     dispose_menu_background
  49.     dispose_item_windows
  50.     @command_window.dispose
  51.     @help_window.dispose
  52.     @determine_command_window.dispose
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 还原至原先的画面
  56.   #--------------------------------------------------------------------------
  57.   def return_scene
  58.     if @from_title
  59.       $scene = Scene_Title.new
  60.     elsif @from_event
  61.       $scene = Scene_Map.new
  62.     else
  63.       $scene = Scene_Menu.new(@main_menu_index)
  64.     end
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 更新画面
  68.   #--------------------------------------------------------------------------
  69.   def update
  70.     super
  71.     update_menu_background
  72.     @help_window.update   
  73.     @command_window.update
  74.     @determine_command_window.update
  75.     update_savefile_windows
  76.     if @command_window.active
  77.       update_command_selection
  78.     elsif @savefile_windows[@index].active
  79.       update_savefile_selection
  80.     elsif @determine_command_window.active
  81.       update_determine_command_selection
  82.     end
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 创建指令窗口
  86.   #--------------------------------------------------------------------------
  87.   def create_command_window
  88.     s1 ="存    档"
  89.     s2 ="读    档"
  90.     s3 ="返回标题"
  91.     @command_window = Window_Command.new(544, [s1, s2, s3], 3, 1, 112)
  92.     @command_window.index = 0
  93.     if $game_system.save_disabled
  94.       @command_window.draw_item(0, false)
  95.     end
  96.    
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 更新指令选择
  100.   #--------------------------------------------------------------------------
  101.   def update_command_selection
  102. #   @determine_command_window.index = 0
  103.     if Input.trigger?(Input::B)
  104.       Sound.play_cancel
  105.       return_scene
  106.     elsif Input.trigger?(Input::C)
  107.       if $game_system.save_disabled and @command_window.index == 0
  108.         Sound.play_buzzer
  109.         return
  110.       end
  111.       Sound.play_decision
  112.       case @command_window.index
  113.       when 0    #存档
  114.         save_window(true)
  115.       when 1    #读档
  116.         save_window(false)
  117.       when 2    #返回标题画面
  118.         @command_window.active = false
  119.         help_determine_visible(true,true,"确定要返回标题画面吗?")
  120.       end
  121.     end
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● 是否可视化help和确定窗口,align :对齐方式 0,1,2
  125.   #--------------------------------------------------------------------------
  126.   def help_determine_visible(active = false,visible = false, text = "", align = 1)
  127.     @determine_command_window.active = active
  128.     @determine_command_window.visible = visible
  129.     @help_window.set_text(text,align)
  130.     @help_window.visible = visible
  131.   end
  132.   
  133.   #--------------------------------------------------------------------------
  134.   # ● 存取档窗口,初始化存档文件索引编号
  135.   #--------------------------------------------------------------------------
  136.   def save_window(save)
  137.       @saving = save
  138.       savefile_windows_visible_active(true,true)
  139.       @command_window.active = false
  140.       if @saving
  141.         @index = $game_temp.last_file_index
  142.       else
  143.         @index = self.latest_file_index
  144.       end
  145.       @savefile_windows[@index].selected = true

  146.   end

  147.   #--------------------------------------------------------------------------
  148.   # ● 创建帮助窗口
  149.   #--------------------------------------------------------------------------
  150.   def create_help_window
  151.     @help_window = Window_Help.new(0, 0, 272, 56)
  152.     @help_window.x = (544 - @help_window.width) / 2
  153.     @help_window.y = (416 - @help_window.height) / 2
  154.     @help_window.visible = false
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # ● 创建确认指令窗口
  158.   #--------------------------------------------------------------------------
  159.   def create_determine_command_window  
  160.     @determine_command_window = Window_Command.new(112,["否","是"],2,1,32)
  161.     @determine_command_window.x = (544 - @determine_command_window.width) / 2
  162.     @determine_command_window.y = @help_window.y + 56
  163.     @determine_command_window.active = false
  164.     @determine_command_window.visible = false
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● 更新确认窗口选择
  168.   #--------------------------------------------------------------------------
  169.   def update_determine_command_selection
  170.     case @command_window.index
  171.     when 0    #确认覆盖存档
  172.       @command_window.visible = false
  173.       help_determine_visible(true,true,"确定要覆盖原档案吗?")
  174.       if Input.trigger?(Input::C) and @determine_command_window.index == 0 or Input.trigger?(Input::B)
  175.         Sound.play_cancel
  176.         help_determine_visible
  177.         savefile_windows_visible_active(true,true)
  178.         @command_window.visible = true        
  179.       elsif Input.trigger?(Input::C) and @determine_command_window.index == 1
  180.         Sound.play_save
  181.         do_save
  182.         help_determine_visible
  183.         savefile_windows_visible_active(true,true)  
  184.         @command_window.visible = true
  185.       end     
  186.       
  187.     when 2    #确认返回标题画面

  188.       if Input.trigger?(Input::C) and @determine_command_window.index == 0 or Input.trigger?(Input::B)
  189.         Sound.play_cancel
  190.         help_determine_visible
  191.         @determine_command_window.active =false
  192.         @command_window.active = true
  193.       elsif Input.trigger?(Input::C) and @determine_command_window.index == 1
  194.         Sound.play_decision
  195.         $scene = Scene_Title.new
  196.       end
  197.     end
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ● 生成存档文件窗口
  201.   #--------------------------------------------------------------------------
  202.   def create_savefile_windows
  203.     @savefile_windows = []
  204.     for i in 0..3
  205.       @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
  206.     end
  207.     @item_max = 4
  208.     @index = $game_temp.last_file_index
  209.     savefile_windows_visible_active(false,false)
  210.   end
  211.      
  212.   #--------------------------------------------------------------------------
  213.   # ● 存档文件可见,活化
  214.   #--------------------------------------------------------------------------
  215.   def savefile_windows_visible_active(visible = true, active = true)
  216.     for i in 0...@item_max
  217.       @savefile_windows[i].visible = visible
  218.       @savefile_windows[i].active = active
  219.     end
  220.   end
  221.   
  222.   #--------------------------------------------------------------------------
  223.   # ● 释放存档文件
  224.   #--------------------------------------------------------------------------
  225.   def dispose_item_windows
  226.     for window in @savefile_windows
  227.       window.dispose
  228.     end
  229.   end
  230.   #--------------------------------------------------------------------------
  231.   # ● 更新存档文件窗口
  232.   #--------------------------------------------------------------------------
  233.   def update_savefile_windows
  234.     for window in @savefile_windows
  235.       window.update
  236.     end
  237.   end
  238.   #--------------------------------------------------------------------------
  239.   # ● 更新存档文件选择
  240.   #--------------------------------------------------------------------------
  241.   def update_savefile_selection
  242.     if Input.trigger?(Input::C)
  243.       determine_savefile
  244.     elsif Input.trigger?(Input::B)
  245.       Sound.play_cancel
  246.       savefile_windows_visible_active(false,false)
  247.       @command_window.active = true
  248.       @savefile_windows[@index].selected = false
  249.     else
  250.       last_index = @index
  251.       if Input.repeat?(Input::DOWN)
  252.         cursor_down(Input.trigger?(Input::DOWN))
  253.       end
  254.       if Input.repeat?(Input::UP)
  255.         cursor_up(Input.trigger?(Input::UP))
  256.       end
  257.       if @index != last_index
  258.         Sound.play_cursor
  259.         @savefile_windows[last_index].selected = false
  260.         @savefile_windows[@index].selected = true
  261.       end
  262.     end
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ● 确定存档文件
  266.   #--------------------------------------------------------------------------
  267.   def determine_savefile
  268.     if @saving
  269.       if @savefile_windows[@index].file_exist
  270.         @determine_command_window.index = 0
  271.         @determine_command_window.active = true
  272.         savefile_windows_visible_active(false,false)
  273.       else
  274.         Sound.play_save
  275.         do_save
  276.       end
  277.      
  278.     else
  279.       if @savefile_windows[@index].file_exist
  280.         Sound.play_load
  281.         do_load
  282.       else
  283.         Sound.play_buzzer
  284.         return
  285.       end
  286.     end
  287.     $game_temp.last_file_index = @index
  288.   end
  289.   #--------------------------------------------------------------------------
  290.   # ● 光标向下移动
  291.   #     wrap : 允许跳过
  292.   #--------------------------------------------------------------------------
  293.   def cursor_down(wrap)
  294.     if @index < @item_max - 1 or wrap
  295.       @index = (@index + 1) % @item_max
  296.     end
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ● 光标向上移动
  300.   #     wrap : 允许跳过
  301.   #--------------------------------------------------------------------------
  302.   def cursor_up(wrap)
  303.     if @index > 0 or wrap
  304.       @index = (@index - 1 + @item_max) % @item_max
  305.     end
  306.   end
  307.   #--------------------------------------------------------------------------
  308.   # ● 生成文件名
  309.   #     file_index : 存档文件索引 (0~3)
  310.   #--------------------------------------------------------------------------
  311.   def make_filename(file_index)
  312.     return "Save#{file_index + 1}.rvdata"
  313.   end
  314.   #--------------------------------------------------------------------------
  315.   # ● 按时间戳选择最新的文件
  316.   #--------------------------------------------------------------------------
  317.   def latest_file_index
  318.     index = 0
  319.     latest_time = Time.at(0)
  320.     for i in 0...@savefile_windows.size
  321.       if @savefile_windows[i].time_stamp > latest_time
  322.         latest_time = @savefile_windows[i].time_stamp
  323.         index = i
  324.       end
  325.     end
  326.     return index
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● 执行存档
  330.   #--------------------------------------------------------------------------
  331.   def do_save
  332.     file = File.open(@savefile_windows[@index].filename, "wb")
  333.     write_save_data(file)
  334.     file.close
  335.     dispose_item_windows
  336.     create_savefile_windows
  337.     @savefile_windows[@index].selected = true
  338.     savefile_windows_visible_active(true,true)
  339.   end
  340.   #--------------------------------------------------------------------------
  341.   # ● 执行载入
  342.   #--------------------------------------------------------------------------
  343.   def do_load
  344.     file = File.open(@savefile_windows[@index].filename, "rb")
  345.     read_save_data(file)
  346.     file.close
  347.     $scene = Scene_Map.new
  348.     RPG::BGM.fade(1500)
  349.     Graphics.fadeout(60)
  350.     Graphics.wait(40)
  351.     @last_bgm.play
  352.     @last_bgs.play
  353.   end
  354.   #--------------------------------------------------------------------------
  355.   # ● 写入存档数据
  356.   #     file : 写入文件用对象 (已经打开)
  357.   #--------------------------------------------------------------------------
  358.   def write_save_data(file)
  359.     characters = []
  360.     for actor in $game_party.members
  361.       characters.push([actor.character_name, actor.character_index])
  362.     end
  363.     $game_system.save_count += 1
  364.     $game_system.version_id = $data_system.version_id
  365.     @last_bgm = RPG::BGM::last
  366.     @last_bgs = RPG::BGS::last
  367.     Marshal.dump(characters,           file)
  368.     Marshal.dump(Graphics.frame_count, file)
  369.     Marshal.dump(@last_bgm,            file)
  370.     Marshal.dump(@last_bgs,            file)
  371.     Marshal.dump($game_system,         file)
  372.     Marshal.dump($game_message,        file)
  373.     Marshal.dump($game_switches,       file)
  374.     Marshal.dump($game_variables,      file)
  375.     Marshal.dump($game_self_switches,  file)
  376.     Marshal.dump($game_actors,         file)
  377.     Marshal.dump($game_party,          file)
  378.     Marshal.dump($game_troop,          file)
  379.     Marshal.dump($game_map,            file)
  380.     Marshal.dump($game_player,         file)
  381.   end
  382.   #--------------------------------------------------------------------------
  383.   # ● 读取存档数据
  384.   #     file : 读取文件用对象 (已经打开)
  385.   #--------------------------------------------------------------------------
  386.   def read_save_data(file)
  387.     characters           = Marshal.load(file)
  388.     Graphics.frame_count = Marshal.load(file)
  389.     @last_bgm            = Marshal.load(file)
  390.     @last_bgs            = Marshal.load(file)
  391.     $game_system         = Marshal.load(file)
  392.     $game_message        = Marshal.load(file)
  393.     $game_switches       = Marshal.load(file)
  394.     $game_variables      = Marshal.load(file)
  395.     $game_self_switches  = Marshal.load(file)
  396.     $game_actors         = Marshal.load(file)
  397.     $game_party          = Marshal.load(file)
  398.     $game_troop          = Marshal.load(file)
  399.     $game_map            = Marshal.load(file)
  400.     $game_player         = Marshal.load(file)
  401.     if $game_system.version_id != $data_system.version_id
  402.       $game_map.setup($game_map.map_id)
  403.       $game_player.center($game_player.x, $game_player.y)
  404.     end
  405.   end
  406. end

  407. #==============================================================================
  408. # ■ Window_Help
  409. #------------------------------------------------------------------------------
  410. #  特技及物品的说明、角色的状态显示的窗口。
  411. #==============================================================================

  412. class Window_Help < Window_Base
  413.   #--------------------------------------------------------------------------
  414.   # ● 初始化对象
  415.   #--------------------------------------------------------------------------
  416.   def initialize(x = 0, y = 0, width = 544, heigh = WLH + 32)
  417.     super(x, y, width, heigh)
  418.   end
  419.   #--------------------------------------------------------------------------
  420.   # ● 文本设置
  421.   #     text  : 窗口显示的字符串
  422.   #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  423.   #--------------------------------------------------------------------------
  424.   def set_text(text, align = 0)
  425.     if text != @text or align != @align
  426.       self.contents.clear
  427.       self.contents.font.color = normal_color
  428.       self.contents.draw_text(4, 0, self.width - 40, WLH, text, align)
  429.       @text = text
  430.       @align = align
  431.     end
  432.   end
  433. end
复制代码





版主对此帖的认可:『辛苦了,鼓勵一下』,积分『+40』。
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

7
发表于 2008-5-26 09:15:28 | 只看该作者
圖片看不見
請LS將截圖上傳至論壇附件
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
192
在线时间
35 小时
注册时间
2008-5-26
帖子
15
8
发表于 2008-5-26 18:27:36 | 只看该作者
以下引用snstar2006于2008-5-26 1:15:28的发言:

圖片看不見
請LS將截圖上傳至論壇附件

昨晚预览了N次,结果还是只能自己看见么{/gg}
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

9
发表于 2008-5-26 18:40:39 | 只看该作者
向放在這邊幾天
然後轉去技術區

不過,initialize裡面多了許多沒用的參數{/gg}
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
192
在线时间
35 小时
注册时间
2008-5-26
帖子
15
10
发表于 2008-5-26 18:56:55 | 只看该作者
以下引用snstar2006于2008-5-26 10:40:39的发言:

不過,initialize裡面多了許多沒用的參數


[本贴由作者于 2008-5-26 10:42:56 最后编辑]

那个……title可以去掉,event留着备用的
改下return_scene方法把这两个参数删去好了{/gg}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-24 20:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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