] money_ui 
Вы сбросили 1₽.
[MoneySystem] Игрок Mustafa #TF2EASY подобрал 1₽.

[money_system] addons/money_system/lua/money_system/cl/cl_money_ui.lua:23: Tried to use a NULL Panel!
  1. SetText - [C]:-1
   2. func - addons/money_system/lua/money_system/cl/cl_money_ui.lua:23
    3. unknown - lua/includes/extensions/net.lua:38 (x2)

[MoneySystem] Вы подобрали 1₽.
[Mustafa #TF2EASY|6|STEAM_0:1:761249039] Lua Error:

[money_system] addons/money_system/lua/money_system/cl/cl_money_ui.lua:23: Tried to use a NULL Panel!
  1. SetText - [C]:-1
   2. func - addons/money_system/lua/money_system/cl/cl_money_ui.lua:23
    3. unknown - lua/includes/extensions/net.lua:38


[Mustafa #TF2EASY|6|STEAM_0:1:761249039] Lua Error:

[money_system] addons/money_system/lua/money_system/cl/cl_money_ui.lua:23: Tried to use a NULL Panel!
  1. SetText - [C]:-1
   2. func - addons/money_system/lua/money_system/cl/cl_money_ui.lua:23
    3. unknown - lua/includes/extensions/net.lua:38


```lua
-- cl_money_ui.lua

-- Создание панели интерфейса
local function CreateMoneyUI()
    local frame = vgui.Create("DFrame")
    frame:SetTitle("Система Денег")
    frame:SetSize(400, 400)
    frame:Center()
    frame:MakePopup()

    -- Отображение баланса
    local balanceLabel = vgui.Create("DLabel", frame)
    balanceLabel:SetPos(20, 30)
    balanceLabel:SetSize(360, 30)
    balanceLabel:SetFont("Trebuchet24")
    balanceLabel:SetText("Баланс: " .. money_system.GetMoney(LocalPlayer()) .. "₽")
    balanceLabel:PerformLayout()

    -- Обновление баланса при получении данных от сервера
    net.Receive("money_system_update", function()
        local amount = net.ReadInt(32)
        money_system.local_money = amount
        balanceLabel:SetText("Баланс: " .. amount .. "₽")
    end)

    -- Поле для ввода SteamID получателя
    local steamIDLabel = vgui.Create("DLabel", frame)
    steamIDLabel:SetPos(20, 80)
    steamIDLabel:SetSize(150, 20)
    steamIDLabel:SetText("SteamID получателя:")

    local steamIDEntry = vgui.Create("DTextEntry", frame)
    steamIDEntry:SetPos(180, 80)
    steamIDEntry:SetSize(200, 20)
    steamIDEntry:SetPlaceholderText("STEAM_0:1:12345678")

    -- Поле для ввода суммы
    local amountLabel = vgui.Create("DLabel", frame)
    amountLabel:SetPos(20, 120)
    amountLabel:SetSize(100, 20)
    amountLabel:SetText("Сумма:")

    local amountEntry = vgui.Create("DTextEntry", frame)
    amountEntry:SetPos(180, 120)
    amountEntry:SetSize(200, 20)
    amountEntry:SetPlaceholderText("Введите сумму")

    -- Кнопка для отправки перевода
    local sendButton = vgui.Create("DButton", frame)
    sendButton:SetPos(150, 160)
    sendButton:SetSize(100, 30)
    sendButton:SetText("Перевести")
    sendButton.DoClick = function()
        local targetSteamID = steamIDEntry:GetValue()
        local amount = tonumber(amountEntry:GetValue())

        if not targetSteamID or targetSteamID == "" then
            chat.AddText(Color(255, 0, 0), "[MoneySystem] Введите SteamID получателя.")
            return
        end

        if not amount or amount <= 0 then
            chat.AddText(Color(255, 0, 0), "[MoneySystem] Введите корректную сумму.")
            return
        end

        -- Отправка данных на сервер
        net.Start("money_system_transfer")
            net.WriteString(targetSteamID)
            net.WriteInt(amount, 32)
        net.SendToServer()
    end

    -- Поле для ввода суммы для сброса денег
    local dropAmountLabel = vgui.Create("DLabel", frame)
    dropAmountLabel:SetPos(20, 220)
    dropAmountLabel:SetSize(150, 20)
    dropAmountLabel:SetText("Сумма для сброса:")

    local dropAmountEntry = vgui.Create("DTextEntry", frame)
    dropAmountEntry:SetPos(180, 220)
    dropAmountEntry:SetSize(200, 20)
    dropAmountEntry:SetPlaceholderText("Введите сумму")

    -- Кнопка для сброса денег
    local dropButton = vgui.Create("DButton", frame)
    dropButton:SetPos(150, 260)
    dropButton:SetSize(100, 30)
    dropButton:SetText("Сбросить")
    dropButton.DoClick = function()
        local amount = tonumber(dropAmountEntry:GetValue())

        if not amount or amount <= 0 then
            chat.AddText(Color(255, 0, 0), "[MoneySystem] Введите корректную сумму для сброса.")
            return
        end

        -- Выполнение команды для сброса денег
        RunConsoleCommand("money_drop", tostring(amount))
    end

    -- Сообщения об успехе или ошибке
    net.Receive("money_system_notify", function()
        local message = net.ReadString()
        chat.AddText(Color(0, 255, 0), "[MoneySystem] " .. message)
    end)
end

-- Команда для открытия интерфейса
concommand.Add("money_ui", CreateMoneyUI)
```
```lua
-- cl_hooks.lua

-- Обработка уведомлений от сервера
net.Receive("money_system_notify", function()
    local message = net.ReadString()
    chat.AddText(Color(0, 255, 0), "[MoneySystem] " .. message)
end)

-- Отображение суммы денег при наведении курсора
hook.Add("PostDrawTranslucentRenderables", "MoneySystem_DrawMoneyAmount", function()
    local trace = LocalPlayer():GetEyeTrace()
    if IsValid(trace.Entity) and trace.Entity:GetClass() == "money_pickup" then
        local pos = trace.Entity:GetPos() + Vector(0, 0, 20)
        local ang = Angle(0, LocalPlayer():GetAngles().y - 90, 90)
        cam.Start3D2D(pos, ang, 0.2)
            draw.SimpleText(
                tostring(trace.Entity:GetNWInt("MoneyAmount", 0)) .. "₽",
                "Trebuchet24",
                0,
                0,
                Color(255, 215, 0),
                TEXT_ALIGN_CENTER,
                TEXT_ALIGN_CENTER
            )
        cam.End3D2D()
    end
end)

-- Добавление эффекта подсветки на деньги
hook.Add("PreDrawHalos", "MoneySystem_DrawMoneyHalo", function()
    local entities = {}
    for _, ent in ipairs(ents.FindByClass("money_pickup")) do
        table.insert(entities, ent)
    end
    if #entities > 0 then
        halo.Add(entities, Color(255, 215, 0), 1, 1, 2, true, true)
    end
end)
```