逍遥MIR 发表于 2024-7-13 20:14:18

传奇SF脚本中的一些变量介绍和解释

我们子啊进行传奇私服的服务器基本宾谢的时候需要注意到是亲中的变量关系,毕竟这就是一个剧本蝴蝶效应一般的程序,要是我们在编写脚本的时候出现些微的差错那么引来的后果就是让我们的服务器出现惊人的问题。甚至最大的可能就是让我们的服务器维持不下去而不得不关服,我想没有一个私服GM会愿意有这样的问题出现,所以我们就需要把这些有关变量和命令名的解释和教程。
脚本教程:变量、命令名的解释
【变量属性】


『属性说明』:该变量有下线、重新启动均不消失的强记录性。保存在hum.db(还是在mir.db记不太清
楚。望高手指正)该变量只有2种状态。1和0
『用法』:因为该变量记录性比较强。而且如果产生读写操作时的操作不是很大。所以作为记录一些人
物的下线后需要保留的数据的话作用十分大,大部分任务时常用到他。但是该变量值只有1和0的两种状态。而
且根据M2不同,其个数也不相同。建议您一定要活用变量,尽量避免浪费该变量。
P(0-9)
『属性说明』:该变量只对当前对话NPC内有效果。如果中途点其他NPC或者对话产生close、关闭时所有P变量
均归0。该变量取值范围:(0-?)根据M2最大值不同
『用法』:该变量没有NPC间传递性作为临时变量多重复使用效果十分好。而且因为脚本命令有对该变量进行加
/减/赋值/随机取值等运算,他和goto的配合可以使脚本中出现仿for循环的效果。并且因为他不传递的性质其
随机取值也能与RANDOM媲美。
D(0-9)
『属性说明』:该变量在人物不下线时对全局NPC通用传递。该变量取值范围:同P变量
『用法』:既有像变量一样的人物属性私有变量的效果又有像P变量一样的运算功能!唯一不足就是下线


后该变量会被清空。可是如果配合上变量或者namelist变量的记录性。实在是功能强大的个人隐私属性!
不过本人无端的猜测该变量与P变量是保存在客户端内存的:)无任何根据如果不是请当个玩笑
G(0-9)
『属性说明』:该变量不属于人物属性范围,对于全内该变量唯一并且全局NPC通用传递。该变量取值
范围:同P变量
『用法』:这个变量是唯一的一个不属于任何人物而属于的变量,该变量通过任何人的运算均产生效果
。而且不保存在任何人的属性中。(好象是在mir.db?望高手指正)但是需要注意关闭后该变量清空,目
前尚需要通过综合namelist或者变量后才可以使其保存。
Namelist.txt
『属性说明及用法』:他为什么也属于一个变量,因为他的工作方式与变量一样,而且由于是直接对硬盘的读
写反更牢*一些。而且他的实现也很特殊,没有取值范围的限制,只有自己的名字记录在任意的文本内,具体
操作起来还很容易。作为变量的扩展起了不可替代的作用。而且有些M2的功能还需要这些的变量进行扩展。所
以该变量的应用和功能实在需要加强。
★友情提示您:该变量的操作请适可而止,如果在同一时间内进行大量的硬盘读/写/查找/检测/操作是对
稳定性和硬件极大的伤害!因为该变量只针对人物有效。如果某个命令需要进行大量的namelist操作的 织梦内容管理系统
话。那许多人同时进行该命令的时候实在不能说不是对的一个严峻的考验。
■此处仅代表个人意见:脚本的功能大体是一种简易汇编语法具体操作的累积。而活用这些变量是脚本精
华所在,脚本基础命令是一些简单针对这些变量的操作,优秀的脚本系统是通过这些变量和命令编写出来的功
能。而后来所添加的脚本命令大部分是独立的功能,如果这样下去功能固然无限的增多,但是M2却也在无限的
增大。所以建议FTSM多开发和完善M2,n那是脚本发展之福。
以下为脚本命令的解释
【检测后缀命令】
此属性命令为#IF后#ACT前,作为检测是否为真的命令。
〖CHECK 1/0〗 查看人物指定的变量是否为1/0。如果为真则通过至#act
〖RANDOM (1-?)〗 随机一个数字,根据后边的数字判定当前通过至#act的几率。
★注意这里有一些用法错误。★
错误一:
#if
RANDOM 3
#act
goto 1
break
#if
RANDOM 3
#act
goto 2
break
#if
RANDOM 3
#act
goto 3
break
很多人认为random的具体运行是首先在3以下随机取一个值,然后该脚本内的random 3都不再取值了。那样理解
的时候goto 1、2、3的几率是相等的,都是1/3。这是一个理解上的错误,实际这里运行的操作是这样的,到达
1的几率为1/3,到达2的几率为先2/3然后1/3就是2/9。而到达3的几率则为2/3然后2/3然后1/3实际几率为4/27
!同样错误的还有如下写法
#if
RANDOM 3
#act
goto 1
#elseact
#if
RANDOM 3
#act
goto 2
#elseact
#if
RANDOM 3
#act
goto 3
#elseact
close
错误二:
#if
RANDOM 3
#act
goto 1
break
#if
RANDOM 2
#act
goto 2
break
#if
RANDOM 1
#act


goto 3
break
有人认为在第一个random的时候会给一个隐藏的值在3以下做一个赋值。然后以后的random就是检测是否自己的
random值和这个隐藏值相同,如果相同则#act。这个也是一种错误理解,虽然同是对random理解错误造成的,
但是该错误与错误一理解上是不同的。但是这种随机的设计方式是提倡的,利用P变量的随机取值是可以完成的
。具体随机的用法请查看【天笑脚本教程示例:随机处理系统】
〖EQUAL〗(变量)(数值)测试指定变量的值是否等于该命令指定值,可惜的是此处无法用PDG等变量,只能用数字常量!强烈建议Jacky添加该功能。
〖LARGE〗(变量)(数值)测试指定变量的值是否大于该命令指定值,同样非常可惜该数值只能为常量。
〖SMALL〗(变量)(数值)测试指定变量的值是否小于该命令指定值,同样非常可惜该数值只能为常量。
〖GENDER 〗(man/woman)检测是否为男/女
〖hour/min〗(时间1)(时间1)检测当前时间(小时/分钟)是否为时间1与时间2之间。
〖CHECKLEVEL〗(数值)测试等级数量是否大于该命令指定值,同样非常可惜该数值只能为常量。
〖CHECKJOB〗(职业)测试对话职业是否为指定职业,其后缀的根据M2不同而不同基础M2为:Warr, Wizard, Taos。
〖CHECKITEM〗(物品名称)(数量)查看人物背包中是否指定物品名称的数量是否大于该命令指定值,该数量不写默认为1既检测有没有该物品。同样非常可惜该数值只能为常量。
〖CHECKITEMW〗(物品名称)(数量)查看人物所佩带装备中是否指定物品名称的数量是否大于该命令指定值,该数量不写默认为1既检测有没有该物品。同样非常可惜该数值只能为常量。
〖CHECKGOLD〗(数值)测试金币数量是否大于该命令指定值,同样该数值只能为常量。
〖ISTAKEITEM〗(物品名称)检测刚刚取下的物品是否指定物品名称。
〖CHECKDURAEVA〗(物品名)(数值)查看人物背包中是否指定的物品名称的持久是否大于该命令指定值,该数量不写默认为1既检测有没有该物品。同样非常可惜该数值只能为常量。
〖DAYOFWEEK〗(星期数)查看当天是否为指定的星期数量。
〖CHECKPKPOINT〗(数值)测试PK值是否大于该命令指定值。
〖CHECKLUCKYPOINT〗(数值)测试幸运值是否大于该命令指定值。
〖CHECKMONMAP〗(地图名)(数值)测试指定的地图名中的怪物数量是否大于该命令指定值。同样非常可惜该数值只能为常量。
〖CHECKHUM〗(地图名)(数值)测试指定的地图名中的人物数量是否大于该命令指定值。同样非常可惜该数值只能为常量。
〖CHECKBAGGAGE〗测试背包是否满了
〖CHECKNAMELIST〗[路径](文件名)检测指定路径下文件名的文件内是否有该玩家当前人物名称。
〖CHECKIPLIST〗[路径](文件名)检测指定路径下文件名的文件内是否有该玩家当前IP地址。
#〖CHECKMARRYED〗检测当前对话人物是否结过婚。
#〖CHECKGUILDMASTER〗检测当前对话人物是否属于行会掌门。
#〖CHECKOFGUILD〗(行会名)检测当前对话人物是否属于指定行会。
#〖CHECKGUILDOFSBK〗检测当前对话人物所属于行会是否为沙。
#〖CHECKATTACKSBKGM〗检测当前对话人物所属于行会是否为当前攻沙行会。


#〖CHECKACCOUNTLIST〗[路径](文件名)检测指定路径下文件名的文件内是否有该玩家当前帐号。
#〖CHECKPAYMENT〗检测当前对话人物是否充值。
#〖CHECKBBCOUNT〗(数值)检查人物所带宝宝数量。
#〖CHECKCREDITPOINT〗(数值)检查当前人物的声望是否大于命令指定数值。
#〖EXECHECK NAMEIPLIST〗[路径](文件名)检测指定路径下文件名的文件内该玩家人物名称后的IP是否与当前登陆IP相同。
#〖EXECHECK DIR〗检查当前人物对面方向站的人物方向是否正确,多用于结婚。
#〖EXECHECK DIR 1〗检查当前人物对面方向站正确方向的人物是否与当前人物性别一致。多用于结婚。
#〖EXECHECK DIR 2〗检查当前人物对面方向站正确方向的人物是否与当前人物性别不同。多用于结婚。
#〖EXECHECK POSTLEVEL〗(数值)检查当前人物对面方向站正确方向的人物的等级是否大于命令指定数值。
#@〖CHECKGUILDLIST〗[路径](文件名)检测指定路径下文件名的文件内该玩家所属行会名称是否存在。
#@〖ISADMIN〗检查当前人物是否为管理员。
#@〖HAVEGUILD〗检查当前人物是否加入了行会。
#@〖ISCASTLEGUILD〗检测当前对话人物是否属于沙。
#@〖ISCASTLEMASTER〗检测当前对话人物是否为沙掌门。
#@〖ISGUILDMASTER〗检测当前对话人物是否为行会的掌门。
#@〖ISNEWHUMAN〗检测当前对话人物是否为刚注册第一次进入。
#@〖CHECKSLAVECOUNT〗[控制符](数值)检查当前人物所带宝宝数量是否[>、=、、=、、=、、=、、=、、=、、=、、=、、=、、=、、=、、=、、=、、=、<]指定的数值。
〖CHECKMONAREA〗未知
〖CHECKOPEN〗未知
〖CHECKUNIT〗未知 dedecms.com
以上就是我们相关的脚本变量的教程和解释这点玩家们一定要记住,其中也有给大家说明了一些由于理解上出现的错误,只要我们认真的把以上的内容研究一边我想是没有多少问题的。但是在对脚本写入的时候还是要留意其中各个脚本代表的意思,因为很多的内容看上去都是似是而非的,我们要输不认真解读的话还真的难免会出现一些让人以错误的方法编写。
页: [1]
查看完整版本: 传奇SF脚本中的一些变量介绍和解释