Skip to content

Commit 1304889

Browse files
committed
server implement
1 parent 3c060f7 commit 1304889

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+2173
-311
lines changed

src/game/server/EntityDissolve.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,11 @@ CEntityDissolve *CEntityDissolve::Create( CBaseEntity *pTarget, const char *pMat
232232
// Necessary to cause it to do the appropriate death cleanup
233233
if ( pTarget->m_lifeState == LIFE_ALIVE )
234234
{
235-
CBasePlayer *pPlayer = UTIL_PlayerByIndex( 1 );
235+
#ifdef BDSBASE
236+
CBasePlayer* pPlayer = UTIL_GetLocalPlayer();
237+
#else
238+
CBasePlayer* pPlayer = UTIL_PlayerByIndex(1);
239+
#endif //BDSBASE
236240
CTakeDamageInfo ragdollInfo( pPlayer, pPlayer, 10000.0, DMG_SHOCK | DMG_REMOVENORAGDOLL | DMG_PREVENT_PHYSICS_FORCE );
237241
pTarget->TakeDamage( ragdollInfo );
238242
}
@@ -347,7 +351,11 @@ void CEntityDissolve::DissolveThink( void )
347351
// Necessary to cause it to do the appropriate death cleanup
348352
// Yeah, the player may have nothing to do with it, but
349353
// passing NULL to TakeDamage causes bad things to happen
350-
CBasePlayer *pPlayer = UTIL_PlayerByIndex( 1 );
354+
#ifdef BDSBASE
355+
CBasePlayer* pPlayer = UTIL_GetNearestPlayer(GetAbsOrigin());
356+
#else
357+
CBasePlayer* pPlayer = UTIL_PlayerByIndex(1);
358+
#endif //BDSBASE
351359
int iNoPhysicsDamage = g_pGameRules->Damage_GetNoPhysicsForce();
352360
CTakeDamageInfo info( pPlayer, pPlayer, 10000.0, DMG_GENERIC | DMG_REMOVENORAGDOLL | iNoPhysicsDamage );
353361
pTarget->TakeDamage( info );

src/game/server/EnvHudHint.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,11 @@ void CEnvHudHint::InputShowHudHint( inputdata_t &inputdata )
8989
}
9090
else
9191
{
92+
#ifdef BDSBASE
93+
pPlayer = UTIL_GetNearestPlayer(GetAbsOrigin());
94+
#else
9295
pPlayer = UTIL_GetLocalPlayer();
96+
#endif //BDSBASE
9397
}
9498

9599
if ( !pPlayer || !pPlayer->IsNetClient() )
@@ -126,7 +130,11 @@ void CEnvHudHint::InputHideHudHint( inputdata_t &inputdata )
126130
}
127131
else
128132
{
133+
#ifdef BDSBASE
134+
pPlayer = UTIL_GetNearestPlayer(GetAbsOrigin());
135+
#else
129136
pPlayer = UTIL_GetLocalPlayer();
137+
#endif //BDSBASE
130138
}
131139

132140
if ( !pPlayer || !pPlayer->IsNetClient() )

src/game/server/EnvMessage.cpp

Lines changed: 51 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,11 @@ void CMessage::InputShowMessage( inputdata_t &inputdata )
105105
}
106106
else
107107
{
108+
#ifdef BDSBASE
109+
pPlayer = UTIL_GetLocalPlayer(); // just show it to the host, if there is one
110+
#else
108111
pPlayer = (gpGlobals->maxClients > 1) ? NULL : UTIL_GetLocalPlayer();
112+
#endif //BDSBASE
109113
}
110114

111115
if ( pPlayer && pPlayer->IsPlayer() )
@@ -219,12 +223,19 @@ void CCredits::RollOutroCredits()
219223
{
220224
sv_unlockedchapters.SetValue( "15" );
221225

222-
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
223-
224-
CSingleUserRecipientFilter user( pPlayer );
226+
#ifdef BDSBASE
227+
CRecipientFilter filter;
228+
filter.AddAllPlayers();
229+
filter.MakeReliable();
230+
UserMessageBegin(filter, "CreditsMsg");
231+
#else
232+
CBasePlayer* pPlayer = UTIL_GetLocalPlayer();
233+
234+
CSingleUserRecipientFilter user(pPlayer);
225235
user.MakeReliable();
226236

227-
UserMessageBegin( user, "CreditsMsg" );
237+
UserMessageBegin(user, "CreditsMsg");
238+
#endif //BDSBASE
228239
WRITE_BYTE( 3 );
229240
MessageEnd();
230241
}
@@ -241,20 +252,38 @@ void CCredits::InputRollOutroCredits( inputdata_t &inputdata )
241252

242253
void CCredits::InputShowLogo( inputdata_t &inputdata )
243254
{
244-
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
245-
246-
CSingleUserRecipientFilter user( pPlayer );
255+
#ifdef BDSBASE
256+
CRecipientFilter filter;
257+
filter.AddAllPlayers();
258+
filter.MakeReliable();
259+
260+
// Modification. Set to how old patched AI SDK had code.
261+
//CSingleUserRecipientFilter user( pPlayer );
262+
//user.MakeReliable();
263+
#else
264+
CBasePlayer* pPlayer = UTIL_GetLocalPlayer();
265+
266+
CSingleUserRecipientFilter user(pPlayer);
247267
user.MakeReliable();
268+
#endif //BDSBASE
248269

249270
if ( m_flLogoLength )
250271
{
251-
UserMessageBegin( user, "LogoTimeMsg" );
272+
#ifdef BDSBASE
273+
UserMessageBegin(filter, "LogoTimeMsg");
274+
#else
275+
UserMessageBegin(user, "LogoTimeMsg");
276+
#endif //BDSBASE
252277
WRITE_FLOAT( m_flLogoLength );
253278
MessageEnd();
254279
}
255280
else
256281
{
257-
UserMessageBegin( user, "CreditsMsg" );
282+
#ifdef BDSBASE
283+
UserMessageBegin(filter, "CreditsMsg");
284+
#else
285+
UserMessageBegin(user, "CreditsMsg");
286+
#endif //BDSBASE
258287
WRITE_BYTE( 1 );
259288
MessageEnd();
260289
}
@@ -267,12 +296,21 @@ void CCredits::InputSetLogoLength( inputdata_t &inputdata )
267296

268297
void CCredits::InputRollCredits( inputdata_t &inputdata )
269298
{
270-
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
299+
#ifdef BDSBASE
300+
CRecipientFilter filter;
301+
filter.AddAllPlayers();
302+
filter.MakeReliable();
303+
304+
UserMessageBegin(filter, "CreditsMsg");
305+
WRITE_BYTE(2); // Modification: Added from old patched AI SDK.
306+
#else
307+
CBasePlayer* pPlayer = UTIL_GetLocalPlayer();
271308

272-
CSingleUserRecipientFilter user( pPlayer );
309+
CSingleUserRecipientFilter user(pPlayer);
273310
user.MakeReliable();
274311

275-
UserMessageBegin( user, "CreditsMsg" );
276-
WRITE_BYTE( 2 );
312+
UserMessageBegin(user, "CreditsMsg");
313+
WRITE_BYTE(2);
314+
#endif //BDSBASE
277315
MessageEnd();
278316
}

src/game/server/basecombatcharacter.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1932,7 +1932,11 @@ void CBaseCombatCharacter::Weapon_Drop( CBaseCombatWeapon *pWeapon, const Vector
19321932
{
19331933
// Drop enough ammo to kill 2 of me.
19341934
// Figure out how much damage one piece of this type of ammo does to this type of enemy.
1935-
float flAmmoDamage = g_pGameRules->GetAmmoDamage( UTIL_PlayerByIndex(1), this, pWeapon->GetPrimaryAmmoType() );
1935+
#ifdef BDSBASE
1936+
float flAmmoDamage = g_pGameRules->GetAmmoDamage(UTIL_GetNearestPlayer(GetAbsOrigin()), this, pWeapon->GetPrimaryAmmoType());
1937+
#else
1938+
float flAmmoDamage = g_pGameRules->GetAmmoDamage(UTIL_PlayerByIndex(1), this, pWeapon->GetPrimaryAmmoType());
1939+
#endif //BDSBASE
19361940
pWeapon->m_iClip1 = (GetMaxHealth() / flAmmoDamage) * 2;
19371941
}
19381942
}
@@ -3315,7 +3319,11 @@ CBaseEntity *CBaseCombatCharacter::FindMissTarget( void )
33153319
CBaseEntity *pMissCandidates[ MAX_MISS_CANDIDATES ];
33163320
int numMissCandidates = 0;
33173321

3318-
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
3322+
#ifdef BDSBASE
3323+
CBasePlayer* pPlayer = UTIL_GetNearestVisiblePlayer(this);
3324+
#else
3325+
CBasePlayer* pPlayer = UTIL_GetLocalPlayer();
3326+
#endif //BDSBASE
33193327
CBaseEntity *pEnts[256];
33203328
Vector radius( 100, 100, 100);
33213329
Vector vecSource = GetAbsOrigin();

src/game/server/baseentity.cpp

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,12 +1033,20 @@ void CBaseEntity::DrawDebugGeometryOverlays(void)
10331033
NDebugOverlay::EntityBounds(this, 255, 255, 255, 0, 0 );
10341034
}
10351035
}
1036-
if ( m_debugOverlays & OVERLAY_AUTOAIM_BIT && (GetFlags()&FL_AIMTARGET) && AI_GetSinglePlayer() != NULL )
1036+
1037+
#ifdef BDSBASE
1038+
CBasePlayer* pPlayer = UTIL_GetNearestPlayer(GetAbsOrigin());
1039+
if (m_debugOverlays & OVERLAY_AUTOAIM_BIT && (GetFlags() & FL_AIMTARGET) && pPlayer != NULL)
1040+
#else
1041+
if (m_debugOverlays & OVERLAY_AUTOAIM_BIT && (GetFlags() & FL_AIMTARGET) && AI_GetSinglePlayer() != NULL)
1042+
#endif //BDSBASE
10371043
{
10381044
// Crude, but it gets the point across.
10391045
Vector vecCenter = GetAutoAimCenter();
10401046
Vector vecRight, vecUp, vecDiag;
1041-
CBasePlayer *pPlayer = AI_GetSinglePlayer();
1047+
#ifndef BDSBASE
1048+
CBasePlayer* pPlayer = AI_GetSinglePlayer();
1049+
#endif //BDSBASE
10421050
float radius = GetAutoAimRadius();
10431051

10441052
QAngle angles = pPlayer->EyeAngles();
@@ -1841,25 +1849,16 @@ int CBaseEntity::VPhysicsTakeDamage( const CTakeDamageInfo &info )
18411849
{
18421850
// if the player is holding the object, use it's real mass (player holding reduced the mass)
18431851
#ifdef BDSBASE
1852+
// See which MP player is holding the physics object and then use that player to get the real mass of the object.
1853+
// This is ugly but better than having linkage between an object and its "holding" player.
18441854
CBasePlayer* pPlayer = NULL;
1845-
1846-
if (gpGlobals->maxClients == 1)
1847-
{
1848-
pPlayer = UTIL_GetLocalPlayer();
1849-
}
1850-
else
1855+
for (int i = 1; i <= gpGlobals->maxClients; i++)
18511856
{
1852-
// See which MP player is holding the physics object and then use that player to get the real mass of the object.
1853-
// This is ugly but better than having linkage between an object and its "holding" player.
1854-
for (int i = 1; i <= gpGlobals->maxClients; i++)
1857+
CBasePlayer* tempPlayer = UTIL_PlayerByIndex(i);
1858+
if (tempPlayer && (tempPlayer->GetHeldObject() == this))
18551859
{
1856-
CBasePlayer* tempPlayer = UTIL_PlayerByIndex(i);
1857-
1858-
if (tempPlayer && (tempPlayer->GetHeldObject() == this))
1859-
{
1860-
pPlayer = tempPlayer;
1861-
break;
1862-
}
1860+
pPlayer = tempPlayer;
1861+
break;
18631862
}
18641863
}
18651864
#else
@@ -7926,7 +7925,11 @@ void CBaseEntity::DispatchResponse( const char *conceptName )
79267925
ModifyOrAppendCriteria( set );
79277926

79287927
// Append local player criteria to set,too
7929-
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
7928+
#ifdef BDSBASE
7929+
CBasePlayer* pPlayer = UTIL_GetNearestPlayer(GetAbsOrigin());
7930+
#else
7931+
CBasePlayer* pPlayer = UTIL_GetLocalPlayer();
7932+
#endif //BDSBASE
79307933
if( pPlayer )
79317934
pPlayer->ModifyOrAppendPlayerCriteria( set );
79327935

@@ -7985,7 +7988,11 @@ void CBaseEntity::DumpResponseCriteria( void )
79857988
ModifyOrAppendCriteria( set );
79867989

79877990
// Append local player criteria to set,too
7988-
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
7991+
#ifdef BDSBASE
7992+
CBasePlayer* pPlayer = UTIL_GetNearestPlayer(GetAbsOrigin());
7993+
#else
7994+
CBasePlayer* pPlayer = UTIL_GetLocalPlayer();
7995+
#endif //BDSBASE
79897996
if ( pPlayer )
79907997
{
79917998
pPlayer->ModifyOrAppendPlayerCriteria( set );
@@ -8470,7 +8477,11 @@ bool CBaseEntity::SUB_AllowedToFade( void )
84708477

84718478
// on Xbox, allow these to fade out
84728479
#ifndef _XBOX
8473-
CBasePlayer *pPlayer = ( AI_IsSinglePlayer() ) ? UTIL_GetLocalPlayer() : NULL;
8480+
#ifdef BDSBASE
8481+
CBasePlayer* pPlayer = UTIL_GetNearestVisiblePlayer(this);
8482+
#else
8483+
CBasePlayer* pPlayer = (AI_IsSinglePlayer()) ? UTIL_GetLocalPlayer() : NULL;
8484+
#endif //BDSBASE
84748485

84758486
if ( pPlayer && pPlayer->FInViewCone( this ) )
84768487
return false;

src/game/server/baseflex.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,7 +1241,11 @@ bool CBaseFlex::ProcessFlexAnimationSceneEvent( CSceneEventInfo *info, CChoreoSc
12411241
// only check occasionally
12421242
else if (info->m_flNext <= gpGlobals->curtime)
12431243
{
1244-
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
1244+
#ifdef BDSBASE
1245+
CBasePlayer* pPlayer = UTIL_GetNearestVisiblePlayer(this);
1246+
#else
1247+
CBasePlayer* pPlayer = UTIL_GetLocalPlayer();
1248+
#endif //BDSBASE
12451249

12461250
// if not in view, disable
12471251
info->m_bHasArrived = (pPlayer && !pPlayer->FInViewCone( this ) );
@@ -2757,7 +2761,11 @@ void CFlexCycler::Think( void )
27572761
Vector forward, right, up;
27582762
GetVectors( &forward, &right, &up );
27592763

2760-
CBaseEntity *pPlayer = (CBaseEntity *)UTIL_GetLocalPlayer();
2764+
#ifdef BDSBASE
2765+
CBaseEntity* pPlayer = (CBaseEntity*)UTIL_GetNearestVisiblePlayer(this);
2766+
#else
2767+
CBaseEntity* pPlayer = (CBaseEntity*)UTIL_GetLocalPlayer();
2768+
#endif //BDSBASE
27612769
if (pPlayer)
27622770
{
27632771
if (pPlayer->GetSmoothedVelocity().Length() != 0 && DotProduct( forward, pPlayer->EyePosition() - EyePosition()) > 0.5)

src/game/server/colorcorrectionvolume.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,11 @@ void CColorCorrectionVolume::Spawn( void )
162162

163163
bool CColorCorrectionVolume::PassesTriggerFilters( CBaseEntity *pEntity )
164164
{
165-
if( pEntity == UTIL_GetLocalPlayer() )
165+
#ifdef BDSBASE
166+
if (pEntity->IsPlayer())
167+
#else
168+
if (pEntity == UTIL_GetLocalPlayer())
169+
#endif //BDSBASE
166170
return true;
167171

168172
return false;

src/game/server/effects.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,7 +1130,11 @@ Vector CBlood::BloodPosition( CBaseEntity *pActivator )
11301130
}
11311131
else
11321132
{
1133+
#ifdef BDSBASE
1134+
player = UTIL_GetNearestVisiblePlayer(this);
1135+
#else
11331136
player = UTIL_GetLocalPlayer();
1137+
#endif //BDSBASE
11341138
}
11351139

11361140
if ( player )

src/game/server/entitylist.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@ CBaseEntity *CGlobalEntityList::FindEntityProcedural( const char *szName, CBaseE
533533
}
534534
else
535535
{
536-
return (CBaseEntity*)UTIL_PlayerByIndex(1);
536+
return (CBaseEntity*)UTIL_GetLocalPlayer();
537537
}
538538
#else
539539
return (CBaseEntity*)UTIL_PlayerByIndex(1);
@@ -553,7 +553,7 @@ CBaseEntity *CGlobalEntityList::FindEntityProcedural( const char *szName, CBaseE
553553
else
554554
{
555555
// FIXME: error condition?
556-
return (CBaseEntity *)UTIL_PlayerByIndex( 1 );
556+
return (CBaseEntity*)UTIL_GetLocalPlayer();
557557
}
558558

559559
}
@@ -567,7 +567,11 @@ CBaseEntity *CGlobalEntityList::FindEntityProcedural( const char *szName, CBaseE
567567
}
568568
else if ( FStrEq( pName, "picker" ) )
569569
{
570-
return FindPickerEntity( UTIL_PlayerByIndex(1) );
570+
#ifdef BDSBASE
571+
return FindPickerEntity(UTIL_GetLocalPlayer());
572+
#else
573+
return FindPickerEntity(UTIL_PlayerByIndex(1));
574+
#endif //BDSBASE
571575
}
572576
else if ( FStrEq( pName, "self" ) )
573577
{

src/game/server/env_zoom.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,16 @@ float GetZoomOwnerDesiredFOV( CBaseEntity *pZoomOwner )
7474
//-----------------------------------------------------------------------------
7575
void CEnvZoom::InputZoom( inputdata_t &inputdata )
7676
{
77-
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
77+
#ifdef BDSBASE
78+
CBasePlayer* pPlayer;
79+
80+
if (inputdata.pActivator && inputdata.pActivator->IsPlayer())
81+
pPlayer = ToBasePlayer(inputdata.pActivator);
82+
else
83+
pPlayer = UTIL_GetNearestPlayer(GetAbsOrigin());
84+
#else
85+
CBasePlayer* pPlayer = UTIL_GetLocalPlayer();
86+
#endif //BDSBASE
7887

7988
if ( pPlayer )
8089
{
@@ -105,7 +114,15 @@ void CEnvZoom::InputZoom( inputdata_t &inputdata )
105114
//-----------------------------------------------------------------------------
106115
void CEnvZoom::InputUnZoom( inputdata_t &inputdata )
107116
{
108-
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
117+
#ifdef BDSBASE
118+
CBasePlayer* pPlayer;
119+
if (inputdata.pActivator && inputdata.pActivator->IsPlayer())
120+
pPlayer = ToBasePlayer(inputdata.pActivator);
121+
else
122+
pPlayer = UTIL_GetNearestPlayer(GetAbsOrigin());
123+
#else
124+
CBasePlayer* pPlayer = UTIL_GetLocalPlayer();
125+
#endif //BDSBASE
109126

110127
if ( pPlayer )
111128
{

0 commit comments

Comments
 (0)