SDK Known Issues List: Difference between revisions
Bloodykenny (talk | contribs) No edit summary |
Bloodykenny (talk | contribs) No edit summary |
||
Line 14: | Line 14: | ||
Server: Some projectile weapons set to do 0 damage. | Server: Some projectile weapons set to do 0 damage. | ||
'''Workaround:''' Need to edit their source files and set a damage. | '''Workaround:''' Need to edit their source files and set a damage. | ||
---- | ---- | ||
Line 39: | Line 37: | ||
util.cpp (531) : Assertion Failed: !"UTIL_GetLocalPlayer" | util.cpp (531) : Assertion Failed: !"UTIL_GetLocalPlayer" | ||
'''Workaround:''' | '''Workaround:''' | ||
<pre> | |||
Index: mod/src/dlls/player.h | |||
=================================================================== | |||
--- mod/src/dlls/player.h 2005/02/19 22:20:29 1.2 | |||
+++ mod/src/dlls/player.h 2005/02/24 00:35:30 | |||
@@ -459,6 +459,7 @@ | |||
// mass/size limit set to zero for none | |||
static bool CanPickupObject( CBaseEntity *pObject, float massLimit, float sizeLimit ); | |||
virtual void PickupObject( CBaseEntity *pObject, bool bLimitMassAndSize = true ) {} | |||
+ virtual bool IsHoldingEntity( CBaseEntity *pEnt ); | |||
virtual void ForceDropOfCarriedPhysObjects( CBaseEntity *pOnlyIfHoldindThis = NULL ) {} | |||
virtual float GetHeldObjectMass( IPhysicsObject *pHeldObject ); | |||
Index: mod/src/dlls/player.cpp | |||
=================================================================== | |||
--- mod/src/dlls/player.cpp 2005/02/21 00:05:42 1.3 | |||
+++ mod/src/dlls/player.cpp 2005/02/24 00:35:33 | |||
@@ -7447,3 +7447,7 @@ | |||
return cmd; | |||
} | |||
+bool CBasePlayer::IsHoldingEntity( CBaseEntity *pEnt ) | |||
+{ | |||
+ return PlayerPickupControllerIsHoldingEntity( m_hUseEntity, pEnt ); | |||
+} | |||
Index: mod/src/dlls/physics_impact_damage.cpp | |||
=================================================================== | |||
--- mod/src/dlls/physics_impact_damage.cpp 2005/02/18 04:45:50 1.1.1.1 | |||
+++ mod/src/dlls/physics_impact_damage.cpp 2005/02/24 00:42:24 | |||
@@ -417,12 +417,22 @@ | |||
else if ( pEvent->pObjects[index>GetGameFlags() & FVPHYSICS_PLAYER_HELD ) | |||
{ | |||
// if the player is holding the object, use it's real mass (player holding reduced the mass) | |||
- CBasePlayer *pPlayer = UTIL_GetLocalPlayer(); | |||
- if ( pPlayer ) | |||
- { | |||
+ CBasePlayer* pPlayer = NULL; | |||
+ {for (int i = 1; i <= gpGlobals->maxClients; i++) { | |||
+ CBasePlayer *temp_player = UTIL_PlayerByIndex(i); | |||
+ if (temp_player | |||
+ && temp_player->edict() | |||
+ && temp_player->IsHoldingEntity(pEvent->pEntities[index]) | |||
+ ) { | |||
+ pPlayer = temp_player; | |||
+ break; | |||
+ } | |||
+ }} | |||
+ Assert(pPlayer && "object with FVPHYSICS_PLAYER_HELD but no player holding it"); | |||
+ if (pPlayer) { | |||
float mass = pPlayer->GetHeldObjectMass( pEvent->pObjects[index] ); | |||
- if ( mass > 0 ) | |||
- { | |||
+ Assert((mass > 0) && "player was holding object so mass should be non-zero"); | |||
+ if (mass > 0) { | |||
invMass = 1.0f / mass; | |||
} | |||
} | |||
</pre> | |||
---- | ---- | ||
Revision as of 10:37, 14 July 2005
This page contains the list of current known issues in the SDK
Server: weapon_citizensuitcase Assert on startup
Workaround: Install copy of the SP SDK, then copy the scripts/ directory over
Server: Some bullet weapons set to do 0 damage.
Workaround: Need to edit their AddAmmoType which are strangely set to 0 for some reason.
Server: Some projectile weapons set to do 0 damage. Workaround: Need to edit their source files and set a damage.
Client: --- Missing Vgui material vgui/steam/games/icon_cz
Workaround: Manually extract files from GCF and copy them into your mod directory? Haven't tried this. There must be a better way.
Server: The crossbow causes an assertion failure.
Workaround: Comment out ai_activity.cpp line 53. This doesn't appear to be something that can be fixed in code?
Server? Client?: RL explosion invisible, per http://www.chatbear.com/board.plm?a=viewthread&t=970,1107153392,30132&id=786504&b=4991&v=flatold
Workaround: No known workaround.
util.cpp (531) : Assertion Failed: !"UTIL_GetLocalPlayer"
Workaround:
Index: mod/src/dlls/player.h =================================================================== --- mod/src/dlls/player.h 2005/02/19 22:20:29 1.2 +++ mod/src/dlls/player.h 2005/02/24 00:35:30 @@ -459,6 +459,7 @@ // mass/size limit set to zero for none static bool CanPickupObject( CBaseEntity *pObject, float massLimit, float sizeLimit ); virtual void PickupObject( CBaseEntity *pObject, bool bLimitMassAndSize = true ) {} + virtual bool IsHoldingEntity( CBaseEntity *pEnt ); virtual void ForceDropOfCarriedPhysObjects( CBaseEntity *pOnlyIfHoldindThis = NULL ) {} virtual float GetHeldObjectMass( IPhysicsObject *pHeldObject ); Index: mod/src/dlls/player.cpp =================================================================== --- mod/src/dlls/player.cpp 2005/02/21 00:05:42 1.3 +++ mod/src/dlls/player.cpp 2005/02/24 00:35:33 @@ -7447,3 +7447,7 @@ return cmd; } +bool CBasePlayer::IsHoldingEntity( CBaseEntity *pEnt ) +{ + return PlayerPickupControllerIsHoldingEntity( m_hUseEntity, pEnt ); +} Index: mod/src/dlls/physics_impact_damage.cpp =================================================================== --- mod/src/dlls/physics_impact_damage.cpp 2005/02/18 04:45:50 1.1.1.1 +++ mod/src/dlls/physics_impact_damage.cpp 2005/02/24 00:42:24 @@ -417,12 +417,22 @@ else if ( pEvent->pObjects[index>GetGameFlags() & FVPHYSICS_PLAYER_HELD ) { // if the player is holding the object, use it's real mass (player holding reduced the mass) - CBasePlayer *pPlayer = UTIL_GetLocalPlayer(); - if ( pPlayer ) - { + CBasePlayer* pPlayer = NULL; + {for (int i = 1; i <= gpGlobals->maxClients; i++) { + CBasePlayer *temp_player = UTIL_PlayerByIndex(i); + if (temp_player + && temp_player->edict() + && temp_player->IsHoldingEntity(pEvent->pEntities[index]) + ) { + pPlayer = temp_player; + break; + } + }} + Assert(pPlayer && "object with FVPHYSICS_PLAYER_HELD but no player holding it"); + if (pPlayer) { float mass = pPlayer->GetHeldObjectMass( pEvent->pObjects[index] ); - if ( mass > 0 ) - { + Assert((mass > 0) && "player was holding object so mass should be non-zero"); + if (mass > 0) { invMass = 1.0f / mass; } }
Assert !"UTIL_GetLocalPlayer" when using combine ball
Workaround: See the patch below.
CreateEvent: event 'break_prop' not registered
Significance and fix both unknown
HL2.exe mysteriously segfaults if you forget to put the client.dll and server.dll in your mod's bin directory
Workaround: Don't do that.
If you leave a server online on a certain map for roughly 12-24 hours straight, it begins using 100% CPU. Possibly a core srcds.exe bug, not an SDK bug?
I suppose there could be some array or something inside the HL2 core that grows over time, and must be iterated over each frame?
I haven't run the long-running map scenario in a long time. The alpha server for my mod is full most of the day and players frag out so the map is always changing.
That said, I seem to recall that the move from the usual 5% cpu to 100% cpu was fairly drastic and immediate. I never saw an intermediate stage where the server used 25% cpu or 50% cpu etc. I would expect to see those intermediate levels if it was a memory leak.
Workaround: Ensure you have mp_timelimit set to something nonzero, but less than 12 hours or so.
Negative entitygroundcontact crash
Workaround: See patch below
Doing a 360 quickly with the Stun Baton as your active weapon causes the screen to flash white
Fix unknown