diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 0447d16b..88a4754d 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -1606,6 +1606,15 @@ static boolean SV_SendServerConfig(INT32 node) netbuffer->u.servercfg.playercolor[i] = (UINT8)players[i].skincolor; } + netbuffer->u.servercfg.maxplayer = (UINT8)(min((dedicated ? MAXPLAYERS-1 : MAXPLAYERS), cv_maxplayers.value)); + netbuffer->u.servercfg.allownewplayer = cv_allownewplayer.value; + +#ifdef HAVE_DISCORDRPC + netbuffer->u.servercfg.discordinvites = (boolean)cv_discordinvites.value; +#else + netbuffer->u.servercfg.discordinvites = false; +#endif + memcpy(netbuffer->u.servercfg.server_context, server_context, 8); op = p = netbuffer->u.servercfg.varlengthinputs; @@ -3888,10 +3897,6 @@ static boolean SV_AddWaitingPlayers(void) } } -#ifdef HAVE_DISCORDRPC - DRPC_SendDiscordInfo(); -#endif - return newplayer; } @@ -4316,6 +4321,12 @@ static void HandlePacketFromAwayNode(SINT8 node) for (j = 0; j < MAXPLAYERS; j++) adminplayers[j] = netbuffer->u.servercfg.adminplayers[j]; memcpy(server_context, netbuffer->u.servercfg.server_context, 8); + +#ifdef HAVE_DISCORDRPC + discordInfo.maxPlayers = netbuffer->u.servercfg.maxplayer; + discordInfo.joinsAllowed = netbuffer->u.servercfg.allownewplayer; + discordInfo.everyoneCanInvite = netbuffer->u.servercfg.discordinvites; +#endif } nodeingame[(UINT8)servernode] = true; diff --git a/src/d_clisrv.h b/src/d_clisrv.h index a872b02e..ef988ac8 100644 --- a/src/d_clisrv.h +++ b/src/d_clisrv.h @@ -334,6 +334,11 @@ typedef struct char server_context[8]; // Unique context id, generated at server startup. + // Discord info (always defined for net compatibility) + UINT8 maxplayer; + boolean allownewplayer; + boolean discordinvites; + UINT8 varlengthinputs[0]; // Playernames and netvars } ATTRPACK serverconfig_pak;