ValveSoftware / halflife

Half-Life 1 engine based games
Other
3.65k stars 617 forks source link

Half-life Bunnyjumps and special #1154

Open AllesRatten opened 11 years ago

AllesRatten commented 11 years ago

Hello,

the "special" command and its pair "_special" alias made possible to create looping scripts with the otherwise very restricting scripting language of hl. Without it there is no way for running scripts looped, without blocking the client's movements.

For example, on many servers (and in the Adrenaline Gamer Mod [promod for Half-life]), the bunnyjump-prevention is turned off, allowing players to do full bunny jumps if they jump on the exact same time when they hit the ground.

To achieve this, players have to perfectly time every jump while doing other hard moves, like aiming, and swiching weapons in fast speed.

Perfeclty timing the jumps with high fps is nearly impossible, so players either have to use a repeated jumping scprit, like :

alias "+bunnyhop" "+jump; wait; -jump; wait; +jump; wait;-jump; wait; +jump; wait; -jump; wait; +jump; wait; -jump; wait; +jump; wait; -jump; wait; +jump" alias "-bunnyhop" "-jump"

But this scipt causes the feeling of lagg, because the wait commands in it. the more it is there the worst.

Or they can use the special _special to write this repeating scrpt:

alias hop "+jump; wait; -jump; wait; special" alias +bunny "alias _special hop; hop" alias -bunny "alias _special"

We need any sort of help there. I would like to ask you to either put back the special and _special commands in the game, or provide another possibility of writing scripts with infinite loops in it.

Alles_Ratten

BlackShadow commented 5 years ago

To be honest you can still pretty much get _special back with 2013 Pre-Steam Pipe Update of Half-Life engine. And im pretty sure whole pro community is aware of this. So yeah what we want is bring _special back in current version so we don't have to downgrade our game and use the old version.

AnAkkk commented 5 years ago

_special is not only for bunnyhop and it was removed because it can give an unfair advantage for a number of things. The proper way to do this is to add a server side setting.

If people are able to use older versions of the game and still play on latest servers then that is an exploit which needs to be fixed.

BlackShadow commented 5 years ago

Like what? I've literally never seen _special give unfair advantage since 2002. Like i said non-pro servers has bunnyhop cap which is good solution for regular players. And also downgrading a game is not really an exploit.

MKMatriX commented 5 years ago

Silent walk, bhop, double crunch. Isn't this that unfair? I mean new player can't kill me even once. I wasted years on this game. And even without bhop, new players think that I am cheater. So why don't you make game a bit more fun for so old funs?

And I know about RCE of this year, but I still will patch my game with old dll's. Unfair is that there is no ingame tutorial about bhop, or silent walk, but we still have google).

Also there is no easy way to allow bhop, or _special for servers.

SamVanheer commented 5 years ago

I looked into this a bit. Using the script provided in the first post as an example:

alias hop "+jump; wait; -jump; wait; special"
alias +bunny "alias _special hop; hop"
alias -bunny "alias _special"

When executing +bunny, in the space of one command execution this will happen:

+bunny is executed
_special is aliased to hop
hop is executed
+jump is executed
wait one frame
-jump is executed
wait one frame
special is executed
special inserts the _special command at the end of the client command buffer

After all other commands have been executed _special is executed, which executes hop, which does the whole thing again.

The difference between regular alias commands and _special is that _special is appended at the end of the buffer instead of immediately executing, which would cause an infinite loop that prevents any other commands from executing.

The really interesting part is this: https://github.com/ValveSoftware/halflife/blob/c76dd531a79a176eef7cdbca5a80811123afbbe2/cl_dll/vgui_TeamFortressViewport.cpp#L1439-L1464

This is where the special command is handled.

According to the comment _special is supposed to be sent to the server, but EngineClientCmd executes the command on the client. This means that _special only works this way because it is mistakenly being executed on the client instead of the server.

The server handles both special and _special commands in order to execute class-specific commands, so the special behavior of _special is actually a bug.

In my opinion _special presents an unfair advantage over players that don't know or choose not to use it, and it evidently wasn't intended to work this way. Otherwise a special purpose command to append commands to the end of the buffer would have existed in the engine.

AllesRatten commented 5 years ago

I think most people just want any sort of autobhop, it doesnt have to be with _special. It could be implemented as an option in the menue, or just as an commandline.

In fact as mentioned by several people before, continuous bhop is essential for half-lifes multiplayer gameplay. For the promod "adrenaline gamer" we solved this with an upgrade that includes an autobhop, however in half life it's still a mess. Please don't destroy the steamversion of half-life any further and just bring _special or a replacement back.

It's such a sad story when a good game gets slaughtered :(

HaraldQuake commented 5 years ago

I agree it would be very nice to have a autojump-checkbox in multiplayer options.. and a no speedcap-option in server options. In general I don't understand why we don't have all features that we currently have in OpenAG. It's no secret that pretty much the whole competetive Half-Life 1 community is playing Adrenaline Gamer (or OpenAG to be exact) just because it has more maps and more features (for example locations-files for maps, voting-menue, matchmode, bunnyhop, optional crosshair-settings, forcemodels...) etc. etc. It would be nice to have all these quality of life improvements also in normal Half-Life 1 Multiplayer..

BlackShadow commented 5 years ago

@mikela-valve I apologize if im bothering you about this too much, but please update us about _special. People want this "feature" back and we didn't gotten any respond so far. Removing _special really effected the HLDM Pro community. I'm pretty sure the people who requested removing _special doesn't even play Half-Life anymore and left the pro community their own good. Because of this, pro community has to downgrade their Half-Life version to pre-Steam pipe and can't get the newest updates.

i486 commented 5 years ago

I always thought removing _special from CS 1.6 was kind of amusing. Because whoever decided to remove it might as well have disabled binding +jump to mwheelup/down because they are essentially the same thing except using scroll repeatedly just hurts your finger.

I know that a lot of steam players just switched to non-steam or resort to using some 3rd party AutoIT bunnyhop script/DLLs after Valve disabled _special.

Bringing back _special would make many of those players to consider playing back on Steam version.

This game is 20 years old. Almost no one considers using _special bunnyhop/scripts as "cheat" these days. Every jump servers allows it in my country at least. Some of these servers even use a plugin to automatically enable it on players. Even the pub/vanilla/matchmaking servers allows it.

BringBackSpecial :)

fe7ch commented 5 years ago

Almost no one considers using _special bunnyhop/scripts as "cheat" these days

Only if you play on pubs.

BlackShadow commented 5 years ago

I wouldn't consider bringing _special back in CS. It completely breaks CS's purpose. But however Half-Life is a special case. It was like a feature for Half-Life. What Alfred did back in the day was completely care-free. He just like listened one guy and removed it from the game. Now how fair is that?

BlackShadow commented 3 years ago

Still bumping this after one year and still thinking it's was a really bad move deleting _special.

HaraldQuake commented 3 years ago

Still bumping this after one year and still thinking it's was a really bad move deleting _special.

agreed.

peon501 commented 3 years ago

All scripts related to bhop should be removed. It is unintended stuff. If you want to use it, use it on pre-patch.

Maxi605 commented 3 years ago

All scripts related to bhop should be removed. It is unintended stuff. If you want to use it, use it on pre-patch.

I know it's unintended but it became such a big part of the game, i don't agree with the option of remove it completely, a choice for server owner to allow it would be really nice tho.

BlackShadow commented 3 years ago

All scripts related to bhop should be removed. It is unintended stuff. If you want to use it, use it on pre-patch.

Bunnyhopping became a core mechanic for this game. You cannot just delete it. It's big part of Half-Life. For the whole pro community. There's a bunnyhop prevention, it caps player's speed when they reach 350-400 units.. Bunnyhop cap is fair for casual servers, they remove capping in pro servers anyway. However deleting _special puts Pro Half-Life players in a whole another situation. I doubt you're even aware what you're talking about.

peon501 commented 3 years ago

Loops/infinite cycles and recursion should be removed from any client-side gameplay controls scripting language of any game. The "pro" community should not use these scripts and in mp. It doesn't make any sense to keep it. Talking about bunnyhop, you can gather the pro community and make a mod and play on the mod server for that, and don't send commands via scripts with recursion to the server-side that is spammy and on the original game. These scripts just make an unequal playing field and unnecessary scripting.

BlackShadow commented 3 years ago

Loops/infinite cycles and recursion should be removed from any client-side gameplay controls scripting language of any game. The "pro" community should not use these scripts and in mp. It doesn't make any sense to keep it. Talking about bunnyhop, you can gather the pro community and make a mod and play on the mod server for that, and don't send commands via scripts with recursion to the server-side that is spammy and on the original game. These scripts just make an unequal playing field and unnecessary scripting.

I'm still sticking the thought that you're unable understand to what i'm trying to point. "Pro" community makes the game what it is today. Casual players come and go, it's the pros stick around. Besides even if you delete _special you still can bhop. There's lot's of ways to bhop without _special. Deleting the _special just makes people use alternative ways to bhop. So it's better to leave it instead removing it. Also there's a mod for pros to play, not all people play it but there's one but it's not a solution for this. Most of the people stick to OG Half-Life. Also there's no equality/balance in Half-Life, you should remember that.

peon501 commented 3 years ago

So it's fine for most people to be without _special. "Most of the people stick to OG Half-Life."

HaraldQuake commented 3 years ago

People should not be forced to play a mod just to enjoy useful and established features like bhopping, compfortable matchmaking and server options. It divides the playerbase. These features should be in original HL aswell even without any mods. It's stupid that players basicly have to play on an outdated version or use external programs like autohotkey just to compete vs other experienced players. The game should have _special or add cl_autohop just like openAG has. In my opinion cl_autohop is the easiest way to enjoy advanced movement since it doesn't require any scripting and there could also be a server option to restrict this.