Appearance
其他函数
获取纳秒时间戳
获取纳秒级时间戳
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)功能:使当前线程暂停执行指定的秒数。
参数:
seconds:number,延迟的秒数(可以是浮点数)。
返回值:无。
注意:此函数会阻塞当前线程,直到指定的时间过去。
示例:
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)对应的配置值。
参数:
filename:string,INI配置文件名 (相对脚本目录的文件路径,不能包含"..")。section:string,配置项所在的节名。key:string,要读取的配置项的键名。
返回值:string,读取到的配置项的值;如果文件、节或键不存在,则返回 nil。
示例:
假设 config.ini 内容如下:
ini
[Network]
IP=192.168.1.1
Port=8080
[User]
Name=testuserlua
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格式的配置文件中的指定节和键。如果文件、节或键不存在,它们将被创建。
参数:
filename:string,INI配置文件名 (相对脚本目录的文件路径,不能包含"..")。section:string,配置项所在的节名。key:string,要写入的配置项的键名。newValue:string,要写入的新值。
返回值: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)功能:打开一个文件,并返回一个文件句柄,用于后续的文件读写操作。
参数:
filename:string,要打开的文件路径 (相对脚本目录的文件路径,不能包含"..")。mode:string,文件打开模式字符串。"r":只读模式(默认)。"w":只写模式,如果文件存在则清空,不存在则创建。"a":追加模式,在文件末尾写入,不存在则创建。"r+":读写模式,不清空文件。"w+":读写模式,如果文件存在则清空,不存在则创建。"a+":读写模式,在文件末尾写入,不存在则创建。
返回值:
file:userdata,成功打开文件返回文件句柄;如果失败则为nil。err:string,如果打开失败,返回错误信息;否则为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代码字符串进行加密。
参数:
code:string,要加密的Lua代码字符串。key:string,加密密钥。
返回值: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_b64:string,经过Base64编码的加密代码字符串。key:string,解密密钥。
返回值:
success:boolean,如果解密并执行成功返回true,否则返回false。result:any,如果成功,返回被执行代码的最后表达式结果或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 状态码。
参数:
url:string,目标地址(必须)。timeout:integer,可选,超时时间(毫秒),默认5000毫秒(5 秒)。
返回值:
- 请求成功时:
body:string,响应正文内容。code:integer,HTTP 响应状态码(例如 200、404 等)。
- 请求失败时:
nilcode:integer,HTTP 响应码(可能为 0,代表未连接成功)。errmsg:string,失败原因描述。
示例:
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 请求,支持自定义内容类型及超时时间。
参数:
url:string,目标地址(必须)。data:string,POST 请求体数据(必须)。ctype:string,可选,Content-Type头部值,默认"application/x-www-form-urlencoded"。timeout:integer,可选,超时时间(毫秒),默认5000毫秒(5 秒)。
返回值:
- 请求成功时:
body:string,响应正文内容。code:integer,HTTP 响应状态码。
- 请求失败时:
nilcode:integer,HTTP 响应码(可能为 0,代表未连接成功)。errmsg:string,失败原因描述。
示例:
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字符串
返回值:
uuidstr:string,设备的uuid字符串。
脚本计时-按剩余时间
脚本计时-按剩余时间
lua
local expired, left = device_limit_due(script_uid,time)功能:设置计时,脚本第一次运行时开始倒计时,到时间后返回是否到期和剩余时间
参数:
script_uid:string,脚本的标识符 不能重复推荐设置长一些(必须)。time:integer,使用时长 单位小时(必须)。
返回值:
expired:boolean,到期返回 true 不到期返回 false 。left:integer,剩余的分钟。
示例:
lua
-- 设备按使用时长 1 小时到期
local expired, left = device_limit_due("myscript-123456", 1)
print("是否到期:", expired, "剩余分钟:", left)脚本计时-按日期
脚本计时-按剩余时间
lua
local expired, left = datetime_limit_due(time)功能:设置计时,到设置的日期时输出到期
参数:
time:integer,日期 格式如 2025-08-14 17:50:00(必须)。
返回值:
expired:boolean,到期返回 true 不到期返回 false 。left:integer,剩余的分钟。
示例:
lua
-- 指定日期到期
local expired2, left2 = datetime_limit_due("2025-08-14 17:50:00")
print("是否到期:", expired2, "剩余分钟:", left2)创建目录
创建目录
lua
local ok, err = io_mkdir(dirname)功能:在项目目录创建目录
参数:
dirname:string,目录名称(必须)。
返回值:
ok:boolean,成功返回 true 不成功返回 false 。err:string,创建不成功时返回的错误信息。
示例:
lua
local ok, err = io_mkdir("testDir")
if ok then
print("创建成功")
else
print("失败:", err)
end删除目录
删除目录
lua
local count, rmErr = io_remove_dir(dirname)功能:在项目目录删除创建的目录
参数:
dirname:string,目录名称(必须)。
返回值:
count:integer,删除的文件/目录总数量; -1表示删除动作失败rmErr:string,失败原因
示例:
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)功能:输出目录的所有文件名称
参数:
dirname:string,目录名称(必须)。
返回值:
files:table,字符串数组 或 nil。每个元素是文件名listErr:string,错误信息
示例:
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)功能:输出目录的所有文件名称
参数:
filename:string,文件名称(必须)。
返回值:
md5_hex:string,32位小写十六进制MD5值err:string,错误信息