forked from nalc/areas
parent
95c1165e28
commit
aca830fd22
8
api.lua
8
api.lua
@ -94,9 +94,13 @@ function areas:canInteract(pos, name)
|
||||
for _, area in pairs(self:getAreasAtPos(pos)) do
|
||||
if area.owner == name or area.open then
|
||||
return true
|
||||
else
|
||||
owned = true
|
||||
elseif areas.factions_available and area.faction_open 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
|
||||
end
|
||||
owned = true
|
||||
end
|
||||
return not owned
|
||||
end
|
||||
|
@ -286,6 +286,30 @@ minetest.register_chatcommand("area_open", {
|
||||
})
|
||||
|
||||
|
||||
if areas.factions_available then
|
||||
minetest.register_chatcommand("area_faction_open", {
|
||||
params = "<ID>",
|
||||
description = "Toggle an area open/closed for members in 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", {
|
||||
params = "<ID>",
|
||||
description = "Move (or resize) an area to the current positions.",
|
||||
|
8
hud.lua
8
hud.lua
@ -21,9 +21,13 @@ minetest.register_globalstep(function(dtime)
|
||||
local areaStrings = {}
|
||||
|
||||
for id, area in pairs(areas:getAreasAtPos(pos)) do
|
||||
table.insert(areaStrings, ("%s [%u] (%s%s)")
|
||||
local faction_info = area.faction_open and areas.factions_available and
|
||||
factions.get_player_faction(area.owner)
|
||||
area.faction_open = faction_info
|
||||
table.insert(areaStrings, ("%s [%u] (%s%s%s)")
|
||||
:format(area.name, id, area.owner,
|
||||
area.open and ":open" or ""))
|
||||
area.open and ":open" or "",
|
||||
faction_info and ":"..faction_info or ""))
|
||||
end
|
||||
|
||||
for i, area in pairs(areas:getExternalHudEntries(pos)) do
|
||||
|
2
init.lua
2
init.lua
@ -4,6 +4,8 @@
|
||||
|
||||
areas = {}
|
||||
|
||||
areas.factions_available = minetest.global_exists("factions")
|
||||
|
||||
areas.adminPrivs = {areas=true}
|
||||
areas.startTime = os.clock()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user