Got_MapQueuecmd: Fix message handling

- Used Admin status of sender rather than local player to obstruct or hide
- Servers are not admins, they just sidestep many authoriative checks
- Server returned early before any chance of printing
- Slightly cleaner message
This commit is contained in:
toaster 2023-04-18 12:32:45 +01:00
parent e0901ed7a7
commit 9c17ea0d28

View file

@ -3438,7 +3438,7 @@ static void Got_RequestMapQueuecmd(UINT8 **cp, INT32 playernum)
static void Got_MapQueuecmd(UINT8 **cp, INT32 playernum)
{
UINT8 flags, queueposition;
UINT8 flags, queueposition, i;
boolean setencore;
UINT16 setgametype;
@ -3464,21 +3464,28 @@ static void Got_MapQueuecmd(UINT8 **cp, INT32 playernum)
return;
}
if (server)
return;
while (roundqueue.size <= queueposition)
if (!server)
{
memset(&roundqueue.entries[roundqueue.size], 0, sizeof(roundentry_t));
roundqueue.size++;
while (roundqueue.size <= queueposition)
{
memset(&roundqueue.entries[roundqueue.size], 0, sizeof(roundentry_t));
roundqueue.size++;
}
G_MapSlipIntoRoundQueue(queueposition, 0, setgametype, setencore, false);
for (i = 0; i <= splitscreen; i++)
{
if (!IsPlayerAdmin(g_localplayers[i]))
continue;
break;
}
if (i > splitscreen)
return;
}
G_MapSlipIntoRoundQueue(queueposition, 0, setgametype, setencore, false);
if (!IsPlayerAdmin(playernum))
return;
CONS_Printf("queuemap: A map was successfully added to the round queue (position %u)\n", queueposition);
CONS_Printf("queuemap: A map was added to the round queue (pos. %u)\n", queueposition+1);
}
static void Command_Pause(void)