]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - builtin/game/chatcommands.lua
Fix some undeclared global variables
[dragonfireclient.git] / builtin / game / chatcommands.lua
index 9293e98f49164e409d62a1ede1a8fc6808f767d9..4f7b031aa1d9bca47d6176c48abe5d75f78a91a6 100644 (file)
@@ -252,7 +252,7 @@ core.register_chatcommand("clearpassword", {
        description = "set empty password",
        privs = {password=true},
        func = function(name, param)
-               toname = param
+               local toname = param
                if toname == "" then
                        return false, "Name field required"
                end
@@ -326,46 +326,48 @@ core.register_chatcommand("teleport", {
                        return true, "Teleporting to " .. target_name
                                        .. " at "..core.pos_to_string(p)
                end
+
+               if not core.check_player_privs(name, {bring=true}) then
+                       return false, "You don't have permission to teleport other players (missing bring privilege)"
+               end
+
+               local teleportee = nil
+               local p = {}
+               local teleportee_name = nil
+               teleportee_name, p.x, p.y, p.z = param:match(
+                               "^([^ ]+) +([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+)$")
+               p.x, p.y, p.z = tonumber(p.x), tonumber(p.y), tonumber(p.z)
+               if teleportee_name then
+                       teleportee = core.get_player_by_name(teleportee_name)
+               end
+               if teleportee and p.x and p.y and p.z then
+                       teleportee:setpos(p)
+                       return true, "Teleporting " .. teleportee_name
+                                       .. " to " .. core.pos_to_string(p)
+               end
                
-               if core.check_player_privs(name, {bring=true}) then
-                       local teleportee = nil
-                       local p = {}
-                       local teleportee_name = nil
-                       teleportee_name, p.x, p.y, p.z = param:match(
-                                       "^([^ ]+) +([%d.-]+)[, ] *([%d.-]+)[, ] *([%d.-]+)$")
-                       p.x, p.y, p.z = tonumber(p.x), tonumber(p.y), tonumber(p.z)
-                       if teleportee_name then
-                               teleportee = core.get_player_by_name(teleportee_name)
-                       end
-                       if teleportee and p.x and p.y and p.z then
-                               teleportee:setpos(p)
-                               return true, "Teleporting " .. teleportee_name
-                                               .. " to " .. core.pos_to_string(p)
-                       end
-                       
-                       local teleportee = nil
-                       local p = nil
-                       local teleportee_name = nil
-                       local target_name = nil
-                       teleportee_name, target_name = string.match(param, "^([^ ]+) +([^ ]+)$")
-                       if teleportee_name then
-                               teleportee = core.get_player_by_name(teleportee_name)
-                       end
-                       if target_name then
-                               local target = core.get_player_by_name(target_name)
-                               if target then
-                                       p = target:getpos()
-                               end
-                       end
-                       if teleportee and p then
-                               p = find_free_position_near(p)
-                               teleportee:setpos(p)
-                               return true, "Teleporting " .. teleportee_name
-                                               .. " to " .. target_name
-                                               .. " at " .. core.pos_to_string(p)
+               local teleportee = nil
+               local p = nil
+               local teleportee_name = nil
+               local target_name = nil
+               teleportee_name, target_name = string.match(param, "^([^ ]+) +([^ ]+)$")
+               if teleportee_name then
+                       teleportee = core.get_player_by_name(teleportee_name)
+               end
+               if target_name then
+                       local target = core.get_player_by_name(target_name)
+                       if target then
+                               p = target:getpos()
                        end
                end
-
+               if teleportee and p then
+                       p = find_free_position_near(p)
+                       teleportee:setpos(p)
+                       return true, "Teleporting " .. teleportee_name
+                                       .. " to " .. target_name
+                                       .. " at " .. core.pos_to_string(p)
+               end
+               
                return false, 'Invalid parameters ("' .. param
                                .. '") or player not found (see /help teleport)'
        end,
@@ -424,6 +426,7 @@ local function handle_give_command(cmd, giver, receiver, stackstring)
                return false, receiver .. " is not a known player"
        end
        local leftover = receiverref:get_inventory():add_item("main", itemstack)
+       local partiality
        if leftover:is_empty() then
                partiality = ""
        elseif leftover:get_count() == itemstack:get_count() then
@@ -721,3 +724,20 @@ core.register_chatcommand("msg", {
        end,
 })
 
+core.register_chatcommand("last-login", {
+       params = "[name]",
+       description = "Get the last login time of a player",
+       func = function(name, param)
+               if param == "" then
+                       param = name
+               end
+               local pauth = core.get_auth_handler().get_auth(param)
+               if pauth and pauth.last_login then
+                       -- Time in UTC, ISO 8601 format
+                       return true, "Last login time was " ..
+                               os.date("!%Y-%m-%dT%H:%M:%SZ", pauth.last_login)
+               end
+               return false, "Last login time is unknown"
+       end,
+})
+