Sfan5 преди 10 години
родител
ревизия
8dc6b0124e
променени са 1 файла, в които са добавени 65 реда и са изтрити 0 реда
  1. 65 0
      mods/sethome/init.lua

+ 65 - 0
mods/sethome/init.lua

@@ -0,0 +1,65 @@
+local homes_file = minetest.get_worldpath() .. "/homes"
+local homepos = {}
+
+local function loadhomes()
+    local input = io.open(homes_file, "r")
+    if input then
+		repeat
+            local x = input:read("*n")
+            if x == nil then
+            	break
+            end
+            local y = input:read("*n")
+            local z = input:read("*n")
+            local name = input:read("*l")
+            homepos[name:sub(2)] = {x = x, y = y, z = z}
+        until input:read(0) == nil
+        io.close(input)
+    else
+        homepos = {}
+    end
+end
+
+loadhomes()
+
+minetest.register_privilege("home", "Can use /sethome and /home")
+
+local changed = false
+
+minetest.register_chatcommand("home", {
+    description = "Teleport you to your home point",
+    privs = {home=true},
+    func = function(name)
+        local player = minetest.env:get_player_by_name(name)
+        if player == nil then
+            -- just a check to prevent the server crashing
+            return false
+        end
+        if homepos[player:get_player_name()] then
+            player:setpos(homepos[player:get_player_name()])
+            minetest.chat_send_player(name, "Teleported to home!")
+        else
+            minetest.chat_send_player(name, "Set a home using /sethome")
+        end
+    end,
+})
+
+minetest.register_chatcommand("sethome", {
+    description = "Set your home point",
+    privs = {home=true},
+    func = function(name)
+        local player = minetest.env:get_player_by_name(name)
+        local pos = player:getpos()
+        homepos[player:get_player_name()] = pos
+        minetest.chat_send_player(name, "Home set!")
+        changed = true
+        if changed then
+        	local output = io.open(homes_file, "w")
+            for i, v in pairs(homepos) do
+                output:write(v.x.." "..v.y.." "..v.z.." "..i.."\n")
+            end
+            io.close(output)
+            changed = false
+        end
+    end,
+})