传奇脚本基于事件驱动,通过#IF、#ACT等命令控制游戏逻辑。以下是脚本核心结构与常用命令的详细说明,可直接用于编写NPC对话、任务或功能脚本。
一、脚本基础框架与流程控制
所有脚本都遵循“条件判断→执行动作→跳转对话”的结构,主要标签如下:
•#IF:表示“如果”,用于判断条件是否成立。可并列多个条件,用空格分隔表示“与”,用#OR分隔表示“或”。
•#ACT:表示“则执行”,当#IF条件全部满足时,执行其后的命令。
•#SAY:输出文本内容,通常配合#IF使用,当条件满足时显示对话。
•#ELSESAY:与#IF配合,当#IF条件不满足时,执行此处的对话。
•Break:结束当前脚本段,防止命令顺序执行。
示例:简单的元宝检测与扣费
#IF
CheckGameGold>99;检测元宝是否大于99
#ACT
TakeGameGold100;扣除100元宝
Give屠龙1;给予屠龙一把
SendMsg5“购买成功!”
#ELSESAY
你的元宝不足100个,无法购买屠龙。\\
\<返回/@main>
二、人物属性检测命令
检测玩家当前的状态或数值,通常放在#IF后面。
命令格式作用说明示例
CheckLevel检测人物等级CheckLevel>34(等级大于34)
CheckJob检测职业CheckJobWarrior(是否为战士)
CheckGold检测金币数量CheckGold1000000(金币是否≥100万)
CheckGameGold检测元宝数量CheckGameGold500(元宝是否≥500)
CheckItem检测背包物品CheckItem金条1(是否有1个金条)
CheckBagSize检测背包空位CheckBagSize5(空位是否≥5)
CheckLuck检测幸运值CheckLuck>6(幸运是否大于6)
三、物品与货币操作命令
执行给予、扣除、消耗等操作,通常放在#ACT后面。
命令格式作用说明示例
Give给予物品Give裁决之杖1(给1把裁决)
Take扣除物品Take沃玛号角1(收回1个号角)
AddGold增加金币AddGold1000000(增加100万金币)
TakeGold扣除金币TakeGold500000(扣除50万金币)
GameGold增加元宝GameGold+50(增加50元宝)
TakeGameGold扣除元宝TakeGameGold200(扣除200元宝)
GiveEx给予绑定物品GiveEx绑定金币1000000
四、实用功能命令
实现传送、广播、技能学习等常见功能。
命令格式作用说明示例
MapMove地图传送MapMove3330330(传送到土城坐标)
MonClear清理当前地图怪物MonClear(清场)
Param1设置变量MOVP11(设置变量P1=1)
#CALL调用外部脚本#CALL[\任务\初级任务.txt]@任务开始
SendMsg发送消息SendMsg5“欢迎来到沙巴克!”
AddSkill学习技能AddSkill半月弯刀(学习半月技能)
ChangeExp增加经验ChangeExp+1000000(增加100万经验)
五、综合脚本实例
以下是一个完整的NPC脚本,包含条件判断、物品交换和随机奖励。
[@main]
欢迎来到装备回收站。\\
用**祖玛装备x3**可兑换**100元宝**,有几率额外获得**祝福油**。\\
\<兑换/@兑换祖玛>\<离开/@exit>
[@兑换祖玛]
#IF
CheckItem绿色项链3
CheckItem紫碧螺3
CheckItem泰坦戒指3
#ACT
Take绿色项链3
Take紫碧螺3
Take泰坦戒指3
GameGold+100
MOVRN$随机数100
#IF
SMALLN$随机数20
#ACT
Give祝福油1
SendMsg5“兑换成功n外获得祝福油。”
#ELSESAY
兑换成功,获得100元宝。\\
\<返回/@main>
#ELSESAY
祖玛装备数量不足,每种都需要3个。\\
\<返回/@main>
关键点解析:
1.MOVRN$随机数100:生成一个0-99的随机数,赋值给变量N$随机数。
2.SMALLN$随机数20:判断变量是否小于20,即20%概率。
六、脚本存放与调试
1.存放路径:NPC脚本在MirServer\Mir200\Envir\Market_Def目录,文件名对应Merchant.txt中的NPC编号。
2.编码格式:必须使用ANSI编码保存,否则游戏内显示乱码。
3.调试方法:修改脚本后,在M2引擎控制台点击“重新加载NPC”即可生效,无需重启服务器。若报错,检查命令拼写、参数数量及变量格式。
一、脚本基础框架与流程控制
所有脚本都遵循“条件判断→执行动作→跳转对话”的结构,主要标签如下:
•#IF:表示“如果”,用于判断条件是否成立。可并列多个条件,用空格分隔表示“与”,用#OR分隔表示“或”。
•#ACT:表示“则执行”,当#IF条件全部满足时,执行其后的命令。
•#SAY:输出文本内容,通常配合#IF使用,当条件满足时显示对话。
•#ELSESAY:与#IF配合,当#IF条件不满足时,执行此处的对话。
•Break:结束当前脚本段,防止命令顺序执行。
示例:简单的元宝检测与扣费
#IF
CheckGameGold>99;检测元宝是否大于99
#ACT
TakeGameGold100;扣除100元宝
Give屠龙1;给予屠龙一把
SendMsg5“购买成功!”
#ELSESAY
你的元宝不足100个,无法购买屠龙。\\
\<返回/@main>
二、人物属性检测命令
检测玩家当前的状态或数值,通常放在#IF后面。
命令格式作用说明示例
CheckLevel检测人物等级CheckLevel>34(等级大于34)
CheckJob检测职业CheckJobWarrior(是否为战士)
CheckGold检测金币数量CheckGold1000000(金币是否≥100万)
CheckGameGold检测元宝数量CheckGameGold500(元宝是否≥500)
CheckItem检测背包物品CheckItem金条1(是否有1个金条)
CheckBagSize检测背包空位CheckBagSize5(空位是否≥5)
CheckLuck检测幸运值CheckLuck>6(幸运是否大于6)
三、物品与货币操作命令
执行给予、扣除、消耗等操作,通常放在#ACT后面。
命令格式作用说明示例
Give给予物品Give裁决之杖1(给1把裁决)
Take扣除物品Take沃玛号角1(收回1个号角)
AddGold增加金币AddGold1000000(增加100万金币)
TakeGold扣除金币TakeGold500000(扣除50万金币)
GameGold增加元宝GameGold+50(增加50元宝)
TakeGameGold扣除元宝TakeGameGold200(扣除200元宝)
GiveEx给予绑定物品GiveEx绑定金币1000000
四、实用功能命令
实现传送、广播、技能学习等常见功能。
命令格式作用说明示例
MapMove地图传送MapMove3330330(传送到土城坐标)
MonClear清理当前地图怪物MonClear(清场)
Param1设置变量MOVP11(设置变量P1=1)
#CALL调用外部脚本#CALL[\任务\初级任务.txt]@任务开始
SendMsg发送消息SendMsg5“欢迎来到沙巴克!”
AddSkill学习技能AddSkill半月弯刀(学习半月技能)
ChangeExp增加经验ChangeExp+1000000(增加100万经验)
五、综合脚本实例
以下是一个完整的NPC脚本,包含条件判断、物品交换和随机奖励。
[@main]
欢迎来到装备回收站。\\
用**祖玛装备x3**可兑换**100元宝**,有几率额外获得**祝福油**。\\
\<兑换/@兑换祖玛>\<离开/@exit>
[@兑换祖玛]
#IF
CheckItem绿色项链3
CheckItem紫碧螺3
CheckItem泰坦戒指3
#ACT
Take绿色项链3
Take紫碧螺3
Take泰坦戒指3
GameGold+100
MOVRN$随机数100
#IF
SMALLN$随机数20
#ACT
Give祝福油1
SendMsg5“兑换成功n外获得祝福油。”
#ELSESAY
兑换成功,获得100元宝。\\
\<返回/@main>
#ELSESAY
祖玛装备数量不足,每种都需要3个。\\
\<返回/@main>
关键点解析:
1.MOVRN$随机数100:生成一个0-99的随机数,赋值给变量N$随机数。
2.SMALLN$随机数20:判断变量是否小于20,即20%概率。
六、脚本存放与调试
1.存放路径:NPC脚本在MirServer\Mir200\Envir\Market_Def目录,文件名对应Merchant.txt中的NPC编号。
2.编码格式:必须使用ANSI编码保存,否则游戏内显示乱码。
3.调试方法:修改脚本后,在M2引擎控制台点击“重新加载NPC”即可生效,无需重启服务器。若报错,检查命令拼写、参数数量及变量格式。

