在传奇服务端中,实现全服玩家可见的屏幕滚屏喊话,需通过定时器配合系统消息指令完成。该功能不依赖客户端插件,直接由服务端推送,适用于公告、活动通知或整点播报。
一、创建主控脚本文件
进入服务端目录 Mir200EnvirQuestDiary,新建文本文件 AutoShout.txt(名称可自定义)。此文件将包含滚屏内容与触发逻辑。
二、编写滚屏消息内容
在 AutoShout.txt 中定义多条消息,每条用独立标签标识。例如:
[@MSG1]
ACT
SENDMSG 7 【开区公告】新手玩家请前往比奇城领取礼包!
[@MSG2]
ACT
SENDMSG 7 【活动提醒】BOSS将于10分钟后刷新!
[@MSG3]
ACT
SENDMSG 7 【友情提示】装备回收请找NPC“仓库管理员”。
其中 SENDMSG 7 表示全服滚动消息(7为系统公告类型),文字内容需控制在60字符内避免截断。
三、设置循环调用逻辑
在同一文件底部添加调度器,按顺序轮播消息:
[@TIMER_LOOP]
ACT
goto @MSG1
TIMER 30000 @TIMER_MSG2
[@TIMER_MSG2]
ACT
goto @MSG2
TIMER 30000 @TIMER_MSG3
[@TIMER_MSG3]
ACT
goto @MSG3
TIMER 30000 @TIMER_LOOP
TIMER 30000 表示间隔30秒(单位毫秒),可根据需要调整时间。
四、启动定时器
在服务端启动时自动激活滚屏,需修改登录脚本。打开 Mir200EnvirQuestDiaryLogin.txt,在末尾添加:
ACT
TIMER 5000 @TIMER_LOOP
并确保引用了主控脚本:
CALL [QuestDiaryAutoShout.txt]
五、验证消息类型编号
不同引擎对 SENDMSG 参数定义略有差异。常见类型:
SENDMSG 0:黄色普通消息;
SENDMSG 5:红色重要提示;
SENDMSG 7:白色全屏滚动公告。
若7无效,可尝试6或8,具体以当前服务端日志输出为准。
六、处理多行与特殊字符
如需显示多行公告,必须拆分为多个独立消息段,不可在单条 SENDMSG 中换行。特殊符号(如{})需避免使用,部分引擎会将其识别为脚本标签导致解析错误。
七、测试与调试
重启M2Server后,观察:
是否每隔设定时间出现滚动文字;
所有在线玩家是否同步收到;
服务端控制台有无“Label not found”错误。
若未生效,检查:
脚本文件编码为ANSI;
TIMER标签拼写正确(区分大小写);
未与其他定时任务冲突(如重复启动同一标签)。
通过上述配置,可实现稳定、循环的屏幕滚屏喊话,无需额外工具或客户端修改,适用于各类单机传奇场景。

