Raised This Month: $ Target: $400

[CS:S/CS:GO/TF2] Oryx bunnyhop anti-cheat (v1.2 10/March/2018)

Post New Thread Reply   
Thread Tools Display Modes
AlliedModders Donor
Join Date: Dec 2011
Location: Israel
Plugin ID:
Plugin Version:
Plugin Category:
Plugin Game:
Plugin Dependencies:
Servers with this Plugin:
Plugin Description:
The Oryx bunnyhop anticheat for CS:S, CS:GO, and TF2.
Old 03-10-2018 , 15:38   [CS:S/CS:GO/TF2] Oryx bunnyhop anti-cheat (v1.2 10/March/2018)
Reply With Quote #1

The Oryx bunnyhop anticheat for CS:S, CS:GO, and TF2.

Early warning: As it goes for every anticheat, there will be false positives. You need to decide if you want to ban someone and if you're sure they use cheats.

This thread is a manual conversion from the GitHub markdown to BBCode.

GitHub link: https://github.com/shavitush/Oryx-AC
Latest download: https://github.com/shavitush/Oryx-AC/releases/latest
All downloads + changelogs: https://github.com/shavitush/Oryx-AC/releases

Build status

This is a fork of Oryx, the bunnyhop anticheat written by Rusty/Nolan-O. The README will be mostly left untouched unless I need to change anything.

The main differences from the original version are:
  • I have supported CS:GO and TF2.
  • I edited the plugin to work with bhoptimer. bTimes support has been dropped.
  • smlib is not a dependency anymore.
  • Optimizations have been applied.
  • Cleaned the code where I could. Most plugins will look as if they were rewritten, as I don't like the way Rusty wrote them in first place.
  • SourceMod 1.9 is the target version. Support for older versions of SourceMod will not be provided.
  • More detection methods have been added.

Rusty's notes:

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.
You need DHooks to build. You also need DHooks on your server for oryx-sanity and oryx-strafe to work.
It depends on gamedata from SDKTools therefore shouldn't break unless your server is out of date.

All you need to do is make sure you've specified your timer in include/oryx.inc by defining either notimer or bhoptimer. Build each file manually with the SourceMod compiler, like usual.
If bhoptimer is defined, you will need bhoptimer's include file.
Send a pull request if you want to support other timers.

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

(Tables are ugly in AlliedModders, sorry. I don't think we have a proper BBCode for it available either.)

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 by 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
+klook usage | A movement config that disables +forward and +back in specific cases (such as LJ binds) | 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 specific values | oryx-sanity
Wish velocity is too high | Wish velocity exceeds the default `cl_forwardspeed` or `cl_sidespeed` settings | oryx-sanity
Wrong mouse inputs | Raw input has discrepancies with the view angles' yaw delta | oryx-sanity
Scripted jumps (havg) | Too many perfect jumps indicates a potential jump script usage | oryx-scroll
Scripted jumps (havgp, patt1, patt2, wpatt, wpatt2) | Too many perfect jumps while maintaining obviously weird scroll stats | oryx-scroll
Scripted jumps (nobf, bf-af, noaf) | Inhuman stats for scrolls before touching the ground and after jumping | oryx-scroll
Scroll macro (highn) | Way too many scroll inputs per jump, giving away the player using some kind of jump macro | oryx-scroll
Scroll cheat (interval, ticks) | Analysis on interval between scrolls. These methods are at low detection level due to the nature of UDP. | oryx-scroll
Note: oryx-sanity will cause false positives with gamepads and controllers.
Note 2: If using bhoptimer, add oryx_bypass to the special string. This setting will disable the sanity, strafe, and movement config anticheats from triggering on the style. For example:

	"name"				"Hack vs Hack"
	"shortname"			"HVH"
	"htmlcolor"			"FFFFFF"
	"command"			"hvh"
	"clantag"			"HVH"

	"rankingmultiplier"		"0.0"
	"specialstring"			"oryx_bypass"

	"name"				"Autostrafer"
	"shortname"			"AS"
	"htmlcolor"			"FFFFFF"
	"command"			"autostrafe"
	"clantag"			"AS"

	"rankingmultiplier"		"0.0"
	"specialstring"			"100gainstrafe;tas;oryx_bypass"
Docs on natives are found in include/oryx.inc, using the SourceMod self-documenting style.

The plugins have only been tested with bhoptimer v1.5b (as found here).

Relevant information will be logged into addons/sourcemod/logs/oryx-ac.log.
Scroll cheaters will be listed in addons/sourcemod/logs/oryx-ac-scroll.log
Strafe hackers will be listed in addons/sourcemod/logs/oryx-strafe-stats.log
Chat messages will be printed to admins with sm_ban access, or the oryx_admin override. Admins will hear a beep sound to grab their attention when needed.

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

Last edited by shavit; 03-10-2018 at 15:40.
shavit is offline
Junior Member
Join Date: Jan 2018
Old 03-10-2018 , 16:26   Re: [CS:S/CS:GO/TF2] Oryx bunnyhop anti-cheat (v1.2 10/March/2018)
Reply With Quote #2

Why in all your plugins you remove support for bTimes. Pushing players to use your timer to use these plugins is kinda annoying.
Fluxxx is offline
AlliedModders Donor
Join Date: Dec 2011
Location: Israel
Old 03-10-2018 , 16:31   Re: [CS:S/CS:GO/TF2] Oryx bunnyhop anti-cheat (v1.2 10/March/2018)
Reply With Quote #3

Originally Posted by Fluxxx View Post
Why in all your plugins you remove support for bTimes. Pushing players to use your timer to use these plugins is kinda annoying.
No, you don't need my timer to use any of the plugins I post unless stated otherwise.
For example:
Bunnyhop Statistics is a bhop plugin that bhoptimer makes use of, yet doesn't require bhoptimer.
noslide works fine without bhoptimer. The only use of bhoptimer that it makes is that it makes it useless when on irrelevant styles (where stamina is not removed).
Trikz (Redux) is a timed co-op gamemode. It needs bhoptimer and its features in order to ensure player timers are synced. I don't know of any other timer plugin that has such features except for mine and Influx Timer (which is very unique in its own existence), enlighten me otherwise.

I 'removed' support for bTimes because I can't support it.

* It's a paid plugin. The only public ones are leaked versions and hypnos' fork. The paid and public versions are completely different.
* The original version of Oryx had explicit support for a leaked version of bTimes.

If your server uses bTimes, install the timer-less version (which I included for the exact reason of me not wanting to push my own timer in everyone's face, use whatever you want or prefer).
The only downside is that you won't be able to use the oryx-scroll module unless your server either only has scroll styles or unless you edit the module to filter auto styles on bTimes.

Last edited by shavit; 03-10-2018 at 16:37.
shavit is offline

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT -4. The time now is 17:29.

Powered by vBulletin®
Copyright ©2000 - 2023, vBulletin Solutions, Inc.
Theme made by Freecode