高效率版键值对操作命令: ;字符串引擎支持8000字符长度,建议控制在5000字符长度以内,主键值数量小于200组 ;主要优化效率为读取常量时会大幅度增加效率,例:<$GETSTRVALUE(T1,1)>,<$GETSTRVALUE(T1,2)> ;高频触发类 如攻击触发 拾取触发等 不建议用键值对!!! 第一步:将需要的键值对变量配置在(M2-功能设置-其他设置-个人键值对申明) 配置好后引擎将自动在启动时将变量同步到缓存中 如需要在其他操作需要更新到缓存时请使用“UPGRIDEVARCACHE”命令进行同步 申明变量到缓存读取(高效率缓存版) 格式:UPGRIDEVARCACHE 参数1 ;将数据库中的变量同步到缓存中(按需使用) ;字符型变量 (A变量 T变量 S变量) 如果是自定义字符型变量 格式为:HUMAN(XXX) 不要带<$> 但是要带HUMAN、GLOBAL GUILD(自定义变量自动保存,无需SAVEVAR) 参数1:变量名称 增加和修改字符型变量主键值对应值(高效率缓存版) 格式:ADDVARCACHE 参数1 参数2 参数3 ;该命令同步:ADDSTRVALUE一致,但因考虑高效率操作单独开出的命令,有需要的请将其替换为高效率版相关命令(改变后自动存储数据库及缓存) ;字符型变量 (A变量 T变量 S变量) 如果是自定义字符型变量 格式为:HUMAN(XXX) 不要带<$> 但是要带HUMAN、GLOBAL GUILD(自定义变量自动保存,无需SAVEVAR) 参数1:变量名称 参数2:主键值 参数3:对应值 修改字符型变量(高效率缓存版) 格式:MOVVARCACHE 参数1 参数2 ;该命令同步:MOV用法一致,但如果使用MOV进行操作请配合“UPGRIDEVARCACHE”进行同步缓存!(改变后自动存储数据库及缓存) ;字符型变量 (A变量 T变量 S变量) 如果是自定义字符型变量 格式为:HUMAN(XXX) 不要带<$> 但是要带HUMAN、GLOBAL GUILD(自定义变量自动保存,无需SAVEVAR) 参数1:变量名称 参数2:改变值 删除键值对主键值(高效率缓存版) 格式:DELVARCACHE 参数1 参数2 参数1:变量 参数2:主键 //例子: [@main] #IF #ACT MOV N50 183 ;将变量写入缓存 UPGRIDEVARCACHE T<$str(N50)> PRINTUSETIME 1 ;赋值键值对字符串为空 MOVVARCACHE T<$str(N50)> MOV N11 200 MOV N12 0 while N12 < <$str(N11)> inc N12 1 ADDVARCACHE T<$str(N50)> <$str(N12)> 996m2.com endwhile MOV N14 500 MOV N13 0 PRINTUSETIME 2 ;键值对常量取值耗时打印 PRINTUSETIME 1 while N13 < <$str(N14)> INC N13 1 sendmsg 7 <$GETSTRVALUE(T<$str(N50)>,<$str(N13)>)> endwhile PRINTUSETIME 2 ※注意事项: 如:涉及到自定义变量使用CALCVAR清理命令的,请注意需要使用UPGRIDEVARCACHE命令同步 -------------------------------------------------------------------------------- 键值对功能: 注:不建议在面板上使用,会导致耗时很高(推荐使用上方高效率键值对操作命令) 功能:增加和修改字符型变量主键值对应值 格式:ADDSTRVALUE 参数1 参数2 参数3 参数1:字符型变量 (A变量 T变量 S变量) 如果是自定义字符型变量 格式为:HUMAN(XXX) 不要带<$> 但是要带HUMAN、GLOBAL GUILD 参数2:主键值 参数3:对应值 写入例子: [@main] #IF #ACT MOV T10 1=999,2=888,3=777 增加例子: [@main] #IF #ACT ADDSTRVALUE T10 4 996M2 修改例子: [@main] #IF #ACT ADDSTRVALUE T10 1 996M2.COM 获取字符串主键值 对应值: 格式:GETSTRVALUE 参数1 参数2 参数3 参数1:字符型变量 (A变量 T变量 S变量) 如果是自定义字符型变量 格式为:HUMAN(XXX) 不要带<$> 但是要带HUMAN、GLOBAL GUILD(注意自定义变量需要保存) 参数2:主键值 参数3:存入变量 例子: [@获取主键值对应值] #IF #ACT GETSTRVALUE T10 1 S10 SENDMSG 6 获取出来的为:<$STR(S10)> 删除字符型变量主键值: DELSTRVALUE 参数1 参数2 参数1:字符型变量 (A变量 T变量 S变量) 如果是自定义字符型变量 格式为:HUMAN(XXX) 不要带<$> 但是要带HUMAN、GLOBAL GUILD(注意自定义变量需要保存) 参数2:主键值 例子: [@删除主键值] #IF #ACT DELSTRVALUE T10 1 -------------------------------------------------------------------------------- 键值对获取全部主键命令 GETSTRKEY 参数1 参数2 参数1:键值对变量名称 参数2:存入变量 //例子 #if #ACT mov T1 1=2,2=1,996=2,引擎=3 GETSTRKEY T1 S1 ;取出主键值为逗号分割(1,2,996,引擎) sendmsg 7 <$str(S1)> ;配合分割字符串使用功能强大 MOV N11 1 GETVALIDSTRSUPER <$str(S1)> , S$获取主键值 N$总主键数量 while N11 < <$str(N$总主键数量)> sendmsg 7 <$str(S$获取主键值<$str(N11)>)> endwhile ------------------------------------------------------------------------------- 通过变量名称获取其中里面的主键对应的值常量 <$GETSTRVALUE(T1,1)> //例子 #if #ACT mov T1 1=996M2,2=996M2.COM sendmsg 7 <$GETSTRVALUE(T1,1)>,<$GETSTRVALUE(T1,2)> ;说明 常量中的T1不支持套用<$str()>,因为加这个括号服务端会把他解出来,解出来的变量值将无法获取! 变量套表方法,我们可以在<$cfg_bianliang(1_1)>这个表1行1列中写入T1即可 变量获取添加方式: T1 A1 S1 S$XX HUMAN(变量) -------------------------------------------------------------------------------- 键值对排序 功能:键值对排序 命令:SORTVARSTR 参数1 参数2 参数3 参数1:变量名称(如:A1) 参数2:排序数量(1-100,如指拍前10名填10,最多支持排序100组键值) 参数3:0/1(升序/降序) 参数4:0/1(0:小于时间戳优先,1:大于时间戳优先) ;注:参数4可理解为,按捐献同等数量的情况下是让先捐献的排上面,还是后捐献的排上面 键值对排序格式:玩家名字=捐献数量#时间戳 排序主键常量:<$GETSTRKEY(变量名,第几个)> 排序值常量:<$GETSORTSTRVALUE(变量名,第几个)> ;//示例 ;重要说明:务必按照下方脚本逻辑进行编写脚本 [@高效缓存键值对排序] #act sortvarstr A81 3 1 1 ;↓↓↓↓↓↓使用高效键值对排序时,将变量优先读取缓存中↓↓↓↓↓↓ UPGRIDEVARCACHE A81 sendmsg 6 排名第一名玩家名字:<$GETSTRKEY(A81,1)>。捐献数量:<$GETSORTSTRVALUE(A81,1)> sendmsg 6 排名第二名玩家名字:<$GETSTRKEY(A81,2)>。捐献数量:<$GETSORTSTRVALUE(A81,2)> sendmsg 6 排名第三名玩家名字:<$GETSTRKEY(A81,3)>。捐献数量:<$GETSORTSTRVALUE(A81,3)> -------------------------------------------------------------------------------- 修改键值对 命令:格式SETSTRVALUEKEY 变量名称 原主键 新主键 示例: [@main] #if #ACT mov T1 1=2,2=1,996=2,引擎=3 #if #ACT ;修改主键“引擎”为“M2” SETSTRVALUEKEY T1 引擎 M2 SENDMSG 6 <$STR(T1)>打印值:1=2,2=1,996=2,M2=3 -------------------------------------------------------------------------------- 高效键值对排序 命令:SORTVARSTRCACHE 参数1 参数2 参数3 参数1:变量名称(如:A1) 参数2:排序数量(1-100,如指拍前10名填10,最多支持排序100组键值) 参数3:0/1(升序/降序) 参数4:0/1(0:小于时间戳优先,1:大于时间戳优先) ;注:参数4可理解为,按捐献同等数量的情况下是让先捐献的排上面,还是后捐献的排上面 键值对排序格式:玩家名字=捐献数量#时间戳 排序主键常量:<$GETSTRKEY(变量名,第几个)> 排序值常量:<$GETSORTSTRVALUE(变量名,第几个)> |