查看: 3129|回复: 5

[已经解决] VX的音量问题

[复制链接]
梦石
0
星屑
381
在线时间
238 小时
注册时间
2013-8-20
回帖
410
发表于 2013-11-16 18:36:08 | 显示全部楼层 |阅读模式

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

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

×
Audio.se_play("Audio/SE/damage",50+n*10,100)
以上是播放SE脚本
可是音量最大只能是100,有没有办法修改最大值?

评分

参与人数 3星屑 +270 收起 理由
怪蜀黍 + 20 反馈
tjjlb + 150 我也想问这个问题 = =
R-零 + 100 糖

查看全部评分

不定期回来6R玩。
↓下方广告帖,欢迎点击
梦石
0
星屑
1002
在线时间
1270 小时
注册时间
2011-2-14
回帖
5388
发表于 2013-11-17 11:31:12 | 显示全部楼层
本帖最后由 R-零 于 2013-11-17 11:47 编辑

难得来提问区看下
对于这个问题用api函数来解决修改系统当前的音量
前段是获取窗口句柄、后段是sendmessage函数
使用方法代码使用vup,提升2%音量
使用vdown,降低2%音量
以上代码可以连续使用达到效果

范例 Project1.7z (233.93 KB, 下载次数: 70)

[pre lang="ruby" line="1"]WM_APPCOMMAND = 0x319;
APPCOMMAND_VOLUME_UP = 0x0a;
APPCOMMAND_VOLUME_DOWN = 0x09;
APPCOMMAND_VOLUME_MUTE = 0x08;
#==============================================================================
# ■ Kernel
#------------------------------------------------------------------------------
#  该模块中定义了可供所有类使用的方法。Object 类中包含了该模块。
#==============================================================================
module Kernel
  #--------------------------------------------------------------------------
  # ● 需要的 Windows API 函数
  #--------------------------------------------------------------------------
  GetWindowThreadProcessId = Win32API.new("user32", "GetWindowThreadProcessId", "LP", "L")
  GetWindow = Win32API.new("user32", "GetWindow", "LL", "L")
  GetClassName = Win32API.new("user32", "GetClassName", "LPL", "L")
  GetCurrentThreadId = Win32API.new("kernel32", "GetCurrentThreadId", "V", "L")
  GetForegroundWindow = Win32API.new("user32", "GetForegroundWindow", "V", "L")
  #--------------------------------------------------------------------------
  # ● 获取窗口句柄
  #--------------------------------------------------------------------------
  def get_hWnd
    # 获取调用线程(RM 的主线程)的进程标识
    threadID = GetCurrentThreadId.call
    # 获取 Z 次序中最靠前的窗口
    hWnd = GetWindow.call(GetForegroundWindow.call, 0)
    # 枚举所有窗口
    while hWnd != 0
      # 如果创建该窗口的线程标识匹配本线程标识
      if threadID == GetWindowThreadProcessId.call(hWnd, 0)
        # 分配一个 11 个字节的缓冲区
        className = " " * 11
        # 获取该窗口的类名
        GetClassName.call(hWnd, className, 12)
        # 如果匹配 RGSS Player 则跳出循环
        break if className == "RGSS Player"
      end
      # 获取下一个窗口
      hWnd = GetWindow.call(hWnd, 2)
    end
    return hWnd
  end
end

VAPI = Win32API.new('user32','SendMessage','lllp','l')
def vup
  VAPI.call(get_hWnd,WM_APPCOMMAND,0x30292,APPCOMMAND_VOLUME_UP * 0x10000)
end
def vdown
  VAPI.call(get_hWnd,WM_APPCOMMAND,0x30292,APPCOMMAND_VOLUME_DOWN * 0x10000)
end
[/pre]

点评

+10086  发表于 2014-9-6 16:25

评分

参与人数 1梦石 +1 收起 理由
怪蜀黍 + 1 认可答案

查看全部评分

回复

使用道具 举报

送快递的水表员

梦石
10
星屑
5259
在线时间
3304 小时
注册时间
2012-6-27
回帖
7028

开拓者贵宾

发表于 2013-11-17 09:24:09 | 显示全部楼层
用音频编辑软件吧音效的本身音量调大(←简直像是没说啊魂淡 = =

评分

参与人数 1星屑 +30 收起 理由
怪蜀黍 + 30 你说出了我们大家的心声

查看全部评分

回复

使用道具 举报

梦石
0
星屑
381
在线时间
238 小时
注册时间
2013-8-20
回帖
410
 楼主| 发表于 2013-11-18 08:11:10 | 显示全部楼层
R-零 发表于 2013-11-17 11:31
难得来提问区看下
对于这个问题用api函数来解决修改系统当前的音量
前段是获取窗口句柄、后段是sendmessage ...

请问这脚本功能要怎么代入上面的脚本语句?
Audio.se_play("Audio/SE/damage",50+n*10,100)
不定期回来6R玩。
↓下方广告帖,欢迎点击
回复

使用道具 举报

梦石
0
星屑
1002
在线时间
1270 小时
注册时间
2011-2-14
回帖
5388
发表于 2013-11-29 17:02:31 | 显示全部楼层
白魔导师宝儿 发表于 2013-11-18 08:11
请问这脚本功能要怎么代入上面的脚本语句?
Audio.se_play("Audio/SE/damage",50+n*10,100) ...

不一样,这个是修改全局。在你播放音乐时可以修改操作系统的音量。所以要和你的脚本分开使用
回复

使用道具 举报

梦石
0
星屑
381
在线时间
238 小时
注册时间
2013-8-20
回帖
410
 楼主| 发表于 2013-11-29 19:45:27 | 显示全部楼层
R-零 发表于 2013-11-29 17:02
不一样,这个是修改全局。在你播放音乐时可以修改操作系统的音量。所以要和你的脚本分开使用 ...

明白了
多谢解释
不定期回来6R玩。
↓下方广告帖,欢迎点击
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部