查看: 3758|回复: 0

[原创发布] 窗口色调调整、色相调整 (超越RGSS3!)

[复制链接]

遠航の猫咪

梦石
3
星屑
26947
在线时间
2423 小时
注册时间
2005-10-15
回帖
987

开拓者

发表于 2016-2-5 12:39:39 | 显示全部楼层 |阅读模式

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

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

×
XP的窗口只能改皮肤,默认是不能像VA那样调整色调的,以下脚本可以弥补这个缺憾,二者各有千秋

窗口色相调整的脚本,改动比较少,功能也局限于对已有窗口的色相进行0-360的调整,但它的好处是不破坏XP专有的“窗口背景平铺”功能(此功能在VA以后版本中已废除)。
窗口色调调整的脚本,改动比较多,功能完全仿照VA的RGSS3那样,用RGB三个值来设定窗口背景色调的操作,且它能使用RGBA四个值,但它的坏处是破坏了窗口背景平铺,强制改为VA那样背景拉伸显示。

注:这两个脚本互相冲突,你只能使用一个。

窗口色相调整[pre lang="ruby"]#==============================================================================
# ■ 窗口色相调整 by SailCat
#------------------------------------------------------------------------------
#  本脚本允许调整窗口色相,调用方法为$game_system.windowskin_hue = (0-360).
#==============================================================================
class Game_System

  #--------------------------------------------------------------------------
  # ● 取得窗口的色相
  #--------------------------------------------------------------------------
  def windowskin_hue
    # 兼容旧存档
    @windowskin_hue.nil? ? 0 : @windowskin_hue
  end
  
  #--------------------------------------------------------------------------
  # ● 设置窗口的色相
  #     value : 色相值,超出范围自动修正
  #--------------------------------------------------------------------------
  def windowskin_hue=(value)
    @windowskin_hue = value % 360
  end
end

class Window_Base < Window
  
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     x      : 窗口的 X 坐标
  #     y      : 窗口的 Y 坐标
  #     width  : 窗口的宽
  #     height : 窗口的宽
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super()
    @windowskin_name = $game_system.windowskin_name
    @windowskin_hue = $game_system.windowskin_hue
    self.windowskin = RPG::Cache.windowskin(@windowskin_name, @windowskin_hue)
    self.x = x
    self.y = y
    self.width = width
    self.height = height
    self.z = 100
  end
end

module RPG
  module Cache
    def self.windowskin(filename, hue = 0)
      self.load_bitmap("Graphics/Windowskins/", filename, hue)
    end
  end
end[/pre]

窗口色调调整
[pre lang="ruby"]#==============================================================================
# ■ 窗口色调调整 by SailCat
#------------------------------------------------------------------------------
#  本脚本允许调整窗口色调,调用方法为$game_system.window_tone = Tone.new(r, g, b, a).
#==============================================================================
class Game_System

  #--------------------------------------------------------------------------
  # ● 取得窗口的色调
  #--------------------------------------------------------------------------
  def window_tone
    # 兼容旧存档
    @window_tone.nil? ? Tone.new(0, 0, 0, 0) : @window_tone
  end
  
  #--------------------------------------------------------------------------
  # ● 设置窗口的色调
  #     value : 色调值
  #--------------------------------------------------------------------------
  def window_tone=(value)
    @window_tone = value.is_a?(Tone) ? value : Tone.new(0, 0, 0, 0)
  end
end

class Window_Base < Window
  
  alias sailcat_dispose dispose unless method_defined?(:sailcat_dispose)
  alias sailcat_back_opacity= back_opacity= unless method_defined?(:sailcat_back_opacity=)
  alias sailcat_back_opacity back_opacity unless method_defined?(:sailcat_back_opacity)
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     x      : 窗口的 X 坐标
  #     y      : 窗口的 Y 坐标
  #     width  : 窗口的宽
  #     height : 窗口的宽
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super()
    @windowskin_name = $game_system.windowskin_name
    self.windowskin = RPG::Cache.windowskin(@windowskin_name)
    @back_sprite = Sprite.new
    @back_sprite.bitmap = self.windowskin
    @back_sprite.src_rect = Rect.new(0, 0, 128, 128)
    @back_sprite.ox = 0
    @back_sprite.oy = 0
    @back_sprite.z = 99
    self.x = x
    self.y = y
    self.width = width
    self.height = height
    self.z = 100
    set_tone($game_system.window_tone)
    self.sailcat_back_opacity = 0
  end
  
  def set_tone(tone)
    @back_sprite.tone = tone
    @back_sprite.opacity = self.sailcat_back_opacity
    @back_sprite.zoom_x = self.width / 128.0
    @back_sprite.zoom_y = self.height / 128.0
  end
  
  def dispose
    sailcat_dispose
    @back_sprite.dispose
  end
  
  def back_opacity
    return @back_sprite.opacity
  end
  
  def back_opacity=(value)
    @back_sprite.opacity = value
  end
  
  def x=(x)
    super
    @back_sprite.x = x
  end
  
  def y=(y)
    super
    @back_sprite.y = y
  end
  
  def width=(width)
    super
    @back_sprite.zoom_x = width / 128.0
  end
  
  def height=(height)
    super
    @back_sprite.zoom_y = height / 128.0
  end
  
  def visible=(visible)
    super
    @back_sprite.visible = visible
  end
end
[/pre]


效果图:默认的XP窗口皮肤,色调设置值为和VA一样的(-34,0,68,0)
窗口色调调整.png

范例工程:
Window_Tone.zip (203.35 KB, 下载次数: 26, 售价: 1 星屑)
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

在本版发帖返回顶部