Question about Wc3 speed hack

Level 5
Joined
Jul 2, 2013
Messages
141
Hello, I have never used wc3 speed hack, but my question is, can you make a trigger that can prevent the use of wc3 speed hack in a map?
 
Level 5
Joined
Jul 2, 2013
Messages
141
You've never seen? This hack will allow you to adjust your game speed up to like x8 times. So basically each 1 second, 8 seconds pass, 1 second real time, 8 second game time. Everthing is speeded up.
 
Level 12
Joined
May 22, 2015
Messages
1,051
What is the issue with allowing this to happen?

I imagine it would be really hard to deal with, but also I don't care if someone wants to try to play at 8x speed on my map. They will just lose badly lol. Usually slow motion is better so you have more time to react or make decisions.
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
that is single player I assume? you could for instance have a unit that has 200 units per second movement, and order it to move 400 units in straight line, and check after roughly 2 seconds if its there(maybe even in periodic timer), and if it has arrived before, the game speed is different(there is a bit of a problem here since you can have different game speeds normally too)
 
Level 5
Joined
Jul 2, 2013
Messages
141
It's not about movement speed and not aboult single player. There is .exe cheat file that allows you to modify that "set game speed function" and increase it. Pretty much like starting a maphack. The host can use this hack and it works for the whole game, all players play x8 speed if the host changes the game speed.

EDIT :Edo, maybe your suggestion will work, if i use real seconds event.

EDIT2: I'll have to download this hack and test solutions.
 
Level 5
Joined
Jul 2, 2013
Messages
141
ah I didnt think of the fact that timers will also pass faster lol

Yes, I meant wait timers, there are 2 wait timers, one for game-time seconds and one for real time seconds, right? So we need to use these to detect the hack.
 

Dr Super Good

Spell Reviewer
Level 60
Joined
Jan 18, 2005
Messages
26,837
Why bother detecting it. It does not alter game play in the slightest, it only speeds the tick frequency of the game. You get a similar effect running replays at 32* speed.

Unless of course you have created an RPG where time is progress. In which case it is your own fault for bad map design I guess. If you make it challenging so that humans must provide skilled input to progress then people will not speed up the map anyway.
 
Level 5
Joined
Jul 2, 2013
Messages
141
Why bother detecting it. It does not alter game play in the slightest, it only speeds the tick frequency of the game. You get a similar effect running replays at 32* speed.

Unless of course you have created an RPG where time is progress. In which case it is your own fault for bad map design I guess. If you make it challenging so that humans must provide skilled input to progress then people will not speed up the map anyway.

Doctor, I respect you much. Can you help me on this one? I've indeed started creating an rpg, well you will not be able to kill bosses with speed hack, but it will help farming and leveling which I want to prevent. Please help me triggering this, can you try the solution to detect a unit's position and then after 2 real seconds of game time(using wait timer) detect the position again and for example if it's more than 522, defeat everyone. The unit will be specific(I will add patrol unit outside the playable map for this task)
 

EdgeOfChaos

E

EdgeOfChaos

Using this on battle.net will definitely result in a desync. In single player, I guess you could.

I know what speedhack you're referring to, and it speeds up everything. The game will act exactly the same whether it's 1x or 10x speed, so I doubt there is any way to detect it in a map, unless like there's one function that doesn't get sped up that you can use. The "real time" wait will still get sped up, so it will be 10x real time instead.

It seems that the solution is to make an RPG where people don't afk farm to win. Or failing that, add an anti-afk system.
 
Level 10
Joined
Aug 24, 2012
Messages
430
Doctor, I respect you much. Can you help me on this one? I've indeed started creating an rpg, well you will not be able to kill bosses with speed hack, but it will help farming and leveling which I want to prevent. Please help me triggering this, can you try the solution to detect a unit's position and then after 2 real seconds of game time(using wait timer) detect the position again and for example if it's more than 522, defeat everyone. The unit will be specific(I will add patrol unit outside the playable map for this task)

If people feel the need to use a speedhack to farm and level faster it can only mean that farming and leveling are not fun enough in your map. If such processes are fun enough, people will take their time going through them.
 
Level 5
Joined
Jul 2, 2013
Messages
141
And I wondered why my test with the wait(real time) failed.....

I mean there are those people... who dont wanna play but when they speed up as hosts they ruin gaming for everyone else.

If this can;'t be detected, I guess I'll have to satisfy with anti-afk system. ;/

Edit: This hack can be used in garena. And maybe other gaming platforms as well.
 

Dr Super Good

Spell Reviewer
Level 60
Joined
Jan 18, 2005
Messages
26,837
It modifies the game speed, probably without limit. It probably using whatever normal hosting uses to configure game speed but sets it to something insane.

Have you tried any action to modify game speed?
JASS:
constant native GetGameSpeed takes nothing returns gamespeed
native SetGameSpeed takes gamespeed whichspeed returns nothing
constant native GetGameSpeed takes nothing returns gamespeed
function UnlockGameSpeedBJ takes nothing returns nothing
    call SetMapFlag(MAP_LOCK_SPEED, false)
endfunction
function LockGameSpeedBJ takes nothing returns nothing
    call SetMapFlag(MAP_LOCK_SPEED, true)
endfunction
constant gamespeed MAP_SPEED_FASTEST=ConvertGameSpeed(4)
constant gamespeed MAP_SPEED_FAST=ConvertGameSpeed(3)
constant gamespeed MAP_SPEED_NORMAL=ConvertGameSpeed(2)
constant gamespeed MAP_SPEED_SLOW=ConvertGameSpeed(1)
constant gamespeed MAP_SPEED_SLOWEST=ConvertGameSpeed(0)
 
Level 5
Joined
Jul 2, 2013
Messages
141
It modifies the game speed, probably without limit. It probably using whatever normal hosting uses to configure game speed but sets it to something insane.

Have you tried any action to modify game speed?
JASS:
constant native GetGameSpeed takes nothing returns gamespeed
native SetGameSpeed takes gamespeed whichspeed returns nothing
constant native GetGameSpeed takes nothing returns gamespeed
function UnlockGameSpeedBJ takes nothing returns nothing
    call SetMapFlag(MAP_LOCK_SPEED, false)
endfunction
function LockGameSpeedBJ takes nothing returns nothing
    call SetMapFlag(MAP_LOCK_SPEED, true)
endfunction
constant gamespeed MAP_SPEED_FASTEST=ConvertGameSpeed(4)
constant gamespeed MAP_SPEED_FAST=ConvertGameSpeed(3)
constant gamespeed MAP_SPEED_NORMAL=ConvertGameSpeed(2)
constant gamespeed MAP_SPEED_SLOW=ConvertGameSpeed(1)
constant gamespeed MAP_SPEED_SLOWEST=ConvertGameSpeed(0)


Never thought something like this exists, I don't know jass. Maybe this will work. Can you make it in a sample map? Also, the hack doesnt start immediately when map loads. The host alt+tabs and then sets the game speed to x2 or x30 or whatever. So we would need maybe to modify game speed every 30 seconds or do what to prevent this? OR Can we check if game speed is not equal to fast and if so, defeat all players, crash map etc.?

Or what is this Lock game speed function? Is it possible to "lock" it and not to be able to be modified by external sources?
 

Dr Super Good

Spell Reviewer
Level 60
Joined
Jan 18, 2005
Messages
26,837
Can you make it in a sample map?
Sure. I have attached one where Player 1 hitting ESC will toggle game speed from fastest to slowest.

If this actually makes a difference when the "hack" is running is another question. The hack could ignore it completely. Or it could reset speed to normal. I do not know and I guess you will have to try.

I still think designing gameplay around low-grinding is the best fix. Remember you are making a WC3 map and not a stand alone game like Diablo III.

Also, the hack doesnt start immediately when map loads. The host alt+tabs and then sets the game speed to x2 or x30 or whatever.
When speed is not locked you can change game speed with the '-' and '+' numpad keys. Most multiplayer games are hosted with speed locked which disables them. My guess is that the server can still send up game speed change packets even when speed is locked. The hack must create fake speed change orders, ordering the game to an impossible speed. WC3 supports such speed for replay playback purposes however it is not meant to be used for actual play.

So we would need maybe to modify game speed every 30 seconds or do what to prevent this?
This would be the ideal solution if possible.

OR Can we check if game speed is not equal to fast and if so, defeat all players, crash map etc.?
Bit too malicious.

Or what is this Lock game speed function?
Used to disable user game speed changes. Commonly used in multiplayer to stop "speed wars" where two players constantly change game speed to opposite extremes. This is a common feature to most good RTS games, even Age of Empires had it.

Is it possible to "lock" it and not to be able to be modified by external sources?
When set to locked it should be impossible to be changed. However I am guessing WC3 does not actually checked if it is locked when receiving a speed change command and so will change speed regardless. As such I doubt it is possible.
 

Attachments

  • HaaG - Game Speed Demo.w3x
    16.3 KB · Views: 212
Level 5
Joined
Jul 2, 2013
Messages
141
Doctor, I tested the map, when I turn on the speed hack to x2 for example and press escape, the map changes settings to slowest, but now the "Slowest" is the usually what's known as "fastest". Now, when I change speed to x5 and press escape to slow it, it makes it x2, which is twice faster than the fastest. Can we fix this ?
 
Top