Project1

标题: 使用了窗口背景更换的脚本后出现错误怎么弄 [打印本页]

作者: 秒速340    时间: 2011-6-20 17:03
标题: 使用了窗口背景更换的脚本后出现错误怎么弄
本帖最后由 秒速340 于 2011-6-20 18:10 编辑

我用了以下的脚本:

#============================================================================
#    ◆ 菜单可更换壁纸Ver2.0              ◆ VX ◆
#    ◇ 2010-07-22 By: Carolawyer or Linki Shy  ◇
#    说明一:大幅缩减上一版的代码,更加成熟
#    说明二:壁纸图片名称以1,2,3...自然数排列方式命名
#============================================================================

module Wallpaper
  # 壁纸存放文件夹的路径
  BG_DIR = "Graphics/Background/"
  # 所有窗口的透明度
  WINDOW_BACK_OPACITY = 100
  # 壁纸的默认样式,等于零时为截图背景
  WALLPAPER = 1
  # 壁纸的数量
  PAPERMAX = 7
end

#==============================================================================
# ■ Cache
#==============================================================================
module Cache
  #--------------------------------------------------------------------------
  # * 获取背景图档
  #     filename : 文件名
  #--------------------------------------------------------------------------
  def self.background(filename)
    load_bitmap(Wallpaper::BG_DIR, filename)
  end
end

#==============================================================================
# ■ Game_Temp
#==============================================================================

class Game_Temp
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :background_bitmap_temp        # background bitmap temp
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  alias initialize_old initialize
  def initialize
    initialize_old
    @background_bitmap_temp = Bitmap.new(1, 1)
  end
end
#==============================================================================
# ■ Game_System
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :wallpaper                # 壁纸
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  alias initialize_old initialize
  def initialize
    initialize_old
    @wallpaper = Wallpaper::WALLPAPER
  end
end

#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  游戏中全部窗口的超级类。
#==============================================================================

class Window_Base < Window
  alias initialize_old initialize
  def initialize(x, y, width, height)
    initialize_old(x, y, width, height)
    self.back_opacity = Wallpaper::WINDOW_BACK_OPACITY
  end
end

#==============================================================================
# ■ Scene_Base
#------------------------------------------------------------------------------
#  游戏中全部画面的超级类。
#==============================================================================

class Scene_Base
  #--------------------------------------------------------------------------
  # ● 截图做下一个画面的背景
  #--------------------------------------------------------------------------
  def snapshot_for_background
    $game_temp.background_bitmap.dispose
    $game_temp.background_bitmap = Graphics.snap_to_bitmap
    $game_temp.background_bitmap.blur
    $game_temp.background_bitmap_temp = $game_temp.background_bitmap
  end
  #--------------------------------------------------------------------------
  # ● 更换背景bitmap
  #--------------------------------------------------------------------------
  def change_wallpaper
    if $game_system.wallpaper > 0
      $game_temp.background_bitmap = Cache.background("#{$game_system.wallpaper}")
    end
  end
  #--------------------------------------------------------------------------
  # ● 生成菜单画面背景
  #--------------------------------------------------------------------------
  def create_menu_background
    @menuback_sprite = Sprite.new
    @menuback_sprite.bitmap = $game_temp.background_bitmap
    if $game_system.wallpaper == 0
      @menuback_sprite.bitmap = $game_temp.background_bitmap_temp
      @menuback_sprite.color.set(16, 16, 16, 128)
    end
    update_menu_background
  end
end

#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
#  处理菜单画面的类。
#==============================================================================

class Scene_Menu < Scene_Base
  #--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------
  def start
    super
    change_wallpaper
    create_menu_background
    create_command_window
    @gold_window = Window_Gold.new(0, 360)
    @status_window = Window_MenuStatus.new(160, 0)
  end
end

#==============================================================================
# ■ Scene_End
#------------------------------------------------------------------------------
#  处理游戏结束画面的类。
#==============================================================================

class Scene_End < Scene_Base
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @command_window.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::C)
      case @command_window.index
      when 0  # 更换壁纸画面
        command_wallpaper
      when 1  # 回到标题画面
        command_to_title
      when 2  # 离开游戏
        command_shutdown
      when 3  # 取消
        command_cancel
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新菜单画面背景
  #--------------------------------------------------------------------------
  def update_menu_background
    super
    @menuback_sprite.tone.set(0, 0, 0, 128) if $game_system.wallpaper == 0
  end
  #--------------------------------------------------------------------------
  # ● 生成命令窗口
  #--------------------------------------------------------------------------
  def create_command_window
    s1 = "更换壁纸"
    s2 = Vocab::to_title
    s3 = Vocab::shutdown
    s4 = Vocab::cancel
    @command_window = Window_Command.new(172, [s1, s2, s3, s4])
    @command_window.x = (544 - @command_window.width) / 2
    @command_window.y = (416 - @command_window.height) / 2
    @command_window.openness = 0
  end
  #--------------------------------------------------------------------------
  # ● 进入壁纸更换画面
  #--------------------------------------------------------------------------
  def command_wallpaper
    Sound.play_decision
    @command_window.close
    $scene = Scene_Wallpaper.new
  end
end
  
#============================================================================
# ■ Window_Wallpaper
#----------------------------------------------------------------------------
#  预览壁纸的界面(朴素版)
#============================================================================

class Scene_Wallpaper < Scene_Base
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  def initialize(paperstyle = $game_system.wallpaper)
    @paperstyle = paperstyle
  end
  #--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------
  def start
    super
    paper_show
    create_keys_help
  end
  #--------------------------------------------------------------------------
  # ● 结束处理
  #--------------------------------------------------------------------------
  def terminate
    super
    @keys_help_sprite.dispose
    @papersprite.dispose
  end
  #--------------------------------------------------------------------------
  # ● 返回上级画面
  #--------------------------------------------------------------------------
  def return_scene
    $scene = Scene_Menu.new(5)
  end
  #--------------------------------------------------------------------------
  # ● 下一张预览
  #--------------------------------------------------------------------------
  def nextpic
    @paperstyle += 1
    if @paperstyle  == Wallpaper::PAPERMAX + 1
      @paperstyle  = 0                    
    end
    $scene = Scene_Wallpaper.new(@paperstyle)
  end
  #--------------------------------------------------------------------------
  # ● 上一张预览
  #--------------------------------------------------------------------------
  def prevpic
    @paperstyle -= 1
    if @paperstyle  == -1  
      @paperstyle  = Wallpaper::PAPERMAX                    
    end
    $scene = Scene_Wallpaper.new(@paperstyle)
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene      
    elsif Input.trigger?(Input::C)
      $game_system.wallpaper = @paperstyle
      Sound.play_decision
      return_scene
    end
    if Input.trigger?(Input::UP) || Input.trigger?(Input::LEFT)
      prevpic
    elsif Input.trigger?(Input::DOWN) || Input.trigger?(Input::RIGHT)
      nextpic
    end
  end
  #--------------------------------------------------------------------------
  # ● 生成按键帮助
  #--------------------------------------------------------------------------
  def create_keys_help
    bitmap = Cache.background("crosskey")
    @keys_help_sprite = Sprite.new
    @keys_help_sprite.bitmap = Bitmap.new(Graphics.width, 32)
    @keys_help_sprite.x = 170
    @keys_help_sprite.y = Graphics.height - 32
    @keys_help_sprite.bitmap.blt(240, 2, bitmap,bitmap.rect)
    @keys_help_sprite.bitmap.draw_text(290, 0 ,128, 24, "切换预览")
  end
  #--------------------------------------------------------------------------
  # ● 预览壁纸
  #--------------------------------------------------------------------------
  def paper_show
    if @paperstyle == 0
      bitmap = $game_temp.background_bitmap_temp
    else
      bitmap = Cache.background("#{@paperstyle}")
    end
    @papersprite = Sprite.new
    @papersprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
    @papersprite.bitmap.blt(0, 0, bitmap, bitmap.rect)
  end
end


于是脚本Scene_Menu中出现错误,就是那个游戏时间显示问题。
def update
    super
    update_menu_background
    @command_window.update
    @gold_window.update
    @status_window.update
    @Window_PlayTime.update
    if @command_window.active
      update_command_selection
    elsif @status_window.active
      update_actor_selection
    end
  end
显示@Window_PlayTime.update这一句发生错误。
难道要我将显示游戏时间的那些脚本全删掉吗??能不能在上面的脚本上改动一下,加个显示时间什么的而不用改变Scene_Menu里面的东西??
求教~~~脚本我不会啊~~~

dsu_plus_rewardpost_czw




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1