Project1

标题: MV有没有对话声音的插件? [打印本页]

作者: 布鲁斯    时间: 2016-3-16 19:13
标题: MV有没有对话声音的插件?
MV有没有对话声音的插件! VA里有个脚本是这样的
#==============================================================================
# ★ メッセージ音ポポポ
# 作成・配布元:misty_rain(http://kilisamenosekai.web.fc2.com/)
# ver:1.0 作成(2012/06/23)
#
# 文章が表示される時に効果音がポポポと鳴ります。
# 文章の表示で\CHSE[2]などと入力しておくと、
# 下の方に記述している効果音が鳴るようになります。
#==============================================================================
module MR_MES_SE
  INTERVAL = 2 # 効果音が鳴る間隔

end  
#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
#  文章表示に使うメッセージウィンドウです。
#==============================================================================
class Window_Message < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias mr_wm_initialize initialize
  def initialize
    mr_wm_initialize
    @chse_count = MR_MES_SE::INTERVAL
    @chse_mode = 6
  end
  #--------------------------------------------------------------------------
  # ● 通常文字の処理
  #--------------------------------------------------------------------------
  alias mr_wm_process_normal_character process_normal_character
  def process_normal_character(c, pos)
    mr_wm_process_normal_character(c,pos)
    ch_se
  end
  #--------------------------------------------------------------------------
  # ● 制御文字の処理
  #     code : 制御文字の本体部分(「\C[1]」なら「C」)
  #     text : 描画処理中の文字列バッファ(必要なら破壊的に変更)
  #     pos  : 描画位置 {:x, :y, :new_x, :height}
  #--------------------------------------------------------------------------
  alias mr_wm_process_escape_character process_escape_character
  def process_escape_character(code, text, pos)
    case code.upcase
    when 'CHSE'
      @chse_mode = obtain_escape_param(text).to_i
    else
      mr_wm_process_escape_character(code, text, pos)
    end
  end
  #--------------------------------------------------------------------------
  # ● 効果音
  #--------------------------------------------------------------------------
  def ch_se
    if @chse_count >= MR_MES_SE::INTERVAL
      case @chse_mode
        #以下のように『』内を設定して使用する。
        #when 『5』
        #  se = RPG::SE.new("『SE名』",『ボリューム』,『ピッチ』)
        #  se.play
      when 0 #\CHSE[0]の音
        #音なし
        #se = RPG::SE.new("Cursor2",75,100)
        #se.play
      when 1 #\CHSE[1]の音
        se = RPG::SE.new("Cursor1",80,125)
        se.play
      when 2 #\CHSE[2]の音
        se = RPG::SE.new("Cursor2",100,150)
        se.play
      when 3 #\CHSE[3]の音
        se = RPG::SE.new("Cursor2",80,75)
        se.play
      when 4 #\CHSE[4]の音
        se = RPG::SE.new("Cursor2",80,50)
        se.play
      when 5 #\CHSE[5]の音
        se = RPG::SE.new("Cursor2",80,100)
        se.play
      when 6 #\CHSE[6]の音
        se = RPG::SE.new("Cursor2",80,30)
        se.play
      when 7 #\CHSE[7]の音
        se = RPG::SE.new("Cursor2",80,20)
        se.play
      when 8 #\CHSE[8]の音
        se = RPG::SE.new("Cursor2",80,10)
        se.play
      else
        #音なし
        #se = RPG::SE.new("Cursor2",75,100)
        #se.play
        
      end
      @chse_count = 0
    elsif @chse_count < MR_MES_SE::INTERVAL
      @chse_count = @chse_count + 1
    end
  end
end
但是在MV里用不了,有没有类似这样功能的插件?
作者: trentswd    时间: 2016-3-16 20:56
好长懒得看
我猜你要的是这个
RPG Maker MV\dlc\KadokawaPlugins\PlayMsgWndCharSE.js
作者: situkei    时间: 2016-3-17 11:07
var VoiceObj = new ActiveXObject("SAPI.SpVoice");
        //条件可以为 language=804表示中文 409表示英文
        //也可不写,windows7不用修改控制面板,在控制面板--语音--语言选择下拉框中选择要用的语音库,
        //目前tts文字转语音只能说8种语言,河南话,标普男,标普女,童声,东北话,粤语,四川话等
        VoiceObj.Voice=sp.getVoice("language=804").item(0);

        //停止播报
        function stopReadText(){
                VoiceObj.Speak("", 2);
        }
       
        //播报文字
        function readTextOne(p_str) {
                if (p_str != null && p_str != ""){
                        try {
                                //开始播报
                                VoiceObj.Speak(p_str);
                                VoiceObj.Speak("", 2);//停止播报
                        } catch (exception) {
                                alert("error:"+exception);
                        }
                }
        }
       
        //语速加
        function IncRate() {
                if (VoiceObj.Rate < 10) {
                        VoiceObj.Rate = VoiceObj.Rate + 1;
                }
        }

        //语速减
        function DecRate() {
                if (VoiceObj.Rate > -10) {
                        VoiceObj.Rate = VoiceObj.Rate - 1;
                }
        }
作者: situkei    时间: 2016-3-17 11:53
situkei 发表于 2016-3-17 11:07
var VoiceObj = new ActiveXObject("SAPI.SpVoice");
        //条件可以为 language=804表示中文 409表示英文
        // ...

tts,只能把文字转成语音,即时转换的,
作者: situkei    时间: 2016-3-17 16:11
situkei 发表于 2016-3-17 11:07
var VoiceObj = new ActiveXObject("SAPI.SpVoice");
        //条件可以为 language=804表示中文 409表示英文
        // ...

https://github.com/marak/say.js/
作者: ainimen726    时间: 2020-6-10 04:05
situkei 发表于 2016-3-17 11:53
tts,只能把文字转成语音,即时转换的,

这个不是RPG MV的插件吧?到底有文本文字转语音的插件?搜了好久也没收到!
作者: kano521241    时间: 2020-6-13 15:29
我倒是有个打字机的插件,不知道楼主用不用得上……
因为是二手的所以我也不知道这个插件是谁写的,要是有人知道的话可以告诉我一下
MessageTextSound.js
/*:
* @plugindesc
* v1.00 - 为事件的“显示文字”动作添加音效。
*
* @help
* 功能描述
*     本插件可以为事件的“显示文字”动作添加音效,让一些特定音效随文字一起出现。
* 使用方式
*     直接启用插件即可为文字添加音效。
*     你可以通过在事件中调用本系统提供的自定义脚本来修改音效的属性。(这些修改会永久生效,直到你下一次修改它们)
* 自定义脚本
*     set_text_sound_name("sound_name") # (字符串)将文字显示时播放的音效文件设置为sound_name(不含后缀名),音效存于audio/se目录下,你可以将"sound_name"改为null或""来关闭音效。
*     set_text_sound_interval(interval) # (整数)  设置为每interval个字播放一次音效
*     set_text_sound_volume(volume)     # (整数)  设置文字音效的音量
*     set_text_sound_pitch(pitch)       # (整数)  设置文字音效的音调
*     set_text_sound_pan(pan)           # (整数)  设置文字音效的偏移
* 脚本使用示例
*     set_text_sound_name("bell3")      # 设置文字显示时播放的音效为bell3
*     set_text_sound_interval(3)        # 设置文字每出现3个时播放1次音效
*     set_text_sound_volume(100)        # 设置文字音效的音量为100
*     set_text_sound_pitch(100)         # 设置文字音效的音调为100
*     set_text_sound_pan(0)             # 设置文字音效的偏移为0
* 功能特性
*     无论文字音效间隔是多少,对话内容的第一个文字永远会发声。
* 更新日志
*     v1.00 2015-11-4 23:26:12
*         发布。
*
* @param Text Sound Interval
* @desc 每多少个字播放一次音效,默认7
* @default 7
*
* @param Text Sound Name
* @desc 文字音效的文件名,默认Cursor1
* @default Cursor1
*
* @param Text Sound Volume
* @desc 文字音效的音量,默认100
* @default 100
*
* @param Text Sound Pitch
* @desc 文字音效的音调,默认100
* @default 100
*
* @param Text Sound Pan
* @desc 文字音效的偏移,默认0
* @default 0
*/

(function() {

    //===========================================
    // 插件参数
    //===========================================

        var parameters = PluginManager.parameters('MessageTextSound');

        var text_current_frame      = 0;                                                        // 当前的字数间隔计数
        var text_se_interval        = (parseInt(parameters['Text Sound Interval']) || 7);       // 音效间隔,默认7
        var text_se_object          = new Object();
        text_se_object.name         = String(parameters['Text Sound Name']       || "Cursor1"); // 音效文件名,默认为"audio/se/Cursor1"
        text_se_object.volume       = (parseInt(parameters['Text Sound Volume']) || 100);       // 音效音量,默认100
        text_se_object.pitch        = (parseInt(parameters['Text Sound Pitch'])  || 100);       // 音效音调,默认100
        text_se_object.pan          = (parseInt(parameters['Text Sound Pan'])    || 0);         // 音效偏移,默认0

    //===========================================
    // 插件主体逻辑
    //===========================================

        //-------------------------------------------
        // 每当显示一个文字(包括转义符)时,播放音效
        // 植入在updateShowFast而非在processCharacter是因为processCharacter会被其他类似的文字显示类调用
        //-------------------------------------------

        var _Window_Message_updateShowFast = Window_Message.prototype.updateShowFast;
        Window_Message.prototype.updateShowFast = function() {
            // 回调原函数
            _Window_Message_updateShowFast.call(this);

            // 当音效功能处于开启,并且对话不处于“快速显示”状态时进行计数
            if (!this._showFast && text_se_object.name != null && text_se_object.name != "") {
                // 当前文字计数到达了发声阈,则播放声音,并重置计数
                if (text_current_frame >= text_se_interval) {
                    text_current_frame = 1;
                    AudioManager.playSe(text_se_object);
                // 当前计数没到达发声阈,递增计数
                } else {
                    text_current_frame = text_current_frame + 1;
                }
            }
        };

        //-------------------------------------------
        // 消息框进入新的消息页时的处理
        //-------------------------------------------

        var _Window_Message_newPage = Window_Message.prototype.newPage;
        Window_Message.prototype.newPage = function(textState) {
            // 自带:重置跳过本次后续音效的标记
            _Window_Message_newPage.call(this, textState);
            // 重置文字计数到发声阈值,用于在第一个字时发音
            text_current_frame = text_se_interval;
        };

    //===========================================
    // 添加插件提供的自定义脚本
    //===========================================

        // 设置音效文件名
        set_text_sound_name = function (text) {
            if (text == "" || text == null) { text_se_object.name = null; }
            else                            { text_se_object.name = text; }
        }

        // 设置音效播放间隔(每多少个文字播放一次音效)
        set_text_sound_interval = function (interval) { text_se_interval = interval; }

        // 设置音效的音量属性
        set_text_sound_volume = function (volume) { text_se_object.volume = volume; }

        // 设置音效的音调属性
        set_text_sound_pitch = function (pitch) { text_se_object.pitch = pitch; }

        // 设置音效的偏移属性
        set_text_sound_pan = function (pan) { text_se_object.pan = pan; }

})();





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1