dobrograd-13-06-2022/garrysmod/addons/feature-certs/lua/autorun/server/certs.lua
Jonny_Bro (Nikita) e4d5311906 first commit
2023-11-16 15:01:19 +05:00

70 lines
2.5 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

dbgCerts = dbgCerts or {}
include('config/certificates.lua')
function dbgCerts.give(ply, id, title, add, em, pos, iss, vthru)
ply:SetDBVar('cert', {
id = id,
titl = title,
add = add,
em = em,
pos = pos,
iss = iss,
vthru = vthru,
})
ply:Notify('Тебе выдали ' .. title .. '! Чтобы показать его, в "круговом меню" взаимодействия с другим игроком выбери "Показать удостоверение."')
return true
end
local nextShow = {}
timer.Create('dbg-idcards.clear', 60, 0, function()
for shower,showeees in pairs(nextShow) do
for showeee,nextTime in pairs(showeees) do
if nextTime <= CurTime() then
nextShow[shower][showeee] = nil
end
end
if #showeees == 0 then nextShow[shower] = nil end
end
end)
local function read(ply, cert)
octochat.talkTo(ply, octochat.textColors.rp, '====================')
octochat.talkTo(ply, octochat.textColors.rp, dbgCerts.certTitles[cert.id])
if cert.add then
octochat.talkTo(ply, octochat.textColors.rp, cert.add)
end
if cert.em then
octochat.talkTo(ply, octochat.textColors.rp, 'Выдано ', cert.em)
end
if cert.pos then
octochat.talkTo(ply, octochat.textColors.rp, 'На должности ', cert.pos)
end
if cert.iss then
octochat.talkTo(ply, octochat.textColors.rp, 'Дата выдачи: ', os.date('%d.%m.%Y', cert.iss))
end
octochat.talkTo(ply, octochat.textColors.rp, 'Действует до: ', os.date('%d.%m.%Y', cert.vthru))
octochat.talkTo(ply, octochat.textColors.rp, '====================')
end
function dbgCerts.show(shower, showee, noTimer, noEmote)
local cert = shower:GetDBVar('cert')
if not cert then return false, 'У тебя нет действительного удостоверения' end
if not dbgCerts.certTitles[cert.id] or cert.vthru < os.time() then
shower:SetDBVar('cert', nil)
return false, 'У тебя нет действительного удостоверения'
end
local sid, tid = shower:SteamID(), showee:SteamID()
if not noTimer then
if not nextShow[sid] then nextShow[sid] = {} end
if (nextShow[sid][tid] or CurTime()) > CurTime() then
return false, 'Этот игрок уже недавно видел твое удостоверение'
end
nextShow[sid][tid] = CurTime() + 120
end
if not noEmote then shower:DoEmote('{name} показывает удостоверение') end
timer.Simple(1, function()
if IsValid(showee) then read(showee, cert) end
end)
return true
end