BeepIsla / CSGO-Overwatch-Bot

Automatically solve CSGO Overwatch cases
GNU Affero General Public License v3.0
186 stars 41 forks source link

Suggestions/Accuracy/Improvements #74

Open ghost opened 4 years ago

ghost commented 4 years ago

Hi. Firstly. I appreciate your project very much. It's very helpful and does a great job as is. I do however have a few suggestions.

Bhop: To detect bhop you could look at how many occourances of the suspect being in the air. on the ground for 1 tick. and in the air again there are. And allow the user to set the threshhold for how many bhops in a row is allowed. If that's not possible you could look at their velocity and if it's above a certain margine for more than X amount of ticks then add an infraction.

Wallhack: This one is tricky. And this might not be possible with the tools at hand, and I'm sorry for suggesting it if it is not. But Since this bot is really good at going after rage cases You could try seeing how many ticks the enemy was visible for before being shot. The cs:go client does know when people are out and can be proven by the fact that vischams exist.

Triggerbot/Aimbot: How many ticks did the suspect have his crosshair on the enemy before doing damage. Again, Maybe not possible. The game client knows because dwInCrossID changes when you have your crosshair on somebody. A rage triggerbot would be 1. Also. A lot of aimbots that do the correction when you click mouse1 work that way. So it'd make a better aimbot detector.

Edit:

Another idea for an aimbot detector. Most aimbots calculate a Vector3 to do the actual flicking for rage aim. And it basically equates to The Suspect flicking in a perfectly straight line to the suspect. So. When an enemy is killed by the suspect you could calculate a Vector 3 for each tick up to X ticks before the enemy died and see if the viewangles on those ticks could be plotted on the vector3 you calculated upto the tick where the enemy died.

Thank you for taking the time to read this :3

BlackYuzia commented 4 years ago

Bhop: To detect bhop you could look at how many occourances of the suspect being in the air. on the ground for 1 tick. and in the air again there are. And allow the user to set the threshhold for how many bhops in a row is allowed. If that's not possible you could look at their velocity and if it's above a certain margine for more than X amount of ticks then add an infraction.

I think bhop detector can be too stupid. Why? I can use mouse wheel and get the same result like if I was use cheats.

How can script (bot) understand was user use mouse wheel and didn't use cheats like "PRESS SPACE X TIMES"?

Triggerbot/Aimbot: How many ticks did the suspect have his crosshair on the enemy before doing damage. Again, Maybe not possible. The game client knows because dwInCrossID changes when you have your crosshair on somebody. A rage triggerbot would be 1. Also. A lot of aimbots that do the correction when you click mouse1 work that way. So it'd make a better aimbot detector.

Yea, I think this can be cool... if main developer do this. :thinking:

Suspectxyzz commented 4 years ago

Wallhack: This one is tricky. And this might not be possible with the tools at hand, and I'm sorry for suggesting it if it is not. But Since this bot is really good at going after rage cases You could try seeing how many ticks the enemy was visible for before being shot. The cs:go client does know when people are out and can be proven by the fact that vischams exist.

Triggerbot/Aimbot: How many ticks did the suspect have his crosshair on the enemy before doing damage. Again, Maybe not possible. The game client knows because dwInCrossID changes when you have your crosshair on somebody. A rage triggerbot would be 1. Also. A lot of aimbots that do the correction when you click mouse1 work that way. So it'd make a better aimbot detector.

https://youtu.be/p-i5b5lAR3k?t=489 (it is in Russian but it needs to improved Aimbot/Triggerbot +Anti-Aim legit aa)

ghost commented 4 years ago

@BlackYuzia Here's a simple legit AA detection script I made just now using information from here .I'm sorry if there are mistakes in it. I do not know javascript so I just took a look at your other classes and guessed what I had to do. Thanks

The reasoning behind this working is that, During normal play. These values can only disagree by a maximum of 35 degrees.

module.exports = (demoFile, sid, data) => {
    let ourPlayer = demoFile.players[tick.player];
    if (typeof ourPlayer === "undefined") {
        return;
    }
    if (ourPlayer.exists){
        lbyDelta = ourPlayer.m_flLowerBodyYawTarget - ourPlayer.eyeAngles().y_normalized
        if(lbyDelta < 35){
            return;
        }
            data.curcasetempdata.other_infractions.push(demoFile.currentTick)

    }
}
BlackYuzia commented 4 years ago

@Crazily good job :+1:

Did you create PR (Pull Request) or you didn't test this?

BlackYuzia commented 4 years ago

@Crazily you did a mistake :eyes: image

tick is not defined. how I saw in other detectors you need use this: https://github.com/BeepIsla/CSGO-Overwatch-Bot/blob/master/detectors/aimbot.js#L5

BlackYuzia commented 4 years ago

@Crazily

hmm. I was a try to fix you mistake with ticks. But if I run your detect I get other errors.

For example: Player is not exist always. I mean, ourPlayer.exist always is undefined.

module.exports = (demoFile, sid, data) => {
        demoFile.on("tickend__", (tick) => {
    let ourPlayer = demoFile.players[tick.player];
    // console.log(ourPlayer);
    if (typeof ourPlayer === "undefined") {
        // console.log("user is undefined", ourPlayer);
        return;
    }
    if (ourPlayer.exists){
    console.log("user is exist"); // I didn't get this message.  
        // Player didn't exist and I didn't know did this attribute is really exist.
        // ourPlayer.isAlive return true or false. You did some wrong?
        lbyDelta = ourPlayer.m_flLowerBodyYawTarget - ourPlayer.eyeAngles().y_normalized
        if(lbyDelta < 35){
            console.log("AA is not detected:", lbyDelta);
            return;
        }
                    console.log("AA is detected:", lbyDelta);
            data.curcasetempdata.other_infractions.push(demoFile.currentTick)

    }
    console.log("user didn't exist", ourPlayer.isExist);
});
}

UPD: I can't find "player.exist" on this site: https://saul.github.io/demofile/classes/_entities_player_.player.html UPD2: Use ourPlayer.getProp("DT_CSPlayer", "m_flLowerBodyYawTarget"), I think this is work. But I didn't know what a y_normalized.

In docs I saw only ourPlayer.eyeAngles.pitch and ourPlayer.eyeAngles.yaw ( I think this is x and y right?) So, I was use yaw.... and pitch in next code:

( I also test what really right value) But I did false positive detections with next code:

module.exports = (demoFile, sid, data) => {
        demoFile.on("tickend__", (tick) => {
    let ourPlayer = demoFile.players[tick.player];
    // console.log(ourPlayer);
    if (typeof ourPlayer === "undefined") {
        // console.log("user is undefined", ourPlayer);
        return;
    }
    if (ourPlayer.isAlive){
        const m_flLowerBodyYawTarget = ourPlayer.getProp("DT_CSPlayer", "m_flLowerBodyYawTarget");
        // I test this two results. I didn't know what right.
        const lbyDelta2 = m_flLowerBodyYawTarget - ourPlayer.eyeAngles.pitch;
        const lbyDelta = m_flLowerBodyYawTarget - ourPlayer.eyeAngles.yaw;

        console.log("1", lbyDelta);
        console.log("2", lbyDelta2);

        if(lbyDelta < 35){
            console.log("AA is not detected:", lbyDelta);
            return;
        }
            console.log("AA is detected:", lbyDelta);
            data.curcasetempdata.AA_infractions.push(demoFile.currentTick)

    }
    // console.log("user didn't exist", ourPlayer.isExist);
        });
}

But how I write upper, I get false results with lbyDelta and lbyDelta2 image

BlackYuzia commented 4 years ago

@Crazily https://github.com/saul/demofile/blob/c7e33a3/src/entities/player.ts#L93

ghost commented 4 years ago

What you mean by "How do I write upper?" It may be being false because of the opposite direction if that's what you're talking about. Try returning if lbydelta is <=35 or is greater than or equal to 325 assuming that it's measured using 360 degrees. I'll try to impliment it myself today and if I end up getting it working I'll send it in a pull request

BlackYuzia commented 4 years ago

Hmm. I done something... unstable.

This ... kinda work. But I don't sure by 100%. I only know what this guy is 100% use AA: image

I test it on myself and get only 1-2 detects... (this is great) I saw one more guy who get greater like 10 detects: image

But I didn't sure what he use anything...

@Crazily I will waiting your impliment of AA detector. Maybe you did better like me :eyes:

I also push all what I done to another branch.

MyBranch: https://github.com/BlackYuzia/CSGO-Overwatch-Bot/blob/aa_detector/detectors/AA.js

I get method for check from there:

https://www.unknowncheats.me/forum/counterstrike-global-offensive/208735-detecting-player-antiaim.html

ghost commented 4 years ago

I'd like to ask @BeepIsla or @BlackYuzia for help on this one. I've seemed to hit a wall with trying to detect Legit AA and not Rage AA I'm trying to create a variable for m_bFreezePeriod and can't figure out how to get it from the demoFile library you're using. The reasoning behind why like to be able to tell if it's freeze time is that the LBY Delta gained in freeze time will be more reliable since you cannot move. Rage AA's are automatically disabled by the cheat itself during freeze time but on Most cheats Legit AA is not.

BeepIsla commented 4 years ago

Game events:

Network property:

ghost commented 4 years ago

Thank you @BeepIsla, You a real one ;D

BeepIsla commented 4 years ago

Just as a note for both of you, I am currently in the process of finishing up the long awaited rewrite of this bot which I first talked about many months ago. I hope it will fix a few problems the bot had with demos from Perfect World and it should make adding new detectors more easy and the code will be a little less of a horrible mess. It may still take a little while to be ready though.

Just saying this now, I don't really think its worth it adding big new features right now but if you want you still can and then port it to the new version.

ghost commented 4 years ago

Thank you. And I hope the rewrite uses a more reliable method of detecting aimbot. The Rage AA detector that @BlackYuzia Made produced nearly no false positives when I tested it. But when I gave it a 30 second long demo of me anti-aiming it returned 500 positives. Seems like it'd make a welcome addition to the rewrite.

BeepIsla commented 4 years ago

Maybe, its not a priority right now things can always be updated later, for now I just focus on making it work.

ghost commented 4 years ago

That's fair. Better to have a base that works and works the way you want it.

BeepIsla commented 4 years ago

I have released version 2.0 - The mentioned above AntiAim detection is included.

blackslive commented 4 years ago

https://streamable.com/xa1pei That person was legitimized by ow boost. The report was made recently but no aimbot was detected. what can i change to make aimbot detection more accurate? Screenshot_3

another case that aimbot was not detected. wall was detected because I lowered the definition from 5 to 4. https://streamable.com/rguc6z Screenshot_34

blackslive commented 4 years ago

this script is a joke. the suspect was semi-rage, only attacked 1 explosive grenade while his partner passed. that's why he took griefing, he didn't take aimbot or wall. this script is manipulated to legitimize suspicious semi-ragers. Screenshot_3 https://streamable.com/65mz2z

BeepIsla commented 4 years ago

Then don't use it or improve it. Feel free to contribute.

As you can see in #90 discussion about AntiAim detection being broken is already on going. The rest is extremely easily bypassed by stepping with an Aimbot rather than immediately fully snapping.

Cheats are customizable, basic detection like this will always be bypassable. Valve does not want you to use this either, people have had their account terminated before for using this.

BlackYuzia commented 4 years ago

AA Detectors, possible, has been fixed :thinking: @blackslive try again.

Redownload repo with script

About semi-rage. Aimbot detects can detect only rage aim. AA detects also only for rage cheater.

Legit or semi-rage shouldn't/cant' detect by this script.

We have only demo. In demo we have too low info.

Server anticheat has more info and functions. Client anticheat have more info and functions.

I think we can detect rcs but this can have false-positive sometimes :thinking:

BlackYuzia commented 4 years ago

Offtop

Valve does not want you to use this either, people have had their account terminated before for using this.

@BeepIsla how many accounts has been deleted by using this bot/script? :eyes:

BeepIsla commented 4 years ago

I don't know, I only know of 3 I think a few years ago.

Suspectxyzz commented 2 years ago

if you can add whether an account has prime or no ? to be moved to another category like prime no-prime report no-report it's hard but much better if you have time I tried