"another one bites the dust, DN Dn dn" (SERVERONLY)

This commit is contained in:
Bill Currie 2000-05-11 12:00:26 +00:00
parent a236fa53e6
commit 9611170a38
4 changed files with 38 additions and 66 deletions

View File

@ -28,6 +28,7 @@ EXE_sources=\
pr_exec.c \ pr_exec.c \
sv_init.c \ sv_init.c \
sv_main.c \ sv_main.c \
sv_misc.c \
sv_nchan.c \ sv_nchan.c \
sv_ents.c \ sv_ents.c \
sv_send.c \ sv_send.c \

View File

@ -21,11 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include <ctype.h> #include <ctype.h>
#ifdef SERVERONLY
#include "qwsvdef.h"
#else
#include "quakedef.h" #include "quakedef.h"
#endif
#define MAX_NUM_ARGVS 50 #define MAX_NUM_ARGVS 50
#define NUM_SAFE_ARGVS 6 #define NUM_SAFE_ARGVS 6
@ -58,27 +54,6 @@ qboolean standard_quake = true, rogue, hipnotic;
char gamedirfile[MAX_OSPATH]; char gamedirfile[MAX_OSPATH];
// this graphic needs to be in the pak file to use registered features
unsigned short pop[] =
{
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x6600,0x0000,0x0000,0x0000,0x6600,0x0000
,0x0000,0x0066,0x0000,0x0000,0x0000,0x0000,0x0067,0x0000
,0x0000,0x6665,0x0000,0x0000,0x0000,0x0000,0x0065,0x6600
,0x0063,0x6561,0x0000,0x0000,0x0000,0x0000,0x0061,0x6563
,0x0064,0x6561,0x0000,0x0000,0x0000,0x0000,0x0061,0x6564
,0x0064,0x6564,0x0000,0x6469,0x6969,0x6400,0x0064,0x6564
,0x0063,0x6568,0x6200,0x0064,0x6864,0x0000,0x6268,0x6563
,0x0000,0x6567,0x6963,0x0064,0x6764,0x0063,0x6967,0x6500
,0x0000,0x6266,0x6769,0x6a68,0x6768,0x6a69,0x6766,0x6200
,0x0000,0x0062,0x6566,0x6666,0x6666,0x6666,0x6562,0x0000
,0x0000,0x0000,0x0062,0x6364,0x6664,0x6362,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0062,0x6662,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0061,0x6661,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x6500,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x6400,0x0000,0x0000,0x0000
};
/* /*
@ -1112,32 +1087,20 @@ void COM_CheckRegistered (void)
{ {
FILE *h; FILE *h;
unsigned short check[128]; unsigned short check[128];
int i;
COM_FOpenFile("gfx/pop.lmp", &h); COM_FOpenFile("gfx/pop.lmp", &h);
static_registered = 0; static_registered = 0;
if (!h) if (h) {
{ static_registered = 1;
Con_Printf ("Playing shareware version.\n");
#ifndef SERVERONLY
// FIXME DEBUG -- only temporary
if (com_modified)
Sys_Error ("You must have the registered version to play QuakeWorld");
#endif
return;
}
fread (check, 1, sizeof(check), h); fread (check, 1, sizeof(check), h);
fclose (h); fclose (h);
}
for (i=0 ; i<128 ; i++) if (static_registered) {
if (pop[i] != (unsigned short)BigShort (check[i]))
Sys_Error ("Corrupted data file.");
Cvar_Set ("registered", "1"); Cvar_Set ("registered", "1");
static_registered = 1;
Con_Printf ("Playing registered version.\n"); Con_Printf ("Playing registered version.\n");
}
} }
@ -1587,14 +1550,10 @@ byte *COM_LoadFile (char *path, int usehunk)
Sys_Error ("COM_LoadFile: not enough space for %s", path); Sys_Error ("COM_LoadFile: not enough space for %s", path);
((byte *)buf)[len] = 0; ((byte *)buf)[len] = 0;
#ifndef SERVERONLY
Draw_BeginDisc (); Draw_BeginDisc ();
#endif
fread (buf, 1, len, h); fread (buf, 1, len, h);
fclose (h); fclose (h);
#ifndef SERVERONLY
Draw_EndDisc (); Draw_EndDisc ();
#endif
return buf; return buf;
} }
@ -2007,10 +1966,7 @@ void Info_RemovePrefixedKeys (char *start, char prefix)
void Info_SetValueForStarKey (char *s, char *key, char *value, int maxsize) void Info_SetValueForStarKey (char *s, char *key, char *value, int maxsize)
{ {
char new[1024], *v; char new[1024], *v;
int c; int c, is_name, is_team;
#ifdef SERVERONLY
extern cvar_t sv_highchars;
#endif
if (strstr (key, "\\") || strstr (value, "\\") ) if (strstr (key, "\\") || strstr (value, "\\") )
{ {
@ -2054,28 +2010,21 @@ void Info_SetValueForStarKey (char *s, char *key, char *value, int maxsize)
// only copy ascii values // only copy ascii values
s += strlen(s); s += strlen(s);
v = new; v = new;
is_name = stricmp(key, "name") == 0;
is_team = stricmp(key, "team") == 0;
while (*v) while (*v)
{ {
c = (unsigned char)*v++; c = (unsigned char)*v++;
#ifndef SERVERONLY
// client only allows highbits on name // client only allows highbits on name
if (stricmp(key, "name") != 0) { if (!is_name) {
c &= 127; c &= 127;
if (c < 32 || c > 127) if (c < 32 || c > 127)
continue; continue;
// auto lowercase team // auto lowercase team
if (stricmp(key, "team") == 0) if (is_team)
c = tolower(c); c = tolower(c);
} }
#else if (c > 13)
if (!sv_highchars.value) {
c &= 127;
if (c < 32 || c > 127)
continue;
}
#endif
// c &= 127; // strip high bits
if (c > 13) // && c < 127)
*s++ = c; *s++ = c;
} }
*s = 0; *s = 0;

View File

@ -21,13 +21,26 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "qwsvdef.h" #include "qwsvdef.h"
void SV_SendServerInfoChange(char *key, char *value); void SV_SendServerInfoChange(char *key, char *value);
extern cvar_t sv_highchars;
void void
Cvar_Info(cvar_t *var) Cvar_Info(cvar_t *var)
{ {
if (var->info) if (var->info)
{ {
Info_SetValueForKey (svs.info, var->name, var->string, MAX_SERVERINFO_STRING); unsigned char info[1024],*p, *c;
for (p=info, c=var->string; *c && (p-info<sizeof(info)-1); c++, p++) {
if (!sv_highchars.value) {
*c &= 127;
if (*c < 32 || *c > 127)
continue;
*p = *c;
}
}
*p=0;
Info_SetValueForKey (svs.info, var->name, info, MAX_SERVERINFO_STRING);
SV_SendServerInfoChange(var->name, var->string); SV_SendServerInfoChange(var->name, var->string);
// SV_BroadcastCommand ("fullserverinfo \"%s\"\n", svs.info); // SV_BroadcastCommand ("fullserverinfo \"%s\"\n", svs.info);
} }

9
source/sv_misc.c Normal file
View File

@ -0,0 +1,9 @@
void
Draw_BeginDisc(void)
{
}
void
Draw_EndDisc(void)
{
}