Merge 4097
This commit is contained in:
commit
dcc19aeafb
16 changed files with 103 additions and 38 deletions
|
@ -1063,7 +1063,7 @@ void CL_CheckForResend( void )
|
||||||
if( cls.connect_retry == CL_TEST_RETRIES_NORESPONCE )
|
if( cls.connect_retry == CL_TEST_RETRIES_NORESPONCE )
|
||||||
{
|
{
|
||||||
// too many fails use default connection method
|
// too many fails use default connection method
|
||||||
Msg( "hi-speed coonection is failed, use default method\n" );
|
Con_Printf( "hi-speed connection is failed, use default method\n" );
|
||||||
Netchan_OutOfBandPrint( NS_CLIENT, adr, "getchallenge\n" );
|
Netchan_OutOfBandPrint( NS_CLIENT, adr, "getchallenge\n" );
|
||||||
Cvar_SetValue( "cl_dlmax", FRAGMENT_MIN_SIZE );
|
Cvar_SetValue( "cl_dlmax", FRAGMENT_MIN_SIZE );
|
||||||
cls.connect_time = host.realtime;
|
cls.connect_time = host.realtime;
|
||||||
|
@ -1775,7 +1775,7 @@ void CL_ConnectionlessPacket( netadr_t from, sizebuf_t *msg )
|
||||||
if( cls.connect_retry >= CL_TEST_RETRIES )
|
if( cls.connect_retry >= CL_TEST_RETRIES )
|
||||||
{
|
{
|
||||||
// too many fails use default connection method
|
// too many fails use default connection method
|
||||||
Msg( "hi-speed coonection is failed, use default method\n" );
|
Con_Printf( "hi-speed connection is failed, use default method\n" );
|
||||||
Netchan_OutOfBandPrint( NS_CLIENT, from, "getchallenge\n" );
|
Netchan_OutOfBandPrint( NS_CLIENT, from, "getchallenge\n" );
|
||||||
Cvar_SetValue( "cl_dlmax", FRAGMENT_MIN_SIZE );
|
Cvar_SetValue( "cl_dlmax", FRAGMENT_MIN_SIZE );
|
||||||
cls.connect_time = host.realtime;
|
cls.connect_time = host.realtime;
|
||||||
|
@ -1807,7 +1807,7 @@ void CL_ConnectionlessPacket( netadr_t from, sizebuf_t *msg )
|
||||||
if( cls.connect_retry >= CL_TEST_RETRIES )
|
if( cls.connect_retry >= CL_TEST_RETRIES )
|
||||||
{
|
{
|
||||||
// too many fails use default connection method
|
// too many fails use default connection method
|
||||||
Msg( "hi-speed coonection is failed, use default method\n" );
|
Con_Printf( "hi-speed connection is failed, use default method\n" );
|
||||||
Netchan_OutOfBandPrint( NS_CLIENT, from, "getchallenge\n" );
|
Netchan_OutOfBandPrint( NS_CLIENT, from, "getchallenge\n" );
|
||||||
Cvar_SetValue( "cl_dlmax", FRAGMENT_MIN_SIZE );
|
Cvar_SetValue( "cl_dlmax", FRAGMENT_MIN_SIZE );
|
||||||
cls.connect_time = host.realtime;
|
cls.connect_time = host.realtime;
|
||||||
|
@ -2190,7 +2190,8 @@ void CL_ProcessFile( qboolean successfully_received, const char *filename )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Con_Printf( "Downloaded %i bytes for purported %i byte file, ignoring download\n", cls.netchan.tempbuffersize, p->nDownloadSize );
|
Con_Printf( "Downloaded %i bytes for purported %i byte file, ignoring download\n",
|
||||||
|
cls.netchan.tempbuffersize, p->nDownloadSize );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( cls.netchan.tempbuffer )
|
if( cls.netchan.tempbuffer )
|
||||||
|
|
|
@ -1039,7 +1039,7 @@ void CL_CreateCustomizationList( void )
|
||||||
pResource = &cl.resourcelist[i];
|
pResource = &cl.resourcelist[i];
|
||||||
|
|
||||||
if( !COM_CreateCustomization( &pPlayer->customdata, pResource, cl.playernum, 0, NULL, NULL ))
|
if( !COM_CreateCustomization( &pPlayer->customdata, pResource, cl.playernum, 0, NULL, NULL ))
|
||||||
Con_Printf( "problem with client customization %i, ignoring...", pResource );
|
Con_Printf( "problem with client customization %s, ignoring...", pResource->szFileName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1220,6 +1220,7 @@ void CL_PredictMovement( qboolean repredicting )
|
||||||
int i, stoppoint;
|
int i, stoppoint;
|
||||||
qboolean runfuncs;
|
qboolean runfuncs;
|
||||||
double f = 1.0;
|
double f = 1.0;
|
||||||
|
cl_entity_t *ent;
|
||||||
double time;
|
double time;
|
||||||
|
|
||||||
if( cls.state != ca_active || cls.spectator )
|
if( cls.state != ca_active || cls.spectator )
|
||||||
|
@ -1349,8 +1350,7 @@ void CL_PredictMovement( qboolean repredicting )
|
||||||
|
|
||||||
if( FBitSet( to->client.flags, FL_ONGROUND ))
|
if( FBitSet( to->client.flags, FL_ONGROUND ))
|
||||||
{
|
{
|
||||||
cl_entity_t *ent = CL_GetEntityByIndex( cl.local.lastground );
|
ent = CL_GetEntityByIndex( cl.local.lastground );
|
||||||
|
|
||||||
cl.local.onground = cl.local.lastground;
|
cl.local.onground = cl.local.lastground;
|
||||||
cl.local.moving = false;
|
cl.local.moving = false;
|
||||||
|
|
||||||
|
|
|
@ -126,7 +126,7 @@ void SCR_NetSpeeds( void )
|
||||||
if( !host.allow_console )
|
if( !host.allow_console )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( !net_speeds->value || cls.demoplayback || cls.state != ca_active )
|
if( !net_speeds->value || cls.state != ca_active )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// prevent to get too big values at max
|
// prevent to get too big values at max
|
||||||
|
|
|
@ -2043,9 +2043,9 @@ void Con_DrawDebug( void )
|
||||||
|
|
||||||
if( scr_download->value != -1.0f )
|
if( scr_download->value != -1.0f )
|
||||||
{
|
{
|
||||||
Q_snprintf( dlstring, sizeof( dlstring ), "Downloading [%d remaining]: ^2%s^7 %5.1f%% (%f elapsed)",
|
Q_snprintf( dlstring, sizeof( dlstring ), "Downloading [%d remaining]: ^2%s^7 %5.1f%% time %.f secs",
|
||||||
host.downloadcount, host.downloadfile, scr_download->value, Sys_DoubleTime() - timeStart );
|
host.downloadcount, host.downloadfile, scr_download->value, Sys_DoubleTime() - timeStart );
|
||||||
x = glState.width - 400;
|
x = glState.width - 500;
|
||||||
y = con.curFont->charHeight * 1.05f;
|
y = con.curFont->charHeight * 1.05f;
|
||||||
Con_DrawString( x, y, dlstring, g_color_table[7] );
|
Con_DrawString( x, y, dlstring, g_color_table[7] );
|
||||||
}
|
}
|
||||||
|
|
|
@ -311,9 +311,9 @@ void R_SetTextureParameters( void )
|
||||||
if( GL_Support( GL_TEXTURE_LOD_BIAS ))
|
if( GL_Support( GL_TEXTURE_LOD_BIAS ))
|
||||||
{
|
{
|
||||||
if( gl_texture_lodbias->value < -glConfig.max_texture_lod_bias )
|
if( gl_texture_lodbias->value < -glConfig.max_texture_lod_bias )
|
||||||
Cvar_SetValue( "gl_mipmap_bias", -glConfig.max_texture_lod_bias );
|
Cvar_SetValue( "gl_texture_lodbias", -glConfig.max_texture_lod_bias );
|
||||||
else if( gl_texture_lodbias->value > glConfig.max_texture_lod_bias )
|
else if( gl_texture_lodbias->value > glConfig.max_texture_lod_bias )
|
||||||
Cvar_SetValue( "gl_mipmap_bias", glConfig.max_texture_lod_bias );
|
Cvar_SetValue( "gl_texture_lodbias", glConfig.max_texture_lod_bias );
|
||||||
}
|
}
|
||||||
|
|
||||||
ClearBits( gl_texture_anisotropy->flags, FCVAR_CHANGED );
|
ClearBits( gl_texture_anisotropy->flags, FCVAR_CHANGED );
|
||||||
|
|
|
@ -562,7 +562,22 @@ int Q_vsnprintf( char *buffer, size_t buffersize, const char *format, va_list ar
|
||||||
{
|
{
|
||||||
size_t result;
|
size_t result;
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
result = vsnprintf( buffer, buffersize, format, args );
|
result = vsnprintf( buffer, buffersize, format, args );
|
||||||
|
#else
|
||||||
|
__try
|
||||||
|
{
|
||||||
|
result = _vsnprintf( buffer, buffersize, format, args );
|
||||||
|
}
|
||||||
|
|
||||||
|
// to prevent crash while output
|
||||||
|
__except( EXCEPTION_EXECUTE_HANDLER )
|
||||||
|
{
|
||||||
|
Q_strncpy( buffer, "^1sprintf throw exception^7\n", buffersize );
|
||||||
|
// memset( buffer, 0, buffersize );
|
||||||
|
result = buffersize;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if( result < 0 || result >= buffersize )
|
if( result < 0 || result >= buffersize )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1596,7 +1596,7 @@ static file_t *FS_SysOpen( const char *filepath, const char *mode )
|
||||||
opt |= O_BINARY;
|
opt |= O_BINARY;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MsgDev( D_ERROR, "FS_SysOpen: %s: unknown char %c in mode (%s)\n", filepath, mode[ind], mode );
|
MsgDev( D_ERROR, "FS_SysOpen: %s: unknown char (%c) in mode (%s)\n", filepath, mode[ind], mode );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,10 +46,10 @@ host_parm_t host; // host parms
|
||||||
sysinfo_t SI;
|
sysinfo_t SI;
|
||||||
|
|
||||||
CVAR_DEFINE( host_developer, "developer", "0", 0, "engine is in development-mode" );
|
CVAR_DEFINE( host_developer, "developer", "0", 0, "engine is in development-mode" );
|
||||||
|
CVAR_DEFINE_AUTO( sys_ticrate, "100", 0, "framerate in dedicated mode" );
|
||||||
convar_t *host_gameloaded;
|
convar_t *host_gameloaded;
|
||||||
convar_t *host_clientloaded;
|
convar_t *host_clientloaded;
|
||||||
convar_t *host_limitlocal;
|
convar_t *host_limitlocal;
|
||||||
convar_t host_developer;
|
|
||||||
convar_t *host_maxfps;
|
convar_t *host_maxfps;
|
||||||
convar_t *host_framerate;
|
convar_t *host_framerate;
|
||||||
convar_t *con_gamemaps;
|
convar_t *con_gamemaps;
|
||||||
|
@ -148,7 +148,7 @@ void Host_CheckSleep( void )
|
||||||
if( host.type == HOST_DEDICATED )
|
if( host.type == HOST_DEDICATED )
|
||||||
{
|
{
|
||||||
// let the dedicated server some sleep
|
// let the dedicated server some sleep
|
||||||
// Sys_Sleep( 1 );
|
Sys_Sleep( 1 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -413,15 +413,23 @@ double Host_CalcFPS( void )
|
||||||
// NOTE: we should play demos with same fps as it was recorded
|
// NOTE: we should play demos with same fps as it was recorded
|
||||||
#ifndef XASH_DEDICATED
|
#ifndef XASH_DEDICATED
|
||||||
if( CL_IsPlaybackDemo() || CL_IsRecordDemo( ))
|
if( CL_IsPlaybackDemo() || CL_IsRecordDemo( ))
|
||||||
|
{
|
||||||
fps = CL_GetDemoFramerate();
|
fps = CL_GetDemoFramerate();
|
||||||
else
|
}
|
||||||
#endif
|
else if( Host_IsLocalGame( ))
|
||||||
if( Host_IsLocalGame( ))
|
{
|
||||||
fps = host_maxfps->value;
|
fps = host_maxfps->value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
if( Host_IsDedicated() )
|
||||||
|
{
|
||||||
|
fps = sys_ticrate.value;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fps = host_maxfps->value;
|
fps = host_maxfps->value;
|
||||||
if( fps == 0.0 ) fps = HOST_FPS; // default for multiplayer
|
fps = bound( MIN_FPS, fps, MAX_FPS );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef XASH_DEDICATED
|
#ifndef XASH_DEDICATED
|
||||||
|
@ -462,8 +470,16 @@ qboolean Host_FilterTime( float time )
|
||||||
// limit fps to withing tolerable range
|
// limit fps to withing tolerable range
|
||||||
fps = bound( MIN_FPS, fps, MAX_FPS );
|
fps = bound( MIN_FPS, fps, MAX_FPS );
|
||||||
|
|
||||||
if(( host.realtime - oldtime ) < ( 1.0 / fps ))
|
if( host.type == HOST_DEDICATED )
|
||||||
return false;
|
{
|
||||||
|
if(( host.realtime - oldtime ) < ( 1.0 / ( fps + 1.0 )))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(( host.realtime - oldtime ) < ( 1.0 / fps ))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
host.frametime = host.realtime - oldtime;
|
host.frametime = host.realtime - oldtime;
|
||||||
|
@ -795,6 +811,7 @@ void Host_InitCommon( int argc, char **argv, const char *progname, qboolean bCha
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
Wcon_CreateConsole(); // system console used by dedicated server or show fatal errors
|
Wcon_CreateConsole(); // system console used by dedicated server or show fatal errors
|
||||||
#endif
|
#endif
|
||||||
|
// timeBeginPeriod( 1 ); // a1ba: Do we need this?
|
||||||
|
|
||||||
// NOTE: this message couldn't be passed into game console but it doesn't matter
|
// NOTE: this message couldn't be passed into game console but it doesn't matter
|
||||||
MsgDev( D_NOTE, "Sys_LoadLibrary: Loading xash.dll - ok\n" );
|
MsgDev( D_NOTE, "Sys_LoadLibrary: Loading xash.dll - ok\n" );
|
||||||
|
@ -812,6 +829,13 @@ void Host_InitCommon( int argc, char **argv, const char *progname, qboolean bCha
|
||||||
// share developer level across all dlls
|
// share developer level across all dlls
|
||||||
Q_snprintf( dev_level, sizeof( dev_level ), "%i", developer );
|
Q_snprintf( dev_level, sizeof( dev_level ), "%i", developer );
|
||||||
Cvar_DirectSet( &host_developer, dev_level );
|
Cvar_DirectSet( &host_developer, dev_level );
|
||||||
|
Cvar_RegisterVariable( &sys_ticrate );
|
||||||
|
|
||||||
|
if( Sys_GetParmFromCmdLine( "-sys_ticrate", ticrate ))
|
||||||
|
{
|
||||||
|
fps = bound( MIN_FPS, atof( ticrate ), MAX_FPS );
|
||||||
|
Cvar_SetValue( "sys_ticrate", fps );
|
||||||
|
}
|
||||||
|
|
||||||
Con_Init(); // early console running to catch all the messages
|
Con_Init(); // early console running to catch all the messages
|
||||||
Cmd_AddCommand( "exec", Host_Exec_f, "execute a script file" );
|
Cmd_AddCommand( "exec", Host_Exec_f, "execute a script file" );
|
||||||
|
@ -871,7 +895,7 @@ int EXPORT Host_Main( int argc, char **argv, const char *progname, int bChangeGa
|
||||||
Cmd_AddCommand ( "crash", Host_Crash_f, "a way to force a bus error for development reasons");
|
Cmd_AddCommand ( "crash", Host_Crash_f, "a way to force a bus error for development reasons");
|
||||||
}
|
}
|
||||||
|
|
||||||
host_maxfps = Cvar_Get( "fps_max", "100", FCVAR_ARCHIVE, "host fps upper limit" );
|
host_maxfps = Cvar_Get( "fps_max", "72", FCVAR_ARCHIVE, "host fps upper limit" );
|
||||||
host_framerate = Cvar_Get( "host_framerate", "0", 0, "locks frame timing to this value in seconds" );
|
host_framerate = Cvar_Get( "host_framerate", "0", 0, "locks frame timing to this value in seconds" );
|
||||||
host_gameloaded = Cvar_Get( "host_gameloaded", "0", FCVAR_READ_ONLY, "inidcates a loaded game.dll" );
|
host_gameloaded = Cvar_Get( "host_gameloaded", "0", FCVAR_READ_ONLY, "inidcates a loaded game.dll" );
|
||||||
host_clientloaded = Cvar_Get( "host_clientloaded", "0", FCVAR_READ_ONLY, "inidcates a loaded client.dll" );
|
host_clientloaded = Cvar_Get( "host_clientloaded", "0", FCVAR_READ_ONLY, "inidcates a loaded client.dll" );
|
||||||
|
|
|
@ -1023,7 +1023,7 @@ void HPAK_Extract_f( void )
|
||||||
|
|
||||||
if( entry->disksize <= 0 || entry->disksize >= HPAK_MAX_SIZE )
|
if( entry->disksize <= 0 || entry->disksize >= HPAK_MAX_SIZE )
|
||||||
{
|
{
|
||||||
MsgDev( D_WARN, "Unable to extract data, size invalid: %i\n", nDataSize );
|
MsgDev( D_WARN, "Unable to extract data, size invalid: %s\n", Q_memprint( entry->disksize ));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1528,7 +1528,7 @@ static void Mod_LoadEntities( dbspmodel_t *bmod )
|
||||||
{
|
{
|
||||||
if( ft1 > ft2 )
|
if( ft1 > ft2 )
|
||||||
{
|
{
|
||||||
Con_Printf( S_WARN "Entity patch %s is older than bsp. Ignored.\n", entfilename );
|
Con_Printf( S_WARN "Entity patch is older than bsp. Ignored.\n" );
|
||||||
}
|
}
|
||||||
else if(( entpatch = FS_LoadFile( entfilename, &entpatchsize, true )) != NULL )
|
else if(( entpatch = FS_LoadFile( entfilename, &entpatchsize, true )) != NULL )
|
||||||
{
|
{
|
||||||
|
|
|
@ -164,11 +164,16 @@ static const char *Mem_CheckFilename( const char *filename )
|
||||||
const char *out = filename;
|
const char *out = filename;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if( !out ) return dummy;
|
if( !COM_CheckString( out ))
|
||||||
|
return dummy;
|
||||||
|
|
||||||
for( i = 0; i < 128; i++, out++ )
|
for( i = 0; i < 128; i++, out++ )
|
||||||
if( *out == '\0' ) break; // valid name
|
{
|
||||||
if( i == 128 ) return dummy;
|
if( *out == '\0' )
|
||||||
return filename;
|
return filename; // valid name
|
||||||
|
}
|
||||||
|
|
||||||
|
return dummy;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Mem_FreeBlock( memheader_t *mem, const char *filename, int fileline )
|
static void Mem_FreeBlock( memheader_t *mem, const char *filename, int fileline )
|
||||||
|
|
|
@ -168,9 +168,8 @@ typedef struct ui_enginefuncs_s
|
||||||
int (*pfnCompareFileTime)( const char *filename1, const char *filename2, int *iCompare );
|
int (*pfnCompareFileTime)( const char *filename1, const char *filename2, int *iCompare );
|
||||||
|
|
||||||
const char *(*pfnGetModeString)( int vid_mode );
|
const char *(*pfnGetModeString)( int vid_mode );
|
||||||
|
int (*COM_SaveFile)( const char *filename, const void *data, long len );
|
||||||
int (*COM_SaveFile)( const char *filename, const void *data, int len );
|
int (*COM_RemoveFile)( const char *filepath );
|
||||||
int (*pfnDeleteFile)( const char *filename );
|
|
||||||
} ui_enginefuncs_t;
|
} ui_enginefuncs_t;
|
||||||
|
|
||||||
typedef struct ui_textfuncs_s {
|
typedef struct ui_textfuncs_s {
|
||||||
|
|
|
@ -72,8 +72,11 @@ void SV_BroadcastPrintf( sv_client_t *ignore, char *fmt, ... )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// echo to console
|
if( Host_IsDedicated() )
|
||||||
Con_DPrintf( "%s", string );
|
{
|
||||||
|
// echo to console
|
||||||
|
Con_DPrintf( string );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -60,8 +60,8 @@ static void SV_AddEntitiesToPacket( edict_t *pViewEnt, edict_t *pClient, client_
|
||||||
byte *clientpvs;
|
byte *clientpvs;
|
||||||
byte *clientphs;
|
byte *clientphs;
|
||||||
qboolean fullvis = false;
|
qboolean fullvis = false;
|
||||||
sv_client_t *netclient;
|
|
||||||
sv_client_t *cl = NULL;
|
sv_client_t *cl = NULL;
|
||||||
|
qboolean player;
|
||||||
entity_state_t *state;
|
entity_state_t *state;
|
||||||
int e;
|
int e;
|
||||||
|
|
||||||
|
@ -101,15 +101,29 @@ static void SV_AddEntitiesToPacket( edict_t *pViewEnt, edict_t *pClient, client_
|
||||||
if( CHECKVISBIT( ents->sended, e ))
|
if( CHECKVISBIT( ents->sended, e ))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if( e >= 1 && e <= svs.maxclients )
|
||||||
|
player = 1;
|
||||||
|
else player = 0;
|
||||||
|
|
||||||
|
if( player )
|
||||||
|
{
|
||||||
|
sv_client_t *cl = &svs.clients[e - 1];
|
||||||
|
|
||||||
|
if( cl->state != cs_spawned )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if( FBitSet( cl->flags, FCL_HLTV_PROXY ))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if( FBitSet( ent->v.effects, EF_REQUEST_PHS ))
|
if( FBitSet( ent->v.effects, EF_REQUEST_PHS ))
|
||||||
pset = clientphs;
|
pset = clientphs;
|
||||||
else pset = clientpvs;
|
else pset = clientpvs;
|
||||||
|
|
||||||
state = &ents->entities[ents->num_entities];
|
state = &ents->entities[ents->num_entities];
|
||||||
netclient = SV_ClientFromEdict( ent, true );
|
|
||||||
|
|
||||||
// add entity to the net packet
|
// add entity to the net packet
|
||||||
if( svgame.dllFuncs.pfnAddToFullPack( state, e, ent, pClient, sv.hostflags, ( netclient != NULL ), pset ))
|
if( svgame.dllFuncs.pfnAddToFullPack( state, e, ent, pClient, sv.hostflags, player, pset ))
|
||||||
{
|
{
|
||||||
// to prevent adds it twice through portals
|
// to prevent adds it twice through portals
|
||||||
SETVISBIT( ents->sended, e );
|
SETVISBIT( ents->sended, e );
|
||||||
|
@ -807,7 +821,7 @@ void SV_SendClientMessages( void )
|
||||||
{
|
{
|
||||||
cl = sv.current_client;
|
cl = sv.current_client;
|
||||||
|
|
||||||
if( !cl->state || FBitSet( cl->flags, FCL_FAKECLIENT ))
|
if( cl->state <= cs_zombie || FBitSet( cl->flags, FCL_FAKECLIENT ))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if( FBitSet( cl->flags, FCL_SKIP_NET_MESSAGE ))
|
if( FBitSet( cl->flags, FCL_SKIP_NET_MESSAGE ))
|
||||||
|
|
|
@ -876,6 +876,10 @@ void SV_InitEdict( edict_t *pEdict )
|
||||||
SV_FreePrivateData( pEdict );
|
SV_FreePrivateData( pEdict );
|
||||||
memset( &pEdict->v, 0, sizeof( entvars_t ));
|
memset( &pEdict->v, 0, sizeof( entvars_t ));
|
||||||
pEdict->v.pContainingEntity = pEdict;
|
pEdict->v.pContainingEntity = pEdict;
|
||||||
|
pEdict->v.controller[0] = 0x7F;
|
||||||
|
pEdict->v.controller[1] = 0x7F;
|
||||||
|
pEdict->v.controller[2] = 0x7F;
|
||||||
|
pEdict->v.controller[3] = 0x7F;
|
||||||
pEdict->free = false;
|
pEdict->free = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue