NBEX is a metamod plugin that extends "net buffers": server buffers (reliable, signon) and client reliable buffer (but not unreliable). It extends them to 64 kbytes.
This means that players will have much less chance to be kicked with "Reliable channel overflowed". For example, you can change players' models on round start without bad consequences.
Features:
Partial source code:
Thanks list:
This means that players will have much less chance to be kicked with "Reliable channel overflowed". For example, you can change players' models on round start without bad consequences.
Features:
- Increases server Reliable, SignOn buffers to 64 kbytes
- Increases server Spectator buffer to 3990 bytes
- Increases client Reliable buffer to 64 kbytes by sending it by fragments if need
- Reduces the chance to be kicked with "Reliable channel overflowed" by increasing client reliable buffer
- Go to your <gamedir> (for example "valve" or "cstrike") and copy there folder "addons" from the archive.
- Then go to your metamod directory (for default is <gamedir>/addons/metamod/) and add into plugins.ini :
- For windows:
Quote:
win32 addons\nbex\nbex.dll - For linux:
Quote:
linux addons/nbex/nbex.so
- For windows:
Partial source code:
- bool SV_SpawnServer_Pre(size_t nDeprecated, const char *pszMapName, const char *pszStartSpot) {
- bool fRes = SV_SpawnServer(nDeprecated, pszMapName, pszStartSpot);
- //sv.m_ServerMsg.data = g_bServerUnreliableBuffer;
- //sv.m_ServerMsg.maxsize = sizeof(g_bServerUnreliableBuffer);
- sv.m_ServerReliableMsg.data = g_bServerReliableBuffer;
- sv.m_ServerReliableMsg.maxsize = sizeof(g_bServerReliableBuffer); // 65536
- sv.m_MulticastMsg.data = g_bMulticastBuffer;
- sv.m_MulticastMsg.maxsize = sizeof(g_bMulticastBuffer); // 65536, but why?
- sv.m_SpectatorMsg.data = g_bSpectatorBuffer;
- sv.m_SpectatorMsg.maxsize = sizeof(g_bSpectatorBuffer); // 3990
- sv.m_SignOnMsg.data = g_bSignOnBuffer;
- sv.m_SignOnMsg.maxsize = sizeof(g_bSignOnBuffer); // 65536
- return fRes;
- }
- void Netchan_Setup_Pre(netsrc_t netsrc, netchan_t *pNetchan, netadr_t netadr, size_t nClientID, client_t *pClient, GETFRAGMENTSIZE_FUNC *pfnGetFragmentSize) {
- Netchan_Setup(netsrc, pNetchan, netadr, nClientID, pClient, pfnGetFragmentSize);
- pNetchan->msg.data = g_bPlayerReliableBuffer[nClientID];
- pNetchan->msg.maxsize = sizeof(g_bPlayerReliableBuffer[nClientID]); // 65536
- }
- void Netchan_Transmit_Pre(netchan_t *pNetchan, size_t nBufSize, const byte *pBuf) {
- if (pNetchan->msg.cursize > MAX_NETBUF_SIZE) { // > 3990
- Netchan_CreateFragments(true, pNetchan, &pNetchan->msg);
- pNetchan->msg.cursize = 0;
- } else {
- memcpy(pNetchan->msg_buf, pNetchan->msg.data, pNetchan->msg.cursize);
- }
- Netchan_Transmit(pNetchan, nBufSize, pBuf);
- }
Thanks list:
- Crock - big thanks for his dynpatcher code
- FIELD LINE - active testing
- Subb98 - testing
- SAZONISCHE - testing
- Nixon - testing