变量类型

 

变量分为  个人变量   全局变量   它们两个都有字符型(中英文数字)和数字型(数字)

 

 

G0-G999 (全局变量,数字型) 可保存。(存放在Mir200/GlobalVal.ini文件里面)

A0-A999 (全局变量,字符型) 可保存。(存放在Mir200/GlobalVal.ini文件里面)

I0-I999 (全局变量,数字型) 服务器重启归0

 

U0-U499 (私人变量,数字型) 可保存。(存放在人物数据库Mir.db里面)

T0-T499 (私人变量,字符型) 可保存。(存放在人物数据库Mir.db里面)

J0-J499 (私人变量,数字型) 可保存。(存放在人物数据库Mir.db里面)

Z0-Z499 (私人变量,字符型) 可保存。(存放在人物数据库Mir.db里面)

 

 

N0-N999 (私人变量,数字型) 下线不保存.小退归0.

S0-S999 (私人变量,字符型) 下线不保存.小退清空.

 

N$扩展变量 (私人变量,数字型) 下线不保存.小退归0.  扩展变量名称尽量不要以数字开头

S$扩展变量 (私人变量,字符型) 下线不保存.小退清空. 扩展变量名称尽量不要以数字开头

 

 

P0-P999 (私人变量,数字型) 打开对话框重置为0。

D0-D999 (私人变量,数字型) 下线不保存.摇筛子变量.

M0-M999 (私人变量,数字型) 下线不保存.切换地图清空.

 

 

变量输出格式    <$STR(变量名称)>    输出之后显示输出的值

 

 

①.变量赋值

 

MOV  G100 10

MOV  A100  搜服一百

 

MOVR G100 1 100

MOVR G100 100

 

②.变量检测

 

LARGE N3 0   大于  只能用于数字型变量检测

 

SMALL N3 10  小于  只能用于数字型变量检测

 

EQUAL N3 5   等于  可用于数字型和字符型

 

 

③.变量运算

 

INC G88 5 ;设置变量G88=G88+5

DEC G88 5 ;设置变量G88=G88-5     减少值,DEC 1 就是减1

MUL G88 5 ;设置变量G88=G88*5

DIV G88 5 ;设置变量G88=G88/5

SUM 求和

=================================================================

 

扩展字符变量S和数字变量N

 

功能:扩展字符变量S和数字变量N

格式:无

说明:扩展字符变量S和数字变量N,除了支持0~499以外,可以在S$变量或N$变量后面增加任意字符

例:

[@test]

#ACT

MOV S$我的人物名称 <$USERNAME>

SENDMSG 0 <$STR(S$我的人物名称)> 255 253

[@test1]

#ACT

MOV N$我的杀怪总数 100

INC <$STR(N$我的当前杀怪数)> 1

SENDMSG 6 【杀怪总数=<$STR(N$我的杀怪总数)>】【当前杀怪数=<$STR(N$我的当前杀怪数)>】 255 253

 

=================================================================

 

 

@@InPutString 与 @@InPutInteger  区别

 

如果需要在一个脚本中使用该命令,

则需要在脚本的第一行输入(@@InPutInteger @@InPutString)这段内容。

 

;区别就是@@InPutString为字符,@InPutInteger为数字,数字对应私人变量为N,字符则为S

 

[@Main]

请输入数字1 <输入/@@InPutInteger1>\

请输入数字2 <输入/@@InPutInteger2>\

请输入数字3 <输入/@333>\

………………………….\

请输入字符1 <输入/@@InPutString1>\

请输入字符2 <输入/@@InPutString2>\

………………………….\

 

[@InPutInteger1]

#SAY

你输入的数字1是 <$STR(N1)>\

 

[@InPutInteger2]

#IF

LARGE N2 0

SMALL N2 1000001

#ACT MessageBox 你输入的数字2是 <$STR(N2)>\

#ELSEACT

MessageBox 请正确输入数量(1-100W)。

break

 

[@333]

#ACT

MessageBox 请输入数量(1-100W)。 @@InPutInteger3(请输入元宝数量(1-1000000)。)

 

[@InPutInteger3]

#IF

LARGE N3 0

SMALL N3 1000001

#ELSEACT

MessageBox 请正确输入元宝数量(1-100W)。

break

 

#IF

CHECKGAMEGOLD < <$STR(N3)>

#ACT

MessageBox 你身上没有足够的元宝。

#ELSEACT

GAMEGOLD – <$STR(N3)>

MessageBox 成功将 <$STR(N3)>元宝扣除。

break

 

;===============================

 

[@InPutString1]

#SAY

你输入的字符1是<$STR(S1)>\

 

[@InPutString2]

#IF

EQUAL S2 aaa

#ACT

MessageBox 正确

#ELSEACT

MessageBox 错误

break

 

 

有禁止符号时执行当前npc的脚本@InputStringFilter, @InputIntegerFilter

禁止符号在M2-列表信息一设置

 

[@InputStringFilter]

; 如果用户输入的字符在消息过滤列表中就会调转到这个字段

#SAY

输入的字符非法

 

[@InputIntegerFilter]

; 如果用户输入的数字在消息过滤列表中就会调转到这个字段

#SAY

输入的字符非法

 

=================================================================

 

附加知识

 

INPUTTEXT:输入框ID:X:Y:宽度:高度:背景色:边框色:文字颜色:最小长度:最大长度:数据无效时提示对话框内容:提示文字:提示文字颜色

 

输入框ID: 1-40

背景色:-1为透明,0-255

边框色:-1为无边框, 0-255

最小长度,最大长度,为0表示不判断

 

INPUTNUM:输入框ID:X:Y:宽度:高度:背景色:边框色:文字颜色:最小值:最大值:数据无效时提示对话框内容:提示文字:提示文字颜色

输入框ID: 1-40

背景色:-1为透明,0-255

边框色:-1为无边框, 0-255

最小值,最大值:同时为0表示不限,否则最小值必须 <= 最大值

 

以上2个命令:“数据无效时提示对话框内容”为空时,客户端不检查数据有效性。

 

 

示范:

 

[@main]

姓名:<INPUTTEXT:1:0:0:80:15:0:249:255:4:10:姓名必须在4-10位长:输入姓名:160> \

年龄:<INPUTNUM:2:0:2:80:15:0:249:255:1:100:年龄必须输入1-100之间的数字:输入年龄:160> \

性别:<INPUTNUM:3:0:4:80:15:0:249:255:0:1:性别必须输入0或1:男(0)-女(1):160> \

<Img:130:1:0:4:*|249#将所有输入框的内容全提交/@全部提交>

<text:只提交姓名年龄:10:6:1,2/@提交部分>

 

[@提交部分]

#act

;;;;;;★★★★★★★★★★★★★★★★★★★★★★★★★★这里别忘了对输入的数据有效性判断。。。

SendMsg 5 输入的姓名为 <$NPCINPUT(1)>

SendMsg 5 输入的年龄为 <$NPCINPUT(2)>

SendMsg 5 输入的性别为 <$NPCINPUT(3)>

 

[@全部提交]

#act

;;;;;;★★★★★★★★★★★★★★★★★★★★★★★★★★这里别忘了对输入的数据有效性判断。。。

SendMsg 5 输入的姓名为 <$NPCINPUT(1)>

SendMsg 5 输入的年龄为 <$NPCINPUT(2)>

SendMsg 5 输入的性别为 <$NPCINPUT(3)>

 

 

;———————————————————————————————

 

注: 如果留空要通过检测不想提示的请用空格。

 

姓名:<INPUTTEXT:1:0:0:80:15:0:249:255:0:0: : :160>\

 

;———————————————————————————————

 

 

INPUTTEXT

INPUTNUM 有非法字符,全是触发 @inputboxFilter

 

[@InputBoxFilter]

#ACT

SendMsg 5 输入了非法字符

 

 

=================================================================

 

 

当前目标变量取值操作C. (C.变量必须目标不为空且对象为人物)

 

 

当前目标变量取值操作C. (C.变量必须目标不为空且对象为人物)

当前对象的所有私人的常量都可以使用在前面加“C.”的方式

当前对象的所有私人的变量使用<$C.STR(S1)>和查看自己的变量<$STR(S1)>多一个“C.”

比如在攻击触发,被攻击触发,死亡触发,还有查看出售角色的其他信息的触发时

当前对象的常量,例如:<$C.HP> <$C.PKPOINT> <$C.GOLDCOUNT> <$C.GAMEGOLD>

当前对象的变量,例如:<$C.STR(S1)> <$C.STR(A1)> <$C.STR(T1)> <$C.STR(U1)> <$C.HUMAN(QQQQ)> <$C.GUILD(WWWW)>

 

 

;SetCurrTarget 名称 (名称空的情况下表示清空当前对象;设置指定人物为当前对象,要求和执行脚本的玩家在同一地图且坐标在20格以内)

;使用命令 : SetCurrTarget设置当前对象

 

 

 

简易示例:

#IF

CHECKCURRTARGETRACE = 0

#ACT

;使用MOV命令调整当前对象的变量 —MOV对象变量只可读不可写,所以不支持!!!!

;MOV <$C.STR(S1)> <$STR(S1)>

;SENDMSG 6 把我的S1变量值传递给当前对象的S1变量里,MOV不支持这样操作,可用SetHumVar变量传递进行修改,如下

SetHumVar <$C.USERNAME> S1 S2

SENDMSG 6 把我的S2变量值传递给当前对象的S1变量里

 

 

#IF

CHECKCURRTARGETRACE = 0

#ACT

;使用MOV命令将自己的变量改为当前对象的变量

MOV <$STR(N1)> <$C.STR(N1)>

SENDMSG 6 把对方的的N1变量值传递给我的的N1变量里,使用“C.STR”代表当前对象的变量比自己的“STR”前面多一个“C.”

 

 

 

;查看他人装备触发:

[@QueryUserState]

#ACT

MOV S1 <$UserStateName>

;SetCurrTarget 名称 (名称空的情况下表示清空当前对象;设置指定人物为当前对象,要求和执行脚本的玩家在同一地图且坐标在20格以内)

;使用SetCurrTarget设置当前对象

SetCurrTarget S1

 

#IF

CompareText <$C.USERNAME> S1

;检测设置的对象是否成功

#say

当前对象名称:\

【<$C.USERNAME> 】等级=【<$C.LEVEL> 】攻击=【<$C.DC> – <$C.MAXDC> 】PK值=【<$C.PKPOINT> 】\

#ELSESAY

对象获取失败。

发表回复

后才能评论