Description:
This is a revamp of sourcenet, a module designed to expose Source's networking.
Notes:
- All allocated objects (sn3_bf_write, sn3_bf_read, UCHARPTR, dataFragments_t) must be freed, see examples.
- Do not call :FinishReading/Writing on bit buffers passed as arguments, only free objects you create.
- If you're not using the hooking base, always detach from functions before you change level. Not doing so will cause a crash.
SVN:
http://christopherthorne.googlecode....gm_sourcenet3/
Includes Windows and Linux binaries, as well as the source code and examples.
Global Functions:
Metatables:Code:-- Client: Retrieves server net channel -- Server: Retrieves specified player's net channel CNetChan( [number] entindex ) [CNetChan] -- Creates a new write bitbuf -- Always call FinishWriting after you've finished writing sn3_bf_write( [UCHARPTR] data, [number] bits ) [sn3_bf_write] -- Creates a new read bitbuf -- Always call FinishReading after you've finished reading sn3_bf_read( [UCHARPTR] data, [number] bits ) [sn3_bf_read] -- Allocates new fragments class -- Always call Delete when you've finished with the object dataFragments_t() [dataFragments_t] -- Allocates specified bytes -- Always call Delete when you've finished with the memory UCHARPTR( [number] bytes ) [UCHARPTR] -- Returns network string table container INetworkStringTableContainer() [INetworkStringTableContainer] -- Returns game event manager IGameEventManager2() [IGameEventManager2] -- Hooking functions (Always detach before unloading the module) -- PreProcessPacket( [CNetChan] netchan ) -- PostProcessPacket( [CNetChan] netchan ) Attach__CNetChan_ProcessPacket( [CNetChan] netchan ) Detach__CNetChan_ProcessPacket( [CNetChan] netchan ) -- PreSendDatagram( [CNetChan] netchan, [sn3_bf_write] extradata, [sn3_bf_write] reliabledata, [sn3_bf_write] unreliabledata, [sn3_bf_write] voicedata ) -- PostSendDatagram( [CNetChan] netchan ) Attach__CNetChan_SendDatagram( [CNetChan] netchan ) Detach__CNetChan_SendDatagram( [CNetChan] netchan ) -- PreNetChannelShutdown( [CNetChan] netchan, [string] reason ) -- PostNetChannelShutdown() Attach__CNetChan_Shutdown( [CNetChan] netchan ) Detach__CNetChan_Shutdown( [CNetChan] netchan ) -- INetChannelHandler::ConnectionStart( [INetChannelHandler] handler, [CNetChan] netchan ) Attach__INetChannelHandler_ConnectionStart( [INetChannelHandler] handler ) Detach__INetChannelHandler_ConnectionStart( [INetChannelHandler] handler ) -- INetChannelHandler::ConnectionClosing( [INetChannelHandler] handler, [string] reason ) Attach__INetChannelHandler_ConnectionClosing( [INetChannelHandler] handler ) Detach__INetChannelHandler_ConnectionClosing( [INetChannelHandler] handler ) -- INetChannelHandler::ConnectionCrashed( [INetChannelHandler] handler, [string] reason ) Attach__INetChannelHandler_ConnectionCrashed( [INetChannelHandler] handler ) Attach__INetChannelHandler_ConnectionCrashed( [INetChannelHandler] handler ) -- INetChannelHandler::PacketStart( [INetChannelHandler] handler, [number] incoming_sequence, [number] outgoing_sequence ) Attach__INetChannelHandler_PacketStart( [INetChannelHandler] handler ) Detach__INetChannelHandler_PacketStart( [INetChannelHandler] handler ) -- INetChannelHandler::PacketEnd( [INetChannelHandler] handler ) Attach__INetChannelHandler_PacketEnd( [INetChannelHandler] handler ) Detach__INetChannelHandler_PacketEnd( [INetChannelHandler] handler ) -- INetChannelHandler::FileRequested( [INetChannelHandler] handler, [string] filename, [number] transferID ) Attach__INetChannelHandler_FileRequested( [INetChannelHandler] handler ) Detach__INetChannelHandler_FileRequested( [INetChannelHandler] handler ) -- INetChannelHandler::FileReceived( [INetChannelHandler] handler, [string] filename, [number] transferID ) Attach__INetChannelHandler_FileReceived( [INetChannelHandler] handler ) Detach__INetChannelHandler_FileReceived( [INetChannelHandler] handler ) -- INetChannelHandler::FileDenied( [INetChannelHandler] handler, [string] filename, [number] transferID ) Attach__INetChannelHandler_FileDenied( [INetChannelHandler] handler ) Detach__INetChannelHandler_FileDenied( [INetChannelHandler] handler ) -- PreProcessMessages( [CNetChan] netchan, [sn3_bf_read] messages ) -- Optional return of new sn3_bf_read size in bits (incase you've tweaked the data) Attach__CNetChan_ProcessMessages() Detach__CNetChan_ProcessMessages()
Constants:Code:sn3_bf_write: -- Data pointer GetBasePointer() [UCHARPTR] -- Max number of bits that can be written GetMaxNumBits() [number] -- Number of bits written GetNumBitsWritten() [number] -- Number of bytes written GetNumBytesWritten() [number] -- Number of bits remaining GetNumBitsLeft() [number] -- Number of bytes remaining GetNumBytesLeft() [number] -- Overflow status IsOverflowed() [boolean] -- Seeks to specified bit Seek( [number] bit ) -- Writes ang in specified bits WriteBitAngle( [number] ang, [number] bits ) -- Writes a UCHARPTR in specified bits, returns success WriteBits( [UCHARPTR] data, [number] bits ) [boolean] -- Writes a Vector coordinate WriteBitVec3Coord( [Vector] vec ) -- Writes a byte WriteByte( [number] val ) -- Writes a UCHARPTR in specified bytes WriteBytes( [UCHARPTR] data, [number] bytes ) -- Writes a character WriteChar( [number] val ) -- Writes a float WriteFloat( [number] val ) -- Writes a long WriteLong( [number] val ) -- Writes a single bit ( 1 or 0 ) WriteOneBit( [number] val ) -- Writes a short WriteShort( [number] val ) -- Writes a null-terminated string WriteString( [string] str ) -- Writes a signed long value in specified bits WriteSBitLong( [number] val, [number] bits ) -- Writes an unsigned long value in specified bits WriteUBitLong( [number] val, [number] bits ) -- Writes a word WriteWord( [number] val ) -- Deletes bitbuf (Only call this if you allocated the buffer) FinishWriting() sn3_bf_read: -- Data pointer GetBasePointer() [UCHARPTR] -- Number of bits remaining GetNumBitsLeft() [number] -- Number of bytes remaining GetNumBytesLeft() [number] -- Number of bits read GetNumBitsRead() [number] -- Overflow status IsOverflowed() [boolean] -- Reads an angle ReadBitAngle( [number] bits ) [number] -- Reads angle object ReadBitAngles() [Angle] -- Reads bits (Always call :Delete when finished with the result) ReadBits( [number] bits ) [UCHARPTR] -- Reads a Vector coordinate ReadBitVec3Coord() [Vector] -- Reads a byte ReadByte() [number] -- Reads specified amount of bytes (Always call :Delete when finished with the result) ReadBytes( [number] bytes ) [UCHARPTR] -- Reads a character ReadChar() [number] -- Reads a float ReadFloat() [number] -- Reads a long ReadLong() [number] -- Reads a single bit ( 1 or 0 ) ReadOneBit() [number] -- Reads a short ReadShort() [number] -- Reads a string (max 1024) ReadString() [string] -- Reads a signed long value of length 'bits' ReadSBitLong( [number] bits ) [number] -- Reads an unsigned long value of length 'bits' ReadUBitLong( [number] bits ) [number] -- Reads a word ReadWord() [number] -- Seeks to specified bit Seek( [number] bit ) [boolean] -- Seeks to specified bit relative to current position SeekRelative( [number] bit ) [boolean] -- Total bytes available TotalBytesAvailable() [number] -- Deletes bitbuf (Only call this if you allocated the buffer) FinishReading() CNetChan: -- Prints registered net messages to console (debugging) DumpMessages() -- Resets buffers and a few other member variables Reset() -- Appears to purge fragments, not documented Clear() -- Terminates the net channel with the specified reason Shutdown( [string] reason ) -- Adds data in buffers to send queue Transmit( [opt boolean] onlyreliable ) [boolean] -- Sends a local file SendFile( [string] filename, [number] transferid ) [boolean] -- Reports file denial DenyFile( [string] filename, [number] transferid ) -- Attempts to download specified file, returns transfer ID RequestFile( [string] filename ) [number] -- Size of outgoing queue for specified stream GetOutgoingQueueSize( [number] stream ) [number] -- Returns fragments at offset in outgoing stream queue GetOutgoingQueueFragments( [number] stream, [number] offset ) [dataFragments_t] -- Adds fragments to outgoing queue QueueOutgoingFragments( [number] stream, [dataFragments_t] fragments ) -- Current incoming fragments GetIncomingFragments( [number] stream ) [dataFragments_t] -- Table of subchannels GetSubChannels() [table: subchannel_t] -- Outgoing data buffers GetReliableBuffer() [sn3_bf_write] GetUnreliableBuffer() [sn3_bf_write] GetVoiceBuffer() [sn3_bf_write] -- Handler used by net channel for select events GetNetChannelHandler() [INetChannelHandler] -- Remote address GetAddress() [netadr_t] -- Time since networking was initialized GetTime() [number] -- Current latency (RTT), more accurate but jittering GetLatency( [number] flow ) [number] -- Average packet latency in seconds GetAvgLatency( [number] flow ) [number] -- Average packet loss GetAvgLoss( [number] flow ) [number] -- Average packet choke GetAvgChoke( [number] flow ) [number] -- Data flow in bytes/sec GetAvgData( [number] flow ) [number] -- Average packets/sec GetAvgPackets( [number] flow ) [number] -- Total flow in/out in bytes GetTotalData( [number] flow ) [number] -- Last send sequence number GetSequenceNr( [number] flow ) [number] -- true if packet was not lost/dropped/choked/flushed IsValidPacket( [number] flow, [number] frame_number ) [boolean] -- Time when packet was sent GetPacketTime( [number] flow, [number] frame_number ) [number] -- Group size of this packet GetPacketBytes( [number] flow, [number] frame_number, [number] group ) [number] -- TCP progress if transmitting GetStreamProgress( [number] flow ) [number;received, number;total] -- GetCommandInterpolationAmount( [number] flow, [number] frame_number ) [number] -- GetPacketResponseLatency( [number] flow, [number] frame_number ) [number;latencymsecs, number;choke] -- GetRemoteFramerate() [number;frametime, number;frametimedev] -- SetInterpolationAmount( [number] amount ) -- SetRemoteFramerate( [number] frametime, [number] frametimedev ) -- Sets max size for the reliable, unreliable or voice buffer SetMaxBufferSize( [boolean] reliable, [number] bytes, [boolean] voice ) -- Is this a demo playback channel? IsPlayback() [boolean] -- Amount of seconds the net channel can go without communicating GetTimeoutSeconds() [number] SetTimeoutSeconds( [number] seconds ) -- The value of GetTime() when the channel was initialized GetConnectTime() [number] SetConnectTime( [number] t ) -- The value of GetTime() when the last packet was received GetLastReceivedTime() [number] SetLastReceivedTime( [number] t ) -- Channel name GetName() [string] SetName( [string] name ) -- Max bytes/sec the host can receive data GetRate() [number] SetRate( [number] val ) -- Background mode reduces the amount of data sent at once for certain operations, eg. file transfer GetBackgroundMode() [boolean] SetBackgroundMode( [boolean] state ) -- Use lz compression on game packets GetCompressionMode() [boolean] SetCompressionMode( [boolean] state ) -- Requested max packet size before packets are 'split' GetMaxRoutablePayloadSize() [number] SetMaxRoutablePayloadSize( [number] bytes ) subchannel_t: -- Offset of fragment to be sent by subchannel GetFragmentOffset( [number] stream ) [number] SetFragmentOffset( [number] stream, [number] offset ) -- Amount of fragments to be sent by subchannel GetFragmentNumber( [number] stream ) SetFragmentNumber( [number] stream, [number] num ) -- Outgoing sequence at time of sending GetSequence() [number] SetSequence( [number] seq ) -- Current state of subchannel ( 0 = idle, 1 = needs sending, 2 = ready?, 3 = ? ) GetState() [number] SetState( [number] state ) -- Subchannel index (0-7) GetIndex() [number] SetIndex( [number] index ) dataFragments_t: -- Handle for file operations GetFileHandle() [FileHandle_t] SetFileHandle( [FileHandle_t] handle ) -- File name GetFileName() [string] SetFileName( [string] filename ) -- File transfer ID GetFileTransferID() [number] SetFileTransferID( [number] id ) -- Data buffer GetBuffer() [UCHARPTR] SetBuffer( [UCHARPTR] buf ) -- Data size (bytes) GetBytes() [number] SetBytes( [number] bytes ) -- Data size (bits) GetBits() [number] SetBits( [number] bits ) -- Actual size (for compression) GetActualSize() [number] SetActualSize( [number] bytes ) -- Check for compression GetCompressed() [boolean] SetCompressed( [boolean] state ) -- Check for stream usage GetStream() [boolean] SetStream( [boolean] state ) -- Total number of fragments to be sent GetTotal() [number] SetTotal( [number] total ) -- Amount of fragments sent so far GetProgress() [number] SetProgress( [number] progress ) -- Amount of fragments to send in next packet GetNum() [number] SetNum( [number] num ) -- Cleanup self-allocated fragments Delete() FileHandle_t: -- Empty UCHARPTR: -- Cleanup self-allocated data Delete() netadr_t: IsLocalhost() [boolean] IsLoopback() [boolean] IsReservedAdr() [boolean] IsValid() [boolean] GetIP() [number] GetPort() [number] GetType() [number] ToString( [opt boolean] baseOnly ) [string] INetworkStringTableContainer: FindTable( [string] tablename ) [INetworkStringTable] GetTable( [number] tableid ) [INetworkStringTable] INetworkStringTable: GetString( [number] id ) [string] IGameEventManager2: -- Call IGameEvent.Delete when done CreateEvent( [string] name ) [IGameEvent] -- Serializes an IGameEvent into buffer SerializeEvent( [IGameEvent] event, [sn3_bf_write] buf ) [boolean] -- Unserializes an event from a buffer UnserializeEvent( [sn3_bf_read] buf ) [IGameEvent] IGameEvent: -- Event name GetName() [string] -- If event handled reliably IsReliable() [boolean] -- If event is never networked IsLocal() [boolean] -- Check if data field exists IsEmpty( [string] keyName ) [boolean] -- Read access GetBool( [string] keyName ) [boolean] GetInt( [string] keyName ) [number] GetFloat( [string] keyName ) [number] GetString( [string] keyName ) [string] -- Write access SetBool( [string] keyName, [boolean] value ) SetInt( [string] keyName, [number] value ) SetFloat( [string] keyName, [number] value ) SetString( [string] keyName, [string] value )
Changes:Code:[table] UpdateType { [number] EnterPVS [number] LeavePVS [number] DeltaEnt [number] PreserveEnt [number] Finished [number] Failed } [number] FHDR_ZERO [number] FHDR_LEAVEPVS [number] FHDR_DELETE [number] FHDR_ENTERPVS [string] INSTANCE_BASELINE_TABLENAME [string] LIGHT_STYLES_TABLENAME [string] USER_INFO_TABLENAME [string] SERVER_STARTUP_DATA_TABLENAME [number] DELTA_OFFSET_BITS [number] DELTA_OFFSET_MAX [number] DELTASIZE_BITS [number] NUM_NEW_COMMAND_BITS [number] MAX_NEW_COMMANDS [number] NUM_BACKUP_COMMAND_BITS [number] MAX_BACKUP_COMMANDS [number] NET_MESSAGE_BITS [number] net_NOP [number] net_Disconnect [number] net_File [number] net_LastControlMessage [number] net_Tick [number] net_StringCmd [number] net_SetConVar [number] net_SignonState [number] svc_ServerInfo [number] svc_SendTable [number] svc_ClassInfo [number] svc_SetPause [number] svc_CreateStringTable [number] svc_UpdateStringTable [number] svc_VoiceInit [number] svc_VoiceData [number] svc_Print [number] svc_Sounds [number] svc_SetView [number] svc_FixAngle [number] svc_CrosshairAngle [number] svc_BSPDecal [number] svc_UserMessage [number] svc_EntityMessage [number] svc_GameEvent [number] svc_PacketEntities [number] svc_TempEntities [number] svc_Prefetch [number] svc_Menu [number] svc_GameEventList [number] svc_GetCvarValue [number] svc_CmdKeyValues [number] SVC_LASTMSG [number] clc_ClientInfo [number] clc_Move [number] clc_VoiceData [number] clc_BaselineAck [number] clc_ListenEvents [number] clc_RespondCvarValue [number] clc_FileCRCCheck [number] clc_CmdKeyValues [number] clc_FileMD5Check [number] CLC_LASTMSG [number] RES_FATALIFMISSING [number] RES_PRELOAD [number] SIGNONSTATE_NONE [number] SIGNONSTATE_CHALLENGE [number] SIGNONSTATE_CONNECTED [number] SIGNONSTATE_NEW [number] SIGNONSTATE_PRESPAWN [number] SIGNONSTATE_SPAWN [number] SIGNONSTATE_FULL [number] SIGNONSTATE_CHANGELEVEL [number] MAX_STREAMS [number] FRAG_NORMAL_STREAM [number] FRAG_FILE_STREAM [number] MAX_RATE [number] MIN_RATE [number] DEFAULT_RATE [number] MAX_FRAGMENT_SIZE [number] MAX_SUBCHANNELS [number] MAX_FILE_SIZE [number] FLOW_OUTGOING [number] FLOW_INCOMING [number] MAX_FLOWS [number] MAX_CUSTOM_FILES
http://code.google.com/p/christopherthorne/source/list

Register
Events
Popular
More
Post #1



x 10
x 8
x 3
x 1
x 1
Agree x 4
x 4
x 1
x 1
x 1
Funny x 3
Lua Helper x 1





Disagree x 3