mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
52
gamemodes/helix/plugins/spawnsaver.lua
Normal file
52
gamemodes/helix/plugins/spawnsaver.lua
Normal file
@@ -0,0 +1,52 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
PLUGIN.name = "Spawn Saver"
|
||||
PLUGIN.author = "Chessnut"
|
||||
PLUGIN.description = "Saves the position of a character."
|
||||
|
||||
-- Called right before the character has its information save.
|
||||
function PLUGIN:CharacterPreSave(character)
|
||||
-- Get the player from the character.
|
||||
local client = character:GetPlayer()
|
||||
|
||||
-- Check to see if we can get the player's position.
|
||||
if (IsValid(client)) then
|
||||
local position, eyeAngles = client:GetPos(), client:EyeAngles()
|
||||
-- Use pre-observer position to prevent spawning in the air.
|
||||
if (client.ixObsData) then
|
||||
position, eyeAngles = client.ixObsData[1], client.ixObsData[2]
|
||||
end
|
||||
-- Store the position in the character's data.
|
||||
character:SetData("pos", {position, eyeAngles, game.GetMap()})
|
||||
end
|
||||
end
|
||||
|
||||
-- Called after the player's loadout has been set.
|
||||
function PLUGIN:PlayerLoadedCharacter(client, character, lastChar)
|
||||
timer.Simple(0, function()
|
||||
if (IsValid(client)) then
|
||||
-- Get the saved position from the character data.
|
||||
local position = character:GetData("pos")
|
||||
|
||||
-- Check if the position was set.
|
||||
if (position) then
|
||||
if (position[3] and position[3]:lower() == game.GetMap():lower()) then
|
||||
-- Restore the player to that position.
|
||||
client:SetPos(position[1].x and position[1] or client:GetPos())
|
||||
client:SetEyeAngles(position[2].p and position[2] or angle_zero)
|
||||
end
|
||||
|
||||
-- Remove the position data since it is no longer needed.
|
||||
character:SetData("pos", nil)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
Reference in New Issue
Block a user