Add factions support
This commit is contained in:
parent
95c1165e28
commit
c4820a8106
5
api.lua
5
api.lua
|
@ -94,6 +94,11 @@ function areas:canInteract(pos, name)
|
||||||
for _, area in pairs(self:getAreasAtPos(pos)) do
|
for _, area in pairs(self:getAreasAtPos(pos)) do
|
||||||
if area.owner == name or area.open then
|
if area.owner == name or area.open then
|
||||||
return true
|
return true
|
||||||
|
elseif factions then
|
||||||
|
local faction_name = factions.get_player_faction(area.owner)
|
||||||
|
if faction_name ~= nil and faction_name == factions.get_player_faction(name) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
else
|
else
|
||||||
owned = true
|
owned = true
|
||||||
end
|
end
|
||||||
|
|
|
@ -286,6 +286,30 @@ minetest.register_chatcommand("area_open", {
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if factions then
|
||||||
|
minetest.register_chatcommand("area_faction_open", {
|
||||||
|
params = "<ID>",
|
||||||
|
description = "Toggle an area open (anyone can interact) or closed to your faction",
|
||||||
|
func = function(name, param)
|
||||||
|
local id = tonumber(param)
|
||||||
|
if not id then
|
||||||
|
return false, "Invalid usage, see /help area_faction_open."
|
||||||
|
end
|
||||||
|
|
||||||
|
if not areas:isAreaOwner(id, name) then
|
||||||
|
return false, "Area "..id.." does not exist"
|
||||||
|
.." or is not owned by you."
|
||||||
|
end
|
||||||
|
local open = not areas.areas[id].faction_open
|
||||||
|
-- Save false as nil to avoid inflating the DB.
|
||||||
|
areas.areas[id].faction_open = open or nil
|
||||||
|
areas:save()
|
||||||
|
return true, ("Area %s for faction members."):format(open and "opened" or "closed")
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
minetest.register_chatcommand("move_area", {
|
minetest.register_chatcommand("move_area", {
|
||||||
params = "<ID>",
|
params = "<ID>",
|
||||||
description = "Move (or resize) an area to the current positions.",
|
description = "Move (or resize) an area to the current positions.",
|
||||||
|
|
Loading…
Reference in New Issue