Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
The options system
#1
This is a locked, single-post thread from Creation Asylum. Archived here to prevent its loss.
No support is given. If you are the owner of the thread, please contact administration.


Simple steps to add a nice options system to your Menu.

Add this in the main method:

Code:
@opt = Window_Command.new(160,["Skin","BGM volumen","SE volumen"])
    @skin = Window_Command.new(100,["Black","Blue","Red"])
    @bgm = Slipknot_Slider.new("BGM")
    @bgm.index = $game_system.bgm_volume
    @se = Slipknot_Slider.new("SE")
    @se.index = $game_system.se_volume
    yo = 240 - @opt.height/2
    xo = 16
    xox = xo + @opt.width
    visact(@opt,false); @opt.x = xo; @opt.y = yo
    visact(@skin,false); @skin.x = xox; @skin.y = yo
    visact(@bgm,false); @bgm.x = xox; @bgm.y = yo
    visact(@se,false); @se.x = xox; @se.y = yo
    @optwins = [@opt,@skin,@bgm,@se]


Below this:

Code:
@command_window.x = 320 - @command.width/2
    @command_window.y = 480 - @command.height

Paste this:

Code:
for i in @optwins
      i.z = @command_window.z + 100 # or the name of your command window
    end


This below Graphics.Freeze:

[Code]    for i in @optwins
      i.dispose
    end


This in the update method:

Code:
for i in @optwins
      i.update
    end


In the end of the update method:

Code:
if @opt.active; update_opt; return; end
    if @sbs; update_sbs; return; end


This below (not inside) the update method:

Code:
#-----------------------------------------------------------------
  def update_opt
    if Input.trigger?(Input::B)
      visact(@opt,false)
      @command_window.active = true # or the name of your command window
    end
    if Input.trigger?(Input::C)
      case @opt.index
      when 0; optacc(@skin)
      when 1; optacc(@bgm)
      when 2; optacc(@se)
      end; return
    end
  end
#-----------------------------------------------------------------
  def optacc(w)
    @opt.active = false; @sbs = true; visact(w,true)
  end
#-----------------------------------------------------------------
  def update_sbs
    if Input.trigger?(Input::B)
      case @opt.index
      when 0; optcan(@skin)
      when 1; optcan(@bgm)
      when 2; optcan(@se)
      end
    end
    case @opt.index
    when 1; volacc(1,@bgm.index); return
    when 2; volacc(2,@se.index); return
    end
    if Input.trigger?(Input::C) and @skin.active
      case @skin.index
      when 0; skinacc("SlipBlack")
      when 1; skinacc("SlipBlue")
      when 2; skinacc("SlipRed")
      end
      return
    end
  end
#-----------------------------------------------------------------
  def volacc(pla,vol)
    case pla; when 1
    $game_system.bgm_volume = vol
    when 2
    $game_system.se_volume = vol
    end
  end
#-----------------------------------------------------------------
  def skinacc(sk1)
    $game_system.se_play($data_system.decision_se)
    $game_system.windowskin_name = sk1
  end
#-----------------------------------------------------------------
  def optcan(w)
    visact(w,false); @opt.active = true; @sbs = false
  end
#-----------------------------------------------------------------
  def visact(w,tf)
    w.visible = tf; w.active = tf
  end


Then add this in the bottom of your menu or in a new page:

Code:
#-----------------------------------------------------------------
class Slipknot_Slider < Window_Base
#-----------------------------------------------------------------
  def initialize(text = "")
    super(0,0,160,290)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $defaultfonttype
    self.contents.font.size = $defaultfontsize
    self.active = false; @text = text
    if @index == nil; @index = 0; end
    @item_max = 100; self.visible = false
    @scale = 2; refresh
  end
#-----------------------------------------------------------------
  def index=(index)
    @index = index; refresh
  end
#-----------------------------------------------------------------
  def index
    return @index
  end
#-----------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.draw_text(0,0,128,24,@text+" volume",1)
    self.contents.draw_text(30,32,80,24,"0%")
    self.contents.draw_text(30,82,80,24,"25%")
    self.contents.draw_text(30,132,80,24,"50%")
    self.contents.draw_text(30,182,80,24,"75%")
    self.contents.draw_text(30,232,80,24,"100%")
    curhei = 18; mish = @item_max * @scale + curhei
    self.contents.fill_rect(0,32,20,mish+8,Color.new(200,200,200,140))
    self.contents.fill_rect(2,34,16,mish+4,Color.new(128,128,128,190))
    self.contents.fill_rect(4,36,12,mish,Color.new(64,64,64,190))
    y = (@index*(@item_max*@scale))/@item_max + 36
    self.contents.fill_rect(3,y,14,curhei, Color.new(100,100,100,215))
    self.contents.fill_rect(6,y+4,8,curhei - 8, Color.new(90,90,90,215))
  end
#-----------------------------------------------------------------
  alias slipknot_slider_update update
  def update
    slipknot_slider_update
    if self.active and @item_max > 0
      if Input.repeat?(Input::UP)
        if @index != 0
          case @text
          when "BGM"
            @index -= 5
            $game_system.bgm_play($game_system.bgm_memorize)
          when "SE"
            $game_system.se_play($data_system.decision_se)
            @index -= 5
          end; return
        end
        $game_system.se_play($data_system.buzzer_se)
      end
      if Input.repeat?(Input::DOWN)
        if @index < @item_max
          case @text
          when "BGM"
            @index += 5
            $game_system.bgm_play($game_system.bgm_memorize)
          when "SE"
            $game_system.se_play($data_system.decision_se)
            @index += 5
          end; return
        end
        $game_system.se_play($data_system.buzzer_se)
      end
      refresh; return
    end
  end
#-----------------------------------------------------------------
end
#-----------------------------------------------------------------
class Game_System
#-----------------------------------------------------------------
  attr_accessor :bgm_volume
  attr_accessor :se_volume
#-----------------------------------------------------------------
  alias slipknot_options_initiliaze initialize
  def initialize
    slipknot_options_initiliaze
    @bgm_volume = 100
    @se_volume = 100
  end
#-----------------------------------------------------------------
  def bgm_play(bgm)
    @playing_bgm = bgm
    if bgm != nil and bgm.name != ""
      Audio.bgm_play("Audio/BGM/"+bgm.name,bgm.volume * bgm_volume/100,bgm.pitch)
    else; Audio.bgm_stop
    end; Graphics.frame_reset
  end
#-----------------------------------------------------------------
  def bgs_play(bgs)
    @playing_bgs = bgs
    if bgs != nil and bgs.name != ""
      Audio.bgs_play("Audio/BGS/" + bgs.name, bgs.volume * se_volume / 100, bgs.pitch)
    else; Audio.bgs_stop
    end; Graphics.frame_reset
  end
#-----------------------------------------------------------------
  def me_play(me)
    if me != nil and me.name != ""
      Audio.me_play("Audio/ME/"+me.name, me.volume*se_volume / 100, me.pitch)
    else; Audio.me_stop
    end; Graphics.frame_reset
  end
#-----------------------------------------------------------------
  def se_play(se)
    if se != nil and se.name != ""
      Audio.se_play("Audio/SE/"+se.name,se.volume*se_volume/100,se.pitch)
    end
  end
#-----------------------------------------------------------------
end


To activate it, use that:

Code:
@opt.index = 0; visact(@opt,true)
}


Possibly Related Threads…
Thread Author Replies Views Last Post
  Caldaron's Time System Caldaron 0 2,705 11-05-2006, 01:00 PM
Last Post: Caldaron
  Lives System Constance 0 2,192 08-10-2006, 01:00 PM
Last Post: Constance
  Level Up system Jimmie 0 2,239 07-24-2006, 01:00 PM
Last Post: Jimmie
  Equipment Scrolling System Legacy 0 2,094 05-12-2006, 01:00 PM
Last Post: Legacy
  Enemies Level UP and Game Difficulty Options Combined DrakoShade 0 2,069 03-27-2006, 01:00 PM
Last Post: DrakoShade
  Inn & Savepoint System SephirothSpawn 0 2,044 03-08-2006, 01:00 PM
Last Post: SephirothSpawn
  New Battle System V1.5 (Added Side View) Guedez 0 2,424 01-12-2006, 01:00 PM
Last Post: Guedez
  Slipknot Advance Message System Sheol 0 2,269 01-02-2006, 01:00 PM
Last Post: Sheol
  Guedez's Atrubutes Select System V2.1 Guedez 0 2,429 12-09-2005, 01:00 PM
Last Post: Guedez
  My own Message System Sheol 0 2,259 11-22-2005, 01:00 PM
Last Post: Sheol



Users browsing this thread: