forked from minetest-mods/areas
Shorten lines
This commit is contained in:
285
chatcommands.lua
285
chatcommands.lua
@ -22,7 +22,9 @@ minetest.register_chatcommand("protect", {
|
||||
|
||||
local canAdd, errMsg = areas:canPlayerAddArea(pos1, pos2, name)
|
||||
if not canAdd then
|
||||
minetest.chat_send_player(name, "You can't protect that area: "..errMsg)
|
||||
minetest.chat_send_player(name,
|
||||
"You can't protect that area: "
|
||||
..errMsg)
|
||||
return
|
||||
end
|
||||
|
||||
@ -38,103 +40,101 @@ end})
|
||||
|
||||
minetest.register_chatcommand("set_owner", {
|
||||
params = "<PlayerName> <AreaName>",
|
||||
description = "Protect an area beetween two positions and give a player access to it without setting the parent of the area to any existing area",
|
||||
description = "Protect an area beetween two positions and give"
|
||||
.." a player access to it without setting the parent of the"
|
||||
.." area to any existing area",
|
||||
privs = {areas=true},
|
||||
func = function(name, param)
|
||||
if param and param ~= "" then
|
||||
local found, _, ownername, areaname = param:find('^([^%s]+)%s(.+)$')
|
||||
local found, _, ownername, areaname = param:find('^([^%s]+)%s(.+)$')
|
||||
|
||||
if not found then
|
||||
minetest.chat_send_player(name, "Incorrect usage, see /help set_owner")
|
||||
return
|
||||
end
|
||||
|
||||
local pos1, pos2 = {}, {}
|
||||
if areas:getPos1(name) and areas:getPos2(name) then
|
||||
pos1 = areas:getPos1(name)
|
||||
pos2 = areas:getPos2(name)
|
||||
pos1, pos2 = areas:sortPos(pos1, pos2)
|
||||
else
|
||||
minetest.chat_send_player(name, 'You need to select an area first')
|
||||
return
|
||||
end
|
||||
|
||||
if not areas:player_exists(ownername) then
|
||||
minetest.chat_send_player(name, 'The player "'..ownername..'" does not exist')
|
||||
return
|
||||
end
|
||||
|
||||
--local canAdd, errMsg = areas:canPlayerAddArea(pos1, pos2, name)
|
||||
--if not canAdd then
|
||||
-- minetest.chat_send_player(name, "You can't protect that area: "..errMsg)
|
||||
-- return
|
||||
--end
|
||||
|
||||
minetest.log("action", "/set_owner invoked, Owner="..ownername..
|
||||
" AreaName="..areaname..
|
||||
" StartPos="..minetest.pos_to_string(pos1)..
|
||||
" EndPos=" ..minetest.pos_to_string(pos2))
|
||||
|
||||
areas:add(ownername, areaname, pos1, pos2, nil)
|
||||
areas:save()
|
||||
|
||||
minetest.chat_send_player(ownername, "A concession has been granted to you! Type /list_areas to show your concessions.")
|
||||
minetest.chat_send_player(name, "Area protected")
|
||||
else
|
||||
minetest.chat_send_player(name, 'Invalid usage, see /help set_owner')
|
||||
if not found then
|
||||
minetest.chat_send_player(name, "Incorrect usage, see /help set_owner")
|
||||
return
|
||||
end
|
||||
|
||||
local pos1, pos2 = {}, {}
|
||||
if areas:getPos1(name) and areas:getPos2(name) then
|
||||
pos1 = areas:getPos1(name)
|
||||
pos2 = areas:getPos2(name)
|
||||
pos1, pos2 = areas:sortPos(pos1, pos2)
|
||||
else
|
||||
minetest.chat_send_player(name, 'You need to select an area first')
|
||||
return
|
||||
end
|
||||
|
||||
if not areas:player_exists(ownername) then
|
||||
minetest.chat_send_player(name, 'The player "'
|
||||
..ownername..'" does not exist')
|
||||
return
|
||||
end
|
||||
|
||||
minetest.log("action", "/set_owner invoked, Owner="..ownername..
|
||||
" AreaName="..areaname..
|
||||
" StartPos="..minetest.pos_to_string(pos1)..
|
||||
" EndPos=" ..minetest.pos_to_string(pos2))
|
||||
|
||||
areas:add(ownername, areaname, pos1, pos2, nil)
|
||||
areas:save()
|
||||
|
||||
minetest.chat_send_player(ownername,
|
||||
"You have been granted control over an area."
|
||||
.." Type /list_areas to show your areas.")
|
||||
minetest.chat_send_player(name, "Area protected")
|
||||
end})
|
||||
|
||||
|
||||
minetest.register_chatcommand("add_owner", {
|
||||
params = "<ParentID> <Player> <AreaName>",
|
||||
description = "Give a player access to a sub-area beetween two positions that have already been protected, use set_owner if you don't want the parent to be set",
|
||||
description = "Give a player access to a sub-area beetween two"
|
||||
.." positions that have already been protected,"
|
||||
.." Use set_owner if you don't want the parent to be set.",
|
||||
privs = {},
|
||||
func = function(name, param)
|
||||
if param and param ~= "" then
|
||||
local found, _, pid, ownername, areaname = param:find('^(%d+)%s([^%s]+)%s(.+)$')
|
||||
local found, _, pid, ownername, areaname
|
||||
= param:find('^(%d+)%s([^%s]+)%s(.+)$')
|
||||
|
||||
if not found then
|
||||
minetest.chat_send_player(name, "Incorrect usage, see /help set_owner")
|
||||
return
|
||||
end
|
||||
|
||||
local pos1, pos2 = {}, {}
|
||||
if areas:getPos1(name) and areas:getPos2(name) then
|
||||
pos1 = areas:getPos1(name)
|
||||
pos2 = areas:getPos2(name)
|
||||
pos1, pos2 = areas:sortPos(pos1, pos2)
|
||||
else
|
||||
minetest.chat_send_player(name, 'You need to select an area first')
|
||||
return
|
||||
end
|
||||
|
||||
if not areas:player_exists(ownername) then
|
||||
minetest.chat_send_player(name, 'The player "'..ownername..'" does not exist')
|
||||
return
|
||||
end
|
||||
|
||||
minetest.log("action", "add_owner invoked, Owner = "..ownername..
|
||||
" AreaName = "..areaname.." ParentID = "..pid..
|
||||
" StartPos = "..pos1.x..","..pos1.y..","..pos1.z..
|
||||
" EndPos = " ..pos2.x..","..pos2.y..","..pos2.z)
|
||||
|
||||
--Look to see if this new area is inside an area owned by the player using this function
|
||||
pid = tonumber(pid)
|
||||
if (not areas:isAreaOwner(pid, name)) or
|
||||
(not areas:isSubarea(pos1, pos2, pid)) then
|
||||
minetest.chat_send_player(name, "You can't protect that area")
|
||||
return
|
||||
end
|
||||
|
||||
areas:add(ownername, areaname, pos1, pos2, pid)
|
||||
areas:save()
|
||||
|
||||
minetest.chat_send_player(ownername, "A concession has been granted to you! Type /list_areas to show your concessions.")
|
||||
minetest.chat_send_player(name, "You granted "..ownername.." a concession successfully!")
|
||||
else
|
||||
minetest.chat_send_player(name, 'Invalid usage, see /help add_owner')
|
||||
if not found then
|
||||
minetest.chat_send_player(name, "Incorrect usage, see /help set_owner")
|
||||
return
|
||||
end
|
||||
|
||||
local pos1, pos2 = {}, {}
|
||||
if areas:getPos1(name) and areas:getPos2(name) then
|
||||
pos1 = areas:getPos1(name)
|
||||
pos2 = areas:getPos2(name)
|
||||
pos1, pos2 = areas:sortPos(pos1, pos2)
|
||||
else
|
||||
minetest.chat_send_player(name, 'You need to select an area first')
|
||||
return
|
||||
end
|
||||
|
||||
if not areas:player_exists(ownername) then
|
||||
minetest.chat_send_player(name, 'The player "'
|
||||
..ownername..'" does not exist')
|
||||
return
|
||||
end
|
||||
|
||||
minetest.log("action", "add_owner invoked, Owner = "..ownername..
|
||||
" AreaName = "..areaname.." ParentID = "..pid..
|
||||
" StartPos = "..pos1.x..","..pos1.y..","..pos1.z..
|
||||
" EndPos = " ..pos2.x..","..pos2.y..","..pos2.z)
|
||||
|
||||
-- Check if this new area is inside an area owned by the player
|
||||
pid = tonumber(pid)
|
||||
if (not areas:isAreaOwner(pid, name)) or
|
||||
(not areas:isSubarea(pos1, pos2, pid)) then
|
||||
minetest.chat_send_player(name,
|
||||
"You can't protect that area")
|
||||
return
|
||||
end
|
||||
|
||||
areas:add(ownername, areaname, pos1, pos2, pid)
|
||||
areas:save()
|
||||
|
||||
minetest.chat_send_player(ownername,
|
||||
"You have been gtanted control over an area."
|
||||
.." Type /list_areas to show your areas.")
|
||||
minetest.chat_send_player(name, "Area protected.")
|
||||
end})
|
||||
|
||||
|
||||
@ -146,19 +146,20 @@ minetest.register_chatcommand("rename_area", {
|
||||
local found, _, id, newName = param:find("^(%d+)%s(.+)$")
|
||||
|
||||
if not found then
|
||||
minetest.chat_send_player(name, "Invalid usage, see /help rename_area")
|
||||
minetest.chat_send_player(name,
|
||||
"Invalid usage, see /help rename_area")
|
||||
return
|
||||
end
|
||||
|
||||
index = areas:getIndexById(tonumber(id))
|
||||
|
||||
if not index then
|
||||
minetest.chat_send_player(name, "That area doesn't exist")
|
||||
minetest.chat_send_player(name, "That area doesn't exist.")
|
||||
return
|
||||
end
|
||||
|
||||
if not areas:isAreaOwner(id, name) then
|
||||
minetest.chat_send_player(name, "You don't own that area")
|
||||
minetest.chat_send_player(name, "You don't own that area.")
|
||||
return
|
||||
end
|
||||
|
||||
@ -169,14 +170,23 @@ end})
|
||||
|
||||
minetest.register_chatcommand("list_owners", {
|
||||
params = "",
|
||||
description = "list the players that can edit the area you are in",
|
||||
description = "List the owners of your position",
|
||||
privs = {},
|
||||
func = function(name, param)
|
||||
local owners = areas:getNodeOwners(vector.round(minetest.get_player_by_name(name):getpos()))
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if not player then
|
||||
minetest.chat_send_player(name,
|
||||
"Unable to find your position.")
|
||||
return
|
||||
end
|
||||
local pos = vector.round(player:getpos())
|
||||
local owners = areas:getNodeOwners(pos)
|
||||
if #owners > 0 then
|
||||
minetest.chat_send_player(name, "Owners: "..table.concat(owners, ", "))
|
||||
minetest.chat_send_player(name,
|
||||
"Owners: "..table.concat(owners, ", "))
|
||||
else
|
||||
minetest.chat_send_player(name, "Your position is unowned")
|
||||
minetest.chat_send_player(name,
|
||||
"Your position is unowned.")
|
||||
end
|
||||
end})
|
||||
|
||||
@ -186,38 +196,42 @@ minetest.register_chatcommand("find_areas", {
|
||||
description = "Find areas using a Lua regular expression",
|
||||
privs = {},
|
||||
func = function(name, param)
|
||||
if param and param ~= "" then
|
||||
local found = false
|
||||
for _, area in pairs(areas.areas) do
|
||||
if areas:isAreaOwner(area.id, name) and
|
||||
areas:toString(area):find(param) then
|
||||
minetest.chat_send_player(name, areas:toString(area))
|
||||
found = true
|
||||
end
|
||||
if param == "" then
|
||||
minetest.chat_send_player(name,
|
||||
"A regular expression is required.")
|
||||
return
|
||||
end
|
||||
local found = false
|
||||
for _, area in pairs(areas.areas) do
|
||||
if areas:isAreaOwner(area.id, name) and
|
||||
areas:toString(area):find(param) then
|
||||
minetest.chat_send_player(name, areas:toString(area))
|
||||
found = true
|
||||
end
|
||||
if not found then
|
||||
minetest.chat_send_player(name, "No matches found")
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(name, "Regular expression required")
|
||||
end
|
||||
if not found then
|
||||
minetest.chat_send_player(name, "No matches found")
|
||||
end
|
||||
end})
|
||||
|
||||
|
||||
minetest.register_chatcommand("list_areas", {
|
||||
params = "",
|
||||
description = "list the areas you own, or all areas if you have privileges",
|
||||
description = "List your areas, or all areas if you are an admin.",
|
||||
privs = {},
|
||||
func = function(name, param)
|
||||
admin = minetest.check_player_privs(name, {areas=true})
|
||||
if admin then
|
||||
minetest.chat_send_player(name, "Showing all owner entries.")
|
||||
minetest.chat_send_player(name,
|
||||
"Showing all areas.")
|
||||
else
|
||||
minetest.chat_send_player(name, "Showing your owner entries (You can only modify these).")
|
||||
minetest.chat_send_player(name,
|
||||
"Showing your areas.")
|
||||
end
|
||||
for _, area in pairs(areas.areas) do
|
||||
if admin or area.owner == name then
|
||||
minetest.chat_send_player(name, areas:toString(area))
|
||||
minetest.chat_send_player(name,
|
||||
areas:toString(area))
|
||||
end
|
||||
end
|
||||
end})
|
||||
@ -230,8 +244,9 @@ minetest.register_chatcommand("recursive_remove_areas", {
|
||||
func = function(name, param)
|
||||
local id = tonumber(param)
|
||||
if not id then
|
||||
minetest.chat_send_player(name, 'Invalid usage, see /help recursive_remove_areas')
|
||||
minetest.chat_send_player(name, 'Use /list_areas to see entries')
|
||||
minetest.chat_send_player(name,
|
||||
"Invalid usage, see"
|
||||
.." /help recursive_remove_areas")
|
||||
return
|
||||
end
|
||||
|
||||
@ -240,10 +255,13 @@ minetest.register_chatcommand("recursive_remove_areas", {
|
||||
areas:sort()
|
||||
areas:save()
|
||||
else
|
||||
minetest.chat_send_player(name, "Area "..id.." does not exist or is not owned by you")
|
||||
minetest.chat_send_player(name, "Area "..id
|
||||
.." does not exist or is"
|
||||
.." not owned by you.")
|
||||
return
|
||||
end
|
||||
minetest.chat_send_player(name, 'Removed area '..id..'and sub areas')
|
||||
minetest.chat_send_player(name, "Removed area "..id
|
||||
.." and it's sub areas.")
|
||||
end})
|
||||
|
||||
|
||||
@ -254,8 +272,8 @@ minetest.register_chatcommand("remove_area", {
|
||||
func = function(name, param)
|
||||
local id = tonumber(param)
|
||||
if not id then
|
||||
minetest.chat_send_player(name, 'Invalid usage, see /help remove_area')
|
||||
minetest.chat_send_player(name, 'Use /list_areas to see entries')
|
||||
minetest.chat_send_player(name,
|
||||
"Invalid usage, see /help remove_area")
|
||||
return
|
||||
end
|
||||
|
||||
@ -264,7 +282,9 @@ minetest.register_chatcommand("remove_area", {
|
||||
areas:sort()
|
||||
areas:save()
|
||||
else
|
||||
minetest.chat_send_player(name, "Area "..id.." does not exist or is not owned by you")
|
||||
minetest.chat_send_player(name, "Area "..id
|
||||
.." does not exist or"
|
||||
.." is not owned by you")
|
||||
return
|
||||
end
|
||||
minetest.chat_send_player(name, 'Removed area '..id)
|
||||
@ -272,31 +292,38 @@ end})
|
||||
|
||||
|
||||
minetest.register_chatcommand("change_owner", {
|
||||
params = "<id> <newplayer>",
|
||||
description = "change the owner of an area using its id",
|
||||
params = "<id> <NewOwner>",
|
||||
description = "Change the owner of an area using its id",
|
||||
privs = {},
|
||||
func = function(name, param)
|
||||
local found, _, id, new_owner = param:find('^(%d+)%s+([^%s]+)$')
|
||||
local found, _, id, new_owner =
|
||||
param:find('^(%d+)%s+([^%s]+)$')
|
||||
|
||||
if not found then
|
||||
minetest.chat_send_player(name, 'Invalid usage, see /help change_area_owner')
|
||||
minetest.chat_send_player(name, 'Use /list_areas to see entries')
|
||||
minetest.chat_send_player(name,
|
||||
"Invalid usage,"
|
||||
.." see /help change_area_owner")
|
||||
return
|
||||
end
|
||||
|
||||
if not areas:player_exists(new_owner) then
|
||||
minetest.chat_send_player(name, 'The player "'..new_owner..'" does not exist')
|
||||
minetest.chat_send_player(name, 'The player "'
|
||||
..new_owner..'" does not exist')
|
||||
return
|
||||
end
|
||||
|
||||
id = tonumber(id)
|
||||
if areas:isAreaOwner(id, name) then
|
||||
areas.areas[areas:getIndexById(id)].owner = new_owner
|
||||
areas:save()
|
||||
minetest.chat_send_player(name, 'Owner changed succesfully')
|
||||
minetest.chat_send_player(new_owner, name..'" has granted you a concession!')
|
||||
else
|
||||
minetest.chat_send_player(new_owner, "Area "..id.." does not exist or is not owned by you")
|
||||
if not areas:isAreaOwner(id, name) then
|
||||
minetest.chat_send_player(name,
|
||||
"Area "..id.." does not exist"
|
||||
.." or is not owned by you.")
|
||||
return
|
||||
end
|
||||
local index = areas:getImdexById(id)
|
||||
areas.areas[index].owner = new_owner
|
||||
areas:save()
|
||||
minetest.chat_send_player(name, 'Owner changed.')
|
||||
minetest.chat_send_player(new_owner,
|
||||
name..'" has given you control over an area.')
|
||||
end})
|
||||
|
||||
|
Reference in New Issue
Block a user