传奇点歌系统@接受歌曲与@关闭音乐脚本命令

来源: 作者: 点击:
一、命令本质与文件路径

@接受歌曲 和 @关闭音乐 并非引擎内置的固定指令,而是由GM在 QFunction-0.txt(QuestDiary功能脚本)中自定义的触发标签。当玩家在聊天框输入对应文字时,引擎会跳转到该标签执行预设的播放或停止动作。脚本文件位于服务端 Mir200\Envir\Market_Def\QFunction-0.txt。

二、GOM引擎标准脚本写法

针对目前主流的GOM引擎,以下是完整的点歌与关闭逻辑脚本,直接复制到 QFunction-0.txt 即可。

1. @接受歌曲脚本(播放音乐)
[@接受歌曲]
#IF
#ACT
PlayMP3 0
SendMsg 5 音乐播放成功!输入“@关闭音乐”可停止。
Break

参数说明:PlayMP3 0 中的数字 0 代表播放次数,0为循环播放。若需播放指定文件,可改为 PlayMP3 歌曲名.mp3(文件需放在客户端Music目录)。

2. @关闭音乐脚本(停止播放)
[@关闭音乐]
#IF
#ACT
StopPlayMP3
SendMsg 5 音乐已关闭。
Break

命令说明:StopPlayMP3 是GOM引擎专用的停止背景音乐命令,与PlayMP3配套使用。

三、Hero引擎(老版本)兼容写法

若服务端使用老版Hero引擎,播放命令不同,需使用 PLAYSOUND。
[@接受歌曲]
#IF
#ACT
PLAYSOUND 1 0
SendMsg 5 开始播放音乐。
Break

[@关闭音乐]
#IF
#ACT
PLAYSOUND 0 0
SendMsg 5 音乐已静音。
Break

参数差异:PLAYSOUND 1 0 中第一个参数1=播放,0=停止;第二个参数0=仅自己听见,1=全服听见(慎用)。

四、点歌触发与变量传递逻辑

你提到的“给某人点歌需对方接受”,核心在于变量传递。点歌方脚本需将歌曲信息存入变量,对方接受时读取变量播放。

点歌NPC脚本示例(节选):
[@点歌]
#IF
CheckVar HUMAN 点歌状态 = 0 ; 检测对方是否已有待接受歌曲
#ACT
SetVar HUMAN 点歌歌曲 = 1 ; 1代表歌曲ID,可自定义
SetVar HUMAN 点歌状态 = 1 ; 标记为“有待接受”
SendMsg 6 点歌请求已发送,等待对方接受。
Break

接受脚本联动:
[@接受歌曲]
#IF
CheckVar HUMAN 点歌状态 = 1
CheckVar HUMAN 点歌歌曲 = 1
#ACT
PlayMP3 0 ; 播放对应歌曲
SetVar HUMAN 点歌状态 = 0 ; 重置状态
Break


五、常见问题排查

• 输入命令无反应:检查 QFunction-0.txt 中标签名是否与玩家输入完全一致(如“@接受歌曲”不能写成“@接受音乐”)。

- 播放失败:确认客户端 Music 文件夹内有对应的MP3文件,且脚本中文件名大小写匹配。
- 变量不传递:点歌方和目标玩家的变量名(如“点歌状态”)必须完全一致,建议使用全局变量或文件存储。

修改脚本后,必须在M2Server控制台点击“重新加载-功能脚本(QF)”使配置生效。