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