传奇脚本命令是构成游戏内NPC交互、任务执行、地图控制、玩家状态调整的核心,每一条命令都对应具体的游戏行为,掌握各类命令的用法的格式,能快速实现游戏内各类功能场景的搭建,无需复杂操作,按规范书写即可生效。本文将按命令功能分类,详细讲解常用传奇脚本命令的格式、用法及实操示例,覆盖基础交互、物品操作、地图控制、变量使用、逻辑判断等核心场景,所有命令均结合实际应用场景说明,方便直接套用。
一、基础交互命令
基础交互命令主要用于实现玩家与NPC的对话、界面控制、流程跳转,是所有脚本的基础,常用命令包括@段定义、goto跳转、#say对话、#act执行、close关闭等,用法简单且高频使用。
@段:用于定义脚本的段落,段名可使用英文或数字表示,是脚本流程跳转的基础标识,格式为“(@段名)”,例如(@main)、(@buy)、(@task1),每个段落对应一段独立的脚本逻辑,玩家触发对应操作后,将执行该段落内的命令。
goto @段:用于跳转到指定的脚本段落,相当于流程控制中的跳转指令,格式为“goto @段名”,例如在(@main)段落中添加“goto @buy”,执行后将直接跳转到(@buy)段落,执行该段落内的所有命令,常用于实现菜单切换、任务步骤跳转等场景。
#say 语句:用于设置NPC与玩家的对话内容或菜单选项,语句无需添加任何定界符,直接书写即可,支持换行和菜单跳转链接,格式为“#say 具体内容”。例如“#say 欢迎来到道具商店!\n<购买药水/@buymedicine> <修理装备/@repair> <离开/@exit>”,其中“\n”表示换行,“<选项名称/@段名>”用于设置菜单选项,玩家点击后将跳转到对应段落。
#act 执行命令:用于执行系统已定义的具体操作,必须跟在#say或#IF判断之后,格式为“#act 具体命令”,一条#act后可跟随多条执行命令,换行分隔即可。例如“#act give 金币 1000; mapmove 比奇城 320 330”,执行后将给玩家发放1000金币,并将玩家传送到比奇城指定坐标。
close:用于关闭当前NPC对话框,格式为“close”,无需跟随其他参数,通常用于玩家完成操作后自动关闭对话框,或在特定条件下强制关闭对话,与@exit功能类似,可互换使用。
@exit:与close功能一致,用于关闭NPC对话框,格式为“@exit”,可直接书写在脚本段落末尾,实现玩家点击“关闭”选项后退出对话,例如“(@exit) #act close”,简化对话关闭流程。
Delaygoto (Grobal) 时间 @段:用于设置延迟跳转,格式为“Delaygoto (Grobal) 时间(秒) @段名”,例如“Delaygoto (Grobal) 120 @main”,表示120秒后自动跳转到(@main)段落,常用于实现倒计时提示、自动回归主菜单等场景。
二、物品与金币操作命令
物品与金币操作命令用于实现玩家背包内物品的发放、回收,金币的增减,以及物品相关的检测,是任务奖励、商店交易、道具兑换等场景的核心命令,常用命令包括give、take、checkitem、checkgold等。
give 物品 数量:用于给玩家发放指定物品或金币,格式为“give 物品名称/金币 数量”,物品名称需与游戏物品数据库中的名称一致,金币直接填写“金币”即可。例如“give 布衣 1”表示给玩家发放1件布衣,“give 金币 5000”表示给玩家发放5000金币,支持批量发放,只需调整数量参数即可。
take 物品 数量 是否检测装备改名:用于从玩家背包或身上回收指定物品或金币,格式为“take 物品名称/金币 数量 检测参数”,检测参数为0或空表示不检测装备改名,1表示检测装备改名,未检测到对应物品则不执行回收操作。例如“take 布衣 1 0”表示从玩家背包回收1件布衣,不检测装备是否改名;“take 金币 1000”表示从玩家背包回收1000金币,无需检测参数时可省略。
takew 物品:用于直接从玩家身上(装备栏)回收指定物品,格式为“takew 物品名称”,无需填写数量,默认回收1件,例如“takew 裁决”表示从玩家装备栏回收1把裁决,适用于回收玩家已穿戴的装备场景。
checkitem 物品 数量:用于检测玩家背包内是否拥有指定数量的物品,格式为“checkitem 物品名称 数量”,通常用于#IF逻辑判断中,满足条件则执行后续命令,不满足则执行其他逻辑。例如“#IF checkitem 矿石 5 #act give 金币 100”,表示检测玩家背包内是否有5个矿石,有则发放100金币。
checkitemw 物品:用于检测玩家身上(装备栏)是否穿戴指定物品,格式为“checkitemw 物品名称”,无需填写数量,默认检测1件,例如“#IF checkitemw 沃玛头盔 #act sendmsg 6 穿戴沃玛头盔可获得额外防御”,表示检测玩家是否穿戴沃玛头盔,穿戴则发送提示信息。
checkgold 数值:用于检测玩家背包内的金币数量是否大于等于指定数值,格式为“checkgold 数值”,常用于#IF判断中,例如“#IF checkgold 1000 #act take 金币 1000; give 强效太阳水 1”,表示检测玩家是否有1000金币,有则扣除1000金币并发放1瓶强效太阳水。
checkduraeva 物品名 数值:用于检测玩家背包内具有品质属性的物品(如矿石、宝石)的品质,格式为“checkduraeva 物品名 数值”,例如“checkduraeva 钢玉矿石 10”,表示检测玩家背包内的钢玉矿石品质是否达到10,常用于矿石兑换、装备强化等场景。
三、地图与传送命令
地图与传送命令用于实现玩家在不同地图之间的移动、地图内怪物的清理与刷新,以及地图相关的检测,是地图跳转、副本设置、怪物刷新等场景的核心命令,常用命令包括map、mapmove、monclear、MonGen等。
map 地图名:用于将玩家传送到指定地图的随机坐标,格式为“map 地图名”,地图名需填写游戏地图的数字代码或中文名称(按游戏配置为准),例如“map 比奇城”“map 3”,执行后玩家将随机出现在该地图的任意可站立坐标,适用于随机传送场景。
mapmove 地图名 坐标A 坐标B 范围:用于将玩家传送到指定地图的指定坐标,格式为“mapmove 地图名 横坐标 纵坐标 范围”,范围留空或填写0则为定点传送,填写具体数值则为该坐标周围的随机范围传送。例如“mapmove 沙巴克 600 400 0”表示将玩家定点传送到沙巴克600,400坐标;“mapmove 蜈蚣洞 200 300 5”表示将玩家传送到蜈蚣洞200,300坐标周围5格范围内的随机位置。
monclear 地图名:用于清除指定地图内所有已刷新的怪物,格式为“monclear 地图名”,例如“monclear 猪洞七层”,执行后该地图内的所有怪物将被清除,适用于副本重置、地图清理等场景。
MonGen 怪物名称 数量 时间:用于在指定地图刷新指定数量的怪物,格式为“MonGen 怪物名称 数量 刷新时间(分钟)”,刷新时间填写0则为立即刷新且不重复,填写具体数值则为每隔该时间重复刷新一次。例如“MonGen 白野猪 5 10”表示在当前地图刷新5只白野猪,每隔10分钟刷新一次;“MonGen 僵尸 10 0”表示在当前地图立即刷新10只僵尸,不重复刷新。
checkhum 地图名 数值:用于检测指定地图内的玩家数量,格式为“checkhum 地图名 数值”,例如“#IF checkhum 副本地图 5 #act sendmsg 6 副本人数已满,请稍后再进”,表示检测副本地图内的玩家数量是否达到5人,达到则发送提示信息。
checkmonmap 地图名 数值:用于检测指定地图内的怪物数量,格式为“checkmonmap 地图名 数值”,例如“#IF checkmonmap 沃玛寺庙 0 #act MonGen 沃玛卫士 8 5”,表示检测沃玛寺庙内的怪物数量是否为0,为0则刷新8只沃玛卫士,每隔5分钟刷新一次。
TimeRecall 数值:用于定义玩家进入当前地图后的时间限制,格式为“TimeRecall 数值(分钟)”,例如“TimeRecall 30”表示玩家进入该地图后,30分钟后将被自动传送回进入前的位置,适用于限时副本、活动地图等场景。
BreakTimeRecall:用于中断TimeRecall设置的时间限制,格式为“BreakTimeRecall”,无需跟随其他参数,例如玩家完成副本任务后,执行该命令,即可取消时间限制,不再被自动传送,适用于任务完成后的流程解锁。
四、变量与运算命令
变量与运算命令用于定义脚本中的变量、进行数值运算,实现脚本的动态逻辑控制,常用于任务进度记录、数值统计、随机事件等场景,变量分为数字型、字符型,常用命令包括mov、inc、dec、sum、movr等。
变量分类:传奇脚本中的变量有明确的命名规范,数字型变量包括D0-D9、P0-P9、S0-S9,服务器共享变量包括N0-N9,字符型变量包括A0-A9、B0-B9,变量名不可随意更改,需严格遵循命名规范。
mov 变量 数值/字符:用于给变量赋值,格式为“mov 变量名 数值/字符”,数字型变量赋值为数值,字符型变量赋值为字符。例如“mov D0 10”表示给数字型变量D0赋值为10;“mov A0 新手”表示给字符型变量A0赋值为“新手”,赋值后变量可用于后续的逻辑判断和运算。
inc 变量 数值:用于将变量的值自动增加指定数值,格式为“inc 变量名 数值”,仅适用于数字型变量,例如“inc D0 5”表示将变量D0的值增加5,若D0原本为10,执行后变为15,常用于任务进度累计、积分增加等场景。
dec 变量 数值:用于将变量的值自动减少指定数值,格式为“dec 变量名 数值”,仅适用于数字型变量,例如“dec D0 3”表示将变量D0的值减少3,若D0原本为15,执行后变为12,常用于积分扣除、任务次数减少等场景。
sum 变量A 变量B:用于实现变量求和,格式为“sum 变量A 变量B”,需配合mov命令使用,先给求和变量赋值为0,再进行求和操作。例如“mov X0 0; sum D0 D1; sum D2”,表示先给变量X0赋值为0,再将D0和D1的值相加赋值给X0,最后再加上D2的值,最终X0的值为D0+D1+D2,单独使用sum命令无意义,需按规范组合使用。
MUL 变量 数值:用于实现变量的乘法运算,格式为“MUL 变量名 数值”,仅适用于数字型变量,不支持字符串变量,例如“MUL D0 2”表示将变量D0的值乘以2,若D0原本为5,执行后变为10。
DIV 变量 数值:用于实现变量的整除运算,格式为“DIV 变量名 数值”,仅适用于数字型变量,不支持字符串变量,例如“DIV D0 2”表示将变量D0的值除以2,取整数部分,若D0原本为5,执行后变为2。
movr 变量 数值:用于定义随机变量,格式为“movr 变量名 数值”,变量值将在0到指定数值之间随机生成(不包含指定数值),例如“movr S1 10”表示变量S1的值在0到9之间随机生成;“movr S1 1 10”表示变量S1的值在1到9之间随机生成,适用于随机奖励、随机事件等场景。
random 数值:用于生成随机概率,格式为“random 数值”,当生成的随机数等于该数值时返回1,否则返回0,例如“random 1”表示100%概率,“random 2”表示50%概率,“random 4”表示25%概率,常用于随机触发奖励、随机事件等场景,需配合#IF判断使用。
<$STR(变量)>:用于在对话中显示变量的值,格式为“<$STR(变量名)>”,需配合#say命令使用,例如“#say 您当前的积分是:<$STR(D0)>”,执行后将显示变量D0的值,让玩家直观看到相关数值。
reset (XXX) 7:用于将指定起始编号的7个变量恢复到原始值0,格式为“reset (起始编号) 7”,例如“reset (100) 7”表示将100、101、102、103、104、105、106这7个变量全部赋值为0,等同于依次给这7个变量执行“set 变量 0”命令,适用于变量重置场景。
五、逻辑判断命令
逻辑判断命令用于实现脚本的条件分支控制,根据玩家的状态、物品、等级等条件,执行不同的脚本逻辑,是任务触发、权限判断、场景切换等场景的核心,常用命令包括#IF、#ELSEACT、#ELSESAY、checkjob、checklevel等。
#IF:用于开启逻辑判断,格式为“#IF 条件”,后面跟随具体的判断条件,满足条件则执行后续的#act命令,不满足则执行#ELSEACT或#ELSESAY命令,每个#IF对应一个判断分支,可嵌套使用,但需注意逻辑清晰。
#ELSEACT:用于设置#IF判断不满足条件时执行的操作,格式为“#ELSEACT 具体命令”,需跟在#IF和#act之后,例如“#IF checklevel 30 #act give 沃玛套装 1 #ELSEACT sendmsg 6 等级不足30级,无法领取奖励”,表示玩家等级达到30级则发放沃玛套装,不足则发送提示。
#ELSESAY:用于设置#IF判断不满足条件时显示的对话内容,格式为“#ELSESAY 具体内容”,需跟在#IF和#say之后,例如“#IF checkitem 任务道具 1 #say 任务道具已集齐,可领取奖励!<领取/@getreward> #ELSESAY 您尚未集齐任务道具,请继续寻找。<返回/@main>”,表示玩家拥有任务道具则显示奖励领取选项,否则提示未集齐。
checkjob Warr(Wizard、Taos):用于检测玩家的职业,格式为“checkjob 职业名称”,Warr代表战士,Wizard代表法师,Taos代表道士,满足职业条件则返回1,否则返回0,例如“#IF checkjob Warr #act give 裁决 1 #ELSEACT sendmsg 6 只有战士可领取该奖励”,表示只有战士职业能领取裁决。
checklevel 数值:用于检测玩家的等级是否大于等于指定数值,格式为“checklevel 数值”,例如“#IF checklevel 40 #act mapmove 赤月峡谷 500 500 #ELSEACT sendmsg 6 等级不足40级,无法进入赤月峡谷”,表示玩家等级达到40级可传送至赤月峡谷,不足则无法进入。
small (变量) (数值):用于检测变量的值是否小于指定数值,格式为“small 变量名 数值”,仅适用于数字型变量,满足条件则返回1,否则返回0,例如“#IF small D0 10 #act inc D0 1 #ELSEACT sendmsg 6 变量已达到上限”,表示变量D0的值小于10则增加1,否则提示上限。
LARGE (变量) (数值):用于检测变量的值是否大于指定数值,格式为“LARGE 变量名 数值”,仅适用于数字型变量,满足条件则返回1,否则返回0,例如“#IF LARGE D0 20 #act give 金币 1000 #ELSEACT sendmsg 6 变量未达到要求”,表示变量D0的值大于20则发放1000金币。
EQUAL (变量) (数值):用于检测变量的值是否等于指定数值,格式为“EQUAL 变量名 数值”,仅适用于数字型变量,满足条件则返回1,否则返回0,例如“#IF EQUAL D0 15 #act sendmsg 6 恭喜您达成目标,获得特殊奖励! #act give 特殊道具 1”,表示变量D0的值等于15则发放特殊奖励。
checkpkpoint 数值:用于检测玩家的PK值,格式为“checkpkpoint 数值”,玩家PK值大于指定数值则返回1,否则返回0,例如“#IF checkpkpoint 2 #act #say 我们这里不和罪犯做生意!<离开/@exit> #ELSEACT goto @trading”,表示玩家PK值大于2则拒绝交易,否则跳转到交易界面。
CheckLuckPoint 数值:用于检测玩家的幸运值,格式为“CheckLuckPoint 数值”,可设置检测符号(>、<、=),例如“#IF CheckLuckPoint > 7 #act give 幸运项链 1 #ELSEACT sendmsg 6 幸运值不足,无法领取”,表示玩家幸运值大于7则发放幸运项链。
genderman:用于检测玩家性别是否为男性,格式为“genderman”,是男性则返回1,否则返回0,例如“#IF genderman #act hairstyle 1 #ELSEACT hairstyle 5”,表示男性玩家设置发型1,女性玩家设置发型5。
CHECKBAGSIZE 数量:用于检测玩家背包的空格数量,格式为“CHECKBAGSIZE 数量”,背包空格大于等于指定数量则返回1,否则返回0,例如“#IF CHECKBAGSIZE 2 #act give 装备 2 #ELSEACT sendmsg 6 背包空格不足2个,无法领取装备”,表示背包有2个及以上空格可发放2件装备。
checkmagicname 技能名称:用于检测玩家是否已修炼指定技能,格式为“checkmagicname 技能名称”,已修炼则返回1,否则返回0,例如“#IF checkmagicname 烈火剑法 #act sendmsg 6 您已掌握烈火剑法,可前往挑战更强怪物 #ELSEACT sendmsg 6 请先修炼烈火剑法”。
六、玩家状态调整命令
玩家状态调整命令用于修改玩家的外观、性别、职业、技能、属性等状态,实现个性化设置和角色调整,常用命令包括hairstyle、haircolor、changegender、changejob、addskill等。
hairstyle 数值:用于改变玩家的发型,格式为“hairstyle 数值”,不同数值对应不同发型,具体数值对应关系按游戏配置为准,例如“hairstyle 3”表示将玩家发型设置为3号发型,适用于发型兑换、任务奖励等场景。
haircolor 红值 绿值 蓝值:用于设置玩家的头发颜色,格式为“haircolor 红值 绿值 蓝值”,红、绿、蓝三色值的取值范围均为0-255,不同数值组合对应不同颜色,例如“haircolor 255 0 0”表示将头发设置为红色,“haircolor 0 255 0”表示设置为绿色。
changegender:用于改变玩家的性别,格式为“changegender”,无需跟随任何参数,执行后玩家性别将在男、女之间切换,适用于性别转换道具、任务奖励等场景。
changejob 职业名称:用于改变玩家的职业,格式为“changejob 职业名称”,职业名称填写Warr(战士)、Wizard(法师)、Taos(道士),例如“changejob Wizard”表示将玩家职业切换为法师,切换后玩家技能、属性将按新职业重新计算。
addskill 技能名称 技能等级:用于给玩家添加指定技能并设置技能等级,格式为“addskill 技能名称 技能等级”,例如“addskill 火球术 3”表示给玩家添加火球术技能,并将技能等级设置为3级,适用于技能奖励、道具兑换等场景。
delskill 技能名称:用于删除玩家的指定技能,格式为“delskill 技能名称”,例如“delskill 火球术”表示删除玩家的火球术技能,适用于技能重置、任务惩罚等场景。
SKILLLEVEL 技能名称 (=,+,-) 技能等级:用于调整玩家指定技能的等级,格式为“SKILLLEVEL 技能名称 操作符 技能等级”,操作符包括=、+、-,例如“SKILLLEVEL 烈火剑法 + 1”表示将烈火剑法等级提升1级,“SKILLLEVEL 火球术 = 2”表示将火球术等级设置为2级。
SETRANKLEVELNAME 封号:用于调整玩家的封号,格式为“SETRANKLEVELNAME 封号名称”,例如“SETRANKLEVELNAME 传奇战士”表示将玩家封号设置为传奇战士,适用于荣誉奖励、等级提升等场景。
CREDITPOINT (=,+,-) 数量:用于调整玩家的声望点数,格式为“CREDITPOINT 操作符 数量”,操作符包括=、+、-,例如“CREDITPOINT + 10”表示给玩家增加10点声望,“CREDITPOINT = 50”表示将玩家声望设置为50点。
七、商人NPC专用命令
商人NPC专用命令用于实现NPC的买卖、修理等交易功能,通过特定编号快速调用对应交易类型,简化脚本编写,常用编号及对应功能如下,所有编号需配合@段和#say命令使用。
%100:用于设置商品交易价格,%100表示按原价交易,%200表示按双倍价格交易,例如“(@buymedicine) #say 购买药水(原价)\n%100 +0 强效太阳水”,表示按原价出售强效太阳水。
+0:对应购买各种药水,格式为“+0 药水名称”,例如“+0 强效太阳水”“+0 疗伤药”,用于NPC出售各类药水。
+1:对应卖肉,+40:对应买肉,例如“(@meat) #say 肉铺交易\n<买肉/@buymeat> <卖肉/@sellmeat> (@buymeat) #say 购买肉类\n%100 +40 猪肉 (@sellmeat) #say 出售肉类\n+1 猪肉”。
+10:对应买衣服,+11:对应修衣服,例如“(@clothes) #say 服装店交易\n<买衣服/@buyclothes> <修衣服/@repairclothes> (@buyclothes) #say 购买衣服\n%100 +10 布衣 (@repairclothes) #say 修理衣服\n+11 布衣”。
+43:对应武器相关操作(修理、购买),+5:对应修炼武器或买武器,+6:对应修炼武器或卖武器,例如“(@weapon) #say 武器店交易\n<买武器/@buyweapon> <修武器/@repairweapon> <修炼武器/@trainweapon> (@buyweapon) #say 购买武器\n%100 +5 木剑 (@repairweapon) #say 修理武器\n+43 木剑”。
+15:对应购买头盔,+19、+20、+21:对应购买不同类型的项链,例如“+15 青铜头盔”“+19 项链”。
+22:对应买戒指,+23:对应卖戒指,+24:对应买手镯,+26:对应修手镯类、卖手镯,例如“+22 铜戒指”“+23 铜戒指”“+24 铁手镯”。
+3:对应买卷轴、书类,+4:对应卖书类,例如“+3 火球术秘籍”“+4 火球术秘籍”。
+30:对应购买蜡烛等基础道具,+25:对应购买特殊水,+42:对应卖各种药水,例如“+30 蜡烛”“+25 特殊治疗水”“+42 强效太阳水”。
八、常用脚本实操示例
结合以上各类命令,整理3个高频场景的实操脚本示例,可直接套用或修改参数使用,覆盖商店交易、任务奖励、怪物刷新三个核心场景,帮助快速理解命令的组合用法。
示例1:基础商店交易脚本(药水买卖)
(@main) #say 欢迎来到药水商店!\n<购买强效太阳水/@buysun> <出售强效太阳水/@sellsun> <离开/@exit>
(@buysun) #say 强效太阳水(100金币/瓶)\n<购买1瓶/@buysun1> <购买10瓶/@buysun10> <返回/@main>
(@buysun1) #IF checkgold 100 #act take 金币 100; give 强效太阳水 1; goto @buysun #ELSESAY 您的金币不足100,无法购买!<返回/@main>
(@buysun10) #IF checkgold 1000 #act take 金币 1000; give 强效太阳水 10; goto @buysun #ELSESAY 您的金币不足1000,无法购买!<返回/@main>
(@sellsun) #IF checkitem 强效太阳水 1 #act take 强效太阳水 1; give 金币 50; goto @sellsun #ELSESAY 您没有强效太阳水可出售!<返回/@main>
(@exit) #act close
示例2:任务奖励脚本(收集矿石兑换奖励)
(@taskmain) #say 矿石收集任务\n请收集5个铁矿石和3个铜矿,即可兑换奖励!\n<提交任务/@submit> <离开/@exit>
(@submit) #IF checkitem 铁矿石 5; checkitem 铜矿 3 #act take 铁矿石 5; take 铜矿 3; give 金币 5000; give 新手装备 1; sendmsg 6 任务完成,奖励已发放!; goto @taskmain #ELSESAY 您尚未集齐矿石(需5个铁矿石+3个铜矿),请继续收集!<返回/@taskmain>
(@exit) #act close
示例3:怪物刷新脚本(定时刷新白野猪)
(@refreshmon) #act MonGen 白野猪 3 5; sendmsg 6 地图内已刷新3只白野猪,5分钟后将再次刷新!; Delaygoto (Grobal) 300 @refreshmon
(@stoprefresh) #act monclear 当前地图; BreakTimeRecall; sendmsg 6 怪物刷新已停止!
以上就是传奇脚本常用命令的详细讲解,涵盖基础交互、物品操作、地图控制、变量运算、逻辑判断、玩家状态调整、商人NPC专用命令七大核心类别,结合实操示例,可满足大多数游戏场景的脚本搭建需求。所有命令均遵循传奇脚本书写规范,无需复杂配置,按格式填写参数即可生效,实际使用中可根据游戏配置和具体场景,灵活组合各类命令,实现更丰富的游戏功能。

