/* ================== ClientNumberFromString Returns a player number for either a number or name string Returns -1 if invalid ================== */ int ClientNumberFromString( gentity_t *to, char *s ) { gclient_t *cl; int idnum; char cleanName[MAX_STRING_CHARS]; // numeric values could be slot numbers if ( StringIsInteger( s ) ) { idnum = atoi( s ); if ( idnum >= 0 && idnum < level.maxclients ) { cl = &level.clients[idnum]; if ( cl->pers.connected == CON_CONNECTED ) { return idnum; } } } // check for a name match for ( idnum=0,cl=level.clients ; idnum < level.maxclients ; idnum++,cl++ ) { if ( cl->pers.connected != CON_CONNECTED ) { continue; } Q_strncpyz(cleanName, cl->pers.netname, sizeof(cleanName)); Q_CleanStr(cleanName); if ( !Q_stricmp( cleanName, s ) ) { return idnum; } } trap_SendServerCommand( to-g_entities, va("print \"User %s is not on the server\n\"", s)); return -1; }
/* =================== ClientForString =================== */ gclient_t *ClientForString( const char *s ) { gclient_t *cl; int idnum; char cleanInput[MAX_STRING_CHARS]; // numeric values could be slot numbers if ( StringIsInteger( s ) ) { idnum = atoi( s ); if ( idnum >= 0 && idnum < level.maxclients ) { cl = &level.clients[idnum]; if ( cl->pers.connected == CON_CONNECTED ) { return cl; } } } Q_strncpyz( cleanInput, s, sizeof(cleanInput) ); Q_StripColor( cleanInput ); // check for a name match for ( idnum=0,cl=level.clients ; idnum < level.maxclients ; idnum++,cl++ ) { if ( cl->pers.connected != CON_CONNECTED ) { continue; } if ( !Q_stricmp( cl->pers.netname_nocolor, cleanInput ) ) { return cl; } } trap->Print( "User %s is not on the server\n", s ); return NULL; }
int PlayerForString( const char *s ) { gplayer_t *cl; int idnum; char cleanName[MAX_NETNAME]; // numeric values could be slot numbers if ( StringIsInteger( s ) ) { idnum = atoi( s ); if ( idnum >= 0 && idnum < level.maxplayers ) { cl = &level.players[idnum]; if ( cl->pers.connected == CON_CONNECTED ) { return idnum; } } } // check for a name match for ( idnum=0,cl=level.players ; idnum < level.maxplayers ; idnum++,cl++ ) { if ( cl->pers.connected != CON_CONNECTED ) { continue; } Q_strncpyz(cleanName, cl->pers.netname, sizeof(cleanName)); Q_CleanStr(cleanName); if ( !Q_stricmp( cleanName, s ) ) { return idnum; } } G_Printf( "User %s is not on the server\n", s ); return -1; }