mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
89 lines
2.5 KiB
Lua
89 lines
2.5 KiB
Lua
|
|
--[[
|
||
|
|
| 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
|
||
|
|
})
|