ProtectionAreas: ProtList works directly above the DB, displays areas' IDs and creators. ProtAdd and ProtAddCoords commands show the ID of the new area

git-svn-id: http://mc-server.googlecode.com/svn/trunk@1564 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
madmaxoft@gmail.com
2013-06-08 15:06:24 +00:00
parent b244f206d5
commit 2b232f5471
2 changed files with 52 additions and 20 deletions
+39 -3
View File
@@ -211,6 +211,7 @@ end
--- Adds a new area into the DB. a_AllowedNames is a table listing all the players that are allowed in the area
-- Returns the ID of the new area, or -1 on failure
function cStorage:AddArea(a_Cuboid, a_WorldName, a_CreatorName, a_AllowedNames)
-- Store the area in the DB
local ID = -1;
@@ -229,11 +230,11 @@ function cStorage:AddArea(a_Cuboid, a_WorldName, a_CreatorName, a_AllowedNames)
"'); SELECT last_insert_rowid() AS ID";
if (not(self:DBExec(sql, RememberID))) then
LOGWARNING(PluginPrefix .. "SQL Error while inserting new area");
return false;
return -1;
end
if (ID == -1) then
LOGWARNING(PluginPrefix .. "SQL Error while retrieving INSERTion ID");
return false;
return -1;
end
-- Store each allowed player in the DB
@@ -243,7 +244,7 @@ function cStorage:AddArea(a_Cuboid, a_WorldName, a_CreatorName, a_AllowedNames)
LOGWARNING(PluginPrefix .. "SQL Error while inserting new area's allowed player " .. Name);
end
end
return true;
return ID;
end
@@ -289,3 +290,38 @@ end
--- Calls the callback for each area intersecting the specified coords
-- Callback signature: function(ID, MinX, MinZ, MaxX, MaxZ, CreatorName)
function cStorage:ForEachArea(a_BlockX, a_BlockZ, a_WorldName, a_Callback)
-- SQL callback that parses the values and calls our callback
function CallCallback(UserData, NumValues, Values, Names)
if (NumValues ~= 6) then
-- Not enough values returned, skip this row
return 0;
end
local ID = Values[1];
local MinX = Values[2];
local MaxX = Values[3];
local MinZ = Values[4];
local MaxZ = Values[5];
local CreatorName = Values[6];
a_Callback(ID, MinX, MinZ, MaxX, MaxZ, CreatorName);
return 0;
end
local sql = "SELECT ID, MinX, MinZ, MaxX, MaxZ, CreatorUserName FROM Areas WHERE " ..
"MinX <= " .. a_BlockX .. " AND MaxX >= " .. a_BlockX .. " AND " ..
"MinZ <= " .. a_BlockZ .. " AND MaxZ >= " .. a_BlockZ;
if (not(self:DBExec(sql, CallCallback))) then
LOGWARNING("SQL Error while iterating through areas (cStorage:ForEachArea())");
return false;
end
return true;
end