传奇服务端的脚本命令,就像游戏世界的“魔法咒语”,输入不同的指令,能让服务器做出各种反应——比如让NPC说话、给玩家发奖励、传送地图等。对于想自己搭建或修改玩法的人来说,了解这些命令的作用和用法很重要。下面就按功能分类,说说常用的脚本命令该怎么用,以及在什么场景下使用。
如何理解脚本命令的基本格式?
传奇脚本命令有固定的格式,就像写句子要主谓宾一样,大部分命令由“指令+参数”组成。比如“Give金币1000”,“Give”是指令(意思是“给予”),“金币”和“1000”是参数(代表给予的物品和数量)。
命令通常放在特定的标签下,最常见的是“#act”(执行操作)和“#say”(显示对话)。比如:
[@NPC对话]
#say
欢迎来到比奇城!
#act
Give金疮药(小)5//给玩家5瓶小金疮药
这里的“@NPC对话”是触发标签(玩家点击NPC时触发),“#say”后面跟着显示给玩家的文字,“#act”后面跟着要执行的命令(给物品)。
另外,很多命令需要“条件判断”,也就是用“#if”开头,满足条件才执行“#act”里的命令。比如:
#if
CheckLevel>30//检查玩家等级是否大于30级
#act
MapMove5//传送到地图5
#elseact
MESSAGEBOX等级不够,无法进入!
这种“#if-#act-#elseact”的结构,是脚本命令的核心逻辑,用来处理“满足条件做A,不满足做B”的场景。
如何使用物品相关的脚本命令?
物品相关的命令是最常用的,从给物品、扣物品到检查物品是否存在,都有对应的指令,新手可以先掌握这几个:
CheckItem:检查玩家是否有某物品及数量。比如“CheckItem屠龙刀1”,意思是“检查玩家是否有1把屠龙刀”,通常用在“#if”条件里,判断是否满足合成、任务等条件。
Give:给玩家物品。比如“Give雷霆战甲1”,就是给玩家1件雷霆战甲。如果想给绑定物品,可以加参数“Bind”,写成“Give雷霆战甲1Bind”。
Take:扣除玩家物品。比如“Take金币5000”,扣除玩家5000金币,常用于购买物品、修理装备等场景。如果玩家物品不足,这个命令会执行失败,所以最好先搭配“CheckItem”检查。
CheckItemDur:检查物品耐久。比如“CheckItemDur武器<30”,检查武器耐久是否低于30%,常用于自动修装备的脚本里。
RepairItem:修复物品。比如“RepairItem衣服100”,把衣服修复到100%耐久,通常和“CheckItemDur”配合使用。
示例:玩家用5个沃玛碎片换1个赤月碎片的脚本:
#if
CheckItem沃玛碎片5//检查是否有5个沃玛碎片
#act
Take沃玛碎片5//扣除5个
Give赤月碎片1//给1个
SENDMSG1兑换成功!
#elseact
MESSAGEBOX沃玛碎片不足5个,无法兑换。
如何使用地图和传送相关的命令?
地图和传送命令能控制玩家在不同地图间的移动,以及设置地图规则,常用的有这些:
MapMove:传送玩家到指定地图和坐标。格式是“MapMove地图号X坐标Y坐标”,比如“MapMove3250250”,把玩家传送到3号地图(沃玛寺庙)的250250位置。
CheckMap:检查玩家当前所在地图。比如“CheckMap3”,判断玩家是否在3号地图,常用于限制“只有在某地图才能接任务”的场景。
SetMapAttr:设置地图属性。比如“SetMapAttr3禁随机=1”,给3号地图添加“禁止使用随机传送卷”的属性,避免玩家在特定地图乱飞。
CheckMonsterCount:检查地图内怪物数量。比如“CheckMonsterCount3沃玛卫士0”,检查3号地图是否没有沃玛卫士,常用于“清完怪才能进下一张图”的脚本(前面提到过的场景)。
示例:玩家在比奇城(1号地图)才能传送的脚本:
#if
CheckMap1//检查是否在1号地图(比奇城)
#act
MapMove4300300//传送到4号地图
#elseact
MESSAGEBOX只有在比奇城才能使用此传送功能!
如何使用任务和变量相关的命令?
任务的核心是跟踪进度,这就需要变量和任务状态命令,常用的有:
SetVariable:给变量赋值。比如“SetVariableg10110”,把全局变量g101设为10(可以代表任务进度、次数等)。
GetVariable:读取变量值。比如“GetVariableg101”,获取g101的值,配合“STR”显示给玩家,如“已完成次数:<$STR(g101)>”。
AddVariable:给变量增加数值。比如“AddVariableg1011”,让g101的值加1,适合记录“已杀怪数量”“已完成任务次数”。
CheckTaskDone:检查任务是否完成。比如“CheckTaskDone5”,判断5号任务是否完成,常用于后续奖励发放。
SetTask:设置任务状态。比如“SetTask51”,把5号任务状态设为1(代表已完成),通常在玩家达成任务条件后执行。
示例:记录玩家杀怪数量的脚本:
#if
CheckMonster沃玛卫士1//检测到玩家杀死1只沃玛卫士
#act
AddVariableg2001//变量g200加1(记录杀怪数)
SENDMSG1已杀沃玛卫士:<$STR(g200)>只
#if
GetVariableg200>=10//当杀怪数≥10时
#act
SetTask11//标记1号任务完成
SENDMSG1恭喜完成杀10只沃玛卫士的任务!
如何使用对话和提示相关的命令?
让NPC和玩家互动,以及给玩家发提示,需要这些命令:
#say:显示NPC对话内容,可以加选项让玩家点击。比如:
#say
你想做什么?
<接取任务/@Task>
<购买药水/@Buy>
玩家点击“<接取任务/@Task>”,就会触发“@Task”标签下的脚本。
SENDMSG:给玩家发系统消息。格式是“SENDMSG频道号内容”,比如“SENDMSG1欢迎加入行会!”,“1”代表全服频道(不同频道号对应不同范围,比如2是私聊)。
MESSAGEBOX:弹出提示框。比如“MESSAGEBOX背包已满,请先清理空间!”,强制玩家看到提示后才能继续操作。
CloseDialog:关闭对话窗口。比如玩家完成操作后,用“CloseDialog”关闭NPC对话界面。
示例:NPC对话和提示的组合脚本:
[@NPC]
#say
我这里有药水卖,需要吗?
<买金疮药(小)/@BuySmall>
[@BuySmall]
#if
CheckGold100//检查是否有100金币
#act
Take金币100
Give金疮药(小)1
SENDMSG1购买成功!
CloseDialog//关闭对话
#elseact
MESSAGEBOX金币不足100,无法购买。
如何处理命令使用中的常见问题?
命令用不起来,常见原因有三个:
格式错误:比如把“MapMove”写成“MapMovee”,或者参数顺序错了(地图号和坐标写反)。解决方法是对照命令手册,检查拼写和参数顺序。
版本不兼容:不同版本支持的命令可能不同,比如有的版本用“FixItem”代替“RepairItem”修复装备。可以在服务端的“命令列表.txt”里查当前版本支持的命令。
条件不满足:比如“Take金币100”执行失败,可能是玩家金币不够,这时候要在“#if”里加“CheckGold100”提前判断,避免出错。
另外,复杂脚本可以拆成小部分测试,比如先测试“CheckItem”是否能正确判断物品,再测试“Take”和“Give”是否正常,一步步排除问题。
传奇服务端脚本命令虽然多,但核心是“条件判断+执行操作”。刚开始不用记全,先掌握“物品、地图、任务”这三类常用命令,遇到具体场景再查手册。比如想做一个“收集材料换装备”的活动,就用“CheckItem”检查材料、“Take”扣除、“Give”给奖励,组合起来就能实现。多写几个简单脚本练习,慢慢就能熟练运用这些“魔法咒语”了。
如何理解脚本命令的基本格式?
传奇脚本命令有固定的格式,就像写句子要主谓宾一样,大部分命令由“指令+参数”组成。比如“Give金币1000”,“Give”是指令(意思是“给予”),“金币”和“1000”是参数(代表给予的物品和数量)。
命令通常放在特定的标签下,最常见的是“#act”(执行操作)和“#say”(显示对话)。比如:
[@NPC对话]
#say
欢迎来到比奇城!
#act
Give金疮药(小)5//给玩家5瓶小金疮药
这里的“@NPC对话”是触发标签(玩家点击NPC时触发),“#say”后面跟着显示给玩家的文字,“#act”后面跟着要执行的命令(给物品)。
另外,很多命令需要“条件判断”,也就是用“#if”开头,满足条件才执行“#act”里的命令。比如:
#if
CheckLevel>30//检查玩家等级是否大于30级
#act
MapMove5//传送到地图5
#elseact
MESSAGEBOX等级不够,无法进入!
这种“#if-#act-#elseact”的结构,是脚本命令的核心逻辑,用来处理“满足条件做A,不满足做B”的场景。
如何使用物品相关的脚本命令?
物品相关的命令是最常用的,从给物品、扣物品到检查物品是否存在,都有对应的指令,新手可以先掌握这几个:
CheckItem:检查玩家是否有某物品及数量。比如“CheckItem屠龙刀1”,意思是“检查玩家是否有1把屠龙刀”,通常用在“#if”条件里,判断是否满足合成、任务等条件。
Give:给玩家物品。比如“Give雷霆战甲1”,就是给玩家1件雷霆战甲。如果想给绑定物品,可以加参数“Bind”,写成“Give雷霆战甲1Bind”。
Take:扣除玩家物品。比如“Take金币5000”,扣除玩家5000金币,常用于购买物品、修理装备等场景。如果玩家物品不足,这个命令会执行失败,所以最好先搭配“CheckItem”检查。
CheckItemDur:检查物品耐久。比如“CheckItemDur武器<30”,检查武器耐久是否低于30%,常用于自动修装备的脚本里。
RepairItem:修复物品。比如“RepairItem衣服100”,把衣服修复到100%耐久,通常和“CheckItemDur”配合使用。
示例:玩家用5个沃玛碎片换1个赤月碎片的脚本:
#if
CheckItem沃玛碎片5//检查是否有5个沃玛碎片
#act
Take沃玛碎片5//扣除5个
Give赤月碎片1//给1个
SENDMSG1兑换成功!
#elseact
MESSAGEBOX沃玛碎片不足5个,无法兑换。
如何使用地图和传送相关的命令?
地图和传送命令能控制玩家在不同地图间的移动,以及设置地图规则,常用的有这些:
MapMove:传送玩家到指定地图和坐标。格式是“MapMove地图号X坐标Y坐标”,比如“MapMove3250250”,把玩家传送到3号地图(沃玛寺庙)的250250位置。
CheckMap:检查玩家当前所在地图。比如“CheckMap3”,判断玩家是否在3号地图,常用于限制“只有在某地图才能接任务”的场景。
SetMapAttr:设置地图属性。比如“SetMapAttr3禁随机=1”,给3号地图添加“禁止使用随机传送卷”的属性,避免玩家在特定地图乱飞。
CheckMonsterCount:检查地图内怪物数量。比如“CheckMonsterCount3沃玛卫士0”,检查3号地图是否没有沃玛卫士,常用于“清完怪才能进下一张图”的脚本(前面提到过的场景)。
示例:玩家在比奇城(1号地图)才能传送的脚本:
#if
CheckMap1//检查是否在1号地图(比奇城)
#act
MapMove4300300//传送到4号地图
#elseact
MESSAGEBOX只有在比奇城才能使用此传送功能!
如何使用任务和变量相关的命令?
任务的核心是跟踪进度,这就需要变量和任务状态命令,常用的有:
SetVariable:给变量赋值。比如“SetVariableg10110”,把全局变量g101设为10(可以代表任务进度、次数等)。
GetVariable:读取变量值。比如“GetVariableg101”,获取g101的值,配合“STR”显示给玩家,如“已完成次数:<$STR(g101)>”。
AddVariable:给变量增加数值。比如“AddVariableg1011”,让g101的值加1,适合记录“已杀怪数量”“已完成任务次数”。
CheckTaskDone:检查任务是否完成。比如“CheckTaskDone5”,判断5号任务是否完成,常用于后续奖励发放。
SetTask:设置任务状态。比如“SetTask51”,把5号任务状态设为1(代表已完成),通常在玩家达成任务条件后执行。
示例:记录玩家杀怪数量的脚本:
#if
CheckMonster沃玛卫士1//检测到玩家杀死1只沃玛卫士
#act
AddVariableg2001//变量g200加1(记录杀怪数)
SENDMSG1已杀沃玛卫士:<$STR(g200)>只
#if
GetVariableg200>=10//当杀怪数≥10时
#act
SetTask11//标记1号任务完成
SENDMSG1恭喜完成杀10只沃玛卫士的任务!
如何使用对话和提示相关的命令?
让NPC和玩家互动,以及给玩家发提示,需要这些命令:
#say:显示NPC对话内容,可以加选项让玩家点击。比如:
#say
你想做什么?
<接取任务/@Task>
<购买药水/@Buy>
玩家点击“<接取任务/@Task>”,就会触发“@Task”标签下的脚本。
SENDMSG:给玩家发系统消息。格式是“SENDMSG频道号内容”,比如“SENDMSG1欢迎加入行会!”,“1”代表全服频道(不同频道号对应不同范围,比如2是私聊)。
MESSAGEBOX:弹出提示框。比如“MESSAGEBOX背包已满,请先清理空间!”,强制玩家看到提示后才能继续操作。
CloseDialog:关闭对话窗口。比如玩家完成操作后,用“CloseDialog”关闭NPC对话界面。
示例:NPC对话和提示的组合脚本:
[@NPC]
#say
我这里有药水卖,需要吗?
<买金疮药(小)/@BuySmall>
[@BuySmall]
#if
CheckGold100//检查是否有100金币
#act
Take金币100
Give金疮药(小)1
SENDMSG1购买成功!
CloseDialog//关闭对话
#elseact
MESSAGEBOX金币不足100,无法购买。
如何处理命令使用中的常见问题?
命令用不起来,常见原因有三个:
格式错误:比如把“MapMove”写成“MapMovee”,或者参数顺序错了(地图号和坐标写反)。解决方法是对照命令手册,检查拼写和参数顺序。
版本不兼容:不同版本支持的命令可能不同,比如有的版本用“FixItem”代替“RepairItem”修复装备。可以在服务端的“命令列表.txt”里查当前版本支持的命令。
条件不满足:比如“Take金币100”执行失败,可能是玩家金币不够,这时候要在“#if”里加“CheckGold100”提前判断,避免出错。
另外,复杂脚本可以拆成小部分测试,比如先测试“CheckItem”是否能正确判断物品,再测试“Take”和“Give”是否正常,一步步排除问题。
传奇服务端脚本命令虽然多,但核心是“条件判断+执行操作”。刚开始不用记全,先掌握“物品、地图、任务”这三类常用命令,遇到具体场景再查手册。比如想做一个“收集材料换装备”的活动,就用“CheckItem”检查材料、“Take”扣除、“Give”给奖励,组合起来就能实现。多写几个简单脚本练习,慢慢就能熟练运用这些“魔法咒语”了。

