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

Project1

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

[已经解决] 自动存档,如何改自动为事件调用?

 关闭 [复制链接]

Lv3.寻梦者

梦石
0
星屑
1743
在线时间
485 小时
注册时间
2006-1-7
帖子
1073
跳转到指定楼层
1
发表于 2009-7-29 10:42:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 白鬼 于 2009-7-29 13:29 编辑

美兽的自动存档脚本。如何修改成非自动,而是事件调用来存档?
  1.    
  2. module Kernel

  3. alias origin_exit exit unless method_defined? :exit

  4. def exit(*args)
  5.    case $scene
  6.    when Scene_Map
  7.      AutoSave.common_save unless $game_system.map_interpreter.running?
  8.    when Scene_Battle
  9.      AutoSave.common_save unless $game_system.battle_interpreter.running?
  10.    else
  11.      if $scene.type != NilClass and $scene.type != Scene_Title
  12.        AutoSave.common_save
  13.      end
  14.    end
  15.    origin_exit(*args)
  16. end

  17. end


  18. module AutoSave

  19. if @scene_proc.nil?
  20.    @last_scene = nil.class
  21.    @scene_proc = proc do |value|
  22.      if value.nil? or value.is_a?(Scene_Title)
  23.        if @last_scene != NilClass and @last_scene != Scene_Title
  24.          AutoSave.common_save
  25.        end
  26.      end
  27.      @last_scene = value.type
  28.    end
  29.    trace_var(:$scene,@scene_proc)
  30. end

  31. module_function

  32. def common_save
  33.    filename = "Save#{$game_temp.last_file_index + 1}.rxdata"
  34.    file = File.open(filename, "wb")
  35.    write_save_data(file)
  36.    file.close
  37. end
  38.   #--------------------------------------------------------------------------
  39.   # ● 写入存档数据
  40.   #     file : 写入用文件对像 (已经打开)
  41.   #--------------------------------------------------------------------------
  42. def write_save_data(file)
  43.     # 生成描绘存档文件用的角色图形
  44.    characters = []
  45.    for i in 0...$game_party.actors.size
  46.      actor = $game_party.actors[i]
  47.      characters.push([actor.character_name, actor.character_hue])
  48.    end
  49.     # 写入描绘存档文件用的角色数据
  50.    Marshal.dump(characters, file)
  51.     # 写入测量游戏时间用画面计数
  52.    Marshal.dump(Graphics.frame_count, file)
  53.    # 增加 1 次存档次数
  54.    $game_system.save_count += 1
  55.     # 保存魔法编号
  56.     # (将编辑器保存的值以随机值替换)
  57.    $game_system.magic_number = $data_system.magic_number
  58.     # 写入各种游戏对像
  59.    Marshal.dump($game_system, file)
  60.    Marshal.dump($game_switches, file)
  61.    Marshal.dump($game_variables, file)
  62.    Marshal.dump($game_self_switches, file)
  63.    Marshal.dump($game_screen, file)
  64.    Marshal.dump($game_actors, file)
  65.    Marshal.dump($game_party, file)
  66.    Marshal.dump($game_troop, file)
  67.    Marshal.dump($game_map, file)
  68.    Marshal.dump($game_player, file)
  69. end
  70. end
复制代码
初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。

Lv1.梦旅人

梦石
0
星屑
215
在线时间
10 小时
注册时间
2009-7-25
帖子
656
2
发表于 2009-7-29 10:45:03 | 只看该作者
事件。脚本调用你要执行代码块或者类
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1743
在线时间
485 小时
注册时间
2006-1-7
帖子
1073
3
 楼主| 发表于 2009-7-29 10:51:25 | 只看该作者
我修改的:
  1. #==============================================================================
  2. # ■ Scene_AutoSave
  3. #------------------------------------------------------------------------------
  4. #  处理自动存档画面的类。
  5. #==============================================================================

  6. class Scene_AutoSave < Scene_File

  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10. def initialize
  11.    filename = "System.rxdata"    #byakki
  12.    file = File.open(filename, "wb")
  13.    write_save_data(file)
  14.    file.close
  15. end
  16.   #--------------------------------------------------------------------------
  17.   # ● 写入存档数据
  18.   #     file : 写入用文件对像 (已经打开)
  19.   #--------------------------------------------------------------------------
  20. def write_save_data(file)
  21.     # 生成描绘存档文件用的角色图形
  22.    characters = []
  23.    for i in 0...$game_party.actors.size
  24.      actor = $game_party.actors[i]
  25.      characters.push([actor.character_name, actor.character_hue])
  26.    end
  27.     # 写入描绘存档文件用的角色数据
  28.    Marshal.dump(characters, file)
  29.     # 写入测量游戏时间用画面计数
  30.    Marshal.dump(Graphics.frame_count, file)
  31.     # 增加 1 次存档次数
  32.    $game_system.save_count += 1
  33.     # 保存魔法编号
  34.     # (将编辑器保存的值以随机值替换)
  35.    $game_system.magic_number = $data_system.magic_number
  36.     # 写入各种游戏对像
  37.    Marshal.dump($game_system, file)
  38.    Marshal.dump($game_switches, file)
  39.    Marshal.dump($game_variables, file)
  40.    Marshal.dump($game_self_switches, file)
  41.    Marshal.dump($game_screen, file)
  42.    Marshal.dump($game_actors, file)
  43.    Marshal.dump($game_party, file)
  44.    Marshal.dump($game_troop, file)
  45.    Marshal.dump($game_map, file)
  46.    Marshal.dump($game_player, file)
  47. end
  48. end
复制代码
然后事件脚本:
  1. $scene = Scene_AutoSave.new
复制代码
【存档的时候Window_Help报错】
  1. 26    self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
复制代码
  1. 发生了 TypeErro。
  2. cannot convert nil into String
复制代码
但是貌似生成了存档文件。

【读取的时候,也是这个错误】
初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6875
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

4
发表于 2009-7-29 11:29:54 | 只看该作者
这个脚本先是定义了 退出
就是说窗口在关闭的时候就会自动存档
不想要这个效果就把这一段删除
   

module Kernel



alias origin_exit exit unless method_defined? :exit



def exit(*args)

   case $scene

   when Scene_Map

     AutoSave.common_save unless $game_system.map_interpreter.running?

   when Scene_Battle

     AutoSave.common_save unless $game_system.battle_interpreter.running?

   else

     if $scene.type != NilClass and $scene.type != Scene_Title

       AutoSave.common_save

     end

   end

   origin_exit(*args)

end



end

然后要存档的时候在事件-脚本里输入
AutoSave.common_save











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
95
在线时间
380 小时
注册时间
2006-10-16
帖子
4299

贵宾

5
发表于 2009-7-29 14:19:42 | 只看该作者
美兽的个人觉得不是很好用。
你可以把这段脚本插入Interpreter 7
  1.   ###########################################################################
  2.   #--------------------------------------------------------------------------
  3.   # ● 写入存档数据
  4.   #--------------------------------------------------------------------------
  5.   def save(i=1)
  6.     file = File.open("Save/Save#{i}.rxdata", "wb")
  7.     # 生成描绘存档文件用的角色图形
  8.     characters = []
  9.     for i in 0...$game_party.actors.size
  10.       actor = $game_party.actors[i]
  11.       characters.push([actor.character_name, actor.character_hue, actor.id, actor.battler_name, actor.battler_hue])
  12.     end
  13.     # 写入描绘存档文件用的角色数据
  14.     Marshal.dump(characters, file)
  15.     # 写入测量游戏时间用画面计数
  16.     Marshal.dump(Graphics.frame_count, file)
  17.     # 增加 1 次存档次数
  18.     $game_system.save_count += 1
  19.     # 保存魔法编号
  20.     # (将编辑器保存的值以随机值替换)
  21.     $game_system.magic_number = $data_system.magic_number
  22.     # 写入各种游戏对像
  23.     Marshal.dump($data_skills, file)
  24.     Marshal.dump($game_system, file)
  25.     Marshal.dump($game_switches, file)
  26.     Marshal.dump($game_variables, file)
  27.     Marshal.dump($game_self_switches, file)
  28.     Marshal.dump($game_screen, file)
  29.     Marshal.dump($game_actors, file)
  30.     Marshal.dump($game_party, file)
  31.     Marshal.dump($game_troop, file)
  32.     Marshal.dump($game_map, file)
  33.     Marshal.dump($game_player, file)
  34.     file.close  
  35.   end
  36.   ###########################################################################
复制代码
然后事件中执行脚本“save(x)”x = 脚本编号
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 14:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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