This is something that I would be curious to know, too.
A possible way should be using the "!admin system", which is part of recent OA releases
gamecode:
https://github.com/OpenArena/gamecode/wiki/AdminBut considering that the "!admin system" did not exist in the original Quake 3, I suppose there may be some other way to ban people. I would be curious to know it!
About banning through the !admin system, some weeks ago I heard there are some problems with it: on the Guild Clan
Discord server, a guy named "Rdnt Cntrl" said there is
a bug with the !admin system:
Actually, the !ban command is broken. It fails to write the ban to the admin.dat file, so I think it only works until the map changes.
and then he posted a patch for that:
--- a/code/game/g_admin.c
+++ b/code/game/g_admin.c
@@ -2049,7 +2049,7 @@ qboolean G_admin_ban( gentity_t *ent, int skiparg )
if( !g_admin.string[ 0 ] )
ADMP( "^3!ban: ^7WARNING g_admin not set, not saving ban to a file\n" );
else
- if(strlen(g_admin_namelog[ logmatch ]->guid)==0 || strlen(g_admin_namelog[ logmatch ]->ip) )
+ if(strlen(g_admin_namelog[ logmatch ]->guid)==0 || strlen(g_admin_namelog[ logmatch ]->ip)==0 )
ADMP( "^3!ban: ^7WARNING bot or without GUID or IP cannot write to ban file\n");
else
admin_writeconfig();
(NOTE: the line numbers might be slightly off because of other modifications made to that file...)
I have never used the !admin system, so at the moment
I haven't tested myself if that bug acutally exists (so I can't 100% exclude he simply didn't have write permissions on admin.dat file or was using an insufficient admin level... however I find such cases unlikely)(Also, I have the impression in that second "warning" line maybe an "or" o "-" may be missing...)
Furthermore, still on the Guild Clan Discord, I think they (probably the same "Rdnt Cntrl" guy) mentioned
another bug which may affect bans: they said that GUID (client unique identifier) of a client switches from the "server-specific" one to the "generic" one after a map change/restart ("cl_guidServerUniq" 1 tells the client to use a different GUID for each server, while 0 tells the client to use the same GUID for all servers... If I understood correctly, the bug is that after a map change/restart the client switches to working like 0 even if the cvar is 1). They mentioned the fix of this bug would just be a line of code in the client engine part... but they didn't post the fix itself (if Sago or Fromhell are interested into looking into this bug, I can try to contact that Rdnt Cntrl guy to ask more infos).
Also in this case, I haven't tested myself if said bug actually exists.I can
guess workarounds may include banning the guy two times (to ban both his server-specific and generic GUID), or to ban him via IP (which in theory isn't optimal, as IPs may vary and may be shared between different players... but however maybe there is some trick to also change the GUID, I'm not sure about how they are generated).