mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
157
lua/sam/player/sv_player.lua
Normal file
157
lua/sam/player/sv_player.lua
Normal file
@@ -0,0 +1,157 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
if SAM_LOADED then return end
|
||||
|
||||
local sam = sam
|
||||
local netstream = sam.netstream
|
||||
|
||||
do
|
||||
local connected_players = {}
|
||||
|
||||
function sam.player.kick_id(id, reason)
|
||||
reason = sam.isstring(reason) and reason or sam.language.get("default_reason")
|
||||
reason = reason:sub(1, 400)
|
||||
game.KickID(id, reason)
|
||||
end
|
||||
|
||||
function sam.player.is_connected(steamid)
|
||||
return connected_players[steamid] and true or false
|
||||
end
|
||||
|
||||
function sam.get_connected_players()
|
||||
return connected_players
|
||||
end
|
||||
|
||||
gameevent.Listen("player_connect")
|
||||
hook.Add("player_connect", "SAM.ConnectedPlayers", function(data)
|
||||
connected_players[data.networkid] = true
|
||||
end)
|
||||
|
||||
gameevent.Listen("player_disconnect")
|
||||
hook.Add("player_disconnect", "SAM.ConnectedPlayers", function(data)
|
||||
connected_players[data.networkid] = nil
|
||||
end)
|
||||
end
|
||||
|
||||
function sam.player.set_exclusive(ply, reason)
|
||||
ply.sam_exclusive_reason = reason
|
||||
end
|
||||
|
||||
function sam.player.get_exclusive(ply, admin)
|
||||
local reason = ply.sam_exclusive_reason
|
||||
if reason then
|
||||
if ply == admin then
|
||||
return "You are " .. reason .. "!"
|
||||
else
|
||||
return ply:Name() .. " is " .. reason .. "!"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local hide_weapons = function(ply, should_hide)
|
||||
for _, v in pairs(ply:GetWeapons()) do
|
||||
v:SetNoDraw(should_hide)
|
||||
end
|
||||
|
||||
local physgun_beams = ents.FindByClassAndParent("physgun_beam", ply)
|
||||
if physgun_beams then
|
||||
for i = 1, #physgun_beams do
|
||||
physgun_beams[i]:SetNoDraw(should_hide)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local cloak = function(ply, should_cloak)
|
||||
ply:SetNoDraw(should_cloak)
|
||||
ply:DrawWorldModel(not should_cloak)
|
||||
ply:SetRenderMode(should_cloak and RENDERMODE_TRANSALPHA or RENDERMODE_NORMAL)
|
||||
ply:Fire("alpha", should_cloak and 0 or 255, 0)
|
||||
ply:sam_set_nwvar("cloaked", should_cloak)
|
||||
hide_weapons(ply, should_cloak)
|
||||
end
|
||||
|
||||
function sam.player.cloak(ply)
|
||||
cloak(ply, true)
|
||||
end
|
||||
|
||||
function sam.player.uncloak(ply)
|
||||
cloak(ply, false)
|
||||
end
|
||||
|
||||
hook.Add("PlayerSpawn", "SAM.CloakPlayer", function(ply)
|
||||
if ply:sam_get_nwvar("cloaked") then
|
||||
cloak(ply, true)
|
||||
end
|
||||
end)
|
||||
|
||||
hook.Add("PlayerSwitchWeapon", "SAM.CloakPlayer", function(ply)
|
||||
if ply:sam_get_nwvar("cloaked") then
|
||||
timer.Create("SAM.HideWeapons" .. ply:SteamID(), 0, 1, function()
|
||||
if IsValid(ply) and ply:sam_get_nwvar("cloaked") then
|
||||
hide_weapons(ply, true)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
do
|
||||
local call_hook = function(ply)
|
||||
local can_spawn = hook.Call("SAM.CanPlayerSpawn", nil, ply)
|
||||
if can_spawn ~= nil then
|
||||
return can_spawn
|
||||
end
|
||||
end
|
||||
|
||||
local spawn_hooks = {
|
||||
"Effect", "NPC",
|
||||
"Object", "Prop",
|
||||
"Ragdoll", "SENT",
|
||||
"SWEP", "Vehicle"
|
||||
}
|
||||
|
||||
for k, v in ipairs(spawn_hooks) do
|
||||
hook.Add("PlayerSpawn" .. v, "SAM.CanPlayerSpawn", call_hook)
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local persistent_data = {}
|
||||
|
||||
function sam.player.set_pdata(ply, key, value)
|
||||
local ply_pdata = persistent_data[ply:AccountID()]
|
||||
if ply_pdata then
|
||||
ply_pdata[key] = value
|
||||
else
|
||||
persistent_data[ply:AccountID()] = {
|
||||
[key] = value
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
function sam.player.get_pdata(ply, key, default)
|
||||
local ply_pdata = persistent_data[ply:AccountID()]
|
||||
if ply_pdata then
|
||||
local value = ply_pdata[key]
|
||||
if value ~= nil then
|
||||
return value
|
||||
end
|
||||
end
|
||||
return default
|
||||
end
|
||||
end
|
||||
|
||||
function sam.player.play_sound(ply, sound)
|
||||
netstream.Start(ply, "PlaySound", sound)
|
||||
end
|
||||
|
||||
--[[/*953ed60e46bbecc33df4049c215b53951c0dfcb21fbe82bbeb63c201211c72dc*/]]
|
||||
Reference in New Issue
Block a user