I have a better idea...

This commit is contained in:
GenericHeroGuy 2025-10-17 21:39:22 +02:00
parent ff7dea704c
commit 27b22fee94
8 changed files with 17 additions and 34 deletions

View file

@ -85,6 +85,8 @@
#define MAX_REASONLENGTH 30
#define FORCECLOSE 0x8000
I_StaticAssert(sizeof(doomdata_t) < MAXPACKETLENGTH); // can't send a packet larger than the max packet length!
boolean server = true; // true or false but !server == client
#define client (!server)
boolean nodownload = false;
@ -93,7 +95,7 @@ INT32 serverplayer = 0;
char motd[254], server_context[8]; // Message of the Day, Unique Context (even without Mumble support)
UINT8 playerconsole[MAXPLAYERS];
plrinfo playerinfo[MAXPLAYERS];
plrinfo playerinfo[MAXPLAYERINFO];
// Server specific vars
UINT8 playernode[MAXPLAYERS];
@ -1067,7 +1069,7 @@ static void SV_SendPlayerInfo(INT32 node)
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
netbuffer->packettype = PT_PLAYERINFO;
for (i = 0; i < MSCOMPAT_MAXPLAYERS; i++)
for (i = 0; i < MAXPLAYERINFO; i++)
{
if (i >= MAXPLAYERS || playernode[i] == UINT8_MAX || !playeringame[i])
{
@ -1081,10 +1083,6 @@ static void SV_SendPlayerInfo(INT32 node)
netbuffer->u.playerinfo[i].name[MAXPLAYERNAME] = '\0';
//fetch IP address
//No, don't do that, you fuckface.
memset(netbuffer->u.playerinfo[i].address, 0, 4);
if (G_GametypeHasTeams())
{
if (!players[i].ctfteam)
@ -1108,7 +1106,7 @@ static void SV_SendPlayerInfo(INT32 node)
netbuffer->u.playerinfo[i].data = 0; //players[i].skincolor;
}
HSendPacket(node, false, 0, sizeof(plrinfo) * MSCOMPAT_MAXPLAYERS);
HSendPacket(node, false, 0, sizeof(plrinfo) * MAXPLAYERINFO);
}
/** Sends a PT_SERVERCFG packet
@ -4495,7 +4493,7 @@ static void HandlePlayerInfo(SINT8 node)
{
(void)node;
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
for (INT32 i = 0; i < MSCOMPAT_MAXPLAYERS; i++)
for (INT32 i = 0; i < MAXPLAYERINFO; i++)
{
playerinfo[i] = netbuffer->u.playerinfo[i];
}

View file

@ -327,7 +327,6 @@ struct plrinfo
{
UINT8 num;
char name[MAXPLAYERNAME+1];
UINT8 address[4]; // sending another string would run us up against MAXPACKETLENGTH
UINT8 team;
UINT16 skin;
UINT8 data; // Color is first four bits, hasflag, isit and issuper have one bit each, the last is unused.
@ -335,17 +334,6 @@ struct plrinfo
UINT16 timeinserver; // In seconds.
} ATTRPACK;
// Shortest player information for join during intermission.
struct plrconfig
{
char name[MAXPLAYERNAME+1];
UINT16 skin;
UINT16 color;
UINT32 pflags;
UINT32 score;
UINT8 ctfteam;
} ATTRPACK;
struct filesneededconfig_pak
{
INT32 first;
@ -392,8 +380,7 @@ struct doomdata_t
serverinfoupdate_pak serverinfoupdate;
askinfo_pak askinfo;
msaskinfo_pak msaskinfo;
plrinfo playerinfo[MSCOMPAT_MAXPLAYERS];
plrconfig playerconfig[MAXPLAYERS];
plrinfo playerinfo[MAXPLAYERINFO];
INT32 filesneedednum;
filesneededconfig_pak filesneededcfg;
netinfo_pak netinfo;
@ -580,7 +567,7 @@ extern char motd[254], server_context[8];
extern UINT8 playernode[MAXPLAYERS];
/* consoleplayer of this player (splitscreen) */
extern UINT8 playerconsole[MAXPLAYERS];
extern plrinfo playerinfo[MAXPLAYERS];
extern plrinfo playerinfo[MAXPLAYERINFO];
extern SINT8 joinnode;
#define SERVMUS_1 "SRVMS1"

View file

@ -190,7 +190,6 @@ extern char logfilename[1024];
// NOTE: it needs more than this to increase the number of players...
#define MAXPLAYERS 43 // 42 + host slot
#define PLAYERSMASK (MAXPLAYERS-1)
#define MAXPLAYERNAME 21
#define MAXSPLITSCREENPLAYERS 4 // Max number of players on a single computer
#define MAXGAMEPADS (MAXSPLITSCREENPLAYERS * 2) // Number of gamepads we'll be allowing
@ -206,8 +205,8 @@ extern char logfilename[1024];
#define FADECOLOR 0 // 120
#define ENCOREFADECOLOR 209 // 122
// Master Server compatibility ONLY
#define MSCOMPAT_MAXPLAYERS (32)
// the highest number of playerinfo entries we can fit into a single packet
#define MAXPLAYERINFO 42
// State updates, number of tics / second.
// NOTE: used to setup the timer rate, see I_StartupTimer().

View file

@ -22,10 +22,10 @@
/// \def MAXPACKETLENGTH
/// For use in a LAN
#define MAXPACKETLENGTH 2048
#define MAXPACKETLENGTH 1450
/// \def INETPACKETLENGTH
/// For use on the internet
#define INETPACKETLENGTH 1450
#define INETPACKETLENGTH 1024
#define NO_BAN_TIME (time_t)(-1)

View file

@ -8790,7 +8790,7 @@ void MD_DrawViewServer(void)
if (playeramount > 0)
{
for (i = 0; i < MAXPLAYERS; i++)
for (i = 0; i < MAXPLAYERINFO; i++)
{
if (playerinfo[i].num < 255)
{

View file

@ -449,9 +449,9 @@ boolean P_LookForPlayers(mobj_t *actor, boolean allaround, boolean tracer, fixed
actor->lastlook %= MAXPLAYERS;
stop = (actor->lastlook - 1) & PLAYERSMASK;
stop = (actor->lastlook - 1) % MAXPLAYERS;
for (; ; actor->lastlook = (actor->lastlook + 1) & PLAYERSMASK)
for (; ; actor->lastlook = (actor->lastlook + 1) % MAXPLAYERS)
{
// done looking
if (actor->lastlook == stop)

View file

@ -4296,9 +4296,9 @@ boolean P_BossTargetPlayer(mobj_t *actor, boolean closest)
// first time init, this allow minimum lastlook changes
if (actor->lastlook < 0)
actor->lastlook = P_RandomByte();
actor->lastlook &= PLAYERSMASK;
actor->lastlook %= MAXPLAYERS;
for( ; ; actor->lastlook = (actor->lastlook+1) & PLAYERSMASK)
for( ; ; actor->lastlook = (actor->lastlook+1) % MAXPLAYERS)
{
// save the first look so we stop next time.
if (stop < 0)

View file

@ -66,7 +66,6 @@ TYPEDEF (serverinfoupdate_pak);
TYPEDEF (askinfo_pak);
TYPEDEF (msaskinfo_pak);
TYPEDEF (plrinfo);
TYPEDEF (plrconfig);
TYPEDEF (filesneededconfig_pak);
TYPEDEF (doomdata_t);
TYPEDEF (serverelem_t);