设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1402|回复: 0
打印 上一主题 下一主题

[已经过期] 音量调整脚本如何改成独立类别?适用右键返回?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
248
在线时间
20 小时
注册时间
2012-8-15
帖子
1
跳转到指定楼层
1
发表于 2013-3-16 14:35:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 kikilolo 于 2013-3-16 14:51 编辑

在这帖子引用了好用的音量调节脚本,
http://rpg.blue/forum.php?mod=viewthread&tid=84008
但是这脚本是属于Scene_System 类...
有办法可以更改成独立的类别嗎?例如(Scene_Music01)
让这个脚本可以直接调用参数就呼叫出音量调节界面的方法吗?
我的系统是点击鼠标右键就可以返回的,安装了又没办法点击右键返回画面。。。


脚本中有这些字段,但这都是不需要用到的。。。
因为只是希望可以鼠标左键点选一个图片,就进入音量调节介面,
点选鼠标右键就可以立即返回原画面。
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::save
    s6 = OPTION_NAME
    s7 = Vocab::game_end

不晓得应该如何更改这个脚本。。在此求教高手!谢谢


脚本: 应用脚本
RUBY 代码复制
  1. #==============================================================================
  2. # 菜单中添加系统音量设置 by 沉影不器
  3. #------------------------------------------------------------------------------
  4. # 功能: 在菜单选项中添加[系统音量]选项,可调节:
  5. #       背景音乐.背景声效.音乐和声效
  6. # 说明: 两个脚本(包括slider控件脚本)插入到Main之前
  7. #       在脚本第10行设定初始化系统音量
  8. #       在脚本第11行设定系统音量各自的名称
  9. #       在脚本第12行设定菜单中新增选项的名称
  10. #==============================================================================
  11.   $volume = [60,60,60,60]                               # 初始化系统音量
  12.   VOLUME_NAME = ["背景音乐","背景声效","音乐","声效"]   # 各系统音量名称
  13.   OPTION_NAME = "系统音量"                              # 菜单中新增选项名称
  14. #==============================================================================
  15. # ■ Scene_System
  16. #==============================================================================
  17. class Scene_System < Scene_Base
  18.   #--------------------------------------------------------------------------
  19.   # ● 开始处理
  20.   #--------------------------------------------------------------------------
  21.   def start
  22.     super
  23.     create_menu_background
  24.     @viewport = Viewport.new(0, 0, 544, 416)
  25.     @base_window = Window_Base.new(64, 78, 416, 280)
  26.     @base_window.viewport = @viewport
  27.     @base_window.active = false
  28.     # 处理帮助窗体
  29.     @help_window = Window_Help.new
  30.     @help_window.viewport = @viewport
  31.     @help_window.x = 64
  32.     @help_window.y = 22
  33.     @help_window.width = 416
  34.     @help_window.contents = Bitmap.new(416 - 32, 56 - 32)
  35.     # slider窗体
  36.     @slider_window = []
  37.     for i in 0..3
  38.       @slider_window[i] = Window_Slider.new(64, 78+48*i, 280, 96)
  39.       @slider_window[i].setup(VOLUME_NAME[i],32,32,120,8,100,0,0,1)
  40.       # 绑定变量
  41.       @slider_window[i].value = $volume[i]
  42.       @slider_window[i].active = true
  43.       @slider_window[i].opacity = 0
  44.       @slider_window[i].contents_opacity = 128
  45.     end
  46.     @index = 0
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 结束处理
  50.   #--------------------------------------------------------------------------
  51.   def terminate
  52.     super
  53.     dispose_menu_background
  54.     @viewport.dispose
  55.     @help_window.dispose
  56.     @base_window.dispose
  57.     for i in 0..3
  58.       @slider_window[i].dispose
  59.     end
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 返回至原来的画面
  63.   #--------------------------------------------------------------------------
  64.   def return_scene
  65.     $scene = Scene_Menu.new(5)
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 更新画面
  69.   #--------------------------------------------------------------------------
  70.   def slider_switch
  71.     if Input.repeat?(Input::UP)
  72.       @index -= 1 if @index > 0
  73.       Sound.play_cursor
  74.     end
  75.     if Input.repeat?(Input::DOWN)
  76.       @index += 1 if @index < 3
  77.       Sound.play_cursor
  78.     end
  79.     for i in 0..3
  80.       @slider_window[i].active = false
  81.       @slider_window[i].contents_opacity = 128
  82.     end
  83.     @slider_window[@index].active = true
  84.     @slider_window[@index].contents_opacity = 255
  85.     text = "更改" + @slider_window[@index].name + "的音量。"
  86.     @help_window.set_text(text)
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 更新画面
  90.   #--------------------------------------------------------------------------
  91.   def update
  92.     super
  93.     if Input.trigger?(Input::B)
  94.       Sound.play_cancel
  95.       return_scene
  96.     end
  97.     update_menu_background
  98.     slider_switch
  99.     @slider_window[@index].update
  100.     @help_window.update
  101.     # 绑定变量
  102.     $volume[@index] = @slider_window[@index].value
  103.   end
  104. end
  105. #==============================================================================
  106. # ■ Scene_Menu
  107. #==============================================================================
  108. class Scene_Menu < Scene_Base
  109.   #--------------------------------------------------------------------------
  110.   # ● 生成指令窗口
  111.   #--------------------------------------------------------------------------
  112.   def create_command_window
  113.     s1 = Vocab::item
  114.     s2 = Vocab::skill
  115.     s3 = Vocab::equip
  116.     s4 = Vocab::status
  117.     s5 = Vocab::save
  118.     s6 = OPTION_NAME
  119.     s7 = Vocab::game_end
  120.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
  121.     @command_window.index = @menu_index
  122.     if $game_party.members.size == 0          # 同伴人数为 0 的情况下
  123.       @command_window.draw_item(0, false)     # 物品无效化
  124.       @command_window.draw_item(1, false)     # 特技无效化
  125.       @command_window.draw_item(2, false)     # 装备无效化
  126.       @command_window.draw_item(3, false)     # 状态无效化
  127.     end
  128.     if $game_system.save_disabled             # 禁止存档的情况下
  129.       @command_window.draw_item(4, false)     # 存档无效化
  130.     end
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 更新指令选择
  134.   #--------------------------------------------------------------------------
  135.   def update_command_selection
  136.     if Input.trigger?(Input::B)
  137.       Sound.play_cancel
  138.       $scene = Scene_Map.new
  139.     elsif Input.trigger?(Input::C)
  140.       if $game_party.members.size == 0 and @command_window.index < 4
  141.         Sound.play_buzzer
  142.         return
  143.       elsif $game_system.save_disabled and @command_window.index == 4
  144.         Sound.play_buzzer
  145.         return
  146.       end
  147.       Sound.play_decision
  148.       case @command_window.index
  149.       when 0      # 物品
  150.         $scene = Scene_Item.new
  151.       when 1,2,3  # 特技、装备、状态
  152.         start_actor_selection
  153.       when 4      # 存档
  154.         $scene = Scene_File.new(true, false, false)
  155.       when 5      # 系统设置
  156.         $scene = Scene_System.new
  157.       when 6      # 游戏结束
  158.         $scene = Scene_End.new
  159.       end
  160.     end
  161.   end
  162. end
  163. #==============================================================================
  164. # ■ 背景音乐
  165. #==============================================================================
  166. module RPG
  167.   class BGM < AudioFile
  168.     @@last = BGM.new
  169.     def play
  170.       if @name.empty?
  171.         Audio.bgm_stop
  172.         @@last = BGM.new
  173.       else
  174.         Audio.bgm_play("Audio/BGM/" + @name, @volume * $volume[0]/100 , @pitch)
  175.         @@last = self
  176.       end
  177.     end
  178.   end
  179. #==============================================================================
  180. # ■ 背景声效
  181. #==============================================================================
  182.   class BGS < AudioFile
  183.     @@last = BGS.new
  184.     def play
  185.       if @name.empty?
  186.         Audio.bgs_stop
  187.         @@last = BGS.new
  188.       else
  189.         Audio.bgs_play("Audio/BGS/" + @name, @volume * $volume[1]/100, @pitch)
  190.         @@last = self
  191.       end
  192.     end
  193.   end
  194. #==============================================================================
  195. # ■ 音乐
  196. #==============================================================================
  197.   class ME < AudioFile
  198.     def play
  199.       if @name.empty?
  200.         Audio.me_stop
  201.       else
  202.         Audio.me_play("Audio/ME/" + @name, @volume * $volume[2]/100, @pitch)
  203.       end
  204.     end
  205.   end
  206. #==============================================================================
  207. # ■ 声效
  208. #==============================================================================
  209.   class SE < AudioFile
  210.     def play
  211.       unless @name.empty?
  212.         Audio.se_play("Audio/SE/" + @name, @volume * $volume[3]/100, @pitch)
  213.       end
  214.     end
  215.   end
  216. end


slider控件脚本
RUBY 代码复制
  1. #==============================================================================
  2. # 添加slider控件的rm窗体 by 沉影不器
  3. #------------------------------------------------------------------------------
  4. # 功能描述:   ① 一个可使用类似C++的slider控件的窗体
  5. #             ② 通过slider控件的value输出与指定变量绑定
  6. #             ③ 方便脚本用户自定义样式,可在[● 样式1]之后随意添加新样式
  7. #
  8. # 输入与输出: ① 允许自定义的项目包括:
  9. #                 名称、坐标、宽高、数据最大值、每次改变量、
  10. #                 初始化时显示的值(value)、样式
  11. #             ② 控件输出包括:
  12. #                 名称、数据最大值、每次改变量、当前变量值(value)
  13. #------------------------------------------------------------------------------
  14. class Window_Slider < Window_Base
  15.   #--------------------------------------------------------------------------
  16.   # ● 定义实例变量
  17.   #--------------------------------------------------------------------------
  18.   attr_reader   :name                     # 名称
  19.   attr_reader   :max                      # 最大值
  20.   attr_reader   :change                   # 改变量
  21.   attr_reader   :value                    # 当前值
  22.   #--------------------------------------------------------------------------
  23.   # ● 设置 保存参数
  24.   #     name   : 名称
  25.   #     x      : X 坐标
  26.   #     y      : Y 坐标
  27.   #     w      : 宽
  28.   #     h      : 高
  29.   #     max    : 最大值
  30.   #     change : 改变量
  31.   #     value  : 当前值
  32.   #     style  : 样式
  33.   #--------------------------------------------------------------------------
  34.   def setup(name, x, y, w, h = 10, max = 100, change = 1, value = 0, style = 0)
  35.     @name   = name
  36.     @x      = x
  37.     @y      = y
  38.     @w      = w
  39.     @h      = h
  40.     @max    = max
  41.     @value  = value
  42.     @style  = style
  43.     @change = change > 0 ? change : 1
  44.     draw_slider(value)
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 描绘 slider
  48.   #     value  : 当前值
  49.   #--------------------------------------------------------------------------
  50.   def draw_slider(value)
  51.     case @style
  52.     when 0
  53.       style_0(value)
  54.     when 1
  55.       style_1(value)
  56.     end
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 样式0
  60.   #     value  : 当前值
  61.   #--------------------------------------------------------------------------
  62.   def style_0(value)
  63.     slide_x = (@w - @h/2) * value / @max
  64.     color1  = Color.new(0, 0, 0, 255)
  65.     color2  = Color.new(192, 192, 192, 255)
  66.     # 清理
  67.     self.contents.clear
  68.     # 描绘名称
  69.     self.contents.draw_text(@x, @y, @w, 24, @name)
  70.     # 描绘当前值
  71.     self.contents.draw_text(@x+@w-64, @y, 64, 24, value.to_s, 2)
  72.     # 填充
  73.     self.contents.fill_rect(@x, @y+23+@h/2, @w, 2, color1)
  74.     self.contents.fill_rect(@x+slide_x, @y+24, @h/2, @h, color2)
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 样式1
  78.   #     value  : 当前值
  79.   #--------------------------------------------------------------------------
  80.   def style_1(value)
  81.     width   = @w * value / @max
  82.     color1  = Color.new(0, 0, 0, 255)
  83.     color2  = Color.new(192, 64, 64, 255)
  84.     # 清理
  85.     self.contents.clear
  86.     # 描绘名称
  87.     self.contents.draw_text(@x, @y, @w, 24, @name)
  88.     # 描绘当前值
  89.     self.contents.draw_text(@x+@w-64, @y, 64, 24, value.to_s, 2)
  90.     # 填充
  91.     self.contents.fill_rect(@x-1, @y+23, @w+2, @h+2, color1)
  92.     self.contents.fill_rect(@x, @y+24, width, @h, color2)
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● 更改当前值
  96.   #     value  : 当前值
  97.   #--------------------------------------------------------------------------
  98.   def value=(value)
  99.     @value = value
  100.     draw_slider(value)
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 输入刷新
  104.   #--------------------------------------------------------------------------
  105.   def update
  106.     if Input.repeat?(Input::RIGHT)
  107.       if @value < @max - @change
  108.         @value += @change
  109.       else
  110.         @value = @max
  111.       end
  112.       draw_slider(@value)
  113.       Sound.play_decision
  114.     end
  115.     if Input.repeat?(Input::LEFT)
  116.       if @value > @change
  117.         @value -= @change
  118.       else
  119.         @value = 0
  120.       end
  121.       draw_slider(@value)
  122.       Sound.play_decision
  123.     end
  124.   end
  125. end
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-22 21:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表