哈喽~大家好 时隔这么长时间 我又来了!!
今天我们来介绍两个gg函数以及几个lua的io库中常用的函数
首先是io库
io.open
io.open的意思为打开文件下面列出一段代码作为演示
file=io.open("路径"--[[此处可以为绝对路径或相对路径]],"r')
if not file then
print("文件不存在")
else
print("文件内容为\n"..file:read("*a")
end
在这几行代码中我们来做一一解释
首先第一行的io.open 这里的路径可以为绝对路径或者相对路径 并且路径的类型必须为字符串
而他后面的r 为只读模式
这里简单介绍一下io中的字符
- r 只读取不操作
- w 先将文件内的内容清空后再写入内容 不能读只能写 若没有文件则创建
- a 保留文件内的内容在末尾写入 不能读只能写 若没有文件则创建
- w+ w的基础上可以读
- a+ a的基础上可以读
- b 二进制操作
下面的if与then 这里不做解释 下节课再说叭 因为担心各位说多了听不懂(水)
io.read
io.read 的意思为字符输入流
这里可以参考上面的代码 可以发现我们是这样写的 file:read 那么这和我们的io.read不同呀! 这是为什么呢?
其实这里是可以这样写的 当然你也可以这样写io.read(file,"*a*)
那么这里又有我们看不懂的符号了 这又是什么意思呢?
这边再做一个简单的介绍
- *a 读取文件内所有内容
- *n 读取文件内的数字
- *l 读取下一行内容直到文件末尾返回
当然这里也可以不写 例如file:read() 那么这又代表什么呢?这其实就是读取一行内容
还可以写整数例如file:read(5) 这里的5代表读取文件内指定字符个数
io.write
io.write 的意思为字符输出流 这里写一段代码来介绍如何使用叭!
file=io.open("路径","w")
file:write("内容")
这里第一行不再做解释 详情可查看上面介绍
那么这里的file:write是什么意思呢?当然这里也可以写为io.weite(file,"内容")
需要注意的是可以操作格式为w可以不写write但是如果写就必须写输出的内容
那么这里顾名思义就是往一个文件内写入一个内容 这个内容就是我那里的字符串 "内容"
io.close
io.close 的意思为关闭流 简单点理解就是 把此次文件操作在内存中释放 避免炸内存
这里结合上面write的代码接着写一下
file:close()--或者 io.close(file)
这个就不多做介绍了
io.seek
这里先写一段代码作为演示 再做解释
file=io.open("路径","r")
file:seek("set",10)
file=file:read("*all")
print(file)
这里同样的 file:seek 同样可以写成io.seek(file)
这里可以看到 他又出现了一个字符 所以我们再次简单介绍一下
- set 从文件头开始
- cur 从当前位置开始 --默认
- end 从文件末尾开始
那这里我们就可以知道set就是从文件头开始读取 那么后面的10又是什么呢?
其实很好理解 就是从文件头开始的第10个字节后开始读取 直到文件尾
那么这里本人最常用的几个io函数就已经介绍完了 剩下两个gg函数是什么呢?
gg.setValues
这个函数就是把数组解析 来设置地址的值
同样的这里列出一段代码
gg.setValues({{address=0xfffff,flags=4,value=10}})
可以看到这里出现了address flags value 等这些是什么意思呢?
我们这里也做一个简单的介绍
- address 地址 代表游戏内存中的地址
- flags 类型 同上只不过这里是代表类型
- value 值 可以理解为要修改的数值 可以为字符串也可以为整数
- freeze 是否冻结 true是 false否
- name 可以理解为地址的备注
因为关于地址的东西这里不是很好说 请自行测试或添加作者(文章末尾)
gg.getValues
同上 不过此函数是 获取地址的各项值
a=gg.getValues({{address=0xfffff,flags=4}})
print(a)
这里返回值类型为数组类型 2维数组
请自行测试或添加作者(文章末尾)
那么今天讲的就是这些啦~ https://qm.qq.com/cgi-bin/qm/qr?k=FwQ20fENB-ELRnZqq2Vf8lcNLouIFSME&noverify=0
那么下期见~