一文读懂传奇脚本命令,轻松玩转游戏脚本

来源: 作者: 点击:
在传奇游戏的世界里,脚本命令是构建丰富游戏体验的关键元素。无论是创建任务、设置NPC交互,还是控制游戏中的各种事件,脚本命令都发挥着不可或缺的作用。对于想要深入了解游戏机制、甚至进行游戏修改和扩展的玩家来说,掌握脚本命令至关重要。下面,我们就来详细讲解一些常见且重要的传奇脚本命令。
一、基础命令
(一)段定义与跳转
(@段):段用英文或数字表示,它是脚本中的一个标记,用于将脚本划分为不同的部分,方便管理和调用。例如(@main)通常可作为主程序段的开始标记。
goto@段:这个命令的作用是跳转到指定的段并开始执行该段的脚本内容。类似于编程语言中的goto语句,它能让脚本的执行流程发生改变。比如在一个复杂的任务脚本中,当满足某个条件后,使用goto@reward跳转到奖励发放的代码段。
(二)对话与输出
#say语句:用于在游戏中向玩家显示一段文本内容。语句设定为字符,无需添加任何定界符。例如#say“欢迎来到传奇世界,勇士!”,当玩家触发相关脚本时,就会看到这样的提示信息。
#elsesay语句:通常与#IF条件判断配合使用。当#IF后的条件不成立时,就会执行#elsesay后面的语句内容。比如#IFcheckitem金币100,#ACTtake金币100,#elsesay“你的金币不足100”,当玩家金币不足100时,就会显示“你的金币不足100”的提示。
(三)动作执行
#act执行命令:这里的执行命令需符合游戏系统3.0规定的已定义命令。它可以完成各种操作,如给玩家物品、传送玩家等。例如#actgive生命药水5,就是给玩家5个生命药水。
#call调用子程序命令:一般用于调用QuestDiary文件夹下的子程序命令。比如#CALL(\任务\主线任务.txt)@start,表示调用D:\MirServer\Mir200\Envir\QuestDiary\任务文件夹下的主线任务.txt文件中的@start代码段。
二、物品与地图相关命令
(一)物品操作
give物品数量:给予玩家指定数量的物品。这里的物品可以是武器、药水、装备等游戏物品数据库中已有的物品,甚至包括金币。例如give裁决之杖1,会给玩家1把裁决之杖。
take物品数量是否检测装备改名(0或空:不检测,1:检测):与give命令相反,它是从玩家处收回指定数量的物品。比如take魔法药水3,表示从玩家身上拿走3个魔法药水。当需要检测装备是否被改名时,若设置为1,则会进行检测,若装备被改名可能无法正常收回,若设置为0或留空则不检测装备改名情况。
(二)地图操作
map地图名:将玩家移动到指定的地图,并随机传送到该地图的某个坐标位置。地图名一般为地图对应的数字代码,例如map3,会将玩家随机传送到编号为3的地图。
mapmove地图名坐标A坐标B范围:同样是传送玩家到指定地图,但这次是传送到指定的坐标位置。坐标A和坐标B确定了目标坐标点,范围参数若留空或者设为0,则为定点传送;若设置了范围值,则会在以该坐标为中心,指定范围的区域内随机传送玩家。例如mapmove510020010,表示将玩家传送到编号为5的地图上,坐标(100200)周围10范围内的某个随机点。
monclear地图名:清除指定地图上刷新的所有怪物。比如monclear7,会将编号为7的地图上的怪物全部清除。
MonGen怪物名称数量时间:在游戏中按照设定刷新怪物。怪物名称为游戏怪物数据库中已有的怪物名字,数量指定刷新怪物的数量,时间表示每隔多久刷新一次怪物。例如MonGen半兽人1060,表示每隔60秒在当前位置刷新10个半兽人。
三、时间与特殊效果命令
(一)时间限制
TimeRecall数值:数值的单位为分钟,用于定义玩家进入某个区域或执行某个操作的时间限制。例如TimeRecall30,表示玩家进入相关区域后,30分钟后会被传送回原来的位置。
BreakTimeRecall:用于中断由TimeRecall语句设定的时间限制。比如玩家在规定时间内完成了特殊任务,就可以使用这个命令中断时间限制,防止玩家被强制传送。
(二)特殊效果
hairstyle数值:可以改变玩家角色的头发类型。数值对应不同的发型样式,通过调整数值,玩家可以尝试不同的发型效果。
haircolor红值绿值蓝值:用于设定玩家角色头发的颜色。红值、绿值、蓝值的取值范围为0-255,通过组合不同的RGB值,可以得到各种颜色。例如haircolor25500,会将头发颜色设置为红色。
close:用于关闭当前打开的对话框。当玩家完成与NPC的对话,或者某个操作完成后需要关闭对话框时,就可以使用这个命令。
四、变量与常量相关命令
(一)变量定义与操作
变量在传奇脚本中用字母表示,名称只限于P0-P9、D0-D9等。例如P0、D5等都可以作为变量名。
mov变量赋值:用于给变量赋值。例如MOVN01,就是将变量N0赋值为1。
inc变量相加:让变量自动加上指定的数值。类似编程语言中的x=x+n,例如incN05,会使变量N0的值在原有基础上增加5。
DEC变量相减:与inc相反,是让变量减去指定的数值。如DECN03,会使变量N0的值减少3。
MUL变量相乘:用于变量与指定数值相乘。例如MULN02,会将变量N0的值乘以2;也支持MULN01002这种形式,即先将N0乘以100,再乘以2(注意不支持字符串变量)。
DIV整除变量:实现变量与指定数值的整除运算。例如DIVN02,会将变量N0的值除以2并取整;同样支持DIVN01002这种形式(不支持字符串变量)。
sum变量A变量B:用于变量求和。使用时需要配合其他语句,例如MOV变量X0(给变量X赋初值0),sum变量A变量B(X=A+B),sum变量C(X=X+C),最终程序中得到的X值为A+B+C。若只写sum变量A变量B这一句是无意义的,会导致错误。
movr变量数值:定义一个随机变量,变量值范围是“0到数值”,但不包含数值本身。例如movrS110,会给变量S1赋一个0到9之间的随机值。
(二)变量测试
SMALL(变量)(数值):测试变量是否小于指定数值。如果变量小于指定数值,则返回结果为1,否则为0。例如SMALL(N0)5,若N0的值小于5,结果为1,否则为0。
LARGE(变量)(数值):测试变量是否大于指定数值。变量大于指定数值时返回1,否则为0。如LARGE(N0)10,当N0的值大于10时,结果为1,否则为0。
EQUAL(变量)(数值):测试变量是否等于指定数值。变量等于指定数值时返回1,否则为0。例如EQUAL(N0)3,若N0的值为3,结果为1,否则为0。
random数值:用于生成一个随机概率判断。当生成的随机数等于数值时返回1,否则为0。例如random1,概率为100%(因为无论随机数是多少,总会有等于1的情况);random2,概率为50%(随机数有一半的可能性等于2);random4,概率为25%(随机数有四分之一的可能性等于4)。
**<\(STR(变量)>**:用于在游戏中显示变量的值。通常用在#say后面,将变量值以文本形式展示给玩家。例如#say“你的等级是:<\)STR(D0)>”,如果D0存储的是玩家等级,那么玩家就会看到自己的等级显示在提示信息中。
五、逻辑判断语句
(一)基本逻辑变量与设置
(n):n为任何正整数,它是一个逻辑变量,有0值和1值,初始值为0,并且是私人变量,即每个玩家都有自己独立的该变量。
#IF条件--执行:条件判断的开始标识,当条件成立时,执行#ACT后面的操作。例如#IFcheckitem金币500,#ACTtake金币500,当玩家拥有500金币时,就会执行拿走500金币的操作。
#ELSEACT否定--执行:与#IF配合使用,当#IF后的条件不成立时,执行#ELSEACT后面的操作。比如#IFchecklevel30,#ACTmapmove高级地图,#ELSEACT#say“你的等级不足30,无法进入”,当玩家等级不足30时,就会显示“你的等级不足30,无法进入”的提示。
SET(n)1:设置逻辑变量(n)为真,即将其值设为1。例如在一个任务脚本中,当玩家完成某个步骤后,使用SET(100)1,将逻辑变量100设置为1,用于后续的条件判断。
Check(n)1:测试逻辑变量(n)是否为真,即是否为1。可以用于测试玩家是否完成了某个任务步骤等情况。比如在后续脚本中#IFCheck(100)1,#ACTgive任务奖励,当逻辑变量100为1时,就会给玩家发放任务奖励。
(二)其他条件判断
small变量数值:与SMALL(变量)(数值)类似,如果“变量<数值”则返回1,否则为0。例如smallN08,当N0的值小于8时返回1,否则为0。
large变量数值:如果“变量>数值”则返回1,否则为0。如largeN015,当N0的值大于15时返回1,否则为0。
equal变量数值:如果“变量=数值”则返回1,否则为0。例如equalN010,当N0的值为10时返回1,否则为0。
checkjobWarr(Wizard、Taos):用于测试玩家的职业。如果玩家职业是战士(Warr)、法师(Wizard)或道士(Taos)中的对应职业,则返回1,否则为0。例如checkjobWarr,当玩家是战士时返回1,其他职业返回0。
checkgold数值:检测玩家拥有的金币数量是否大于等于指定数值。若满足条件返回1,否则为0。比如checkgold1000,当玩家金币数大于等于1000时返回1,否则为0。
checklevel数值:检测玩家的人物等级是否大于等于指定数值。满足条件返回1,否则为0。如checklevel40,当玩家等级大于等于40时返回1,否则为0。
checkitem物品数值:测试玩家拥有指定物品的数量是否达到指定数值。例如checkitem太阳水10,当玩家拥有10个或更多太阳水时返回1,否则为0。
genderman:测试玩家性别是否为男。如果是男性玩家则返回1,否则为0。
CHECKBAGSIZE数量:检测玩家背包的空格数量是否大于等于指定数量。例如CHECKBAGSIZE5,当背包空格数大于等于5时返回1,否则为0。
checkpkpoint数值:检测玩家的PK值是否大于指定数值。例如checkpkpoint10,当玩家PK值大于10时返回1,否则为0。
CheckLuckPoint数值:检测玩家的幸运值,通过检测符号(><=)与指定数值进行比较。比如CheckLuckPoint>5,当玩家幸运值大于5时返回1,否则为0。
checkmonmap地图名数值:检测指定地图上的怪物数量是否达到指定数值。例如checkmonmap新手村地图50,当新手村地图上怪物数量达到或超过50时返回1,否则为0。
checkduraeva物品名数值:测试具有品质的物品(如矿物等)的品质是否达到指定数值。例如checkduraeva金矿80,当金矿品质达到或超过80时返回1,否则为0。
checkhum地图名数值:测试指定地图上的玩家人数是否达到指定数值。例如checkhum沙巴克城200,当沙巴克城玩家人数达到或超过200时返回1,否则为0。
checkitemw物品:检测玩家身上是否佩戴了指定物品。若佩戴则返回1,否则为0。
takew物品:直接从玩家身上回收指定物品,无需检测物品数量,只要玩家身上有该物品即可回收。
checkmagicname技能名称:检测玩家是否已经修炼了指定的技能。例如checkmagicname烈火剑法,当玩家修炼了烈火剑法技能时返回1,否则为0。
这些传奇脚本命令涵盖了游戏中的各个方面,从基本的对话、物品管理,到复杂的逻辑判断和地图操作。通过合理运用这些命令,你可以创建出丰富多彩的游戏内容,无论是制作独特的任务、设计有趣的NPC交互,还是构建复杂的游戏系统,都能得心应手。希望这篇讲解能帮助你更好地理解和运用传奇脚本命令,在游戏开发和修改的道路上迈出坚实的步伐。
[顶部]