qboolean setRandomName() { char cmd[256], *name, clean_name[MAX_NAME_LENGTH]; static int lastNameChange; // Wait before set a random name if ((lastNameChange + (seth.value[VAR_RANDOMNAME_DELAY] * 1000)) > eth.cg_time) return qtrue; if (seth.value[VAR_RANDOMNAME] == NAME_PLAYERS ){ if( !(name = getRandomName()) ) return qfalse; strncpy(eth.clientInfo[eth.cg_clientNum].name, name, sizeof(eth.clientInfo->name)); lastNameChange = eth.cg_time; snprintf(cmd, sizeof(cmd), "name \"%s\"\n", eth.clientInfo[eth.cg_clientNum].name); syscall_CG_SendConsoleCommand(cmd); return qtrue; } int i; qboolean r = qfalse; char *p; for(i=0;i<10;i++){ name = strdup(getRandomName()); strncpy(clean_name,name,sizeof(clean_name)); Q_CleanStr(clean_name); //search for possible replacements, from high pref to low pref if( (p = strchr(clean_name,'l')) ) r = spoofName(name,'l','1'); else if( (p = strchr(clean_name,'1')) ) r = spoofName(name,'1','l'); else if( (p = strchr(clean_name,'a')) ) r = spoofName(name,'a','e'); else if( (p = strchr(clean_name,'e')) ) r = spoofName(name,'e','a'); else if( (p = strchr(clean_name,'u')) ) r = spoofName(name,'u','v'); else if( (p = strchr(clean_name,'v')) ) r = spoofName(name,'v','u'); else if( (p = strchr(clean_name,'.')) ) r = spoofName(name,'.',','); else if( (p = strchr(clean_name,',')) ) r = spoofName(name,',','.'); else if( (p = strchr(clean_name,'e')) ) r = spoofName(name,'e','a'); if( r ){ strncpy(eth.clientInfo[eth.cg_clientNum].name, name, sizeof(eth.clientInfo->name)); free(name); lastNameChange = eth.cg_time; snprintf(cmd, sizeof(cmd), "name \"%s\"\n", eth.clientInfo[eth.cg_clientNum].name); syscall_CG_SendConsoleCommand(cmd); return qtrue; } free(name); } //if all else fails, just pick one name = strdup(getRandomName()); strncpy(clean_name,name,sizeof(clean_name)); Q_CleanStr(clean_name); spoofName(name,clean_name[rand() % strlen(clean_name)], 0x20+rand() % 0x5e); strncpy(eth.clientInfo[eth.cg_clientNum].name, name, sizeof(eth.clientInfo->name)); free(name); lastNameChange = eth.cg_time; snprintf(cmd, sizeof(cmd), "name \"%s\"\n", eth.clientInfo[eth.cg_clientNum].name); syscall_CG_SendConsoleCommand(cmd); return qtrue; }