HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Getting Desperate With Replays

07-14-2007, 11:20 AM#1
PandaMine
THE FOLLOWING THINGS HAVE BEEN FIGURED OUT
Quote:
GetCameraTargetPositionX/GetCameraTargetPositionY will give the current camera position regardless if its in game or a replay. This means in almost all situations the value that this native will return will be different from the game as a pose to the replay. The only problem is being able to store/sync that data so when compared you can determine if its a replay

Using PauseGame has no effect in replays. Currently the only thing known to unimpeded through the pause is TriggerSleepAction. If there is someway to get the system time or any other actions that are unaffected by the pause replays could easily be detected

As some people may be aware, I am currently developing an Anti Map Hack System which is having no problems except for one.

As many know already the system works similarily to another Map Hack theory of creating a corrupted model in an area, MH reveals that area (which shouldnt normally be visible) and boom there goes ur wc3.

The problem with this system is the same thing happens in replays, since replays have a function to turn off fog of war it essentially does the same thing as Map Hack, so this means if you turn of "Fog Of War" in the replay it will crash your Wc3

What im asking is does ANYONE have any knowledge of anything acting differently in replays as a pose to playing the proper game. Anything from handles, loading of files in mpq, cameras (I know in some instances cameras behave differently in replays then proper games), anything at all that might be useful in finding the difference between the two

What I have already found out

1)
Collapse JASS:
ReloadGameCacheFromDisk
and
Collapse JASS:
SaveGameCache
returns true if your playing the game and false if its a replay BUT it only works in singleplayer. In multiplayer it ALWAYS return false

2) GetLocalPlayer does nothing in this matter

Your help would be much appreciated, special shoutout to Vexorian, PitzerMike, Captain Griffen (who already helped me heaps regarding this matter, thx), PipeDream or anyone else who might have knowledge in the area and most likely have help.

Alternatly if you can detect the "Turn Fog Of War" off option in replays that would also be sufficient.

Thanks and hopefully this will be my last rants about differentiating in replays

Also do not reply about using JASS native like
Collapse JASS:
IsFoggedToPlayer
or
Collapse JASS:
IsVisibleToPlayer
or anything like that (these have been tested and do not work), the Fog Of War option only works on a graphical level, not a JASS one. Although you might see the area because the fog has been lifted, according to JASS (and therefore WC3) the area is still fogged (this is much the same way MH works)
07-14-2007, 11:28 AM#2
Toink
If you can't draw a tiger, draw a dog.
07-14-2007, 11:30 AM#3
PandaMine
That makes a hell of a lot of sense ......
07-14-2007, 11:38 AM#4
PitzerMike
I suggest you stop wasting your time with it.

Give the hackers a day or two and they'll come up with an improved hack that deals with your anti-hack strategies. (if your map is popular enough for them to actually care that is).

You can only lose.
07-14-2007, 11:39 AM#5
Toink
Want me to elaborate? Fine.

You are trying to do a very complicated thing, which is impossible imo. You can't do everything in WE(If you can't draw a tiger), and you can't force your method to be a good anti MH system. Go for something easier.(Draw a dog)
07-14-2007, 11:42 AM#6
PandaMine
And I can also figure out a way to counter them back, it goes round and round. There are actually 5 ways to counter maphack that i have contemplated but havent released to the public, because i dont want the MH programmers to instantly know something that hasent been countered yet.

Anyways back to topic do you have any ideas? I will give myself another couple of days before I will try the other methods that work with replays
Quote:
Originally Posted by Toink
Want me to elaborate? Fine.

You are trying to do a very complicated thing, which is impossible imo. You can't do everything in WE(If you can't draw a tiger), and you can't force your method to be a good anti MH system. Go for something easier.(Draw a dog)

It aint impossible, just very hard. There is a difference between the two its just that I havent been able to find it (the ReloadGameCacheFromDisk proves it, unfortunatley it only works in single player).

This is the reason why im asking the community because someone may have ideas or experiences which may help solve the problem. Saying that you'll never win or just dont worry because its impossible aint helping, I already got IceFrog testing the system so I don't want to give up on it yet
07-14-2007, 11:47 AM#7
PitzerMike
Quote:
Originally Posted by PandaMine
And I can also figure out a way to counter them back, it goes round and round. There are actually 5 ways to counter maphack that i have contemplated but havent released to the public, because i dont want the MH programmers to instantly know something that hasent been countered yet.

Anyways back to topic do you have any ideas? I will give myself another couple of days before I will try the other methods that work with replays

With the limited possibilities of triggers, models etc. you can never win on the long run.
If you think different, I can't help you.
07-14-2007, 11:50 AM#8
Freakazoid
If you can detect what player is hacking, why don't use just use the "player - defeat" action?
07-14-2007, 11:53 AM#9
PandaMine
It isnt that simple, read this if you want more info
http://www.wc3campaigns.net/showthread.php?t=95310

Basically the system works by turning the MH against itself. Since the MH reveals an area that isnt supposed to be revealed, the corrupted lightning in that revealed area causes Wc3 to crash. Its the fact that Wc3 crashes that causes the MH to disconnect, if I had a choice to just normally disconnect the player then I would have obviously chosen that one

Quote:
Originally Posted by PitzerMike
With the limited possibilities of triggers, models etc. you can never win on the long run.
If you think different, I can't help you.

Does that mean that you wont help me because you think its futile or because you dont know of any differences. I know I may be a bit determined, but if you have made something like this you wouldnt want it flushed down the toilet because of one stupid thing.

Do you actually have anything that can be of any help regarding the replay situation
07-14-2007, 11:57 AM#10
Toink
Not all maphacks disable fog, black mask , etc,.

Some even have the ping hax of doom!! Err.. Ping Detectors, which you can use to detect where a player pinged, even if he was an enemy.
07-14-2007, 11:59 AM#11
PandaMine
Quote:
Originally Posted by Toink
Not all maphacks disable fog, black mask , etc,.

Some even have the ping hax of doom!! Err.. Ping Detectors, which you can use to detect where a player pinged, even if he was an enemy.

I know that, my current system not only detects fog but also detects if invisible units are revealed with MH (regardless if the MH has fog on/off). I am myself going through all the shit MH can do and it takes time, my problem and my ONLY problem is the one regarding replays.
07-14-2007, 12:02 PM#12
Captain Griffen
Seems toadcop was onto something, since GetCameraTargetPositionX seems to not be the same between replay and in game, even over b.net.

From that, the only tricky bit is syncing the values.
07-14-2007, 12:04 PM#13
PandaMine
Finally an answer that was useful

I was looking into that, havent found anything yet although I havent thouroughly tested it (mainly cos I have been messing with cache, etc). Having a look at it now
07-14-2007, 12:11 PM#15
PandaMine
Quote:
Originally Posted by meowmix
there are maphacks probably undetectable in jass no matter how hard you try, the ones that reveal minimap only :/

That can possibly be detected, havent gone onto it though. As for the GetCameraTargetPositionX, it gives different values depending if its a replay or the game. It will give a current position of the camera, so if in a replay your camera is in the exact middle it will give 0,0 however in the game if your camera was going all the around the place it will give different values.

I think I may be onto something but I have a sneaking suspicion that replays auto camera to your hero for your player at the start were as the normal game doesn't. If so I think this may finally be it

EDIT #2 It isnt what I said before, however I remember in DotA replays if a hero on an allied team revived for replays the camera auto zoomed to the location at the revival of the hero. This doesn't normally happen in game