查看: 2518|回复: 3

[已经过期] 求教。。。关于这个存档脚本

[复制链接]
梦石
0
星屑
55
在线时间
30 小时
注册时间
2013-11-25
回帖
20
发表于 2014-9-9 19:14:58 | 显示全部楼层 |阅读模式

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

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

×
求改成,六个存档位置QAQ
还有怎么用脚本控制章节的改变?

[pre lang="ruby" line="1"]#encoding:utf-8
#==============================================================================
# ■ 薄雾年代记 —— 存档公开版 by LBQ v0.2
#------------------------------------------------------------------------------
#  只是一个笨蛋存档读档界面罢了
#==============================================================================


$imported||={}
$imported[:mcr_save] = '0.2'
module MCR
  module Save
    CHAPTER_NUM = 1 #章节数用变量 0对应的是第一章 1是第二章 2是第三章
  end
end



module DataManager
  #--------------------------------------------------------------------------
  # ● 生成存档的头数据
  #--------------------------------------------------------------------------
  def self.make_save_header
    header = {}
    header[:characters] = $game_party.characters_for_savefile
    header[:playtime_s] = $game_system.playtime_s
    header[:variables]  = $game_variables
    header
  end
end

class Sprite
  #blt(x, y, src_bitmap, src_rect[, opacity])
  def paste(bitmap)
    sb = bitmap
    a = 0
    b = 0
    src_rect = Rect.new(a,b,sb.width,sb.height)
    self.bitmap.blt(a,b,sb,src_rect)
    bitmap.dispose
  end
  
end



class Part_Save
  include MCR::Save
  def initialize(index)
    @index = index
    @delegates = []
    @sprite = Sprite.new
    @delegates << @sprite
    @sprite.bitmap  = Cache.system("save#{index+1}")
    @number = Sprite_Number.new(play_time_s)
    @delegates << @number
    @empty_file = Sprite.new
    if does_not_exist
      @empty_file.bitmap = Cache.system("empty_file")
    else
      @sprite.paste Cache.system("chapter#{self.variables[CHAPTER_NUM]+1}")
    end
    unselected
  end
  
  
  
  def recreate_sprite
    index = @index
   
   
    @sprite.bitmap  = Cache.system("save#{index+1}")
    if does_not_exist
      @sprite.paste Cache.system("empty_file")
    else
      @sprite.paste Cache.system("chapter#{self.variables[CHAPTER_NUM]+1}")
    end
  end
  
  
  
  def play_time_s
    return "00:00" if does_not_exist
    return header[:playtime_s].split(":")[0..1].join(':')
  end
  
  
  def does_not_exist
    !header
  end
  
  
  
  def variables
    return if does_not_exist
    return header[:variables]
  end
  
  def dispose
    @empty_file.dispose
    @sprite.dispose
    @sprite=nil
    @number.dispose
    @empty_file.dispose
  end
  
  
  
  
  def header
    return DataManager.load_header(@index)
  end
  
  def selected?
    @selected
  end
  
  def update
    if @selected
      @delegates.each do |d|
        d.opacity = [@sprite.opacity+12,255].min
      end
    else
      
      @delegates.each do |d|
        d.opacity = [@sprite.opacity-12,150].max
      end
      
    end
    @empty_file.y = @sprite.y
   
  end
  
  
  def selected
    @selected = true
    #self.opacity = 255
  end
  
  
  def unselected
    @selected = false
    #self.opacity = 180
  end
  
  
  
  def method_missing(id,*args,&block)
    sended = false
    @delegates.each do |d|
      if d.respond_to? id
        sended = true
        d.send id,*args,&block
      end
      
    end
   
   
    unless sended
      super
    end
   
   
  end
  
  
end



module Scene_EasyLoad_Plugin
  def easy_load(index)
    DataManager.load_game(index)
    Sound.play_load
    fadeout_all
    $game_system.on_after_load
    SceneManager.goto(Scene_Map)
  end
end


class Scene_Base
  include Scene_EasyLoad_Plugin
end




class Scene_File < Scene_MenuBase
  public_instance_methods(false).each do |m|
    undef_method m
  end
  
  
  #--------------------------------------------------------------------------
  # ● 释放背景
  #--------------------------------------------------------------------------
  def dispose_background
    @bg.dispose
  end
  
  def start
    super
    @main_timer = 0
    methods.each do |m|
      if m.to_s.include? 'create_'
        send m
      end
    end
    post_create
    @start_fade_out = false
  end
  
  
  def terminate
    super
    terminate_all_sprites
  end
  
  
  
  def terminate_all_sprites
    @parts.each(&:dispose)
  end
  
  
  
  
  
  def post_create
    @parts[0].selected
  end
  
  
  def return_scene
    return
    @start_fade_out = true
  end
  
  
  
  
  def create_background
    @bg = Plane.new
    @bg.bitmap = Cache.system('bg')
    @bg.oy =330
  end
  
  
  def create_header
    @header = Sprite.new
    @header.z = 10
    @header.bitmap = Cache.system('save_header')
  end
  
  def create_parts
    @parts = []
    @parts[0] = Part_Save.new(0)
    @parts[0].y = 50
   
   
   
    @parts[1] = Part_Save.new(1)
    @parts[1].y = 180
  end
  
  
  def create_mask
    @mask = Sprite.new
    w = Graphics.width
    h = Graphics.height
    @mask.bitmap = Bitmap.new w, h
    @mask.bitmap.fill_rect(0,0,w,h,Color.new(0,0,0))
    @mask.z = 999
  end
  
  
  
  def update
    @main_timer += 1
    methods.each do |m|
      if m.to_s.include? 'update_'
        send m
      end
    end
    deal_with_mask_fade if @start_fade_out
  end
  
  
  def deal_with_mask_fade
    @mask.opacity +=8
    if @mask.opacity >=255
      fadeout_all
      SceneManager.return
      
    end
   
  end
  

  
  
  #--------------------------------------------------------------------------
  # ● 获取渐变速度
  #--------------------------------------------------------------------------
  def transition_speed
    return 20
  end
  
  
  def update_input
   
    if Input.trigger? :UP
      i_am_going_to_select  = @parts[current_selected_index - 1]
      if i_am_going_to_select && current_selected_index!=0
        current_selected.unselected
        i_am_going_to_select.selected
        Sound.play_cursor
      else
        Sound.play_buzzer
      end
      
    end
   
   
    if Input.trigger? :DOWN
      i_am_going_to_select = @parts[current_selected_index + 1]
      if i_am_going_to_select
        current_selected.unselected
        i_am_going_to_select.selected
        Sound.play_cursor
      else
        Sound.play_buzzer
      end
      
      
    end
   
   
    if Input.trigger? :C
      deal_with_on_ok
    end
   
   
    if Input.trigger? :B
      Sound.play_cancel
      SceneManager.return
    end
   
  end
  
  def update_background
    @bg.ox += 1 if @main_timer % 2 == 0
  end
  
  
  def update_mask
    @mask.opacity -= 4
  end
  
  
  def current_selected
    return @parts.select{|p|p.selected?}[0]
  end
  
  def current_selected_index
    return @parts.index current_selected
  end
  
  def update_parts
    @parts.each(&:update)
  end
  
end


class Scene_Save < Scene_File
  def deal_with_on_ok
    DataManager.save_game(current_selected_index)
    Sound.play_save
    SceneManager.return
  end
end

class Scene_Load < Scene_File
  def deal_with_on_ok
    if current_selected.does_not_exist
      Sound.play_buzzer
      return
    end
   
    easy_load(current_selected_index)
  end
end


module Cache
  class << self
    def number(name)
      load_bitmap("Graphics/Numbers/", name)
    end
   
  end
end


class Sprite_Number < Sprite
  
  INDENT = [123,97]
  
  def initialize(text)
    super(nil)
    @text = text
    refresh
  end
  
  DIC = {
   ':' => 'colon'
  }
  
  
  def text=(x)
    @text = x
    refresh
  end
  
  
  def text
    return @text
  end
  
  
  
  
  def refresh
    self.bitmap = Bitmap.new(Graphics.width,Graphics.height)
    deal_with_text
  end
  
  
  
  def deal_with_text
   
    cursor = INDENT[0]
    @text.each_char do |c|
      
      
      if DIC[c]
        c = DIC[c]
        cursor+=3
      end
      
      new_bitmap = Cache.number(c)
      a = cursor
      b = INDENT[1]
      sb = new_bitmap
      sr = Rect.new(0,0,sb.width,sb.height)
      self.bitmap.blt(a,b,sb,sr)
      cursor += sb.width*0.75
      sb.dispose
    end # each
  end
  
  
end


class Scene_Number < Scene_Base
  def start
    super
    @timer = 0
    @sprite = Sprite_Number.new($game_system.playtime_s)
  end
  
  
  def update
    super
    @timer += 1
    if @timer %60==0
      @sprite.text= $game_system.playtime_s
    end
   
  end
  
  
end


class Scene_Menu
  #--------------------------------------------------------------------------
  # ● 执行进入场景时的渐变
  #--------------------------------------------------------------------------
  def perform_transition
    if Graphics.brightness == 0
      Graphics.transition(0)
      fadein(30)
    else
      super
    end
  end
end
[/pre]
梦石
0
星屑
55
在线时间
30 小时
注册时间
2013-11-25
回帖
20
 楼主| 发表于 2014-9-9 19:16:36 | 显示全部楼层
这个是【薄雾】VA动态存档脚本 v0.2 这个帖子里面的,作者已经匿了好长时间了,我也不好挖坟,所以求大神修改

点评

这个是大脚本啊。。我的意思是怎么用事件脚本改啊。。我也不懂啊。。  发表于 2014-9-9 22:27
脚本盲,没注释看的眼疼。没找到修改增加存档数的地方。 章节显示改变脚本13行就说了是1号变量。  发表于 2014-9-9 21:16
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-9-10 13:00:50 | 显示全部楼层
没记错的话,存档个数应该可以在 DataManager.savefile_max 里面修改

给我一个不能用事件直接修改1号变量的理由

点评

改这个设置没用的话,基本上就说明作者压根没想让你改存档个数  发表于 2014-9-14 14:37
。。。你压根就没看这个脚本吧,,,DataManager里改成20万存档上限也还是两个呀。。这个是脚本里面的。。  发表于 2014-9-14 13:43
呃,DataManager那个模块里面有个savefile_max,下面有个数字,改了就好了吧……  发表于 2014-9-12 15:29
要怎么改?我是新手啊。。现在只会复制粘贴,要用什么时间脚本可以把1改成2?而且这个好像是全局的,改完之后之前的存档也会跟着变。。  发表于 2014-9-11 21:51

评分

参与人数 1星屑 +132 收起 理由
VIPArcher + 132 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
89
在线时间
480 小时
注册时间
2013-5-10
回帖
781
发表于 2014-9-11 01:10:08 | 显示全部楼层
taroxd 发表于 2014-9-10 13:00
没记错的话,存档个数应该可以在 DataManager.savefile_max 里面修改

给我一个不能用事件直接修改1号变量 ...

他的意思应该是用事件脚本吧....(σ゚∀゚)σ
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部