Files
factorio-scenario-ExpCluster/exp_scenario/module/commands/locate.lua
2024-11-19 22:36:52 +00:00

41 lines
1.5 KiB
Lua

--[[-- Commands - Locate
Adds a command that will return the last location of a player
]]
local Commands = require("modules/exp_commands")
local format_player_name = Commands.format_player_name_locale
local format = string.format
--- Open remote view at a players last location
Commands.new("locate", { "exp-commands_locate.description" })
:add_aliases{ "last-location", "find" }
:argument("player", { "exp-commands_locate.arg-player" }, Commands.types.player)
:optional("remote", { "exp-commands_locate.arg-remote" }, Commands.types.boolean)
:register(function(player, other_player, remote)
--- @cast other_player LuaPlayer
--- @cast remote boolean?
local surface = other_player.physical_surface
local position = other_player.physical_position
if remote and other_player.controller_type == defines.controllers.remote then
surface = other_player.surface
position = other_player.position
end
if player.index > 0 then
-- This check allows rcon to use the command
player.set_controller{
type = defines.controllers.remote,
surface = surface,
position = position,
}
end
return Commands.status.success{
"exp-commands_locate.response",
format_player_name(other_player),
format("%.1f", position.x),
format("%.1f", position.y),
}
end)