Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to ban this cheat client? #214

Open
anzz1 opened this issue Jan 22, 2024 · 21 comments
Open

How to ban this cheat client? #214

anzz1 opened this issue Jan 22, 2024 · 21 comments
Labels
question Further information is requested

Comments

@anzz1
Copy link

anzz1 commented Jan 22, 2024

Hey, I was wondering whether it was possible to block this cheat client from joining to servers?
It seems that VAC doesn't detect it, is there any other way?

If some people are wondering what I'm talking about this being a cheat client, the README file is misleading.
All the cheat features, like cl_autojump / +ducktap / +ljump / hud_strafeguide / hud_jumpspeed / , cl_cross_enable, etc. are enabled by default, even on default servers which haven't explicitly allowed any of this

You can test this by downloading a non-modified, fresh install of HLDS and then joining your server with the BugFixedHL client. All of the above commands work, even without enabling anything, so this claim

https://github.com/tmp64/BugfixedHL-Rebased#features

  • Bunnyhopping (for servers that have it enabled)

seems to be clearly a lie. Also all the other automations work which were never enabled server-side. No mentions of them on the frontpage either, you have to dig into the https://github.com/tmp64/BugfixedHL-Rebased/wiki/Client-command-reference to find the more cheaty options. Only thing currently missing is an aimbot or an "hearing automation" aka wallhack.

@ValveSoftware please see what is going on over here, and if need to be update VAC to detect this. In the meanwhile if there is any other means to block this via server plugins or whatnot, I'd be pleased to hear how.

I am not saying this couldn't be a mod/option, something like OpenAG already is, and no one can complain about bugfixes which don't affect gameplay.

But all of this, should be an opt-in feature from servers admins. Having clear gameplay advantages over non-modified clients using a modified client, is clearly and absolutely cheating.

To be perfectly clear, no one is complaining about your colored HUD or improved scoreboard. Your automatic +ducktaps, bunny hops, long jumps, strafing huds and so on, should only be allowed in the case server allows it. So everyone is on the same, level playing field.

This should be a no-brainer. How this stuff ever passed the smell test without being called out as a cheat, is beyond me.

@anzz1
Copy link
Author

anzz1 commented Jan 22, 2024

And no one is against having a "bugfixedhl" mod which have their own servers and clients. Then again, everyone is on the same, level playing field. But being able to join "non-bugfixed" , vanilla servers without the server admins permission isn't right. As these "bugfixedhl" players clearly have an advantage over "non-bugfixed" ones.

I initially thought that VAC or mp_consistency 1 would detect changes to client.dll , that this sort of thing wouldn't even be possible. I was surprised to find out that it doesn't.

@Safety1st
Copy link

Just detect and block BHL clients, such feature exist.

@anzz1
Copy link
Author

anzz1 commented Jan 22, 2024

Just detect and block BHL clients, such feature exist.

Thanks, I'll look into that.
However, this shouldn't be something server admins need to specifically block.

There is already a serverside component in this, and client's ability to query server settings.

Why there aren't simply:
sv_bhl_allow_autojump 1/0
sv_bhl_allow_jumptype 1/0
sv_bhl_allow_ducktap 1/0
sv_bhl_allow_ljump 1/0
sv_bhl_allow_strafeguide 1/0
sv_bhl_allow_speedometers 1/0
sv_bhl_allow_cross 1/0
etc ...

edit: or maybe just check whether sv_cheats == 1, as that would be the simplest.

And the client can see whether these cheats are enabled or not. If not , by default, then don't enable them.
This wouldn't make the client itself a cheat and something VAC should be detecting.

It's pretty appalling that people run around with these cheats among the vanilla players who then think these people are good bunnyhoppers executing frameperfect jumps, while in fact they are cheating but also deluding themselves that they are not.

Again, I'm not against auto-bhop servers nor "BHL" players playing against other "BHL" players. Just that people should be aware of this, as currently other players think they are playing on vanilla servers with other vanilla people without being aware that they're being taken for a ride by players using this "BHL" client. I'd also bet that there are many server admins who don't know about the existence of this client and that some of their playerbase are cheating using this.

@anzz1
Copy link
Author

anzz1 commented Jan 22, 2024

I couldn't find any information about the feature @Safety1st was talking about, which could detect and block BHL clients.

However, meanwhile I put together this quick AMXX plugin which can block BHL clients.

#include <amxmodx>

#define AUTHOR "Anon"
#define PLUGIN "Block BHL"
#define VERSION "1.0"

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
}

public KickUser(id) {
  new address[32]
  get_user_ip(id, address, charsmax(address), 1)
  server_cmd("kick #%d;wait;addip 0 ^"%s^";wait;writeip", get_user_userid(id), address)
}

public BHLCheck(id, const cvar[], const szrValue[])
{
  if (!equal(szrValue,"Bad CVAR request")) {
    KickUser(id)
  }
}

public client_connect(id)
{
  if (!is_user_bot(id)) {
    query_client_cvar(id, "aghl_supports", "BHLCheck")
    query_client_cvar(id, "aghl_version", "BHLCheck")
    query_client_cvar(id, "hud_colortext", "BHLCheck")
    query_client_cvar(id, "hud_strafeguide", "BHLCheck")
    query_client_cvar(id, "cl_messages_log", "BHLCheck")
    query_client_cvar(id, "cl_autojump", "BHLCheck")
    query_client_cvar(id, "cl_bunnyhop", "BHLCheck")
    query_client_cvar(id, "cl_jumptype", "BHLCheck")
  }
}

block_bhl_amxx_plugin.zip

This still doesn't solve the issue though, which is that allowing BHL clients should be an opt-in thing, not opt-out.
Allowing differing client.dll's to play the same mod is a very bad thing to be possible. Everyone should obviously play the same game. There is already a mod which allows for things like auto-bhop, it's called Adrenaline Gamer (OpenAG). Bringing those automations and assists to vanilla client without asking everyone else playing is just super selfish and wrong.

It's really not unlike forcing autoaim on at clientside even if server has sv_aim 0 / sv_allow_autoaim 0. So let's call it what it is, cheating. And not try to sell this as some "bugfixed" version, which it clearly ain't.

In fact the way I found about this was that I heard somewhere about this "bugfixed" version. I was delighted, who wouldn't want bugs to be fixed, right?

Que my surprise, when I found that it's a cheat client instead, being called nonchalantly a "bugfixed" version which hides its' true intentions. Get a grip, devs, please!

@Safety1st
Copy link

Safety1st commented Jan 22, 2024

@anzz1, you are right: in ideal world server owners should have the ability to enable only 'bugfixed' features without 'improved' ones. But the reality is different: there is no ability for GoldSrc servers to force particular rules on clients.

BTW there is better way to detect BHL clients, look into native API:
https://github.com/tmp64/BugfixedHL-Rebased/blob/master/gamedir/addons/amxmodx/scripting/include/bugfixedapi.inc

@anzz1
Copy link
Author

anzz1 commented Jan 22, 2024

@anzz1, you are right: in ideal world server owners should have the ability to enable only 'bugfixed' features without 'improved' ones. But the reality is different: there is no ability for GoldSrc servers to force particular rules on clients.

I am not sure what you mean. Sure, GoldSrc servers by themselves can't block aimbots and wallhacks either. If that's where you were going.

What I was going at, is that this "bugfixedhl" already has server and client components which can communicate with each other.
And from the ground up, the client should enable the cheat features if and only if the aforementioned server component has been installed by the server admin, and the feature in question has been enabled.

This is not some "perfect world" scenario. This was and is perfectly doable, always has been. It's about not pushing cheats as a supposedly legitimate client, calling it a "bugfixedHL", instead of something like "hackHL" or whatever. I'm pretty sure that this has already misled people to think they're not cheating by installing this client, while in fact they are.

Automating frame-perfect jumps isn't different from automating aim, both require skill and are a slap in the face for the players which have legitimately acquired those skills.

So why not go all the way then and include aimbot and wallhack too? Why this half-way measure?
If it's the veneer of legitimacy, which this seems to be after, why not do it honestly and enable cheat features only when the server has the server component installed, and allowed those features?

What is exactly the problem here?

@Safety1st
Copy link

Safety1st commented Jan 23, 2024

The problem is in GoldSrc design. They're is no way to detect ether enabled functionality on clients or restrict from enabling certain features by server. Especially if it is open-source project.

@anzz1
Copy link
Author

anzz1 commented Feb 8, 2024

@Safety1st

Obviously GoldSrc doesn't have server-side functionality on detecting client-side cheats.

Just because you are not blocked from cheating via invasive measures like forcing you to install system-wide kernel drivers before allowing you to play, like many modern games do, that doesn't make cheating okay. Just because you can cheat doesn't mean you should cheat.

Even worse is calling the cheat some innocuous name like "Bugfixed HL", implying you are not peddling cheats here, while in fact that is exactly what you're doing.

I love open source but this type of thing is exactly what gives open source a bad rep. Why make any part of your game or engine open source, when cheat vendors are circling around like jackals and immediately exploit the situation when something is open-sourced.

Why do you have to fuck up things for everyone? Every time these things happen, game developers are further discouraged from open-sourcing anything, or allowing modding for that matter.

@anzz1
Copy link
Author

anzz1 commented Feb 8, 2024

They're is no way to detect ether enabled functionality on clients or restrict from enabling certain features by server.

And this is obviously a lie. There is the CVar flag FCVAR_SERVER (4) , which "Notifies players when changed" for exactly this reason. It gets propagated to clients and clients know its' value. One of these type of cvars is sv_cheats, whether it's allowed to use cheats and another is sv_aim, which is queried to allow aim assist or not.

There is absolutely nothing preventing from designing the client in such a way that either sv_cheats or some new var as described in #214 (comment) would be queried first before any cheat would be enabled.

It was just never done so and cheats were enabled right from the beginning without asking anyone for any permission, and now you're giving the reason as "it can't be done" which is a complete and utter lie.

Not even owning up that a bad thing for modding and open-source has been done here, and then claiming nothing could have been done or even can be done about it, is just bewildering to me. You can claim ignorance or whatever if you really need to save face, just don't lie.

@Safety1st
Copy link

Safety1st commented Feb 8, 2024

It's sad to hear I'm a liar. But you know better and are allowed to post anything you want. HAND

@anzz1
Copy link
Author

anzz1 commented Feb 8, 2024

And by the way, it's also entirely possible to make bhl a separate mod, not to be used with vanilla servers. An example on how this can be done is here in the halflife-updated repo: twhl-community/halflife-op4-updated@ab5735c

And "half-life updated" doesn't even have any cheat features, yet they still have the integrity to block it from being used in vanilla servers. "Can't be done" my ass.

@tmp64 tmp64 added the question Further information is requested label Feb 17, 2024
@tmp64
Copy link
Owner

tmp64 commented Feb 17, 2024

All the cheat features, like cl_autojump / +ducktap / +ljump / hud_strafeguide / hud_jumpspeed / , cl_cross_enable, etc. are enabled by default, even on default servers which haven't explicitly allowed any of this

I agree that auto-bhopping and auto-ducktapping are somewhat controversial. However, advanced movement mechanics (like bhopping, wallstrafing, airstrafing, gauss-jumping) have always been a core part of the gameplay. It used to be normal to use console scripts to automate some of them. BHL provides a convinient command for that.

+ljump is not a cheat. It's a shortcut for people that physically can't press Ctrl+Space reliably (e.g. small netbook players).

hud_strafeguide and hud_jumpspeed are useless for Deathmatch. They are intended for KZ gamemodes.

cl_cross_enable is not a cheat. The same can be achieved by replacing crosshairs.spr file, which is allowed. BHL allows players to adjust the crosshair during gameplay, which saves time.

Bunnyhopping (for servers that have it enabled) seems to be clearly a lie.

Default servers have a speed-cap for bhopping. BHL servers or some other servers can disable it.

Hey, I was wondering whether it was possible to block this cheat client from joining to servers?

You can use the Server API or query the cvar "aghl.ru". Which you've already done.

There is already a serverside component in this, and client's ability to query server settings.
Why there aren't simply [list of cvars]

Because the original BHL didn't have them. Almost all of my improvements are on the client-side.

This still doesn't solve the issue though, which is that allowing BHL clients should be an opt-in thing, not opt-out.

In an ideal world, yes. Unfortunately, there is a large number of clients and servers that use old versions of BHL (even before any of my changes) or some other custom clients. If clients update, players will find out that servers that used to allow bhopping no longer do because the server runs an old version. Then players will download a previous release, disable auto-updates and will keep playing.

But the reality is different: there is no ability for GoldSrc servers to force particular rules on clients.

They're is no way to detect ether enabled functionality on clients or restrict from enabling certain features by server.

There is. Using custom netork messages or maybe using FCVAR_SERVER.

Especially if it is open-source project.

That only makes it easier to bypass a server-side protection. But that takes a differnt kind of skill.

Automating frame-perfect jumps isn't different from automating aim, both require skill and are a slap in the face for the players which have legitimately acquired those skills.

It is though. One requires precise movement and good reaction times. Other requires the player to press a button during the window of 4 milliseconds (at 250 FPS), which is impossible for a human to do non-randomly.

@anzz1
Copy link
Author

anzz1 commented Feb 19, 2024

It used to be normal to use console scripts to automate some of them. BHL provides a convinient command for that.

When it used to be normal, back in the WON times? When was the last time automatic bunnyhopping was possible without using a cheat or an exploit (you probably mean the bugged _special, which was completely unintentional engine bug which has been fixed for like ~15 years now, and was always banned to be used in any competitive scenario like CS leagues)

+ljump is not a cheat. It's a shortcut for people that physically can't press Ctrl+Space reliably (e.g. small netbook players).

Of course it is.

Admittedly this is the smallest of the offenses, but still there is a timing component present in not pressing Ctrl+Space, but pressing first Ctrl, then Space. This is just another entry in your long list of trivializing gameplay, allowing players to focus on other things like aiming while your bot does the rest of the work.

Also, have you not heard of the console command bind ? It allows to bind both jumping and ducking to any buttons which are the most comfortable for you. If your "small netbook" doesn't allow you to press two buttons at once, maybe you shouldn't be playing first-person shooter games on that then.

hud_strafeguide and hud_jumpspeed are useless for Deathmatch. They are intended for KZ gamemodes.

I'm not too familiar with KZ modes in HL, but at least in CS all sorts of scripts and helper programs have always been banned as long as KZ servers have existed.

Some KZ servers introduce such elements to everyone from server-side, which also puts everyone in a fair and equal position.

Those features can be easily implemented server-side by using server-side mods, it is only a cheat when done client-side. There is no need for such thing, this is again you forcing your stuff to be used on servers which don't have such features enabled.

cl_cross_enable is not a cheat. The same can be achieved by replacing crosshairs.spr file, which is allowed. BHL allows players to adjust the crosshair during gameplay, which saves time.

I didn't know replacing original game sprites were allowed, so I'll concede this point. My background was mostly in competitive CS back in the day, where modifying the client in any way, including any models, textures or sprites was expressly disallowed. I guess the HL community took a more laissez-faire approach in creating advantages over others by use of modifications.

Bunnyhopping (for servers that have it enabled) seems to be clearly a lie.

Default servers have a speed-cap for bhopping. BHL servers or some other servers can disable it.

I did not mean removing the bunnyhop cap, I meant the automatic bunnyhopping allowed by the cheat client. Which should obviously be allowed by querying the serverside cvar first, either sv_cheats or a new custom cvar. Servers currently have no recourse in blocking the auto-bhop cheat, except blocking your client completely.

There is already a serverside component in this, and client's ability to query server settings.
Why there aren't simply [list of cvars]

Because the original BHL didn't have them. Almost all of my improvements are on the client-side.

This still doesn't solve the issue though, which is that allowing BHL clients should be an opt-in thing, not opt-out.

In an ideal world, yes. Unfortunately, there is a large number of clients and servers that use old versions of BHL (even before any of my changes) or some other custom clients. If clients update, players will find out that servers that used to allow bhopping no longer do because the server runs an old version. Then players will download a previous release, disable auto-updates and will keep playing.

So in your defense, because someone already shit the bed, it's okay to keep on piling more shit onto that bed?
Because someone at some point has created cheat clients, we should be all creating them now? It was wrong then and it's still wrong now and it changes nothing. Cheaters be cheating, yeah it's unfortunately an uphill battle, but just because other people cheat doesn't make cheating okay.

If you were to correct course and make the cheats opt-in by servers like is right and fair, and that would make some cheaters use old versions to keep up their cheating, let them. At least it's no longer your fault at that point, and you're not actively endorsing cheating.

There is. Using custom netork messages or maybe using FCVAR_SERVER.

Especially if it is open-source project.

That only makes it easier to bypass a server-side protection. But that takes a differnt kind of skill.

Exactly. Cheaters are and always will be problem in any multiplayer game. It's impossible to make it such it can't be bypassed, but cheating shouldn't be the default option. Having cheats be enabled only when server allows it not only can be done, but should be done, obviously.

Automating frame-perfect jumps isn't different from automating aim, both require skill and are a slap in the face for the players which have legitimately acquired those skills.

It is though. One requires precise movement and good reaction times. Other requires the player to press a button during the window of 4 milliseconds (at 250 FPS), which is impossible for a human to do non-randomly.

There are some speedrunners who would beg to differ on your point of bunnyhopping without cheats being impossible. No one is also forcing you to play at 250FPS, the engine (including physics) was never meant to be ran at over 100FPS anyway.

I can't fathom how you don't see that is the exact point, frame-perfect bunnyhopping is hard, and that's exactly as it should be.
In case you haven't noticed, trivializing bunnyhopping à la Quake has been requested multiple times over the years and the position has always been clear that it would trivialize gameplay and that it will never happen. It is the loud minority requesting this and I'm pretty sure Valve has always known this, while the majority enjoy the mechanics as they currently are.

Patch to have either Quake-style or completely automatic bhopping would be the easiest thing ever to patch, yet it has never been done. I can't understand how it doesn't ring any bells in your head that what it means, is that current behaviour of not allowing automatic bunnyhopping is intended behaviour.

And I also don't get how you don't see anything wrong in what you're doing. Not only are trivializing the skill of people who might have practiced perfecting the bunnyhopping for years, but it's worse than that.

No, you take a step further in much more bad and sinister direction. In fact, since automatic bunnyhopping is not actually a part of the game, you are fooling other unaware players that you have practiced and perfected the art of bunnyhopping, while in reality you're just another cheater. And when people become aware, you're putting the shadow of doubts in people's minds about those who really have the skill, "Is this one just another cheater too?" might one think after encountering a great bhopper. Yeah, sure, the game is old now. But kudos to you for trying to bring down whatever's left today. You really think you're helping the community by creating more cheaters zooming around the servers using your auto-bhops?

I like to re-emphasize the point that no one is saying you couldn't create a mod in which you can run around auto-bhopping and play against other auto-bhoppers. In fact there exist such a mod already, called Adrenaline Gamer.

What you're doing wrong is forcing yourself and other cheaters like you into vanilla servers running vanilla Half-Life, which want to have vanilla gameplay, which does include (but is not limited to), having to press jump precisely to be able to bunny hop without slowing down, having to press jump+duck in order to long jump, having to aim manually if server is configured as such, etc.

You are forcing yourself into a place where you and others like you are not wanted into. I sincerely do not understand how you can't see anything wrong in that.

The greatest problem of all isn't even the fact that you're openly distributing a cheat client.

It is the fact that you're being insincere about it, calling it an innocent name like "Bugfixed" HL.

This could lead an innocent player trying it out without even realizing that they're installing cheats. Then left wondering why the hell did they get banned.

With a more appropriate name like "HaxxHL", "CheatHL", "AutomatedHL" or anything to that effect, you wouldn't be lying to your potential users by misrepresenting your software and there would be no such confusion.

@anzz1
Copy link
Author

anzz1 commented Feb 19, 2024

If you'd like an example of project which does this correctly, look no further than s1lentq/ReGameDLL_CS, which is a decompilation/recreation of Counter-Strike's mp.dll with additional optional features.

So pretty much what you're doing here, but just doing it correctly. That is, having the modifications be controlled by the server, putting everyone in the server on an equal footing.

If your modification also did this:

CVar Default Min Max Description
sv_autobunnyhopping 0 0 1 Players automatically re-jump while holding jump button.
0 disabled
1 enabled
sv_enablebunnyhopping 0 0 1 Allow player speed to exceed maximum running speed.
0 disabled
1 enabled

We wouldn't be having this conversation, and absolutely no-one would accuse you of cheating and endorsement of cheating.

Note the difference, it's sv_ and not cl_. Two small characters which make all the difference.

@ScriptedSnark
Copy link
Contributor

Bro demands 1.5 contributors to implement an anticheat for open-source project 💀

@SmileyAG
Copy link
Contributor

SmileyAG commented Feb 20, 2024

@anzz1

What is considered a cheat for you, for other communities may quite commonplace with fully explained arguments, and it is still subjective to consider what gives an advantage in fact and not

For example, if you think that having GL crosshairs (cl_crosshair) cvars is prohibited, then what about what the user can enable on the monitor or using third-party programs like HudSight? Or is it different and double standards?

Understand that you are not the only one of the earth around which the whole world revolves

For example, when you have autobhop, it still doesn't provide a good advantage if you're fairly unskilled itself

Because you also need a strafe mechanic and some bhop techniques (such as surfing, stand-up bhop), which takes months and years to improve the result, and believe me, I know this perfectly since I’ve been in the HL/AG bhop / speedrun community for a long time and I have enough significant records on bhop maps andin friend with most of HL/AG runners and bhoppers

Autobhop in fact simply forces you to focus more on your strafe skill, without being distracted by the factor of whether you have bad mouse scrolling or not, which in fact forces you to progress more faster in bhopping

There are also games that focused on bhop functionality, where autobhop is enabled by default and there are things like HUD strafeguide / speedometer (Momentum Mod, DeFRaG, Diabotical)
Do you want to say that their authors also distort the point of bhop? ........

I’m not saying that everyone should use autobhop, I understand categories where they are exclusively done without scripts, for example in Half-Life speedruns there is a division between playing with and without scripts, and runs will be in different categories, that is, you know, the authors the leaderboard is respected by both sides, not just one: https://www.speedrun.com/hl1

You should also understand that all these checks will be meaningless simply because this is an open source project
If someone really wants to hurt your server with this features, then I think it won’t be difficult for him to simply remove all these checks in the code or use the old version of BHL, which will not have these checks

It's not BHL's fault that you think some functionality you don't like is available, it's only your concern to ensure your server is protected from it, you're always open to making a pull request to the project

In addition, such things as autobhop and ducktap were discussed about allowing not only by AG bhoppers, but also among AG deathmatch players, there were those who did not agree, there were those who agreed, but in the end they sided with the majority and that’s was right
So there is no need to say that there were no votes and all this was done at the behest of one person, this is not true at all, these discussions were actually conducted on forums and in discord channels a time ago: https://forum.half-life.pro/openag-updated-client-dll-for-adrenaline-gamer-t5986.html

Also about your approach in #214 (comment), are you just trying to IP ban all players who have these commands on the client? LOL

Need to explain two reasons why it is wrong to do like this?

Firstly, those who know about this, rather:

A) rename all cvars and recompile client
B) implement their toggling on the side of a custom GUI instead of using game commands, like in ImGUI, and how are you going to track them then?

Secondly and most importantly, you do not give them a chance to correct themselves according to your principles. Instead of kicking a player and telling him to use a client that in your opinion is considered normal for this server, you immediately blacklist him, this is just ridiculous, then you are losing online due to your own stupidity

Enabling flag in liblist.gam to enable MD5 protection is not option by reasons too:

  • The engine from server-side literally checks the MD5 from client.dll of player, but who forbids you to keep the original client.dll in a folder, but rename your custom one for example to abcdef.dll and patch the few bytes in the engine DLL so that when you start the game, abcdef.dll is loaded instead of client.dll?
  • What if server owner don't updated the client dll that is on his side, while the client is using in fact the latest update, therefore in this case the client will simply not be allowed in due to the slowness of the server owner

Speaking about all these workarounds, I do not support cheating, it’s just that in general it lies on the surface

It’s just that your understanding of cheating is quite absurd, that is, those who run around with custom crosshairs / speedometers and autobhop are the number one enemy in comparison with real cheaters who may have aimbots, wallhacks and autostrafing

And even if we consider the same wallhack, for example, in multiplayer it is definitely bad to use and I am categorically in favor of blocking such players, but for example in the singleplayer it is helpful for speedrunners to research the game in more details (but they are not used during the run itself since it disallowed, but only before it for a practice), so not everything is so simple
Autostrafing is also bad in multiplayer and the one who uses it has no respect towards other players, but it can be used to create runs in the TAS category in singleplayer: https://en.wikipedia.org/wiki/Tool-assisted_speedrun (but in fairness, TAS runs are prohibited in the speedrun leaderboards, they are usually simply posted on YouTube to show how quickly a robot, not a human, can complete the game)

@anzz1
Copy link
Author

anzz1 commented Feb 21, 2024

What is considered a cheat for you, for other communities may quite commonplace with fully explained arguments, and it is still subjective to consider what gives an advantage in fact and not

For example, if you think that having GL crosshairs (cl_crosshair) cvars is prohibited, then what about what the user can enable on the monitor or using third-party programs like HudSight? Or is it different and double standards?

Wikipedia describes video game cheating as "Cheating in video games involves a video game player using various methods to create an advantage beyond normal gameplay, usually in order to make the game easier."

There are no "double standards" in sight, except in your arguments. Anything involving a 3rd-party program is cheating, including installing 3rd-party software to add crosshairs. But I already conceded the point that the crosshair is the least contentious issue, the other cheats are the major issue.

This is what I hate here, that you have somehow deluded yourselves into thinking you are not cheaters, and now are trying to delude others too. Trying to absolve yourselves by making excuses why you should be allowed to use these cheats and why it's okay, because you aren't skilled enough to bunnyhop without additional cheats yet you still somehow believe that you're entitled to be elevated to the same skill level as those who have mastered it, by means of cheating. Now you're pushing this bullshit to everyone else, just so you can keep on cheating instead of practicing. This is very dishonest of you.

For example, when you have autobhop, it still doesn't provide a good advantage if you're fairly unskilled itself

What the actual fuck? So what you're saying is because the cheat becomes more effective the more skilled you are, it somehow makes it okay? Your arguments make absolutely no sense.

Let's try replacing some words, quoting you:

For example, when you have autobhop wallhack, it still doesn't provide a good advantage if you're fairly unskilled itself

Because you also need a strafe mechanic and some bhop aiming techniques (such as surfing, stand-up bhop headshots, peeking corners), which takes months and years to improve the result, and believe me, I know this perfectly since ...

Yeah, the same exact thing applies for other cheats too than just auto-bhop, like wallhacks, ESP, whatever.
Of course a better player with cheats is better than worse player with cheats? How in the everliving hell is that an argument?
You are trying to excuse double-standards here, that one cheat is different from another, and not doing a very good job at it.

I’m not saying that everyone should use autobhop, I understand categories where they are exclusively done without scripts, for example in Half-Life speedruns there is a division between playing with and without scripts, and runs will be in different categories, that is, you know, the authors the leaderboard is respected by both sides, not just one: https://www.speedrun.com/hl1

So we are in agreement. Like said, I'm not against having different categories, which in this context mean different mods and servers which allow auto bhop. Just don't force yourself into the vanilla mod/category, armed with auto bhop and taking advantage over others. That is cheating. If you use scripts (or cheats like auto-bhop) in the vanilla non-scripted category in speedruns, you would get banned instantly.

For the umpteenth time, this is only about cheating in vanilla Half-Life by the use of modified client files.
No one is saying you shouldn't be able to have the auto-bunnyhop feature, in your auto-bunnyhop mod Adrenaline Gamer.
People who enjoy that can enjoy it together in that mod, which is perfectly fine.
What is the problem here, is modifying your client to enable those cheats in vanilla servers.
I don't know how much clearer I can make it anymore.

To be honest, I don't think you are that stupid that you don't understand the point.
It's that you are insincere, and rather want to keep cheating against non-modified vanilla players, so you try to justify it to other people and pretend like you don't understand.
Instead of keeping the auto-bhopping to the auto-bhop mods and servers, and out of vanilla servers, or play in vanilla servers but practice like everyone else does.

In addition, such things as autobhop and ducktap were discussed about allowing not only by AG bhoppers, but also among AG deathmatch players, there were those who did not agree, there were those who agreed, but in the end they sided with the majority and that’s was right

I couldn't agree more. You are completely free to keep your auto-bhops in your Adrenaline Gamer community, where everyone does have auto-bhop and is on equal footing. Just keep your AG clients out of vanilla Half-Life servers. Auto-bhopping where everyone has the same auto-bhop client, or is on the same auto-bhop server, is obviously not cheating, it's modding. Cheating is when you take the liberty of creating an advantage over other, non-modified players.

There are also games that focused on bhop functionality, where autobhop is enabled by default and there are things like HUD strafeguide / speedometer (Momentum Mod, DeFRaG, Diabotical)
Do you want to say that their authors also distort the point of bhop? ........

No, I am not saying that. This is about vanilla Half-Life.

And even if we consider the same wallhack, for example, in multiplayer it is definitely bad to use and I am categorically in favor of blocking such players, but for example in the singleplayer it is helpful for speedrunners to research the game in more details ...

Again you're trying to make the point about something else that it ain't.
No one has spoke here against singleplayer mods. Of course you can do whatever you want in singleplayer.
You are free to auto-bhop to your heart's content, as long as you don't bring it to multiplayer servers.
Exactly the same thing as wallhacks, no one has made any point that you shouldn't be able to use wallhack in singleplayer.

... [bunch of crap related on how you can bypass the checks] ...

I never said you can't bypass checks, that cheats don't work. There has always been ways to cheat, and there always will be, no matter the game. Some games block these better, some worse. Usually making better anticheats mean more pervasive measures which hinder the players privacy. Ultimately it's the cheaters' fault all these measures need to exist in the first place, the cheaters are the bad actors. This includes you who endorses cheating by trying to distort what cheating even is. In the context of multiplayer video games, it is advantage over others by use of modifications, can't get more simpler than that.

And this definitely falls into the cheat category, and that fact doesn't change no matter how hard you try to justify it, bullshit everyone, or distort the facts.

In fact, I can't think of a single multiplayer FPS game where installing a modified client dll to add features like auto-bhopping, auto-aiming, wallhacks, ESP, radars, no-recoil, etc. wouldn't be considered cheating, as it obviously, absolutely, is. It's beyond me how you still try to argue against that.

@SmileyAG
Copy link
Contributor

SmileyAG commented Feb 21, 2024

What the actual fuck? So what you're saying is because the cheat becomes more effective the more skilled you are, it somehow makes it okay? Your arguments make absolutely no sense.
... Of course the a better player with cheats is better than worse player with cheats? How in the everliving hell is that an argument?
You are trying to excuse double-standards here, that one cheat is different from another, and not doing a very good job at it.

No, you distort my idea that I wanted to convey. And it lies in the fact that a skilled bhopper without an autobhop can easily destroy a noob with an autobhop in most of cases.

Scripts help you progress faster in the mechanics of bhopping and strafeing, so when you learn bhopping technique itself, you can turn that autobhop off and you only left to master with using scrolling on the mouse
The same speedometer and jumpspeed helps you clearly understand exactly when you gain and lose speed from each strafe or jump, which forces you to progress your bhop skill faster (and yes, if your principles does not allow this, then you can not use them during run, but during preparation it will help you a lot and it hard to deny that fact)

At the same time, when you're trying to learn how to bhop and scroll at the same time, you're trying to sit on two chairs, and you'll usually be bad or average at the best in both aspects, so you'll need a lot more time to learn and master than if you were to approach each aspect separately

So usually most skilled bhoppers used autobhop in one way or another to understand first of all how the game works, if such a simple idea doesn’t reach you, then I’m sorry

In addition, when bhop servers allow the use of autobhop, this gives everyone a good condition in that if, for example, you have bad scrolling on the mouse (here we do not mean the skill of the player with scrolling, but the scrolling on the mouse itself in terms of its quality from the mouse manufacturer), then, as I already said, you will not be distracted by this factor and can focus solely on mastering your strafes and that means that in general your bhop mechanics

If you use scripts (or cheats like auto-bhop) in the vanilla non-scripted category in speedruns, you would get banned instantly.

Not banned, but your runs will simply be rejected with a comment to redirect it to a scripted category (since you could, for example, forget to click of change category or due to lack of experience, send it to wrong category) or the moderators themselves will redirect it to that right category

Even here, you are always looking for a way to ban, as I explained above with the example of your amxmodx script, instead of simply kicking of player and pointing him with message of what he does wrong to according your server rules, instead you immediately try to block them, well, aren’t you an stupid?

Because this is simply the best anti-advertising of your server if you really want to use this approach, why don’t you think about the fact that even those players that using the modified client, then some of them can probably agree with your requirements and actually use the original client?

I never said you can't bypass checks, that cheats don't work. There has always been ways to cheat, and there always will be, no matter the game. Some games block these better, some worse. Usually making better anticheats mean more pervasive measures which hinder the players privacy.

I will repeat once again, if you do not like this or that functionality in your subjective opinion, it is only your task to protect the server from this, why should we have anything to do with it?
If you are interested of how to protect your server from most of glitches in GoldSrc games, check out this fork: https://github.com/YaLTeR/halflife/commits/glitchless

If you want to add system so that in HL1 some cvars would be turned on when the server responds, you can go ahead and make a pull request for this repository and maybe it will be approved, I don't think tmp64 can be against this
But as already described, all these measures are very trivial, and even without any byte patching or recompiling of project, the player simply simply can’t update the client and that’s it
And even if you remove links to old versions everywhere, the player will still have a local copy, so it will all then simply be like the Streisand effect, that is, it will lie in the messages of some discord channel dedicated to HLDM or AG, or it was re-uploaded on some individual sites and forums

I also liked how you falsely accused tmp64 that the cvar to enable bhop is not such

It is, because if you didn’t know, in September 2001, Valve released 1.1.0.8 WON patch, which introduced the bhopcap system, so if your speed exceeded more than 544 units, then you were instantly stopped and lost a most of the speed (this value is in 544 was calculated from your sv_maxspeed value, which is 320 by default in HL games and special constant value in code, 320 * 1.7 = 544, 1.7 is BUNNYJUMP_MAX_SPEED_FACTOR const):

// Only allow bunny jumping up to 1.7x server / player maxspeed setting
#define BUNNYJUMP_MAX_SPEED_FACTOR 1.7f
//-----------------------------------------------------------------------------
// Purpose: Corrects bunny jumping ( where player initiates a bunny jump before other
// movement logic runs, thus making onground == -1 thus making PM_Friction get skipped and
// running PM_AirMove, which doesn't crop velocity to maxspeed like the ground / other
// movement logic does.
//-----------------------------------------------------------------------------
void PM_PreventMegaBunnyJumping(void)
{
// Current player speed
float spd;
// If we have to crop, apply this cropping fraction to velocity
float fraction;
// Speed at which bunny jumping is limited
float maxscaledspeed;
maxscaledspeed = BUNNYJUMP_MAX_SPEED_FACTOR * pmove->maxspeed;
// Don't divide by zero
if (maxscaledspeed <= 0.0f)
return;
spd = pmove->velocity.Length();
if (spd <= maxscaledspeed)
return;
fraction = (maxscaledspeed / spd) * 0.65; //Returns the modifier for the velocity
VectorScale(pmove->velocity, fraction, pmove->velocity); //Crop it down!.
}

So this is what I want to say, that if you are really afraid of all bunnyhop players, then what is the issue on the server side, you can simply patch all of these, so you will both bug abusers and players with scripts kill in the once
The issue, of course, is that this approach can have a bad effect on players with a high ping, since they have a different movement prediction on the client, but it’s your job to force them to download their own client and somehow transmit information about this to the server that it’s really yours client

I'll tell you more, you can use autojump even without this modified client and still able connect to servers, all you need to do is download a older version of the GoldSrc steampipe engine (6027 build to be precise) and use regular scripts with _special and wait commands in it (these are all built-in game commands from Valve themselves!)

And although it does not cause +jump only on ground like an autojump in the client, instead it will +jump each frame even in the air, but it still the autojump

I also don’t like this approach in general about replaced client files

So you want to say that any client change is already a departure from what Valve intended and therefore all this should be prohibited?

That is, if Valve, for example, added some bugs and did not fix them, either because of a rare connection with the community, or perhaps because they did not have time at work, then all this was intended by the game and does not need to be fixed?
Let’s take the same FOV, it hasn’t scaled for widescreen all this time and only with the recent 25th update they added a separate command for this, yes, it took them 25 years to do this
And so you want to say, for example, that instead of special formulas for calculating the value under default_fov for each special aspect ratio, instead use a modified client in which the code will already calculate it all for you, then this is already number one enemy and an obvious cheater? Simply because it does not use the original client, in which Valve intended everything well for us
Like, you can justify any glitch or bug by saying that Valve intended, any functionality that was not completed due to production hell and lack of time was also intended, so it’s not surprising that different people in the community try to do it for their clients, some of which may be targeted to create only all sorts of bug fixes, others may also be aimed more at changes related to the bhop and DM community, like the same custom crosshairs and autojump

Just accept the fact that Half-Life is a different community from what you are used to seeing in some modern AAA projects, these are different people in general, scripts here have long been considered from the half of the community, and even here not all scripts are approved by the same half community, I have seen a lot of forum battles among the same HL/AG deatmatch players, for whom only more than standard scripts can be allowed and do not directly give such a significant advantage, but at the same time they are very unhappy if someone, for example, uses a script, which will allow you to move silently, which in fact gives such a very hugely advantage on maps with large corridors in 1vs1 matches
Everything is always subjective, scripts are used to facilitate gameplay if this is allowed, but this does not mean at all that without scripts a person cannot do the same trick but manually, lmao, they might absolutely could and the difference may not be that much in comparing to run with scripts
I’ll tell you more that for a very long time in Half-Life 1 speedruns, people who played without scripts had a much faster time than with people with scripts, it’s simple because those who played in the category with scripts were less skilled, mainly in the bhop aspect, because autobhop != bhop_skill in general, both in terms of strafes and various techniques

But then the same people who played without scripts also speedrun in the category with scripts and thereby broke this curse
I’ll also tell you a big secret, that those same people previously played too much with autobhop on AG bhop servers, before they started speedrunning the game in single player without any scripts, can you imagine? And this is true and proved, there is a complex of systems for speedruns that prove their legitimacy, and in general, an experienced bhopper can determine by eye that if a player plays with an autobhop, because such players never lose speed when jumping let's say in straight line, because if doing it without scripts then this is with huge percenmt a person would messes up the timing with the ground, it may not that significant, let's say you will only lose 50 units speed from 1000 units speed due to the fact that you pressed jump 1-2 frames later, but it will still be visible that you really trying it, while the autojump that knows about your state (whether you are in the air or on the ground) will never do it a frame later, because it is programmed that way

So if a person achieves great results without scripts, then he likely previously trained heavily with the scripts themselves in order to simply understand how the game works with high percent, I hope this idea will reach you
Those runners even got proved their legit on LANs! https://www.youtube.com/watch?v=_M7kpN9JMjU, https://www.youtube.com/watch?v=9lFK7IE5aqc

So for example, allow everyone to use some kind script, then everyone will use it for the same conditions, so no one would in advantage toward other

Changing all sorts of game settings, using all custom sprites to, for example, hide explosions (which can give an advantage in general), this is just the norm that everyone is used to it and tracking some of these things is not very easy, and sometimes not even possible with current API state and how the GoldSrc works itself

@anzz1
Copy link
Author

anzz1 commented Feb 21, 2024

I don't know how many times I can possibly say the same thing over and over, now I'm just repeating myself.

No one has said you couldn't practice bunnyhopping using the auto-bhop cheat in single player or against bots.
No one has said you couldn't practice ducktapping using the auto-ducktap cheat in single player or against bots.
No one has said you couldn't have auto-bhop servers on which everyone can auto-bhop.
No one has said you can't create mods like AG which allow auto-bhop on the server side.

Of course, practice as much as you want with auto-bhop while you are playing amongst yourselves. Then put your cheats off when joining a vanilla HL multiplayer server. It really is that simple.

This is really the same thing as practicing wallbangs against bots using a wallhack would be. Which is perfectly okay.
Once you enable the wallhack in a multiplayer server, only then is the line of not okay being crossed.

The point is about consent. If you'd agreed among a group people that you'd all install wallhacks and play against each other in a "hack-vs-hack" server, that would also be perfectly fine.

But when you are forcing yourself amongst uninformed, non-consenting players in a public server which has not expressly allowed cheating, and have cheats like auto-bhops, auto-ducktaps, auto-aims, wallhacks, etc. installed without permission, you are acting in bad faith.

In addition, when bhop servers allow the use of autobhop, this gives everyone a good condition in that if, for example, you have bad scrolling on the mouse (here we do not mean the skill of the player with scrolling, but the scrolling on the mouse itself in terms of its quality from the mouse manufacturer), then, as I already said, you will not be distracted by this factor and can focus solely on mastering your strafes and that means that in general your bhop mechanics

Yes, no one was ever against auto-bhop servers. The whole point was and has always been you playing with auto-bhop in vanilla servers without consent of others, which is cheating.

Because this client doesn't make a distinction between single-player and multiplayer, and also doesn't check if the server has sv_cheats enabled before enabling cheat functions, it is obviously a cheat client. I can't make this any clearer than this. (Never mind that the functionality to honor server variables like sv_cheats already exists, it's just intentionally bypassed / not being used here)

I'll tell you more, you can use autojump even without this modified client and still able connect to servers, all you need to do is download a older version of the GoldSrc steampipe engine (6027 build to be precise) and use regular scripts with _special and wait commands in it (these are all built-in game commands from Valve themselves!)

_special was always a bug and it was never supposed to be used for scripting. Explained here: ValveSoftware/halflife#1154 (comment)
It was fixed for a reason, and _special scripts were always banned in any league play (at least in CS/TFC). Almost every KZ server also expressly disallows using these.

Again you are trying to bring your point of view as such, "it is possible to cheat, henceworth it is okay to cheat". 🤦

I also liked how you falsely accused tmp64 that the cvar to enable bhop is not such

I didn't falsely claim anything. You are just misunderstanding, or pretending to misunderstand like you have been doing all the time here. Yes there is a cvar which controls the bhop, mp_bunnyhop, which is declared as FCVAR_SERVER and thus transmitted to client so the client knows it's state.

The cheat thing here is that it only effects the bhop speed cap, right here:

PM_SetBHopCapEnabled(!bunnyhop.value);

While any sv_cheats / mp_bunnyhop or anything else is not honored when doing automatic bhopping or automatic ducktapping. This is very clearly intentional, since the functionality to otherwise honor server rules already exist in regards to the bhop speed cap, autoaiming sv_aim, other cheats sv_cheats. Just intentionally not done in automatic bhopping and ducktapping, which is enabled without server's (aka other players') consent.

In my country we have this saying of "trying to bend from an iron wire", when you are trying to explain the simplest concept in a simplest way possible but the receiving end is still too stupid (or pretending to be stupid) to understand. I think I've pretty much exhausted my explanations here, if you still don't understand maybe try reading again until you do.

In a nutshell

  • Do not cheat in multiplayer servers (in it's current form, this is 100% a cheat client). The existence of other venues for cheating doesn't excuse this one. (Using exploits present in older engine versions, hacking via other cheat programs like cheat engine or autohotkey, etc.)
  • You are free to cheat in singleplayer games, on your own servers or game mods where cheats are allowed

I would also check up on the definition of whataboutism, since your posts are full of it. You are throwing around red herrings like it's the closing day at the fish market.

@ScriptedSnark
Copy link
Contributor

ScriptedSnark commented Feb 22, 2024

If it's the case, then just create PR / create own client/mod without any "cheats". And also, if it's 100% a cheat client, then why we don't go far by creating other cheats? Automatic bunnyhop/ducktap or other things which you describe as a cheat is not such a benefit. About the issue, you can't ban this (or any) client completely because of the engine. Yes, you can check some cvars / compare MD5 hash / use BugfixedHL server API but it's not so stable and it has some nuances which you can't get over without writing own client with specific server communication. Of course, this type of server won't be popular but clean. There are many ways to achieve autobunnyhopping and etc. and we can't do a lot there because of established principles in community with using scripts/modified clients/older engine builds and so on. Not only BugfixedHL-Rebased has these features.

@anzz1
Copy link
Author

anzz1 commented Feb 28, 2024

Yes, unfortunately the consistency checks in GoldSrc engine are inadequate, and cheaters can exploit this flaw. Valve fixed this with sv_pure in Source engine but that was never backported to GoldSrc like some other features. The immediate remedy would be for @ValveSoftware to add the signatures from this client to VAC, but I doubt they're updating VAC for GoldSrc very often nowadays either. If someone made these kind of hacks for, let's say, Counter-Strike 2 or DotA 2, there would be some hope for action. GoldSrc clearly isn't very high on the priority list.

This was more of a call to moral conscience than anything else to stop distributing cheats. Unless Valve itself does something, there isn't much to be done as a server owner. Cheaters be cheatin', and the battle against cheaters has always been an uphill battle, this is true for basically every online multiplayer game, let alone one that is 25 years old.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants