正在加载文档

字符串变量扩展键值对

最后更新:2026-08-10 15:14
<!-- mindoc:slug=aa-1hglonries50c --> ## 初始化变量命令: >INITSTRVALUE 参数1 ### 参数说明: |位置|说明|备注| |:----|:---|:--- |参数1 |变量名|支持A S T W Z变量(Z变量跨天不需要重新申明),S变量 `(不支持S$自由变量)`| ### 重要说明: >1. 为了执行提高效率,我们用到了缓存,需要用这个命令明确指定该变量是作为键值对使用的.这个是跟996引擎有区别的地方 2. 如果是A变量(全局类型的),需要在M2启动触发中,调用该命令初始化,如果是S\T(个人变量),我们需要在人物上线触发的地方调用该命令初始化 3. 只要是变量有值,后面需要用键值类型来使用,就需要调用此命令初始化 4. 建议:少用常量`<$GETSTRVALUE(变量,KEY键)>`耗时高,多用`GETSTRVALUE`获取键值内容 ### 常量支持: > <$GETSTRVALUE(变量,KEY键)> 例如: `ADDSTRVALUE T10 游戏名字 热血传奇` `SENDMSG 5 游戏名字=<$GETSTRVALUE(T10,游戏名字)>` `结果:游戏名字=热血传奇` > <$GETSTRKEY(变量,位置)> 取排名序号位置Key键名字 位置等于键值key键位置1-X > <$GETSORTSTRVALUE(变量,位置)> 取排名序号位置内容 位置等于键值key键位置1-X ## 增加(修改)键值命令: >ADDSTRVALUE 参数1 参数2 参数3 ### 参数说明: | 位置 | 说明 | 备注 | |:----- |:------ |:------------- | |参数1| 变量名 | 支持A S T W Z变量,S变量 `(不支持S$自由变量)`| |参数2| 键 | | |参数3| 值| | ## 获取指定键值命令: >GETSTRVALUE 参数1 参数2 参数3 ### 参数说明: | 位置 | 说明 | 备注 | |:----- |:------ |:------------- | |参数1| 变量名 | 支持A S T W Z变量,S变量 `(不支持S$自由变量)`| |参数2| 键 | | |参数3| 输出变量名| 结果写入该变量 | ## 删除键值命令: >DELSTRVALUE 参数1 参数2 ### 参数说明: | 位置 | 说明 | 备注 | |:----- |:------ |:------------- | |参数1| 变量名 | 支持A S T W Z变量,S变量 `(不支持S$自由变量)`| |参数2| 键 | | ## 获取所有键命令: >GETSTRKEY 参数1 参数2 ### 参数说明: | 位置 | 说明 | 备注 | |:----- |:------ |:------------- | |参数1| 变量名 | 支持A S T W Z变量,S变量 `(不支持S$自由变量)`| |参数2| 输出变量名| 结果写入该变量 | `该命令可以配合分割字符串命令SplitString使用` ### 常量支持: > <$GETSTRVALUE(参数1,参数2)> #### 参数说明: | 位置 | 说明 | 备注 | |:----- |:------ |:--------------- | | 参数1 | 变量名 | 支持A S T W Z变量,S变量 `(不支持S$自由变量)`| | 参数2 | 键 | 支持变量中取值 | ### 示例: ``` [@测试变量键值对] #IF #ACT ; 第一个参数 支持变量,下面所有命令都是,但是只支持一层(不能嵌套) MOV T1 1=999,2=888,3=777,4=555 MOV S$测试 T1 INITSTRVALUE <$STR(S$测试)> ; 初始化T1变量为键值存储 SENDMSG 6 原始T1:<$STR(T1)> MOV T10 1=999,2=888,3=777 INITSTRVALUE T10 ; 初始化T10变量为键值存储 SENDMSG 6 原始T10:<$STR(T10)> ADDSTRVALUE T10 4 666 ; 增加T10 键:4 值:666 SENDMSG 6 增加键值后T10:<$STR(T10)> ADDSTRVALUE T10 4 aaa ; 设置T10 键:4 值:aaa SENDMSG 6 增加键值后T10:<$STR(T10)> GETSTRVALUE T10 3 S1 ; 获取T10中键=3的值 放入S1 SENDMSG 6 T10中键3的值为:<$STR(S1)> DELSTRVALUE T10 1 ; 删除T10中键=1的键值对 SENDMSG 6 删除键值后T10:<$STR(T10)> GETSTRKEY T10 S1 ; 获取所有键 SENDMSG 6 T10中所有键为:<$STR(S1)> MOV S$测试1 T10 MOV S$测试2 2 sendmsg 7 第一次测试常量:<$GETSTRVALUE(<$STR(S$测试1)>,<$STR(S$测试2)>)> sendmsg 7 第二次测试常量:<$GETSTRVALUE(T10,2)> break ``` ## 键值排序功能: >SORTVARSTR 参数1 参数2 参数3 参数4 ### 参数说明: | 位置 | 说明 | 备注 | |:----- |:------------- |:------------------------ | | 参数1 | 变量名 | 支持A S T W Z变量,S变量 `(不支持S$自由变量)`| | 参数2 | 排序保留数量 | 最大填100,超过100保留100 | | 参数3 | 排序方式(0/1) | 0:从小到大 1: 从大到小 | | 参数4 | 排序权重值 | 0:小的权重值优先 1: 大的权重值优先 | `参数4可理解为,按捐献同等数量的情况下是让先捐献的排上面,还是后捐献的排上面 `键值对排序格式:玩家名字=捐献数量#时间戳` ### 常量支持: > <$GETSTRKEY(参数1,参数2)> 取键 > <$GETSORTSTRVALUE(参数1,参数2)> 取值 ### 参数说明: | 位置 | 说明 | 备注 | |:----- |:------ |:--------------- | | 参数1 | 变量名 | 支持A S T W Z变量,S变量 `(不支持S$自由变量)`| | 参数2 | 第几个 | 从1开始 | ### 示例: ``` [@测试排序] #IF CHECKLEVELEX > 0 #ACT MOV T10 A=999,B=888,C=777,D=666,E=555 INITSTRVALUE T10 SORTVARSTR T10 3 0 0 SENDMSG 5 排序1:<$STR(T10)> MOV T10 A=999,B=888,C=777,D=666,E=555 INITSTRVALUE T10 SORTVARSTR T10 3 1 0 SENDMSG 5 排序2:<$STR(T10)> MOV T10 A=999,B=888#22,C=888#11,D=666,E=555 INITSTRVALUE T10 SORTVARSTR T10 3 1 0 SENDMSG 5 排序3:<$STR(T10)> sendmsg 5 第一名:<$GETSTRKEY(T10,1)>。值:<$GETSORTSTRVALUE(T10,1)> sendmsg 5 第二名:<$GETSTRKEY(T10,2)>。值:<$GETSORTSTRVALUE(T10,2)> sendmsg 5 第三名:<$GETSTRKEY(T10,3)>。值:<$GETSORTSTRVALUE(T10,3)> MOV T10 A=999,B=888#22,C=888#11,D=666,E=555 INITSTRVALUE T10 SORTVARSTR T10 3 1 1 SENDMSG 5 排序4:<$STR(T10)> sendmsg 6 第一名:<$GETSTRKEY(T10,1)>。值:<$GETSORTSTRVALUE(T10,1)> sendmsg 6 第二名:<$GETSTRKEY(T10,2)>。值:<$GETSORTSTRVALUE(T10,2)> sendmsg 6 第三名:<$GETSTRKEY(T10,3)>。值:<$GETSORTSTRVALUE(T10,3)> Break ```
0.060085s