Вопрос Ошибка в скриграбе бадминка

  • 52
  • 1
  • 5
Контакты для связи отсутствуют.
Всем привет. Проблема такая , я пытаюсь заскгринграбить человека , скрин в дату сохраняется , но на экран его не выводит.
1673848026306.png

В консоль сервера выписывается вот такая ошибка:
Lua:
addons/[admin] badmin/lua/ba/plugins/sg.lua:41: bad argument #2 to 'WriteStream' (function expected, got Player)
stack traceback:
        [C]: in function 'error'
        addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:154: in function 'WriteStream'
        addons/[admin] badmin/lua/ba/plugins/sg.lua:41: in function <addons/[admin] badmin/lua/ba/plugins/sg.lua:38>
        [C]: in function 'xpcall'
        addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:63: in function 'Remove'
        addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:48: in function 'Read'
        addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:349: in function 'func'
        gamemodes/darkrp/gamemode/modules/adminsystem/init_sv.lua:580: in function <gamemodes/darkrp/gamemode/modules/adminsystem/init_sv.lua:559>
[[tool] advdupe2] Warning! A net message (ba.cmd.sg.disp) is already started! Discarding in favor of the new message! (NetStreamRequest)
  1. Remove - addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:66
   2. Read - addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:48
    3. func - addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:349
     4. unknown - gamemodes/darkrp/gamemode/modules/adminsystem/init_sv.lua:580

addons/[admin] badmin/lua/ba/plugins/sg.lua:41: bad argument #2 to 'WriteStream' (function expected, got Player)
stack traceback:
        [C]: in function 'error'
        addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:154: in function 'WriteStream'
        addons/[admin] badmin/lua/ba/plugins/sg.lua:41: in function <addons/[admin] badmin/lua/ba/plugins/sg.lua:38>
        [C]: in function 'xpcall'
        addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:63: in function 'Remove'
        addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:48: in function 'Read'
        addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:349: in function 'func'
        gamemodes/darkrp/gamemode/modules/adminsystem/init_sv.lua:580: in function <gamemodes/darkrp/gamemode/modules/adminsystem/init_sv.lua:559>
[[tool] advdupe2] Warning! A net message (ba.cmd.sg.disp) is already started! Discarding in favor of the new message! (NetStreamRequest)
  1. Remove - addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:66
   2. Read - addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:48
    3. func - addons/[tool] advdupe2/lua/advdupe2/sh_netstream.lua:349
     4. unknown - gamemodes/darkrp/gamemode/modules/adminsystem/init_sv.lua:580
Как фиксить?
 
  • 44
  • 1
  • 0
Контакты для связи отсутствуют.
Попробуй вот этот код поставить

sg:
term.Add('ScreengrabStarted', 'Screengrab # сделан. Пожалуйста, подождите 30 секунд, чтобы снимок загрузился.')
term.Add('ScreengrabCooldown', '# у вас есть активный screengrab, пожалуйсто подождите пока он загрузиться.')

local screengrabs = {}
local uniqueid = 0

ba.cmd.Create('sg', function(pl, args)
    if args.target:GetBVar('ScreengrabBusy') then
        ba.notify(pl, term.Get('ScreengrabCooldown'), args.target)
        return
    end

    args.target:SetBVar('ScreengrabBusy', true)

    net.Start('ba.cmd.sg.request')
        net.WriteUInt(uniqueid, 16)
        screengrabs[uniqueid] = pl
        uniqueid = (uniqueid + 1) % 0xFFFF
    net.Send(args.target)

    ba.notify(pl, term.Get('ScreengrabStarted'), args.target)
end)
:AddParam('player_entity', 'target')
:SetFlag '*'
:SetHelp 'Сделать скриншот экрана'

if (SERVER) then
    util.AddNetworkString 'ba.cmd.sg.request'
    util.AddNetworkString 'ba.cmd.sg.display'
    util.AddNetworkString 'ba.cmd.sg.upload'

    net.Receive('ba.cmd.sg.upload', function(_, pl)
        local txnid = net.ReadUInt(16)
        if not screengrabs[txnid] then return end

        pl:SetBVar('ScreengrabBusy', nil)
        
        net.ReadStream(pl, function(data)
            net.Start('ba.cmd.sg.display')
                net.WritePlayer(pl)
                net.WriteStream(data, screengrabs[txnid])
            net.Send(screengrabs[txnid])
        end)
    end)
else
    net.Receive('ba.cmd.sg.request', function()
        local txnid = net.ReadUInt(16)

        RunConsoleCommand('con_filter_enable', 1)
        RunConsoleCommand('con_filter_text_out', txnid..'.jpg')

        RunConsoleCommand('__screenshot_internal', tostring(txnid))

        timer.Simple(1, function()
            RunConsoleCommand('con_filter_enable', 0)
            RunConsoleCommand('con_filter_text_out', '')

            net.Start('ba.cmd.sg.upload')
                net.WriteUInt(txnid, 16)
                net.WriteStream(file.Read('screenshots/' .. txnid .. '.jpg','GAME'))
            net.SendToServer()
        end)
    end)

    net.Receive('ba.cmd.sg.display', function()
        local pl = net.ReadPlayer()
        net.ReadStream(function(data)
            local w, h = ScrW() *.95, ScrH() *.95

            local fr = ui.Create('ui_frame', function(self)
                self:SetSize(w, h)
                self:MakePopup()
                self:Center()
                self:SetTitle('Screen Capture: ' .. pl:NameID())
            end)
            
            ui.Create('DHTML', function(self)
                local x, y = fr:GetDockPos()
                self:SetPos(x, y)
                self:MoveToBack()
                self:SetSize(w - 10, h - y - 5)
                self:SetHTML('<style type="text/css"> body { margin: 0; padding: 0; overflow: hidden; } img { width: 100%; height: 100%; } </style> <img src="data:image/jpg;base64,' .. util.Base64Encode(data) .. '"> ')
            end, fr)
        end)
    end)
end
 
Сверху Снизу