查看: 4540|回复: 7

[有事请教] 如何修改不同界面的弹出音效?

[复制链接]
梦石
0
星屑
7089
在线时间
722 小时
注册时间
2021-3-5
回帖
731
发表于 2021-4-22 13:46:49 | 显示全部楼层 |阅读模式

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

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

×
比如装备界面的音效是A,物品的是B,队形的是C,等等

改如何修改?
梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2021-4-22 15:04:25 | 显示全部楼层
本帖最后由 alexncf125 于 2021-4-22 15:05 编辑

原本就没有所谓的弹出音效
那是要怎样修改
回复

使用道具 举报

梦石
0
星屑
7089
在线时间
722 小时
注册时间
2021-3-5
回帖
731
 楼主| 发表于 2021-4-23 15:57:07 | 显示全部楼层
alexncf125 发表于 2021-4-22 15:04
原本就没有所谓的弹出音效
那是要怎样修改

原本有呀有呀!
你点右键,弹出菜单来,有音效播出来呀!
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2021-4-23 16:09:44 | 显示全部楼层
本帖最后由 alexncf125 于 2021-4-23 16:16 编辑

在物品菜单选样物品也是那个音效吧...
标题画面选"开始游戏"也是那个音效吧...

以下几句红字就是源代码用来播放"你说的弹出"音效

rpg_scenes.js的

Scene_Map.prototype.callMenu = function() {
    SoundManager.playOk();
    SceneManager.push(Scene_Menu);
    Window_MenuCommand.initCommandPosition();
    $gameTemp.clearDestination();
    this._mapNameWindow.hide();
    this._waitCount = 2;
};

rpg_windows.js的

Window_Selectable.prototype.processOk = function() {
    if (this.isCurrentItemEnabled()) {
        this.playOkSound();
        this.updateInputData();
        this.deactivate();
        this.callOkHandler();
    } else {
        this.playBuzzerSound();
    }
};

Window_Selectable.prototype.playOkSound = function() {
    SoundManager.playOk();
};

所以可以删掉this.playOkSound();
分歧一下CurrentItem, 从而播不同的SE
回复

使用道具 举报

梦石
0
星屑
7089
在线时间
722 小时
注册时间
2021-3-5
回帖
731
 楼主| 发表于 2021-4-23 22:56:45 | 显示全部楼层
alexncf125 发表于 2021-4-23 16:09
在物品菜单选样物品也是那个音效吧...
标题画面选"开始游戏"也是那个音效吧...

SoundManager.playOk();
这个要换成什么才能播放其他音效呢?比如那个音效的文件名是ABC

“分歧一下CurrentItem”,这个看了许久也没有明白其含义,看来我实在是。。。笨。。
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2021-4-23 23:31:57 | 显示全部楼层
本帖最后由 alexncf125 于 2021-4-24 15:40 编辑
RyanYe 发表于 2021-4-23 22:56
SoundManager.playOk();
这个要换成什么才能播放其他音效呢?比如那个音效的文件名是ABC


大概像这样子吧...

Window_Selectable.prototype.processOk = function() {
    if (this.isCurrentItemEnabled()) {
        if (this.currentData()) {
            if (this.currentData().symbol === 'item') {
                AudioManager.playSe({"name":"ABC","volume":100,"pitch":100,"pan":0})
            } else if (this.currentData().symbol === 'skill') {
                AudioManager.playSe({"name":"DEF","volume":100,"pitch":100,"pan":0})
            }
        }
        this.updateInputData();
        this.deactivate();
        this.callOkHandler();
    } else {
        this.playBuzzerSound();
    }
};

评分

参与人数 1赞 +1 收起 理由
RyanYe + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
7089
在线时间
722 小时
注册时间
2021-3-5
回帖
731
 楼主| 发表于 2021-4-24 15:02:16 | 显示全部楼层
alexncf125 发表于 2021-4-23 23:31
大概像这样子吧...

Window_Selectable.prototype.processOk = function() {

你的代码确实可行,可是貌似和别的插件有冲突
因为别的插件在主菜单插入了自己的命令,点击后会报错说
currentData() is not a function
冲突的插件有SRD_StatDistribution,FELSKI_TECHTREE
游戏直接就崩溃了

点评

6L更新了, 如果还是不行, 那我也不懂得解決了  发表于 2021-4-24 15:41
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部