cl_parsewhitetext (rid#1239249)
non-standard text messages should be much better for use server voting fix git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1281 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
e671736021
commit
a49ca96a5a
8 changed files with 272 additions and 177 deletions
|
@ -116,6 +116,7 @@ cvar_t cl_item_bobbing = {"cl_model_bobbing", "0"};
|
|||
|
||||
cvar_t requiredownloads = {"requiredownloads","1", NULL, CVAR_ARCHIVE};
|
||||
cvar_t cl_standardchat = {"cl_standardchat", "0"};
|
||||
cvar_t cl_parsewhitetext = {"cl_parsewhitetext", "0"};
|
||||
|
||||
cvar_t host_mapname = {"host_mapname", ""};
|
||||
|
||||
|
@ -2411,6 +2412,7 @@ void CL_Init (void)
|
|||
|
||||
Cvar_Register (&requiredownloads, cl_controlgroup);
|
||||
Cvar_Register (&cl_standardchat, cl_controlgroup);
|
||||
Cvar_Register (&cl_parsewhitetext, cl_controlgroup);
|
||||
Cvar_Register (&cl_nopext, cl_controlgroup);
|
||||
Cvar_Register (&cl_splitscreen, cl_controlgroup);
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ void CLNQ_ParseDarkPlaces5Entities(void);
|
|||
void CL_SetStat (int pnum, int stat, int value);
|
||||
|
||||
int nq_dp_protocol;
|
||||
|
||||
int msgflags;
|
||||
|
||||
|
||||
char *svc_strings[] =
|
||||
|
@ -2967,103 +2967,91 @@ void CLQ2_ParseInventory (void)
|
|||
{
|
||||
int i;
|
||||
|
||||
// TODO: finish this properly
|
||||
for (i=0 ; i<Q2MAX_ITEMS ; i++)
|
||||
// cl.inventory[i] = MSG_ReadShort (&net_message);
|
||||
MSG_ReadShort (); // just ignore everything for now
|
||||
}
|
||||
#endif
|
||||
|
||||
int getplayerid(char *msg);
|
||||
int build_number( void );
|
||||
//return if we want to print the message.
|
||||
qboolean CL_ParseChat(char *text)
|
||||
char *CL_ParseChat(char *text, player_info_t **player)
|
||||
{
|
||||
extern cvar_t cl_chatsound, cl_nofake;
|
||||
|
||||
extern cvar_t cl_chatsound, cl_nofake;
|
||||
int flags;
|
||||
int offset=0;
|
||||
qboolean suppress_talksound;
|
||||
char *p;
|
||||
extern cvar_t cl_parsewhitetext;
|
||||
char *s;
|
||||
s = strchr(text, ':'); //Hmm.. FIXME: Can a player's name contain a ':'?... I think the answer is a yes... Hmmm.. problematic eh?
|
||||
if (!s || s[1] != ' ') //wasn't a real chat...
|
||||
return true;
|
||||
|
||||
if (!cls.demoplayback)
|
||||
Sys_ServerActivity(); //chat always flashes the screen..
|
||||
flags = TP_CategorizeMessage (text, &offset, player);
|
||||
|
||||
//check f_ stuff
|
||||
if (!strncmp(s+2, "f_", 2))
|
||||
s = text + offset;
|
||||
|
||||
if (flags)
|
||||
{
|
||||
static float versionresponsetime;
|
||||
static float modifiedresponsetime;
|
||||
static float skinsresponsetime;
|
||||
static float serverresponsetime;
|
||||
if (!cls.demoplayback)
|
||||
Sys_ServerActivity(); //chat always flashes the screen..
|
||||
|
||||
if (!strncmp(s+2, "f_version", 9) && versionresponsetime < Sys_DoubleTime()) //respond to it.
|
||||
//check f_ stuff
|
||||
if (!strncmp(s, "f_", 2))
|
||||
{
|
||||
ValidationPrintVersion(text);
|
||||
versionresponsetime = Sys_DoubleTime() + 5;
|
||||
static float versionresponsetime;
|
||||
static float modifiedresponsetime;
|
||||
static float skinsresponsetime;
|
||||
static float serverresponsetime;
|
||||
|
||||
if (!strncmp(s, "f_version", 9) && versionresponsetime < Sys_DoubleTime()) //respond to it.
|
||||
{
|
||||
ValidationPrintVersion(text);
|
||||
versionresponsetime = Sys_DoubleTime() + 5;
|
||||
}
|
||||
else if (!strncmp(s, "f_server", 8) && serverresponsetime < Sys_DoubleTime()) //respond to it.
|
||||
{
|
||||
Validation_Server();
|
||||
serverresponsetime = Sys_DoubleTime() + 5;
|
||||
}
|
||||
else if (!strncmp(s, "f_modified", 10) && modifiedresponsetime < Sys_DoubleTime()) //respond to it.
|
||||
{
|
||||
Validation_FilesModified();
|
||||
modifiedresponsetime = Sys_DoubleTime() + 5;
|
||||
}
|
||||
else if (!strncmp(s, "f_skins", 7) && skinsresponsetime < Sys_DoubleTime()) //respond to it.
|
||||
{
|
||||
Validation_Skins();
|
||||
skinsresponsetime = Sys_DoubleTime() + 5;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else if (!strncmp(s+2, "f_server", 9) && serverresponsetime < Sys_DoubleTime()) //respond to it.
|
||||
{
|
||||
Validation_Server();
|
||||
serverresponsetime = Sys_DoubleTime() + 5;
|
||||
}
|
||||
else if (!strncmp(s+2, "f_modified", 10) && modifiedresponsetime < Sys_DoubleTime()) //respond to it.
|
||||
{
|
||||
Validation_FilesModified();
|
||||
modifiedresponsetime = Sys_DoubleTime() + 5;
|
||||
}
|
||||
else if (!strncmp(s+2, "f_skins", 7) && skinsresponsetime < Sys_DoubleTime()) //respond to it.
|
||||
{
|
||||
Validation_Skins();
|
||||
skinsresponsetime = Sys_DoubleTime() + 5;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Validation_CheckIfResponse(text);
|
||||
|
||||
|
||||
|
||||
{
|
||||
int flags;
|
||||
int offset=0;
|
||||
qboolean suppress_talksound;
|
||||
char *p;
|
||||
|
||||
flags = TP_CategorizeMessage (text, &offset);
|
||||
Validation_CheckIfResponse(text);
|
||||
|
||||
if (flags == 2 && !TP_FilterMessage(text + offset))
|
||||
return false;
|
||||
|
||||
suppress_talksound = false;
|
||||
|
||||
if (flags == 2 || (!cl.teamplay && flags))
|
||||
suppress_talksound = TP_CheckSoundTrigger (text + offset);
|
||||
|
||||
if (!cl_chatsound.value || // no sound at all
|
||||
(cl_chatsound.value == 2 && flags != 2)) // only play sound in mm2
|
||||
suppress_talksound = true;
|
||||
|
||||
if (!suppress_talksound)
|
||||
S_LocalSound ("misc/talk.wav");
|
||||
|
||||
if (cl_nofake.value == 1 || (cl_nofake.value == 2 && flags != 2)) {
|
||||
for (p = s; *p; p++)
|
||||
if (*p == 13 || (*p == 10 && p[1]))
|
||||
*p = ' ';
|
||||
}
|
||||
|
||||
//funky /me stuff
|
||||
p = strchr(text, ':');
|
||||
if (!strncmp(p, ": /me", 5))
|
||||
{
|
||||
//shift name right 1 (for the *)
|
||||
memmove(text+1, text, p - text);
|
||||
*text = '*';
|
||||
|
||||
memmove(p+1, p+5, strlen(p+5)+1);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
return true;
|
||||
|
||||
suppress_talksound = false;
|
||||
|
||||
if (flags == 2 || (!cl.teamplay && flags))
|
||||
suppress_talksound = TP_CheckSoundTrigger (text + offset);
|
||||
|
||||
if (!cl_chatsound.value || // no sound at all
|
||||
(cl_chatsound.value == 2 && flags != 2)) // only play sound in mm2
|
||||
suppress_talksound = true;
|
||||
|
||||
if (!suppress_talksound)
|
||||
S_LocalSound ("misc/talk.wav");
|
||||
|
||||
if (cl_nofake.value == 1 || (cl_nofake.value == 2 && flags != 2)) {
|
||||
for (p = s; *p; p++)
|
||||
if (*p == 13 || (*p == 10 && p[1]))
|
||||
*p = ' ';
|
||||
}
|
||||
|
||||
msgflags = flags;
|
||||
return s;
|
||||
}
|
||||
|
||||
char printtext[4096];
|
||||
|
@ -3081,6 +3069,7 @@ void CL_ParsePrint(char *msg, int level)
|
|||
*msg = '\0';
|
||||
if (level != PRINT_CHAT)
|
||||
Stats_ParsePrintLine(printtext);
|
||||
|
||||
TP_SearchForMsgTriggers(printtext, level);
|
||||
msg++;
|
||||
|
||||
|
@ -3088,6 +3077,168 @@ void CL_ParsePrint(char *msg, int level)
|
|||
}
|
||||
}
|
||||
|
||||
void CL_PrintChat(player_info_t *plr, char *msg, qboolean team, qboolean observer)
|
||||
{
|
||||
char *t;
|
||||
int c;
|
||||
int name_ormask;
|
||||
extern cvar_t cl_parsewhitetext;
|
||||
qboolean memessage = false;
|
||||
|
||||
if (msg[0] == '/' && msg[1] == 'm' && msg[2] == 'e' && msg[3] == ' ')
|
||||
{
|
||||
msg += 4;
|
||||
memessage = true; // special /me formatting
|
||||
}
|
||||
|
||||
if (plr) // use special formatting with a real chat message
|
||||
{
|
||||
name_ormask = 0;
|
||||
if (cl_standardchat.value)
|
||||
{
|
||||
name_ormask = CON_STANDARDMASK;
|
||||
c = 7;
|
||||
}
|
||||
else if (observer)
|
||||
{
|
||||
// TODO: we don't even check for this yet...
|
||||
if (team)
|
||||
c = 0; // blacken () on observers
|
||||
else
|
||||
{
|
||||
name_ormask = CON_STANDARDMASK;
|
||||
c = 7;
|
||||
}
|
||||
}
|
||||
else if (cl.teamfortress) //override based on team
|
||||
{
|
||||
// TODO: needs some work
|
||||
switch (plr->bottomcolor)
|
||||
{ //translate q1 skin colours to console colours
|
||||
case 10:
|
||||
case 1:
|
||||
name_ormask = CON_STANDARDMASK;
|
||||
case 4: //red
|
||||
c = 1;
|
||||
break;
|
||||
case 11:
|
||||
name_ormask = CON_STANDARDMASK;
|
||||
case 3: // green
|
||||
c = 2;
|
||||
break;
|
||||
case 5:
|
||||
name_ormask = CON_STANDARDMASK;
|
||||
case 12:
|
||||
c = 3;
|
||||
break;
|
||||
case 6:
|
||||
case 7:
|
||||
name_ormask = CON_STANDARDMASK;
|
||||
case 8:
|
||||
case 9:
|
||||
c = 5;
|
||||
break;
|
||||
case 2: // light blue
|
||||
name_ormask = CON_STANDARDMASK;
|
||||
case 13: //blue
|
||||
case 14: //blue
|
||||
c = 6;
|
||||
break;
|
||||
default:
|
||||
name_ormask = CON_STANDARDMASK;
|
||||
case 0: // white
|
||||
c = 7;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//primary override.
|
||||
t = Info_ValueForKey(plr->userinfo, "tc");
|
||||
if (*t)
|
||||
c = atoi(t);
|
||||
else
|
||||
c = plr->userid - 1;
|
||||
|
||||
if ((c / 7) & 1)
|
||||
name_ormask = CON_STANDARDMASK;
|
||||
|
||||
c = 1 + (c % 7);
|
||||
}
|
||||
|
||||
c = '0' + c;
|
||||
|
||||
if (memessage)
|
||||
{
|
||||
con_ormask = CON_STANDARDMASK;
|
||||
if (!cl_standardchat.value && observer)
|
||||
Con_Printf ("^0*^7 ");
|
||||
else
|
||||
Con_Printf ("* ");
|
||||
}
|
||||
|
||||
if (team) // for team chat don't highlight the name, just the brackets
|
||||
{
|
||||
// color is reset every printf so we're safe here
|
||||
con_ormask = name_ormask;
|
||||
Con_Printf("^%c(", c);
|
||||
con_ormask = CON_STANDARDMASK;
|
||||
Con_Printf("%s", plr->name);
|
||||
con_ormask = name_ormask;
|
||||
Con_Printf("^%c)", c);
|
||||
}
|
||||
else
|
||||
{
|
||||
con_ormask = name_ormask;
|
||||
Con_Printf("^%c%s", c, plr->name);
|
||||
}
|
||||
|
||||
if (!memessage)
|
||||
{
|
||||
// only print seperator with an actual player name
|
||||
con_ormask = CON_STANDARDMASK;
|
||||
if (!cl_standardchat.value && observer)
|
||||
Con_Printf ("^0:^7 ");
|
||||
else
|
||||
Con_Printf (": ");
|
||||
}
|
||||
else
|
||||
Con_Printf (" ");
|
||||
}
|
||||
|
||||
// print message
|
||||
con_ormask = CON_STANDARDMASK;
|
||||
if (cl_parsewhitetext.value && team && plr)
|
||||
{
|
||||
char *u;
|
||||
|
||||
while (t = strchr(msg, '{'))
|
||||
{
|
||||
u = strchr(msg, '}');
|
||||
if (u)
|
||||
{
|
||||
*t = 0;
|
||||
*u = 0;
|
||||
Con_Printf("%s", msg);
|
||||
con_ormask = 0;
|
||||
Con_Printf("%s", t+1);
|
||||
con_ormask = CON_STANDARDMASK;
|
||||
msg = u+1;
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
Con_Printf("%s", msg);
|
||||
con_ormask = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
Con_Printf ("%s", msg);
|
||||
}
|
||||
con_ormask = 0;
|
||||
|
||||
}
|
||||
|
||||
char stufftext[4096];
|
||||
void CL_ParseStuffCmd(char *msg, int destsplit) //this protects stuffcmds from network segregation.
|
||||
{
|
||||
|
@ -3114,64 +3265,6 @@ void CL_ParseStuffCmd(char *msg, int destsplit) //this protects stuffcmds from n
|
|||
}
|
||||
}
|
||||
|
||||
int getplayerid(char *msg)
|
||||
{
|
||||
int i;
|
||||
int namelen;
|
||||
char *colon = strstr(msg, ":");
|
||||
if (!colon)
|
||||
return -1;
|
||||
|
||||
namelen = colon-msg;
|
||||
|
||||
for (i=0 ; i<MAX_CLIENTS ; i++)
|
||||
{
|
||||
if (!strncmp(msg, cl.players[i].name, namelen))
|
||||
if (!cl.players[i].name[namelen])
|
||||
return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int CL_PlayerChatColour(int id)
|
||||
{
|
||||
char *msg;
|
||||
int c;
|
||||
|
||||
//primary override.
|
||||
msg = Info_ValueForKey(cl.players[id].userinfo, "tc");
|
||||
if (*msg)
|
||||
{
|
||||
c = atoi(msg);
|
||||
return c;
|
||||
}
|
||||
|
||||
//override based on team
|
||||
if (cl.teamfortress)
|
||||
{
|
||||
switch (cl.players[id].bottomcolor)
|
||||
{ //translate q1 skin colours to console colours
|
||||
case 4: //red
|
||||
return 1;
|
||||
case 13: //blue
|
||||
return 5;
|
||||
//fixme: add the others
|
||||
}
|
||||
}
|
||||
return cl.players[id].userid;
|
||||
}
|
||||
|
||||
int getplayerchatcolour(char *msg)
|
||||
{
|
||||
int id;
|
||||
id = getplayerid(msg);
|
||||
if (id == -1) //not a user/server
|
||||
return 1;
|
||||
|
||||
return CL_PlayerChatColour(id);
|
||||
}
|
||||
|
||||
void CL_ParsePrecache(void)
|
||||
{
|
||||
int i = (unsigned short)MSG_ReadShort();
|
||||
|
@ -3308,21 +3401,16 @@ void CL_ParseServerMessage (void)
|
|||
s = MSG_ReadString ();
|
||||
if (i == PRINT_CHAT)
|
||||
{
|
||||
char *msg;
|
||||
player_info_t *plr = NULL;
|
||||
|
||||
if (TP_SuppressMessage(s))
|
||||
break; //if this was unseen-sent from us, ignore it.
|
||||
|
||||
if (CL_ParseChat(s))
|
||||
if (msg = CL_ParseChat(s, &plr))
|
||||
{
|
||||
CL_ParsePrint(s, i);
|
||||
|
||||
if (!cl_standardchat.value)
|
||||
Con_TPrintf (TL_CSPECIALPRINT, getplayerchatcolour(s)%6+'1', s); //don't ever print it in white.
|
||||
else
|
||||
{
|
||||
con_ormask = CON_STANDARDMASK;
|
||||
Con_TPrintf (TL_ST, s); //Standard text - makes LEDs work in the ocrana (so I'm told) charset.
|
||||
con_ormask = 0; //it's a special/wierd characture set.
|
||||
}
|
||||
CL_PrintChat(plr, msg, msgflags & 2, msgflags & 4);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -3768,12 +3856,14 @@ void CLQ2_ParseServerMessage (void)
|
|||
s = MSG_ReadString ();
|
||||
if (i == PRINT_CHAT)
|
||||
{
|
||||
char *msg;
|
||||
player_info_t *plr = NULL;
|
||||
|
||||
S_LocalSound ("misc/talk.wav");
|
||||
con_ormask = CON_2NDCHARSETTEXT;
|
||||
if (CL_ParseChat(s))
|
||||
if (msg = CL_ParseChat(s, &plr))
|
||||
{
|
||||
CL_ParsePrint(s, i);
|
||||
Con_TPrintf (TL_CSPECIALPRINT, getplayerchatcolour(s)%6+'1', s);
|
||||
CL_PrintChat(plr, msg, msgflags & 2, msgflags & 4);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -3895,15 +3985,19 @@ void CLNQ_ParseServerMessage (void)
|
|||
s = MSG_ReadString ();
|
||||
if (*s == 1 || *s == 2)
|
||||
{
|
||||
if (CL_ParseChat(s+1))
|
||||
char *msg;
|
||||
player_info_t *plr = NULL;
|
||||
|
||||
|
||||
if (msg = CL_ParseChat(s+1, &plr))
|
||||
{
|
||||
CL_ParsePrint(s+1, 3);
|
||||
Con_Printf ("^3%s", Translate(s+1));
|
||||
CL_ParsePrint(s+1, PRINT_CHAT);
|
||||
CL_PrintChat(plr, msg, msgflags & 2, msgflags & 4);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CL_ParsePrint(s, 3);
|
||||
CL_ParsePrint(s, PRINT_HIGH);
|
||||
Con_TPrintf (TL_ST, Translate(s));
|
||||
}
|
||||
con_ormask = 0;
|
||||
|
|
|
@ -842,7 +842,7 @@ char *TP_PlayerTeam (void);
|
|||
char *TP_EnemyTeam (void);
|
||||
char *TP_EnemyName (void);
|
||||
void TP_StatChanged (int stat, int value);
|
||||
int TP_CategorizeMessage (char *s, int *offset);
|
||||
int TP_CategorizeMessage (char *s, int *offset, player_info_t **plr);
|
||||
void TP_NewMap (void);
|
||||
qboolean TP_FilterMessage (char *s);
|
||||
qboolean TP_CheckSoundTrigger (char *str);
|
||||
|
|
|
@ -1917,14 +1917,17 @@ returns a combination of these values:
|
|||
1 -- normal
|
||||
2 -- team message
|
||||
4 -- spectator
|
||||
16 -- faked or serverside
|
||||
Note that sometimes we can't be sure who really sent the message,
|
||||
e.g. when there's a player "unnamed" in your team and "(unnamed)"
|
||||
in the enemy team. The result will be 3 (1+2)
|
||||
|
||||
Never returns 2 if we are a spectator.
|
||||
|
||||
Now additionally returns player info (NULL if no player detected)
|
||||
======================
|
||||
*/
|
||||
int TP_CategorizeMessage (char *s, int *offset)
|
||||
int TP_CategorizeMessage (char *s, int *offset, player_info_t **plr)
|
||||
{
|
||||
int i, msglen, len;
|
||||
int flags;
|
||||
|
@ -1937,6 +1940,7 @@ int TP_CategorizeMessage (char *s, int *offset)
|
|||
return 0;
|
||||
|
||||
*offset = 0;
|
||||
*plr = NULL;
|
||||
|
||||
for (i=0, player=cl.players ; i < MAX_CLIENTS ; i++, player++)
|
||||
{
|
||||
|
@ -1953,9 +1957,10 @@ int TP_CategorizeMessage (char *s, int *offset)
|
|||
else
|
||||
flags |= 1;
|
||||
*offset = len + 2;
|
||||
*plr = player;
|
||||
}
|
||||
// check messagemode2
|
||||
else if (s[0] == '(' && !cl.spectator && len+4 <= msglen &&
|
||||
else if (s[0] == '(' && len+4 <= msglen && !cl.spectator &&
|
||||
!strncmp(s+len+1, "): ", 3) &&
|
||||
!strncmp(name, s+1, len))
|
||||
{
|
||||
|
@ -1963,7 +1968,18 @@ int TP_CategorizeMessage (char *s, int *offset)
|
|||
if (i == cl.playernum[SP] || ( cl.teamplay &&
|
||||
!strcmp(cl.players[cl.playernum[SP]].team, player->team)) )
|
||||
flags |= 2;
|
||||
|
||||
*offset = len + 4;
|
||||
*plr = player;
|
||||
}
|
||||
}
|
||||
|
||||
if (!flags)
|
||||
{
|
||||
if (name = strstr(s, ": ")) // use name as temp
|
||||
{
|
||||
*offset = (name - s) + 2;
|
||||
flags = 16;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3212,22 +3228,8 @@ void CL_Say (qboolean team, char *extra)
|
|||
}
|
||||
*d = '\0';
|
||||
|
||||
CL_PrintChat(&cl.players[cl.playernum[SP]], text, team, false);
|
||||
|
||||
if (!cl_standardchat.value)
|
||||
colouration = CL_PlayerChatColour(cl.playernum[SP])%6+'1'; //don't ever print it in white.
|
||||
else
|
||||
{
|
||||
con_ormask = CON_STANDARDMASK;
|
||||
colouration = '7';
|
||||
}
|
||||
|
||||
if (team)
|
||||
Con_Printf("^%c(%s): %s\n", colouration, cl.players[cl.playernum[SP]].name, text);
|
||||
else
|
||||
Con_Printf("^%c%s: %s\n", colouration, cl.players[cl.playernum[SP]].name, text);
|
||||
|
||||
con_ormask = 0;
|
||||
|
||||
//strip out the extra markup
|
||||
for (s = sendtext, d = sendtext; *s; s++, d++)
|
||||
{
|
||||
|
|
|
@ -266,7 +266,6 @@ static char *defaultlanguagetext =
|
|||
"TL_FILE_X_MISSING \"\\nThe required model file '%s' could not be found or downloaded.\\n\\n\"\n"
|
||||
"TL_GETACLIENTPACK \"You may need to download or purchase a %s client or map pack in order to play on this server.\\n\\n\"\n"
|
||||
"TLC_LINEBREAK_MINUS \"------------------\\n\"\n"
|
||||
"TL_CSPECIALPRINT \"^%c%s\"\n"
|
||||
"TL_INT_SPACE \"%i \"\n"
|
||||
;
|
||||
|
||||
|
|
|
@ -310,7 +310,6 @@
|
|||
NAME(TL_FILE_X_MISSING)
|
||||
NAME(TL_GETACLIENTPACK)
|
||||
NAME(TLC_LINEBREAK_MINUS)
|
||||
NAME(TL_CSPECIALPRINT)
|
||||
NAME(TL_INT_SPACE)
|
||||
|
||||
#else
|
||||
|
|
|
@ -2456,6 +2456,7 @@ void SV_Vote_f (void)
|
|||
|
||||
VoteRemoveCommands(command, -1);
|
||||
Cbuf_AddText(command, votelevel.value);
|
||||
Cbuf_AddText("\n", votelevel.value);
|
||||
//Cmd_ExecuteString (command, votelevel.value);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -413,6 +413,7 @@ qboolean VARGS PFQ2_AreasConnected(int area1, int area2)
|
|||
#define Q2CHAN_VOICE 2
|
||||
#define Q2CHAN_ITEM 3
|
||||
#define Q2CHAN_BODY 4*/
|
||||
#define Q2CHAN_NO_PHS_ADD 8
|
||||
#define Q2CHAN_RELIABLE 16
|
||||
|
||||
void VARGS SVQ2_StartSound (vec3_t origin, q2edict_t *entity, int channel,
|
||||
|
@ -440,11 +441,8 @@ void VARGS SVQ2_StartSound (vec3_t origin, q2edict_t *entity, int channel,
|
|||
|
||||
ent = Q2NUM_FOR_EDICT(entity);
|
||||
|
||||
if (channel & 8) // no PHS flag
|
||||
{
|
||||
if (channel & Q2CHAN_NO_PHS_ADD) // no PHS flag
|
||||
use_phs = false;
|
||||
channel &= 7;
|
||||
}
|
||||
else
|
||||
use_phs = true;
|
||||
|
||||
|
|
Loading…
Reference in a new issue