03-09-2013, 12:07 PM 
	
	
	
		Hi All,
I need help with a script that is meant to change windows styles during the game. A menu lets you select the window styles and should then apply them. This is working as styles for menus and the battle scenes do change but doesn't seem to apply to text boxes when talking to characters...
Script is below from the whole of the options screen -the section I believe controls the windows styles is Window_Windowskin: have I missed something?
Here is a video of the current behaviour if it helps...
http://www.mediafire.com/?6gg5v9f8yrnstgb
As always any help or pointers would be appreciated - Many Thanks!
	
	
	
	
I need help with a script that is meant to change windows styles during the game. A menu lets you select the window styles and should then apply them. This is working as styles for menus and the battle scenes do change but doesn't seem to apply to text boxes when talking to characters...
Script is below from the whole of the options screen -the section I believe controls the windows styles is Window_Windowskin: have I missed something?
Code:
#==============================================================================
# ■ Window_Base
#==============================================================================
class Window_Base
  #--------------------------------------------------------------------------
  def draw_meter(now, max, x, y, width, height, start_color, end_color=start_color )
    self.contents.fill_rect(x, y, width, height, Color.new(0,0,0,255))
    now = now > max ? max : now
    percentage = max != 0 ? (width) * now / max.to_f : 0
    if start_color == end_color
      self.contents.fill_rect(x, y, percentage, height, start_color)
    else
      for i in 0..percentage-1
        r = start_color.red + (end_color.red - start_color.red) / percentage * i
        g = start_color.green + (end_color.green - start_color.green) / percentage * i
        b = start_color.blue + (end_color.blue - start_color.blue) / percentage * i
        a = start_color.alpha + (end_color.alpha - start_color.alpha) / percentage * i
        self.contents.fill_rect(x+i, y, 1, height, Color.new(r, g, b, a))
      end
    end
  end
  #--------------------------------------------------------------------------
end
#==============================================================================
# ■ Window_Option
#==============================================================================
class Window_Option < Window_Base
  #--------------------------------------------------------------------------
  def initialize
    super(6*32, 128, 13*32+16, 2*24+32)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Berlin Sans FB"
    self.contents.font.size = 20
    refresh
  end
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    
    self.contents.fill_rect(20, 0+10, 200, 6, Color.new(0, 0, 0, 255))
    self.contents.fill_rect(20, 24+10, 200, 6, Color.new(0, 0, 0, 255))
    
    draw_meter($game_system.se_volume, 100, 21, 1+10, 198, 4, Color.new(255, 255, 255, 255))
    draw_meter($game_system.me_volume, 100, 21, 25+10, 198, 4, Color.new(255, 255, 255, 255))
    
    self.contents.font.color = Color.new( 80, 32, 32)
    self.contents.draw_text(0, 0, width-32, 24, "0")
    self.contents.draw_text(224, 0, 32, 24, "100")
    self.contents.draw_text(0, 0, width-32-2, 24, $game_system.se_volume.to_s + "/ 100", 2)
    self.contents.draw_text(0, 24, width-32, 24, "0")
    self.contents.draw_text(224, 24, 32, 24, "100")
    self.contents.draw_text(0, 24, width-32-2, 24, $game_system.me_volume.to_s + "/ 100", 2)
  end
  #--------------------------------------------------------------------------
end
#==============================================================================
# ■ Window_OptionCommand
#==============================================================================
class Window_OptionCommand < Window_Selectable
  #--------------------------------------------------------------------------
  def initialize
    super(16, 160, 5*32, 4*24+32)
    @commands = [" ", " ", " ", " "]
    @description = ["",
                                "",
                                "",
                                ""]
    @item_max = 4
    @column_max = 1
    self.contents = Bitmap.new(width - 32, height-32)
    self.contents.font.name = "Berlin Sans FB"
    self.contents.font.size = 20
    for i in 0..(@item_max-1)
      draw_item(i, normal_color)
    end
    self.z = 200
    self.index = 0
  end
  #--------------------------------------------------------------------------
  def draw_item(index, color)
    self.contents.font.color = Color.new( 80, 32, 32)
    rect = Rect.new(0, 24*index, width-32, 24)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, @commands[index], 1)
  end
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(@description[index], 1)
  end
  #--------------------------------------------------------------------------
  def update_cursor_rect
    self.cursor_rect.set(0, 24*index, width-32, 24)
  end
  #--------------------------------------------------------------------------
end
#==============================================================================
# ■ Window_Windowskin
#==============================================================================
class Window_Windowskin < Window_Selectable
  #--------------------------------------------------------------------------
  def initialize
    super(6*32, 128+3*24+8, 13*32+16, 32+64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.index = -1
    self.active = false
    @column_max = @item_max = 3#ZVB# Inserisci il numero di windowskin presenti nell'omonima cartella
    refresh
  end
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0..@item_max-1
      x = i % @column_max * (width-32)/@column_max
      y = i / @column_max * 64
      bitmap = RPG::Cache.windowskin("Windowskin#{i + 1}")
      self.contents.blt(x, y, bitmap, Rect.new(64, 0, 128, 64), 255)
    end
  end
  #--------------------------------------------------------------------------
  def update_cursor_rect
    x = index % @column_max * (width-32)/@column_max
    y = index / @column_max * 64
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(x, y, 128, 64)
    end
  end
  #--------------------------------------------------------------------------
end
#==============================================================================
# ■ Scene_Option
#==============================================================================
class Scene_Option
  #--------------------------------------------------------------------------
  def initialize(index=0)
    @index = index
  end
  #--------------------------------------------------------------------------
  def main
    @command_window = Window_OptionCommand.new
    @help_window = Window_Help.new
    @command_window.help_window = @help_window
    @option_window = Window_Option.new
    @windowskin_window = Window_Windowskin.new
    @se_regulation = false
    @me_regulation = false
    @menu = Plane.new    
    @menu.bitmap = RPG::Cache.picture("opzioni")
    @menu.opacity = 255
    @command_window .windowskin = RPG::Cache.windowskin("vuota")
    @help_window .windowskin = RPG::Cache.windowskin("vuota")
    @option_window .windowskin = RPG::Cache.windowskin("vuota")
    @windowskin_window .windowskin = RPG::Cache.windowskin("vuota")
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @help_window.dispose
    @command_window.dispose
    @option_window.dispose
    @windowskin_window.dispose
  end
  #--------------------------------------------------------------------------
  def update
    @help_window.update
    @command_window.update
    @option_window.update
    @windowskin_window.update
    if @command_window.active
      @command_window.help_window = @help_window
      update_command
      return
    end
    if @windowskin_window.active
      @help_window.set_text("")
      update_windowskin
      return
    end
    if @se_regulation == true
      update_se_regulation
    end
    if @me_regulation == true
      update_me_regulation
    end
  end
  #--------------------------------------------------------------------------
  def update_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(4)
      return
    end
    if Input.trigger?(Input::C)
      case @command_window.index
      when 0
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @se_regulation = true
      when 1
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @me_regulation = true
      when 2
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @windowskin_window.index = 0
        @windowskin_window.active = true
      when 3
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Formation.new
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  def update_se_regulation
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @se_regulation = false
      @command_window.active = true
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @se_regulation = false
      @command_window.active = true
      return
    end
    if Input.repeat?(Input::RIGHT) and $game_system.se_volume < 100
      $game_system.se_play($data_system.cursor_se)
      $game_system.se_volume += 1
      @option_window.refresh
    end
    if Input.repeat?(Input::LEFT) and $game_system.se_volume > 0
      $game_system.se_play($data_system.cursor_se)
      $game_system.se_volume -= 1
      @option_window.refresh
    end
  end
  #--------------------------------------------------------------------------
  def update_me_regulation
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @me_regulation = false
      @command_window.active = true
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @me_regulation = false
      @command_window.active = true
      return
    end
    if Input.repeat?(Input::RIGHT) and $game_system.me_volume < 100
      $game_system.me_volume += 1
      
      $game_system.bgm_memorize
      $game_system.bgm_stop
      $game_system.bgm_restore 
      
      @option_window.refresh
    end
    if Input.repeat?(Input::LEFT) and $game_system.me_volume > 0
      $game_system.me_volume -= 1
      
      $game_system.bgm_memorize
      $game_system.bgm_stop
      $game_system.bgm_restore 
      
      @option_window.refresh
    end
  end
  #--------------------------------------------------------------------------
  def update_windowskin
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @windowskin_window.active = false
      @command_window.active = true
      @windowskin_window.index = -1
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      $data_system.windowskin_name = $game_system.windowskin_name = "Windowskin#{@windowskin_window.index + 1}"
      return
    end
  end
  #--------------------------------------------------------------------------
endHere is a video of the current behaviour if it helps...
http://www.mediafire.com/?6gg5v9f8yrnstgb
As always any help or pointers would be appreciated - Many Thanks!

 
 

 

 

