Nolan-O / Oryx-AC

Anticheat for CS:S bhop

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

The Oryx bhop anticheat for CSS.

This was written for SourceMod v1.7. Few comments are provided because I never planned on releasing the code, however there are some comments. The bulk of everything outside of oryx.sp is just pure game-mechanic-related logic anyway, so it just works because that's the way things work.

Users please note that this project is no longer supported.

Building

Depends on smlib.
All you need to do is make sure you've specified your timer in oryx.inc by defining either notimer or bTimes. There is also a fork by shavit for his timer. It will not be merged into this repository due to it also being a complete rewrite. Build each file manually with the sourcemod compiler, like usual.

Documentation

A lot of this info is found in oryx.inc too.

Exported command Action Admin only? From:
sm_otest Enables the TRIGGER_TEST detection level yes oryx
sm_lock <player> Disables movement for a player yes oryx
scroll_stats <player> Print the scroll stat buffer for a given player no oryx-scroll
strafe_stats <player> Print the strafe stat buffer for a given player no oryx-strafe
config_streak <player> Print the config stat buffer for a given player yes oryx-configcheck
Trigger type Usage
TRIGGER_LOW Like an early warning system. Oryx has probably not found a cheater, but you should keep an eye out.
TRIGGER_MEDIUM Also early warning.
TRIGGER_HIGH Oryx is pretty sure someone is cheating, and this will kick them.
TRIGGER_HIGH_NOKICK Just what it sounds like. High alert, but no automated consequences.
TRIGGER_DEFINITIVE Used only by oryx-sanity right now. This should be used on non-stat-based detections.
TRIGGER_TEST Allows you to develop new detections on live servers with minimal side effects.
Detection type Meaning From
Acute TR formatter The player's turn rate has been made perfect oryx-strafe
+left/right bypasser +left/right bitflags have been stripped from the client's buttons variable oryx-strafe
Prestrafe tool Player is using a static turnrate to get 289 walk speed. Same as +left/right bypassing, but for a specific value on the ground oryx-strafe
Average strafe too close to 0 The average strafe offset is suspiciously near 0 oryx-strafe
Too many perfect strafes The average strafe offset is not too close to 0, but there is a suspiciously high frequency of 0s oryx-strafe
Movement config Player exhibits behavior that is humanly possible, but movement configs would enforce it oryx-configcheck
Unsynchronised movement Wish velocity does not align with with the player's buttons variable oryx-sanity
Invalid wish velocity Wish velocity can only be multiples of 100, bound to 400 and -400 oryx-sanity
Script on scroll Too many perfect jumps indicates a potential jump script usage oryx-scroll
Hyperscroll Too many jumps in the air prior to jumping indicates potential +jump spamming oryx-scroll

Docs on natives are found in oryx.inc, using the sm self-documenting style.

The plugins have only been tested with bTimes ~v1.8.x (as found here)
If someone else is able to test with 2.0, please edit this readme and submit a pull request.

Useful Definitions

  • Key-transition: the changing of direction with keys (i.e. changing from +moveleft to +moveright)
  • Angle-transition: the changing of direction in a player's camera along the x axis
  • Strafe offset: the number of ticks that pass between a key-transition and angle-transition
  • Wish velocity: Also called wishvel, this value is used for calculating movement direction, not the player buttons variable
  • Movement config: Key bindings that prohibit the player from pressing opposing movement keys (i.e. +moveleft and +moveright can't be held at the same time
  • TR: Turn-rate -- the rate of rotation of the client's camera along the x axis

About

Anticheat for CS:S bhop

License:GNU General Public License v3.0


Languages

Language:SourcePawn 91.8%Language:C++ 8.2%