传奇篝火留人脚本写法:定时经验加成范围检测人数奖励与行会互动

来源: 作者: 点击:
篝火功能之所以留人,核心不在“篝火”两个字,而在于它能把玩家固定在同一张地图、同一个坐标范围内,并通过定时经验、人数加成、行会争夺、宝箱刷新、添柴任务和离线收益形成持续反馈。脚本实现时,建议把篝火拆成四个模块:篝火NPC入口、范围挂机经验、人数与行会加成、活动开启与宝箱刷新。

一、篝火NPC主入口

篝火NPC放在Market_Def目录下,例如篝火NPC.txt。Merchant.txt中配置地图、坐标和脚本路径后,在M2控制台重载NPC即可生效。

[@main]
IF
ACT
SAY
篝火晚会\
\
当前地图人数:< STR(N10) >\
你已获得篝火次数:< STR(U10) >\
\
<靠近篝火/@NearCheck>\
<查看奖励/@RewardInfo>\
<退出/@exit>
ACT
CHECKMAPHUMANCOUNT 3 N10

这里N10用于显示当前地图人数,U10记录玩家当日篝火收益次数。地图号3仅为示例,实际应替换为篝火活动地图编号。

二、范围检测与篝火触发

篝火经验不能全图发放,否则玩家不需要聚集,留人效果会明显下降。应使用CHECKINMAPRANGE检测玩家是否在篝火坐标附近。

[@NearCheck]
IF
CHECKINMAPRANGE 3 150 150 8
ACT
GOTO @CampfireGain
ELSESAY
你离篝火太远,无法获得加成。请靠近盟重篝火区域。

如果版本不支持CHECKINMAPRANGE,也可以改用CHECKHUM检测地图人数,再配合ISONMAP判断玩家是否在活动地图。

三、定时篝火经验

篝火经验通常通过QFunction-0.txt中的定时触发实现。不同引擎的定时标签名称可能不同,常见做法是使用每分钟或每三秒触发一次。

[@OnTimerCampfire]
IF
ISONMAP 3
CHECKINMAPRANGE 3 150 150 8
SMALL U10 60
ACT
INC U10 1
INC U11 10000
GIVE EXP 10000
SENDMSG 7 你在篝火旁获得10000经验,今日篝火次数<$STR(U10)>。
BREAK

U10记录次数,U11记录累计篝火经验。GIVE EXP 10000为示例命令,部分引擎需要使用SETAUTOGETEXP、经验变量或专用经验发放命令。

四、人数加成计算

篝火人数越多,经验越高,玩家自然愿意留在同一区域。可以先检测地图人数,再按区间发放额外经验。

[@CampfireGain]
IF
CHECKMAPHUMANCOUNT 3 > 20
ACT
GIVE EXP 15000
SENDMSG 7 篝火人气旺盛,当前地图超过20人,经验提升至15000。
BREAK
ELSEACT
IF
CHECKMAPHUMANCOUNT 3 > 10
ACT
GIVE EXP 12000
SENDMSG 7 当前地图超过10人,经验提升至12000。
BREAK
ELSEACT
GIVE EXP 10000
SENDMSG 7 你获得基础篝火经验10000。
BREAK

如果希望加成更明显,可以把人数上限设为50、100、200,每增加一档提升10%到20%经验。

五、行会篝火加成

行会篝火能强化社交粘性。玩家所在行会人数越多,篝火收益越高。部分版本会要求行会达到一定等级才开启。

[@GuildCampfire]
IF
CHECKGUILD
CHECKMAPHUMANCOUNT 3 > 15
ACT
INC U12 1
GIVE EXP 5000
SENDMSG 7 行会篝火加成生效,额外获得5000经验。
BREAK
ELSESAY
当前行会人数不足或未加入行会,无法获得行会篝火加成。

如果需要更严格的限制,可以增加行会等级检测。若引擎没有直接的行会等级命令,可以改用行会列表或自定义变量记录行会等级。

六、篝火争夺与宝箱刷新

篝火争夺能提高活跃度。地图中可以设置若干篝火点,玩家攻击篝火后获得控制权,控制期间全行会成员享受加成。宝箱怪每隔一段时间刷新,击杀后发放额外奖励。

[@BoxRefresh]
IF
EQUAL G10 1
ACT
MONGENEX 3 150 150 宝箱怪 5 3 249 0 0 0 0
SENDMSG 0 篝火宝箱已刷新,击败宝箱怪可获得丰厚奖励。
BREAK

G10作为活动开关。活动开始时设为1,结束时设为0。MONGENEX参数顺序可能因引擎不同而变化,正式使用前应先在测试地图验证。

七、篝火添柴任务

添柴任务能让玩家反复回到篝火点。每次添柴消耗木材或火把,完成后增加篝火持续时间或个人收益次数。

[@AddWood]
IF
CHECKITEM 篝火木材 5
CHECKINMAPRANGE 3 150 150 8
ACT
TAKE 篝火木材 5
INC U10 5
INC G11 60
SENDMSG 7 你为篝火添加了木材,篝火持续时间延长。
BREAK
ELSESAY
背包中没有篝火木材,或你离篝火太远。

G11可以记录篝火剩余分钟数,再由机器人脚本每分钟递减。

八、活动开启与结束

篝火活动适合做成定时开启,例如每日或每周固定时间段。

[@CampfireStart]
IF
EQUAL G10 0
ACT
MOV G10 1
MOV G11 30
MONCLEAR 3
MONGENEX 3 150 150 篝火守护怪 8 5 0 0 0 0 0
SENDMSG 0 篝火晚会开启,所有玩家前往盟重篝火区域可获得经验加成。
BREAK
ELSESAY
篝火活动正在进行中。

[@CampfireEnd]
IF
EQUAL G10 1
ACT
MOV G10 0
MONCLEAR 3
SENDMSG 0 篝火晚会已结束,感谢各位勇士参与。
BREAK
ELSESAY
当前没有进行中的篝火活动。

九、每日次数重置

篝火次数必须每日清零,否则玩家会很快刷满收益。可以在QManage.txt的每日触发或机器人脚本中处理。

[@DailyResetCampfire]
IF
ACT
MOV U10 0
MOV U11 0
MOV U12 0
BREAK

如果引擎支持按角色重置U变量,需要确认对应命令是否支持批量清零;不支持时可用文本列表记录在线角色,再逐个重置。

十、留人效果增强写法

篝火脚本要留人,不能只给经验。可以叠加以下机制:

靠近篝火获得防御或血量恢复;
连续停留10分钟额外发放绑定元宝或材料;
行会成员在同一篝火点达到5人时触发群体祝福;
篝火期间地图内怪物掉落提升;
活动结束前5分钟发放冲刺奖励;
离线玩家返回篝火点可获得补领次数,但补领收益低于在线收益。

示例:

[@StayBonus]
IF
CHECKINMAPRANGE 3 150 150 8
LARGE U13 9
ACT
GIVE 篝火礼盒 1
MOV U13 0
SENDMSG 7 你因长时间停留在篝火区域,获得篝火礼盒。
BREAK
ELSEACT
INC U13 1
BREAK

U13作为停留分钟计数器,每分钟由定时触发增加1。

十一、脚本生效检查

QFunction-0.txt修改后需要在M2控制台重新加载脚本。
NPC脚本修改后需要重载NPC或重启服务端。
文件编码应使用ANSI,避免中文乱码。
CHECKINMAPRANGE、CHECKMAPHUMANCOUNT、MONGENEX、MONCLEAR等命令是否可用,以当前引擎为准。
经验发放命令需要根据引擎替换,不能直接照搬GIVE EXP。

十二、完整运行流程

活动开始前,机器人脚本在固定时间触发篝火开启,清理地图并发出公告。玩家进入篝火地图后,NPC显示当前人数和奖励信息。玩家靠近篝火坐标范围时,定时脚本开始发放经验。地图人数越多,经验加成越高。行会成员聚集时触发额外行会加成。活动期间每隔一段时间刷新宝箱怪,击杀后获得材料或装备。玩家可使用篝火木材延长活动时间或增加个人收益次数。活动结束后,地图怪物被清理,玩家当日次数由每日重置脚本清零。这样既保证玩家有稳定收益,也能通过人数、行会和争夺机制把玩家留在同一场景。