mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-21 18:32:08 +00:00
Merge branch 'name-change-spam' into 'next'
Don't let players change their name more than five times per minute See merge request STJr/SRB2!1155
This commit is contained in:
commit
92b61aacd8
5 changed files with 30 additions and 4 deletions
|
@ -3167,6 +3167,8 @@ static void CL_RemovePlayer(INT32 playernum, kickreason_t reason)
|
|||
// Reset the name
|
||||
sprintf(player_names[playernum], "Player %d", playernum+1);
|
||||
|
||||
player_name_changes[playernum] = 0;
|
||||
|
||||
if (IsPlayerAdmin(playernum))
|
||||
{
|
||||
RemoveAdminPlayer(playernum); // don't stay admin after you're gone
|
||||
|
@ -3783,6 +3785,8 @@ void SV_ResetServer(void)
|
|||
adminplayers[i] = -1; // Populate the entire adminplayers array with -1.
|
||||
}
|
||||
|
||||
memset(player_name_changes, 0, sizeof player_name_changes);
|
||||
|
||||
mynode = 0;
|
||||
cl_packetmissed = false;
|
||||
|
||||
|
|
|
@ -527,6 +527,10 @@ typedef enum
|
|||
|
||||
} kickreason_t;
|
||||
|
||||
/* the max number of name changes in some time period */
|
||||
#define MAXNAMECHANGES (5)
|
||||
#define NAMECHANGERATE (60*TICRATE)
|
||||
|
||||
extern boolean server;
|
||||
extern boolean serverrunning;
|
||||
#define client (!server)
|
||||
|
|
|
@ -1126,6 +1126,8 @@ static void SetPlayerName(INT32 playernum, char *newname)
|
|||
if (netgame)
|
||||
HU_AddChatText(va("\x82*%s renamed to %s", player_names[playernum], newname), false);
|
||||
|
||||
player_name_changes[playernum]++;
|
||||
|
||||
strcpy(player_names[playernum], newname);
|
||||
}
|
||||
}
|
||||
|
@ -1302,7 +1304,12 @@ static void SendNameAndColor(void)
|
|||
snacpending++;
|
||||
|
||||
// Don't change name if muted
|
||||
if (cv_mute.value && !(server || IsPlayerAdmin(consoleplayer)))
|
||||
if (player_name_changes[consoleplayer] >= MAXNAMECHANGES)
|
||||
{
|
||||
CV_StealthSet(&cv_playername, player_names[consoleplayer]);
|
||||
HU_AddChatText("\x85*You must wait to change your name again", false);
|
||||
}
|
||||
else if (cv_mute.value && !(server || IsPlayerAdmin(consoleplayer)))
|
||||
CV_StealthSet(&cv_playername, player_names[consoleplayer]);
|
||||
else // Cleanup name if changing it
|
||||
CleanupPlayerName(consoleplayer, cv_playername.zstring);
|
||||
|
@ -1463,8 +1470,11 @@ static void Got_NameAndColor(UINT8 **cp, INT32 playernum)
|
|||
skin = READUINT8(*cp);
|
||||
|
||||
// set name
|
||||
if (strcasecmp(player_names[playernum], name) != 0)
|
||||
SetPlayerName(playernum, name);
|
||||
if (player_name_changes[playernum] < MAXNAMECHANGES)
|
||||
{
|
||||
if (strcasecmp(player_names[playernum], name) != 0)
|
||||
SetPlayerName(playernum, name);
|
||||
}
|
||||
|
||||
// set color
|
||||
p->skincolor = color % numskincolors;
|
||||
|
|
|
@ -452,6 +452,8 @@ player_t *seenplayer; // player we're aiming at right now
|
|||
// so that it doesn't have to be updated depending on the value of MAXPLAYERS
|
||||
char player_names[MAXPLAYERS][MAXPLAYERNAME+1];
|
||||
|
||||
INT32 player_name_changes[MAXPLAYERS];
|
||||
|
||||
INT16 rw_maximums[NUM_WEAPONS] =
|
||||
{
|
||||
800, // MAX_INFINITY
|
||||
|
@ -2345,6 +2347,11 @@ void G_Ticker(boolean run)
|
|||
|
||||
if (camtoggledelay2)
|
||||
camtoggledelay2--;
|
||||
|
||||
if (gametic % NAMECHANGERATE == 0)
|
||||
{
|
||||
memset(player_name_changes, 0, sizeof player_name_changes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,8 @@ extern char customversionstring[32];
|
|||
#ifdef SEENAMES
|
||||
extern player_t *seenplayer;
|
||||
#endif
|
||||
extern char player_names[MAXPLAYERS][MAXPLAYERNAME+1];
|
||||
extern char player_names[MAXPLAYERS][MAXPLAYERNAME+1];
|
||||
extern INT32 player_name_changes[MAXPLAYERS];
|
||||
|
||||
extern player_t players[MAXPLAYERS];
|
||||
extern boolean playeringame[MAXPLAYERS];
|
||||
|
|
Loading…
Reference in a new issue