【懒人精灵】免费网络验证源码分享


个人简介

‍个人主页:九黎aj

‍♂️幸福源自奋斗,平凡造就不凡

如果文章对你有用,麻烦关注点赞收藏走一波,感谢支持!

欢迎订阅我的专栏:autojs
python
QQ群:698307198

文章目录

  • 前言
  • 总结
  • 加入交流群


前言

为什么使用百宝云神烦云免费网络验证做教学
【懒人精灵】免费网络验证源码分享_第1张图片

因为它免费并且功能多

注册地址http://useryz.91shenfan.com/index.php?user/login&refurl=http://useryz.91shenfan.com/

话不多说,直接上代码

local 变量_Token = "在这里输入"
local 变量_项目名称 = ""
local 变量_机器码 = ""
local 变量_注册码 = ""
local 变量_解绑密码 = "123456"
local 变量_Ver = "V2.0"
local 变量_登录状态 = "未登录"
local 变量_剩余分钟 = -1
local 变量_访问令牌 = ""
local 变量_超时重登 = false
local 变量_错误信息 = ""
local 变量_试用登陆时间 = 0
local 变量_最后登陆时间 = 0
local 变量_注册码信息 = {}
local 变量_错误次数 = 0
local MAX_DIFFTIME = 60
local MIN_EXPDIFFTIME, MAX_EXPDIFFTIME = 70, 90
local g_IntSingleMapRunCount = 0
local g_IntCheckDiffTime = MAX_DIFFTIME
local g_IntMaxErrorCount = 5
local g_IntErrorACcount = 0
local varThread = {exitFlag = false, exitMainThread = false}
_ENV["函数_初始化注册"] = function(projName, code)
  变量_项目名称 = projName
  变量_注册码 = code
  varThread.exitMainThread = true
end
_ENV["函数_检测项目更新"] = function(项目名称, 版本号)
  local arg = "prog=%s&ver=%s"
  arg = string.format(arg, 项目名称, 版本号)
  local bool, ret = HttpGetData(arg)
  print("检测项目更新 ret = " .. ret)
  if string.find(ret, "ver", 1) ~= nil then
    local upDataInfo = jsonLib.decode(ret)
    print(upDataInfo.ver, upDataInfo.path, upDataInfo.info, upDataInfo.forced)
    if upDataInfo.ver ~= nil then
      if _ENV["UI_提示对话框"](upDataInfo.info) == false then
        print("更新取消")
        return 0
      end
      function progress(pos)
        toast("下载进度:" .. pos, 0, 0, 30)
        print("下载进度:" .. pos)
      end
      filePath = splitStr(upDataInfo.path, "/")
      fileUrl = string.format("http://apicloudupload.91shenfan.com/cloudupload.php?method=download&access_token=%s&filename=%s&path=%s", 变量_Token, filePath[2], filePath[1])
      fileSaveName = getWorkPath() .. "/update.lr"
      print(fileUrl, fileSaveName)
      if downloadFile(fileUrl, fileSaveName, progress) == 0 then
        sleep(100)
        print("下载完成,安装中")
        io.input(fileSaveName)
        local hData1 = io.read(1)
        local hData2 = io.read(1)
        print(hData1, hData2)
        io.close()
        if hData1 == "P" and hData2 == "K" then
          print("下载文件正常")
          installLrPkg(fileSaveName)
          restartScript()
        else
          print("下载文件异常,不安装")
          print("下载文件异常,不安装")
        end
      else
        print("下载异常,下次更新")
        toast("下载异常,下次更新", 0, 0, 14)
      end
    end
  end
end
_ENV["UI_提示对话框"] = function(tips)
  local isUi = true
  local isUpdata = false
  function onClickOK()
    isUpdata = true
    isUi = false
  end
  function onClickExit()
    isUpdata = false
    isUi = false
  end
  ui.newLayout("uimsg", 600)
  ui.setTitleText("uimsg", "更新提示")
  ui.setTitleBackground("uimsg", "#ff0AB50F")
  ui.addTextView("uimsg", "txQQ", "作者VX/QQ: ", -1)
  ui.setTextColor("txQQ", "#ff3399FF")
  ui.setGravity("txQQ", 17)
  ui.newRow("uimsg", "row1")
  ui.addTextView("uimsg", "txUpdata", "更新日志:", -1)
  ui.newRow("uimsg", "row1")
  ui.addTextView("uimsg", "tvId", tips)
  ui.newRow("uimsg", "row_Btn")
  ui.addButton("uimsg", "btnOK", "更新", -2, 60)
  ui.setOnClick("btnOK", "onClickOK()")
  ui.setBackground("btnOK", "#ff07E613")
  ui.addButton("uimsg", "btnExit", "取消", -2, 60)
  ui.setOnClick("btnExit", "onClickExit()")
  ui.setBackground("btnExit", "#ffCB1011")
  ui.show("uimsg", false)
  local loginFile = getWorkPath() .. "/tips.txt"
  ui.loadProfile(loginFile)
  while isUi do
    sleep(100)
  end
  local ret = ui.getData()
  ui.dismiss("uimsg")
  print(ret)
  return isUpdata
end
_ENV["函数_注册登录"] = function()
  local arg = "flag=注册码登录&机器码=%s&注册码=%s&项目名称=%s"
  arg = string.format(arg, 变量_机器码, 变量_注册码, 变量_项目名称)
  local bool, ret = HttpGetData(arg)
  if bool then
    local arr = splitStr(ret, "|")
    local arrLen = #arr
    if arrLen == 3 and arr[1] == "登录成功" then
      变量_登录状态 = "注册登录"
      变量_剩余分钟 = arr[2]
      变量_访问令牌 = arr[3]
      toast("卡密剩余时间:" .. 变量_剩余分钟 .. "分钟", 0, 0, 12)
      变量_最后登陆时间 = TimeNow()
      Unit.State.isTimeOut = false
      return true
    end
  end
  变量_错误信息 = ret
  return false
end
_ENV["函数_试用登录"] = function()
  local arg = "flag=试用&机器码=%s&项目名称=%s"
  arg = string.format(arg, 变量_机器码, 变量_项目名称)
  local bool, ret = HttpGetData(arg)
  print("试用登录 ret = " .. ret)
  if bool and ret == "成功" then
    变量_登录状态 = "试用登录"
    Unit.State.isTimeOut = false
    _ENV["函数_获取剩余分钟"]()
    return true
  elseif ret == "操作失败:此试用模式不支持TryLogin函数(不支持普通试用模式),请使用试用登陆扩展模式." then
    arg = "flag=注册码试用扩展模式&机器码=%s&项目名称=%s"
    arg = string.format(arg, 变量_机器码, 变量_项目名称)
    local bool, ret = HttpGetData(arg)
    if bool then
      local arr = splitStr(ret, "|")
      local arrLen = #arr
      if arrLen == 3 and arr[1] == "登录成功" then
        变量_登录状态 = "注册登录"
        变量_访问令牌 = arr[2]
        变量_注册码 = arr[3]
        return true
      end
    end
  end
  变量_错误信息 = ret
  return false
end
_ENV["函数_注册解绑"] = function()
  local arg = "flag=客户端解绑注册码&机器码=%s&注册码=%s&项目名称=%s&解绑密码=%s"
  arg = string.format(arg, 变量_机器码, 变量_注册码, 变量_项目名称, 变量_解绑密码)
  local bool, ret = HttpGetData(arg)
  if bool then
    return true
  end
  变量_错误信息 = ret
  return false
end
_ENV["函数_注册解绑Ex"] = function(codeValue)
  local arg = "flag=客户端解绑注册码&机器码=%s&注册码=%s&项目名称=SZY&解绑密码=123456"
  arg = string.format(arg, 变量_机器码, codeValue)
  local bool, ret = HttpGetData(arg)
  if bool then
    return true
  end
  变量_错误信息 = ret
  return false
end
_ENV["函数_验证注册码详细信息"] = function()
  if 变量_登录状态 == "试用登录" then
    Unit.State.UserTimeOutData = "试用中"
  end
  local arg = "flag=注册码验证&机器码=%s&注册码=%s&项目名称=%s&访问令牌=%s"
  arg = string.format(arg, 变量_机器码, 变量_注册码, 变量_项目名称, 变量_访问令牌)
  local bool, ret = HttpGetData(arg)
  print(bool, ret)
  if bool then
    变量_注册码信息 = splitStr(ret, "|")
    if tonumber(#变量_注册码信息) == 4 then
      Unit.State.UserTimeOutData = 变量_注册码信息[2]
      return 变量_注册码信息
    end
  end
  变量_错误信息 = ret
  return ret
end
_ENV["函数_获取剩余分钟"] = function()
  local arg
  if 变量_登录状态 == "注册登录" then
    arg = "flag=查询注册码时间&机器码=%s&注册码=%s&项目名称=%s&访问令牌=%s"
    arg = string.format(arg, 变量_机器码, 变量_注册码, 变量_项目名称, 变量_访问令牌)
  elseif 变量_登录状态 == "试用登录" then
    arg = "flag=试用时间&机器码=%s&项目名称=%s"
    arg = string.format(arg, 变量_机器码, 变量_项目名称)
  else
    变量_错误信息 = "操作失败:尚未登录无法获取剩余分钟"
    return -1, 变量_错误信息
  end
  local bool, ret = HttpGetData(arg)
  print("ret = " .. ret)
  if bool and math.tointeger(ret) ~= nil then
    return tonumber(ret), "成功"
  end
  变量_错误信息 = ret
  return -1, 变量_错误信息
end
_ENV["函数_退出注册码登录"] = function()
  local arg = "flag=注册码退出&注册码=%s&访问令牌=%s"
  arg = string.format(arg, 变量_注册码, 变量_访问令牌)
  local bool, ret = HttpGetData(arg)
  if bool and ret == "操作成功" then
    return true
  end
  变量_错误信息 = ret
  return false
end
_ENV["函数_获取注册码备注"] = function()
  local arg = "flag=注册码获取备注&机器码=%s&注册码=%s&项目名称=%s&访问令牌=%s"
  arg = string.format(arg, 变量_机器码, 变量_注册码, 变量_项目名称, 变量_访问令牌)
  local bool, ret = HttpGetData(arg)
  if bool then
    if ret == "" then
      return "操作失败:备注为空"
    else
      return ret
    end
  end
  变量_错误信息 = ret
  return ret
end
_ENV["函数_设置注册码备注"] = function(内容)
  local arg = "flag=注册码设置备注&机器码=%s&注册码=%s&项目名称=%s&访问令牌=%s&备注=%s"
  arg = string.format(arg, 变量_机器码, 变量_注册码, 变量_项目名称, 变量_访问令牌, 内容)
  local bool, ret = HttpGetData(arg)
  if bool and ret == "设置成功" then
    return true
  end
  变量_错误信息 = ret
  return false
end
_ENV["函数_获取项目公告"] = function()
  local arg = "flag=获取项目公告&项目名称=" .. 变量_项目名称
  local bool, ret = HttpGetData(arg)
  if bool then
    if ret == "" then
      return "操作失败:项目公告为空"
    else
      return ret
    end
  end
  变量_错误信息 = ret
  return ret
end
_ENV["函数_获取自定义数据"] = function(key值)
  local arg = "flag=获取项目键名称值&机器码=%s&注册码=%s&项目名称=%s&访问令牌=%s&项目键名称=%s"
  arg = string.format(arg, 变量_机器码, 变量_注册码, 变量_项目名称, 变量_访问令牌, key值)
  local bool, ret = HttpGetData(arg)
  if bool then
    if ret == "" then
      return "操作失败:自定义数据为空"
    else
      return ret
    end
  end
  变量_错误信息 = ret
  return ret
end
_ENV["函数_获取自定义数据Ex"] = function(strProjName, key值)
  local arg = "flag=获取项目键名称值&机器码=%s&注册码=%s&项目名称=%s&访问令牌=%s&项目键名称=%s"
  arg = string.format(arg, 变量_机器码, 变量_注册码, strProjName, 变量_访问令牌, key值)
  local bool, ret = HttpGetData(arg)
  if bool then
    if ret == "" then
      return "操作失败:自定义数据为空"
    else
      return ret
    end
  end
  变量_错误信息 = ret
  return ret
end
_ENV["函数_以卡充卡"] = function(新卡, 老卡)
  local arg = "flag=以卡充卡&新卡=%s&老卡=%s"
  arg = string.format(arg, 新卡, 老卡)
  local bool, ret = HttpGetData(arg)
  if bool and ret == "OK" then
    return true
  end
  变量_错误信息 = ret
  return false
end
_ENV["函数_启动心跳"] = function()
  varThread.exitFlag = false
  varThread.exitMainThread = false
  beginThread(_ENV["线程_心跳验证"], 变量_机器码, 变量_注册码, 变量_项目名称, 变量_访问令牌, 变量_超时重登)
end
_ENV["线程_心跳验证"] = function(变量_机器码, 变量_注册码, 变量_项目名称, 变量_访问令牌, 变量_超时重登)
  if 变量_登录状态 == "试用登录" then
    _ENV["心跳间隔"] = math.random(600, 900)
  else
    _ENV["心跳间隔"] = math.random(3600, 5400)
  end
  print("心跳线程已经启动")
  _ENV["局部_允许失败次数"] = 60
  _ENV["局部_首次通讯"] = true
  while true do
    _ENV["局部_失败重试间隔"] = math.ceil(_ENV["心跳间隔"] / 2)
    if _ENV["局部_首次通讯"] then
      _ENV["局部_等待时间"] = TimeNow() + math.random(300, 600)
    else
      _ENV["局部_等待时间"] = TimeNow() + _ENV["心跳间隔"]
    end
    print("等待时间 = " .. _ENV["局部_等待时间"])
    local iCount = 0
    while _ENV["局部_等待时间"] > TimeNow() do
      sleep(1000)
      if varThread.exitFlag then
        return 0
      end
      iCount = iCount + 1
      if iCount == 60 then
        print("循环时间 = " .. TimeNow())
        iCount = 0
      end
    end
    print("获取卡密时间")
    _ENV["局部_当前通讯次数"] = 0
    while true do
      if _ENV["局部_允许失败次数"] > _ENV["局部_当前通讯次数"] then
        print(" ------------------- 开始取服务器时间 ------------------- ")
        _ENV["局部_剩余分钟"], 变量_错误信息 = _ENV["函数_获取剩余分钟"]()
        printEx(_ENV["局部_剩余分钟"], 变量_错误信息)
        if 0 >= _ENV["局部_剩余分钟"] then
          varThread.exitMainThread = true
          if 变量_登录状态 == "注册登录" then
            if 变量_错误信息 == nil then
              变量_错误信息 = "卡密已过期"
            end
          elseif 变量_错误信息 == nil then
            变量_错误信息 = "试用时间不足"
          end
          return 0
        end
        if _ENV["局部_剩余分钟"] ~= -1 and 变量_错误信息 == "" then
          if 0 >= _ENV["局部_剩余分钟"] then
            变量_错误信息 = "卡密已过期"
            varThread.exitMainThread = true
            break
          end
          _ENV["局部_首次通讯"] = false
          varThread.exitMainThread = false
          break
        elseif 变量_超时重登 and 变量_错误信息 == "操作失败:注册码已经下线." then
          if _ENV["函数_执行注册登录"]() then
            varThread.exitMainThread = false
            break
          end
        elseif string.find(变量_错误信息, "操作失败") ~= nil then
          print(变量_错误信息)
          varThread.exitMainThread = true
        end
      end
      if _ENV["局部_当前通讯次数"] > _ENV["局部_允许失败次数"] then
        print(变量_错误信息)
        varThread.exitMainThread = true
      end
      for i = 0, _ENV["局部_失败重试间隔"] do
        sleep(1000)
        if varThread.exitFlag then
          return 0
        end
      end
      _ENV["局部_当前通讯次数"] = _ENV["局部_当前通讯次数"] + 1
      if varThread.exitFlag then
        return 0
      end
    end
  end
end
_ENV["函数_验证软件是否到期"] = function()
  local diffTime = _ENV["TimeDiff分"](变量_最后登陆时间)
  if diffTime > g_IntCheckDiffTime then
    变量_最后登陆时间 = TimeNow()
    local cardTime, strError = _ENV["函数_获取剩余分钟"]()
    if cardTime > 0 then
      g_IntErrorACcount = 0
      Unit.State.isTimeOut = false
      g_IntCheckDiffTime = MAX_DIFFTIME
      return false
    elseif cardTime <= 0 and strError == "成功" then
      varThread.exitMainThread = true
      if 变量_登录状态 == "注册登录" then
        if 变量_错误信息 == nil then
          变量_错误信息 = "卡密已过期"
        end
      elseif 变量_错误信息 == nil then
        变量_错误信息 = "试用时间不足"
      end
      Unit.State.isTimeOut = true
      return true
    elseif cardTime <= 0 and string.find(strError, "操作失败", 1) ~= nil then
      Unit.State.isTimeOut = true
      变量_错误信息 = strError
      return true
    else
      g_IntErrorACcount = g_IntErrorACcount + 1
      if g_IntErrorACcount > g_IntMaxErrorCount then
        Unit.State.isTimeOut = true
        变量_错误信息 = strError
        return true
      end
      g_IntCheckDiffTime = rnd(MIN_EXPDIFFTIME, MAX_EXPDIFFTIME)
      Unit.State.isTimeOut = false
      return false
    end
  elseif Unit.State.isTimeOut then
    return true
  else
    return false
  end
end
_ENV["函数_激活结束线程状态"] = function()
  varThread.exitFlag = true
end
_ENV["函数_取主线程结束状态"] = function()
  return varThread.exitMainThread
end
_ENV["函数_获取错误信息"] = function()
  return 变量_错误信息
end
function HttpGetData(arg)
  local data = ""
  for i = 1, 3 do
    urlData = string.format("http://get.91shenfan.com/api/%s?%s", 变量_Token, arg)
    data, code = httpGet(urlData, 10)
    if string.find(data, "操作失败", 1) ~= nil then
      return false, data
    end
    if string.find(data, "html>", 1) ~= nil then
      sleep(rnd(800, 1200))
    end
  end
  return true, data
end
_ENV["UI_用户登陆"] = function()
  local isUi = true
  function onClickLogin()
    ui.setEnable("btnLogin", false)
    fileName = g_RunConfigFileName .. "/szylogin.txt"
    ui.saveProfile(fileName)
    userData = readFile(fileName)
    print(userData)
    userData = jsonLib.decode(userData)
    变量_注册码 = userData.regCode
    print(变量_注册码)
    if string.len(变量_注册码) ~= 32 then
      toast("卡密长度非32位,请检查卡密是否错误或者有多余字符!", 0, 0, 14)
    elseif string.len(变量_项目名称) == 0 then
      变量_项目名称 = Unit.State.ProjectName1
      if _ENV["函数_注册登录"]() then
        _ENV["Save项目信息"](变量_项目名称, 变量_机器码)
        isUi = false
      else
        lastError = _ENV["函数_获取错误信息"]()
        if string.find(lastError, "不正确", 1) ~= nil then
          变量_项目名称 = Unit.State.ProjectName2
          if _ENV["函数_注册登录"]() then
            _ENV["Save项目信息"](变量_项目名称, 变量_机器码)
            isUi = false
          else
            lastError = _ENV["函数_获取错误信息"]()
            toast(lastError, 0, 0, 14)
            变量_错误次数 = 变量_错误次数 + 1
          end
        else
          toast(lastError, 0, 0, 14)
          变量_错误次数 = 变量_错误次数 + 1
        end
      end
    elseif _ENV["函数_注册登录"]() then
      _ENV["Save项目信息"](变量_项目名称, 变量_机器码)
      isUi = false
    else
      lastError = _ENV["函数_获取错误信息"]()
      if string.find(lastError, "不正确", 1) ~= nil then
        if 变量_项目名称 == Unit.State.ProjectName1 then
          变量_项目名称 = Unit.State.ProjectName2
        else
          变量_项目名称 = Unit.State.ProjectName1
        end
        if _ENV["函数_注册登录"]() then
          _ENV["Save项目信息"](变量_项目名称, 变量_机器码)
          isUi = false
        else
          lastError = _ENV["函数_获取错误信息"]()
          toast(lastError, 0, 0, 14)
          变量_错误次数 = 变量_错误次数 + 1
        end
      else
        toast(lastError, 0, 0, 14)
        变量_错误次数 = 变量_错误次数 + 1
      end
    end
    ui.setEnable("btnLogin", true)
  end
  function onClickTryLogin()
    ui.setEnable("btnTryLogin", false)
    fileName = g_RunConfigFileName .. "/szylogin.txt"
    变量_项目名称 = "测试项目"
    if _ENV["函数_试用登录"]() then
      toast("试用登录登陆成功!", 0, 0, 12)
      isUi = false
      _ENV["Save项目信息"](变量_项目名称, 变量_机器码)
    else
      lastError = _ENV["函数_获取错误信息"]()
      toast(lastError, 0, 0, 12)
      变量_错误次数 = 变量_错误次数 + 1
    end
    ui.setEnable("btnTryLogin", true)
  end
  function onClickUnBindMac()
    fileName = g_RunConfigFileName .. "/szylogin.txt"
    ui.saveProfile(fileName)
    userData = readFile(fileName)
    print(userData)
    userData = jsonLib.decode(userData)
    变量_注册码 = userData.regCode
    print(变量_注册码)
    if string.len(变量_注册码) == 32 then
      if _ENV["函数_注册解绑Ex"](变量_注册码) then
        toast("卡密解绑成功", 0, 0, 14)
      else
        lastError = _ENV["函数_获取错误信息"]()
        toast("卡密解绑失败,原因:" .. lastError, 0, 0, 14)
      end
      ui.setBackground("btnUnBindMac", "#FF808080")
      ui.setEnable("btnUnBindMac", false)
    else
      toast("卡密长度非32位,请检查卡密是否错误或者有多余字符!", 0, 0, 14)
      ui.setEnable("btnUnBindMac", true)
    end
  end
  function onClickExit()
    ui.saveProfile(g_RunConfigFileName .. "/szylogin.txt")
    isUi = false
  end
  变量_项目名称, 变量_机器码 = _ENV["Read项目信息"]()
  if string.len(变量_机器码) == 0 then
    local devStr = string.format("%s-%d", getDeviceId(), tickCount())
    变量_机器码 = MD5(devStr)
    print("新创建 变量_机器码", 变量_机器码)
  else
    print("本地保存 变量_机器码", 变量_机器码)
  end
  ui.newLayout("cloud", -2)
  titleText = string.format("测试项目&%s&%s", Unit.State.ProjectName2, Unit.State.ProjectVer)
  ui.setTitleText("cloud", titleText)
  ui.addTextView("cloud", "txQQ", "作者VX/QQ: ", -1)
  ui.setTextColor("txQQ", "#ff3399FF")
  ui.setGravity("txQQ", 17)
  ui.newRow("cloud", "row1")
  ui.addTextView("cloud", "tvId", "卡密:", 100)
  ui.addEditText("cloud", "regCode", "", 550)
  ui.newRow("cloud", "row1")
  ui.addButton("cloud", "btnLogin", "登陆", -2, 60)
  ui.setOnClick("btnLogin", "onClickLogin()")
  ui.addButton("cloud", "btnTryLogin", "试用", -2, 60)
  ui.setOnClick("btnTryLogin", "onClickTryLogin()")
  ui.addButton("cloud", "btnExit", "退出", -2, 60)
  ui.setOnClick("btnExit", "onClickExit()")
  ui.setBackground("btnExit", "#FFB60000")
  ui.newRow("cloud", "row1")
  ui.addButton("cloud", "btnUnBindMac", "解绑", -2, 60)
  ui.setOnClick("btnUnBindMac", "onClickUnBindMac()")
  ui.addTextView("cloud", "strTips", "<--解绑已经绑定机器的卡密", -2)
  ui.setBackground("btnUnBindMac", "#FFFCDE16")
  ui.show("cloud", false)
  local loginFile = g_RunConfigFileName .. "/szylogin.txt"
  if fileExist(loginFile) == false then
    loginFile = getWorkPath() .. "/szylogin.txt"
    if fileExist(loginFile) == false then
      loginFile = g_RunConfigFileName .. "/szylogin.txt"
    end
  end
  ui.loadProfile(loginFile)
  while isUi do
    sleep(100)
    if 变量_错误次数 > 5 then
      toast("单日失败次数过多,请稍后再试!", 0, 0, 12)
      sleep(1000)
      exitScript()
      return false
    end
  end
  if Unit.State.isTimeOut == false then
    _ENV["函数_验证注册码详细信息"]()
  end
  local ret = ui.getData()
  ui.dismiss("cloud")
  return ret
end
_ENV["免卡密界面启动"] = function()
  变量_项目名称, 变量_机器码 = _ENV["Read项目信息"]()
  fileName = g_RunConfigFileName .. "/szylogin.txt"
  userData = readFile(fileName)
  print("userData = " .. userData)
  userData = jsonLib.decode(userData)
  变量_注册码 = userData.regCode
  print(变量_注册码)
  if string.len(变量_注册码) ~= 32 then
    toast("卡密长度非32位,请检查卡密是否错误或者有多余字符!", 0, 0, 14)
  elseif string.len(变量_项目名称) == 0 then
    变量_项目名称 = Unit.State.ProjectName1
    if _ENV["函数_注册登录"]() then
      _ENV["Save项目信息"](变量_项目名称, 变量_机器码)
      return true
    else
      lastError = _ENV["函数_获取错误信息"]()
      if string.find(lastError, "不正确", 1) ~= nil then
        变量_项目名称 = Unit.State.ProjectName2
        if _ENV["函数_注册登录"]() then
          _ENV["Save项目信息"](变量_项目名称, 变量_机器码)
          return true
        else
          lastError = _ENV["函数_获取错误信息"]()
          toast(lastError, 0, 0, 14)
          变量_错误次数 = 变量_错误次数 + 1
        end
      else
        toast(lastError, 0, 0, 14)
        变量_错误次数 = 变量_错误次数 + 1
      end
    end
  elseif _ENV["函数_注册登录"]() then
    _ENV["Save项目信息"](变量_项目名称, 变量_机器码)
    return true
  else
    lastError = _ENV["函数_获取错误信息"]()
    if string.find(lastError, "不正确", 1) ~= nil then
      if 变量_项目名称 == Unit.State.ProjectName1 then
        变量_项目名称 = Unit.State.ProjectName2
      else
        变量_项目名称 = Unit.State.ProjectName1
      end
      if _ENV["函数_注册登录"]() then
        _ENV["Save项目信息"](变量_项目名称, 变量_机器码)
        return true
      else
        lastError = _ENV["函数_获取错误信息"]()
        toast(lastError, 0, 0, 14)
        变量_错误次数 = 变量_错误次数 + 1
      end
    else
      toast(lastError, 0, 0, 14)
      变量_错误次数 = 变量_错误次数 + 1
    end
  end
  return false
end
_ENV["Save项目信息"] = function(项目名称, 机器码)
  local fileName = g_RunConfigFileName .. "/szyProjInfo.txt"
  local saveData = string.format("%s|%s", 项目名称, 机器码)
  isOK = writeFile(fileName, saveData)
  if isOK then
    print("保存成功")
  else
    print("保存失败")
  end
end
_ENV["Read项目信息"] = function()
  local projName, macID = "", ""
  local fileName = g_RunConfigFileName .. "/szyProjInfo.txt"
  resultData = readFile(fileName)
  local dataArr = splitStr(resultData, "|")
  if #dataArr == 2 then
    projName, macID = dataArr[1], dataArr[2]
    if projName == Unit.State.ProjectName1 then
      return projName, macID
    end
    if projName == Unit.State.ProjectName2 then
      return projName, macID
    end
  end
  print("文件不存在")
  return projName, macID
end

总结

以上就是全部内容了,有需要更多的可以加入交流群

加入交流群

群号:698307198
如果没有通过,可以联系群主拉你进qun

你可能感兴趣的:(懒人精灵,懒人精灵)