天天动画片 > 八卦谈 > 【QRSpeed】读取和写入的原理

【QRSpeed】读取和写入的原理

八卦谈 佚名 2024-03-11 12:28:22

本专栏内容来自作者学习qr的经验总结,如发现错误欢迎在评论区指出,我会及时改正。

如果你是个QR新人,在看这篇专栏前建议先看看基础教程和变量大全


变量大全:

https://icean.moe/

1.文件与文件夹

dic.txt:qr的词库文件是utf-8编码的txt(文本文件)。相当于是一张纸,代码写在纸上,qr在运行的时候会根据这张纸上的内容来运行。文件夹就像现实中的文件夹一样,用来存放文件(写代码的纸张)。

qr在运行的时候,会读取手机内存里QR/QRDic/dic.txt的文件。

文件浏览器中的QR文件夹
打开QR文件夹后,QRDic里面存放的就是词库和数据
data里面是数据,dic.txt是当前使用的词库,如果更换词库只需改文件名就可以

也就是说,在QRDic文件夹里叫dic.txt的文件是当前词库。如果更换词库的话,只需要把dic.txt删除或改名,再把要用的词库改名为dic.txt,放到QRDic文件夹里,就完成手动更换词库。

data:在读取和写入的时候,qr的数据会以utf-8编码写在QR/QRDic/data文件夹里面,后面具体位置取决于读写的代码。总的来说,data里面存放的是QR的数据。

2.读取与写入

$读 文件夹/文件 键 值$

$写 文件夹/文件 键 值$

读和写都分成4块,3个空格隔开,这四块都要完整。

先说写入,举个例子

测试

$写  游戏/个人信息 金币 10$

完成

“测试”是执行条件,就是输入测试后开始执行后面的代码。

第一块“写”是指这条指令是写入数据。

第二块“游戏/个人信息”是在data文件夹里创建一个“游戏”文件夹,里面创建一个“个人信息”文本文件。

第三块“金币”和第四块“10”是写入“个人信息”文件里的内容。

“完成”是机器人回复的消息

在输入“测试”后,机器人回复“完成”,然后打开QR/QRdic/data,你会看到

创建了“游戏”文件夹

文件夹里创建了一个叫“个人信息”的文件
文件里面第1行表示是QR的数据文件,第2行是最后更改时间,接下来就是我们写入的数据,因为文件是utf-8编码,不记录中文,所以“金币”两个字被记录为“\u91D1\u5E01”在读取的时候qr会自动识别回中文。所以第3行写的是“金币=10”

总结:

$写 游戏/个人信息 金币 10$

会在data文件夹里创建一个“游戏”文件夹,里面创建一个“个人信息”文件,里面写着“金币=10”。

接下来是读取

读取

a:$读 游戏/个人信息 金币 0$

%a%

“读取”是执行条件,输入“读取”后开始执行后面代码

“a:”表示把后面读取出来的结果赋值给a

第一块“读”表示指令为读取

第二块“游戏/个人信息”指的是文件位置,和写入一样

第三块“金币”,表示在“个人信息”文件里寻找键为“金币”的内容,并输出它对应的值。也就是找“金币=xxx”(xxx就是要寻找的值),假设这个时候文件里写的是“金币=10”那读取出来的结果就是10,a最后就等于10。

第三块“0”,如果找不到“金币=xxx”(可能没有写入),就默认为第三块的数据,也就是0

“%a%”表示输出a的值

总结:

$读 游戏/个人信息 金币 0$

会读取“游戏”文件夹里叫“个人信息”的文件里,“金币=xxx”的内容,如果文件里有“金币=10”那读取出来的结果就是10,如果找不到“金币=xxx”,就使用最后一块的“0”作为返回值

读取和写入的相同:

1.都是分成四块,由三个空格隔开

2.第一块为“读/写”,第二块为文件在data里的存放位置,第三块为“键”,第四块为“值”

读取和写入的不同:

写入的第四块“值”是具体写入数据

读取的第四块“值”是在找不到对应的第三块“键”的时候使用的默认返回值

应用:

如果想让初始时金币都默认为100,可以把读取后面的值换成100

金币

a:$读 游戏/个人信息 金币 100$

当前金币为:%a%

如果没有写入数据,那么我发送“金币”,因为找不到对应的数据,所以机器人的回复是“当前金币为:100”

加金币

a:$读 游戏/个人信息 金币 100$

$写 游戏/个人信息 金币 [%a%+10]$

加金币完成

[ ] 中括号表示运算,%a%是a的值

输入“加金币”后,先读取“金币=xxx”,因为找不到,所以默认是100,然后我们在这100的基础上加金币,写入100+10,也就是110,这个时候“个人信息”文件里写着“金币=110”,也就实现了初始金币为100的效果。

如果我们再输入“加金币”,这个时候“金币=110”,所以是写入110+10,最后“个人信息”文件里写的是“金币=120”。

这个时候我们再输入“金币”,因为“个人信息”文件里写的“金币=120”,所以机器人回复“当前金币为:120”。因为我们加了两次金币,每次都是10,所以变成120。

总结:

“读取”的最后一块“值”决定了初始数值。

3.关于文件存储位置

读和写的第二块“文件/文件夹”单独拿出来讲

前面的

$写 游戏/个人信息 金币 10$

这样其实并不能区分每一个人,因为不管是谁发“金币”查看到的金币结果都是一样的,不管是谁发送“加金币”,加的也都是一起的。

我们需要一个%QQ%变量来区别每一个人的QQ,用不同的文件或者文件夹存储。

举个例子

测试

$写 游戏/%QQ%/个人信息 金币 100$

完成

qr会把%QQ%用发消息人的QQ号代替,所以打开data你会看到

data里的“游戏”文件夹
这个数字是我的QQ号,每一个发送过指令的QQ号都会专门创建一个文件夹,根据QQ号记录不同的人的金币
这里面就写着“金币=100”

因为里面有一个文件夹是按QQ号来区分,所以所有关于我的金币的操作全部都是在我QQ号文件夹里进行,也就是我的金币增加减少不会影响到别人,这样每个人才有了各自的金币数据,而不是所有人共用一个金币数据。

比如这个时候群里其他群友也发了“测试”,游戏文件夹里看到的是这样的

前面的是发“测试”的群友的QQ,他的金币数据存在他QQ号的文件夹里,我存在我的QQ号文件夹里,两个数据就分开了,互不干扰

这个时候如果我们要加减某个人的金币,只要把

$写 游戏/%QQ%/个人信息 金币 100$

里的%QQ%改成对应的QQ号就可以,一般都是发消息的人修改他自己的数据,所以用%QQ%就可以,同理还有%群号%,如果把%QQ%换成%群号%,那么整个群的金币公用,换一个群就不一样了,如果既有%群号%又有%QQ%

$写 游戏/%群号%/%QQ%/个人信息 金币 10$

那么每一个群的每一个人都有各自的数据,比如我在A群攒到了200金币,到了B群,因为群号不同,金币又是默认的100。

也就是说,如果不区分群号,两个群都有机器人,那么两个群不论在哪个群,我金币数量都是通用的。如果其他数据也都不区分群号,那么就能实现多个群的存档共用。

文件夹和文件的存储位置其实都可以自己决定

比如有的人喜欢分很多个文件

$写 游戏/%QQ%/个人信息/金币 a 10$

$写 游戏/%QQ%/背包/签到卡 a 1$

比如有的人不喜欢分文件

$写 %QQ% 金币 10$

$写 %QQ% 签到卡 1$

注意,看清楚空格的位置,三个空格隔开四块内容,要分清楚四块内容分别指什么(前面有说)

当然我个人认为文件位置最好合理规划,方便记忆

$写 游戏/%QQ%/个人信息 金币 10$

$写 游戏/%QQ%/背包 签到卡 1$

以上这些写法都是可以的,大家只要记住四块分别对应的含义是什么就可以,具体的怎么方便怎么写

有的人喜欢无限套娃

$写 游戏/%QQ%/个人信息/金币/金币数量/数量金币/金数量币/量数金币/币量金数/金量数币 金币 10$
$写 游戏/%QQ%/套娃/套娃/套娃/套娃/........ 套娃 娃$

这样也是可以的,只不过白给自己和qr加了很多没有必要的工作量

qr新手入门只要掌握读取,写入和如果就可以,其实并不复杂

读取和写入

1.要注意分成四块,三个空格隔开

2.注意文件夹和文件的区别,分清楚数据存放在哪

3.分清楚读写时的键和值的区别,读取时找不到对应的键,就使用最后一块的值作为结果

读取和写入就这些了

看的人多的话稍后我更新“如果”的内容

本文标题:【QRSpeed】读取和写入的原理 - 八卦谈
本文地址:www.ttdhp.com/article/50806.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们