use player.team instead of infokey team
use player.name instead of infokey name add weak per team hash for cl_standardchat/cl_standardmsg for cl.teamplay use obtained freq for SDL git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1552 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
e3db3df028
commit
c916e40299
4 changed files with 53 additions and 42 deletions
|
@ -1059,7 +1059,7 @@ void CL_ParseDownload (void)
|
|||
|
||||
if (!*cls.downloadname) //huh... that's not right...
|
||||
{
|
||||
Con_Printf("^1Warning: Server sending unknown file.\n");
|
||||
Con_Printf("^1Warning^7: Server sending unknown file.\n");
|
||||
strcpy(cls.downloadname, "unknown.txt");
|
||||
strcpy(cls.downloadtempname, "unknown.tmp");
|
||||
}
|
||||
|
@ -3191,6 +3191,32 @@ int CL_PlayerColor(player_info_t *plr, int *name_ormask)
|
|||
break;
|
||||
}
|
||||
}
|
||||
else if (cl.teamplay)
|
||||
{
|
||||
// team name hacks
|
||||
if (!strcmp(plr->team, "red"))
|
||||
c = 1;
|
||||
else if (!strcmp(plr->team, "blue"))
|
||||
c = 6;
|
||||
else
|
||||
{
|
||||
char *t;
|
||||
|
||||
t = plr->team;
|
||||
c = 0;
|
||||
|
||||
for (t = plr->team; *t; t++)
|
||||
{
|
||||
c >>= 1;
|
||||
c ^= *t; // TODO: very weak hash, replace
|
||||
}
|
||||
|
||||
if ((c / 7) & 1)
|
||||
*name_ormask = CON_STANDARDMASK;
|
||||
|
||||
c = 1 + (c % 7);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// override chat color with tc infokey
|
||||
|
@ -3360,9 +3386,9 @@ void CL_PrintStandardMessage(char *msg)
|
|||
int ormask;
|
||||
char c;
|
||||
|
||||
if (!p->name[0])
|
||||
name = p->name;
|
||||
if (!(*name))
|
||||
continue;
|
||||
name = Info_ValueForKey (p->userinfo, "name");
|
||||
len = strlen(name);
|
||||
v = strstr(msg, name);
|
||||
while (v)
|
||||
|
|
|
@ -1119,8 +1119,8 @@ void Sbar_SortTeams (void)
|
|||
|
||||
// find his team in the list
|
||||
t[16] = 0;
|
||||
Q_strncpyz(t, Info_ValueForKey(s->userinfo, "team"), sizeof(t));
|
||||
if (!t || !t[0])
|
||||
Q_strncpyz(t, s->team, sizeof(t));
|
||||
if (!t[0])
|
||||
continue; // not on team
|
||||
for (j = 0; j < scoreboardteams; j++)
|
||||
if (!strcmp(teams[j].team, t)) {
|
||||
|
@ -1881,8 +1881,7 @@ void Sbar_TeamOverlay (void)
|
|||
sprintf (num, "%5i", tm->players);
|
||||
Draw_String (x + 104 + 88, y, num);
|
||||
|
||||
if (!strncmp(Info_ValueForKey(cl.players[cl.playernum[0]].userinfo,
|
||||
"team"), tm->team, 16)) {
|
||||
if (!strncmp(cl.players[cl.playernum[0]].team, tm->team, 16)) {
|
||||
Draw_Character ( x + 104 - 8, y, 16);
|
||||
Draw_Character ( x + 104 + 32, y, 17);
|
||||
}
|
||||
|
@ -1911,7 +1910,6 @@ void Sbar_DeathmatchOverlay (int start)
|
|||
int total;
|
||||
int minutes;
|
||||
int p;
|
||||
char team[64];
|
||||
int skip = 10;
|
||||
|
||||
if (largegame)
|
||||
|
@ -2044,10 +2042,7 @@ void Sbar_DeathmatchOverlay (int start)
|
|||
|
||||
// team
|
||||
if (cl.teamplay)
|
||||
{
|
||||
Q_strncpyz (team, Info_ValueForKey(s->userinfo, "team"), sizeof(team));
|
||||
Draw_FunStringLen (x+152, y, team, 4);
|
||||
}
|
||||
Draw_FunStringLen (x+152, y, s->team, 4);
|
||||
|
||||
// draw name
|
||||
if (cl.teamplay)
|
||||
|
@ -2091,9 +2086,9 @@ void Sbar_ChatModeOverlay(void)
|
|||
Sbar_SortFrags (true);
|
||||
|
||||
if (Cam_TrackNum(0)>=0)
|
||||
Q_strncpyz (team, Info_ValueForKey(cl.players[Cam_TrackNum(0)].userinfo, "team"), sizeof(team));
|
||||
Q_strncpyz (team, cl.players[Cam_TrackNum(0)].team, sizeof(team));
|
||||
else if (cl.playernum[0]>=0 && cl.playernum[0]<MAX_CLIENTS)
|
||||
Q_strncpyz (team, Info_ValueForKey(cl.players[cl.playernum[0]].userinfo, "team"), sizeof(team));
|
||||
Q_strncpyz (team, cl.players[cl.playernum[0]].team, sizeof(team));
|
||||
else
|
||||
*team = '\0';
|
||||
|
||||
|
@ -2143,7 +2138,7 @@ void Sbar_ChatModeOverlay(void)
|
|||
}
|
||||
else if (cl.teamplay)
|
||||
{
|
||||
if (!stricmp(Info_ValueForKey(s->userinfo, "team"), team))
|
||||
if (!stricmp(s->team, team))
|
||||
{
|
||||
Draw_Character ( x, y, '[');
|
||||
Draw_Character ( x+8*3, y, ']');
|
||||
|
@ -2181,7 +2176,6 @@ void Sbar_MiniDeathmatchOverlay (void)
|
|||
int x, y, f;
|
||||
char num[12];
|
||||
player_info_t *s;
|
||||
char team[64];
|
||||
int numlines;
|
||||
char name[64+1];
|
||||
team_t *tm;
|
||||
|
@ -2258,9 +2252,7 @@ void Sbar_MiniDeathmatchOverlay (void)
|
|||
// team and name
|
||||
if (cl.teamplay)
|
||||
{
|
||||
Q_strncpyz (team, Info_ValueForKey(s->userinfo, "team"), sizeof(team));
|
||||
Draw_FunStringLen (x+48, y, team, 4);
|
||||
|
||||
Draw_FunStringLen (x+48, y, s->team, 4);
|
||||
Draw_FunStringLen (x+48+40, y, name, MAX_DISPLAYEDNAME);
|
||||
}
|
||||
else
|
||||
|
@ -2286,15 +2278,13 @@ void Sbar_MiniDeathmatchOverlay (void)
|
|||
tm = teams + k;
|
||||
|
||||
// draw pings
|
||||
Q_strncpyz (team, tm->team, sizeof(team));
|
||||
Draw_FunStringLen (x, y, team, 4);
|
||||
Draw_FunStringLen (x, y, tm->team, 4);
|
||||
|
||||
// draw total
|
||||
sprintf (num, "%5i", tm->frags);
|
||||
Draw_FunString(x + 40, y, num);
|
||||
|
||||
if (!strncmp(Info_ValueForKey(cl.players[cl.playernum[0]].userinfo,
|
||||
"team"), tm->team, 16)) {
|
||||
if (!strncmp(cl.players[cl.playernum[0]].team, tm->team, 16)) {
|
||||
Draw_Character ( x - 8, y, 16);
|
||||
Draw_Character ( x + 32, y, 17);
|
||||
}
|
||||
|
|
|
@ -97,7 +97,7 @@ Con_Printf("SDL AUDIO INITING\n");
|
|||
return false;
|
||||
}
|
||||
sc->sn.numchannels = obtained.channels;
|
||||
sc->sn.speed = desired.freq;
|
||||
sc->sn.speed = obtained.freq;
|
||||
sc->sn.samplebits = 16;
|
||||
sc->sn.samples = SOUND_BUFFER_SIZE;
|
||||
sc->sn.buffer = malloc(SOUND_BUFFER_SIZE*sc->sn.samplebits/8);
|
||||
|
|
|
@ -1745,19 +1745,22 @@ int TP_CountPlayers (void)
|
|||
return count;
|
||||
}
|
||||
|
||||
char *TP_PlayerTeam (void)
|
||||
{
|
||||
return cl.players[cl.playernum[SP]].team;
|
||||
}
|
||||
|
||||
char *TP_EnemyTeam (void)
|
||||
{
|
||||
int i;
|
||||
char myteam[MAX_INFO_KEY];
|
||||
static char enemyteam[MAX_INFO_KEY];
|
||||
|
||||
strcpy (myteam, Info_ValueForKey(cls.userinfo, "team"));
|
||||
char *myteam = TP_PlayerTeam();
|
||||
|
||||
for (i = 0; i < MAX_CLIENTS ; i++) {
|
||||
if (cl.players[i].name[0] && !cl.players[i].spectator)
|
||||
{
|
||||
strcpy (enemyteam, Info_ValueForKey(cl.players[i].userinfo, "team"));
|
||||
if (strcmp(myteam, enemyteam) != 0)
|
||||
strcpy (enemyteam, cl.players[i].team);
|
||||
if (strcmp(myteam, cl.players[i].team) != 0)
|
||||
return enemyteam;
|
||||
}
|
||||
}
|
||||
|
@ -1766,30 +1769,22 @@ char *TP_EnemyTeam (void)
|
|||
|
||||
char *TP_PlayerName (void)
|
||||
{
|
||||
static char myname[MAX_INFO_KEY];
|
||||
strcpy (myname, Info_ValueForKey(cl.players[cl.playernum[SP]].userinfo, "name"));
|
||||
return myname;
|
||||
return cl.players[cl.playernum[SP]].name;
|
||||
}
|
||||
|
||||
char *TP_PlayerTeam (void)
|
||||
{
|
||||
static char myteam[MAX_INFO_KEY];
|
||||
strcpy (myteam, Info_ValueForKey(cl.players[cl.playernum[SP]].userinfo, "team"));
|
||||
return myteam;
|
||||
}
|
||||
|
||||
char *TP_EnemyName (void)
|
||||
{
|
||||
int i;
|
||||
char *myname;
|
||||
static char enemyname[MAX_INFO_KEY];
|
||||
static char enemyname[MAX_SCOREBOARDNAME];
|
||||
|
||||
myname = TP_PlayerName ();
|
||||
|
||||
for (i = 0; i < MAX_CLIENTS ; i++) {
|
||||
if (cl.players[i].name[0] && !cl.players[i].spectator)
|
||||
{
|
||||
strcpy (enemyname, Info_ValueForKey(cl.players[i].userinfo, "name"));
|
||||
strcpy (enemyname, cl.players[i].name);
|
||||
if (!strcmp(enemyname, myname))
|
||||
return enemyname;
|
||||
}
|
||||
|
@ -1975,9 +1970,9 @@ int TP_CategorizeMessage (char *s, int *offset, player_info_t **plr)
|
|||
|
||||
for (i=0, player=cl.players ; i < MAX_CLIENTS ; i++, player++)
|
||||
{
|
||||
if (!player->name[0])
|
||||
name = player->name;
|
||||
if (!(*name))
|
||||
continue;
|
||||
name = Info_ValueForKey (player->userinfo, "name");
|
||||
len = strlen(name);
|
||||
// check messagemode1
|
||||
if (len+2 <= msglen && s[len] == ':' && s[len+1] == ' ' &&
|
||||
|
|
Loading…
Reference in a new issue