【转】996引擎传奇脚本-让你的键值对快10倍-三端lua使用正则匹配
500pi欢迎广大传奇爱好者提供相关资源、本站力争成为最公益的传奇素材脚本交流站===========================================================
资源下载:
===========================================================
资源演示:
键值对功能在处理一些给个人添加标记的场景下挺好用的,虽然lua有系列化转表和表转系列化的功能了但是处理一些给个人添加标记(用变量只使用一次的场景),个人还是比较喜欢使用官方的键值对功能,三端lua官方提供了一个自定义的函数
官方提供的获取键值对代码:
function getVarCache(play,varName,key)
local str = getplaydef(play, varName)
local result = {}
for k, v in string.gmatch(str, "([^=]+)=([^,]+)") do
k = k:gsub(",", "")
result[k] = v
end
return result[tostring(key)] or ""
end
而且这个函数的原理是系列化之后遍历再遍历的方式来取值,一旦键值对数量多了,耗时就比较高了。
还有没有提供写修改键值对的函数,通过调用txt的命令耗时也高,大概在100多这个样子
我自己写了一个lua的修改键值对的函数,也是通过系列化操作的,一旦键值对数量多了,使用的耗时就比较高
于是我写了一个通过正则匹配的方式来修改和读取键值对:
function getVarCache(play, varName, key)
local str = getplaydef(play, varName)
local newstr = "," .. str .. ","
local pattern = "," .. key .. "=([^,]+),"
local matchValue = newstr:match(pattern)
if matchValue then
return matchValue
else
return ""
end
end
通过系列化方式来存键值对:
-- 系列化算法存键值对
function updateVarCache(play, varName, key, value)
local str = getplaydef(play, varName)
local result = {}
for k, v in string.gmatch(str, "([^=]+)=([^,]+)") do
k = k:gsub(",", "")
result[k] = v
end
if value ~= nil and value ~= "" then
result[tostring(key)] = tostring(value)
else
result[tostring(key)] = nil
end
local updatedStr = ""
for k, v in pairs(result) do
updatedStr = updatedStr .. k .. "=" .. v .. ","
end
updatedStr = string.sub(updatedStr, 1, -2) -- 去掉最后的逗号
setplaydef(play, varName, updatedStr)
end
通过这个方式修改写入,因为每次要把字符串取出来再系列化在遍历修改,再遍历系列化存回去,一旦键值对数量高了,耗时就高
我这里写了一套通过正则算法匹配来修改键值对的方法,放到附件里面的
一共有4个函数
系列化算法取键值对 (官方提供的)
系列化算法存键值对
正则算法取键值对
正则算法存键值对
https://bbs.996m2.com/data/attachment/forum/202402/27/162124yrlq9dtqttccydrr.png.thumb.jpg https://bbs.996m2.com/data/attachment/forum/202402/27/162131m9eh3bph9zagn99h.png.thumb.jpg https://bbs.996m2.com/data/attachment/forum/202402/27/162136vojrydjowre7rne4.png.thumb.jpg
https://bbs.996m2.com/data/attachment/forum/202402/27/162304ctxhij03gmrn547o.png.thumb.jpg https://bbs.996m2.com/data/attachment/forum/202402/27/162320p2a2133to1tfwu2o.png.thumb.jpg https://bbs.996m2.com/data/attachment/forum/202402/27/162343uxkzvcxhbivvkg94.png.thumb.jpg
===========================================================
【注:帖子中的资源只显示了部分-如需完整资源请下载附件】
--------------------------------------------------------------------------------
如发现相关链接失效、请在 https://www.500pi.com/forum-75-1.html
发帖说明具体素材地址: 如XXX时装素材链接失效、技术看见会不定时补发、
如您对本站有更好的建议、可以在该分区直接发帖说明、好的建议我们一定采纳!
--------------------------------------------------------------------------------
免费获取金币:https://www.500pi.com/home.php?mod=task&item=new
里面有每日推广任务、接取之后打开我的推广页面
https://www.500pi.com/home.php?mod=spacecp&ac=promotion
复制链接发给好友,完成任务即可获取金币(注意,每天都可以重复获取哦)
--------------------------------------------------------------------------------
500Pi传奇素材网、力争打造最公益的传奇素材类站点、希望广大传奇爱好者支持!
素材我们一直会慢慢的加上来、大家有什么样的需求可以在素材交流区发帖沟通、
论坛交流群:747131491站长事务QQ:95319953论坛广告投放QQ:194712
--------------------------------------------------------------------------------
页:
[1]