剑侠传奇自定义采集系统没有统一官方模板,通常需要在传奇类引擎里用NPC、地图触发、QFunction、变量和定时器组合实现。完整采集系统至少包含采集点生成、采集冷却、进度条、奖励发放、背包检测、背包回收、地图限制、挂机循环和防重复采集。下面按HERO/GOM/GEE类引擎常用写法给出可直接参考的设置示例。
采集点NPC脚本
采集点可以做成固定NPC,也可以做成地图触发点。固定NPC适合放在Market_Def目录下,按地图分布。
[@main]
IF
SAY
\
此处生长着<灵草>,可以采集。\
\
<关闭/@exit>
[@gather]
IF
CHECK [10] 0
ACT
SET [10] 1
MOV P0 0
SENDMSG 6 开始采集灵草,请勿移动。
CALL [@GatherProgress]
ELSESAY
这里用逻辑变量[10]控制采集冷却,P0记录当前采集次数。采集完成后需要把[10]置回0,否则玩家无法再次采集。
采集进度条脚本
进度条可以用定时器模拟。每次执行时P0加1,达到设定次数后发放奖励并结束采集。
[@GatherProgress]
IF
SMALL P0 5
ACT
INC P0 1
DELAYGOTO 1000 @GatherProgress
ELSESAY
CALL [@GatherReward]
如果引擎支持更完整的进度条命令,可以改用进度条触发方式;不支持时,用DELAYGOTO分段延迟也能实现类似效果。
采集奖励脚本
奖励发放前必须检测背包空间,避免物品丢失。
[@GatherReward]
IF
CHECKBAGSPACE 1
ACT
GIVE 灵草 1
SENDMSG 6 获得采集物品:灵草
MOV P0 0
SET [10] 0
ELSEACT
SENDMSG 6 背包已满,请清理后再采集。
MOV P0 0
SET [10] 0
如果采集奖励包含多种材料,可以写成多段判断。
[@GatherReward]
IF
CHECKBAGSPACE 2
ACT
GIVE 灵草 1
GIVE 铁矿石 1
SENDMSG 6 采集成功,获得灵草、铁矿石
MOV P0 0
SET [10] 0
ELSEACT
SENDMSG 6 背包空间不足,无法领取采集奖励。
MOV P0 0
SET [10] 0
采集冷却设置
采集冷却可以用逻辑变量或数字变量实现。逻辑变量适合简单开关,数字变量适合倒计时。
逻辑变量写法:
SET [10] 1 表示进入冷却。
CHECK [10] 1 表示仍在冷却。
SET [10] 0 表示冷却结束。
数字变量写法:
MOV P1 30 表示冷却30秒。
DEC P1 1 每秒减少。
EQUAL P1 0 表示冷却结束。
倒计时脚本示例:
[@CoolDown]
IF
LARGE P1 0
ACT
DEC P1 1
DELAYGOTO 1000 @CoolDown
ELSEACT
SET [10] 0
地图采集点触发
如果希望采集点更像地图资源,可以把NPC放在地图触发文件中。玩家走到指定坐标时弹出采集选项。
[@MapEnter]
IF
ACT
goto @CheckPoint
[@CheckPoint]
IF
EQUAL <MAP> 3
EQUAL <X> 150
EQUAL <Y> 150
ACT
goto @main
ELSEACT
break
坐标判断方式因引擎版本不同会有差异,部分引擎支持更精确的范围判断。如果坐标判断不够稳定,可以改用区域NPC或地图事件触发。
多类采集点示例
采集系统通常不止一种资源。可以通过参数区分灵草、矿石、木材、药材等采集点。
[@main]
IF
SAY
\
\
\
\
<关闭/@exit>
[@gather_herb]
IF
CHECK [10] 0
ACT
SET [10] 1
MOV P0 0
MOV S0 灵草
CALL [@GatherProgress]
ELSESAY
[@gather_ore]
IF
CHECK [10] 0
ACT
SET [10] 1
MOV P0 0
MOV S0 铁矿石
CALL [@GatherProgress]
ELSESAY
[@gather_wood]
IF
CHECK [10] 0
ACT
SET [10] 1
MOV P0 0
MOV S0 木材
CALL [@GatherProgress]
ELSESAY
奖励段可以统一处理:
[@GatherReward]
IF
CHECKBAGSPACE 1
ACT
GIVE <STR(S0)> 1
SENDMSG 6 采集成功,获得<$STR(S0)>
MOV P0 0
SET [10] 0
ELSEACT
SENDMSG 6 背包已满,请清理后再采集。
MOV P0 0
SET [10] 0
采集次数与每日限制
如果想限制玩家每日采集次数,可以用全局变量或自定义变量记录。
[@CheckDaily]
IF
SMALL G10 20
ACT
INC G10 1
goto @gather
ELSESAY
G10记录全服或玩家每日采集次数,具体作用域要看当前引擎版本。如果是个人每日限制,建议改用自定义变量或人物变量。
背包自动回收配合
采集系统容易遇到背包满的问题。可以在QFunction-0.txt里加入拾取或背包检测逻辑,把低级材料自动回收成金币或积分。
[@PickUpItemEX]
IF
CHECKITEM 低级灵草 1
ACT
TAKE 低级灵草 1
GIVE GOLD 100
SENDMSG 6 自动回收低级灵草,获得100金币
不同引擎的拾取触发段名称可能不同,例如[@PickUpItemEX]、[@PickUpItemfrontEX]等,需要按当前引擎文档确认。
挂机采集循环示例
挂机采集可以做成简单循环:进入采集地图,找到采集点,执行采集,背包满时回城清理,再返回采集地图。
[@AutoGather]
IF
ACT
mapmove 采集地图 150 150
DELAYGOTO 2000 @StartGather
[@StartGather]
IF
CHECKBAGSPACE 1
ACT
goto @main
ELSEACT
mapmove 盟重 330 330
DELAYGOTO 2000 @BackToGather
[@BackToGather]
IF
ACT
mapmove 采集地图 150 150
DELAYGOTO 2000 @StartGather
挂机循环需要配合地图权限设置,避免玩家被传送到非采集地图。采集地图可以在MapInfo.txt中限制回城卷、随机卷和传送命令。
防止重复采集
采集点必须防止玩家连续点击刷奖励。常用做法是同时使用逻辑变量、数字变量和延迟重置。
第一层用[10]做开关,采集开始时置1,结束时置0。
第二层用P0记录进度,只有进度归零后才允许重新采集。
第三层用DELAYGOTO延迟重置,避免玩家快速连点。
第四层用背包检测,背包满时不进入采集流程。
示例:
[@gather]
IF
CHECK [10] 0
CHECKBAGSPACE 1
ACT
SET [10] 1
MOV P0 0
CALL [@GatherProgress]
ELSESAY
采集系统变量规划
P0:当前采集进度。
P1:采集冷却倒计时。
S0:当前采集物品名称。
[10]:采集状态开关。
G10:每日采集次数或全服采集统计。
变量使用前要确认引擎版本支持范围。HERO类引擎常用P0-P9、D0-D9和[n]逻辑变量;GOM/GEE等引擎支持更多自定义变量,写法会有差异。
常见问题排查
采集后不发放奖励,先检查背包空间检测和GIVE命令是否正确。采集冷却不生效,检查逻辑变量是否在奖励段和失败段都重置。挂机循环不返回,检查mapmove地图名是否与MapInfo.txt一致。进度条卡住,检查DELAYGOTO标签是否写错,变量是否在结束时归零。多类采集点混用,检查S0变量是否在每次采集前重新赋值。
剑侠传奇类自定义采集系统,关键不是单独写一个采集按钮,而是把采集点、冷却、进度、奖励、背包回收、地图限制和挂机循环串成完整流程。变量控制要统一,奖励发放前要检测背包,采集结束后必须重置状态,这样系统才能稳定运行。
剑侠传奇自定义采集系统参考设置:采集点、冷却、奖励、进度条与挂机循环完整脚本示例
来源:
作者:
点击:

