Welcome to LastCS.Ro # Gaming

Join us now to get access to all our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, and so, so much more. It's also quick and totally free, so what are you waiting for?

LCS Resources

Private resources made by the LCS team!!

Live Server

Live tracking of our servers.

Server Hosting

Want to host a server ? Press here to get one.

ReHLDS Reliable channel overflowed

tweky

BOSS DE BOSS
Staff member
Joined
Jun 7, 2024
Messages
68
Reaction score
9
Points
8
Age
30
Website
minios.ro
Credits
906
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:
  • 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
Installation:
  1. Go to your <gamedir> (for example "valve" or "cstrike") and copy there folder "addons" from the archive.
  2. 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


Partial source code:
  1. bool SV_SpawnServer_Pre(size_t nDeprecated, const char *pszMapName, const char *pszStartSpot) {
  2. bool fRes = SV_SpawnServer(nDeprecated, pszMapName, pszStartSpot);
  3. //sv.m_ServerMsg.data = g_bServerUnreliableBuffer;
  4. //sv.m_ServerMsg.maxsize = sizeof(g_bServerUnreliableBuffer);
  5. sv.m_ServerReliableMsg.data = g_bServerReliableBuffer;
  6. sv.m_ServerReliableMsg.maxsize = sizeof(g_bServerReliableBuffer); // 65536
  7. sv.m_MulticastMsg.data = g_bMulticastBuffer;
  8. sv.m_MulticastMsg.maxsize = sizeof(g_bMulticastBuffer); // 65536, but why?
  9. sv.m_SpectatorMsg.data = g_bSpectatorBuffer;
  10. sv.m_SpectatorMsg.maxsize = sizeof(g_bSpectatorBuffer); // 3990
  11. sv.m_SignOnMsg.data = g_bSignOnBuffer;
  12. sv.m_SignOnMsg.maxsize = sizeof(g_bSignOnBuffer); // 65536
  13. return fRes;
  14. }
  15. void Netchan_Setup_Pre(netsrc_t netsrc, netchan_t *pNetchan, netadr_t netadr, size_t nClientID, client_t *pClient, GETFRAGMENTSIZE_FUNC *pfnGetFragmentSize) {
  16. Netchan_Setup(netsrc, pNetchan, netadr, nClientID, pClient, pfnGetFragmentSize);
  17. pNetchan->msg.data = g_bPlayerReliableBuffer[nClientID];
  18. pNetchan->msg.maxsize = sizeof(g_bPlayerReliableBuffer[nClientID]); // 65536
  19. }
  20. void Netchan_Transmit_Pre(netchan_t *pNetchan, size_t nBufSize, const byte *pBuf) {
  21. if (pNetchan->msg.cursize > MAX_NETBUF_SIZE) { // > 3990
  22. Netchan_CreateFragments(true, pNetchan, &pNetchan->msg);
  23. pNetchan->msg.cursize = 0;
  24. } else {
  25. memcpy(pNetchan->msg_buf, pNetchan->msg.data, pNetchan->msg.cursize);
  26. }
  27. Netchan_Transmit(pNetchan, nBufSize, pBuf);
  28. }


Thanks list:
  • Crock - big thanks for his dynpatcher code
  • FIELD LINE - active testing
  • Subb98 - testing
  • SAZONISCHE - testing
  • Nixon - testing
 

Attachments

shape1
shape2
shape3
shape4
shape5
shape6
Back
Top