传奇脚本核心代码大全 #IF #ACT指令及检测条件实战案例

来源: 作者: 点击:
一、脚本核心框架:#IF与#ACT的基础逻辑

传奇脚本的核心执行逻辑围绕“条件判断-动作执行”展开,#IF(如果)与#ACT(则执行)是实现这一逻辑的基础指令对。#IF后紧跟检测条件(如元宝数量、物品持有、职业等级等),当条件满足时,#ACT后的代码块会被触发执行;若条件不满足,可通过#ELSE(否则)定义备选动作,形成完整逻辑闭环。

基础框架示例:
#IF // 条件判断开始
CheckGameGold > 99 // 检测元宝数量大于99个
#ACT // 条件满足时执行
GiveItem[强效金疮药,10] // 发放10个强效金疮药
ReduceGameGold 100 // 扣除100个元宝
SystemMsg[消耗100元宝,兑换10个强效金疮药成功]
#ELSE // 条件不满足时执行
SystemMsg[元宝不足100,无法兑换]
BREAK // 终止脚本执行

二、高频检测条件:#IF后常用判断代码及用法

#IF后的检测条件决定脚本触发门槛,不同场景需搭配专属判断指令,以下为开发中最常用的几类检测代码,含语法说明与使用示例。

1. 货币检测:元宝、金币的数量判断

货币是传奇经济系统核心,相关检测指令用于付费功能、道具兑换等场景,支持“大于、小于、等于”等逻辑判断。

核心指令及示例:
• 元宝检测(CheckGameGold):
语法:CheckGameGold 比较符 数值(比较符:>大于、<小于、=等于、>=大于等于、<=小于等于)
代码示例:
#IF
CheckGameGold >= 500 // 检测元宝≥500个
#ACT
GiveItem[屠龙刀,1] // 发放稀有武器
ReduceGameGold 500 // 扣除500元宝

• 金币检测(CheckGold):
语法:CheckGold 比较符 数值(金币单位为“个”,10000金币=1元宝)
代码示例:
#IF
CheckGold > 100000 // 检测金币大于10万
#ACT
AddExp 50000 // 增加5万经验
ReduceGold 100000 // 扣除10万金币

2. 物品检测:持有/佩戴状态与数量判断

物品检测涵盖“背包持有”“装备佩戴”“数量范围”等场景,是装备特效、任务提交、物品合成的核心判断依据。

核心指令及示例:
• 背包物品检测(CheckItem):
语法:CheckItem 物品名称/ID 比较符 数量(不写数量默认检测是否持有)
代码示例:
#IF
CheckItem 沃玛号角 = 1 // 检测背包有1个沃玛号角
#ACT
OpenGuildCreate // 开启创建行会功能
SystemMsg[持有沃玛号角,可创建行会]

• 装备佩戴检测(CheckItemW):
语法:CheckItemW 装备名称/ID(“W”代表Wear,即佩戴)
代码示例:
#IF
CheckItemW 圣战头盔 // 检测是否佩戴圣战头盔
CheckItemW 圣战项链 // 同时检测是否佩戴圣战项链
#ACT
AddAttr[攻击,5] // 攻击+5
SystemMsg[圣战套装两件触发,攻击属性提升]

• 物品数量范围检测(CheckItemCount):
语法:CheckItemCount 物品ID 最小数量 最大数量
代码示例:
#IF
CheckItemCount 祝福油 3 10 // 检测祝福油数量在3-10之间
#ACT
SynthesisItem[超级祝福油,1] // 合成1个超级祝福油
ReduceItem 祝福油 3 // 扣除3个祝福油

3. 角色属性检测:职业、等级、转生判断

针对角色基础属性的检测,用于职业专属功能、等级门槛限制、转生福利发放等场景,确保脚本仅对目标群体生效。

核心指令及示例:
• 职业检测(Job):
语法:Job 职业名称(战士/法师/道士,部分引擎支持职业ID)
代码示例:
#IF
Job 法师 // 仅法师职业可触发
Level >= 35 // 同时满足等级≥35级
#ACT
UnlockSkill[冰咆哮] // 解锁冰咆哮技能
SystemMsg[法师等级达标,解锁强力技能冰咆哮]

• 等级检测(Level):
语法:Level 比较符 等级数值
代码示例:
#IF
Level < 20 // 检测等级低于20级
#ACT
GiveItem[新手套装,1] // 发放新手套装
AddExp 20000 // 增加2万经验助力升级

• 转生检测(CheckReborn):
语法:CheckReborn 比较符 转次数值(无转生为0)
代码示例:
#IF
CheckReborn >= 2 // 检测转生次数≥2次
#ACT
MapMove[转生地图,100,100] // 传送至转生专属地图
SystemMsg[转生等级达标,已传送至专属地图]

4. 任务与状态检测:进度与权限判断

用于任务系统、权限控制等场景,检测角色任务进度、状态标记、会员身份等,实现脚本的场景化触发。

核心指令及示例:
• 任务状态检测(CheckTaskStatus):
语法:CheckTaskStatus 任务名称 状态(未接/已接/完成)
代码示例:
#IF
CheckTaskStatus 击败沃玛教主 完成 // 检测任务已完成
#ACT
GiveItem[祖玛头像,1] // 发放任务奖励
SetTaskStatus 击败沃玛教主 已领奖 // 标记奖励已领

• 会员身份检测(CheckMem):
语法:CheckMem 会员等级(0为非会员,1为VIP1等)
代码示例:
#IF
CheckMem 1 // 检测为VIP1会员
#ACT
AddGameGold 100 // 每日领取100元宝
SystemMsg[VIP1会员每日福利已发放]

• 状态标记检测(CheckFlag):
语法:CheckFlag 标记名称 标记值(用于自定义状态判断)
代码示例:
#IF
CheckFlag 新手引导 0 // 检测新手引导未完成(标记值0)
#ACT
OpenGuide 1 // 开启第一步引导
SetFlag 新手引导 1 // 标记引导已开始

三、实战场景代码:完整脚本示例与逻辑拆解

1. 场景1:元宝兑换经验——基础付费功能

需求:玩家消耗200元宝兑换100万经验,元宝不足时提示,每日限1次。
完整代码:
[@元宝换经验]
#IF
CheckGameGold >= 200 // 检测元宝≥200
CheckFlag 元宝换经验 0 // 检测今日未兑换(标记值0)
#ACT
ReduceGameGold 200 // 扣除200元宝
AddExp 1000000 // 增加100万经验
SetFlag 元宝换经验 1 // 标记今日已兑换
SystemMsg[200元宝兑换100万经验成功,今日兑换已完成]
#ELSE
#IF
CheckFlag 元宝换经验 1 // 检测今日已兑换
#SAY
今日元宝兑换经验次数已用完,明日再来尝试吧!\
<返回/@main>
#ELSE
#SAY
元宝不足200,无法兑换100万经验。\
请先充值或通过其他途径获取元宝。\
<返回/@main>
BREAK

逻辑拆解:通过“元宝检测+每日标记检测”实现限制,#ELSE分支细分“次数用完”和“元宝不足”两种提示,提升玩家体验。

2. 场景2:装备合成——多条件组合判断

需求:3个金矿+1个银矿+50万金币合成“金砖”,缺少材料时提示具体缺失项。
完整代码:
[@合成金砖]
#IF
CheckItem 金矿 = 3 // 检测3个金矿
CheckItem 银矿 = 1 // 检测1个银矿
CheckGold >= 500000 // 检测50万金币
#ACT
ReduceItem 金矿 3 // 扣除3个金矿
ReduceItem 银矿 1 // 扣除1个银矿
ReduceGold 500000 // 扣除50万金币
GiveItem 金砖 1 // 发放1个金砖
SystemMsg[材料充足,成功合成金砖]
#ELSE
#IF
CheckItem 金矿 < 3 // 金矿不足
#SAY
合成金砖需3个金矿,当前数量不足,请补充。\
<返回/@main>
#ELSEIF
CheckItem 银矿 < 1 // 银矿不足
#SAY
合成金砖需1个银矿,当前数量不足,请补充。\
<返回/@main>
#ELSE
#SAY
合成金砖需50万金币,当前金币不足,请补充。\
<返回/@main>
BREAK

逻辑拆解:用#ELSEIF细分各材料缺失场景,精准提示问题,避免玩家反复尝试却不知原因。

3. 场景3:职业专属福利——多属性叠加判断

需求:道士职业+等级≥40级+佩戴灵魂项链,可领取专属宠物“月灵”,已领取则提示。
完整代码:
[@领取月灵]
#IF
Job 道士 // 道士职业
Level >= 40 // 等级≥40
CheckItemW 灵魂项链 // 佩戴灵魂项链
CheckFlag 领取月灵 0 // 未领取标记
#ACT
SummonPet 月灵 // 召唤月灵宠物
SetFlag 领取月灵 1 // 标记已领取
SystemMsg[道士专属福利激活,获得强力宠物月灵]
#ELSE
#IF
CheckFlag 领取月灵 1 // 已领取
#SAY
您已领取过月灵宠物,无法重复领取。\
<返回/@main>
#ELSE
#SAY
领取条件:道士职业+40级以上+佩戴灵魂项链,您当前未满足全部条件。\
<返回/@main>
BREAK

4. 场景4:任务提交——物品+状态联动判断

需求:提交5个僵尸牙齿完成“清理僵尸”任务,完成后发放奖励并开启后续任务。
完整代码:
[@提交僵尸牙齿]
#IF
CheckTaskStatus 清理僵尸 已接 // 任务已接
CheckItem 僵尸牙齿 = 5 // 5个僵尸牙齿
#ACT
ReduceItem 僵尸牙齿 5 // 扣除物品
SetTaskStatus 清理僵尸 完成 // 标记任务完成
GiveItem 金币袋 1 // 发放奖励
AddExp 50000 // 增加5万经验
OpenTask 击败尸王 // 开启后续任务
SystemMsg[任务提交成功,获得奖励并解锁新任务]
#ELSE
#IF
CheckTaskStatus 清理僵尸 未接 // 未接任务
#SAY
请先在老兵处接取“清理僵尸”任务,再前来提交物品。\
<前往接取/@接取任务>
#ELSEIF
CheckItem 僵尸牙齿 < 5 // 物品不足
#SAY
“清理僵尸”任务需提交5个僵尸牙齿,当前数量不足,请继续击杀僵尸获取。\
<返回/@main>
#ELSE
#SAY
您已完成该任务,无需重复提交。\
<返回/@main>
BREAK

四、脚本代码避坑技巧:避免常见错误

1. 语法格式错误:这些细节必须注意

• 比较符使用:“大于”用“>”而非“>”,“等于”用“=”而非“==”,所有符号需为英文半角;
• 指令参数:物品、职业名称需与服务端“Data”目录下的配置文件(如Item.txt、Job.txt)完全一致,避免错别字;
• 多条件顺序:#IF后多个条件为“同时满足”关系,按“核心条件在前”排列(如先检测职业,再检测等级);
• 终止标记:每个脚本分支末尾需加“BREAK”,避免逻辑溢出。

2. 逻辑漏洞:防止功能异常的关键设计

• 增加“防重复”标记:用CheckFlag/SetFlag指令控制每日领取、任务奖励等功能,避免无限触发;
• 资源扣除在前:#ACT中先执行Reduce(扣除)指令,再执行Give(发放)指令,防止玩家利用漏洞获取奖励;
• 容错提示:#ELSE分支需覆盖所有“不满足条件”的场景,避免出现“无提示无响应”的情况;
• 数值校验:货币、经验等数值需与游戏内平衡体系匹配,如兑换经验时避免单次发放过高导致等级异常。

3. 引擎适配:不同引擎的语法差异

• GOM引擎:支持“CheckGameGold”直接检测元宝,物品ID可用数字或名称;
• GEE引擎:元宝检测需用“CheckGold”(部分版本),物品需用ID而非名称;
• HERO引擎:多条件之间需用“AND”连接,如“#IF Job 战士 AND Level >= 30”;
• 解决方法:编写前查阅所用引擎的语法手册,优先使用引擎自带的脚本模板修改。

总结:传奇脚本代码的核心设计思路

传奇脚本代码的编写,核心是“精准判断条件+明确执行动作+完善容错逻辑”。#IF与#ACT的组合是基础,需根据场景灵活搭配货币、物品、属性等检测指令;实战中要注重“玩家体验”,通过细分提示让玩家清晰感知触发结果;同时规避语法错误与逻辑漏洞,确保功能稳定运行。新手可从简单场景(如元宝兑换)入手,熟练后再尝试多条件组合(如装备合成、职业福利),逐步积累开发经验。