10 Feb 2012

This commit is contained in:
g-cont 2012-02-10 00:00:00 +04:00 committed by Alibek Omarov
parent a52eddecc3
commit 1666190c51
12 changed files with 242 additions and 298 deletions

View File

@ -3,6 +3,26 @@ build ????
Physic: add check for liquid brushes that has only hull0
Render: draw decals without culling on the transparent surfaces
Engine: fix decal transition bug on global entities
Client: fix "r_drawentities 5" debug code in client.dll
Render: rewrited detail texture code for using detail scale for each diffuse texture instead of each detail texture
Render: custom render interface is changed to version 26
Engine: added custom studio decals serializtaion
Server: fixed check for russian letters in the commands "say" and "say_team"
Server: physics interface is changed to version 6
Client: allow console in multiplayer even while dev-mode is disabled
Engine: added new message SVC_STUDIODECAL that passed through engine and call function in extended rendered interface
Engine: hook PrintScreen and manually writing screenshot into clipboard
Render: fix decals drawing when rendermode is TransColor
Render: add support for cubemaps, 1D and 3D textures
Render: added some new internal textures that using by Xash-Mod 0.5
Render: fix reflection for Glow-Sprites and follow beams
Studio: fix poly-counter for studio models
Engine: add support for userconfig
Engine: allow letter '¸' in console and chat-mode
Engine: fix REG_USER_MSG for messages that registering in-game
Server: clear savedir when new game is started
GameUI: loading maps.lst from basedir while mod doesn't contain multiplayer maps
Network: implemented QueryCvarValue and QueryCvarValue2
build 1770

View File

@ -2949,11 +2949,11 @@ void NetAPI_Status( net_status_t *status )
ASSERT( status != NULL );
status->connected = NET_IsLocalAddress( cls.netchan.remote_address ) ? false : true;
status->local_address = cls.netchan.remote_address; // FIXME: get local address
status->connection_time = host.realtime - cls.netchan.connect_time;
status->remote_address = cls.netchan.remote_address;
status->packet_loss = cls.packet_loss / 100; // percent
status->latency = cl.frame.latency;
status->connection_time = cl.time; // FIXME: replace with cl.time - netchan.first_received
status->local_address = net_local;
status->rate = cls.netchan.rate;
}

View File

@ -1130,6 +1130,45 @@ void CL_ParseScreenFade( sizebuf_t *msg )
}
}
/*
==============
CL_ParseCvarValue
Find the client cvar value
and sent it back to the server
==============
*/
void CL_ParseCvarValue( sizebuf_t *msg )
{
const char *cvarName = BF_ReadString( msg );
convar_t *cvar = Cvar_FindVar( cvarName );
// build the answer
BF_WriteByte( &cls.netchan.message, clc_requestcvarvalue );
BF_WriteString( &cls.netchan.message, cvar ? cvar->string : "Not Found" );
}
/*
==============
CL_ParseCvarValue2
Find the client cvar value
and sent it back to the server
==============
*/
void CL_ParseCvarValue2( sizebuf_t *msg )
{
int requestID = BF_ReadLong( msg );
const char *cvarName = BF_ReadString( msg );
convar_t *cvar = Cvar_FindVar( cvarName );
// build the answer
BF_WriteByte( &cls.netchan.message, clc_requestcvarvalue2 );
BF_WriteLong( &cls.netchan.message, requestID );
BF_WriteString( &cls.netchan.message, cvarName );
BF_WriteString( &cls.netchan.message, cvar ? cvar->string : "Not Found" );
}
/*
==============
CL_DispatchUserMessage
@ -1460,6 +1499,12 @@ void CL_ParseServerMessage( sizebuf_t *msg )
case svc_studiodecal:
CL_ParseStudioDecal( msg );
break;
case svc_querycvarvalue:
CL_ParseCvarValue( msg );
break;
case svc_querycvarvalue2:
CL_ParseCvarValue2( msg );
break;
default:
CL_ParseUserMessage( msg, cmd );
break;

View File

@ -648,10 +648,17 @@ qboolean Cmd_CheckMapsList_R( qboolean fRefresh, qboolean onlyingamedir )
file_t *f;
if( FS_FileSize( "maps.lst", onlyingamedir ) > 0 && !fRefresh )
{
Msg( "maps.lst is exist: %s\n", onlyingamedir ? "basedir" : "gamedir" );
return true; // exist
}
t = FS_Search( "maps/*.bsp", false, onlyingamedir );
if( !t ) return false;
if( !t && onlyingamedir )
{
// mod doesn't contain any maps (probably this is a bot)
return Cmd_CheckMapsList_R( fRefresh, false );
}
buffer = Mem_Alloc( host.mempool, t->numfilenames * 2 * sizeof( result ));
for( i = 0; i < t->numfilenames; i++ )
@ -744,19 +751,17 @@ qboolean Cmd_CheckMapsList_R( qboolean fRefresh, qboolean onlyingamedir )
}
}
}
if( t ) Mem_Free( t ); // free search result
if( t ) Mem_Free( t ); // free search result
size = Q_strlen( buffer );
if( !size && onlyingamedir )
{
if( buffer ) Mem_Free( buffer );
return Cmd_CheckMapsList_R( fRefresh, false );
}
if( !size )
{
if( buffer ) Mem_Free( buffer );
return false;
if( onlyingamedir )
return Cmd_CheckMapsList_R( fRefresh, false );
return false;
}
// write generated maps.lst

View File

@ -94,6 +94,7 @@ convar_t *net_qport;
int net_drop;
netadr_t net_from;
netadr_t net_local;
sizebuf_t net_message;
byte *net_mempool;
byte net_message_buffer[NET_MAX_PAYLOAD];
@ -158,6 +159,7 @@ void Netchan_Setup( netsrc_t sock, netchan_t *chan, netadr_t adr, int qport )
chan->sock = sock;
chan->remote_address = adr;
chan->last_received = host.realtime;
chan->connect_time = host.realtime;
chan->incoming_sequence = 0;
chan->outgoing_sequence = 1;
chan->rate = DEFAULT_RATE;

View File

@ -137,7 +137,8 @@ typedef struct netchan_s
double last_sent; // for retransmits
double rate; // bandwidth choke. bytes per second
long cleartime; // if realtime > cleartime, free to send next packet
double cleartime; // if realtime > cleartime, free to send next packet
double connect_time; // Usage: host.realtime - netchan.connect_time
int drop_count; // dropped packets, cleared each level
int good_count; // cleared each level
@ -191,6 +192,7 @@ typedef struct netchan_s
} netchan_t;
extern netadr_t net_from;
extern netadr_t net_local;
extern sizebuf_t net_message;
extern byte net_message_buffer[NET_MAX_PAYLOAD];
extern convar_t *net_speeds;

View File

@ -40,6 +40,7 @@ static int (_stdcall *pRecvFrom)( SOCKET s, char* buf, int len, int flags, struc
static int (_stdcall *pSendTo)( SOCKET s, const char* buf, int len, int flags, const struct sockaddr* to, int tolen );
static int (_stdcall *pSelect)( int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, const struct timeval* timeout );
static int (_stdcall *pConnect)( SOCKET s, const struct sockaddr *name, int namelen );
static int (_stdcall *pGetSockName)( SOCKET s, struct sockaddr *name, int *namelen );
static int (_stdcall *pSend)( SOCKET s, const char *buf, int len, int flags );
static int (_stdcall *pRecv)( SOCKET s, char *buf, int len, int flags );
static int (_stdcall *pGetHostName)( char *name, int namelen );
@ -66,6 +67,7 @@ static dllfunc_t winsock_funcs[] =
{ "ioctlsocket", (void **) &pIoctlSocket },
{ "closesocket", (void **) &pCloseSocket },
{ "gethostname", (void **) &pGetHostName },
{ "getsockname", (void **) &pGetSockName },
{ "gethostbyname", (void **) &pGetHostByName },
{ "WSAGetLastError", (void **) &pWSAGetLastError },
{ NULL, NULL }
@ -92,6 +94,8 @@ static int ipx_sockets[2];
static WSADATA winsockdata;
static qboolean winsockInitialized = false;
static const char *net_src[2] = { "client", "server" };
static qboolean noip = false;
static qboolean noipx = false;
static convar_t *net_ip;
static convar_t *net_hostport;
static convar_t *net_clientport;
@ -758,6 +762,57 @@ void NET_OpenIPX( void )
}
}
/*
================
NET_GetLocalAddress
Returns the servers' ip address as a string.
================
*/
void NET_GetLocalAddress( void )
{
char buff[512];
struct sockaddr_in address;
int namelen;
int net_error = 0;
Q_memset( &net_local, 0, sizeof( netadr_t ));
if( noip )
{
MsgDev( D_INFO, "TCP/IP Disabled.\n" );
}
else
{
// If we have changed the ip var from the command line, use that instead.
if( Q_strcmp( net_ip->string, "localhost" ))
{
Q_strcpy( buff, net_ip->string );
}
else
{
pGetHostName( buff, 512 );
}
// ensure that it doesn't overrun the buffer
buff[512-1] = 0;
NET_StringToAdr( buff, &net_local );
namelen = sizeof( address );
if( pGetSockName( ip_sockets[NS_SERVER], (struct sockaddr *)&address, &namelen ) != 0 )
{
MsgDev( D_ERROR, "Could not get TCP/IP address, TCP/IP disabled\nReason: %s\n", NET_ErrorString( ));
noip = true;
}
else
{
net_local.port = address.sin_port;
Msg( "Server IP address %s\n", NET_AdrToString( net_local ));
}
}
}
/*
====================
NET_Config
@ -767,8 +822,8 @@ A single player game will only use the loopback code
*/
void NET_Config( qboolean multiplayer )
{
int i;
static qboolean old_config;
static qboolean old_config;
static qboolean bFirst = true;
if( old_config == multiplayer )
return;
@ -777,6 +832,8 @@ void NET_Config( qboolean multiplayer )
if( !multiplayer )
{
int i;
// shut down any existing sockets
for( i = 0; i < 2; i++ )
{
@ -796,8 +853,15 @@ void NET_Config( qboolean multiplayer )
else
{
// open sockets
if( !Sys_CheckParm( "-noip" )) NET_OpenIP();
if( !Sys_CheckParm( "-noipx" )) NET_OpenIPX();
if( !noip ) NET_OpenIP();
if( !noipx ) NET_OpenIPX();
// Get our local address, if possible
if( bFirst )
{
bFirst = false;
NET_GetLocalAddress();
}
}
NET_ClearLoopback ();
@ -886,6 +950,9 @@ void NET_Init( void )
Cmd_AddCommand( "net_showip", NET_ShowIP_f, "show hostname and ip's" );
Cmd_AddCommand( "net_restart", NET_Restart_f, "restart the network subsystem" );
if( Sys_CheckParm( "-noip" )) noip = true;
if( Sys_CheckParm( "-noipx" )) noipx = true;
winsockInitialized = true;
MsgDev( D_NOTE, "NET_Init()\n" );
}

View File

@ -70,6 +70,9 @@ GNU General Public License for more details.
#define svc_director 51 // <variable sized>
#define svc_studiodecal 52 // [float*3][float*3][short][short][byte]
#define svc_querycvarvalue 57 // [string]
#define svc_querycvarvalue2 58 // [string][long] (context)
#define svc_lastmsg 64 // start user messages at this point
// client to server
@ -82,6 +85,8 @@ GNU General Public License for more details.
#define clc_userinfo 6 // [[userinfo string]
#define clc_fileconsistency 7
#define clc_voicedata 8
#define clc_requestcvarvalue 9
#define clc_requestcvarvalue2 10
#define MAX_VISIBLE_PACKET 512 // 512 visible entities per frame (hl1 has 256)

View File

@ -1,282 +0,0 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: engine - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP77CA.tmp" with contents
[
/nologo /MD /W3 /GX /O2 /I "./" /I "common" /I "common/imagelib" /I "common/soundlib" /I "server" /I "client" /I "client/vgui" /I "../common" /I "../game_shared" /I "../pm_shared" /I "../utils/vgui/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fo"..\temp\engine\!release/" /Fd"..\temp\engine\!release/" /FD /c
"D:\Xash3D\src_main\engine\common\avikit.c"
"D:\Xash3D\src_main\engine\common\build.c"
"D:\Xash3D\src_main\engine\client\cl_cmds.c"
"D:\Xash3D\src_main\engine\client\cl_demo.c"
"D:\Xash3D\src_main\engine\client\cl_events.c"
"D:\Xash3D\src_main\engine\client\cl_frame.c"
"D:\Xash3D\src_main\engine\client\cl_game.c"
"D:\Xash3D\src_main\engine\client\cl_main.c"
"D:\Xash3D\src_main\engine\client\cl_menu.c"
"D:\Xash3D\src_main\engine\client\cl_parse.c"
"D:\Xash3D\src_main\engine\client\cl_pmove.c"
"D:\Xash3D\src_main\engine\client\cl_remap.c"
"D:\Xash3D\src_main\engine\client\cl_scrn.c"
"D:\Xash3D\src_main\engine\client\cl_tent.c"
"D:\Xash3D\src_main\engine\client\cl_video.c"
"D:\Xash3D\src_main\engine\client\cl_view.c"
"D:\Xash3D\src_main\engine\common\cmd.c"
"D:\Xash3D\src_main\engine\common\common.c"
"D:\Xash3D\src_main\engine\common\con_utils.c"
"D:\Xash3D\src_main\engine\common\console.c"
"D:\Xash3D\src_main\engine\common\crclib.c"
"D:\Xash3D\src_main\engine\common\crtlib.c"
"D:\Xash3D\src_main\engine\common\cvar.c"
"D:\Xash3D\src_main\engine\common\filesystem.c"
"D:\Xash3D\src_main\engine\common\gamma.c"
"D:\Xash3D\src_main\engine\client\gl_backend.c"
"D:\Xash3D\src_main\engine\client\gl_beams.c"
"D:\Xash3D\src_main\engine\client\gl_cull.c"
"D:\Xash3D\src_main\engine\client\gl_decals.c"
"D:\Xash3D\src_main\engine\client\gl_draw.c"
"D:\Xash3D\src_main\engine\client\gl_image.c"
"D:\Xash3D\src_main\engine\client\gl_mirror.c"
"D:\Xash3D\src_main\engine\client\gl_refrag.c"
"D:\Xash3D\src_main\engine\client\gl_rlight.c"
"D:\Xash3D\src_main\engine\client\gl_rmain.c"
"D:\Xash3D\src_main\engine\client\gl_rmath.c"
"D:\Xash3D\src_main\engine\client\gl_rmisc.c"
"D:\Xash3D\src_main\engine\client\gl_rpart.c"
"D:\Xash3D\src_main\engine\client\gl_rsurf.c"
"D:\Xash3D\src_main\engine\client\gl_sprite.c"
"D:\Xash3D\src_main\engine\client\gl_studio.c"
"D:\Xash3D\src_main\engine\client\gl_vidnt.c"
"D:\Xash3D\src_main\engine\client\gl_warp.c"
"D:\Xash3D\src_main\engine\common\host.c"
"D:\Xash3D\src_main\engine\common\hpak.c"
"D:\Xash3D\src_main\engine\common\imagelib\img_bmp.c"
"D:\Xash3D\src_main\engine\common\imagelib\img_jpg.c"
"D:\Xash3D\src_main\engine\common\imagelib\img_main.c"
"D:\Xash3D\src_main\engine\common\imagelib\img_quant.c"
"D:\Xash3D\src_main\engine\common\imagelib\img_tga.c"
"D:\Xash3D\src_main\engine\common\imagelib\img_utils.c"
"D:\Xash3D\src_main\engine\common\imagelib\img_wad.c"
"D:\Xash3D\src_main\engine\common\infostring.c"
"D:\Xash3D\src_main\engine\common\input.c"
"D:\Xash3D\src_main\engine\common\keys.c"
"D:\Xash3D\src_main\engine\common\library.c"
"D:\Xash3D\src_main\engine\common\mathlib.c"
"D:\Xash3D\src_main\engine\common\matrixlib.c"
"D:\Xash3D\src_main\engine\common\model.c"
"D:\Xash3D\src_main\engine\common\net_buffer.c"
"D:\Xash3D\src_main\engine\common\net_chan.c"
"D:\Xash3D\src_main\engine\common\net_encode.c"
"D:\Xash3D\src_main\engine\common\net_huff.c"
"D:\Xash3D\src_main\engine\common\network.c"
"D:\Xash3D\src_main\engine\common\pm_studio.c"
"D:\Xash3D\src_main\engine\common\pm_surface.c"
"D:\Xash3D\src_main\engine\common\pm_trace.c"
"D:\Xash3D\src_main\engine\common\random.c"
"D:\Xash3D\src_main\engine\client\s_backend.c"
"D:\Xash3D\src_main\engine\client\s_dsp.c"
"D:\Xash3D\src_main\engine\client\s_load.c"
"D:\Xash3D\src_main\engine\client\s_main.c"
"D:\Xash3D\src_main\engine\client\s_mix.c"
"D:\Xash3D\src_main\engine\client\s_mouth.c"
"D:\Xash3D\src_main\engine\client\s_stream.c"
"D:\Xash3D\src_main\engine\client\s_utils.c"
"D:\Xash3D\src_main\engine\client\s_vox.c"
"D:\Xash3D\src_main\engine\common\soundlib\snd_main.c"
"D:\Xash3D\src_main\engine\common\soundlib\snd_mp3.c"
"D:\Xash3D\src_main\engine\common\soundlib\snd_utils.c"
"D:\Xash3D\src_main\engine\common\soundlib\snd_wav.c"
"D:\Xash3D\src_main\engine\server\sv_client.c"
"D:\Xash3D\src_main\engine\server\sv_cmds.c"
"D:\Xash3D\src_main\engine\server\sv_custom.c"
"D:\Xash3D\src_main\engine\server\sv_frame.c"
"D:\Xash3D\src_main\engine\server\sv_game.c"
"D:\Xash3D\src_main\engine\server\sv_init.c"
"D:\Xash3D\src_main\engine\server\sv_main.c"
"D:\Xash3D\src_main\engine\server\sv_move.c"
"D:\Xash3D\src_main\engine\server\sv_phys.c"
"D:\Xash3D\src_main\engine\server\sv_pmove.c"
"D:\Xash3D\src_main\engine\server\sv_save.c"
"D:\Xash3D\src_main\engine\server\sv_studio.c"
"D:\Xash3D\src_main\engine\server\sv_world.c"
"D:\Xash3D\src_main\engine\common\sys_con.c"
"D:\Xash3D\src_main\engine\common\sys_win.c"
"D:\Xash3D\src_main\engine\common\titles.c"
"D:\Xash3D\src_main\engine\client\vgui\vgui_clip.cpp"
"D:\Xash3D\src_main\engine\client\vgui\vgui_draw.c"
"D:\Xash3D\src_main\engine\client\vgui\vgui_font.cpp"
"D:\Xash3D\src_main\engine\client\vgui\vgui_input.cpp"
"D:\Xash3D\src_main\engine\client\vgui\vgui_int.cpp"
"D:\Xash3D\src_main\engine\client\vgui\vgui_surf.cpp"
"D:\Xash3D\src_main\engine\common\world.c"
"D:\Xash3D\src_main\engine\common\zone.c"
]
Creating command line "cl.exe @"C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP77CA.tmp""
Creating temporary file "C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP77CB.tmp" with contents
[
msvcrt.lib user32.lib gdi32.lib shell32.lib advapi32.lib winmm.lib mpeg.lib ../utils/vgui/lib/win32_vc6/vgui.lib /nologo /subsystem:windows /dll /pdb:none /machine:I386 /nodefaultlib:"libc.lib" /out:"..\temp\engine\!release/xash.dll" /implib:"..\temp\engine\!release/xash.lib" /libpath:"./common/soundlib" /opt:nowin98
"\Xash3D\src_main\temp\engine\!release\avikit.obj"
"\Xash3D\src_main\temp\engine\!release\build.obj"
"\Xash3D\src_main\temp\engine\!release\cl_cmds.obj"
"\Xash3D\src_main\temp\engine\!release\cl_demo.obj"
"\Xash3D\src_main\temp\engine\!release\cl_events.obj"
"\Xash3D\src_main\temp\engine\!release\cl_frame.obj"
"\Xash3D\src_main\temp\engine\!release\cl_game.obj"
"\Xash3D\src_main\temp\engine\!release\cl_main.obj"
"\Xash3D\src_main\temp\engine\!release\cl_menu.obj"
"\Xash3D\src_main\temp\engine\!release\cl_parse.obj"
"\Xash3D\src_main\temp\engine\!release\cl_pmove.obj"
"\Xash3D\src_main\temp\engine\!release\cl_remap.obj"
"\Xash3D\src_main\temp\engine\!release\cl_scrn.obj"
"\Xash3D\src_main\temp\engine\!release\cl_tent.obj"
"\Xash3D\src_main\temp\engine\!release\cl_video.obj"
"\Xash3D\src_main\temp\engine\!release\cl_view.obj"
"\Xash3D\src_main\temp\engine\!release\cmd.obj"
"\Xash3D\src_main\temp\engine\!release\common.obj"
"\Xash3D\src_main\temp\engine\!release\con_utils.obj"
"\Xash3D\src_main\temp\engine\!release\console.obj"
"\Xash3D\src_main\temp\engine\!release\crclib.obj"
"\Xash3D\src_main\temp\engine\!release\crtlib.obj"
"\Xash3D\src_main\temp\engine\!release\cvar.obj"
"\Xash3D\src_main\temp\engine\!release\filesystem.obj"
"\Xash3D\src_main\temp\engine\!release\gamma.obj"
"\Xash3D\src_main\temp\engine\!release\gl_backend.obj"
"\Xash3D\src_main\temp\engine\!release\gl_beams.obj"
"\Xash3D\src_main\temp\engine\!release\gl_cull.obj"
"\Xash3D\src_main\temp\engine\!release\gl_decals.obj"
"\Xash3D\src_main\temp\engine\!release\gl_draw.obj"
"\Xash3D\src_main\temp\engine\!release\gl_image.obj"
"\Xash3D\src_main\temp\engine\!release\gl_mirror.obj"
"\Xash3D\src_main\temp\engine\!release\gl_refrag.obj"
"\Xash3D\src_main\temp\engine\!release\gl_rlight.obj"
"\Xash3D\src_main\temp\engine\!release\gl_rmain.obj"
"\Xash3D\src_main\temp\engine\!release\gl_rmath.obj"
"\Xash3D\src_main\temp\engine\!release\gl_rmisc.obj"
"\Xash3D\src_main\temp\engine\!release\gl_rpart.obj"
"\Xash3D\src_main\temp\engine\!release\gl_rsurf.obj"
"\Xash3D\src_main\temp\engine\!release\gl_sprite.obj"
"\Xash3D\src_main\temp\engine\!release\gl_studio.obj"
"\Xash3D\src_main\temp\engine\!release\gl_vidnt.obj"
"\Xash3D\src_main\temp\engine\!release\gl_warp.obj"
"\Xash3D\src_main\temp\engine\!release\host.obj"
"\Xash3D\src_main\temp\engine\!release\hpak.obj"
"\Xash3D\src_main\temp\engine\!release\img_bmp.obj"
"\Xash3D\src_main\temp\engine\!release\img_jpg.obj"
"\Xash3D\src_main\temp\engine\!release\img_main.obj"
"\Xash3D\src_main\temp\engine\!release\img_quant.obj"
"\Xash3D\src_main\temp\engine\!release\img_tga.obj"
"\Xash3D\src_main\temp\engine\!release\img_utils.obj"
"\Xash3D\src_main\temp\engine\!release\img_wad.obj"
"\Xash3D\src_main\temp\engine\!release\infostring.obj"
"\Xash3D\src_main\temp\engine\!release\input.obj"
"\Xash3D\src_main\temp\engine\!release\keys.obj"
"\Xash3D\src_main\temp\engine\!release\library.obj"
"\Xash3D\src_main\temp\engine\!release\mathlib.obj"
"\Xash3D\src_main\temp\engine\!release\matrixlib.obj"
"\Xash3D\src_main\temp\engine\!release\model.obj"
"\Xash3D\src_main\temp\engine\!release\net_buffer.obj"
"\Xash3D\src_main\temp\engine\!release\net_chan.obj"
"\Xash3D\src_main\temp\engine\!release\net_encode.obj"
"\Xash3D\src_main\temp\engine\!release\net_huff.obj"
"\Xash3D\src_main\temp\engine\!release\network.obj"
"\Xash3D\src_main\temp\engine\!release\pm_studio.obj"
"\Xash3D\src_main\temp\engine\!release\pm_surface.obj"
"\Xash3D\src_main\temp\engine\!release\pm_trace.obj"
"\Xash3D\src_main\temp\engine\!release\random.obj"
"\Xash3D\src_main\temp\engine\!release\s_backend.obj"
"\Xash3D\src_main\temp\engine\!release\s_dsp.obj"
"\Xash3D\src_main\temp\engine\!release\s_load.obj"
"\Xash3D\src_main\temp\engine\!release\s_main.obj"
"\Xash3D\src_main\temp\engine\!release\s_mix.obj"
"\Xash3D\src_main\temp\engine\!release\s_mouth.obj"
"\Xash3D\src_main\temp\engine\!release\s_stream.obj"
"\Xash3D\src_main\temp\engine\!release\s_utils.obj"
"\Xash3D\src_main\temp\engine\!release\s_vox.obj"
"\Xash3D\src_main\temp\engine\!release\snd_main.obj"
"\Xash3D\src_main\temp\engine\!release\snd_mp3.obj"
"\Xash3D\src_main\temp\engine\!release\snd_utils.obj"
"\Xash3D\src_main\temp\engine\!release\snd_wav.obj"
"\Xash3D\src_main\temp\engine\!release\sv_client.obj"
"\Xash3D\src_main\temp\engine\!release\sv_cmds.obj"
"\Xash3D\src_main\temp\engine\!release\sv_custom.obj"
"\Xash3D\src_main\temp\engine\!release\sv_frame.obj"
"\Xash3D\src_main\temp\engine\!release\sv_game.obj"
"\Xash3D\src_main\temp\engine\!release\sv_init.obj"
"\Xash3D\src_main\temp\engine\!release\sv_main.obj"
"\Xash3D\src_main\temp\engine\!release\sv_move.obj"
"\Xash3D\src_main\temp\engine\!release\sv_phys.obj"
"\Xash3D\src_main\temp\engine\!release\sv_pmove.obj"
"\Xash3D\src_main\temp\engine\!release\sv_save.obj"
"\Xash3D\src_main\temp\engine\!release\sv_studio.obj"
"\Xash3D\src_main\temp\engine\!release\sv_world.obj"
"\Xash3D\src_main\temp\engine\!release\sys_con.obj"
"\Xash3D\src_main\temp\engine\!release\sys_win.obj"
"\Xash3D\src_main\temp\engine\!release\titles.obj"
"\Xash3D\src_main\temp\engine\!release\vgui_clip.obj"
"\Xash3D\src_main\temp\engine\!release\vgui_draw.obj"
"\Xash3D\src_main\temp\engine\!release\vgui_font.obj"
"\Xash3D\src_main\temp\engine\!release\vgui_input.obj"
"\Xash3D\src_main\temp\engine\!release\vgui_int.obj"
"\Xash3D\src_main\temp\engine\!release\vgui_surf.obj"
"\Xash3D\src_main\temp\engine\!release\world.obj"
"\Xash3D\src_main\temp\engine\!release\zone.obj"
]
Creating command line "link.exe @"C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP77CB.tmp""
Creating temporary file "C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP77CC.bat" with contents
[
@echo off
copy \Xash3D\src_main\temp\engine\!release\xash.dll "D:\Xash3D\xash.dll"
]
Creating command line ""C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP77CC.bat""
Compiling...
avikit.c
build.c
cl_cmds.c
cl_demo.c
cl_events.c
cl_frame.c
cl_game.c
cl_main.c
cl_menu.c
cl_parse.c
cl_pmove.c
cl_remap.c
cl_scrn.c
cl_tent.c
cl_video.c
cl_view.c
cmd.c
common.c
con_utils.c
console.c
Generating Code...
Compiling...
crclib.c
crtlib.c
cvar.c
filesystem.c
gamma.c
gl_backend.c
gl_beams.c
gl_cull.c
gl_decals.c
gl_draw.c
gl_image.c
gl_mirror.c
gl_refrag.c
gl_rlight.c
gl_rmain.c
gl_rmath.c
gl_rmisc.c
gl_rpart.c
gl_rsurf.c
gl_sprite.c
Generating Code...
Compiling...
gl_studio.c
gl_vidnt.c
gl_warp.

View File

@ -2114,6 +2114,41 @@ void SV_ParseResourceList( sv_client_t *cl, sizebuf_t *msg )
Netchan_FragSend( &cl->netchan );
}
/*
===================
SV_ParseCvarValue
Parse a requested value from client cvar
===================
*/
void SV_ParseCvarValue( sv_client_t *cl, sizebuf_t *msg )
{
const char *value = BF_ReadString( msg );
if( svgame.dllFuncs2.pfnCvarValue )
svgame.dllFuncs2.pfnCvarValue( cl->edict, value );
MsgDev( D_AICONSOLE, "Cvar query response: name:%s, value:%s\n", cl->name, value );
}
/*
===================
SV_ParseCvarValue2
Parse a requested value from client cvar
===================
*/
void SV_ParseCvarValue2( sv_client_t *cl, sizebuf_t *msg )
{
string name, value;
int requestID = BF_ReadLong( msg );
Q_strcpy( name, BF_ReadString( msg ));
Q_strcpy( value, BF_ReadString( msg ));
if( svgame.dllFuncs2.pfnCvarValue2 )
svgame.dllFuncs2.pfnCvarValue2( cl->edict, requestID, name, value );
MsgDev( D_AICONSOLE, "Cvar query response: name:%s, request ID %d, cvar:%s, value:%s\n", cl->name, requestID, name, value );
}
/*
===================
SV_ExecuteClientMessage
@ -2194,6 +2229,12 @@ void SV_ExecuteClientMessage( sv_client_t *cl, sizebuf_t *msg )
case clc_resourcelist:
SV_ParseResourceList( cl, msg );
break;
case clc_requestcvarvalue:
SV_ParseCvarValue( cl, msg );
break;
case clc_requestcvarvalue2:
SV_ParseCvarValue2( cl, msg );
break;
default:
MsgDev( D_ERROR, "SV_ReadClientMessage: clc_bad\n" );
SV_DropClient( cl );

View File

@ -4183,6 +4183,25 @@ request client cvar value
*/
void pfnQueryClientCvarValue( const edict_t *player, const char *cvarName )
{
sv_client_t *cl;
if( !cvarName || !*cvarName )
{
MsgDev( D_ERROR, "QueryClientCvarValue: NULL cvar name!\n" );
return;
}
if(( cl = SV_ClientFromEdict( player, true )) != NULL )
{
BF_WriteByte( &cl->netchan.message, svc_querycvarvalue );
BF_WriteString( &cl->netchan.message, cvarName );
}
else
{
if( svgame.dllFuncs2.pfnCvarValue )
svgame.dllFuncs2.pfnCvarValue( player, "Bad Player" );
MsgDev( D_ERROR, "QueryClientCvarValue: tried to send to a non-client!\n" );
}
}
/*
@ -4194,6 +4213,26 @@ request client cvar value (bugfixed)
*/
void pfnQueryClientCvarValue2( const edict_t *player, const char *cvarName, int requestID )
{
sv_client_t *cl;
if( !cvarName || !*cvarName )
{
MsgDev( D_ERROR, "QueryClientCvarValue: NULL cvar name!\n" );
return;
}
if(( cl = SV_ClientFromEdict( player, true )) != NULL )
{
BF_WriteByte( &cl->netchan.message, svc_querycvarvalue2 );
BF_WriteLong( &cl->netchan.message, requestID );
BF_WriteString( &cl->netchan.message, cvarName );
}
else
{
if( svgame.dllFuncs2.pfnCvarValue2 )
svgame.dllFuncs2.pfnCvarValue2( player, requestID, cvarName, "Bad Player" );
MsgDev( D_ERROR, "QueryClientCvarValue: tried to send to a non-client!\n" );
}
}
// engine callbacks

View File

@ -183,7 +183,7 @@ static void UI_CreateGame_GetMapsList( void )
{
char *afile;
if( !CHECK_MAP_LIST( FALSE ) && (afile = (char *)LOAD_FILE( "maps.lst", NULL )) == NULL )
if( !CHECK_MAP_LIST( FALSE ) || (afile = (char *)LOAD_FILE( "maps.lst", NULL )) == NULL )
{
uiCreateGame.done.generic.flags |= QMF_GRAYED;
uiCreateGame.mapsList.itemNames = (const char **)uiCreateGame.mapsDescriptionPtr;