A SourceMod API focused on player movement in the form of a function stock library and an optional plugin with forwards and natives. MovementAPI officially supports CS:GO servers only.
- SourceMod ^1.11
- (Optional*) BSPPeek
- Download and extract
movementapi-X.X.X.zipfrom the latest GitHub release tocsgo/in your server directory.
- Takeoff - Becoming airborne, including jumping, falling, getting off a ladder and leaving noclip.
- Landing - Leaving the air, including landing on the ground, grabbing a ladder, leaving noclip while on ground and entering noclip.
- Perfect Bunnyhop (Perf) - When the player has jumped in the tick after landing and keeps their speed.
- Duckbug/Crouchbug - When the player successfully lands due to uncrouching from mid air and not by falling down. This causes no stamina loss or fall damage upon landing.
- Jumpbug - This is achieved by duckbugging and jumping at the same time. The player is never seen as 'on ground' when bunnyhopping from a tick by tick perspective. A jumpbug inherits the same behavior as a duckbug/crouchbug, along with its effects such as maintaining speed due to no stamina loss.
- Edgebug - When the player hits the very edge of a block and slides off it within the same tick, before the ground check runs. The flat contact zeroes their vertical velocity, but they start and end the tick airborne, keeping horizontal speed and taking no fall damage.
- Pixelsurf - When the player stays suspended on the seam between two flush wall brushes. The engine keeps clipping them against the invisible top plane of the lower brush each tick, letting them hang on the wall and slide along it with no floor beneath. Requires being within 0.03125 units above the seam while pressed against the wall.
- Texturebug - When the player falls past the open underside of an overhanging brush while hugging its wall. The engine briefly clips them against the brush's top plane instead of the side they actually crossed, zeroing vertical velocity mid-air for that tick.
- Distbug - Landing behavior varies depending on whether the player lands close to the edge of a block or not:
- If the player lands close to the edge of a block, this causes the jump duration to be one tick longer and the player can "slide" on the ground during the landing tick, using the position post-tick as landing position becomes inaccurate.
- On the other hand, if the player does not land close to the edge, the player will be considered on the ground one tick earlier, using this position as landing position is not accurate as the player has yet to be fully on the ground.
-
In scenario 1, GetNobugLandingOrigin calculates the correct landing position of the player before the sliding effect takes effect.
-
In scenario 2, GetNobugLandingOrigin attempts to extrapolate the player's fully on ground position to make landing positions consistent across scenarios.