When a LockComponent is activated it gets disabled. You can re-enable it to allow it to be used again. Example:
Code: Select all
-- The coinslot consumes one coin with each click, decrementing coinsNeeded by 1
-- each time, until it reaches 0. Connectors added to the lock will trigger
-- every time a coin is inserted. Connectors added to coinsNeeded will trigger
-- only when all of the required coins have been inserted. Once coinsNeeded
-- reaches 0, additional coins will not be consumed.
-- If you wish for the lock to consume an infinite number of coins, set the
-- coinsNeeded value to a negative number.
defineObject{
name = "dm_lock_coinslot",
baseObject = "lock",
components = {
{
class = "Model",
model = "mod_assets/dmcsb_pack/models/env/dm_coinslot.fbx",
offset = vec(0, 1.74, 0),
staticShadow = true,
},
{
class = "Clickable",
offset = vec(0, 1.74, 0),
size = vec(0.4, 0.4, 0.4),
onClick = function(self)
if self.go.lock:isEnabled() and getMouseItem() and getMouseItem().go.name == self.go.lock:getOpenedBy() then
GameMode.dm_tempLockItem = getMouseItem()
end
end,
},
{
class = "Lock",
sound = "key_lock",
openedBy = "dm_coin_gold",
onActivate = function(self)
local item = GameMode.dm_tempLockItem
if item:getStackSize() > 1 then
item:setStackSize(item:getStackSize()-1)
setMouseItem(item)
end
GameMode.dm_tempLockItem = nil
self:enable()
self.go.coinsNeeded:decrement()
end,
},
{
class = "Counter",
name = "coinsNeeded",
value = 1,
onActivate = function(self)
self.go.lock:disable()
end,
},
},
tags = {"dm","dm_user"},
}