• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Cheat Detection

Status
Not open for further replies.
in a single player game or multiplayer (not like it makes a different anyway)

unless you're looking for ONLY jass, in GUI you can do "Player types substring of whosyourdaddy" for the event or something similar to that, i'm sure theres a jass way but i only know the GUI

The problem is, any action where player enters "whosyourdaddy" or any other cheat, the trigger is automaticly disabled by blizzard
 
Level 11
Joined
Apr 6, 2008
Messages
760
Defeat is they type 'Whosyourdaddy' and 'Iseedeadpeople' and if they type greedisgood substract the amount they get (if they only type greedisgood then -1000 gold and lumber, and if they eg. type greedisgood 10000 and substract 10000 gold and lumber). You prolly need a timer with 0 delay to remove the gold and lumber gained by money and lumber cheat.
 
Defeat is they type 'Whosyourdaddy' and 'Iseedeadpeople' and if they type greedisgood substract the amount they get (if they only type greedisgood then -1000 gold and lumber, and if they eg. type greedisgood 10000 and substract 10000 gold and lumber). You prolly need a timer with 0 delay to remove the gold and lumber gained by money and lumber cheat.

But you can't create a trigger using that action.
 
ah right, but you can have like a dummy you attacking one of the players units (like out of bounds of the map hidden) and check the hp of the unit

But the ability dodge, and such would come into play.

I;m really just looking for a way to detect if someone enables any cheat. Like if there is a way to detect when the game says "<playername>: has enabled cheat!"
 
Level 11
Joined
Apr 6, 2008
Messages
760
I say i anti cheat system a while ago dunno if it was just for Maphack but dont think it got updated with 1.24

This worked

JASS:
library AntiCheat initializer init

globals
    timer Time = CreateTimer()
    
    unit a
    unit b
    
    real MaxHp
endglobals

private function OnCheat takes nothing returns nothing
    if GetWidgetLife(b) == MaxHp then
        call BJDebugMsg("CHEAT")
    else
        call SetWidgetLife(b,MaxHp)
    endif
endfunction

private function init takes nothing returns nothing
    set a = CreateUnit(Player(1),'hfoo',0,0,0)
    set b = CreateUnit(Player(0),'hfoo',0,0,0)

    call UnitRemoveAbility(b,'Aatk')
    
    set MaxHp = GetUnitState(b,UNIT_STATE_MAX_LIFE)
    
    call IssueTargetOrder(a,"attack",b)
    call IssueTargetOrder(b,"hold possition",b)
    
    call TimerStart(Time,3,true,function OnCheat)
endfunction

endlibrary
 
I say i anti cheat system a while ago dunno if it was just for Maphack but dont think it got updated with 1.24

This worked

JASS:
library AntiCheat initializer init

globals
    timer Time = CreateTimer()
    
    unit a
    unit b
    
    real MaxHp
endglobals

private function OnCheat takes nothing returns nothing
    if GetWidgetLife(b) == MaxHp then
        call BJDebugMsg("CHEAT")
    else
        call SetWidgetLife(b,MaxHp)
    endif
endfunction

private function init takes nothing returns nothing
    set a = CreateUnit(Player(1),'hfoo',0,0,0)
    set b = CreateUnit(Player(0),'hfoo',0,0,0)

    call UnitRemoveAbility(b,'Aatk')
    
    set MaxHp = GetUnitState(b,UNIT_STATE_MAX_LIFE)
    
    call IssueTargetOrder(a,"attack",b)
    call IssueTargetOrder(b,"hold possition",b)
    
    call TimerStart(Time,3,true,function OnCheat)
endfunction

endlibrary

Do you know how to set that up to run another trigger instead of those other functions?
 
Level 9
Joined
Apr 28, 2009
Messages
538
That's what i would do:

Event: A player enters chat message as SUBSTRING "whosyourdadd" (without "y" at the end, that's right)
Condition: Entered chat substring (1, 12, "whosyourdadd")
Action: Whatever action you want.
 
Level 2
Joined
Jan 31, 2009
Messages
19
Events
Player - Player 1 (Red) types a chat message containing (whosyourdaddy) as a exact match

Conditions
-None-

Actions
Defeat (Triggering Player) with the message: Cheaters never win!

It should work, it worked for me.
 
Level 14
Joined
Aug 31, 2009
Messages
775
Still won't work, as the entered chat string is sort of lost and replace by a chat string "Cheat Enabled!" but the string cannot be linked back to a player, and hence the action cannot detect it.

The best method I know of is to have a unit owned by the player attacking another unit in the far reaches of the map somewhere.

Your unit should hit for like 1 damage, and be attacking an enemy with 2 health and 1/sec health regen. So, your unit cannot kill the other unit.

When whosyourdaddy is activated, your unit will kill the other, and you can detect the death of that unit and do whatever you want from there on.

As extra precautions, make it so the units cannot move and make triggers to force the attacks so the player can't prevent it. Can also add a black mask visibility modifier over the area with the units so they're more hidden. Could also remove minimap display, remove model file, whatever to make it as hidden as possible.

You can do similar for Thereisnospoon cheat by ordering some unit to cast a spell repeatedly (say, warstomp) and if his mana isn't below a certain number after that cast, you have just detected the infinite mana cheat.
 
Still won't work, as the entered chat string is sort of lost and replace by a chat string "Cheat Enabled!" but the string cannot be linked back to a player, and hence the action cannot detect it.

The best method I know of is to have a unit owned by the player attacking another unit in the far reaches of the map somewhere.

Your unit should hit for like 1 damage, and be attacking an enemy with 2 health and 1/sec health regen. So, your unit cannot kill the other unit.

When whosyourdaddy is activated, your unit will kill the other, and you can detect the death of that unit and do whatever you want from there on.

As extra precautions, make it so the units cannot move and make triggers to force the attacks so the player can't prevent it. Can also add a black mask visibility modifier over the area with the units so they're more hidden. Could also remove minimap display, remove model file, whatever to make it as hidden as possible.

You can do similar for Thereisnospoon cheat by ordering some unit to cast a spell repeatedly (say, warstomp) and if his mana isn't below a certain number after that cast, you have just detected the infinite mana cheat.

Good idea + rep
 
Level 5
Joined
Apr 22, 2008
Messages
139
also give the units the locust ability so they cant be selected, and give them the ward classification so they wont be affected by any auras which could screw up the trigger (like brilliance aura) (but make sure they can attack wards)
 
Level 22
Joined
Nov 14, 2008
Messages
3,256
No need to have almost any trigger at all, all you need is two buildings, one with high damage and the second with high hp regen and make them both enemies to each other. Like you give the damage building to the player (just catch the single player number) When map starts (you have them on a secret place on the map), if he/she types whosyourdaddy, the damage tower will kill the other tower without any notice and just use trigger "unit dies" and check if it is the "hp regen building" if it is, he is cheating
 
Status
Not open for further replies.
Top