| 03-04-2009, 07:29 PM | #1 |
There are 3 possible ways that a player can cheat in Sheep Tag. -Map hacking -Pauses the game (to causes an interruption in actions) -Saving the game (to causes same interruption in actions) Are there way through triggers or 3rd party tools to prevent or detect this events? I understand that there is a map-hack prevention resource on this sight, but it appears to require that the map has an extra in which will never be revealed to the players. However, I do not want to have this extra area appear on the map. I'd like to keep my minimap fairly clean. |
| 03-04-2009, 07:53 PM | #2 |
Pausing and Saving don't interrupt actions, orders are maintained through these events. |
| 03-04-2009, 07:58 PM | #3 |
But they do interrupt a players actions. For example: If I am continuously right clicking, and someone pauses the game, it interrupts my actions, causing a possible mistake. This is why I must prevent or detect these things. If someone pauses the game, waits 0.5 seconds, then resumes the game, a player will be caught off guard; and in a very fast paced game, that can cause a huge problem. |
| 03-04-2009, 09:24 PM | #4 |
I've never been caught off-guard like that in a sheep tag, as long as you are paying attention pausing/resuming has no effect on the game play. F10+R+Esc takes less than a second for me to hot-key too, if I feel its been paused for too long. In addition, as ShadowWolf said, it doesn't interrupt orders when the game is paused. |
| 03-05-2009, 02:15 AM | #5 |
Ok, let me try again. In world-class sheep tag games, it's a problem. In our world wide tournament, we count it as a 3 minute penalty. To be quite frank, I'm not interested in reasons why I don't need these things. I'm only interested in solutions. |
| 03-05-2009, 02:21 AM | #6 |
Pausing - Pause/Resume game 3 times for every player at the beginning of the game, so that they have no more pauses left. Saving - There is no way to disable saving a game. Map Hack - I think PandaMike has some sort of solution to this, you can check the resources section. |
| 03-05-2009, 04:31 AM | #7 |
Pandamine's solution is the sole best anti-map hacker. You can easily section off a 16x16 (if that!) section of your map for that purpose if its seriously such a big deal to you. The best you can do about saving is to just plain kick the player; they were cheating anyways. There's an action for when the game is saved; you may be able to get "GetTriggeringPlayer" out of that, I'm not sure. Xombie's 'cure' for pauses will also work. |
| 03-05-2009, 05:04 AM | #8 |
I have a question though. What do you plan to do when someone cheats and lags, causing the game to stop momentarily? Is that cheating too? |
| 03-05-2009, 03:37 PM | #9 |
Because lagging is unintentional (most of the time), it is not considered cheating. Also, we can use -synclimit 10000 with GHost bots to prevent the lag screen (I wish blizzard would come up with such useful features). I understand the Pause 3 times method, but with 12 people in a game, that'll take forever... If no one knows of any other prevention then I am SOL on that one. I have not tried using GetTriggeringPlayer() as a method for handling the save event. The reason for this is that in the UI, the event does not have its conventional "Event - Player saves the game." Because of this, I highly doubt it is possible determine the "Triggering" player. Anyone know a good replay-viewer tool to check for saves? Thanks for the suggestion of PandaMine's anti-map hack. I will investigate and implement. |
| 03-05-2009, 05:36 PM | #10 |
Do this test: * open a melee map with Jass New Gen Pack * Create a trigger called "test" * Convert to custom text * select the code and erase it * paste this code: JASS:scope Test initializer init private function Show takes nothing returns nothing call DisplayTimedTextFromPlayer(GetTriggerPlayer(), 0,0,2, GetPlayerName(GetTriggerPlayer()) + " has saved the game...") endfunction private function init takes nothing returns nothing local trigger t = CreateTrigger() call TriggerRegisterGameEvent(t, EVENT_GAME_SAVE) call TriggerAddAction(t, function Show) set t = null endfunction endscope * Save it with other name * Test it on Bnet if it gives the name of the player then you can detect the moron who fucks your game :) |
| 03-05-2009, 05:46 PM | #11 |
"world class" tournaments over bnet are lame anyway play in person, over lan, and ppl who are fags can be dq'd |
| 03-05-2009, 06:40 PM | #12 |
Thanks for the extremely useful suggestion emjlr3. You want to pay for 20 European's plain tickets? Moyack, I will try your script. If it works, I will add rep to you. I have been looking for a solution for ages. Vexorian couldn't even find one. |
| 03-05-2009, 06:47 PM | #13 | |
Quote:
|
| 03-05-2009, 07:41 PM | #14 |
JASS:scope Test initializer init private function Show takes nothing returns nothing call DisplayTimedTextFromPlayer(GetTriggerPlayer(), 0,0,2,"%s has saved the game.") endfunction private function init takes nothing returns nothing local trigger t = CreateTrigger() call TriggerRegisterGameEvent(t, EVENT_GAME_SAVE) call TriggerAddAction(t, function Show) set t = null endfunction endscope ps learn "secrets" of jass. |
| 03-05-2009, 11:06 PM | #15 |
Does that actually detect the player? Eg; does EVENT_GAME_SAVE track the player who saved, or just detect the action of the game saving? |
