查看: 7|回复: 0

传奇单机版定时公告脚本怎么写?每隔N秒自动广播,还能根据在线人数触发

36

主题

0

回帖

152

积分

新手上路

积分
152
发表于 昨天 20:07 | 显示全部楼层 |阅读模式
二百论坛
本站支持代销互换开区传奇版本、欢迎广大GM、技术、一条龙等传奇业界好友合作、联系业务QQ:1531850810

QQ交流群①:323634742(推荐 )QQ交流群②:764544814(推荐)

本站提供的传奇版本 由于来源不同 精力有限 无法100%测试 如需使用本传奇版本请切记

下载传奇版本后 先解压 再杀毒 更新官方引擎 最后再配置登陆器 避免被非法木马插件利用


论坛里经常有人问:"怎么让服务器每隔一段时间自动发公告?" "能不能根据在线人数触发不同的公告?"

说实话,我刚开始玩传奇单机版的时候,公告全靠手动发,累得要死。后来研究了一下QFunction,发现定时公告其实特别简单,几行代码就能搞定。

今天就把我摸索出来的几种定时公告写法分享出来,从最简单的固定间隔,到根据在线人数动态触发,看完你就能直接拿去用。

一、最基础的定时公告:每隔60秒广播一次

打开你的 QFunction-0.txt,找到 @Startup 标签(没有就自己加一个),在里面写:
  1. [@Startup]
  2. #ACT
  3. SetTimer 1 60
复制代码

然后往下拉,找到或新建一个 [Timer1] 标签:
  1. [Timer1]
  2. #ACT
  3. GlobalMsg 255 欢迎光临本服务器,当前在线人数:<$ONLINECOUNT>人
  4. SetTimer 1 60
复制代码

就这么简单。SetTimer 1 60 表示启动编号为1的定时器,间隔60秒。每次触发后记得重新 SetTimer,不然只执行一次就停了。

GlobalMsg 255 是全局公告,255是颜色代码(黄色),<$ONLINECOUNT> 是在线人数变量。

二、进阶版:不同时间段发不同内容

如果你想早上发"早安",晚上发"夜猫子们好",可以用条件判断:
  1. [Timer1]
  2. #IF
  3. Hour >= 6
  4. Hour < 12
  5. #ACT
  6. GlobalMsg 255 各位勇士早上好!新的一天从打宝开始~
  7. SetTimer 1 300
  8. #ELSEACT
  9. SetTimer 1 300
复制代码
  1. [Timer2]
  2. #IF
  3. Hour >= 18
  4. Hour < 24
  5. #ACT
  6. GlobalMsg 255 晚上好!夜猫子们准备好通宵了吗?
  7. SetTimer 2 300
  8. #ELSEACT
  9. SetTimer 2 300
复制代码

这里用了 Hour 变量来判断当前小时。#ELSEACT 是条件不满足时执行的,记得两边都要 SetTimer,不然定时器会断。

三、高级玩法:根据在线人数触发不同公告

这个是我觉得最实用的。在线人数少的时候鼓励大家拉朋友,人多的时候营造热闹氛围:
  1. [Timer1]
  2. #IF
  3. <$ONLINECOUNT> < 10
  4. #ACT
  5. GlobalMsg 255 当前在线人数较少,叫上朋友一起来玩吧!
  6. SetTimer 1 180
  7. #ELSEACT
  8. GOTO @CheckMid
复制代码
  1. [@CheckMid]
  2. #IF
  3. <$ONLINECOUNT> >= 10
  4. <$ONLINECOUNT> < 50
  5. #ACT
  6. GlobalMsg 255 当前在线<$ONLINECOUNT>人,人气渐旺,感谢各位支持!
  7. SetTimer 1 180
  8. #ELSEACT
  9. GOTO @CheckHigh
复制代码
  1. [@CheckHigh]
  2. #IF
  3. <$ONLINECOUNT> >= 50
  4. #ACT
  5. GlobalMsg 255 服务器火爆!当前在线<$ONLINECOUNT>人,新手请去新手地图发育~
  6. SetTimer 1 180
复制代码

这里用了 GOTO 跳转,配合 #ELSEACT 实现多条件分支。间隔我设成了180秒(3分钟),太频繁会刷屏惹人烦。

四、随机公告池:每次从多条里随机选一条

如果你想让公告不那么单调,可以做一个随机池:
  1. [Timer1]
  2. #ACT
  3. MOV N0 <$RANDOM(5)>
  4. GOTO @MsgPool
  5. SetTimer 1 120
复制代码
  1. [@MsgPool]
  2. #IF
  3. Equal N0 0
  4. #ACT
  5. GlobalMsg 255 提示:击杀BOSS有几率掉落极品装备!
  6. #ELSEACT
  7. GOTO @Msg1
复制代码
  1. [@Msg1]
  2. #IF
  3. Equal N0 1
  4. #ACT
  5. GlobalMsg 255 提示:回收装备可以获得大量金币!
  6. #ELSEACT
  7. GOTO @Msg2
复制代码
  1. [@Msg2]
  2. #IF
  3. Equal N0 2
  4. #ACT
  5. GlobalMsg 255 提示:加入行会可以获得额外属性加成!
  6. #ELSEACT
  7. GOTO @Msg3
复制代码
  1. [@Msg3]
  2. #IF
  3. Equal N0 3
  4. #ACT
  5. GlobalMsg 255 提示:每日签到有丰厚奖励,别忘了领取!
  6. #ELSEACT
  7. GOTO @Msg4
复制代码
  1. [@Msg4]
  2. #ACT
  3. GlobalMsg 255 提示:有问题可以在群里咨询管理~
复制代码

<$RANDOM(5)> 生成0-4的随机数,MOV N0 存到变量N0,然后依次判断发不同的公告。这样每次公告内容都不一样,玩家不会看腻。

五、几个容易踩的坑

1. 定时器编号冲突:翎风引擎一般支持0-9号定时器,别写超了,也别和其他功能重复。

2. 忘记重新SetTimer:很多人写完发现只执行一次,就是因为触发后没重新启动定时器。

3. 时间间隔太短:别设成10秒一次,会被玩家骂死。建议至少60秒以上,公告类120-300秒比较合适。

4. 变量名别乱写<$ONLINECOUNT> 是在线人数,Hour 是当前小时,<$RANDOM(N)> 是随机数,大小写要一致。

5. 保存后重启M2:QFunction修改后必须重启M2才能生效,热重载不生效。

六、完整代码汇总

把下面这段复制到你的 QFunction-0.txt 末尾,改改内容就能用:
  1. [@Startup]
  2. #ACT
  3. SetTimer 1 120
  4. [Timer1]
  5. #ACT
  6. MOV N0 <$RANDOM(3)>
  7. #IF
  8. Equal N0 0
  9. #ACT
  10. GlobalMsg 255 欢迎来到传奇单机版,祝你游戏愉快!
  11. #ELSEACT
  12. GOTO @MsgB
  13. [@MsgB]
  14. #IF
  15. Equal N0 1
  16. #ACT
  17. GlobalMsg 255 当前在线人数:<$ONLINECOUNT>人,人气火爆!
  18. #ELSEACT
  19. GlobalMsg 255 击杀BOSS有几率掉落极品装备,加油!
  20. #ACT
  21. SetTimer 1 120
复制代码

定时公告这东西,写起来简单,但用好了能大大提升服务器氛围。特别是传奇单机版,本来人就少,有个自动公告假装热闹,玩起来感觉都不一样。

你们还有什么想实现的公告功能?欢迎留言讨论。
二百论坛
免责声明:

1、本论坛资源均来源于网络

2、如下载使用,自行杀毒

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

QQ| 小黑屋|二百版本库 |网站地图

免责声明:本站所有资源皆来自于互联网.请在下载使用内24小时内删除! 如果侵犯了您的权益,请至邮箱: (1531850810@qq.com), 我们会及时删除侵权内容。

Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5