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

Project1

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

500分请人帮忙扩展下存档,谢谢。

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-7-28
帖子
432
跳转到指定楼层
1
发表于 2008-9-6 21:58:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
     我参考主站上的存档修改,改了很多遍都不行,有没有谁帮忙扩展下存档呢?我的存档画面是使用自己的图片的。脚本如下:
   
  1. #==============================================================================
  2. # ■ Scene_File
  3. #------------------------------------------------------------------------------
  4. #  セーブ画面およびロード画面のスーパークラスです。
  5. #==============================================================================

  6. class Scene_File
  7.   #--------------------------------------------------------------------------
  8.   # ● オブジェクト初期化
  9.   #     help_text : ヘルプウィンドウに表示する文字列
  10.   #--------------------------------------------------------------------------
  11.   def initialize(help_text)
  12.     @help_text = help_text
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● メイン処理
  16.   #--------------------------------------------------------------------------
  17.   def main
  18.     # This is setting up the background picture
  19.     @background = Sprite.new
  20.     @background.bitmap = RPG::Cache.picture("save window")
  21.     @background.x = 0
  22.     @background.y = 0
  23.     # ヘルプウィンドウを作成
  24.     @help_window = Window_Help.new
  25.     @help_window.opacity = 0
  26.     @help_window.set_text(@help_text)
  27.     # セーブファイルウィンドウを作成
  28.     @savefile_windows = []
  29.     #for i in 0..3
  30.      # @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
  31.    # end
  32.     for i in 0..3
  33.       @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
  34.     end
  35.     # 最後に操作したファイルを選択
  36.     @file_index = $game_temp.last_file_index
  37.     @savefile_windows[@file_index].selected = true
  38.     # トランジション実行
  39.     Graphics.transition
  40.     # メインループ
  41.     loop do
  42.       # ゲーム画面を更新
  43.       Graphics.update
  44.       # 入力情報を更新
  45.       Input.update
  46.       # フレーム更新
  47.       update
  48.       # 画面が切り替わったらループを中断
  49.       if $scene != self
  50.         break
  51.       end
  52.     end
  53.     # トランジション準備
  54.     Graphics.freeze
  55.     # ウィンドウを解放
  56.     @background.dispose
  57.     @help_window.dispose
  58.     for i in @savefile_windows
  59.       i.dispose
  60.     end
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● フレーム更新
  64.   #--------------------------------------------------------------------------
  65.   def update
  66.     # ウィンドウを更新
  67.     @help_window.update
  68.     for i in @savefile_windows
  69.       i.update
  70.     end
  71.     # C ボタンが押された場合
  72.     if Input.trigger?(Input::C)
  73.       # メソッド on_decision (継承先で定義) を呼ぶ
  74.       on_decision(make_filename(@file_index))
  75.       $game_temp.last_file_index = @file_index
  76.       return
  77.     end
  78.     # B ボタンが押された場合
  79.     if Input.trigger?(Input::B)
  80.       # メソッド on_cancel (継承先で定義) を呼ぶ
  81.       on_cancel
  82.       return
  83.     end
  84.     # 方向ボタンの下が押された場合
  85.     if Input.repeat?(Input::DOWN)
  86.       # 方向ボタンの下の押下状態がリピートでない場合か、
  87.       # またはカーソル位置が 3 より前の場合
  88.       if Input.trigger?(Input::DOWN) or @file_index < 3
  89.         # カーソル SE を演奏
  90.         $game_system.se_play($data_system.cursor_se)
  91.         # カーソルを下に移動
  92.         @savefile_windows[@file_index].selected = false
  93.         @file_index = (@file_index + 1) % 4
  94.         @savefile_windows[@file_index].selected = true
  95.         return
  96.       end
  97.     end
  98.     # 方向ボタンの上が押された場合
  99.     if Input.repeat?(Input::UP)
  100.       # 方向ボタンの上の押下状態がリピートでない場合か、
  101.       # またはカーソル位置が 0 より後ろの場合
  102.       if Input.trigger?(Input::UP) or @file_index > 0
  103.         # カーソル SE を演奏
  104.         $game_system.se_play($data_system.cursor_se)
  105.         # カーソルを上に移動
  106.         @savefile_windows[@file_index].selected = false
  107.         @file_index = (@file_index + 3) % 4
  108.         @savefile_windows[@file_index].selected = true
  109.         return
  110.       end
  111.     end
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● ファイル名の作成
  115.   #     file_index : セーブファイルのインデックス (0~3)
  116.   #--------------------------------------------------------------------------
  117.   def make_filename(file_index)
  118.     return "Save#{file_index + 1}.rxdata"
  119.   end
  120. end
复制代码

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

Lv1.梦旅人

剑圣

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-8-31
帖子
778
2
发表于 2008-9-6 22:04:07 | 只看该作者
lz先说明一下要改成什么样子

PC/IOS/Android共享的RM RPG:未名大学
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-7-28
帖子
432
3
 楼主| 发表于 2008-9-6 22:05:34 | 只看该作者
    厄。。。只要给我加上100个存档位,使用图片的那种,不过图片我可以自己做,主要就是加上档位,后面加上存档过多卡机的解决脚本。貌似这里没放进去的样子
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
134
在线时间
148 小时
注册时间
2008-2-11
帖子
429
4
发表于 2008-9-6 22:05:54 | 只看该作者
LZ如果要用截图存档和扩展存档,建议使用这个整合脚本:

http://rpg.blue/web/htm/news642.htm
要守护就守护到底,要放弃就别再回头。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-7-28
帖子
432
5
 楼主| 发表于 2008-9-6 22:44:25 | 只看该作者
    LS的,你哪个我找到过,没用的,我要的是支持图片的自制脚本窗口,你那不行
回复 支持 反对

使用道具 举报

Lv1.梦旅人

剑圣

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-8-31
帖子
778
6
发表于 2009-6-12 08:00:00 | 只看该作者
楼主看看这样子是不是你要的效果
100档位,加了卡机脚本,图片依然是save window(用半透明菜单就能看见了)

#==============================================================================
# 本脚本来自www.66rpg.com,转载和使用请保留此信息 #==============================================================================


#==============================================================================
# ■ Scene_File
#------------------------------------------------------------------------------
#  存档画面及读档画面的超级类。
#   脚本优化: SailCat
#==============================================================================

class Scene_File
#--------------------------------------------------------------------------
# ● 常量 (存档页数)
#--------------------------------------------------------------------------
MaxPages = 25
#--------------------------------------------------------------------------
# ● 初始化对像
#     help_text : 帮助窗口显示的字符串
#--------------------------------------------------------------------------
def initialize(help_text)
   @help_text = help_text
   @slots = MaxPages * 4
end
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
   # This is setting up the background picture
   @background = Sprite.new
   @background.bitmap = RPG::Cache.picture("save window")
   @background.x = 0
   @background.y = 0
   # 生成帮助窗口
   @help_window = Window_Help.new
   @help_window.set_text(@help_text)
   @file_index = $game_temp.last_file_index
   # 生成存档文件窗口
   @savefile_windows = []
   # 选择最后操作的文件
   for i in @file_index / 4 * 4..@file_index / 4 * 4 + 3
     load_window(i)
     @savefile_windows.visible = true
   end
   @savefile_windows[@file_index].selected = true
   # 执行过渡
   Graphics.transition
   # 主循环
   loop do
     # 刷新游戏画面
     Graphics.update
     # 刷新输入信息
     Input.update
     # 刷新画面
     update
     # 如果画面被切换的话就中断循环
     if $scene != self
       break
     end
   end
   # 准备过渡
   Graphics.freeze
   @background.dispose
   # 释放窗口
   @help_window.dispose
   for i in @savefile_windows
     i.dispose
   end
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
   # 刷新窗口
   @help_window.update
   for i in @savefile_windows
     i.update if i.visible
   end
   # 按下 C 键的情况下
   if Input.trigger?(Input::C)
     # 调用过程 on_decision (定义继承目标)
     on_decision(make_filename(@file_index))
     $game_temp.last_file_index = @file_index
     return
   end
   # 按下 B 键的情况下
   if Input.trigger?(Input::B)
     # 调用过程 on_cancel (定义继承目标)
     on_cancel
     return
   end
   # 按下方向键下的情况下
   if Input.repeat?(Input::DOWN)
     # 演奏光标 SE
     $game_system.se_play($data_system.cursor_se)
     # 光标向下移动
     @savefile_windows[@file_index].selected = false
     @file_index = (@file_index + 1) % @slots
     # 翻到下一页的情况下
     if @file_index % 4 == 0
       for index in @file_index / 4 * 4..@file_index / 4 * 4 + 3
         @savefile_windows[(index + @slots - 4) % @slots].visible = false
         load_window(index)
         @savefile_windows[index].visible = true
       end
     end
     @savefile_windows[@file_index].selected = true
     return
   end
   # 按下方向键上的情况下
   if Input.repeat?(Input::UP)
     # 演奏光标 SE
     $game_system.se_play($data_system.cursor_se)
     # 光标向上移动
     @savefile_windows[@file_index].selected = false
     @file_index = (@file_index + @slots - 1) % @slots
     # 翻到上一页的情况下
     if @file_index % 4 == 3
       for index in @file_index / 4 * 4..@file_index / 4 * 4 + 3
         @savefile_windows[(index + 4) % @slots].visible = false
         load_window(index)
         @savefile_windows[index].visible = true
       end
     end
     @savefile_windows[@file_index].selected = true
     return
   end
   # 按下方向键左或者 L 的情况下
   if Input.repeat?(Input::LEFT) or Input.trigger?(Input::L)
     # 演奏光标 SE
     $game_system.se_play($data_system.cursor_se)
     # 前翻一页
     @savefile_windows[@file_index].selected = false
     @file_index = (@file_index + @slots - 4) % @slots
     for index in @file_index / 4 * 4..@file_index / 4 * 4 + 3
       @savefile_windows[(index + 4) % @slots].visible = false
       load_window(index)
       @savefile_windows[index].visible = true
     end
     @savefile_windows[@file_index].selected = true
     return
   end
   # 按下方向键右或者 R 的情况下
   if Input.repeat?(Input::RIGHT) or Input.trigger?(Input::R)
     # 演奏光标 SE
     $game_system.se_play($data_system.cursor_se)
     # 前翻一页
     @savefile_windows[@file_index].selected = false
     @file_index = (@file_index + 4) % @slots
     for index in @file_index / 4 * 4..@file_index / 4 * 4 + 3
       @savefile_windows[(index + @slots - 4) % @slots].visible = false
       load_window(index)
       @savefile_windows[index].visible = true
     end
     @savefile_windows[@file_index].selected = true
     return
   end
end
#--------------------------------------------------------------------------
# ● 生成文件名
#     file_index : 文件名的索引 (0~n)
#--------------------------------------------------------------------------
def make_filename(file_index)
   return "Save#{file_index + 1}.rxdata"
end
#--------------------------------------------------------------------------
# ● 载入当前页存档
#     避免因存档位过多造成的卡壳现象
#--------------------------------------------------------------------------
def load_window(i)
   if @savefile_windows != nil
     return
   else
     @savefile_windows = Window_SaveFile.new(i, make_filename(i))
   end
end
end


#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

PC/IOS/Android共享的RM RPG:未名大学
回复 支持 反对

使用道具 举报

Lv1.梦旅人

剑圣

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-8-31
帖子
778
7
发表于 2008-9-6 22:58:34 | 只看该作者
另外把脚本中
  
  # 生成帮助窗口
  @help_window = Window_Help.new
  @help_window.set_text(@help_text)
  @file_index = $game_temp.last_file_index
  # 生成存档文件窗口

一段改为

   @help_window = Window_Help.new
   @help_window.opacity = 0
   @help_window.set_text(@help_text)
   @file_index = $game_temp.last_file_index

PC/IOS/Android共享的RM RPG:未名大学
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-7-28
帖子
432
8
 楼主| 发表于 2008-9-6 23:00:51 | 只看该作者
    有几个BUG,是这样的,如果存档或者读档的时候,光标在第一个档位的时候,按上的方向键时,会出错
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-7-28
帖子
432
9
 楼主| 发表于 2008-9-6 23:02:50 | 只看该作者
    哦,按快了补充下,还有BUG,就是你第一个档位存了的时候直接按下取,比如按到第20个档位的时候,中间空着,再存档,回来,再次进入存档截面的时候出错。
    还有就是你看这个图

  怎么把上面的黄色给弄掉?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

剑圣

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-8-31
帖子
778
10
发表于 2008-9-6 23:15:47 | 只看该作者
解决方案2:解决了所有的问题,缺点是不能通过左右翻页,只能上下滚
楼主可以先看看这样行不,我再帮你加上翻页功能

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================



# --------------------------------------------------------------------
# 本脚本来自www.66rpg.com,转载自www.phylomortis.com,转载请保留此信息
# --------------------------------------------------------------------
class Scene_File
  #——最大存档数量,一般我认为最多50足够了,20比较合适
  SAVEFILE_MAX = 100
  # -------------------
  def initialize(help_text)
    @help_text = help_text
  end
  # -------------------
  def main
   
# This is setting up the background picture
   @background = Sprite.new
   @background.bitmap = RPG::Cache.picture("save window")
   @background.x = 0
   @background.y = 0
   # 生成帮助窗口
   
  @help_window = Window_Help.new
  @help_window.opacity = 0
  @help_window.set_text(@help_text)
#  @file_index = $game_temp.last_file_index        
   
#    @help_window = Window_Help.new
#    @help_window.set_text(@help_text)
    @savefile_windows = []
    @cursor_displace = 0
    for i in 0..3
      @savefile_windows.push(Window_SaveFile.new(i, make_filename(i), i))
    end
    @file_index = 0
    @savefile_windows[@file_index].selected = true
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @help_window.dispose
    for i in @savefile_windows
      i.dispose
    end
  end
  # -------------------
  def update
    @help_window.update
    for i in @savefile_windows
      i.update
    end
    if Input.trigger?(Input::C)
      on_decision(make_filename(@file_index))
      $game_temp.last_file_index = @file_index
      return
    end
    if Input.trigger?(Input::B)
      on_cancel
      return
    end
    if Input.repeat?(Input::DOWN)
      if Input.trigger?(Input::DOWN) or @file_index < SAVEFILE_MAX - 1
        if @file_index == SAVEFILE_MAX - 1
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        @cursor_displace += 1
        if @cursor_displace == 4
          @cursor_displace = 3
          for i in @savefile_windows
            i.dispose
          end
          @savefile_windows = []
          for i in 0..3
            f = i - 2 + @file_index
            name = make_filename(f)
            @savefile_windows.push(Window_SaveFile.new(f, name, i))
            @savefile_windows.selected = false
          end
        end
        $game_system.se_play($data_system.cursor_se)
        @file_index = (@file_index + 1)
        if @file_index == SAVEFILE_MAX
          @file_index = SAVEFILE_MAX - 1
        end
        for i in 0..3
          @savefile_windows.selected = false
        end
        @savefile_windows[@cursor_displace].selected = true
        return
      end
    end
    if Input.repeat?(Input::UP)
      if Input.trigger?(Input::UP) or @file_index > 0
        if @file_index == 0
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        @cursor_displace -= 1
        if @cursor_displace == -1
          @cursor_displace = 0
          for i in @savefile_windows
            i.dispose
          end
          @savefile_windows = []
          for i in 0..3
            f = i - 1 + @file_index
            name = make_filename(f)
            @savefile_windows.push(Window_SaveFile.new(f, name, i))
            @savefile_windows.selected = false
          end
        end
        $game_system.se_play($data_system.cursor_se)
        @file_index = (@file_index - 1)
        if @file_index == -1
          @file_index = 0
        end
        for i in 0..3
          @savefile_windows.selected = false
        end
        @savefile_windows[@cursor_displace].selected = true
        return
      end
    end
  end
  # -------------------
  def make_filename(file_index)
    return "Save#{file_index + 1}.rxdata"
  end
  # -------------------
end




class Window_SaveFile < Window_Base
  # -------------------
  def initialize(file_index, filename, position)
    y = 64 + position * 104
    super(0, y, 640, 104)
    self.contents = Bitmap.new(width - 32, height - 32)
    @file_index = file_index
    @filename = "Save#{@file_index + 1}.rxdata"
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      file = File.open(@filename, "r")
      @time_stamp = file.mtime
      @characters = Marshal.load(file)
      @frame_count = Marshal.load(file)
      @game_system = Marshal.load(file)
      @game_switches = Marshal.load(file)
      @game_variables = Marshal.load(file)
      @total_sec = @frame_count / Graphics.frame_rate
      file.close
    end
    refresh
    @selected = false
  end
end


#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

PC/IOS/Android共享的RM RPG:未名大学
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 13:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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