mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-30 20:41:41 +09:00
Move files to exp_legacy
This commit is contained in:
83
exp_legacy/module/modules/commands/home.lua
Normal file
83
exp_legacy/module/modules/commands/home.lua
Normal file
@@ -0,0 +1,83 @@
|
||||
--[[-- Commands Module - Home
|
||||
- Adds a command that allows setting and teleporting to your home position
|
||||
@commands Home
|
||||
]]
|
||||
|
||||
local Commands = require 'expcore.commands' --- @dep expcore.commands
|
||||
local Global = require 'utils.global' --- @dep utils.global
|
||||
require 'config.expcore.command_general_parse'
|
||||
|
||||
local homes = {}
|
||||
Global.register(homes, function(tbl)
|
||||
homes = tbl
|
||||
end)
|
||||
|
||||
local function teleport(player, position)
|
||||
local surface = player.surface
|
||||
local pos = surface.find_non_colliding_position('character', position, 32, 1)
|
||||
if not position then return false end
|
||||
if player.driving then player.driving = false end -- kicks a player out a vehicle if in one
|
||||
player.teleport(pos, surface)
|
||||
return true
|
||||
end
|
||||
|
||||
local function floor_pos(position)
|
||||
return {
|
||||
x=math.floor(position.x),
|
||||
y=math.floor(position.y)
|
||||
}
|
||||
end
|
||||
|
||||
--- Teleports you to your home location
|
||||
-- @command home
|
||||
Commands.new_command('home', {'expcom-home.description-home'}, 'Teleports you to your home location')
|
||||
:register(function(player)
|
||||
local home = homes[player.index]
|
||||
if not home or not home[1] then
|
||||
return Commands.error{'expcom-home.no-home'}
|
||||
end
|
||||
local rtn = floor_pos(player.position)
|
||||
teleport(player, home[1])
|
||||
home[2] = rtn
|
||||
Commands.print{'expcom-home.return-set', rtn.x, rtn.y}
|
||||
end)
|
||||
|
||||
--- Sets your home location to your current position
|
||||
-- @command home-set
|
||||
Commands.new_command('home-set', {'expcom-home.description-home-set'}, 'Sets your home location to your current position')
|
||||
:register(function(player)
|
||||
local home = homes[player.index]
|
||||
if not home then
|
||||
home = {}
|
||||
homes[player.index] = home
|
||||
end
|
||||
local pos = floor_pos(player.position)
|
||||
home[1] = pos
|
||||
Commands.print{'expcom-home.home-set', pos.x, pos.y}
|
||||
end)
|
||||
|
||||
--- Returns your current home location
|
||||
-- @command home-get
|
||||
Commands.new_command('home-get', {'expcom-home.description-home-get'}, 'Returns your current home location')
|
||||
:register(function(player)
|
||||
local home = homes[player.index]
|
||||
if not home or not home[1] then
|
||||
return Commands.error{'expcom-home.no-home'}
|
||||
end
|
||||
local pos = home[1]
|
||||
Commands.print{'expcom-home.home-get', pos.x, pos.y}
|
||||
end)
|
||||
|
||||
--- Teleports you to previous location
|
||||
-- @command return
|
||||
Commands.new_command('return', {'expcom-home.description-return'}, 'Teleports you to previous location')
|
||||
:register(function(player)
|
||||
local home = homes[player.index]
|
||||
if not home or not home[2] then
|
||||
return Commands.error{'expcom-home.no-return'}
|
||||
end
|
||||
local rtn = floor_pos(player.position)
|
||||
teleport(player, home[2])
|
||||
home[2] = rtn
|
||||
Commands.print{'expcom-home.return-set', rtn.x, rtn.y}
|
||||
end)
|
||||
Reference in New Issue
Block a user