mirror of
https://github.com/ioquake/ioq3.git
synced 2025-02-23 20:11:18 +00:00
- Replaced SV_GetPlayerByName with SV_GetPlayerByHandle that supports lookup of client_t structures by playernum, too.
That means the ban and kick commands will now accept the playernum - as seen in the status command - as argument.
This commit is contained in:
parent
7b6fe90aad
commit
2583351211
1 changed files with 23 additions and 6 deletions
|
@ -34,12 +34,12 @@ These commands can only be entered from stdin or by a remote operator datagram
|
||||||
|
|
||||||
/*
|
/*
|
||||||
==================
|
==================
|
||||||
SV_GetPlayerByName
|
SV_GetPlayerByHandle
|
||||||
|
|
||||||
Returns the player with name from Cmd_Argv(1)
|
Returns the player with player id or name from Cmd_Argv(1)
|
||||||
==================
|
==================
|
||||||
*/
|
*/
|
||||||
static client_t *SV_GetPlayerByName( void ) {
|
static client_t *SV_GetPlayerByHandle( void ) {
|
||||||
client_t *cl;
|
client_t *cl;
|
||||||
int i;
|
int i;
|
||||||
char *s;
|
char *s;
|
||||||
|
@ -57,6 +57,23 @@ static client_t *SV_GetPlayerByName( void ) {
|
||||||
|
|
||||||
s = Cmd_Argv(1);
|
s = Cmd_Argv(1);
|
||||||
|
|
||||||
|
// Check whether this is a numeric player handle
|
||||||
|
for(i = 0; s[i] >= '0' && s[i] <= '9'; i++);
|
||||||
|
|
||||||
|
if(!s[i])
|
||||||
|
{
|
||||||
|
int plid = atoi(s);
|
||||||
|
|
||||||
|
// Check for numeric playerid match
|
||||||
|
if(plid >= 0 && plid < sv_maxclients->integer)
|
||||||
|
{
|
||||||
|
cl = &svs.clients[plid];
|
||||||
|
|
||||||
|
if(cl->state)
|
||||||
|
return cl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// check for a name match
|
// check for a name match
|
||||||
for ( i=0, cl=svs.clients ; i < sv_maxclients->integer ; i++,cl++ ) {
|
for ( i=0, cl=svs.clients ; i < sv_maxclients->integer ; i++,cl++ ) {
|
||||||
if ( !cl->state ) {
|
if ( !cl->state ) {
|
||||||
|
@ -343,7 +360,7 @@ static void SV_Kick_f( void ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cl = SV_GetPlayerByName();
|
cl = SV_GetPlayerByHandle();
|
||||||
if ( !cl ) {
|
if ( !cl ) {
|
||||||
if ( !Q_stricmp(Cmd_Argv(1), "all") ) {
|
if ( !Q_stricmp(Cmd_Argv(1), "all") ) {
|
||||||
for ( i=0, cl=svs.clients ; i < sv_maxclients->integer ; i++,cl++ ) {
|
for ( i=0, cl=svs.clients ; i < sv_maxclients->integer ; i++,cl++ ) {
|
||||||
|
@ -402,7 +419,7 @@ static void SV_Ban_f( void ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cl = SV_GetPlayerByName();
|
cl = SV_GetPlayerByHandle();
|
||||||
|
|
||||||
if (!cl) {
|
if (!cl) {
|
||||||
return;
|
return;
|
||||||
|
@ -681,7 +698,7 @@ static void SV_DumpUser_f( void ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cl = SV_GetPlayerByName();
|
cl = SV_GetPlayerByHandle();
|
||||||
if ( !cl ) {
|
if ( !cl ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue