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

来源: 作者: 点击:
命令本质:自定义标签与引擎指令

你提到的 @接受歌曲 和 @关闭音乐 并非引擎内置的固定命令,而是脚本作者在 QFunction-0.txt 中自定义的触发标签。它们的作用是让玩家通过聊天框输入指令,触发服务端执行“播放音乐”或“停止音乐”的动作。真正的播放/停止功能是由标签内的 MusicPlay 或 StopMusic 等核心命令实现的。

QuestDiary中的脚本路径与写法

这两个命令的完整逻辑通常直接写在 MirServer\Mir200\Envir\Market_Def\QFunction-0.txt 中,而不是在 QuestDiary 文件夹里。QuestDiary 通常只存放文本数据或调用子程序。以下是标准的脚本写法(以 GOM/GEE 引擎为例):

1. @接受歌曲 脚本段

[@接受歌曲]
#IF
; 此处可加条件检测,如是否有人给你点歌(CheckVar)
#ACT
; 播放音乐:MusicPlay 路径/文件名.mp3
MusicPlay Music\LoveSong.mp3
; 或使用 PlaySound 命令(视引擎而定)
; PlaySound LoveSong.mp3
SendMsg 6 音乐播放成功!
Break

关键命令:MusicPlay 或 PlaySound。参数是客户端 Music 文件夹下的音频文件路径。

2. @关闭音乐 脚本段

[@关闭音乐]
#ACT
; 停止当前播放的音乐
StopMusic
; 或使用 CloseMusic 命令(视引擎而定)
; CloseMusic
SendMsg 6 音乐已关闭。
Break

关键命令:StopMusic 或 CloseMusic。此命令无需参数,直接停止当前客户端播放的背景音乐。

不同引擎的命令差异(对照表)

功能 GOM / GEE 引擎命令 HERO / LEGEND 引擎命令 备注

播放音乐 MusicPlay 路径 PlayMusic 路径 路径相对于客户端根目录

停止音乐 StopMusic CloseMusic 直接执行即可

播放音效 PlaySound 路径 PlaySound 路径 短音效,不循环

常见问题排查

1. 输入命令无反应:检查 QFunction-0.txt 中是否正确定义了 [@接受歌曲] 和 [@关闭音乐] 标签段。标签名必须与聊天框输入的文本完全一致(包括空格)。
2. 提示“未知命令”:如果连基本的 @ 命令都提示未知,需在 M2Server 的“选项”->“游戏命令”->“用户命令”中,添加“接受歌曲”和“关闭音乐”这两个命令的映射。
3. 能播放但无法停止:通常是 StopMusic 命令不兼容。GOM引擎通常用 StopMusic,老版引擎可能用 CloseMusic。建议在M2的“查看”->“列表信息”->“游戏命令”中搜索“音乐”确认正确命令。

完整点歌逻辑补充(变量传递)

如果你想让“点歌”功能完整(A点给B,B输入@接受歌曲才能听),需要在点歌NPC脚本中设置变量,并在 [@接受歌曲] 段检测该变量:
; 点歌NPC脚本片段(设置变量)
#ACT
SetVar Human 歌曲状态 1
SetVar Human 歌曲文件 LoveSong.mp3
SendMsgTo <目标玩家> 有人给你点歌了,请输入@接受歌曲 收听。

; QFunction-0.txt 中的接受段
[@接受歌曲]
#IF
CheckVar Human 歌曲状态 = 1
#ACT
GetVar Human 歌曲文件
MusicPlay <$STR(S0)> ; 使用获取到的变量作为文件名
SetVar Human 歌曲状态 0
SendMsg 6 开始播放点播歌曲。


操作建议:直接打开 QFunction-0.txt,搜索 [@接受歌曲],查看现有的脚本逻辑,通常只需修正其中的 MusicPlay 文件路径或 StopMusic 命令即可。