New commands
Only in global scripts
-
obj = world.createObject(recordId, count)
- creates a new disabled object -
obj:remove()
-
obj:remove(count)
-
obj:moveInto(inventoryOrContainer)
-
obj2 = obj:split(count)
-
obj.enabled = true/false
-
Also
obj:teleport(cellName, pos)
now can be used to move objects from container/inventory to the world. Teleporting a disabled object enables it.
In any scripts
-
if obj.enabled then ...
-
inventory:find(recordId)
- find first item with this recordId, returns nil if not found (use for stackable items) -
inventory:findAll(recordId)
- return list of all items with this recordId (use for non-stackable items) -
A reminder: there is already existing command
inventory:getAll(type) -> list
, for exampleinventory:getAll(types.Armor)
.
Examples
All examples work only in global scripts
-- send 50 gold from player to a guard
local playerInventory = types.Actor.inventory(player)
local guardInventory = types.Actor.inventory(guard)
playerInventory:find('gold_001'):split(50):moveInto(guardInventory)
-- crafting
local playerInventory = types.Actor.inventory(player)
local ingr1 = playerInventory:find('some_ingredient_01')
local ingr2 = playerInventory:find('some_ingredient_02')
if ingr1 and ingr2 then
ingr1:remove(1)
ingr2:remove(1)
world.createObject('iron dagger'):moveInto(playerInventory)
end
-- disable all statics (e.g. for debugging purposes)
for _, obj in ipairs(player.cell:getAll(types.Static))
obj.enabled = false
end
-- "drop money" curse
local playerInventory = types.Actor.inventory(player)
time.runRepeatedly(
function()
local gold = playerInventory:find('gold_001')
if gold then
gold:split(1):teleport(player.cell.name, player.position)
end
end, 5 * time.second)