Features please @chinaboy ?
前言:
本脚本语言和流行的脚本语言相似,但做了一些改动。没有错误处理系统,出错后,直接显示源代码。
一、基本结构:
{INCLUDE 脚本名字}
[@main]
.
.
[@子过程1]
.
.
[@子过程2]
.
.
[end]
0、{INCLUDE 脚本名字}意思为把某脚本的全部内容包含过来,追加到本脚本最后。
1、main和end虽然有时没有也可,但为了保证脚本的万无一失,必须加上。
2、子过程间用空行隔开(两个连续的回车符)。
3、每个子过程是纯文本或者判断语句组成。
4、文本中的回车符用“\”代替,TAB用“_”代替。
5、字体颜色用{FCOLOR/数字}来控制,数字在1--12之间。
6、文本中的链接格式为:<显示的文字/@XXX>,被链接的子过程则为[@XXX]。
8、带输入对话框的链接格式为:<显示的文字/@@XXX>,被链接的子过程则为[@@XXX],输入的量保存在系统变量<$INPUTVAL>中。
9、特殊链接,例如买、卖,存、取,寄售等等
@BUY 买
@SELL 卖
@STORAGE 存
@PREGETBACK 取
@REPAIR 修
@BUYORSELL 寄售商
@EXIT 退出
以下为特修身上的装备(必须佩戴)
0衣服 1武器 2火把 3项链 4头盔 5左手镯 6右手镯 7左戒指 8右戒指 9护身符 10鞋子 11玫瑰
@SREPAIRFUNC0
@SREPAIRFUNC1
@SREPAIRFUNC3
@SREPAIRFUNC4
@SREPAIRFUNC10
@SREPAIRFUNC5
@SREPAIRFUNC6
@SREPAIRFUNC7
@SREPAIRFUNC8
以下为为身上的装备刻字(必须佩戴)
@@WRITE_CLOTHING
@@WRITE_WEAPON
@@WRITE_NECKLACE
@@WRITE_HELM
@@WRITE_LEFTBANGLE
@@WRITE_RIGHTBANGLE
@@WRITE_LEFTRING
@@WRITE_RIGHTRING
@@WRITE_BOOT
10、定时器结构:
timer a b 标签
.
.
end timer
其间间放上要定时执行的语句,a为间隔时间,b为最大寿命,意思是即使你不退出,时间到了就要结束。单位为秒,a的最大值为65秒,b没限制。
示例:
#IF
判断1
判断2
.
.
#ACT
timer 2 180
#!IF
判断1
判断2
.
.
#!ACT
执行1
执行2
.
.
#ELSE
执行1
执行2
.
.
end timer
#ELSE
执行1
执行2
.
.
注意: A) timer和end timer之间的判断执行语句、系统变量和正常判断执行语句、系统变量相比,都多了个!号。
B) end timer之后的语句不能被执行,也就是说一次只有一个timer
C) 标签是可选的,意为timer结束后跳转到哪里。如没有标签,则结束。
D) 执行stoptimer是结束timer,不会执行C)跳转
二、判断语句
#IF
判断1
判断2
.
.
.
#ACT
执行1
执行2
.
.
.
#ELSE(或者#ELSESAY,不过其后只能放文本)
执行1
执行2
.
.
.
(空行,表示过程结束)
1、每个子过程下都能放判断语句,包括main。
2、每个子过程下也可以只放文本,文本可以是多行。
3、#IF后不能有空格,其他也一样。
4、判断语句可以省略#IF,同时也必须省略#ELSE或者#ELSESAY。但是要想执行动作,#ACT不可以省略。
5、每个判断之间为逻辑与关系,即必须同时满足所有条件才能执行#ACT。
6、每个执行依次进行。
三、判断关键词
以下判断都是针对触发脚本的角色来进行的。
1、CHECKBAGITEM 物品名字 数量
检查包袱中物品是否达到数量,如果大于等于,返回真
2、CHECKGOLD 数量
检查金钱是否达到数量,如果大于等于,返回真
3、CHECKSEX 0或者1
检查性别,0表示男,1表示女。如果等于,返回真
4、CHECKJOB 0、1或者2
检查职业,0表示战士,1表示法师,2表示道士。如果等于,返回真
5、CHECKLEVEL 级别
检查是否达到级别,如果大于等于,返回真
6、CHECKPK PK值
检查是否达到一定PK值,如果大于等于,返回真(杀一人PK加100,每分钟减1)
7、CHECKVAR [数值] 数值
检查标记[数值]是否等于某数值,是则返回真。[数值]在0--1000之间,数值在0--9之间
8、EQUAL 变量1 变量2
检查变量1是否等于变量2,是则返回真
9、NOEQUAL 变量1 变量2
与以上相反
10、LESS 变量1 变量2
数值比较,小于
11、MORE 变量1 变量2
数值比较,大于
12、CHECKISMAN 人名
检查某人是否男性
13、CHECKISWOMAN 人名
检查某人是否女性
14、CHECKONLINE 人名
检查某人是否在
15、CHECKREALIVE n
检查转生等级是否超过n
16、CHECKADDVAL
检查是否有升级加点
17、CHECKMAPMON 地图文件名
检查指定地图还有怪物吗
18、CHECKMAPHERO 地图文件名
检查指定地图还有人物吗
19、CHECKMAPEXISTMON 地图文件名 怪物名字
检查指定地图还有指定的怪物吗
20、CHECKGUILD
没加入行会返回“真”
21、CHECKGUILDBOSS
是行会老大返回“真”
22、CHECKSABUKWAR
有人申请了攻城吗
23、CHECKBAGITEM 道具名字 个数
检查包袱里道具是否足够
24、CHECKBODYITEM n
检查身上某部位装备
n=0衣服 1武器 2火把 3项链 4头盔 5左手镯 6右手镯 7左戒指 8右戒指 9护身符 10鞋子 11玫瑰
25、CHECKFAME n
检查名望是否超过n
四、执行关键词
以下执行都是针对触发脚本的角色来进行的。
1、SETVAR [数值] 数值
设置标记,只能从[0]--[2048]
2、MAPMOVE 地图文件 X坐标 Y坐标
地图不是游戏中显示的名字,而是地图文件的名字去掉后缀.map
3、TAKE 物品 数量
从包袱重取走物品
4、GIVE 物品 数量
向包袱中放入物品,包袱满了则不给
5、ADDFAME 数值
增加声望值
6、RELIVE
复活
7、MSG 信息
只向某人发送消息,显示在系统信息区
8、ALLMSG 信息
向所有人发送消息,显示在系统信息区
9、SAY 文本
显示在对话框中,文本不能换行。特别注意:say必须放在一个过程的所有执行关键词之后。
10、EXIT
退出对话框
11、MOB 怪物名字 数量
产生怪物
12、MOBPET 宠物名字 数量
召唤宠物
13、GOTO [@XXX]
跳转
14、CALL 脚本名字 [标签]
调用某脚本中的某标签
15、ASKMARRY 人名
向某人请求结婚
16、ALLOWMARRY 人名
答应某人结婚
17、REALIVE n等级
调到转生n级
18、WAIT 毫秒
19、HEROCLSGRDITEM
清除角色周围地上的物品
20、NPCCLSGRDITEM
清除NPC周围地上的物品
21、REFINEITEM" a b c d e f g ...
升级物品,具体见“提高命令详解.DOC”
22、REFINEITEMATOM x y
改变道具攻击元素类型x及数值y
x: 1 --7 y: 1 -- 127
23、TAKEW 位置
拿走身上装备
24、ADDFAME n
增加名望
25、ADDEXP n
增加经验,n不宜过大
26、MSG xxxxxxxxx
右下角红字,只发送给本人
27、ALLMSG xxxxxxxxx
右下角红字,发送给所有人
28、NPCSAY xxxxxxxxx
NPC说话,本地图、近距离才听到
29、MOBSELF
带自己的小号,相当于宠物
30、STOPTIMER
停止脚本定时器
31、ALLOWSABUKWAR
32、ASKSABUKWAR
查询攻城战役
33、SABUKDOOR
控制城门
34、BUILDGUILD
创建行会
35、REPARESABUKDOOR
老大修理沙巴克城门
36、SET 变量 值
给变量赋值,其中“值”可以为系统变量、自定义变量、脚本变量。如果给字符型变量赋一个字符串值,字符串要用单引号''括起来。
37、MOV 变量 值
给数值型变量,累加一个数值
五、系统变量
以下变量都是由触发脚本的角色决定的。
1、<$NPCNAME>:被点击的NPC的名字
2、<$USERNAME>:当前操作角色
3、<$USERLEVEL>:当前操作角色的级别
4、<$USERLUCKY>:当前操作角色的幸运值
5、<$USERPK>:当前操作角色的犯罪值
6、<$USERIP>:当前操作角色的IP地址
7、<$DATE>:服务器年月日
8、<$TIME>:服务器时分秒
9、<$RUNTIME>:服务器运行时间
10、<$INPUTVAL>:输入对话框输入的字符
11、相信以下大家自己看得懂:
<$NPCNAME>
<$USERNAME>
<$USERLEVEL>
<$USERLUCKY>
<$USERPK>
<$USERIP>
<$USERFAME>
<$USEGUILD>
<$USERSUBHUMAN>
<$USERMAP>
<$USERX>
<$USERY>
<$USERHOMEMAP>
<$USERHOMEX>
<$USERHOMEY>
<$YEAR>
<$MONTH>
<$DAY>
<$WEEK>
<$DATE>
<$TIME>
<$HOUR>
<$MINUTE>
<$SECOND>
<$RUNTIME>
<$SABUKGUILD>
<$SABUKGUILDBOSS>
<$SABUKGOLD>
<$INPUTVAL>
<$RESUMEHP>
<$RESUMEMP>
<$DODGEMAG>
<$DODGEPOS>
<$RESUMEPOS>
<$RELIVELVL>
<$RANDOM> 10以内随机数
<$SUBHUMAN> 配偶
<$FACEDMAN> 对面站着的人
六、自定义变量
1、变量名字中不能出现下列字符:{、}、[、]、<、>、/、&、=、@、#
2、不用定义,不区分大小写,不能以数字开头。
3、无论在什么地方出现,都是在整个脚本范围内有效。
4、要想读出自定义变量,需要用{}把变量括起来。
5、人物下线,该人物的所有变量请零。
七、函数
1、有返回值的函数:形同系统变量,格式为<$函数名字(输入值)>
2、子过程:形同链接跳转,格式为 <标签名字/@子过程名字(变量0,变量1,变量2,……)>,子过程为[@子过程名字()],变量0,变量1,变量2,……分别存储在<$ARG(0)>,<$ARG(1)>,<$ARG(2)>,……
[D401]
1/20 黑铁
1/16 金矿
1/16 银矿
1/16 铜矿
[D402]
1/20 黑铁
1/16 金矿
1/16 银矿
1/16 铜矿
wheres its GM commands ^.^
Yeah were are these and anyway to manipulate them to English?Game Master Commands
@传唤
@踢出
@金币
@调级
@移动
@生产
@产怪
@召唤
where we can find this command ?
C:\VB程序\传奇3G145服务器\NPC\NPCScript\系统脚本.txt
Line 291: execcmd @传唤 <$ARG(0)>