组件名:inventory_controller
此组件由物品栏控制器升级提供。
有了此API,机器人可以接收有关物品或物品栏的额外信息,并且可以向指定槽位放入物品或从中取出物品。
大多数操作所需的方向(side)遵循Sides(方向面) API中的方向。若不指定方向或指定错误的方向,函数通常会报错。要与机器人自身的物品栏互动需要使用back
方向,这也使得机器人无法与在其身后的物品容器互动。机器人也不能访问它们的左右两边。综上,你只能与机器人前方、上方或下方的物品容器互动。
回调函数:
getInventorySize(side: number): number or nil[, string]
nil
与函数执行失败原因的描述(通常为no inventory
,代表对应方向不存在物品容器)。getStackInSlot(side:number, slot:number):table
nil
。用此函数获取机器人自身物品栏中物品信息的做法已经过时,请使用getStackInInternalSlot
代替。nil
,否则返回一个表,其中包含槽位中物品的以下信息:insertIdsInConverters=true
才会出现此字段,可能因服务端设定而不同!oc:item.FloppyDisk
。
getStackInInternalSlot(slot:number):table
dropIntoSlot(side:number, slot:number[, count:number]):boolean[, string]
true
,否则返回false
与报错信息。robot.transferTo
函数来进行此操作。suckFromSlot(side:number, slot:number[, count:number]):boolean
true
,否则返回false
。robot.transferTo
函数来进行此操作。equip():boolean
true
,否则返回false
。此操作通常都会成功。store(side:number, slot:number, dbAddress:string, dbSlot:number):boolean
storeInternal(slot:number, dbAddress:string, dBslot:number):boolean
compareToDatabase(slot:number, dBaddress:string, dBslot:number):boolean
true
。compareStacks(side:number, slotA:number, slotB:number):boolean
true
。getSlotMaxStackSize(side:number, slot:number):number
getSlotStackSize(side:number, slot:number):number
样例:
输出slot所指示位置的物品元数据。
local component = require("component") local sides = require("sides") local slot = 1 local item = component.inventory_controller.getStackInInternalSlot(slot) if item then print("Item name: ", item.name) print("Item count: ", item.size) print("Item damage: ", item.damage) else print("Slot " .. slot .. " is empty") end
`