-- cl_hud.lua
-- Положи в lua/autorun/client/cl_hud.lua
local MAP_SIZE = 200 -- размер миникарты
local MAP_MARGIN = 20 -- отступ от края экрана
local WORLD_SIZE = 16384 -- размер карты (обычно 16384)
-- ============ Миникарта ============
local function DrawMinimap(x, y, w, h)
-- фон
surface.SetDrawColor(0, 0, 0, 180)
surface.DrawRect(x, y, w, h)
-- рамка
surface.SetDrawColor(255, 255, 255, 80)
surface.DrawOutlinedRect(x, y, w, h, 1)
local scaleX = w / WORLD_SIZE
local scaleY = h / WORLD_SIZE
for _, ply in ipairs(player.GetAll()) do
if not IsValid(ply) then continue end
local pos = ply:GetPos()
local px = x + (pos.x + WORLD_SIZE / 2) * scaleX
local py = y + (WORLD_SIZE / 2 - pos.y) * scaleY
-- не рисуем, если за пределами карты
if px < x or px > x + w or py < y or py > y + h then continue end
if ply == LocalPlayer() then
surface.SetDrawColor(0, 255, 0, 255) -- ты - зелёный
elseif ply:Team() == LocalPlayer():Team() then
surface.SetDrawColor(100, 150, 255, 255) -- союзник - синий
else
surface.SetDrawColor(255, 60, 60, 255) -- враг - красный
end
surface.DrawRect(px - 2, py - 2, 4, 4)
end
end
-- ============ Основной HUD ============
hook.Add("HUDPaint", "MyCustomHUD", function()
local ply = LocalPlayer()
if not IsValid(ply) then return end
-- ---------- Миникарта (левый нижний угол) ----------
local mapX = MAP_MARGIN
local mapY = ScrH() - MAP_SIZE - MAP_MARGIN
DrawMinimap(mapX, mapY, MAP_SIZE, MAP_SIZE)
-- ---------- Инфо-панель (левый верхний угол) ----------
local boxW, boxH = 260, 90
local boxX, boxY = MAP_MARGIN, MAP_MARGIN
-- фон панели
surface.SetDrawColor(0, 0, 0, 180)
surface.DrawRect(boxX, boxY, boxW, boxH)
-- рамка
surface.SetDrawColor(255, 255, 255, 80)
surface.DrawOutlinedRect(boxX, boxY, boxW, boxH, 1)
-- Никнейм
draw.SimpleText(
"Ник: " .. ply:Nick(),
"DermaDefaultBold",
boxX + 12, boxY + 12,
Color(255, 255, 255),
TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP
)
-- Убийства
draw.SimpleText(
"Убийств: " .. ply:Frags(),
"DermaDefaultBold",
boxX + 12, boxY + 45,
Color(255, 90, 90),
TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP
)
end)