变量类型:
P0-P9 私人变量(数字型) 不可保存
G0-G499 全局变量(数字型) 可保存
M0-M99 私人变量(数字型) 不可保存
I0-I99 全局变量(数字型) 不可保存
D0-D9 私人变量(数字型) 不可保存
N0-N99 私人变量(数字型) 不可保存
S0-S99 私人变量(字符型) 不可保存
A0-A499 全局变量(字符型) 可保存
常用配合命令:
MOV 变量名称 数值 赋予数值
INC 变量名称 数值 加上指定数值
DEC 变量名称 数值 减去指定数值
MOVR 变量名称 数值 赋予小于指定数值的随机非负数
EQUAL 变量名称 数值 检测相等
SMALL 变量名称 数值 检测小于
LARGE 变量名称 数值 检测大于
<$STR(变量)> 把变量转为字符串
下面为大家列举一个全服领奖脚本,用到了很多变量。
[@main]
#if
EQUAL G78 0 检测G78值为0
#act
MOV G78 1 赋予G78数值1 此处G78的功能就是控制只赋予G80一次数值
MOV G80 5 赋予G80数值5 此脚本可以理解为奖励名额5个。
#SAY
<56级领取/@LJ56> 凤天魔甲or凤天魔衣 剩余名额<$STR(G80)>个 <$STR(G80)>被转换为字符串
[@LJ56]
#if
#ACT
MOV S0 56
#IF
EQUAL G80 0
#ACT
DelayCall 1 @没有 DelayCall 延迟跳转命令
#ELSEACT
DelayCall 1 @领奖
[@LJ56B]
#if
#ACT
DEC G80 1 变量G80值-1,理解为奖励名额减少一个
GetRandomText .\QuestDiary\升级奖励\56级奖励.txt S0 将此文档下文件随机取出赋予变量S0,格式一行一个
give <$STR(S0)> 1
SENDMSG 0 恭喜:“%s”升到56级成功领取〖<$STR(S0)>]〗1件,56级奖励还剩<$STR(G80)>
[@领奖]
#IF
CHECKLEVELEX < <$STR(S0)>
#ACT
MessageBox [领取失败]:你等级不够<$STR(S0)>级,还不可以领取!
BREAK
#if
CheckNameList ..\QuestDiary\升级奖励名单\<$STR(S0)>级.txt 检测名单
#ACT
MessageBox [领取失败]:你已经领取过<$STR(S0)>级奖励!
BREAK
#ELSEACT
ADDNameList ..\QuestDiary\升级奖励名单\<$STR(S0)>级.txt 加入名单
DelayCall 1 @LJ<$STR(S0)>B 脚本抬头也能使用变量
[@没有]
#if
CHECKLEVELEX > 0
#ACT
BREAK
MessageBox [领取失败]:<$STR(S0)>级奖励已领完!
特别注意:
同一个脚本可能会多次使用不可保存的变量。
因而<$STR(S0)>可能会代表许多不同的数值。
比如:[@LJ56] 里面 S0 代表等级
[@LJ56B] 里面 S0 代表奖励的装备
而全局变量只有通过命令去控制它的值的变化,
比如:DEC G80 1
初接触变量的可以对照变量使用命令仔细研究这个领奖脚本,
把这个脚本研究明白了,那么对变量就已经有个大体认识了。
再为大家列举一个随机赋值MOVR命令的示例脚本,
[@名称变色]
#IF
#ACT
Movr S88 256 随机取值1-255
CHANGENAMECOLOR <$STR(S88)>
Delaycall 1000 @名称变色
下面再为大家列举一个变量嵌套脚本:
#if
S55.CheckLevel >51
S56.CheckLevel >51
CheckLevel 51 > 51
#act
S55.GameGold + 10
S56.GameGold + 10
GameGold + 10
这种脚本S55 S56必须先给它赋值,
可以是人物名字,也可以是S0–S99之间任何的一个变量。
自定义变量命令使用格式
申明变量 VAR Integer HUMAN
读取变量 LOADVAR HUMAN
检测变量 CHECKVAR HUMAN > < =
控制变量 CALCVAR HUMAN + – * / =
保存变量 SAVEVAR HUMAN ..\QuestDiary\
下面继续以具体脚本实例来解释自定义变量的使用方法。
第一步,在Mir200\Envir\MapQuest_Def\QManage.txt 的 [@login] 命令下增加:
;[@login] 脚本上线自动检测触发
#IF
CHECKLEVELEX > 0
#ACT
VAR Integer HUMAN RWSW 申明变量,此脚本可以理解为被杀次数
VAR Integer HUMAN RWSR 申明变量,此脚本可以理解为S人次数
LOADVAR HUMAN RWSW ..\QuestDiary\S人文件\S人数据.txt 读取变量保存位置
LOADVAR HUMAN RWSR ..\QuestDiary\S人文件\S人数据.txt 读取变量保存位置,多个变量可保存在同一文档
#CALL [\S人文件\S人封号.txt] @封号 读取QuestDiary文件夹下封号文件的@封号脚本段
——————————分割线——————————————
第二步,在mirserver\Mir200\Envir\QuestDiary建立一个文件夹,
命名为S人文件,在此文件夹下建立2个文本文档,
命名为S人数据 S人封号
——————————分割线——————————————
第三步,在S人封号文档添加以下脚本:
[@封号]
{
#IF
#ACT
SETRANKLEVELNAME %s\武林至尊PK王\已有[<$HUMAN(RWSR)>]人死于其魔掌\被杀害[<$HUMAN(RWSW)>]次
;这一行就是将自定义变量转换为字符串,通过封号的形式显示在人物名称下面。注意格式:<$HUMAN(自定义变量)
break
}
——————————分割线——————————————
第四步,在mirserver\Mir200\Envir\Market_Def\QFunction-0.txt添加以下脚本:
[@KillPlay]
#if
#ACT
CALCVAR HUMAN RWSR + 1 控制变量RWSR+1,可以理解为S人次数+1
SAVEVAR HUMAN RWSR ..\QuestDiary\S人文件\S人数据.txt 保存变量到S人数据.txt
SENDMSG 7 提示:你又干掉了一名对手!!!
[@PlayDie]
#IF
#ACT
CalcVar HUMAN RWSW + 1 控制变量RWSW+1,可以理解为死亡次数+1
SaveVar HUMAN RWSW ..\QuestDiary\S人文件\S人数据.txt 保存变量到S人数据.txt
SendMsg 7 提示:您被杀害了,当前死亡次数:<$HUMAN(RWSW)>次
补充:
这个脚本没有用到检测变量的命令,那么我再来加一段。
比如检测到S人达到100次,就给与一个S人魔王的封号。
[@S人魔王]
#IF
CHECKVAR HUMAN RWSR > 99 检测变量RWSR值大于99
#ACT
SETRANKLEVELNAME %s\S人魔王
以上脚本便是一个自定义变量的完整使用方法。
自定义变量可以广泛应用于传奇里面的各种任务,杀怪记录,特色功能等等。