Files
wnsrc/gamemodes/darkrp/plugins/setplayerspawn.lua

89 lines
2.5 KiB
Lua
Raw Normal View History

2024-08-04 22:55:00 +03:00
--[[
| 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/
--]]
local PLUGIN = PLUGIN
PLUGIN.name = "Set Player Spawn"
PLUGIN.author = "M!NT"
PLUGIN.description = "Sets the PLAYER spawn point entities (not character!) wherever you want."
PLUGIN.readme = "Wherever these entities are spawned, when a player joins them there, it will select one at random to spawn them at until they load a character."
if SERVER then
hook.Add("PlayerSelectSpawn", "PlayerSpawnSelector", function(pl)
local spawns = ents.FindByClass("player_spawn_anchor")
if (#spawns < 1) then
spawns = ents.FindByClass("info_player_start")
end
return spawns[math.random(#spawns)]
end)
end
do
local anchor = {}
anchor.Type = "anim"
anchor.Base = "base_gmodentity"
anchor.PrintName = "Player Spawn Anchor"
anchor.Author = "M!NT"
anchor.Category = "HL2 RP"
anchor.Contact = ""
anchor.Purpose = ""
anchor.Instructions = ""
anchor.Spawnable = false
anchor.AdminOnly = true
function anchor:Initialize()
self:SetModel("models/props_junk/Shoe001a.mdl")
self:PhysicsInit(SOLID_VPHYSICS)
self:SetMoveType(MOVETYPE_VPHYSICS)
self:SetSolid(SOLID_VPHYSICS)
local phys = self:GetPhysicsObject()
if IsValid(phys) then
phys:EnableMotion(true)
phys:Wake()
end
end
function anchor:Draw()
self:DrawModel()
end
scripted_ents.Register(anchor, "player_spawn_anchor")
end
CAMI.RegisterPrivilege({
Name = "Helix - Manage Player Spawn Anchors",
MinAccess = "admin"
})
ix.command.Add("AddPlayerSpawnAnchor", {
description = "Add a new player spawn anchor wherever you're looking",
arguments = {},
privilege = "Manage Player Spawn Anchors",
OnRun = function(self, client, pbx)
local ent = ents.Create("player_spawn_anchor")
ent:SetPos(client:GetEyeTrace().HitPos)
ix.saveEnts:SaveEntity(ent)
end
})
ix.command.Add("ClearPlayerSpawnAnchors", {
description = "Clears all player spawn anchors",
arguments = {},
privilege = "Manage Player Spawn Anchors",
OnRun = function(self, client, pbx)
for _, ent in ipairs(ents.FindByClass("player_spawn_anchor")) do
ent:Remove()
end
end
})