传奇私服变量使用指南

在传奇私服中,变量的使用和管理是非常重要的。以下是各种变量的详细说明和使用方法。

变量类型及属性

私人变量(数字型)

  • P0-P999: 关闭对话框重置为0。
  • D0-D999: 下线不保存,摇筛子变量。
  • M0-M999: 下线不保存,切换地图清空。
  • N0-N999: 下线不保存,小退归0。
  • U0-U499: 可保存,存放在人物数据库Mir.db里面,值最大范围正负21亿。
  • J0-J499: 可保存,每晚自动12点重置,存放在人物数据库Mir.db里面,值最大范围正负21亿。

私人变量(字符型)

  • S0-S999: 下线不保存,小退归0。
  • T0-T499: 可保存,存放在人物数据库Mir.db里面,字符长度100。
  • Z0-Z499: 可保存,每晚自动12点重置,存放在人物数据库Mir.db里面,自定义清理时间位于参数设置 - 时间控制,和J变量共清理时间。

全局变量(数字型)

  • I0-I999: 不可保存,服务器重启自动重置为0。
  • G0-G999: 可保存,存放在Mir200/GlobalVal.ini文件里面。

全局变量(字符型)

  • A0-A999: 可保存,存放在Mir200/GlobalVal.ini文件里面。

变量属性说明

P(0-999)

『属性说明』:该变量只对当前对话NPC内有效果。如果中途点其他NPC或者对话产生close、关闭时所有P变量均归0。该变量取值范围:(0-?)根据M2最大值不同。

『用法』:该变量没有NPC间传递性作为临时变量多重复使用效果十分好。而且因为脚本命令有对该变量进行加/减/赋值/随机取值等运算,他和goto的配合可以使脚本中出现仿for循环的效果。并且因为他不传递的性质其随机取值也能与RANDOM媲美。

D(0-999)

『属性说明』:该传奇私服变量在人物不下线时对全局NPC通用传递。该变量取值范围:同P变量。

『用法』:既有像[0-?]变量一样的人物属性私有变量的效果又有像P变量一样的运算功能!唯一不足就是下线后该变量会被清空。可是如果配合上[000]变量或者namelist变量的记录性。实在是功能强大的个人隐私属性!

G(0-999)

『属性说明』:该变量不属于人物属性范围,对于全服务器内该变量唯一并且全局NPC通用传递。该变量取值范围:同P变量。

『用法』:这个变量是唯一的一个不属于任何人物而属于传奇私服服务器的变量,该变量通过任何人的运算均产生效果。而且不保存在任何人的属性中。(存放在Mir200/GlobalVal.ini文件里面)

A(0-999)

『属性说明』:该变量不属于人物属性范围,对于全服务器内该变量唯一并且全局NPC通用传递。该变量取值范围:同D变量。

『用法』:这个变量是唯一的一个不属于任何人物而属于服务器的变量,该变量通过任何人的运算均产生效果。而且不保存在任何人的属性中。(存放在Mir200/GlobalVal.ini文件里面)

输入命令用法

@@InPutString 与 @InPutInteger

如果需要在一个脚本中使用该命令,则需要在脚本的第一行输入(@@InPutInteger @@InPutString)这段内容。以下脚本用于测试输入功能,大家可从脚本中仔细研究一下脚本的实现原理。

举例说明:

22要和后面的变量一样<$STR(S22)>

[@InPutString22]
#IF
CHECKTEXTLIST ..\QuestDiary\元宝充值\50000.txt <$STR(S22)>
;这个命令是检测你输入的卡号和50000.txt这里面的某行卡号是否相同
#ACT
DELTEXTLIST ..\QuestDiary\元宝充值\50000.txt <$STR(S22)>
;这个命令是将你输入的那行卡号在50000.txt这个文档里删除掉
GAMEGOLD + 50000
SENDMSG 7 充值成功:增加[50000元宝],你当前帐户里元宝数为:<$GAMEGOLD>
SENDMOVEMSG 0 251 249 350 1 [『<$USERNAME>』使用在线充值卡--充值成功:增加[50000元宝],感谢您的支持希望您玩的开心:-)]
GOTO @充值元宝
#ELSEACT
SENDMSG 7 您输入的卡号不正确或已被他人使用,请重新输入!
GOTO @充值元宝


@InPutInteger
★★★★★★★有禁止符号时执行当前npc的脚本@InputStringFilter, @InputIntegerFilter
禁止符号在M2-列表信息一设置

扩展字符变量S和数字变量N
功能:扩展字符变量S和数字变量N
格式:无
说明:扩展字符变量S和数字变量N,除了支持0~499以外,可以在S
变量或
N
变量或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区别
;区别就是@@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
输入的字符非法 

通过以上详细的变量说明和使用方法,您可以更好地管理和使用传奇私服中的各种变量,提升游戏体验。
最后修改:2024 年 11 月 11 日
如果觉得我的文章对你有用,请随意赞赏