Skip to content

Commit

Permalink
chat commands and bans: add new /BLOCKCHAT and /UNBLOCKCHAT commands
Browse files Browse the repository at this point in the history
  • Loading branch information
derhass committed Feb 28, 2022
1 parent bba0611 commit 54f3dcc
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 7 deletions.
1 change: 1 addition & 0 deletions GameMod/MPBanPlayers.cs
Expand Up @@ -14,6 +14,7 @@ namespace GameMod {
public enum MPBanMode : int {
Ban=0,
Annoy,
BlockChat,
Count // End Marker, always add before
}

Expand Down
37 changes: 30 additions & 7 deletions GameMod/MPChatCommands.cs
Expand Up @@ -87,6 +87,8 @@ public enum Command {
Unban,
Annoy,
Unannoy,
BlockChat,
UnblockChat,
End,
Start,
Status,
Expand Down Expand Up @@ -175,6 +177,12 @@ public static bool IsEnabled()
} else if (cmdName == "UB" || cmdName == "UNBAN") {
cmd = Command.Unban;
needAuth = true;
} else if (cmdName == "BC" || cmdName == "BLOCKCHAT") {
cmd = Command.BlockChat;
needAuth = true;
} else if (cmdName == "UBC" || cmdName == "UNBLOCKCHAT") {
cmd = Command.UnblockChat;
needAuth = true;
} else if (cmdName == "E" || cmdName == "END") {
cmd = Command.End;
needAuth = true;
Expand All @@ -197,10 +205,10 @@ public static bool IsEnabled()
}

if (cmd == Command.None) {
// there might be Annoy-Banned players, and we can just ignore their ramblings
if (MPBanPlayers.GetList(MPBanMode.Annoy).Count > 0) {
// there might be BlockChat-Banned players, and we can just ignore their ramblings
if (MPBanPlayers.GetList(MPBanMode.BlockChat).Count > 0) {
MPBanEntry we = FindPlayerEntryForConnection(sender_conn, inLobby);
if (we != null && MPBanPlayers.IsBanned(we, MPBanMode.Annoy)) {
if (we != null && MPBanPlayers.IsBanned(we, MPBanMode.BlockChat)) {
return false;
}
}
Expand Down Expand Up @@ -248,6 +256,12 @@ public static bool IsEnabled()
case Command.Unannoy:
result = DoUnban(MPBanMode.Annoy);
break;
case Command.BlockChat:
result = DoKickBan(false, true, MPBanMode.BlockChat);
break;
case Command.UnblockChat:
result = DoUnban(MPBanMode.BlockChat);
break;
case Command.End:
result = DoEnd();
break;
Expand Down Expand Up @@ -428,7 +442,7 @@ public bool DoAuth()
return false;
}

// Execute KICK or BAN or KICKBAN or ANNOY command
// Execute KICK or BAN or KICKBAN or ANNOY or BLOCKCHAT command
public bool DoKickBan(bool doKick, bool doBan, MPBanMode banMode) {
string op;
string banOp = banMode.ToString().ToUpper();
Expand Down Expand Up @@ -462,6 +476,10 @@ public bool DoAuth()

if (doBan) {
MPBanPlayers.Ban(selectedPlayerEntry, banMode);
if (banMode == MPBanMode.Annoy) {
// ANNOY also implies BLOCKCHAT
MPBanPlayers.Ban(selectedPlayerEntry, MPBanMode.BlockChat);
}
ReturnTo(String.Format("{0} player {1} by {2}", banOp, selectedPlayerEntry.name, senderEntry.name), -1, selectedPlayerConnectionId);
}
if (doKick) {
Expand All @@ -477,14 +495,18 @@ public bool DoAuth()
return false;
}

// Execute UNBAN or UNANNOY
// Execute UNBAN or UNANNOY or UNBLOCKCHAT
public bool DoUnban(MPBanMode banMode)
{
if (banMode == MPBanMode.Annoy) {
// UNANNOY also implies UNBLOCKCHAT
DoUnban(MPBanMode.BlockChat);
}
if (String.IsNullOrEmpty(arg)) {
MPBanPlayers.UnbanAll(banMode);
ReturnTo(String.Format("ban list {0} cleared by {1}",banMode,senderEntry.name));
} else {
// check against names in ban list (must not be current player names)
// check against names in ban list (may not be current player names)
string pattern = arg.ToUpper();
var banList=MPBanPlayers.GetList(banMode);
int cnt = banList.RemoveAll(entry => (MatchPlayerName(entry.name, pattern) != 0));
Expand Down Expand Up @@ -541,9 +563,10 @@ public bool DoStatus()

GetTrustedPlayerIds();
ReturnToSender(String.Format("STATUS: {0}'s game, your auth: {1}", creator,CheckPermission(senderEntry)));
ReturnToSender(String.Format("STATUS: bans: {0}, annoy-bans: {1}, auth: {2} trust: {3}",
ReturnToSender(String.Format("STATUS: bans: {0}, annoys: {1}, blocks: {2}, auth: {3} trust: {4}",
MPBanPlayers.GetList(MPBanMode.Ban).Count,
MPBanPlayers.GetList(MPBanMode.Annoy).Count,
MPBanPlayers.GetList(MPBanMode.BlockChat).Count,
authenticatedPlayers.Count,
trustedPlayers.Count));
return false;
Expand Down

0 comments on commit 54f3dcc

Please sign in to comment.