查看: 9|回复: 0

传奇单机版世界BOSS脚本怎么写?定时刷新+死亡广播+奖励发放,三块代码搞定

52

主题

18

回帖

256

积分

二百VIP

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

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

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

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


论坛里有人问过"传奇单机版能不能做世界BOSS系统,就是那种全图广播、打死有奖励的那种"。

其实不算太复杂,核心就三块:定时刷新、死亡广播、奖励发放。用翎风引擎的QFunction脚本写,把这三块分开实现,再串起来就行了。

我把自己用的那套整理出来,直接贴代码,大家拿去改。

一、定时刷新BOSS

BOSS总不能只出现一次,得定时重生。翎风引擎里用 @ServerTimer 做定时触发是最常见的方案,放在 QFunction-0.txt 里:
  1. [@ServerTimer/60/WorldBossTimer]
  2.   #IF
  3.     COMPARE %WORLDBOSS_ALIVE% 0
  4.   #ACT
  5.     MONGEN sBossMap 150 150 TriggerBoss 1
  6.     SETVAR WORLDBOSS_ALIVE 1
  7.     GLOBALSHOW 系统公告:世界BOSS触龙神已在[sBossMap]苏醒,勇者速速前往讨伐!
  8.   #END
复制代码

几个关键点:

  • /60/ 是触发间隔,单位秒,这里是60秒检查一次。BOSS死了才刷,所以用 WORLDBOSS_ALIVE 变量控制——BOSS活着是1,死了改成0,下次检查再刷。
  • MONGEN 命令:MONGEN 地图名 X坐标 Y坐标 怪物名 数量,地图名要和你MapTrans里配的一致,大小写敏感。
  • GLOBALSHOW 是全服广播,玩家看到的就是那条公告。


注意:翎风引擎的定时器是相对时间,服务器重启后定时器重置。所以BOSS不会在重启后立刻刷,要等下一个周期触发。

二、BOSS死亡事件:广播+重置变量

BOSS被打死的时候要触发死亡事件。这段放在怪物脚本里,文件名一般是 Monsters\TriggerBoss.txt(怪物名对应的脚本文件):
  1. [@MonsterDead]
  2.   #ACT
  3.     SETVAR WORLDBOSS_ALIVE 0
  4.     GLOBALSHOW 系统公告:世界BOSS触龙神已被【%PlayerName%】击杀!全服传奇豪礼即将发放!
  5.     SETVAR BOSS_KILLER %PlayerName%
  6.     CALL BossReward %PlayerName%
  7.   #END
复制代码

注意事项:

  • @MonsterDead 是怪物死亡事件,只有 MoveType >= 1 的怪物才能正确触发这个事件——如果你的BOSS设的是 MoveType=0(原地不动),脚本不会触发,必须改成 MoveType=1 或 2。
  • %PlayerName% 是击杀者的角色名变量,翎风引擎内置,直接用。
  • CALL BossReward 是调用奖励子程序,下面单独写。


三、奖励发放子程序

奖励这块单独写成子程序,便于维护。可以放在 QFunction-0.txt 末尾,或者单独建一个 QFunction-Boss.txt(需要在 LFServer.ini 里注册该文件路径):
  1. [@BossReward/#name#]
  2.   #ACT
  3.     REM === 给击杀者发奖励 ===
  4.     GIVE #name# 金币 10000
  5.     GIVE #name# 复活药水 5
  6.     GIVE #name# 传送卷轴 3
  7.     SENDMSG #name# 恭喜你成功击杀世界BOSS!奖励已发放到背包,请注意查收!
  8.     REM === 全服玩家发参与奖 ===
  9.     GIVEALL 金币 500
  10.     GLOBALSHOW 系统公告:感谢全服英雄共同讨伐世界BOSS!每位在线玩家获得参与奖励500金币!
  11.   #END
复制代码

说明:

  • GIVE 玩家名 物品名 数量 — 直接往玩家背包塞东西。物品名必须和你 StdItems 数据库里的名称完全一致,一个字不能差,包括全半角。
  • GIVEALL 物品名 数量 — 发给当前所有在线玩家,做全服参与奖非常合适。
  • SENDMSG 玩家名 文字 — 私信提示,只有那个玩家看得到。


四、常见踩坑点

坑1:BOSS刷出来就不动

检查 MobDB 里 TriggerBoss 这条怪物的 MoveType 字段,值为0的怪原地不动,改成1(随机游走)或2(追击玩家)。同时 Sight(视野范围)要大于0,不然怪发现不了玩家。

坑2:死亡脚本触发了但奖励没发

通常是 CALL BossReward 里的物品名写错了。去 StdItems 对照一遍,翎风引擎的物品名区分全角半角,看起来一样的字实际上可能是两个不同的字符。

坑3:BOSS刷了但出现坐标是(0,0)

MONGEN 的坐标填的是地图绝对坐标,不是相对坐标。用地图编辑器查一下那个地图的实际坐标范围,别超界,否则BOSS会刷在地图边界外,玩家找不到。

坑4:ServerTimer没触发

检查 LFServer.ini 里 QFunctionPath 有没有正确指向文件。另外 @ServerTimer 的格式是 @ServerTimer/间隔秒数/标签名,标签名不能有特殊字符和空格。

五、进阶:按时间段控制BOSS

如果想做"周末限定BOSS",在定时检查里加时间判断:
  1. [@ServerTimer/60/WorldBossTimer]
  2.   #IF
  3.     COMPARE %WORLDBOSS_ALIVE% 0
  4.     COMPARE %WEEKDAY% 6
  5.   #ACT
  6.     MONGEN sBossMap 150 150 TriggerBoss 1
  7.     SETVAR WORLDBOSS_ALIVE 1
  8.     GLOBALSHOW 系统公告:周末世界BOSS已开启!触龙神在[sBossMap]等待挑战!
  9.   #END
复制代码

%WEEKDAY% 是翎风引擎的内置时间变量,1-7对应周一到周日。类似的还有 %HOUR%(当前小时)、%MINUTE%(当前分钟),组合起来可以做非常精细的定时控制。

---

这套代码在翎风引擎传奇单机版服务器上跑过,基本没问题。如果你用的是GOM引擎,定时器机制不一样,要换成 @OnTimer 事件,变量处理方式也有差异,不能直接抄。

有问题欢迎帖子里问,看到就回。
二百论坛
免责声明:

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

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

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

本版积分规则

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

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

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

关于我们 | 联系方式 | 隐私政策