Загрузка данных


-- 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)