Кто знает как реализовать маркер на месте где вызвали полицию
в даркрп есть базовая команда /cr
Мне надо чтобы где вызывать вызывают полицию был текст к примеру
Ник
Причина
дистанция
ну так там это и есть
Серверсайд
util.AddNetworkString('policemarker')
local cmds = {
['911'] = true,
['cr'] = true,
['999'] = true,
['112'] = true,
['000'] = true,
}
hook.Add('onChatCommand', 'policemarker', function(ply, cmd, arg)
if not cmds[cmd] then return end
for _, v in ipairs(player.GetAll()) do
if v:isCP() then
net.Start('policemarker')
net.WriteVector(ply:GetPos())
net.WriteString(arg)
net.Send(v)
end
end
end)
Клиентсайд
net.Receive('policemarker', function()
local pos = net.ReadVector()
local text = net.ReadString()
-- А дальше отрисовка. Способ, который я привел тут - очень ресурсозатратный, так что если знаешь, то сделай по-другому
local hookName = 'marker'..tostring(CurTime())
timer.Simple(300, function()
hook.Remove('HUDPaint', hookName)
end)
hook.Add('HUDPaint', hookName, function()
local pos2D = pos:ToScreen()
if not pos2D.visible then return end
if pos:DistToSqr(LocalPlayer():GetPos()) < 100*100 then return hook.Remove('HUDPaint', hookName) end
draw.SimpleTextOutlined(text, 'Trebuchet18', pos2D.x, pos2D.y, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 1, Color(0,0,0))
end)
end)
А ещё вопрос как сделать отчёт времени
и как ещё этот текст приподнять
Чтобы сделать отсчет времени до создания хука создай какую-нибудь переменную, запиши в нее значение CurTime()
и в самом хуке с отрисовкой пиши значение выражения math.floor(300 - time)
, где time
- та самая переменная. Таким образом у тебя будет идти отсчет от 300 до 1 секунды. Чтобы приподнять текст прибавь/отними от 4 аргумента (pos2D.y) какое-нибудь число