Skip to content
On this page

其他函数

获取纳秒时间戳

获取纳秒级时间戳

lua
local ts = getNanoTime()

功能:获取当前系统时间的纳秒级时间戳。

参数:无。

返回值number,表示当前时间的纳秒级时间戳。

示例

lua
local ts = getNanoTime()
print("纳秒时间戳:", ts)

获取微秒时间戳

获取微秒级时间戳

lua
local usTime = getMicroTime()

功能:获取当前系统时间的微秒级时间戳。

参数:无。

返回值number,表示当前时间的微秒级时间戳。

示例

lua
local usTime = getMicroTime()
print("微秒时间戳:", usTime)

获取毫秒时间戳

获取毫秒级时间戳

lua
local msTime = getMilliTime()

功能:获取当前系统时间的毫秒级时间戳。

参数:无。

返回值number,表示当前时间的毫秒级时间戳。

示例

lua
local msTime = getMilliTime()
print("毫秒时间戳:", msTime)

延迟 (阻塞)

阻塞式延迟函数

lua
sleep(seconds)

功能:使当前线程暂停执行指定的秒数。

参数

  • secondsnumber,延迟的秒数(可以是浮点数)。

返回值:无。

注意:此函数会阻塞当前线程,直到指定的时间过去。

示例

lua
print("开始等待...")
sleep(1.5) -- 暂停1.5秒
print("等待结束。")

清除控制台

清除控制台输出

lua
clearConsole()

功能:清除当前控制台的所有输出内容。

参数:无。

返回值:无。

示例

lua
print("这是一些输出...")
sleep(1)
clearConsole() -- 清除前面打印的内容
print("控制台已清除。")

读取配置项

读取INI配置项

lua
local value = readIni(filename, section, key)

功能:从INI格式的配置文件中读取指定节(Section)和键(Key)对应的配置值。

参数

  • filenamestring,INI配置文件名 (相对脚本目录的文件路径,不能包含"..")。
  • sectionstring,配置项所在的节名。
  • keystring,要读取的配置项的键名。

返回值string,读取到的配置项的值;如果文件、节或键不存在,则返回 nil

示例

假设 config.ini 内容如下:

ini
[Network]
IP=192.168.1.1
Port=8080

[User]
Name=testuser
lua
local ip = readIni("config.ini", "Network", "IP")
local port = readIni("config.ini", "Network", "Port")
local username = readIni("config.ini", "User", "Name")
local non_existent = readIni("config.ini", "User", "Password")

print("IP:", ip)           -- 输出: IP: 192.168.1.1
print("Port:", port)         -- 输出: Port: 8080
print("Username:", username)     -- 输出: Username: testuser
print("Non-existent:", non_existent) -- 输出: Non-existent: nil

写入配置项

写入INI配置项

lua
local success = writeIni(filename, section, key, newValue)

功能:将指定的配置值写入INI格式的配置文件中的指定节和键。如果文件、节或键不存在,它们将被创建。

参数

  • filenamestring,INI配置文件名 (相对脚本目录的文件路径,不能包含"..")。
  • sectionstring,配置项所在的节名。
  • keystring,要写入的配置项的键名。
  • newValuestring,要写入的新值。

返回值boolean,写入成功返回 true,失败返回 false

示例

lua
local success1 = writeIni("config.ini", "Network", "IP", "192.168.1.100")
if success1 then
    print("IP地址更新成功")
end

local success2 = writeIni("config.ini", "NewSection", "NewKey", "NewValue")
if success2 then
    print("新节和键写入成功")
end

-- 检查写入结果
local new_ip = readIni("config.ini", "Network", "IP")
print("更新后的IP:", new_ip)

打开文件

打开文件

lua
local file, err = io.open(filename, mode)

功能:打开一个文件,并返回一个文件句柄,用于后续的文件读写操作。

参数

  • filenamestring,要打开的文件路径 (相对脚本目录的文件路径,不能包含"..")。
  • modestring,文件打开模式字符串。
    • "r":只读模式(默认)。
    • "w":只写模式,如果文件存在则清空,不存在则创建。
    • "a":追加模式,在文件末尾写入,不存在则创建。
    • "r+":读写模式,不清空文件。
    • "w+":读写模式,如果文件存在则清空,不存在则创建。
    • "a+":读写模式,在文件末尾写入,不存在则创建。

返回值

  • fileuserdata,成功打开文件返回文件句柄;如果失败则为 nil
  • errstring,如果打开失败,返回错误信息;否则为 nil

示例

lua
-- 写入文件
local file_w, err_w = io.open("test.txt", "w")
if file_w then
    file_w:write("Hello, Lua!\n")
    file_w:write("This is a test.\n")
    file_w:close()
    print("文件写入成功。")
else
    print("文件写入失败:", err_w)
end

-- 读取文件
local file_r, err_r = io.open("test.txt", "r")
if file_r then
    local content = file_r:read("*all") -- 读取所有内容
    file_r:close()
    print("文件内容:\n", content)
else
    print("文件读取失败:", err_r)
end

加密代码

加密代码

lua
local enc = encrypt_code(code, key)

功能:使用指定的密钥对Lua代码字符串进行加密。

参数

  • codestring,要加密的Lua代码字符串。
  • keystring,加密密钥。

返回值string,加密后的代码字符串。

示例

lua
local my_code = "print('Hello from encrypted code!')"
local my_key = "mySecretKey123"

local encrypted_code = encrypt_code(my_code, my_key)
print("加密后的代码:", encrypted_code)

解密并执行代码

解密并执行代码

lua
local success, result = decrypt_and_exec(enc_b64, key)

功能:解密Base64编码的加密代码,并尝试执行它。

参数

  • enc_b64string,经过Base64编码的加密代码字符串。
  • keystring,解密密钥。

返回值

  • successboolean,如果解密并执行成功返回 true,否则返回 false
  • resultany,如果成功,返回被执行代码的最后表达式结果或 true;如果失败,返回错误信息字符串。

示例

lua
local my_code = [[

print("hello world from encrypted code!")

print(get_uuid())
-- 设备按使用时长 1 小时到期
local expired, left = device_limit_due("myscript-123456", 1)
print("是否到期:", expired, "剩余分钟:", left)

-- 指定日期到期
local expired2, left2 = datetime_limit_due("2025-08-14 17:50:00")
print("是否到期:", expired2, "剩余分钟:", left2)


]]
local my_key = "mySecretKey123"

-- 先加密并模拟传输后
local encrypted_code_raw = encrypt_code(my_code, my_key)
....

local enc_b64_mock = "awdfadawdad.........." -- 替换为实际的加密代码

local success, result = decrypt_and_exec(enc_b64_mock, my_key)

if success then
    print("代码执行成功,结果:", result)
else
    print("代码执行失败,错误:", result)
end

发送 HTTP GET 请求

发送 HTTP GET 请求

lua
local body, code = http_get(url [, timeout])

功能:向指定 URL 发送 HTTP GET 请求,并返回响应内容和 HTTP 状态码。

参数

  • urlstring,目标地址(必须)。
  • timeoutinteger,可选,超时时间(毫秒),默认 5000 毫秒(5 秒)。

返回值

  • 请求成功时:
    • bodystring,响应正文内容。
    • codeinteger,HTTP 响应状态码(例如 200、404 等)。
  • 请求失败时:
    • nil
    • codeinteger,HTTP 响应码(可能为 0,代表未连接成功)。
    • errmsgstring,失败原因描述。

示例

lua
local body, code = http_get("https://httpbin.org/get", 3000)

if body then
    print("状态码:", code)
    print("响应内容:", body)
else
    print("请求失败,状态码:", code, "错误信息:", code)
end

发送 HTTP POST 请求

发送 HTTP POST 请求

lua
local body, code = http_post(url, data [, ctype] [, timeout])

功能:向指定 URL 发送 HTTP POST 请求,支持自定义内容类型及超时时间。

参数

  • urlstring,目标地址(必须)。
  • datastring,POST 请求体数据(必须)。
  • ctypestring,可选,Content-Type 头部值,默认 "application/x-www-form-urlencoded"
  • timeoutinteger,可选,超时时间(毫秒),默认 5000 毫秒(5 秒)。

返回值

  • 请求成功时:
    • bodystring,响应正文内容。
    • codeinteger,HTTP 响应状态码。
  • 请求失败时:
    • nil
    • codeinteger,HTTP 响应码(可能为 0,代表未连接成功)。
    • errmsgstring,失败原因描述。

示例

lua
local data = "name=Lua&lang=CN"
local body, code = http_post("https://httpbin.org/post", data, "application/x-www-form-urlencoded", 5000)

if body then
    print("状态码:", code)
    print("响应内容:", body)
else
    print("请求失败,状态码:", code, "错误信息:", errmsg)
end

返回设备UUID

返回设备UUID

lua
local uuidstr = get_uuid()

功能:代码的方式返回设备的uuid字符串

返回值

  • uuidstrstring,设备的uuid字符串。

脚本计时-按剩余时间

脚本计时-按剩余时间

lua
local expired, left = device_limit_due(script_uid,time)

功能:设置计时,脚本第一次运行时开始倒计时,到时间后返回是否到期和剩余时间

参数

  • script_uidstring,脚本的标识符 不能重复推荐设置长一些(必须)。
  • timeinteger,使用时长 单位小时(必须)。

返回值

  • expiredboolean,到期返回 true 不到期返回 false 。
  • leftinteger,剩余的分钟。

示例

lua
-- 设备按使用时长 1 小时到期
local expired, left = device_limit_due("myscript-123456", 1)
print("是否到期:", expired, "剩余分钟:", left)

脚本计时-按日期

脚本计时-按剩余时间

lua
local expired, left = datetime_limit_due(time)

功能:设置计时,到设置的日期时输出到期

参数

  • timeinteger,日期 格式如 2025-08-14 17:50:00(必须)。

返回值

  • expiredboolean,到期返回 true 不到期返回 false 。
  • leftinteger,剩余的分钟。

示例

lua
-- 指定日期到期
local expired2, left2 = datetime_limit_due("2025-08-14 17:50:00")
print("是否到期:", expired2, "剩余分钟:", left2)

创建目录

创建目录

lua
local ok, err = io_mkdir(dirname)

功能:在项目目录创建目录

参数

  • dirnamestring,目录名称(必须)。

返回值

  • okboolean,成功返回 true 不成功返回 false 。
  • errstring,创建不成功时返回的错误信息。

示例

lua
local ok, err = io_mkdir("testDir")
if ok then
  print("创建成功")
else
  print("失败:", err)
end

删除目录

删除目录

lua
local count, rmErr  = io_remove_dir(dirname)

功能:在项目目录删除创建的目录

参数

  • dirnamestring,目录名称(必须)。

返回值

  • countinteger,删除的文件/目录总数量; -1表示删除动作失败
  • rmErrstring,失败原因

示例

lua
local count, rmErr = io_remove_dir("testDir1")
if count >= 0 then
  print("删除总数:", count)
else
  print("删除失败:", rmErr)
end

输出目录的所有文件名称

输出目录的所有文件名称

lua
local files, listErr = io_list_files(dirname)

功能:输出目录的所有文件名称

参数

  • dirnamestring,目录名称(必须)。

返回值

  • filestable,字符串数组 或 nil。每个元素是文件名
  • listErrstring,错误信息

示例

lua
local files, listErr = io_list_files("./")  -- 脚本根目录
if files then
  for i, filename in ipairs(files) do
      print(i, filename)
  end
else
  print("列举失败:", listErr)
end

计算文件的MD5值

计算文件的MD5值

lua
local md5_hex, err = get_file_md5(filename)

功能:输出目录的所有文件名称

参数

  • filenamestring,文件名称(必须)。

返回值

  • md5_hexstring,32位小写十六进制MD5值
  • errstring,错误信息