24 Mar 2018

This commit is contained in:
g-cont 2018-03-24 00:00:00 +03:00 committed by Alibek Omarov
parent a102a22a55
commit 338f9da2a2
31 changed files with 1710 additions and 1558 deletions

View File

@ -1025,7 +1025,6 @@ int AddToFullPack( struct entity_state_s *state, int e, edict_t *ent, edict_t *h
// Don't send entity to local client if the client says it's predicting the entity itself.
if ( ent->v.flags & FL_SKIPLOCALHOST )
{
if ( hostflags & 4 ) return 0; // it's a portal pass
if ( ( hostflags & 1 ) && ( ent->v.owner == host ) )
return 0;
}

View File

@ -3,9 +3,332 @@
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: hl - Win32 Release--------------------
--------------------Configuration: hl - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSPF.tmp" with contents
[
/nologo /G5 /MTd /W3 /Gm /ZI /Od /I "..\dlls" /I "..\engine" /I "..\common" /I "..\game_shared" /I "..\pm_shared" /I "..\\" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "QUIVER" /D "VOXEL" /D "QUAKE2" /D "VALVE_DLL" /D "CLIENT_WEAPONS" /FR"..\temp\dlls\!debug/" /Fp"..\temp\dlls\!debug/hl.pch" /YX /Fo"..\temp\dlls\!debug/" /Fd"..\temp\dlls\!debug/" /FD /c
"D:\Xash3D\src_main\dlls\aflock.cpp"
"D:\Xash3D\src_main\dlls\agrunt.cpp"
"D:\Xash3D\src_main\dlls\airtank.cpp"
"D:\Xash3D\src_main\dlls\animating.cpp"
"D:\Xash3D\src_main\dlls\animation.cpp"
"D:\Xash3D\src_main\dlls\apache.cpp"
"D:\Xash3D\src_main\dlls\barnacle.cpp"
"D:\Xash3D\src_main\dlls\barney.cpp"
"D:\Xash3D\src_main\dlls\bigmomma.cpp"
"D:\Xash3D\src_main\dlls\bloater.cpp"
"D:\Xash3D\src_main\dlls\bmodels.cpp"
"D:\Xash3D\src_main\dlls\bullsquid.cpp"
"D:\Xash3D\src_main\dlls\buttons.cpp"
"D:\Xash3D\src_main\dlls\cbase.cpp"
"D:\Xash3D\src_main\dlls\client.cpp"
"D:\Xash3D\src_main\dlls\combat.cpp"
"D:\Xash3D\src_main\dlls\controller.cpp"
"D:\Xash3D\src_main\dlls\crossbow.cpp"
"D:\Xash3D\src_main\dlls\crowbar.cpp"
"D:\Xash3D\src_main\dlls\defaultai.cpp"
"D:\Xash3D\src_main\dlls\doors.cpp"
"D:\Xash3D\src_main\dlls\effects.cpp"
"D:\Xash3D\src_main\dlls\egon.cpp"
"D:\Xash3D\src_main\dlls\explode.cpp"
"D:\Xash3D\src_main\dlls\flyingmonster.cpp"
"D:\Xash3D\src_main\dlls\func_break.cpp"
"D:\Xash3D\src_main\dlls\func_tank.cpp"
"D:\Xash3D\src_main\dlls\game.cpp"
"D:\Xash3D\src_main\dlls\gamerules.cpp"
"D:\Xash3D\src_main\dlls\gargantua.cpp"
"D:\Xash3D\src_main\dlls\gauss.cpp"
"D:\Xash3D\src_main\dlls\genericmonster.cpp"
"D:\Xash3D\src_main\dlls\ggrenade.cpp"
"D:\Xash3D\src_main\dlls\globals.cpp"
"D:\Xash3D\src_main\dlls\glock.cpp"
"D:\Xash3D\src_main\dlls\gman.cpp"
"D:\Xash3D\src_main\dlls\h_ai.cpp"
"D:\Xash3D\src_main\dlls\h_battery.cpp"
"D:\Xash3D\src_main\dlls\h_cine.cpp"
"D:\Xash3D\src_main\dlls\h_cycler.cpp"
"D:\Xash3D\src_main\dlls\h_export.cpp"
"D:\Xash3D\src_main\dlls\handgrenade.cpp"
"D:\Xash3D\src_main\dlls\hassassin.cpp"
"D:\Xash3D\src_main\dlls\headcrab.cpp"
"D:\Xash3D\src_main\dlls\healthkit.cpp"
"D:\Xash3D\src_main\dlls\hgrunt.cpp"
"D:\Xash3D\src_main\dlls\hornet.cpp"
"D:\Xash3D\src_main\dlls\hornetgun.cpp"
"D:\Xash3D\src_main\dlls\houndeye.cpp"
"D:\Xash3D\src_main\dlls\ichthyosaur.cpp"
"D:\Xash3D\src_main\dlls\islave.cpp"
"D:\Xash3D\src_main\dlls\items.cpp"
"D:\Xash3D\src_main\dlls\leech.cpp"
"D:\Xash3D\src_main\dlls\lights.cpp"
"D:\Xash3D\src_main\dlls\maprules.cpp"
"D:\Xash3D\src_main\dlls\monstermaker.cpp"
"D:\Xash3D\src_main\dlls\monsters.cpp"
"D:\Xash3D\src_main\dlls\monsterstate.cpp"
"D:\Xash3D\src_main\dlls\mortar.cpp"
"D:\Xash3D\src_main\dlls\mp5.cpp"
"D:\Xash3D\src_main\dlls\multiplay_gamerules.cpp"
"D:\Xash3D\src_main\dlls\nihilanth.cpp"
"D:\Xash3D\src_main\dlls\nodes.cpp"
"D:\Xash3D\src_main\dlls\osprey.cpp"
"D:\Xash3D\src_main\dlls\pathcorner.cpp"
"D:\Xash3D\src_main\dlls\plane.cpp"
"D:\Xash3D\src_main\dlls\plats.cpp"
"D:\Xash3D\src_main\dlls\player.cpp"
"D:\Xash3D\src_main\pm_shared\pm_debug.c"
"D:\Xash3D\src_main\pm_shared\pm_math.c"
"D:\Xash3D\src_main\pm_shared\pm_shared.c"
"D:\Xash3D\src_main\dlls\python.cpp"
"D:\Xash3D\src_main\dlls\rat.cpp"
"D:\Xash3D\src_main\dlls\roach.cpp"
"D:\Xash3D\src_main\dlls\rpg.cpp"
"D:\Xash3D\src_main\dlls\satchel.cpp"
"D:\Xash3D\src_main\dlls\schedule.cpp"
"D:\Xash3D\src_main\dlls\scientist.cpp"
"D:\Xash3D\src_main\dlls\scripted.cpp"
"D:\Xash3D\src_main\dlls\shotgun.cpp"
"D:\Xash3D\src_main\dlls\singleplay_gamerules.cpp"
"D:\Xash3D\src_main\dlls\skill.cpp"
"D:\Xash3D\src_main\dlls\sound.cpp"
"D:\Xash3D\src_main\dlls\soundent.cpp"
"D:\Xash3D\src_main\dlls\spectator.cpp"
"D:\Xash3D\src_main\dlls\squadmonster.cpp"
"D:\Xash3D\src_main\dlls\squeakgrenade.cpp"
"D:\Xash3D\src_main\dlls\subs.cpp"
"D:\Xash3D\src_main\dlls\talkmonster.cpp"
"D:\Xash3D\src_main\dlls\teamplay_gamerules.cpp"
"D:\Xash3D\src_main\dlls\tentacle.cpp"
"D:\Xash3D\src_main\dlls\triggers.cpp"
"D:\Xash3D\src_main\dlls\tripmine.cpp"
"D:\Xash3D\src_main\dlls\turret.cpp"
"D:\Xash3D\src_main\dlls\util.cpp"
"D:\Xash3D\src_main\game_shared\voice_gamemgr.cpp"
"D:\Xash3D\src_main\dlls\weapons.cpp"
"D:\Xash3D\src_main\dlls\world.cpp"
"D:\Xash3D\src_main\dlls\xen.cpp"
"D:\Xash3D\src_main\dlls\zombie.cpp"
]
Creating command line "cl.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSPF.tmp""
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP10.tmp" with contents
[
user32.lib advapi32.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"..\temp\dlls\!debug/hl.pdb" /debug /machine:I386 /def:".\hl.def" /out:"..\temp\dlls\!debug/hl.dll" /implib:"..\temp\dlls\!debug/hl.lib"
"\Xash3D\src_main\temp\dlls\!debug\aflock.obj"
"\Xash3D\src_main\temp\dlls\!debug\agrunt.obj"
"\Xash3D\src_main\temp\dlls\!debug\airtank.obj"
"\Xash3D\src_main\temp\dlls\!debug\animating.obj"
"\Xash3D\src_main\temp\dlls\!debug\animation.obj"
"\Xash3D\src_main\temp\dlls\!debug\apache.obj"
"\Xash3D\src_main\temp\dlls\!debug\barnacle.obj"
"\Xash3D\src_main\temp\dlls\!debug\barney.obj"
"\Xash3D\src_main\temp\dlls\!debug\bigmomma.obj"
"\Xash3D\src_main\temp\dlls\!debug\bloater.obj"
"\Xash3D\src_main\temp\dlls\!debug\bmodels.obj"
"\Xash3D\src_main\temp\dlls\!debug\bullsquid.obj"
"\Xash3D\src_main\temp\dlls\!debug\buttons.obj"
"\Xash3D\src_main\temp\dlls\!debug\cbase.obj"
"\Xash3D\src_main\temp\dlls\!debug\client.obj"
"\Xash3D\src_main\temp\dlls\!debug\combat.obj"
"\Xash3D\src_main\temp\dlls\!debug\controller.obj"
"\Xash3D\src_main\temp\dlls\!debug\crossbow.obj"
"\Xash3D\src_main\temp\dlls\!debug\crowbar.obj"
"\Xash3D\src_main\temp\dlls\!debug\defaultai.obj"
"\Xash3D\src_main\temp\dlls\!debug\doors.obj"
"\Xash3D\src_main\temp\dlls\!debug\effects.obj"
"\Xash3D\src_main\temp\dlls\!debug\egon.obj"
"\Xash3D\src_main\temp\dlls\!debug\explode.obj"
"\Xash3D\src_main\temp\dlls\!debug\flyingmonster.obj"
"\Xash3D\src_main\temp\dlls\!debug\func_break.obj"
"\Xash3D\src_main\temp\dlls\!debug\func_tank.obj"
"\Xash3D\src_main\temp\dlls\!debug\game.obj"
"\Xash3D\src_main\temp\dlls\!debug\gamerules.obj"
"\Xash3D\src_main\temp\dlls\!debug\gargantua.obj"
"\Xash3D\src_main\temp\dlls\!debug\gauss.obj"
"\Xash3D\src_main\temp\dlls\!debug\genericmonster.obj"
"\Xash3D\src_main\temp\dlls\!debug\ggrenade.obj"
"\Xash3D\src_main\temp\dlls\!debug\globals.obj"
"\Xash3D\src_main\temp\dlls\!debug\glock.obj"
"\Xash3D\src_main\temp\dlls\!debug\gman.obj"
"\Xash3D\src_main\temp\dlls\!debug\h_ai.obj"
"\Xash3D\src_main\temp\dlls\!debug\h_battery.obj"
"\Xash3D\src_main\temp\dlls\!debug\h_cine.obj"
"\Xash3D\src_main\temp\dlls\!debug\h_cycler.obj"
"\Xash3D\src_main\temp\dlls\!debug\h_export.obj"
"\Xash3D\src_main\temp\dlls\!debug\handgrenade.obj"
"\Xash3D\src_main\temp\dlls\!debug\hassassin.obj"
"\Xash3D\src_main\temp\dlls\!debug\headcrab.obj"
"\Xash3D\src_main\temp\dlls\!debug\healthkit.obj"
"\Xash3D\src_main\temp\dlls\!debug\hgrunt.obj"
"\Xash3D\src_main\temp\dlls\!debug\hornet.obj"
"\Xash3D\src_main\temp\dlls\!debug\hornetgun.obj"
"\Xash3D\src_main\temp\dlls\!debug\houndeye.obj"
"\Xash3D\src_main\temp\dlls\!debug\ichthyosaur.obj"
"\Xash3D\src_main\temp\dlls\!debug\islave.obj"
"\Xash3D\src_main\temp\dlls\!debug\items.obj"
"\Xash3D\src_main\temp\dlls\!debug\leech.obj"
"\Xash3D\src_main\temp\dlls\!debug\lights.obj"
"\Xash3D\src_main\temp\dlls\!debug\maprules.obj"
"\Xash3D\src_main\temp\dlls\!debug\monstermaker.obj"
"\Xash3D\src_main\temp\dlls\!debug\monsters.obj"
"\Xash3D\src_main\temp\dlls\!debug\monsterstate.obj"
"\Xash3D\src_main\temp\dlls\!debug\mortar.obj"
"\Xash3D\src_main\temp\dlls\!debug\mp5.obj"
"\Xash3D\src_main\temp\dlls\!debug\multiplay_gamerules.obj"
"\Xash3D\src_main\temp\dlls\!debug\nihilanth.obj"
"\Xash3D\src_main\temp\dlls\!debug\nodes.obj"
"\Xash3D\src_main\temp\dlls\!debug\osprey.obj"
"\Xash3D\src_main\temp\dlls\!debug\pathcorner.obj"
"\Xash3D\src_main\temp\dlls\!debug\plane.obj"
"\Xash3D\src_main\temp\dlls\!debug\plats.obj"
"\Xash3D\src_main\temp\dlls\!debug\player.obj"
"\Xash3D\src_main\temp\dlls\!debug\pm_debug.obj"
"\Xash3D\src_main\temp\dlls\!debug\pm_math.obj"
"\Xash3D\src_main\temp\dlls\!debug\pm_shared.obj"
"\Xash3D\src_main\temp\dlls\!debug\python.obj"
"\Xash3D\src_main\temp\dlls\!debug\rat.obj"
"\Xash3D\src_main\temp\dlls\!debug\roach.obj"
"\Xash3D\src_main\temp\dlls\!debug\rpg.obj"
"\Xash3D\src_main\temp\dlls\!debug\satchel.obj"
"\Xash3D\src_main\temp\dlls\!debug\schedule.obj"
"\Xash3D\src_main\temp\dlls\!debug\scientist.obj"
"\Xash3D\src_main\temp\dlls\!debug\scripted.obj"
"\Xash3D\src_main\temp\dlls\!debug\shotgun.obj"
"\Xash3D\src_main\temp\dlls\!debug\singleplay_gamerules.obj"
"\Xash3D\src_main\temp\dlls\!debug\skill.obj"
"\Xash3D\src_main\temp\dlls\!debug\sound.obj"
"\Xash3D\src_main\temp\dlls\!debug\soundent.obj"
"\Xash3D\src_main\temp\dlls\!debug\spectator.obj"
"\Xash3D\src_main\temp\dlls\!debug\squadmonster.obj"
"\Xash3D\src_main\temp\dlls\!debug\squeakgrenade.obj"
"\Xash3D\src_main\temp\dlls\!debug\subs.obj"
"\Xash3D\src_main\temp\dlls\!debug\talkmonster.obj"
"\Xash3D\src_main\temp\dlls\!debug\teamplay_gamerules.obj"
"\Xash3D\src_main\temp\dlls\!debug\tempmonster.obj"
"\Xash3D\src_main\temp\dlls\!debug\tentacle.obj"
"\Xash3D\src_main\temp\dlls\!debug\triggers.obj"
"\Xash3D\src_main\temp\dlls\!debug\tripmine.obj"
"\Xash3D\src_main\temp\dlls\!debug\turret.obj"
"\Xash3D\src_main\temp\dlls\!debug\util.obj"
"\Xash3D\src_main\temp\dlls\!debug\voice_gamemgr.obj"
"\Xash3D\src_main\temp\dlls\!debug\weapons.obj"
"\Xash3D\src_main\temp\dlls\!debug\world.obj"
"\Xash3D\src_main\temp\dlls\!debug\xen.obj"
"\Xash3D\src_main\temp\dlls\!debug\zombie.obj"
]
Creating command line "link.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP10.tmp""
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP11.bat" with contents
[
@echo off
copy \Xash3D\src_main\temp\dlls\!debug\hl.dll "D:\Xash3D\valve\dlls\hl.dll"
]
Creating command line ""C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP11.bat""
Compiling...
aflock.cpp
agrunt.cpp
airtank.cpp
animating.cpp
client.cpp
crossbow.cpp
game.cpp
player.cpp
pm_debug.c
pm_math.c
pm_shared.c
rpg.cpp
animation.cpp
apache.cpp
barnacle.cpp
barney.cpp
bigmomma.cpp
bloater.cpp
bmodels.cpp
bullsquid.cpp
buttons.cpp
cbase.cpp
combat.cpp
controller.cpp
crowbar.cpp
defaultai.cpp
doors.cpp
effects.cpp
egon.cpp
explode.cpp
flyingmonster.cpp
func_break.cpp
func_tank.cpp
gamerules.cpp
gargantua.cpp
gauss.cpp
genericmonster.cpp
ggrenade.cpp
globals.cpp
glock.cpp
gman.cpp
h_ai.cpp
h_battery.cpp
h_cine.cpp
h_cycler.cpp
h_export.cpp
handgrenade.cpp
hassassin.cpp
headcrab.cpp
healthkit.cpp
hgrunt.cpp
hornet.cpp
hornetgun.cpp
houndeye.cpp
ichthyosaur.cpp
islave.cpp
items.cpp
leech.cpp
lights.cpp
maprules.cpp
monstermaker.cpp
monsters.cpp
monsterstate.cpp
mortar.cpp
mp5.cpp
multiplay_gamerules.cpp
nihilanth.cpp
nodes.cpp
osprey.cpp
pathcorner.cpp
plane.cpp
plats.cpp
python.cpp
rat.cpp
roach.cpp
satchel.cpp
schedule.cpp
scientist.cpp
scripted.cpp
shotgun.cpp
singleplay_gamerules.cpp
skill.cpp
sound.cpp
soundent.cpp
spectator.cpp
squadmonster.cpp
squeakgrenade.cpp
subs.cpp
talkmonster.cpp
teamplay_gamerules.cpp
tentacle.cpp
triggers.cpp
tripmine.cpp
turret.cpp
util.cpp
voice_gamemgr.cpp
weapons.cpp
world.cpp
xen.cpp
zombie.cpp
Linking...
Creating library ..\temp\dlls\!debug/hl.lib and object ..\temp\dlls\!debug/hl.exp
<h3>Output Window</h3>
Performing Custom Build Step on \Xash3D\src_main\temp\dlls\!debug\hl.dll
‘ª®¯¨à®¢ ­® ä ©«®¢: 1.

View File

@ -381,7 +381,7 @@ void CL_SaveShot_f( void )
return;
}
Q_sprintf( cls.shotname, "save/%s.bmp", Cmd_Argv( 1 ));
Q_sprintf( cls.shotname, "%s%s.bmp", DEFAULT_SAVE_DIRECTORY, Cmd_Argv( 1 ));
cls.scrshot_action = scrshot_savegame; // build new frame for saveshot
}

View File

@ -1011,10 +1011,10 @@ void CL_StopPlayback( void )
/*
==================
CL_GetComment
CL_GetDemoComment
==================
*/
qboolean CL_GetComment( const char *demoname, char *comment )
qboolean CL_GetDemoComment( const char *demoname, char *comment )
{
file_t *demfile;
demoheader_t demohdr;

View File

@ -1272,7 +1272,11 @@ qboolean CL_GetEntitySpatialization( channel_t *ch )
cl_entity_t *ent;
qboolean valid_origin;
if( ch->entnum == 0 ) return true; // static sound
if( ch->entnum == 0 )
{
ch->staticsound = true;
return true; // static sound
}
if(( ch->entnum - 1 ) == cl.playernum )
{
@ -1284,15 +1288,9 @@ qboolean CL_GetEntitySpatialization( channel_t *ch )
ent = CL_GetEntityByIndex( ch->entnum );
// entity is not present on the client but has valid origin
if( !ent || !ent->index ) return valid_origin;
if( ent->curstate.messagenum == 0 )
{
// entity is never has updates on the client
// so we should use static origin instead
ch->staticsound = true;
if( !ent || !ent->index || ent->curstate.messagenum == 0 )
return valid_origin;
}
#if 0
// uncomment this if you want enable additional check by PVS
if( ent->curstate.messagenum != cl.parsecount )

View File

@ -969,8 +969,8 @@ static ui_enginefuncs_t gEngfuncs =
pfnGetGameInfo,
pfnGetGamesList,
pfnGetFilesList,
SV_GetComment,
CL_GetComment,
SV_GetSaveComment,
CL_GetDemoComment,
pfnCheckGameDll,
pfnGetClipboardData,
Sys_ShellExecute,

View File

@ -509,8 +509,8 @@ void CL_ParseStaticEntity( sizebuf_t *msg )
memset( &state, 0, sizeof( state ));
state.modelindex = MSG_ReadShort( msg );
state.sequence = MSG_ReadByte( msg );
state.frame = MSG_ReadByte( msg );
state.sequence = MSG_ReadWord( msg );
state.frame = MSG_ReadWord( msg ) * (1.0f / 128.0f);
state.colormap = MSG_ReadWord( msg );
state.skin = MSG_ReadByte( msg );
state.body = MSG_ReadByte( msg );

View File

@ -624,7 +624,7 @@ void R_DecalSurface( msurface_t *surf, decalinfo_t *decalinfo )
float s, t, w, h;
// we in restore mode
if( cls.state == ca_connected )
if( cls.state == ca_connected || cls.state == ca_validate )
{
// NOTE: we may have the decal on this surface that come from another level.
// check duplicate with same position and texture
@ -790,7 +790,9 @@ void R_DecalShoot( int textureIndex, int entityIndex, int modelIndex, vec3_t pos
decalInfo.m_pModel = model;
hull = &model->hulls[0]; // always use #0 hull
if( ent && !( flags & FDECAL_LOCAL_SPACE ))
// NOTE: all the decals at 'first shoot' placed into local space of parent entity
// and won't transform again on a next restore, levelchange etc
if( ent && !FBitSet( flags, FDECAL_LOCAL_SPACE ))
{
vec3_t pos_l;
@ -808,19 +810,19 @@ void R_DecalShoot( int textureIndex, int entityIndex, int modelIndex, vec3_t pos
}
VectorCopy( pos_l, decalInfo.m_Position );
flags |= FDECAL_LOCAL_SPACE; // decal position moved into local space
// decal position moved into local space
SetBits( flags, FDECAL_LOCAL_SPACE );
}
else
{
// pass position in global
// already in local space
VectorCopy( pos, decalInfo.m_Position );
}
// this decal must use landmark for correct transition
if(!( model->flags & MODEL_HAS_ORIGIN ))
{
flags |= FDECAL_USE_LANDMARK;
}
// because their model exist only in world-space
if( !FBitSet( model->flags, MODEL_HAS_ORIGIN ))
SetBits( flags, FDECAL_USE_LANDMARK );
// more state used by R_DecalNode()
decalInfo.m_iTexture = textureIndex;
@ -1173,7 +1175,7 @@ int R_CreateDecalList( decallist_t *pList )
decal_t *pdecals;
// decal is in use and is not a custom decal
if( decal->psurface == NULL || ( decal->flags & FDECAL_DONTSAVE ))
if( decal->psurface == NULL || FBitSet( decal->flags, FDECAL_DONTSAVE ))
continue;
// compute depth

View File

@ -311,16 +311,6 @@ void R_AddSkyBoxSurface( msurface_t *fa )
float *v;
int i;
if( clgame.movevars.skyangle )
{
// force full sky to draw when it has angle
for( i = 0; i < 6; i++ )
{
RI.skyMins[0][i] = RI.skyMins[1][i] = -1.0f;
RI.skyMaxs[0][i] = RI.skyMaxs[1][i] = 1.0f;
}
}
if( FBitSet( world.flags, FWORLD_SKYSPHERE ) && fa->polys && !FBitSet( world.flags, FWORLD_CUSTOM_SKYBOX ))
{
glpoly_t *p = fa->polys;
@ -377,18 +367,6 @@ void R_DrawSkyBox( void )
{
int i;
if( clgame.movevars.skyangle )
{
// check for no sky at all
for( i = 0; i < 6; i++ )
{
if( RI.skyMins[0][i] < RI.skyMaxs[0][i] && RI.skyMins[1][i] < RI.skyMaxs[1][i] )
break;
}
if( i == 6 ) return; // nothing visible
}
RI.isSkyVisible = true;
// don't fogging skybox (this fix old Half-Life bug)
@ -398,16 +376,6 @@ void R_DrawSkyBox( void )
pglDisable( GL_ALPHA_TEST );
pglTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE );
if( clgame.movevars.skyangle && !VectorIsNull( (float *)&clgame.movevars.skydir_x ))
{
matrix4x4 m;
Matrix4x4_CreateRotate( m, clgame.movevars.skyangle, clgame.movevars.skydir_x, clgame.movevars.skydir_y, clgame.movevars.skydir_z );
Matrix4x4_ConcatTranslate( m, -RI.vieworg[0], -RI.vieworg[1], -RI.vieworg[2] );
Matrix4x4_ConcatTransforms( RI.modelviewMatrix, RI.worldviewMatrix, m );
GL_LoadMatrix( RI.modelviewMatrix );
tr.modelviewIdentity = false;
}
for( i = 0; i < 6; i++ )
{
if( RI.skyMins[0][i] >= RI.skyMaxs[0][i] || RI.skyMins[1][i] >= RI.skyMaxs[1][i] )
@ -437,11 +405,11 @@ R_SetupSky
*/
void R_SetupSky( const char *skyboxname )
{
string loadname;
string sidename;
int i = 0, result;
char loadname[MAX_QPATH];
char sidename[MAX_QPATH];
int i, result;
if( !skyboxname || !*skyboxname )
if( !COM_CheckString( skyboxname ))
{
R_UnloadSkybox();
return; // clear old skybox
@ -456,9 +424,9 @@ void R_SetupSky( const char *skyboxname )
result = CheckSkybox( loadname );
// to prevent infinite recursion if default skybox was missed
if( result == SKYBOX_MISSED && Q_stricmp( loadname, "gfx/env/desert" ))
if( result == SKYBOX_MISSED && Q_stricmp( loadname, DEFAULT_SKYBOX_PATH ))
{
MsgDev( D_ERROR, "missed or incomplete skybox '%s'\n", skyboxname );
Con_Reportf( S_WARN "missed or incomplete skybox '%s'\n", skyboxname );
R_SetupSky( "desert" ); // force to default
return;
}
@ -485,7 +453,7 @@ void R_SetupSky( const char *skyboxname )
return; // loaded
}
MsgDev( D_ERROR, "couldn't load skybox '%s'\n", skyboxname );
Con_DPrintf( "^2failed\n" );
R_UnloadSkybox();
}

View File

@ -1026,14 +1026,13 @@ void S_RestoreSound( const vec3_t pos, int ent, int chan, sound_t handle, float
}
// pick a channel to play on
if( chan == CHAN_STATIC )
target_chan = SND_PickStaticChannel( pos, sfx );
if( chan == CHAN_STATIC ) target_chan = SND_PickStaticChannel( pos, sfx );
else target_chan = SND_PickDynamicChannel( ent, chan, sfx, &bIgnore );
if( !target_chan )
{
if( !bIgnore )
Con_DPrintf( S_ERROR "S_RestoreSound: dropped sound \"%s%s\"\n", DEFAULT_SOUNDPATH, sfx->name );
Con_DPrintf( S_ERROR "dropped sound \"%s%s\"\n", DEFAULT_SOUNDPATH, sfx->name );
return;
}
@ -1070,8 +1069,6 @@ void S_RestoreSound( const vec3_t pos, int ent, int chan, sound_t handle, float
// prepended with a '!'. Sentence names stored in the
// sentence file do not have a leading '!'.
VOX_LoadSound( target_chan, S_SkipSoundChar( sfx->name ));
// save the sentencename for future save\restores
Q_strncpy( target_chan->name, sfx->name, sizeof( target_chan->name ));
// not a first word in sentence!

View File

@ -1107,7 +1107,7 @@ void Cmd_Unlink( int group )
count++;
}
Con_DPrintf( "unlink %i commands\n", count );
Con_Reportf( "unlink %i commands\n", count );
}
/*

View File

@ -44,6 +44,12 @@ GNU General Public License for more details.
// path to folders where placed all sounds
#define DEFAULT_SOUNDPATH "sound/"
// path store saved games
#define DEFAULT_SAVE_DIRECTORY "save/"
// fallback to this skybox
#define DEFAULT_SKYBOX_PATH "gfx/env/desert"
// playlist for startup videos
#define DEFAULT_VIDEOLIST_PATH "media/StartupVids.txt"

View File

@ -865,7 +865,7 @@ qboolean CL_DisableVisibility( void );
int CL_PointContents( const vec3_t point );
char *COM_ParseFile( char *data, char *token );
byte *COM_LoadFile( const char *filename, int usehunk, int *pLength );
qboolean CL_GetComment( const char *demoname, char *comment );
qboolean CL_GetDemoComment( const char *demoname, char *comment );
void COM_AddAppDirectoryToSearchPath( const char *pszBaseDir, const char *appName );
int COM_ExpandFilename( const char *fileName, char *nameOutBuffer, int nameOutBufferSize );
struct pmtrace_s *PM_TraceLine( float *start, float *end, int flags, int usehull, int ignore_pe );
@ -901,7 +901,7 @@ qboolean CL_IsBackgroundDemo( void );
qboolean CL_IsBackgroundMap( void );
qboolean SV_Initialized( void );
qboolean CL_LoadProgs( const char *name );
qboolean SV_GetComment( const char *savename, char *comment );
qboolean SV_GetSaveComment( const char *savename, char *comment );
qboolean SV_NewGame( const char *mapName, qboolean loadGame );
void SV_ClipPMoveToEntity( struct physent_s *pe, const vec3_t start, vec3_t mins, vec3_t maxs, const vec3_t end, struct pmtrace_s *tr );
void CL_ClipPMoveToEntity( struct physent_s *pe, const vec3_t start, vec3_t mins, vec3_t maxs, const vec3_t end, struct pmtrace_s *tr );
@ -911,7 +911,6 @@ void SV_ShutdownGame( void );
void SV_ExecLoadLevel( void );
void SV_ExecLoadGame( void );
void SV_ExecChangeLevel( void );
void SV_ClearSaveDir( void );
void SV_InitGameProgs( void );
void SV_FreeGameProgs( void );
void CL_WriteMessageHistory( void );

View File

@ -332,7 +332,7 @@ qboolean Cmd_GetSavesList( const char *s, char *completedname, int length )
string matchbuf;
int i, numsaves;
t = FS_Search( va( "save/%s*.sav", s ), true, true ); // lookup only in gamedir
t = FS_Search( va( "%s%s*.sav", DEFAULT_SAVE_DIRECTORY, s ), true, true ); // lookup only in gamedir
if( !t ) return false;
COM_FileBase( t->filenames[0], matchbuf );

View File

@ -866,7 +866,7 @@ void Cvar_Unlink( int group )
return;
count = Cvar_UnlinkVar( NULL, group );
Con_DPrintf( "unlink %i cvars\n", count );
Con_Reportf( "unlink %i cvars\n", count );
}
/*

View File

@ -268,11 +268,11 @@ qboolean Image_LoadLMP( const char *name, const byte *buffer, size_t filesize )
return false;
}
// greatest hack from valve software (particle palette)
// valve software trick (particle palette)
if( Q_stristr( name, "palette.lmp" ))
return Image_LoadPAL( name, buffer, filesize );
// greatest hack from id software (image without header)
// id software trick (image without header)
if( image.hint != IL_HINT_HL && Q_stristr( name, "conchars" ))
{
image.width = image.height = 128;

View File

@ -136,7 +136,7 @@ typedef struct
typedef struct dll_user_s
{
void *hInstance; // to avoid possible hacks
void *hInstance; // instance handle
qboolean custom_loader; // a bit who indicated loader type
qboolean encrypted; // dll is crypted (some client.dll in HL, CS etc)
char dllName[32]; // for debug messages

View File

@ -81,10 +81,6 @@ static const delta_field_t pm_fields[] =
{ PHYS_DEF( skyvec_z ) },
{ PHYS_DEF( fog_settings ) },
{ PHYS_DEF( wateralpha ) },
{ PHYS_DEF( skydir_x ) },
{ PHYS_DEF( skydir_y ) },
{ PHYS_DEF( skydir_z ) },
{ PHYS_DEF( skyangle ) },
{ NULL },
};
@ -823,10 +819,6 @@ void Delta_Init( void )
Delta_AddField( "movevars_t", "skyvec_x", DT_FLOAT|DT_SIGNED, 16, 32.0f, 1.0f ); // 0 - 1
Delta_AddField( "movevars_t", "skyvec_y", DT_FLOAT|DT_SIGNED, 16, 32.0f, 1.0f );
Delta_AddField( "movevars_t", "skyvec_z", DT_FLOAT|DT_SIGNED, 16, 32.0f, 1.0f );
Delta_AddField( "movevars_t", "skydir_x", DT_FLOAT|DT_SIGNED, 16, 32.0f, 1.0f ); // 0 - 1
Delta_AddField( "movevars_t", "skydir_y", DT_FLOAT|DT_SIGNED, 16, 32.0f, 1.0f );
Delta_AddField( "movevars_t", "skydir_z", DT_FLOAT|DT_SIGNED, 16, 32.0f, 1.0f );
Delta_AddField( "movevars_t", "skyangle", DT_ANGLE, 16, 1.0f, 1.0f ); // 0 - 360
Delta_AddField( "movevars_t", "wateralpha", DT_FLOAT|DT_SIGNED, 16, 32.0f, 1.0f );
Delta_AddField( "movevars_t", "fog_settings", DT_INTEGER, 32, 1.0f, 1.0f );

View File

@ -150,6 +150,7 @@ GNU General Public License for more details.
#define SND_LOCALSOUND (1<<9) // not paused, not looped, for internal use
#define SND_STOP_LOOPING (1<<10) // stop all looping sounds on the entity.
#define SND_FILTER_CLIENT (1<<11) // don't send sound from local player if prediction was enabled
#define SND_RESTORE_POSITION (1<<12) // passed playing position and the forced end
// decal flags
#define FDECAL_PERMANENT 0x01 // This decal should not be removed in favor of any new decals

View File

@ -139,10 +139,10 @@ typedef struct physics_interface_s
void ( *ClipPMoveToEntity)( struct physent_s *pe, const float *start, float *mins, float *maxs, const float *end, struct pmtrace_s *tr );
// called at end the frame of SV_Physics call
void ( *SV_EndFrame )( void );
// obsolete
void (*pfnReserved)( void );
// called through save\restore process
void (*pfnCreateEntitiesInTransitionList)( SAVERESTOREDATA*, int levelMask );
// called through save\restore process
void (*pfnCreateEntitiesInRestoreList)( SAVERESTOREDATA* );
void (*pfnCreateEntitiesInRestoreList)( SAVERESTOREDATA *pSaveData, int levelMask, qboolean create_world );
// allocate custom string (e.g. using user implementation of stringtable, not engine strings)
string_t (*pfnAllocString)( const char *szValue );
// make custom string (e.g. using user implementation of stringtable, not engine strings)

View File

@ -36,8 +36,7 @@ extern int SV_UPDATE_BACKUP;
// hostflags
#define SVF_SKIPLOCALHOST BIT( 0 )
#define SVF_PLAYERSONLY BIT( 1 )
#define SVF_MERGE_VISIBILITY BIT( 2 ) // we are do portal pass
#define SVF_MERGE_VISIBILITY BIT( 1 ) // we are do portal pass
// mapvalid flags
#define MAP_IS_EXIST BIT( 0 )
@ -120,8 +119,8 @@ typedef struct
char model[MAX_QPATH]; // name of static-entity model for right precache
vec3_t origin;
vec3_t angles;
byte sequence;
byte frame;
short sequence;
short frame;
short colormap;
byte skin; // can't set contents! only real skin!
byte body;
@ -197,6 +196,7 @@ typedef struct server_s
model_t *worldmodel; // pointer to world
qboolean simulating;
qboolean playersonly;
qboolean paused;
// statistics
@ -424,13 +424,19 @@ extern convar_t sv_edgefriction;
extern convar_t sv_gravity;
extern convar_t sv_stopspeed;
extern convar_t sv_maxspeed;
extern convar_t sv_wateralpha;
extern convar_t sv_wateramp;
extern convar_t sv_stepsize;
extern convar_t sv_maxvelocity;
extern convar_t sv_rollangle;
extern convar_t sv_rollspeed;
extern convar_t sv_skyname;
extern convar_t sv_skyspeed;
extern convar_t sv_skyangle;
extern convar_t sv_skycolor_r;
extern convar_t sv_skycolor_g;
extern convar_t sv_skycolor_b;
extern convar_t sv_skyvec_x;
extern convar_t sv_skyvec_y;
extern convar_t sv_skyvec_z;
extern convar_t sv_consistency;
extern convar_t sv_password;
extern convar_t sv_uploadmax;
@ -494,7 +500,7 @@ void SV_CheckVelocity( edict_t *ent );
qboolean SV_CheckWater( edict_t *ent );
qboolean SV_RunThink( edict_t *ent );
qboolean SV_PlayerRunThink( edict_t *ent, float frametime, double time );
qboolean SV_TestEntityPosition( edict_t *ent, edict_t *blocker ); // for EntityInSolid checks
qboolean SV_TestEntityPosition( edict_t *ent, edict_t *blocker );
void SV_Impact( edict_t *e1, edict_t *e2, trace_t *trace );
qboolean SV_CanPushed( edict_t *ent );
void SV_FreeOldEntities( void );
@ -594,6 +600,7 @@ edict_t* SV_FindEntityByString( edict_t *pStartEdict, const char *pszField, cons
void SV_PlaybackEventFull( int flags, const edict_t *pInvoker, word eventindex, float delay, float *origin,
float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 );
void SV_PlaybackReliableEvent( sizebuf_t *msg, word eventindex, float delay, event_args_t *args );
int SV_BuildSoundMsg( sizebuf_t *msg, edict_t *ent, int chan, const char *sample, int vol, float attn, int flags, int pitch, const vec3_t pos );
qboolean SV_BoxInPVS( const vec3_t org, const vec3_t absmin, const vec3_t absmax );
void SV_WriteEntityPatch( const char *filename );
float SV_AngleMod( float ideal, float current, float speed );
@ -607,6 +614,7 @@ sv_client_t *SV_ClientFromEdict( const edict_t *pEdict, qboolean spawned_only );
int SV_MapIsValid( const char *filename, const char *spawn_entity, const char *landmark_name );
void SV_StartSound( edict_t *ent, int chan, const char *sample, float vol, float attn, int flags, int pitch );
void SV_CreateStaticEntity( struct sizebuf_s *msg, sv_static_entity_t *ent );
edict_t *SV_FindGlobalEntity( string_t classname, string_t globalname );
void SV_SendUserReg( sizebuf_t *msg, sv_user_message_t *user );
edict_t* pfnPEntityOfEntIndex( int iEntIndex );
int pfnIndexOfEdict( const edict_t *pEdict );
@ -634,12 +642,10 @@ qboolean SV_ServerLog_f( sv_client_t *cl );
//
// sv_save.c
//
void SV_ClearSaveDir( void );
void SV_SaveGame( const char *pName );
qboolean SV_LoadGame( const char *pName );
int SV_LoadGameState( char const *level, qboolean changelevel );
int SV_LoadGameState( char const *level );
void SV_ChangeLevel( qboolean loadfromsavedgame, const char *mapname, const char *start, qboolean background );
void SV_LoadAdjacentEnts( const char *pOldLevel, const char *pLandmarkName );
const char *SV_GetLatestSave( void );
void SV_InitSaveRestore( void );
void SV_ClearGameState( void );

View File

@ -1191,7 +1191,7 @@ void SV_PutClientInServer( sv_client_t *cl )
svgame.dllFuncs.pfnParmsChangeLevel();
MSG_BeginServerCmd( &msg, svc_restore );
Q_snprintf( name, sizeof( name ), "save/%s.HL2", sv.name );
Q_snprintf( name, sizeof( name ), "%s%s.HL2", DEFAULT_SAVE_DIRECTORY, sv.name );
COM_FixSlashes( name );
MSG_WriteString( &msg, name );
MSG_WriteByte( &msg, levelData.connectionCount );

View File

@ -320,7 +320,7 @@ void SV_Load_f( void )
return;
}
Q_snprintf( path, sizeof( path ), "save/%s.sav", Cmd_Argv( 1 ));
Q_snprintf( path, sizeof( path ), "%s%s.sav", DEFAULT_SAVE_DIRECTORY, Cmd_Argv( 1 ));
SV_LoadGame( path );
}
@ -343,18 +343,18 @@ SV_Save_f
*/
void SV_Save_f( void )
{
const char *name;
switch( Cmd_Argc() )
switch( Cmd_Argc( ))
{
case 1: name = "new"; break;
case 2: name = Cmd_Argv( 1 ); break;
case 1:
SV_SaveGame( "new" );
break;
case 2:
SV_SaveGame( Cmd_Argv( 1 ));
break;
default:
Con_Printf( S_USAGE "save <savename>\n" );
return;
break;
}
SV_SaveGame( name );
}
/*
@ -383,8 +383,8 @@ void SV_DeleteSave_f( void )
}
// delete save and saveshot
FS_Delete( va( "save/%s.sav", Cmd_Argv( 1 )));
FS_Delete( va( "save/%s.bmp", Cmd_Argv( 1 )));
FS_Delete( va( "%s%s.sav", DEFAULT_SAVE_DIRECTORY, Cmd_Argv( 1 )));
FS_Delete( va( "%s%s.bmp", DEFAULT_SAVE_DIRECTORY, Cmd_Argv( 1 )));
}
/*
@ -732,11 +732,10 @@ disable plhysics but players
void SV_PlayersOnly_f( void )
{
if( !Cvar_VariableInteger( "sv_cheats" )) return;
sv.hostflags = sv.hostflags ^ SVF_PLAYERSONLY;
if( !FBitSet( sv.hostflags, SVF_PLAYERSONLY ))
SV_BroadcastPrintf( NULL, "Resume game physic\n" );
else SV_BroadcastPrintf( NULL, "Freeze game physic\n" );
sv.playersonly ^= 1;
SV_BroadcastPrintf( NULL, "%s game physic\n", sv.playersonly ? "Freeze" : "Resume" );
}
/*

View File

@ -502,7 +502,7 @@ void SV_CreateStaticEntity( sizebuf_t *msg, sv_static_entity_t *ent )
int index;
// this can happens if serialized map contain too many static entities...
if( MSG_GetNumBytesLeft( msg ) < 64 )
if( MSG_GetNumBytesLeft( msg ) < 35 )
{
sv.ignored_static_ents++;
return;
@ -512,8 +512,8 @@ void SV_CreateStaticEntity( sizebuf_t *msg, sv_static_entity_t *ent )
MSG_BeginServerCmd( msg, svc_spawnstatic );
MSG_WriteShort( msg, index );
MSG_WriteByte( msg, ent->sequence );
MSG_WriteByte( msg, ent->frame );
MSG_WriteWord( msg, ent->sequence );
MSG_WriteWord( msg, ent->frame );
MSG_WriteWord( msg, ent->colormap );
MSG_WriteByte( msg, ent->skin );
MSG_WriteByte( msg, ent->body );
@ -1520,6 +1520,27 @@ edict_t *SV_FindEntityByString( edict_t *pStartEdict, const char *pszField, cons
return svgame.edicts;
}
/*
=========
SV_FindGlobalEntity
ripped out from the hl.dll
=========
*/
edict_t *SV_FindGlobalEntity( string_t classname, string_t globalname )
{
edict_t *pent = SV_FindEntityByString( NULL, "globalname", STRING( globalname ));
if( SV_IsValidEdict( pent ))
{
// don't spam about error - game code already tell us
if( Q_strcmp( SV_ClassName( pent ), STRING( classname )))
pent = NULL;
}
return pent;
}
/*
==============
pfnGetEntityIllum
@ -1826,7 +1847,7 @@ static void pfnMakeStatic( edict_t *ent )
VectorCopy( ent->v.angles, clent->angles );
clent->sequence = ent->v.sequence;
clent->frame = ent->v.frame;
clent->frame = ent->v.frame * 128;
clent->colormap = ent->v.colormap;
clent->skin = ent->v.skin;
clent->body = ent->v.body;
@ -1946,10 +1967,11 @@ SV_BuildSoundMsg
=================
*/
static int SV_BuildSoundMsg( sizebuf_t *msg, edict_t *ent, int chan, const char *sample, int vol, float attn, int flags, int pitch, const vec3_t pos )
int SV_BuildSoundMsg( sizebuf_t *msg, edict_t *ent, int chan, const char *sample, int vol, float attn, int flags, int pitch, const vec3_t pos )
{
int entityIndex;
int sound_idx;
qboolean spawn;
if( vol < 0 || vol > 255 )
{
@ -2004,21 +2026,25 @@ static int SV_BuildSoundMsg( sizebuf_t *msg, edict_t *ent, int chan, const char
return 0;
}
spawn = FBitSet( flags, SND_RESTORE_POSITION ) ? false : true;
if( SV_IsValidEdict( ent ) && SV_IsValidEdict( ent->v.aiment ))
entityIndex = NUM_FOR_EDICT( ent->v.aiment );
else if( SV_IsValidEdict( ent ))
entityIndex = NUM_FOR_EDICT( ent );
else entityIndex = 0; // assime world
else entityIndex = 0; // assume world
if( vol != 255 ) SetBits( flags, SND_VOLUME );
if( attn != ATTN_NONE ) SetBits( flags, SND_ATTENUATION );
if( pitch != PITCH_NORM ) SetBits( flags, SND_PITCH );
// not sending (because this is out of range)
ClearBits( flags, SND_RESTORE_POSITION );
ClearBits( flags, SND_FILTER_CLIENT );
ClearBits( flags, SND_SPAWNING );
MSG_BeginServerCmd( msg, svc_sound );
if( spawn ) MSG_BeginServerCmd( msg, svc_sound );
else MSG_BeginServerCmd( msg, svc_restoresound );
MSG_WriteUBitLong( msg, flags, MAX_SND_FLAGS_BITS );
MSG_WriteUBitLong( msg, sound_idx, MAX_SOUND_BITS );
MSG_WriteUBitLong( msg, chan, MAX_SND_CHAN_BITS );
@ -2442,6 +2468,7 @@ void pfnLightStyle( int style, const char* val )
if( style < 0 ) style = 0;
if( style >= MAX_LIGHTSTYLES )
Host_Error( "SV_LightStyle: style: %i >= %d", style, MAX_LIGHTSTYLES );
if( sv.loadgame ) return; // don't let the world overwrite our restored styles
SV_SetLightStyle( style, val, 0.0f ); // set correct style
}
@ -4663,11 +4690,6 @@ void SV_SpawnEntities( const char *mapname )
Cvar_Reset( "sv_skyvec_y" );
Cvar_Reset( "sv_skyvec_z" );
Cvar_Reset( "sv_skyname" );
Cvar_Reset( "sv_skydir_x" );
Cvar_Reset( "sv_skydir_y" );
Cvar_Reset( "sv_skydir_z" );
Cvar_Reset( "sv_skyangle" );
Cvar_Reset( "sv_skyspeed" );
ent = EDICT_NUM( 0 );
if( ent->free ) SV_InitEdict( ent );

View File

@ -928,9 +928,8 @@ void SV_ExecLoadGame( void )
{
if( SV_SpawnServer( GameState->levelName, NULL, false ))
{
if( !SV_LoadGameState( GameState->levelName, false ))
if( !SV_LoadGameState( GameState->levelName ))
SV_SpawnEntities( GameState->levelName );
sv.loadgame = sv.paused = true; // pause until all clients connect
SV_ActivateServer( false );
}
}

View File

@ -92,12 +92,6 @@ CVAR_DEFINE_AUTO( sv_skyvec_x, "0", FCVAR_MOVEVARS|FCVAR_UNLOGGED, "skylight dir
CVAR_DEFINE_AUTO( sv_skyvec_y, "0", FCVAR_MOVEVARS|FCVAR_UNLOGGED, "skylight direction by y-axis" );
CVAR_DEFINE_AUTO( sv_skyvec_z, "0", FCVAR_MOVEVARS|FCVAR_UNLOGGED, "skylight direction by z-axis" );
CVAR_DEFINE_AUTO( sv_wateralpha, "1", FCVAR_MOVEVARS|FCVAR_UNLOGGED, "world surfaces water transparency factor. 1.0 - solid, 0.0 - fully transparent" );
CVAR_DEFINE_AUTO( sv_skydir_x, "0", FCVAR_MOVEVARS|FCVAR_UNLOGGED, "sky rotation factor around x-axis" );
CVAR_DEFINE_AUTO( sv_skydir_y, "0", FCVAR_MOVEVARS|FCVAR_UNLOGGED, "sky rotation factor around y-axis" );
CVAR_DEFINE_AUTO( sv_skydir_z, "1", FCVAR_MOVEVARS|FCVAR_UNLOGGED, "sky rotation factor around z-axis" ); // g-cont. add default sky rotate direction
CVAR_DEFINE_AUTO( sv_skyangle, "0", FCVAR_MOVEVARS|FCVAR_UNLOGGED, "skybox rotational angle (in degrees)" );
CVAR_DEFINE_AUTO( sv_skyspeed, "0", 0, "skybox rotational speed" );
CVAR_DEFINE_AUTO( showtriggers, "0", FCVAR_LATCH, "debug cvar shows triggers" );
CVAR_DEFINE_AUTO( sv_airmove, "1", FCVAR_SERVER, "obsolete, compatibility issues" );
CVAR_DEFINE_AUTO( sv_version, "", FCVAR_READ_ONLY, "engine version string" );
@ -199,10 +193,6 @@ void SV_UpdateMovevars( qboolean initialize )
svgame.movevars.skyvec_x = sv_skyvec_x.value;
svgame.movevars.skyvec_y = sv_skyvec_y.value;
svgame.movevars.skyvec_z = sv_skyvec_z.value;
svgame.movevars.skydir_x = sv_skydir_x.value;
svgame.movevars.skydir_y = sv_skydir_y.value;
svgame.movevars.skydir_z = sv_skydir_z.value;
svgame.movevars.skyangle = sv_skyangle.value;
svgame.movevars.wateralpha = sv_wateralpha.value;
svgame.movevars.features = host.features; // just in case. not really need
svgame.movevars.entgravity = 1.0f;
@ -528,10 +518,14 @@ qboolean SV_IsSimulating( void )
return true; // force simulating for background map
}
if( FBitSet( sv.hostflags, SVF_PLAYERSONLY ))
if( !SV_HasActivePlayers( ))
return false;
if( !SV_HasActivePlayers())
if( host.type == HOST_DEDICATED )
return true; // always active for dedicated servers
// allow to freeze everything in singleplayer
if( svs.maxclients <= 1 && sv.playersonly )
return false;
if( !sv.paused && CL_IsInGame( ))
@ -772,11 +766,6 @@ void SV_Init( void )
Cvar_RegisterVariable (&sv_skyvec_y);
Cvar_RegisterVariable (&sv_skyvec_z);
Cvar_RegisterVariable (&sv_skyname);
Cvar_RegisterVariable (&sv_skydir_x);
Cvar_RegisterVariable (&sv_skydir_y);
Cvar_RegisterVariable (&sv_skydir_z);
Cvar_RegisterVariable (&sv_skyangle);
Cvar_RegisterVariable (&sv_skyspeed);
Cvar_RegisterVariable (&sv_footsteps);
Cvar_RegisterVariable (&sv_wateralpha);
Cvar_RegisterVariable (&sv_cheats);
@ -846,11 +835,12 @@ void SV_Init( void )
// when we in developer-mode automatically turn cheats on
if( host_developer.value ) Cvar_SetValue( "sv_cheats", 1.0f );
SV_ClearSaveDir (); // delete all temporary *.hl files
MSG_Init( &net_message, "NetMessage", net_message_buffer, sizeof( net_message_buffer ));
Q_snprintf( versionString, sizeof( versionString ), "%s: %.2f,%i,%i", "Xash3D", XASH_VERSION, PROTOCOL_VERSION, Q_buildnum() );
Cvar_FullSet( "sv_version", versionString, FCVAR_READ_ONLY );
SV_ClearGameState (); // delete all temporary *.hl files
}
/*

View File

@ -1806,13 +1806,6 @@ void SV_Physics( void )
// increase framecount
sv.framecount++;
if( sv_skyspeed.value )
{
// evaluate sky rotation.
float skyAngle = sv_skyangle.value + sv_skyspeed.value * sv.frametime;
Cvar_SetValue( "sv_skyangle", anglemod( skyAngle ));
}
// decrement svgame.numEntities if the highest number entities died
for( ; EDICT_NUM( svgame.numEntities - 1 )->free; svgame.numEntities-- );
}

View File

@ -1083,7 +1083,7 @@ void SV_RunCmd( sv_client_t *cl, usercmd_t *ucmd, int random_seed )
// copy results back to client
SV_FinishPMove( svgame.pmove, cl );
if( clent->v.solid != SOLID_NOT && !FBitSet( sv.hostflags, SVF_PLAYERSONLY ))
if( clent->v.solid != SOLID_NOT && !sv.playersonly )
{
if( svgame.physFuncs.PM_PlayerTouch != NULL )
{

File diff suppressed because it is too large Load Diff

View File

@ -564,7 +564,7 @@ void SV_TouchLinks( edict_t *ent, areanode_t *node )
}
// never touch the triggers when "playersonly" is active
if( !FBitSet( sv.hostflags, SVF_PLAYERSONLY ))
if( !sv.playersonly )
{
svgame.globals->time = sv.time;
svgame.dllFuncs.pfnTouch( touch, ent );

View File

@ -43,10 +43,6 @@ struct movevars_s
int features; // engine features that shared across network
int fog_settings; // Global fog settings (packed color+density)
float wateralpha; // World water alpha 1.0 - solid 0.0 - transparent
float skydir_x; // skybox rotate direction
float skydir_y; //
float skydir_z; //
float skyangle; // skybox rotate angle
};
extern movevars_t movevars;