如果你是个QR新人,在看这篇专栏前建议先看看基础教程和变量大全
https://icean.moe/
1.文件与文件夹
dic.txt:qr的词库文件是utf-8编码的txt(文本文件)。相当于是一张纸,代码写在纸上,qr在运行的时候会根据这张纸上的内容来运行。文件夹就像现实中的文件夹一样,用来存放文件(写代码的纸张)。
qr在运行的时候,会读取手机内存里QR/QRDic/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,你会看到
总结:
$写 游戏/个人信息 金币 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你会看到
因为里面有一个文件夹是按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加了很多没有必要的工作量
读取和写入就这些了
看的人多的话稍后我更新“如果”的内容
「艾尔登法环」梅琳娜手办开订 立体手办▪
万代「艾尔登法环」白狼战鬼手办开订 立体手办▪
「夏目友人帐」猫咪老师粘土人开订 立体手办▪
「五等分的新娘∬」中野三玖·白无垢版手办开订 立体手办▪
「海贼王」乌索普Q版手办开订 立体手办▪
良笑社「初音未来」新手办开订 立体手办▪
「黑岩射手DAWN FALL」死亡主宰手办开订 立体手办▪
「盾之勇者成名录」菲洛手办登场 立体手办▪
「魔法少女小圆」美树沙耶香手办开订 立体手办▪
「咒术回战」七海建人粘土人登场 立体手办▪
「五等分的新娘」中野二乃白无垢手办开订 立体手办▪
「为美好的世界献上祝福!」芸芸粘土人开订 立体手办▪
「公主连结 与你重逢」六星可可萝手办开订 立体手办▪
「女神异闻录5」Joker雨宫莲手办开订 立体手办▪
「间谍过家家」约尔・福杰粘土人登场 立体手办▪
「街角魔族 2丁目」吉田优子手办开订 立体手办▪
「火影忍者 疾风传」旗木卡卡西·暗部版粘土人登场 立体手办▪
「佐佐木与宫野」宫野由美粘土人开订 立体手办▪
「盾之勇者成名录」第2季拉芙塔莉雅手办开订 立体手办▪
「咒术回战」两面宿傩Q版坐姿手办开订 立体手办▪
「DATE·A·BULLET」时崎狂三手办开订 立体手办▪
「狂赌之渊××」早乙女芽亚里粘土人开订 立体手办▪
「魔道祖师」魏无羨粘土人开订 立体手办▪
「新·奥特曼」奥特曼手办现已开订 立体手办▪