一、脚本基础框架与核心语法规则
传奇脚本核心由条件判断、执行动作、对话提示三类指令构成,基础格式以#if(条件判断)、#act(满足条件执行)、#say(对话显示)为核心,配套#elsesay(不满足条件提示)、#elseif(多条件判断)拓展逻辑,适配Hero、GOM、GEE主流引擎,语法通用无差异。
核心规则:1.指令区分大小写(部分引擎不严格,但建议统一大写核心命令);2.条件判断需放在#if/#elseif后,多个条件同时满足需依次罗列;3.#act后紧跟执行动作,无条件时不可单独使用;4.注释用“()”包裹,不影响脚本执行,便于后期维护。
二、核心条件判断命令(#IF)及代码实例
条件判断命令用于检测玩家状态、道具数量、元宝金币、等级等,是脚本逻辑触发的核心,以下为高频命令及完整代码示例,可直接复制修改使用。
1.元宝/金币检测(最常用)
命令格式:CheckGameGold数值(检测元宝,部分引擎为CheckYB)、CheckGold数值(检测金币),支持>、<、=等逻辑符号。
实操代码(元宝兑换道具):
(@main)
#say
消耗100元宝可兑换高级药水1瓶!\“
确认兑换/@exchange
取消/@exit
(@exchange)
#if
CheckGameGold>=100(检测元宝是否大于等于100)
#act
TakeGameGold100(扣除100元宝)
Give强效太阳水1(发放道具)
Say兑换成功!已为你发放强效太阳水。
#elsesay
你的元宝不足100,无法兑换!
补充代码(金币检测,购买道具):
(@buy)
#if
CheckGold>5000(检测金币是否大于5000)
#act
TakeGold5000(扣除5000金币)
Give疗伤药2(发放2个疗伤药)
#elsesay
金币不足5000,无法购买疗伤药!
2.等级/职业检测
命令格式:CheckLevel数值(等级检测)、CheckJob职业编号(1=战士,2=法师,3=道士)。
实操代码(等级达标领取奖励):
(@getReward)
#if
CheckLevel>=50(检测等级是否达标50级)
CheckJob3(检测是否为道士职业)
#act
AddExp50000(发放5万经验)
Give道士头盔1(发放职业装备)
Say恭喜道士玩家达到50级,领取专属奖励!
#elseif
CheckLevel>=50
CheckJob1
#act
AddExp50000
Give战士头盔1
Say恭喜战士玩家达到50级,领取专属奖励!
#elseif
CheckLevel>=50
CheckJob2
#act
AddExp50000
Give法师头盔1
Say恭喜法师玩家达到50级,领取专属奖励!
#elsesay
等级未达到50级,无法领取奖励!
3.道具数量/持有状态检测
命令格式:CheckItem道具名称数量(检测持有道具及数量)、CheckItemEx道具名称(检测是否持有该道具,不计数量)。
实操代码(道具兑换奖励):
(@itemExchange)
#say
提交5个赤月结晶可兑换赤月装备一件!\“
提交兑换/@submit
(@submit)
#if
CheckItem赤月结晶5(检测是否持有5个赤月结晶)
#act
Take赤月结晶5(扣除5个道具)
RandomGive赤月头盔1赤月项链1(随机发放一件装备)
Say兑换成功!获得随机赤月装备一件。
#elsesay
你未持有5个赤月结晶,无法兑换!
4.变量状态检测(全局/个人变量)
命令格式:CheckVarHuman变量名数值(个人变量)、CheckVarGlobal变量名数值(全局变量),适用于任务进度、状态标记等。
实操代码(任务状态检测):
(@taskSubmit)
#if
CheckVarHumantask11(检测个人变量task1是否为1,标记任务已完成)
#act
SetVarHumantask10(重置变量)
AddExp100000
Give金币10000
Say任务完成!已发放奖励。
#elsesay
你尚未完成任务,无法提交!
5.地图/怪物状态检测
命令格式:CheckMap地图代码(检测当前地图)、CheckMonster地图代码怪物名称00(检测怪物是否存活)。
实操代码(地图内击杀怪物触发奖励):
(@killBoss)
#if
CheckMap101(检测是否在101号地图)
CheckMonster101祖玛教主00(检测祖玛教主是否死亡)
#act
Give祖玛裁决1(发放专属掉落)
SendMsg6恭喜你击杀祖玛教主,获得稀有装备!
#elsesay
请先前往101号地图击杀祖玛教主!
三、执行动作命令(#ACT)及代码实例
#ACT后紧跟满足条件的执行动作,涵盖道具发放/扣除、经验增减、传送、变量修改等高频操作,以下为核心命令及组合代码。
1.道具/元宝/金币操作
核心命令:Give(发放道具)、Take(扣除道具)、GiveGameGold(发放元宝)、TakeGameGold(扣除元宝)、AddGold(增加金币)、TakeGold(扣除金币)。
实操代码(多动作组合):
(@reward)
#if
CheckLevel>=60
#act
AddExp200000(增加20万经验)
GiveGameGold500(发放500元宝)
AddGold50000(增加5万金币)
Give雷霆战甲1(发放装备)
Say等级达标60级,领取豪华奖励!
2.传送与地图操作
核心命令:MapMove地图代码X坐标Y坐标(传送至指定地图坐标)、BackMap(返回上一地图)。
实操代码(元宝传送地图):
(@enterMap)
#say
消耗50元宝可进入高级打宝地图!\“
确认进入/@go
(@go)
#if
CheckGameGold>=50
#act
TakeGameGold50
MapMove105300300(传送至105号地图,坐标300300)
Say已为你传送至高级打宝地图,祝你好运!
#elsesay
元宝不足50,无法进入!
3.变量与状态修改
核心命令:SetVar(设置变量值)、IncVar(变量值递增)、DecVar(变量值递减)、ClearVar(清空变量)。
实操代码(任务进度累计):
(@killMonster)
#if
CheckItem怪物掉落物1
#act
Take怪物掉落物1
IncVarHumankillCount1(击杀计数+1)
Say已收集1个掉落物,当前进度:<$HUMAN(killCount)>/10
#if
CheckVarHumankillCount=10
#act
SetVarHumankillCount0
Give奖励道具1
Say收集完成!获得奖励。
4.技能与属性操作
核心命令:AddSkill技能名称等级(学习技能)、AddStrength数值(增加力量属性)、AddMagic数值(增加魔法属性)。
实操代码(属性提升):
(@addAttr)
#if
CheckGameGold>=1000
#act
TakeGameGold1000
AddStrength5(增加5点力量)
AddMagic5(增加5点魔法)
AddAgility5(增加5点敏捷)
Say属性提升成功!力量、魔法、敏捷各+5。
#elsesay
元宝不足1000,无法提升属性!
三、完整脚本实例(多条件+多动作组合)
实例1:NPC任务脚本(条件判断+变量+奖励)
(@main)
#if
CheckVarHumantask20
#say
请帮我收集10个狼皮,我将给予你奖励!\“
接受任务/@accept
取消/@exit
(@accept)
#act
SetVarHumantask21
Say狼皮可在102号地图击杀狼获得,快去行动吧!
(@submit)
#if
CheckVarHumantask21
CheckItem狼皮10
#act
SetVarHumantask20
Take狼皮10
AddExp80000
Give金币8000
Say任务完成!这是你的奖励。
#elsesay
你尚未收集10个狼皮,或未接受任务!
实例2:元宝购买属性脚本(多条件判断)
(@buyAttr)
#say
每次消耗200元宝,随机提升一项属性!\“
确认购买/@buy
(@buy)
#if
CheckGameGold>=200
CheckLevel>=40
#act
TakeGameGold200
RandomActAddStrength3AddMagic3AddAgility3(随机提升一项属性+3)
SendMsg6属性提升成功!
#elsesay
元宝不足200或等级未达40级,无法购买!
四、脚本编写注意事项
1.命令一致性:不同引擎部分命令名称略有差异,如GEE引擎发放元宝用“GiveYB”,Hero引擎用“GiveGameGold”,需结合引擎手册调整。
2.路径存放:所有NPC交互脚本放入Envir\Market_def文件夹,命名格式为“NPC名称-地图代码.txt”;核心逻辑脚本放入Envir\QuestDiary文件夹,Hero引擎需在QManage.txt中添加引用。
3.重载生效:脚本修改后,输入GM命令“@reloadnpcall”(重载NPC脚本)、“@reloadquestall”(重载Quest脚本),无需重启服务端。
4.避免冲突:变量命名需唯一,建议添加前缀(如task_、kill_),避免与其他脚本变量冲突;道具、怪物名称需与服务端配置文件一致。
传奇脚本核心由条件判断、执行动作、对话提示三类指令构成,基础格式以#if(条件判断)、#act(满足条件执行)、#say(对话显示)为核心,配套#elsesay(不满足条件提示)、#elseif(多条件判断)拓展逻辑,适配Hero、GOM、GEE主流引擎,语法通用无差异。
核心规则:1.指令区分大小写(部分引擎不严格,但建议统一大写核心命令);2.条件判断需放在#if/#elseif后,多个条件同时满足需依次罗列;3.#act后紧跟执行动作,无条件时不可单独使用;4.注释用“()”包裹,不影响脚本执行,便于后期维护。
二、核心条件判断命令(#IF)及代码实例
条件判断命令用于检测玩家状态、道具数量、元宝金币、等级等,是脚本逻辑触发的核心,以下为高频命令及完整代码示例,可直接复制修改使用。
1.元宝/金币检测(最常用)
命令格式:CheckGameGold数值(检测元宝,部分引擎为CheckYB)、CheckGold数值(检测金币),支持>、<、=等逻辑符号。
实操代码(元宝兑换道具):
(@main)
#say
消耗100元宝可兑换高级药水1瓶!\“
确认兑换/@exchange
取消/@exit
(@exchange)
#if
CheckGameGold>=100(检测元宝是否大于等于100)
#act
TakeGameGold100(扣除100元宝)
Give强效太阳水1(发放道具)
Say兑换成功!已为你发放强效太阳水。
#elsesay
你的元宝不足100,无法兑换!
补充代码(金币检测,购买道具):
(@buy)
#if
CheckGold>5000(检测金币是否大于5000)
#act
TakeGold5000(扣除5000金币)
Give疗伤药2(发放2个疗伤药)
#elsesay
金币不足5000,无法购买疗伤药!
2.等级/职业检测
命令格式:CheckLevel数值(等级检测)、CheckJob职业编号(1=战士,2=法师,3=道士)。
实操代码(等级达标领取奖励):
(@getReward)
#if
CheckLevel>=50(检测等级是否达标50级)
CheckJob3(检测是否为道士职业)
#act
AddExp50000(发放5万经验)
Give道士头盔1(发放职业装备)
Say恭喜道士玩家达到50级,领取专属奖励!
#elseif
CheckLevel>=50
CheckJob1
#act
AddExp50000
Give战士头盔1
Say恭喜战士玩家达到50级,领取专属奖励!
#elseif
CheckLevel>=50
CheckJob2
#act
AddExp50000
Give法师头盔1
Say恭喜法师玩家达到50级,领取专属奖励!
#elsesay
等级未达到50级,无法领取奖励!
3.道具数量/持有状态检测
命令格式:CheckItem道具名称数量(检测持有道具及数量)、CheckItemEx道具名称(检测是否持有该道具,不计数量)。
实操代码(道具兑换奖励):
(@itemExchange)
#say
提交5个赤月结晶可兑换赤月装备一件!\“
提交兑换/@submit
(@submit)
#if
CheckItem赤月结晶5(检测是否持有5个赤月结晶)
#act
Take赤月结晶5(扣除5个道具)
RandomGive赤月头盔1赤月项链1(随机发放一件装备)
Say兑换成功!获得随机赤月装备一件。
#elsesay
你未持有5个赤月结晶,无法兑换!
4.变量状态检测(全局/个人变量)
命令格式:CheckVarHuman变量名数值(个人变量)、CheckVarGlobal变量名数值(全局变量),适用于任务进度、状态标记等。
实操代码(任务状态检测):
(@taskSubmit)
#if
CheckVarHumantask11(检测个人变量task1是否为1,标记任务已完成)
#act
SetVarHumantask10(重置变量)
AddExp100000
Give金币10000
Say任务完成!已发放奖励。
#elsesay
你尚未完成任务,无法提交!
5.地图/怪物状态检测
命令格式:CheckMap地图代码(检测当前地图)、CheckMonster地图代码怪物名称00(检测怪物是否存活)。
实操代码(地图内击杀怪物触发奖励):
(@killBoss)
#if
CheckMap101(检测是否在101号地图)
CheckMonster101祖玛教主00(检测祖玛教主是否死亡)
#act
Give祖玛裁决1(发放专属掉落)
SendMsg6恭喜你击杀祖玛教主,获得稀有装备!
#elsesay
请先前往101号地图击杀祖玛教主!
三、执行动作命令(#ACT)及代码实例
#ACT后紧跟满足条件的执行动作,涵盖道具发放/扣除、经验增减、传送、变量修改等高频操作,以下为核心命令及组合代码。
1.道具/元宝/金币操作
核心命令:Give(发放道具)、Take(扣除道具)、GiveGameGold(发放元宝)、TakeGameGold(扣除元宝)、AddGold(增加金币)、TakeGold(扣除金币)。
实操代码(多动作组合):
(@reward)
#if
CheckLevel>=60
#act
AddExp200000(增加20万经验)
GiveGameGold500(发放500元宝)
AddGold50000(增加5万金币)
Give雷霆战甲1(发放装备)
Say等级达标60级,领取豪华奖励!
2.传送与地图操作
核心命令:MapMove地图代码X坐标Y坐标(传送至指定地图坐标)、BackMap(返回上一地图)。
实操代码(元宝传送地图):
(@enterMap)
#say
消耗50元宝可进入高级打宝地图!\“
确认进入/@go
(@go)
#if
CheckGameGold>=50
#act
TakeGameGold50
MapMove105300300(传送至105号地图,坐标300300)
Say已为你传送至高级打宝地图,祝你好运!
#elsesay
元宝不足50,无法进入!
3.变量与状态修改
核心命令:SetVar(设置变量值)、IncVar(变量值递增)、DecVar(变量值递减)、ClearVar(清空变量)。
实操代码(任务进度累计):
(@killMonster)
#if
CheckItem怪物掉落物1
#act
Take怪物掉落物1
IncVarHumankillCount1(击杀计数+1)
Say已收集1个掉落物,当前进度:<$HUMAN(killCount)>/10
#if
CheckVarHumankillCount=10
#act
SetVarHumankillCount0
Give奖励道具1
Say收集完成!获得奖励。
4.技能与属性操作
核心命令:AddSkill技能名称等级(学习技能)、AddStrength数值(增加力量属性)、AddMagic数值(增加魔法属性)。
实操代码(属性提升):
(@addAttr)
#if
CheckGameGold>=1000
#act
TakeGameGold1000
AddStrength5(增加5点力量)
AddMagic5(增加5点魔法)
AddAgility5(增加5点敏捷)
Say属性提升成功!力量、魔法、敏捷各+5。
#elsesay
元宝不足1000,无法提升属性!
三、完整脚本实例(多条件+多动作组合)
实例1:NPC任务脚本(条件判断+变量+奖励)
(@main)
#if
CheckVarHumantask20
#say
请帮我收集10个狼皮,我将给予你奖励!\“
接受任务/@accept
取消/@exit
(@accept)
#act
SetVarHumantask21
Say狼皮可在102号地图击杀狼获得,快去行动吧!
(@submit)
#if
CheckVarHumantask21
CheckItem狼皮10
#act
SetVarHumantask20
Take狼皮10
AddExp80000
Give金币8000
Say任务完成!这是你的奖励。
#elsesay
你尚未收集10个狼皮,或未接受任务!
实例2:元宝购买属性脚本(多条件判断)
(@buyAttr)
#say
每次消耗200元宝,随机提升一项属性!\“
确认购买/@buy
(@buy)
#if
CheckGameGold>=200
CheckLevel>=40
#act
TakeGameGold200
RandomActAddStrength3AddMagic3AddAgility3(随机提升一项属性+3)
SendMsg6属性提升成功!
#elsesay
元宝不足200或等级未达40级,无法购买!
四、脚本编写注意事项
1.命令一致性:不同引擎部分命令名称略有差异,如GEE引擎发放元宝用“GiveYB”,Hero引擎用“GiveGameGold”,需结合引擎手册调整。
2.路径存放:所有NPC交互脚本放入Envir\Market_def文件夹,命名格式为“NPC名称-地图代码.txt”;核心逻辑脚本放入Envir\QuestDiary文件夹,Hero引擎需在QManage.txt中添加引用。
3.重载生效:脚本修改后,输入GM命令“@reloadnpcall”(重载NPC脚本)、“@reloadquestall”(重载Quest脚本),无需重启服务端。
4.避免冲突:变量命名需唯一,建议添加前缀(如task_、kill_),避免与其他脚本变量冲突;道具、怪物名称需与服务端配置文件一致。

