diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 492a8a64586ae2068abfe2dbd7cd06a53da0ec93..847c22169d5274722c9442209ef0aceb972e73d8 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -1366,8 +1366,7 @@ static boolean SV_SendServerConfig(INT32 node) // which is nice and easy for us to detect memset(netbuffer->u.servercfg.playerskins, 0xFF, sizeof(netbuffer->u.servercfg.playerskins)); memset(netbuffer->u.servercfg.playercolor, 0xFF, sizeof(netbuffer->u.servercfg.playercolor)); - // ...except for availabilities, where 00 is nonexistent - memset(netbuffer->u.servercfg.playeravailabilities, 0x00, sizeof(netbuffer->u.servercfg.playeravailabilities)); + memset(netbuffer->u.servercfg.playeravailabilities, 0xFF, sizeof(netbuffer->u.servercfg.playeravailabilities)); for (i = 0; i < MAXPLAYERS; i++) { @@ -3498,7 +3497,7 @@ static void HandlePacketFromAwayNode(SINT8 node) { if (netbuffer->u.servercfg.playerskins[j] == 0xFF && netbuffer->u.servercfg.playercolor[j] == 0xFF - && netbuffer->u.servercfg.playeravailabilities[j] == 0x00) + && netbuffer->u.servercfg.playeravailabilities[j] == 0xFFFFFFFF) continue; // not in game playeringame[j] = true; diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 51b9e28ca609bf71f7b07c51c98666fcddce8d48..ce1a631b6d48b179d1cd51e92b5eed2c239daa26 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -1329,6 +1329,7 @@ static void Got_NameAndColor(UINT8 **cp, INT32 playernum) if (server && (p != &players[consoleplayer] && p != &players[secondarydisplayplayer])) { boolean kick = false; + INT32 s; // team colors if (G_GametypeHasTeams()) @@ -1343,6 +1344,16 @@ static void Got_NameAndColor(UINT8 **cp, INT32 playernum) if (!p->skincolor) kick = true; + // availabilities + for (s = 0; s < MAXSKINS; s++) + { + if (!skins[s].availability && (p->availabilities & (1 << s))) + { + kick = true; + break; + } + } + if (kick) { XBOXSTATIC UINT8 buf[2]; diff --git a/src/r_things.c b/src/r_things.c index 5280db73a5bd950c26c2128649c739c7844dcfe9..0a6230c8f43214bbc163b5c7e61cfa055e3c64c8 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -2561,7 +2561,7 @@ UINT32 R_GetSkinAvailabilities(void) for (s = 0; s < MAXSKINS; s++) { - if (!skins[s].availability || unlockables[skins[s].availability - 1].unlocked) + if (skins[s].availability && unlockables[skins[s].availability - 1].unlocked) response |= (1 << s); } return response;