Made it so that players can type commands and "me" (when targeting a player) any way they want. There doesn't need to be an exact match full lower case anymore for both of these
Added the ability to find players by typing a part of their name (starting from the beginning of their names) instead of having to type their full names all the time.
For example to kill Resxt you can now just type !kill res
If there is a player named Resxt and another named Resxtola then typing !kill resxt will kill Resxt because we got an exact match. If you type !kill Resx it won't kill anyone because there are two potential players found so we can't be sure who the command should be run on. If you type !kill Resxto it will kill Resxtola
Fix commands not working on dedicated servers
The newly added ExecuteCommand function already exists (on dedicated servers only) and therefore it was always called the game's function instead of the chat commands function.
Simply renaming them to a more specific name fixed the issue
Added an alias system so that a command can be called with different names.
The alias commands respects the permission system and can be used seemingly with the help and alias command.
The commands command still only lists the original/full command name, it doesn't list aliases
CreateCommand now has an addition argument commands can use: commandAliases
Added a new !alias or !aliases command
With these commands you can get the available alias(es) of a command by its original name or one of its alias
For example !alias god or !alias godmode
Some refactor to make the ChatListener function easier to read along with some comments to separate each command logic (built-in commands and "any other command")
Added CommandAliasesDoesNotExistError
Added GetCommandNameFromAlias util function
Fixed some wrong attachments being listed. For example pistol would list "silencer_shotgun" when the expected name is "silencer". Now all listed attachments only contain the content before the first underscore, which works.
Added print of the attachments to the console if the debug mode is on
Fixed weapon not given to the proper player in some scenarios
Fixed player not switching to the weapon automatically in some scenarios
Fixed multiple attachments not working
Only create variables for the port currently in-use
For example: there's no need to create level.chat_commands["4977"] if the currently used port is 4976. This simply adds a bunch of variables and child variables for no reason, this was a flawed implementation that create an array per port on every server. Now it will only create an array for its own port as expected
Removed 3074 from the default ports
This port is not actively used by net_port, this was just a misunderstanding on my part