애드온
2010.01.11 01:46

게임 플레이중 음량 설정

조회 수 1591 추천 수 1 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

게임 플레이중 음량 설정 RGSS2 DAIpage v1.0

 

●기능과 사용법
·게임중에F5키를 누르면 음량 조정을 할 수 있습니다.
·BGM(와)과BGS·ME(와)과SE(을)를 각각 설정할 수 있으므로 편리할지도 모릅니다.

 

● 재정의 하고 있는 클래스 명과 모듈명
 module RPG,Game_System(을)를 앨리어스(alias).

 

=end
#==============================================================================
# ■ Volume_Config
#==============================================================================
module Volume_Config
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    if Input.trigger?(Input::F5)
      Sound.play_decision
      create_volume_back_sprite
      create_volume_gauge_bitmap
      volume_gauge_refresh
      update_config
    end
  end
  #--------------------------------------------------------------------------
  # ● 배경 스프라이트의 작성
  #--------------------------------------------------------------------------
  def create_volume_back_sprite
    @back_sprite = Sprite.new
    @back_sprite.bitmap = Bitmap.new(300, 110)
    color = Color.new(0, 0, 0, 128)
    @back_sprite.bitmap.fill_rect(@back_sprite.bitmap.rect, color)
    wlh = 24
    @back_sprite.bitmap.draw_text(4, 4, 128, 24, "음량 변경")
    @back_sprite.bitmap.draw_text(28, 4 + wlh, 128, 24, "BGM/BGS")
    @back_sprite.bitmap.draw_text(28, 6 + wlh * 2 , 128, 24, " ME / SE ")
    @back_sprite.bitmap.draw_text(2, 4 + wlh , 24, 24, "→")
    t = "※↑·↓·→·←그리고 변경, F5키로 종료."
    @back_sprite.bitmap.font.size = 17
    @back_sprite.bitmap.draw_text(4, 8 + wlh * 3 , 296, 24, t)
    @back_sprite.bitmap.font.size = 20
  end
  #--------------------------------------------------------------------------
  # ● 게이지용 비트 맵의 작성
  #--------------------------------------------------------------------------
  def create_volume_gauge_bitmap
    @gauge_bitmap1 = Bitmap.new(12, 24)
    @gauge_bitmap1.fill_rect(@gauge_bitmap1.rect, Color.new(255, 0, 0))
    @gauge_bitmap1.fill_rect(0, 0, 2, 24, Color.new(255, 128, 128))
    @gauge_bitmap1.fill_rect(0, 0, 23, 2, Color.new(255, 128, 128))
    @gauge_bitmap1.fill_rect(10, 0, 2, 23, Color.new(128, 0, 0))
    @gauge_bitmap1.fill_rect(0, 22, 12, 2, Color.new(128, 0, 0))
    @gauge_bitmap2 = Bitmap.new(18, 24)
    @gauge_bitmap2.fill_rect(@gauge_bitmap2.rect, Color.new(0, 0, 255))
    @gauge_bitmap2.fill_rect(0, 0, 2, 24, Color.new(128, 128, 255))
    @gauge_bitmap2.fill_rect(0, 0, 23, 2, Color.new(128, 128, 255))
    @gauge_bitmap2.fill_rect(10, 0, 2, 23, Color.new(0, 0, 128))
    @gauge_bitmap2.fill_rect(0, 22, 12, 2, Color.new(0, 0, 128))
  end
  #--------------------------------------------------------------------------
  # ● 게이지 묘화
  #--------------------------------------------------------------------------
  def volume_gauge_refresh
    @back_sprite.bitmap.clear_rect(156, 28, 200, 56)
    @back_sprite.bitmap.fill_rect(156, 28, 200, 56, Color.new(0, 0, 0, 128))
    src_bitmap = @gauge_bitmap1
    src_rect = @gauge_bitmap1.rect
    for i in 0...($game_system.volume_list[0] / 10)
      @back_sprite.bitmap.blt(156 + i * 12, 28, src_bitmap, src_rect)
    end
    src_bitmap = @gauge_bitmap2
    for i in 0...($game_system.volume_list[1] / 10)
      @back_sprite.bitmap.blt(156 + i * 12, 54, src_bitmap, src_rect)
    end
  end
  #--------------------------------------------------------------------------
  # ● 콘피그후레임 갱신
  #--------------------------------------------------------------------------
  def update_config
    index = 0
    loop do
      @back_sprite.update
      Graphics.update
      Input.update
      Graphics.frame_count -= 1
      if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
        Sound.play_decision
        index += 1
        index = 0 if index == 2
        @back_sprite.bitmap.clear_rect(2, 28, 24, 56)
        @back_sprite.bitmap.fill_rect(2, 28, 24, 56, Color.new(0, 0, 0, 128))
        @back_sprite.bitmap.draw_text(2, 4 + 24 * (index + 1), 24, 24, "→")
      elsif Input.repeat?(Input::RIGHT)
        Sound.play_decision
        @back_sprite.update
        $game_system.volume_list[index] += 10
        if $game_system.volume_list[index] >= 100
          $game_system.volume_list[index] = 100
        end
        volume_gauge_refresh
        RPG::BGM::last.play
      elsif Input.repeat?(Input::LEFT)
        Sound.play_decision
        $game_system.volume_list[index] -= 10
        if $game_system.volume_list[index] <= 0
          $game_system.volume_list[index] = 0
        end
        volume_gauge_refresh
        RPG::BGM::last.play
      elsif Input.trigger?(Input::F5)
        Sound.play_decision
        @back_sprite.bitmap.dispose
        @back_sprite.dispose
        @gauge_bitmap1.dispose
        @gauge_bitmap2.dispose
        break
      end
    end
    Graphics.wait(2)
  end
end

module RPG
#==============================================================================
# ■ AudioFile
#==============================================================================
class AudioFile
  alias dai_volume_initialize initialize unless $@
  def initialize(name = "", volume = 100, pitch = 100)
    dai_volume_initialize(name, volume, pitch)
    @base_volume = @volume
  end
  #--------------------------------------------------------------------------
  # ● 음량 변경
  #--------------------------------------------------------------------------
  def volume_change
    @base_volume = @volume if @base_volume.nil?
    @volume = (@base_volume * correction_value / 100)
  end
  #--------------------------------------------------------------------------
  # ● 음량 보정치의 취득
  #--------------------------------------------------------------------------
  def correction_value
    if self.is_a?(RPG::BGM) or self.is_a?(RPG::BGS)
      return $game_system.volume_list[0]
    elsif self.is_a?(RPG::ME) or self.is_a?(RPG::SE)
      return $game_system.volume_list[1]
    end
    return 100
  end
end
#==============================================================================
# ■ BGM
#==============================================================================
class BGM < AudioFile
  alias dai_volume_play play unless $@
  def play
    volume_change
    dai_volume_play
  end
end
#==============================================================================
# ■ BGS
#==============================================================================
class BGS < AudioFile
  alias dai_volume_play play unless $@
  def play
    volume_change
    dai_volume_play
  end
end
#==============================================================================
# ■ ME
#==============================================================================
class ME < AudioFile
  alias dai_volume_play play unless $@
  def play
    volume_change
    dai_volume_play
  end
end
#==============================================================================
# ■ SE
#==============================================================================
class SE < AudioFile
  alias dai_volume_play play unless $@
  def play
    volume_change
    dai_volume_play
  end
end
end

#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  alias dai_volume_initialize initialize
  def initialize
    dai_volume_initialize
    @volume_list = [100, 100]
  end
  #--------------------------------------------------------------------------
  # ● 음량 보정치의 취득
  #--------------------------------------------------------------------------
  def volume_list
    @volume_list = [100, 100] if @volume_list.nil? # 세이브 파일 대책
    return @volume_list
  end
  #--------------------------------------------------------------------------
  # ● 음량 보정치
  #--------------------------------------------------------------------------
  def volume_list=(n)
    @volume_list = n
  end
end

#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map
  include Volume_Config
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
  include Volume_Config
end
#==============================================================================
# ■ Scene_Menu
#==============================================================================
class Scene_Menu < Scene_Base
  include Volume_Config
end
#==============================================================================
# ■ Scene_Item
#==============================================================================
class Scene_Item < Scene_Base
  include Volume_Config
end
#==============================================================================
# ■ Scene_Skill
#==============================================================================
class Scene_Skill < Scene_Base
  include Volume_Config
end
#==============================================================================
# ■ Scene_Equip
#==============================================================================
class Scene_Equip < Scene_Base
  include Volume_Config
end
#==============================================================================
# ■ Scene_Status
#==============================================================================
class Scene_Status < Scene_Base
  include Volume_Config
end
#==============================================================================
# ■ Scene_File
#==============================================================================
class Scene_File < Scene_Base
  include Volume_Config
end
#==============================================================================
# ■ Scene_Shop
#==============================================================================
class Scene_Shop < Scene_Base
  include Volume_Config
end
#==============================================================================
# ■ Scene_Name
#==============================================================================
class Scene_Name < Scene_Base
  include Volume_Config
end
#==============================================================================
# ■ Scene_End
#==============================================================================
class Scene_End < Scene_Base
  include Volume_Config
end


List of Articles
분류 제목 글쓴이 날짜 조회 수 추천 수
Apache에서 Nginx 최신대역으로 업데이트 하였습니다. 니오팅 2020.06.26 67 0
2020년 새해 복 많이 받으시어요! 2 file 니오팅 2020.01.12 465 0
KGC 엔진 KGC 스크립트 라이브러리 2 file 독도2005 2010.02.20 2590 0
온라인 RPG 만들기 VX 온라인 소스 3 file 니오티 2010.02.11 5027 2
대화관련 vx 문장의속도를 조절하는방법 1 윳쿠리 2010.02.10 2426 0
전투관련 배틀중 윈도우 투명하게 표시 2 ruby 2010.01.20 1667 0
공통 Script 디버그 창의 수정 1 file ruby 2010.01.12 1741 0
Cacao 엔진 Cacao Base Script 3 file ruby 2010.01.11 1858 0
Cacao 엔진 Bitmap Class EX 1 file ruby 2010.01.11 3369 1
Cacao 엔진 Interpreter 108 EX for VX : RGSS2 Ver 1.01    by CACAO file ruby 2010.01.11 1853 0
애드온 게임 플레이중 음량 설정 2 니오티 2010.01.11 1591 1
제한변경 타이머 비/표시 기능 니오티 2010.01.11 1616 0
시각적효과 장소이동시 페이드인, 페이드 아웃 처리 니오티 2010.01.11 2001 0
메뉴관련 맵상에서 스테이터스 표시 1 니오티 2010.01.11 2225 1
아이템 아이템 화면 확장 (정렬기능 포함) 1 니오티 2010.01.11 1600 0
전투관련 특정 스킬의 타겟을 복수로 설정합니다 ! file ruby 2010.01.09 1779 0
맵관련 특정한 타일에서 미끄러집니다 2 ruby 2010.01.09 2044 0
전투관련 게이지가 차야 행동할수있는 배틀 3 file ruby 2010.01.09 1934 0
맵관련 시스템 문자를, 화상으로 변경합니다 file ruby 2010.01.09 1903 0
전투관련 몬스터가 데미지 받을시 진동 file ruby 2010.01.09 1771 0
전투관련 배틀시 적위에 데미지표시를 팝업시킵니다 1 file ruby 2010.01.09 1849 0
대화관련 메시지가 나올때 효과음이 나도록 합니다 file ruby 2010.01.09 1704 0
Board Pagination Prev 1 2 3 4 Next
/ 4

Copyright ⓒ Nioting All Rights Reserved. (since 1999)   개인정보취급방침