天堂2复古HF芙蕾雅FLY全套脚本模块详解|挂机、传送、商城、防卡死一站式开发指南
前言
玩天堂 2 复古服多年,折腾过各种免费 / 付费 Bot 脚本,踩过大量坐标卡死、卡怪不换图、死亡不会回城、背包满不售卖、buff 断档挂机失效等坑。今天把手上一套工业级模块化 Bot 源码拆解分享,覆盖底层工具库、传送系统、点位挂机、商城交易、宠物、状态自检全部核心模块,附带每个单元核心方法、设计思路、实战场景,新手也能看懂复用、自定义挂机路线。
整套脚本采用单元化分层设计,职责完全拆分:底层工具函数→通用业务模块→地图挂机业务脚本,新增地图挂机只需要写对应
GuaJi_xxx过程,不用改动底层逻辑,维护成本极低。一、全局基础工具单元(Functions.pas)|所有脚本依赖底层库
整个脚本体系最基础依赖,封装数学、坐标、移动、三元简写通用函数,任何挂机、传送逻辑都要调用。
核心方法一览
distanceBetween(x1,y1,z1,x2,y2,z2):extended三维空间坐标距离计算,判断角色和 NPC / 刷点远近,用于筛选最近挂机点位。inRange(obj/x,y,z,范围)双重载判断单位 / 角色是否在指定坐标半径内,传送校验、区域切换、回城判断必备。MoveAndWait(x,y,z)移动到坐标并等待全队靠近,组队挂机核心,避免队友掉队脱节。getClosestLoc(坐标数组)批量点位数组自动匹配离玩家最近点位,实现巡回刷点就近挂机。ifThen(布尔,真值,假值)数字 / 字符串 / 数组三重载三元运算符简写,简化打印、状态赋值代码,减少 if 嵌套冗余。
二、传送模块 TeleportModule.pas|全城镇一键传送、回城逻辑
封装全城镇守门人对话、回城方案,支持回城卷 / 回城技能 / 守门人三种模式,不用重复写 NPC 对话代码。
常量
SCROLL_OF_SCAPE = 736 回城卷轴物品 ID核心方法
GetCity():TCity自动识别当前所在城镇,不在城内自动触发回城。GoHome(ItemID, SkillID, move)多方案回城优先级:自定义技能 > 回城卷轴 > 守门人回城,支持回城后自动走到传送师。MoveInCity各城镇复活点自动寻路到守门人,内置亚丁、古鲁丁、卢云、修加特等全城镇分段坐标逻辑,复活不用手动跑。TeleportTo(城镇名):Boolean直接传入城镇字符串一键传送,例TeleportTo('Rune')传卢云。TeleportToLocation(区域名)先切换对应城镇守门人,再传送目标狩猎区,长途挂机标准调用。
三、配置持久化 SettingsModule + ModuleFunctions|挂机参数本地存档
两套搭配,前者是底层 INI 读写,后者封装简化调用,挂机时长、职业类型、buff 列表、刷点坐标都存在本地角色独立 ini,重启脚本不丢失设置。
1. SettingsModule(底层读写)
SetFile(路径):绑定 ini 文件Save(段,键,值):存数字 / 字符串 / 布尔Load/LoadBool:读取配置,支持默认值兜底
2. ModuleFunctions(业务封装,日常优先使用)
updateState(类型,标识,数值):自动绑定当前角色 ini,无需手动设置文件getState(类型,标识,默认值):读取挂机配置getArray:读取分号分隔数组,用于存储批量挂机坐标、buffID 列表
四、角色工具 UserFunctions|职业、道具、Buff、宠物配套
针对玩家自身属性封装工具,区分法师 / 战士自动换 BUFF、自动穿戴新手装、领取道具、检测补 BUFF。
常用方法
isMage():无参判断自身是否法系职业,挂机自动切换输出逻辑equipNewbieItems:自动穿戴全套新手装备countItems(ItemID):统计背包指定道具数量,判断回城补给shouldRebuff:读取配置 buff 列表,buff 即将过期返回 true,触发回城补 BUFFgetNewbieBuffer:获取新手 BUFF NPC 对象,全服通用 buff 获取逻辑
五、点位基础 Locations.pas|通用刷点收尾、狩猎区传送流程
存放各地图基础传送巡路过程,同时提供通用清怪函数,供挂机脚本调用。
核心过程
FinishMobs通用等待清怪函数:循环直到无目标再执行下一步,完美适配「点位到点但没打完,打完再走」需求,和之前自定义FarmPoint配套使用。Ketra/StakatoNest/Disciples等地图流程封装每个狩猎区传送 + 分段移动坐标,直接调用直达挂机区域。
六、交易邮件 RSellAndBuy + RSendMail|自动补给、清背包、发材料
配套挂机配套商业模块,挂机背包满自动回城售卖杂物,红蓝 / 灵魂弹不足自动购买,多余材料一键邮寄仓库小号。
SellAll:批量出售所有垃圾道具BuyZhanShi/BuyFaShi/BuyCommon:战士 / 法师通用补给采购SendAllObj:背包可邮寄材料全部发送小号,避免背包溢出挂机中断
七、宠物配套 LevelPet.pas|召唤物常驻后台线程
独立多线程脚本,挂机同时后台托管宠物,不用写在主循环里占用挂机逻辑:
petHeal:宠物血量低自动治疗,死亡复活petRangeProtect:宠物距离过远自动召回跟随countExpAdena:定时记录经验、金币到本地 txt,统计挂机收益tpContoller:常驻宠物增益 buff 自动续上
八、核心业务挂机单元 GuaJi.pas(重点)
整套脚本的业务顶层,所有地图挂机逻辑都写在此单元,统一封装卡死、死亡、超时、回城补给自检逻辑,所有挂机过程复用
CheckAndReset状态检测,不用每个地图重复写判断。1. 核心通用过程 CheckAndReset(全地图共用防卡死 / 死亡逻辑)
这是整套挂机脚本的灵魂,统一处理所有异常场景,触发任意重置条件自动回城补给、清包、补 BUFF 后重新出发:
触发重置条件
- 连续 120 秒无移动无战斗 → 判定坐标卡死,回城重启挂机
- 挂机累计满 8 小时 → 强制下线休整,防服务器检测
- 角色死亡:区分格勒西亚 / 普通地图,分别回对应据点 / 氏族大厅
- 自动跑到卢云城镇(安全区),判定挂机周期结束
重置后标准流程
关闭自动挂机→邮寄材料→出售垃圾→根据职业购买红蓝弹→补全 BUFF→重置计时,循环挂机。
全局计时变量
lastX/lastY:记录上一次坐标,判断是否原地卡死lastMoveTick:最后移动时间戳lastCombatTick:最后战斗时间戳
2. 各地图挂机业务过程(开箱即用)
全部为永久循环
while true,每 1 秒执行一次状态检测,异常自动回城恢复,正常则在对应地图分段巡路挂机:- 修道院上下层
GuaJi_XiuDaoYuanXiaCeng / ShangCeng1 - 龙道 1~4 四层路线
GuaJi_LongDao1~4 - 龙谷两条挂机线
GuaJi_LongGu1/2(IsWarrior:Boolean)传参区分战法路线 - 大坑挂机
GuaJi_DaKeng - 毁灭鸟房 / 猴房
GuaJi_HuiMie_NF/HF
挂机标准流程(所有 GuaJi_xxx 统一模板)
- 初始化总计时
ST:=GetTickCount - 死循环,每 1 秒执行
CheckAndReset异常检测 - 判断是否在传送城镇(卢云)→ 找守门人传对应地图
- 到达目标地图后,依次执行分段移动点位
- 开启
.farmon内挂自动战斗、Engine.FaceControl(true)自动寻怪
九、引擎原生内置核心对象与 API(脚本底层操作根基)
1. Engine 引擎全局对象(控制一切动作)
移动、目标、对话、挂机开关、指令全部依托它:
- 目标控制:
SetTarget(Id/对象)锁定、CancelTarget取消目标、Attack攻击 - 移动:
MoveTo(X,Y,Z)、MoveToTarget走向目标 - 挂机开关:
FaceControl(True/False)自动寻怪开关 - NPC 对话:
DlgOpen / DlgSel传送交互 - 服务器指令:
EnterText('.farmon/.farmoff')控制内挂启停
2. User 自身角色对象
- 属性:X/Y/Z 坐标、HP/MP/CP、Dead 死亡、InCombat 战斗状态
- 子对象:
User.Target当前选中怪物、User.Buffs增益列表
3. TL2Live 单位对象(怪物 / NPC / 队友 / 宠物通用)
只读属性:Id、名称、CurHP、Dead、Attackable、XYZ 坐标,用来判断卡怪、筛选可攻击怪物。
4. NpcList / PetList / Party 列表对象
遍历范围内怪物、宠物、队友,实现手动切换目标、群体加血、拉怪逻辑。
5. Inventory 背包对象
ByID查找道具、统计数量,实现自动买卖、邮寄。十、辅助告警脚本
Goldkeeper:扫描高价稀有怪物,出现播放提示音提醒AntibotAlarm:检测反外挂倒计时弹窗,立刻报警,避免被踢下线- Trade.txt:循环喊话摆摊,自动出售闲置装备材料
十一、整套脚本架构优势总结
- 低耦合模块化:底层工具、传送、挂机、交易完全分离,新增地图仅新增
GuaJi_xxx过程,无需修改公共异常逻辑。 - 统一异常处理:所有挂机复用
CheckAndReset,不会出现 A 图死亡回城、B 图卡死不处理的 bug。 - 持久化配置:挂机时长、职业、BUFF 列表本地保存,重启不重置。
- 多线程分离:宠物、收益统计后台独立线程,不干扰主挂机打怪。
- 适配复古服规则:区分氏族大厅 / 城镇回城、战法补给差异化、长时间防检测机制。
- 可拓展性强:可自行新增卡怪自动切换目标、定点 Farm 循环、自动组队跟随逻辑。
十二、二次开发小建议
- 结合之前写的
FarmPoint点位停留过程,替换GuaJi内固定巡路逻辑,实现「每个点位停留指定时长,打完再走」。 - 封装
SwitchStuckTarget卡怪切换目标自定义过程,嵌入CheckAndReset,卡怪自动取消当前怪打下一只,不用回城。 - 扩展
getArray配置,自定义多路线轮换挂机,避免长期单地图封号风险。 - 在
countExpAdena基础上增加收益预警,金币低于阈值自动回城刷金币点位。

浙公网安备 33010602011771号