Оповещение, когда игрок нажимает Insert

Как реализовать чтобы когда человек нажимает на Insert чтобы админам писало по типу что возможно у этого игрока читы

это понятно проблема в том как это отправлять

вставлять в CL .lua

--Клиент часть!
local IstTime = 0
hook.Add("Think","Ist",function()
if not input.IsKeyDown( 72 ) then return end
if IstTime > CurTime() then return end
IstTime=CurTime()+5
net.Start("Ist")
net.SendToServer()
end)

вставлять в SV .lua


util.AddNetworkString("Ist")
net.Receive("Ist",function(len,pl)
if not IsValid(pl) then return end
if pl.IstTime == nil then pl.IstTime = 0 end
if pl.IstTime > CurTime() then return end
pl.IstTime = CurTime()+5
for k,v in ipairs(player.GetAll()) do 
if not v:IsAdmin() or (v == pl) then continue end -- изменить на свой тип админки.
v:ChatPrint(string.format("Игрок %s(%s) нажал на Insert", pl:Name(),pl:SteamID()))--изменить на свой способ отправки сообщения
end
end)

Так как ты не указал Режим&Сборка, Админ систему то:
Тебе нужно самому изменить тип проверки на админа, отправки сообщения(иначе будет просто синий цвет)
по желаюнию добавить иммунитет для админов

Этот скрипт также будет кикать игроков, из-за net-overflow
так как сообщение будет отправляться каждый тик при зажатом INSERT.

Забыл добавить, добавил проверку

Проще сразу на серверсайде через этот хук сделать GM:PlayerButtonDown - Garry's Mod Wiki

для DarkRP Serverguard, можешь написать?

local IstTime = 0
--Клиент часть!
-- в ESC не работает на клавиатуре
hook.Add("PlayerButtonDown", "Ist", function(pl, cmd)
    if cmd ~= 72 then return end
    if IstTime > CurTime() then return end
    IstTime = CurTime() + 5
    net.Start("Ist")
    net.SendToServer()
end)
--Sv часть
util.AddNetworkString("Ist")

net.Receive("Ist", function(len, pl)
    if not IsValid(pl) then return end

    if pl.IstTime == nil then
        pl.IstTime = 0
    end

    if pl.IstTime > CurTime() then return end
    pl.IstTime = CurTime() + 5

local pla=player.GetAll()
for i=1,#pla do 
        if serverguard.player:GetImmunity(pla[i]) < 100 then continue end --за место 100 поставить значение "младшей админки"
if pl == pla[i] then continue end -- зачем админу знать что он нажал на инсерт
        serverguard.Notify(pla[i], SERVERGUARD.NOTIFY.RED, string.format("Игрок %s(%s) нажал на Insert", pl:Name(), pl:SteamID()))
    end
end)

Либо сразу только серверная сторона.

-- в ESC не работает на клавиатуре
hook.Add("PlayerButtonDown", "Ist", function(pl, cmd)
    if cmd ~= 72 then return end

    if pl.IstTime == nil then
        pl.IstTime = 0
    end

    if pl.IstTime > CurTime() then return end
    pl.IstTime = CurTime() + 5
    local pla = player.GetAll()

    for i = 1, #pla do
        if serverguard.player:GetImmunity(pla[i]) < 100 then continue end --за место 100 поставить значение "младшей админки"
        if pl == pla[i] then continue end -- зачем админу знать что он нажал на инсерт
        serverguard.Notify(pla[i], SERVERGUARD.NOTIFY.RED, string.format("Игрок %s(%s) нажал на Insert", pl:Name(), pl:SteamID()))
    end
end)

Спасибо дружище