Prop Footsteps: Difference between revisions
Jump to navigation
Jump to search
Important:This issue has been resolved in the Half-Life 2: Episode Two codebase; if you are using its code, you should not try to implement this mod.
Note:This will not make any difference if
No edit summary |
SirYodaJedi (talk | contribs) No edit summary |
||
(6 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{important|This issue has been resolved in the Half-Life 2: Episode Two codebase; if you are using its code, you should not try to implement this mod.}} | ||
For player footsteps, Valve used <code>[[MASK_PLAYERSOLID_BRUSHONLY]]</code> rather than <code>[[MASK_PLAYERSOLID]]</code>. This difference made it so only the static world would have dynamic footsteps. The following precedure will show how to fix this issue. | For player footsteps, Valve used <code>[[MASK_PLAYERSOLID_BRUSHONLY]]</code> rather than <code>[[MASK_PLAYERSOLID]]</code>. This difference made it so only the static world would have dynamic footsteps. The following precedure will show how to fix this issue. | ||
Line 9: | Line 9: | ||
|<pre style="margin:0px 0px 0px 0px;"> // Straight down | |<pre style="margin:0px 0px 0px 0px;"> // Straight down | ||
end.z -= 64;</pre> | end.z -= 64;</pre> | ||
| | | → | ||
|<pre style="margin:0px 0px 0px 0px;"> // Straight down | |<pre style="margin:0px 0px 0px 0px;"> // Straight down | ||
start.z += 1; | start.z += 1; | ||
Line 19: | Line 19: | ||
ray.Init( start, end, GetPlayerMins(), GetPlayerMaxs() );</pre> | ray.Init( start, end, GetPlayerMins(), GetPlayerMaxs() );</pre> | ||
|- | |- | ||
|style="text-align:center;"| | |style="text-align:center;"|↓ | ||
|- | |- | ||
|<pre style="margin:0px 0px 0px 0px;"> Ray_t ray; | |<pre style="margin:0px 0px 0px 0px;"> Ray_t ray; | ||
Line 31: | Line 31: | ||
|<pre style="margin:0px 0px 0px 0px;"> UTIL_TraceRay( ray, MASK_PLAYERSOLID_BRUSHONLY, this, COLLISION_GROUP_PLAYER_MOVEMENT, &trace );</pre> | |<pre style="margin:0px 0px 0px 0px;"> UTIL_TraceRay( ray, MASK_PLAYERSOLID_BRUSHONLY, this, COLLISION_GROUP_PLAYER_MOVEMENT, &trace );</pre> | ||
|- | |- | ||
|style="text-align:center;"| | |style="text-align:center;"|↓ | ||
|- | |- | ||
|<pre style="margin:0px 0px 0px 0px;"> UTIL_TraceRay( ray, MASK_PLAYERSOLID, this, COLLISION_GROUP_PLAYER_MOVEMENT, &trace );</pre> | |<pre style="margin:0px 0px 0px 0px;"> UTIL_TraceRay( ray, MASK_PLAYERSOLID, this, COLLISION_GROUP_PLAYER_MOVEMENT, &trace );</pre> | ||
Line 40: | Line 40: | ||
|<pre style="margin:0px 0px 0px 0px;"> // Straight down | |<pre style="margin:0px 0px 0px 0px;"> // Straight down | ||
end[2] -= 64;</pre> | end[2] -= 64;</pre> | ||
| | | → | ||
|<pre style="margin:0px 0px 0px 0px;"> // Straight down | |<pre style="margin:0px 0px 0px 0px;"> // Straight down | ||
start[2] += 1; | start[2] += 1; | ||
Line 49: | Line 49: | ||
|<pre style="margin:0px 0px 0px 0px;"> TracePlayerBBox( start, end, MASK_PLAYERSOLID_BRUSHONLY, COLLISION_GROUP_PLAYER_MOVEMENT, trace );</pre> | |<pre style="margin:0px 0px 0px 0px;"> TracePlayerBBox( start, end, MASK_PLAYERSOLID_BRUSHONLY, COLLISION_GROUP_PLAYER_MOVEMENT, trace );</pre> | ||
|- | |- | ||
|style="text-align:center;"| | |style="text-align:center;"|↓ | ||
|- | |- | ||
|<pre style="margin:0px 0px 0px 0px;"> Ray_t ray; | |<pre style="margin:0px 0px 0px 0px;"> Ray_t ray; | ||
Line 70: | Line 70: | ||
===src\dlls\hl2mp_dll\hl2mp_player.cpp=== | ===src\dlls\hl2mp_dll\hl2mp_player.cpp=== | ||
====Precache==== | ====Precache==== | ||
{| | {| class=standard-table | ||
!colspan="2" style="text-align:center;"| In function <tt>CHL2MP_Player::Precache</tt> | !colspan="2" style="text-align:center;"| In function <tt>CHL2MP_Player::Precache</tt> | ||
|- | |- | ||
Line 80: | Line 80: | ||
* PlayStepSound | * PlayStepSound | ||
* PrecacheFootStepSounds | * PrecacheFootStepSounds | ||
[[Category:Programming]] | |||
[[Category: Programming]] |
Latest revision as of 20:15, 16 March 2025

For player footsteps, Valve used MASK_PLAYERSOLID_BRUSHONLY
rather than MASK_PLAYERSOLID
. This difference made it so only the static world would have dynamic footsteps. The following precedure will show how to fix this issue.

PlayStepSound
is overridden by the player entity (i.e. HL2MP).Basic Fix
src\cl_dll\c_baseplayer.cpp
Shift Trace Start Up
// Straight down end.z -= 64; |
→ | // Straight down start.z += 1; end.z -= 64; |
Smaller Trace Box Height
Ray_t ray; ray.Init( start, end, GetPlayerMins(), GetPlayerMaxs() ); |
↓ |
Ray_t ray; Vector mins = GetPlayerMins(); Vector maxs = GetPlayerMaxs(); maxs.z = mins.z + 1; ray.Init( start, end, mins, maxs); |
Change Trace Mask
UTIL_TraceRay( ray, MASK_PLAYERSOLID_BRUSHONLY, this, COLLISION_GROUP_PLAYER_MOVEMENT, &trace ); |
↓ |
UTIL_TraceRay( ray, MASK_PLAYERSOLID, this, COLLISION_GROUP_PLAYER_MOVEMENT, &trace ); |
Shift Trace Start Up
// Straight down end[2] -= 64; |
→ | // Straight down start[2] += 1; end[2] -= 64; |
Smaller Trace Box Height & Change Trace Mask
TracePlayerBBox( start, end, MASK_PLAYERSOLID_BRUSHONLY, COLLISION_GROUP_PLAYER_MOVEMENT, trace ); |
↓ |
Ray_t ray; Vector mins = player->GetPlayerMins(); Vector maxs = player->GetPlayerMaxs(); maxs.z = mins.z + 1; ray.Init( start, end, mins, maxs); UTIL_TraceRay( ray, MASK_PLAYERSOLID, player, COLLISION_GROUP_PLAYER_MOVEMENT, &trace ); |
HL2MP Override Removal
src\cl_dll\hl2mp\c_hl2mp_player.h
Prototype Removal
- PlayStepSound
- PrecacheFootStepSounds
Symbol Removal
- PlayStepSound
- PrecacheFootStepSounds
src\dlls\hl2mp_dll\hl2mp_player.cpp
Precache
In function CHL2MP_Player::Precache | |
---|---|
Remove | PrecacheFootStepSounds(); |
src\dlls\hl2mp_dll\hl2mp_player.h
Prototype Removal
- PlayStepSound
- PrecacheFootStepSounds