命令本质:自定义聊天命令映射
@接受歌曲和@关闭音乐不是引擎内置的固定命令,而是通过QFunction-0.txt将聊天输入映射到具体脚本段。当玩家在聊天框输入@接受歌曲,引擎会去QFunction-0.txt查找[@UserCmd_接受歌曲]标签并执行其中的动作。真正的“播放/停止”逻辑由PlaySound或PlayMP3等指令实现,QuestDiary仅用于存放被调用的子脚本文件。
核心脚本配置:QFunction-0.txt
这是实现@命令功能的唯一入口文件,必须在此文件中建立聊天输入与脚本段的关联。
标准配置脚本(Mir200\Envir\QFunction-0.txt):
;---@接受歌曲命令映射---
[@UserCmd_接受歌曲]
#IF
;可添加条件,如检测是否有点歌请求
#ACT
;调用子脚本(可选),或直接在此处写播放逻辑
#CALL[\游戏功能\点歌系统.txt]@接受点歌
SENDMSG6提示:点歌请求已接受,开始播放音乐。
;---@关闭音乐命令映射---
[@UserCmd_关闭音乐]
#IF
#ACT
PlaySoundStop;停止当前播放的声音
;或使用PlayMP3Stop(视引擎而定)
SENDMSG6提示:背景音乐已关闭。
BREAK
关键点:
•标签命名规则必须为[@UserCmd_命令内容],且“命令内容”需与玩家输入的@后内容完全一致(如输入@接受歌曲对应UserCmd_接受歌曲)。
-若版本中已存在该命令但功能失效,优先检查此文件中的标签名是否有拼写错误或重复定义。
子脚本存放:QuestDiary目录结构
QuestDiary是服务端存放可调用脚本文件的目录。如果你的点歌逻辑较复杂(如涉及选歌列表、记录状态),通常会在此目录下创建子文件,并由QFunction-0.txt通过#CALL指令调用。
典型QuestDiary点歌文件路径示例:
D:\MirServer\Mir200\Envir\QuestDiary\游戏功能\点歌系统.txt
点歌系统.txt内容示例(@接受点歌段):
[@接受点歌]
#IF
CHECKBAGGAGE;示例条件:检测背包是否有空间(实际应为检测点歌状态变量)
#ACT
;播放音乐命令(根据引擎选择其一)
PlaySound.\Wav\bgmusic.wav0;BLUE/LEG引擎,0不循环,1循环
;PlayMP3http://yourdomain.com/song.mp3;GOM/GEE引擎支持网络MP3
MOVS10正在播放;设置状态变量
SENDMSG6点歌成功,音乐加载中...
#ELSEACT
SENDMSG6错误:未检测到点歌请求或状态异常。
注意:QuestDiary中的脚本不能直接通过@命令触发,必须经由QFunction-0.txt或NPC脚本中的#CALL指令调用。
不同引擎的播放与停止命令差异
虽然@命令的触发方式相同,但底层播放指令因引擎而异,这是导致“有命令但没声音”的常见原因。
引擎类型播放音乐命令停止音乐命令关键参数
BLUE/LEGPlaySound路径循环(0/1)PlaySoundStop路径需为客户端内Wav文件
GOM/GEEPlayMP3网络URL/路径PlayMP3Stop支持在线MP3链接
HEROPlaySound路径PlaySoundStop仅支持本地文件
常用示例:
•播放:PlaySound.\Wav\Login.wav1(播放Login.wav并循环)
•停止:PlaySoundStop(停止所有由脚本播放的声音)
配置流程与常见问题修复
正确添加流程(SOP)
1.编辑QFunction-0.txt:在文件末尾添加[@UserCmd_接受歌曲]和[@UserCmd_关闭音乐]段。
2.编写播放逻辑:在#ACT下写入PlaySound或PlayMP3指令。
3.(可选)创建子脚本:若逻辑复杂,在QuestDiary新建点歌系统.txt,并在QFunction-0.txt中使用#CALL调用。
4.重启M2:修改QFunction-0.txt后必须重启M2Server才能生效(重读脚本)。
高频问题排查
•输入命令无反应:检查QFunction-0.txt中的标签名是否与命令完全一致(如多打了空格)。
•提示“未知命令”:说明QFunction-0.txt中未定义该@UserCmd_标签,或M2未重启。
•有提示但无声音:
◦检查播放命令的文件路径是否正确(客户端必须存在该.wav文件)。
◦确认引擎支持(如BLUE引擎不支持直接播放MP3,需转换格式)。
◦检查是否被其他停止命令中断。
实用调试技巧
在[@UserCmd_接受歌曲]段内临时加入简单的提示语句,测试命令是否被正确触发:
[@UserCmd_接受歌曲]
#ACT
SENDMSG6调试:@接受歌曲命令已触发!
BREAK
若上线输入命令后能看到此提示,说明命令映射成功,问题出在后续的播放逻辑或文件路径上。
@接受歌曲和@关闭音乐不是引擎内置的固定命令,而是通过QFunction-0.txt将聊天输入映射到具体脚本段。当玩家在聊天框输入@接受歌曲,引擎会去QFunction-0.txt查找[@UserCmd_接受歌曲]标签并执行其中的动作。真正的“播放/停止”逻辑由PlaySound或PlayMP3等指令实现,QuestDiary仅用于存放被调用的子脚本文件。
核心脚本配置:QFunction-0.txt
这是实现@命令功能的唯一入口文件,必须在此文件中建立聊天输入与脚本段的关联。
标准配置脚本(Mir200\Envir\QFunction-0.txt):
;---@接受歌曲命令映射---
[@UserCmd_接受歌曲]
#IF
;可添加条件,如检测是否有点歌请求
#ACT
;调用子脚本(可选),或直接在此处写播放逻辑
#CALL[\游戏功能\点歌系统.txt]@接受点歌
SENDMSG6提示:点歌请求已接受,开始播放音乐。
;---@关闭音乐命令映射---
[@UserCmd_关闭音乐]
#IF
#ACT
PlaySoundStop;停止当前播放的声音
;或使用PlayMP3Stop(视引擎而定)
SENDMSG6提示:背景音乐已关闭。
BREAK
关键点:
•标签命名规则必须为[@UserCmd_命令内容],且“命令内容”需与玩家输入的@后内容完全一致(如输入@接受歌曲对应UserCmd_接受歌曲)。
-若版本中已存在该命令但功能失效,优先检查此文件中的标签名是否有拼写错误或重复定义。
子脚本存放:QuestDiary目录结构
QuestDiary是服务端存放可调用脚本文件的目录。如果你的点歌逻辑较复杂(如涉及选歌列表、记录状态),通常会在此目录下创建子文件,并由QFunction-0.txt通过#CALL指令调用。
典型QuestDiary点歌文件路径示例:
D:\MirServer\Mir200\Envir\QuestDiary\游戏功能\点歌系统.txt
点歌系统.txt内容示例(@接受点歌段):
[@接受点歌]
#IF
CHECKBAGGAGE;示例条件:检测背包是否有空间(实际应为检测点歌状态变量)
#ACT
;播放音乐命令(根据引擎选择其一)
PlaySound.\Wav\bgmusic.wav0;BLUE/LEG引擎,0不循环,1循环
;PlayMP3http://yourdomain.com/song.mp3;GOM/GEE引擎支持网络MP3
MOVS10正在播放;设置状态变量
SENDMSG6点歌成功,音乐加载中...
#ELSEACT
SENDMSG6错误:未检测到点歌请求或状态异常。
注意:QuestDiary中的脚本不能直接通过@命令触发,必须经由QFunction-0.txt或NPC脚本中的#CALL指令调用。
不同引擎的播放与停止命令差异
虽然@命令的触发方式相同,但底层播放指令因引擎而异,这是导致“有命令但没声音”的常见原因。
引擎类型播放音乐命令停止音乐命令关键参数
BLUE/LEGPlaySound路径循环(0/1)PlaySoundStop路径需为客户端内Wav文件
GOM/GEEPlayMP3网络URL/路径PlayMP3Stop支持在线MP3链接
HEROPlaySound路径PlaySoundStop仅支持本地文件
常用示例:
•播放:PlaySound.\Wav\Login.wav1(播放Login.wav并循环)
•停止:PlaySoundStop(停止所有由脚本播放的声音)
配置流程与常见问题修复
正确添加流程(SOP)
1.编辑QFunction-0.txt:在文件末尾添加[@UserCmd_接受歌曲]和[@UserCmd_关闭音乐]段。
2.编写播放逻辑:在#ACT下写入PlaySound或PlayMP3指令。
3.(可选)创建子脚本:若逻辑复杂,在QuestDiary新建点歌系统.txt,并在QFunction-0.txt中使用#CALL调用。
4.重启M2:修改QFunction-0.txt后必须重启M2Server才能生效(重读脚本)。
高频问题排查
•输入命令无反应:检查QFunction-0.txt中的标签名是否与命令完全一致(如多打了空格)。
•提示“未知命令”:说明QFunction-0.txt中未定义该@UserCmd_标签,或M2未重启。
•有提示但无声音:
◦检查播放命令的文件路径是否正确(客户端必须存在该.wav文件)。
◦确认引擎支持(如BLUE引擎不支持直接播放MP3,需转换格式)。
◦检查是否被其他停止命令中断。
实用调试技巧
在[@UserCmd_接受歌曲]段内临时加入简单的提示语句,测试命令是否被正确触发:
[@UserCmd_接受歌曲]
#ACT
SENDMSG6调试:@接受歌曲命令已触发!
BREAK
若上线输入命令后能看到此提示,说明命令映射成功,问题出在后续的播放逻辑或文件路径上。

