From cd30812607d7bfa0cbeac3640195b6f8c53c6a32 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Sun, 20 Jan 2019 00:33:21 +0300 Subject: [PATCH 1/4] sv_frame: fakeclients must be kicked on changelevel(GoldSrc compatibity) (port from Old Engine #b5b493) --- engine/server/sv_frame.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/engine/server/sv_frame.c b/engine/server/sv_frame.c index 98e19aac..9544ee76 100644 --- a/engine/server/sv_frame.c +++ b/engine/server/sv_frame.c @@ -998,9 +998,15 @@ void SV_InactivateClients( void ) if( !cl->state || !cl->edict ) continue; - if( !cl->edict || FBitSet( cl->edict->v.flags, FL_FAKECLIENT )) + if( !cl->edict ) continue; + if( FBitSet( cl->edict->v.flags, FL_FAKECLIENT )) + { + SV_DropClient( cl, false ); + continue; + } + if( cl->state > cs_connected ) cl->state = cs_connected; @@ -1015,4 +1021,4 @@ void SV_InactivateClients( void ) MSG_Clear( &cl->netchan.message ); MSG_Clear( &cl->datagram ); } -} \ No newline at end of file +} From 74f935d94f754b28300518ecc08073430e7808fb Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Wed, 30 Jan 2019 21:39:50 +0300 Subject: [PATCH 2/4] common: fix COM_IsSafeFileToDownload extension check --- engine/common/common.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/engine/common/common.c b/engine/common/common.c index 286bccb0..2c09cf18 100644 --- a/engine/common/common.c +++ b/engine/common/common.c @@ -20,18 +20,18 @@ GNU General Public License for more details. #include "client.h" #include "library.h" -const char *file_exts[10] = +static const char *file_exts[] = { - ".cfg", - ".lst", - ".exe", - ".vbs", - ".com", - ".bat", - ".dll", - ".ini", - ".log", - ".sys", + "cfg", + "lst", + "exe", + "vbs", + "com", + "bat", + "dll", + "ini", + "log", + "sys", }; #ifdef _DEBUG From 8770bdc69426a9fc03998a92498a85bb2f64db81 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Wed, 30 Jan 2019 21:47:05 +0300 Subject: [PATCH 3/4] keys: allow autorepeat for menu and console for any keys --- engine/client/keys.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/engine/client/keys.c b/engine/client/keys.c index bc7fccf7..66f0e6c0 100644 --- a/engine/client/keys.c +++ b/engine/client/keys.c @@ -527,8 +527,11 @@ Key_IsAllowedAutoRepeat List of keys that allows auto-repeat =================== */ -qboolean Key_IsAllowedAutoRepeat( int key ) +static qboolean Key_IsAllowedAutoRepeat( int key ) { + if( cls.key_dest != key_game ) + return true; + switch( key ) { case K_BACKSPACE: From 4d63eb4413ba2ca69cfd018acf25584feb9ac807 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Wed, 30 Jan 2019 21:55:53 +0300 Subject: [PATCH 4/4] sv_game: fix pfnSetModel theoretically may ignore precached models --- engine/server/sv_game.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/engine/server/sv_game.c b/engine/server/sv_game.c index 179cb121..d0975bc4 100644 --- a/engine/server/sv_game.c +++ b/engine/server/sv_game.c @@ -1294,14 +1294,19 @@ void pfnSetModel( edict_t *e, const char *m ) if( COM_CheckString( name )) { + qboolean notfound = true; + // check to see if model was properly precached for( i = 1; i < MAX_MODELS && sv.model_precache[i][0]; i++ ) { if( !Q_stricmp( sv.model_precache[i], name )) + { + notfound = false; break; + } } - if( i == MAX_MODELS ) + if( notfound ) { Con_Printf( S_ERROR "no precache: %s\n", name ); return;