This is the worst code I have ever contributed to this project. This commit is the result of several days of attempting to decipher Qt's documentation. This is the best I can write. Qt has broken me. God help us all.
- Allows sending modcalls to a discord webhook, containing the name of the sender, the area, and the reason.
- Adds configurable options to config.ini for enabling/disabling webhooks and specifying the webhook url.
Set a hard limit on 30KB that the server is willing to read, over two sequential reads. If the client sends more than 30KB combined, the server will disconnect the client.
- Limits packets to under 16KB
- Adds a configurable option to config.ini for setting the maximum amount of characters in an IC/OOC message
- Limits the size of OOC names to 30 chars
- The client already limits this, but this is an added precaution.
- Limits the length of shownames to 30 chars
- Implements shownames_allowed for areas, for toggling whether shownames are allowed for messages in that area
- Adds /togglemusic to toggle whether music can be played in an area. CM's can still play music.
- Add toggle_music option to area.ini to set the default value in an area. Default value is set to true.
- Also fixes a missing period in the documentation for force_immediate. Because I noticed it.
- Fixes an issue with the testimony recorder checking for >[statement], where due to AO encoding, special characters would improperly match the regex. For example, "%[statement]" would become "<percent>[statement]", thus matching against >[statement]. This commit decodes those characters first.
- Adds AOClient::decodeMessage() for decoding a QString.
cmdAfk is a command that changes the clients status to AFK. As such, it belongs under the messaging category, which includes commands that handle a clients self-management.
- More commands that never got added to the table.
- Also fixes /blockdj incorrectly blocking a client from changing areas.
- Checks if a client is DJ blocked when using /play