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

Project1

 找回密码
 注册会员
搜索
查看: 3318|回复: 6

[通用发布] [FSL][XP/VX]MCI音频模块(允许暂停和恢复)

[复制链接]

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

发表于 2010-10-21 20:27:51 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 沉影不器 于 2010-10-21 21:12 编辑

算是应求脚本吧,允许暂停和恢复BGM和BGS...觉得ME和SE时间短,不需要暂停,就不再重复写了.
脚本用法跟官方游戏模块Audio差不多.详见脚本内说明
  1. #==============================================================================
  2. # ■ [XP/VX] MCI音频模块
  3. #    [XP/VX] AudioMCI
  4. #----------------------------------------------------------------------------
  5. # 功能说明: 处理背景音乐和背景音效的模块,允许暂停播放.
  6. #           使用方法和RGSS内部模块Audio基本相同,具体方法名见使用说明
  7. #----------------------------------------------------------------------------
  8. # 使用说明:
  9. #     
  10. #           ① 播放背景音乐 AudioMCI.bgm_play(音频文件名, 音量)
  11. #              播放背景音效 AudioMCI.bgs_play(音频文件名, 音量)
  12. #              音频文件名需要带扩展后缀名,比如"放生-范逸臣.wma"
  13. #
  14. #           ② 改变背景音乐的音量 AudioMCI.bgm_volume = 新值
  15. #              改变背景音效的音量 AudioMCI.bgs_volume = 新值
  16. #
  17. #           ③ 暂停背景音乐 AudioMCI.bgm_pause
  18. #              暂停背景音效 AudioMCI.bgs_pause
  19. #
  20. #           ④ 恢复背景音乐 AudioMCI.bgm_resume
  21. #              恢复背景音效 AudioMCI.bgs_resume
  22. #
  23. #           ⑤ 停止背景音乐 AudioMCI.bgm_stop
  24. #              停止背景音效 AudioMCI.bgs_stop
  25. #----------------------------------------------------------------------------
  26. #    更新作者: 沉影不器
  27. #    许可协议: FSL
  28. #    项目版本: 1.00.1021
  29. #    引用网址: http://rpg.blue/thread-159157-1-1.html
  30. #----------------------------------------------------------------------------
  31. #    - *1.00.1021 *  By 沉影不器
  32. #      * 初版
  33. #==============================================================================
  34. $fscript = {} if $fscript == nil
  35. $fscript["AudioMCI"] = "1.00.1021"
  36. #----------------------------------------------------------------------------
  37. # ▼ 通用配置模块
  38. #----------------------------------------------------------------------------
  39. module FSL
  40.   module AudioMCI
  41.     VOLM_BGM = 500                # 默认背景音乐(BGM)音量
  42.     VOLM_BGS = 500                # 默认背景音效(BGS)音量
  43.     PATH_BGM = "Audio/BGM/"       # 默认背景音乐(BGM)存放目录
  44.     PATH_BGS = "Audio/BGM/"       # 默认背景音效(BGS)存放目录
  45.   end
  46. end
  47. #==============================================================================
  48. # □ AudioMCI
  49. #==============================================================================
  50. module AudioMCI
  51.   include FSL::AudioMCI
  52.   #--------------------------------------------------------------------------
  53.   # ○ 常量
  54.   #--------------------------------------------------------------------------
  55.   MGID = Win32API.new("winmm","mciGetDeviceIDA","p","l")
  56.   MGCT = Win32API.new("winmm","mciGetCreatorTask","l","l")
  57.   MSSM = Win32API.new("winmm","mciSendStringA","pplp","l")
  58.   MSSS = Win32API.new("winmm","mciSendStringA","pplp","l")
  59.   M2W  = Win32API.new("kernel32","MultiByteToWideChar","ilpipi","l")
  60.   W2M  = Win32API.new("kernel32","WideCharToMultiByte","ilpipipp","l")
  61.   #--------------------------------------------------------------------------
  62.   # ○ 背景音乐 播放
  63.   #--------------------------------------------------------------------------
  64.   def self.bgm_play(filename = nil, volume = nil)
  65.     filename = u2a(filename)
  66.     MSSM.call("open #{PATH_BGS+filename} alias bgm", nil, 0, nil)
  67.     MSSM.call("play bgm repeat", nil, 0, nil)
  68.     self.bgm_volume = volume
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ○ 背景音乐 音量
  72.   #--------------------------------------------------------------------------
  73.   def self.bgm_volume=(volume)
  74.     if volume.nil? && @bgm_volume.nil?
  75.       @bgm_volume = VOLM_BGM
  76.     else
  77.       @bgm_volume = volume
  78.     end
  79.     MSSM.call("setaudio bgm volume to #{volume}", nil, 0, nil)
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ○ 背景音乐 停止
  83.   #--------------------------------------------------------------------------
  84.   def self.bgm_stop
  85.     MSSM.call("close bgm", nil, 0, nil)
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ○ 背景音乐 暂停
  89.   #--------------------------------------------------------------------------
  90.   def self.bgm_pause
  91.     MSSM.call("pause bgm", nil, 0, nil)
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ○ 背景音乐 继续
  95.   #--------------------------------------------------------------------------
  96.   def self.bgm_resume
  97.     MSSS.call("resume bgm", nil, 0, nil)
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ○ 背景音效 播放
  101.   #--------------------------------------------------------------------------
  102.   def self.bgs_play(filename, volume = nil)
  103.     filename = u2a(filename)
  104.     MSSS.call("open #{PATH_BGS+filename} alias bgs", nil, 0, nil)
  105.     MSSS.call("play bgs repeat", nil, 0, nil)
  106.     self.bgs_volume = volume
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ○ 背景音效 音量
  110.   #--------------------------------------------------------------------------
  111.   def self.bgs_volume=(volume)
  112.     if volume.nil? && @bgs_volume.nil?
  113.       @bgs_volume = VOLM_BGS
  114.     else
  115.       @bgs_volume = volume
  116.     end
  117.     MSSS.call("setaudio bgs volume to #{@bgs_volume}", nil, 0, nil)
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ○ 背景音效 停止
  121.   #--------------------------------------------------------------------------
  122.   def self.bgs_stop
  123.     MSSS.call("close bgs", nil, 0, nil)
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ○ 背景音效 暂停
  127.   #--------------------------------------------------------------------------
  128.   def self.bgs_pause
  129.     MSSS.call("pause bgs", nil, 0, nil)
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ○ 背景音效 继续
  133.   #--------------------------------------------------------------------------
  134.   def self.bgs_resume
  135.     MSSS.call("resume bgs", nil, 0, nil)
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ○ UTF8转ASCII
  139.   #--------------------------------------------------------------------------
  140.   def self.u2a(str)
  141.     len = M2W.call(0xFDE9,0,str,-1,nil,0)
  142.     buf = "\0" * (len*2)
  143.     M2W.call(0xFDE9,0,str,-1,buf,buf.size/2)
  144.     len = W2M.call(0,0,buf,-1,nil,0,nil,nil)
  145.     ret = "\0" * len
  146.     W2M.call(0,0,buf,-1,ret,ret.size,nil,nil)
  147.     return ret.delete!("\0")
  148.   end
  149. end
复制代码

本帖估计有不少bug,刚看到读档之后设备仍在播放...
就当抛砖引玉吧...
全功能版请看 >>这里<< 感谢紫苏.


 

点评

呃,xp区的帖子基本不会去看...偶尔从首页最新帖子或者什么链接点点=.=  发表于 2010-10-21 20:51

评分

参与人数 4星屑 +1206 +2 收起 理由
38571240 + 6 感动!太感动了
九夜神尊 + 20 补足
小幽的马甲 + 1000 + 2 GJ
紫苏 + 180 你这动作也忒快了……

查看全部评分

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2008-5-11
帖子
318
发表于 2010-10-21 20:58:03 | 显示全部楼层
沉影大侠的脚本   支持一下
哈哈   我坐了沙发

点评

谢了  发表于 2010-10-23 23:55
请注意主楼红字,请使用紫苏的全功能版  发表于 2010-10-22 19:11
《诛仙小凡传》制作ing
回复 支持 反对

使用道具 举报

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
518 小时
注册时间
2010-6-16
帖子
1073
发表于 2010-10-22 16:33:22 | 显示全部楼层
真是个好脚本,前辈的实力在下真是惭愧~

点评

在下见过不少沉大的脚本,所以说前辈的实力在下真是惭愧  发表于 2010-10-23 08:27
请注意主楼红字,请使用紫苏的全功能版  发表于 2010-10-22 19:11
回复 支持 反对

使用道具 举报

TA还没有解放自身的潜力。

Lv2.观梦者

梦石
0
星屑
535
在线时间
620 小时
注册时间
2009-11-11
帖子
2725
发表于 2010-10-22 20:48:58 | 显示全部楼层
貌似不支持ogg

这里的大佬个个都是人才,讲话又好听,我超喜欢这里的
回复 支持 反对

使用道具 举报

[动态]受到mandy7021的挑战,成功击败了对方。 (打开TA的战斗卡片)

Lv1.梦旅人

姬魂

梦石
0
星屑
168
在线时间
377 小时
注册时间
2009-8-30
帖子
601

开拓者

发表于 2010-10-23 00:08:35 | 显示全部楼层
很实用的
回复 支持 反对

使用道具 举报

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
165
在线时间
3 小时
注册时间
2013-1-2
帖子
1
发表于 2013-1-4 03:09:21 | 显示全部楼层
大侠,请问我想调用那两个函数实现战斗之前暂停地图bgm,播放战斗bgm,战斗之后继续从暂停处播放地图bgm为什么战斗后就没有声音了呢?
回复 支持 反对

使用道具 举报

TA还没有解放自身的潜力。

Lv1.梦旅人

梦石
0
星屑
55
在线时间
327 小时
注册时间
2009-3-9
帖子
355
发表于 2013-6-15 12:04:11 | 显示全部楼层
不支持OGG!!!!!!我勒个去!!!!
新手学习中.....努力吧!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

站长信箱:fux2@moe9th.com|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2019-5-20 12:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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