Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local function SplitStringEvery(str, count)
- local tab = {}
- for x in string.gmatch( str, string.rep( ".", count - 1 ) .. "?.?" ) do
- table.insert( tab, x )
- end
- return tab
- end
- local function MaterialData( txt, format )
- return Material( "../data/" .. mat .. "\n."..format )
- end
- if ( SERVER ) then
- util.AddNetworkString( 'ClientSendPicture' )
- util.AddNetworkString( 'ServerRedirectPicture' )
- net.Receive( 'ClientSendPicture', function( len, ply )
- local int = net.ReadFloat()
- net.Start( 'ServerRedirectPicture' )
- net.WriteFloat( int )
- for i = 1, int do
- local len = net.ReadFloat()
- local str = net.ReadData( len )
- net.WriteFloat( len )
- net.WriteData( str, len )
- end
- net.Send( ply )
- end )
- end
- if ( CLIENT ) then
- net.Receive( 'ServerRedirectPicture', function()
- local int = net.ReadFloat()
- local tab = {}
- local str = ''
- for i = 1, int do
- local len = net.ReadFloat()
- table.insert( tab, net.ReadData( len ) )
- end
- for k,v in pairs( tab ) do file.Append( 'tmp.txt', v ) end
- local mat = MaterialData( 'tmp.txt', 'jpg' )
- local Base = vgui.Create( 'DFrame' )
- Base:SetSize( 200, 200 )
- Base:Center()
- Base:SetSizable( true )
- Base:MakePopup()
- Base.Paint = function( self, w, h )
- surface.SetDrawColor( 255, 255, 255, 255 )
- surface.SetMaterial( mat )
- surface.DrawTexturedRect( 0, 0, w, h )
- end
- file.Delete( 'tmp.txt' )
- end )
- concommand.Add( 'SendPictureTest', function()
- local imagedata = file.Read( 'screenshots/classthing0000.jpg', 'MOD' )
- local imgtbl = SplitStringEvery( imagedata, 1024 )
- net.Start( 'ClientSendPicture' )
- net.WriteFloat( #imgtbl )
- for k, v in pairs( imgtbl ) do net.WriteFloat( #v ) net.WriteData( v, #v ) end
- net.SendToServer()
- end )
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement