Professions = {
[1] = { name = "Гражданский", salary = 50 },
[2] = { name = "Полицейский", salary = 75 },
[3] = { name = "Медик", salary = 70 },
[4] = { name = "Военный", salary = 90 }
}
-- Мета-таблица для хранения CID игроков
local meta = FindMetaTable("Player")
function meta:GetCID()
return self:GetNWInt("PlayerCID", 0)
end
-- SWEP для работы с идентификацией
if CLIENT then
SWEP.PrintName = "Идентификатор"
SWEP.Slot = 5
SWEP.DrawAmmo = false
SWEP.DrawCrosshair = true
end
if SERVER then
AddCSLuaFile()
util.AddNetworkString("DisplayCIDInfo")
-- Сетевые переменные для хранения CID
hook.Add("PlayerSpawn", "AssignCID", function(ply)
ply:SetNWInt("PlayerCID", math.random(10000, 99999))
end)
end
-- Конфигурация SWEP
SWEP.Base = "weapon_base"
SWEP.Author = "Ваше Имя"
SWEP.Instructions = "ЛКМ: Проверить игрока | ПКМ: Ваш CID"
SWEP.ViewModel = "models/weapons/v_hands.mdl"
SWEP.WorldModel = "models/props_lab/clipboard.mdl"
SWEP.Spawnable = true
SWEP.Primary.ClipSize = -1
SWEP.Primary.DefaultClip = 0
SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = 0
SWEP.HoldType = "pistol"
-- Основные функции SWEP
function SWEP:Initialize()
self:SetHoldType(self.HoldType)
end
function SWEP:PrimaryAttack()
if CLIENT then return end
local owner = self:GetOwner()
local trace = owner:GetEyeTrace()
local target = trace.Entity
if IsValid(target) and target:IsPlayer() and trace.HitPos:Distance(owner:GetPos()) < 200 then
local cid = target:GetCID()
local jobID = target:Team()
local jobInfo = Professions[jobID] or {name = "Неизвестно", salary = 0}
net.Start("DisplayCIDInfo")
net.WriteEntity(target)
net.WriteInt(cid, 32)
net.WriteString(jobInfo.name)
net.Send(owner)
self:SetNextPrimaryFire(CurTime() + 2)
end
end
function SWEP:SecondaryAttack()
if CLIENT then return end
local owner = self:GetOwner()
local cid = owner:GetCID()
local jobID = owner:Team()
local jobInfo = Professions[jobID] or {name = "Неизвестно", salary = 0}
owner:ChatPrint("Ваш CID: " .. cid .. " | Профессия: " .. jobInfo.name)
self:SetNextSecondaryFire(CurTime() + 2)
end
-- Сетевая обработка информации
if CLIENT then
net.Receive("DisplayCIDInfo", function()
local target = net.ReadEntity()
local cid = net.ReadInt(32)
local job = net.ReadString()
if IsValid(target) then
chat.AddText(
Color(0, 150, 255), "[Идентификатор] ",
Color(255, 255, 0), "Игрок: ",
Color(255, 255, 255), target:Nick(), "\n",
Color(255, 255, 0), "CID: ",
Color(255, 255, 255), cid, "\n",
Color(255, 255, 0), "Профессия: ",
Color(255, 255, 255), job
)
end
end)
end