本篇教程由作者设定使用 CC BY-NC 协议。
引言
关于cc的基础操作请见这篇教程:从零开始学CC——ComputerCraft扫盲培训班
支持的Iota类型
Iota类型 | 格式 |
---|---|
Null | {"null": true} |
垃圾 | {"garbage": true} ※ |
数值 | double |
布尔 | boolean |
向量 | {"x": double, "y": double, "z": double} |
列表 | 非空列表 [ ] |
实体[玩家除外] | {"uuid": 实体的uuid, [^]"name": string} |
图案iota | {"startDir": 图案起始方向, "angles": 图案笔划顺序} |
※ 若识别格式不符合上述所有iota格式,则自动转换成垃圾。
※ 温馨提示,由于cc不支持中文,所有含有中文的法术在导出时对应部分会自动变成垃圾,导入时则直接无法正常读取。
核心端口
核心端口允许你通过cc对放置于其中的核心进行读取与写入操作,具体函数如下。
核心链接
核心链接允许你通过cc控制链接中的iota发送与接收,你也可以通过此方法实现不同电脑之间iota的快速传输,使用此功能需要安装咒法拓展模组,以下为相关函数,具体功能请见咒法拓展的wiki介绍。
简易法术存储程序
此程序主要用于法术列表简易存储与读取,需要一个核心端口。将代码命名为 hex.lua 放入对应文件夹,输入 hex save <name> 将放置在核心端口中的核心的iota存入指定文件,输入 hex load <name> 读取指定文件并将对应iota复制到核心中。
-- simple utility script to load a hex into a focal port
local completion = require("cc.shell.completion")
shell.setCompletionFunction(shell.getRunningProgram(), completion.build(
{ completion.choice, { "save", "load" } },
completion.file
))
local args = { ... }
if #args < 2 then
error("usage: hex <save/load> <file>")
end
local mode = args[1]
local file = args[2]
if (mode ~= "save") and (mode ~= "load") then
error("mode must be either save or load (case sensitive), got: " .. mode)
end
local p = peripheral.find("focal_port")
if mode == "load" then
if not fs.exists(file) then error("file must exist when loading") end
local f = fs.open(file, "r")
local d = f.readAll()
f.close()
local dat = textutils.unserializeJSON(d)
print("succeded: " .. tostring(p.writeIota(dat)))
else
local f = fs.open(file, "w")
local d = p.readIota()
f.write(textutils.serialiseJSON(d))
f.flush()
f.close()
print("saved Iota to: " .. file)
end
参考链接
https://github.com/SamsTheNerd/ducky-periphs/wiki