设为首页收藏本站 天气与日历
【广告位开放,详情点击或咨询QQ:194712】 【好消息:即日起免费注册!邀请码免费啦】 【办理VIP送金币,享超级折扣,下载更划算哦!】
查看: 558|回复: 0
收起左侧

【转】996引擎传奇脚本-让你的键值对快10倍-三端lua使用正则匹配

[复制链接]
  • TA的每日心情

    2024-6-19 10:07
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]500Pi传奇素材网-永恒钻石

    发表于 2024-6-7 10:27:37 | 显示全部楼层 |阅读模式
    500pi欢迎广大传奇爱好者提供相关资源、本站力争成为最公益的传奇素材脚本交流站


    ===========================================================

    资源下载:
    文件名称:函数.rar 
    下载次数:2  文件大小:871 Bytes  售价:1金钱 [记录]
    下载权限: 不限 以上或 VIP会员优惠购买   [购买VIP]   [充值金币]  [发素材赚金币]
    安全检测,请放心下载



    ===========================================================

    资源演示:

    键值对功能在处理一些给个人添加标记的场景下挺好用的,虽然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个函数

    系列化算法取键值对 (官方提供的)
    系列化算法存键值对

    正则算法取键值对
    正则算法存键值对
             

    【转】996引擎传奇脚本-让你的键值对快10倍-三端lua使用正则匹配4405 作者:admin 帖子ID:57494 引擎,传奇,脚本,你的,键值 【转】996引擎传奇脚本-让你的键值对快10倍-三端lua使用正则匹配508 作者:admin 帖子ID:57494 引擎,传奇,脚本,你的,键值 【转】996引擎传奇脚本-让你的键值对快10倍-三端lua使用正则匹配3555 作者:admin 帖子ID:57494 引擎,传奇,脚本,你的,键值
    【转】996引擎传奇脚本-让你的键值对快10倍-三端lua使用正则匹配1747 作者:admin 帖子ID:57494 引擎,传奇,脚本,你的,键值 【转】996引擎传奇脚本-让你的键值对快10倍-三端lua使用正则匹配8499 作者:admin 帖子ID:57494 引擎,传奇,脚本,你的,键值 【转】996引擎传奇脚本-让你的键值对快10倍-三端lua使用正则匹配9042 作者:admin 帖子ID:57494 引擎,传奇,脚本,你的,键值



    ===========================================================
    【注:帖子中的资源只显示了部分-如需完整资源请下载附件】



    --------------------------------------------------------------------------------
    如发现相关链接失效、请在 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
    --------------------------------------------------------------------------------
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    站长QQ

    美工贱贱

    美工兰兰

    美工发儿

    技术服务

    QQ新群

    链接失效

    投诉建议

    微信客服

    扫一扫关注微信客服

    顶部

    快速回复 返回顶部 返回列表