diff --git a/init.lua b/init.lua index 5cb8b53..096c22d 100644 --- a/init.lua +++ b/init.lua @@ -34,7 +34,7 @@ function switch_creative:save_areas() end function switch_creative:set_area_privs(id, privs_string) - switch_creative.area_privs[id] = privs_string + switch_creative.area_privs[tostring(id)] = privs_string end minetest.register_chatcommand("creative_area", { @@ -55,10 +55,14 @@ minetest.register_chatcommand("creative_area", { local edge2 = { x=tonumber(x2), y=tonumber(y2), z=tonumber(z2) } local data = area_name local astore_id = switch_creative.astore:insert_area(edge1, edge2, tostring(data)) - switch_creative:set_area_privs(astore_id, nil) - minetest.chat_send_player(name, "[creative_area] New area set. ID: " .. astore_id) - switch_creative:save_areas() - return true, "Done." + if astore_id then + switch_creative:set_area_privs(tostring(astore_id), nil) + minetest.chat_send_player(name, "[creative_area] New area set. ID: " .. astore_id) + switch_creative:save_areas() + return true, "Done" + else + return false, "Failed" + end end, }) @@ -75,14 +79,13 @@ minetest.register_chatcommand("creative_area_privs", { if not found then return false, "Syntax error" end - area_id = tostring(area_id) if privstring and area_id then - switch_creative:set_area_privs(area_id, privstring) + switch_creative:set_area_privs(tostring(area_id), privstring) minetest.chat_send_player(name, "[creative_area] Privstring set for area " .. area_id .. ": " .. privstring) switch_creative:save_areas() - return true, "Done." + return true, "Done" else - return false, "Failed." + return false, "Failed" end end, }) @@ -100,11 +103,10 @@ minetest.register_chatcommand("creative_area_rm", { if not found then return false, "Syntax error" end - area_id = tonumber(area_id) - local success = switch_creative.astore:remove_area(area_id) + local success = switch_creative.astore:remove_area(tonumber(area_id)) if success then minetest.chat_send_player(name, "[creative_area] Area " .. area_id .. "removed") - switch_creative:set_area_privs(area_id, nil) + switch_creative:set_area_privs(tostring(area_id), nil) else minetest.chat_send_player(name, "[creative_area] Error removing area " .. area_id) end @@ -135,6 +137,7 @@ function switch_creative:decode_privs_string(str) end function switch_creative:is_areas_mod(area_id) + area_id = tostring(area_id) local is_areas_id = string.sub(id, 1, 2) == "a" local a_id = tonumber( string.sub(id, 2) ) return is_areas_id, a_id @@ -269,7 +272,7 @@ function switch_creative:update_player(player) for astore_id, astore_area in pairs( current_areas ) do local areasize = switch_creative:get_area_size(astore_area) if not smallest_area.size or areasize < smallest_area.size then - smallest_area.id = astore_id + smallest_area.id = tostring(astore_id) smallest_area.size = areasize end end @@ -284,7 +287,7 @@ function switch_creative:update_player(player) for a_id, a_area in pairs( a_current_areas ) do local areasize = switch_creative:get_areas_area_size(a_area) if not smallest_areas_area.size or areasize < smallest_areas_area.size then - smallest_areas_area.id = a_id + smallest_areas_area.id = tostring(a_id) smallest_areas_area.size = areasize end player_active_areas = player_active_areas .. ", a"..a_id @@ -302,9 +305,9 @@ function switch_creative:update_player(player) end local privstring = noarea_privs - if smallest_area.id and switch_creative.area_privs[smallest_area.id] then - if switch_creative.area_privs[smallest_area.id] then - privstring = switch_creative.area_privs[smallest_area.id] + if smallest_area.id then + if switch_creative.area_privs[tostring(smallest_area.id)] then + privstring = switch_creative.area_privs[tostring(smallest_area.id)] else privstring = default_privs end @@ -323,7 +326,7 @@ function switch_creative:update_player(player) end if smallest_areas_area.size and smallest_area.size then if smallest_area.size <= smallest_areas_area.size then - privstring = privstring .. ", " .. switch_creative.area_privs[smallest_area.id] + privstring = privstring .. ", " .. switch_creative.area_privs[tostring(smallest_area.id)] end end end