CS:GO Aimbot C++ mBoneMatrix falsch am auslesen?

Narcotiqo

New Member
2 May 2018
12
1
#1
hi,
ich habe schon gefühlte 1000 seiten bei Google durch und mir wird schon jeder link
als lila angezeigt lach.

naja undzwar habe ich mich an nen Aimbot für CS:GO ran gesetzt, dieser funktioniert auch, hat lediglich ein kleines problem.

Wenn ich ihn compile und ingame gehe und aimkey drücke und da, sagen wir mal stehen 10 gegner.
Dann sucht er sich nur 1 aus wo hin er aimt, die anderen beachtet er garnicht, erst wenn ich diesen einen spieler der "ausgewählt" worden ist töte, springt er um auf nächste entity. und macht ihn so Targable.

aimt er zb auf ent1 kann ich nicht auf ent2,3,4 usw aimen. ich gehe auf einen anderen spieler in den fov und drücke den aimkey und es passiert garnichts, sobald ich meine maus jetzt aber wieder zu ent1 bewege lockt er. sobald ich ent1 dann getötet habe sucht er sich wahllos (warscheinlich nächste entity in der memory) aus und bei dem dann das gleiche spiel.

ich habe das gefühl das ich die bonematrix 64x auslesen muss, aber das mache ich doch mit der loop?

Ich habe nicht performant oder sonst was gearbeitet, das teil hat mich jetzt ca 1 tag und 1 nacht gekostet.. und ich bin echt ratlos.

Code:
//Code der Aimbot Main

Vector GetBone(int entityId, int targetBone) // Ist Copypasted credits UC.
{
    DWORD boneMatrixOffset = Read<DWORD>(entityId + OFFSET_BONEMATRIX);
    BoneMatrix boneMatrix = Read<BoneMatrix>(boneMatrixOffset + sizeof(BoneMatrix)*targetBone);
    return Vector(boneMatrix.x, boneMatrix.y, boneMatrix.z);
}




void aimer()
{
while(GetAsyncKeyState(aimkey))
   {
static auto dwEngineDLL = Memory->GetEngineDLL();
auto angPtr =Read<DWORD>(dwEngineDLL + OFFSET_CLIENTSTATE);
static auto dwClientDLL = Memory->GetClientDLL();

     
 for (int i = 0; i < 64; i++)
        {
         auto entlop = Read<DWORD>(dwClientDLL + OFFSET_ENTITYLIST + ((i + -1) * 0x10));
         auto BonePos = GetBone(entlop, 8);


//Und ja hier kommt dann auch schon der CalcAngle / GetFoV / SetAngles stuff...
//es wird wohl an der loop im aimer selbst liegen. vlt hat ja einer von euch ne ahnung.
//Mir kommt es so vor während Aimkey gedrückt wird er sich zb entity10 rausnimmt, und auf diesen
//solange verharrt bis er nicht mehr vorhanden ist, aber normaler weise sollte er doch nonstop von 0 nach 64 //loopen habe ja nen while statement am anfang..


}
}
}
bin echt über jeden rat dankbar.

schönen samstag
 
Last edited:

tark

Active Member
2 Jan 2013
626
230
#2
Korrigiert mich, wenn ich falsch liege, aber macht das nicht Sinn, dass der Aimer erst den Spieler tötet und dann zum Nächsten springt?
Oder versteh ich den Threadersteller falsch?
 

Narcotiqo

New Member
2 May 2018
12
1
#4
Korrigiert mich, wenn ich falsch liege, aber macht das nicht Sinn, dass der Aimer erst den Spieler tötet und dann zum Nächsten springt?
nein nein du verstehst es falsch.

Es stehen 10 gegner.
aber der aimbot lockt nur auf einem sobald ich auf einen anderen ziele und den aimkey drücke passiert garnichts obwohl der spieler im fov ist.
FoV check usw. ist alles richtig. gehe ich aber jetzt wieder in den fov von dem spieler wo er lockt, lockt er auch, sobald ich diesen töte springt er sozusagen von dem spieler den er ausliest auf ein neuen in der memory, da wieder das gleiche, nur er bleibt "lockable" die anderen spieler sind so als wenn sie garnicht da wären.

sry für die fomulierung aber ich weiß nicht wie ich es erklären soll....
 
28 Dec 2013
181
76
#5
hi,
ich habe schon gefühlte 1000 seiten bei Google durch und mir wird schon jeder link
als lila angezeigt lach.

naja undzwar habe ich mich an nen Aimbot für CS:GO ran gesetzt, dieser funktioniert auch, hat lediglich ein kleines problem.

Wenn ich ihn compile und ingame gehe und aimkey drücke und da, sagen wir mal stehen 10 gegner.
Dann sucht er sich nur 1 aus wo hin er aimt, die anderen beachtet er garnicht, erst wenn ich diesen einen spieler der "ausgewählt" worden ist töte, springt er um auf nächste entity. und macht ihn so Targable.

aimt er zb auf ent1 kann ich nicht auf ent2,3,4 usw aimen. ich gehe auf einen anderen spieler in den fov und drücke den aimkey und es passiert garnichts, sobald ich meine maus jetzt aber wieder zu ent1 bewege lockt er. sobald ich ent1 dann getötet habe sucht er sich wahllos (warscheinlich nächste entity in der memory) aus und bei dem dann das gleiche spiel.

ich habe das gefühl das ich die bonematrix 64x auslesen muss, aber das mache ich doch mit der loop?

Ich habe nicht performant oder sonst was gearbeitet, das teil hat mich jetzt ca 1 tag und 1 nacht gekostet.. und ich bin echt ratlos.

Code:
//Code der Aimbot Main

Vector GetBone(int entityId, int targetBone) // Ist Copypasted credits UC.
{
    DWORD boneMatrixOffset = Read<DWORD>(entityId + OFFSET_BONEMATRIX);
    BoneMatrix boneMatrix = Read<BoneMatrix>(boneMatrixOffset + sizeof(BoneMatrix)*targetBone);
    return Vector(boneMatrix.x, boneMatrix.y, boneMatrix.z);
}




void aimer()
{
while(GetAsyncKeyState(aimkey))
   {
static auto dwEngineDLL = Memory->GetEngineDLL();
auto angPtr =Read<DWORD>(dwEngineDLL + OFFSET_CLIENTSTATE);
static auto dwClientDLL = Memory->GetClientDLL();

  
 for (int i = 0; i < 64; i++)
        {
         auto entlop = Read<DWORD>(dwClientDLL + OFFSET_ENTITYLIST + ((i + -1) * 0x10));
         auto BonePos = GetBone(entlop, 8);


//Und ja hier kommt dann auch schon der CalcAngle / GetFoV / SetAngles stuff...
//es wird wohl an der loop im aimer selbst liegen. vlt hat ja einer von euch ne ahnung.
//Mir kommt es so vor während Aimkey gedrückt wird er sich zb entity10 rausnimmt, und auf diesen
//solange verharrt bis er nicht mehr vorhanden ist, aber normaler weise sollte er doch nonstop von 0 nach 64 //loopen habe ja nen while statement am anfang..


}
}
}
bin echt über jeden rat dankbar.

schönen samstag
es reicht wenn du die Offsets der client.dll und engine.dll einmal beim Start ausliest. Zeig mal deinen ganzen Code
 

Narcotiqo

New Member
2 May 2018
12
1
#6
es reicht wenn du die Offsets der client.dll und engine.dll einmal beim Start ausliest. Zeig mal deinen ganzen Code
das ist der ganze dann kommt nurnoch der fov check und ich setzte die angles. es muss daran liegen da bin ich mir sicher, weil sobald ich ja den ent1 getötet habe kann der aimbot auf einmal auf ent2 locken nicht aber auf ent3, töte ich dann wieder ent2 kann ich auf ent3 locken.
ich denke ich lese die bonematrix falsch aus oder aus irgendeinem grund liest er sie nur 1x aus
 
28 Dec 2013
181
76
#7
das ist der ganze dann kommt nurnoch der fov check und ich setzte die angles. es muss daran liegen da bin ich mir sicher, weil sobald ich ja den ent1 getötet habe kann der aimbot auf einmal auf ent2 locken nicht aber auf ent3, töte ich dann wieder ent2 kann ich auf ent3 locken.
ich denke ich lese die bonematrix falsch aus oder aus irgendeinem grund liest er sie nur 1x aus
bin mir ziemlich sicher das der Fehler wo anders liegt
 
Last edited:

ebyam

Donator
18 Feb 2017
100
152
#12
so was dachte ich mich schon habe auf UC schon geschaut aber so wirklich schlau werde ich nicht
und aaaaaaaaaaaaaaa aaaaaaaaaaaaaaa die bones lies ich richtig aus... sonst würde ich garnicht erst zum aimen kommen
Code:
int BestTarget()
{
    float Best = aimbot_fov[local_player->getWeaponId()];
    float Closet;
    int Index;

    for(int i = 0; i <= 65; i++)
    {
        entity->getPlayer(i);

        if (!entity->player)
            continue;

        if (entity->player == local_player->local)
            continue;

        if (entity->isImmune())
            continue;

        if (cvars->visiblecheck)
        {
            if (!entity->isVisible())
                continue;
        }

        Closet = engine->GetFOV(local_player->getAngles(), local_player->getEyePos(), entity->getEyePos());

        if(Closet < Best && local_player->getTeam() != entity->getTeam() && entity->getClassID() == 35 && !entity->isDormant() && entity->getHealth() >= 1)
        {
            Best = Closet;
            Index = i;
        }
    }

    return Index;
}
 
Likes: Tur0x

Narcotiqo

New Member
2 May 2018
12
1
#14
ebyam ebyam danke erstmal an dich, hast mir richtig geholfen
[doublepost=1525524628,1525521900][/doublepost]Er sagt mir zwar jetzt mit std::cout an welche entNum sich am nächsten an meinem Crosshair befindet.
das mit der bonematrix will immer noch nicht klappen..


Code:
ich lese die bonestruct wie folgt :

Vector GetBonePosition23(DWORD EntityPtr, int BoneIndex)
{
    DWORD BoneMatrixPtr = Read<DWORD>(EntityPtr + BONE_MATRIX_OFFSET);
    mat3x4 BoneMatrix = Read<mat3x4>(BoneMatrixPtr + (0x30 * BoneIndex));
    return Vector(BoneMatrix.c[0][3], BoneMatrix.c[1][3], BoneMatrix.c[2][3]);
}


auto curEnt = BestTarget(); // BestTarget ist die Funktion nearest entity on crosshair

auto Bonepos = GetBonePosition23(curEnt, 8);

QAngle qAimAngles;
CalcAngles(GetEyePosition(GetLocalPlayer()), Bonepos, qAimAngles);


auto qDiff = qAimAngles - GetViewAngles();
NormalizeVector(qDiff);
auto smooth1 = qDiff / 200.f;
qAimAngles = GetViewAngles() + smooth1;
qDiff = qDiff / 200.f;


NormalizeVector(qAimAngles);
ClampAngles(qAimAngles);
Write<Vector>(angPtr + OFFSET_ViewAngles, qAimAngles);
Aber er aimt einfach irgendwo hin.
 
Last edited:

ebyam

Donator
18 Feb 2017
100
152
#15
ebyam ebyam danke erstmal an dich, hast mir richtig geholfen
[doublepost=1525524628,1525521900][/doublepost]Er sagt mir zwar jetzt mit std::cout an welche entNum sich am nächsten an meinem Crosshair befindet.
das mit der bonematrix will immer noch nicht klappen..


Code:
ich lese die bonestruct wie folgt :

Vector GetBonePosition23(DWORD EntityPtr, int BoneIndex)
{
    DWORD BoneMatrixPtr = Read<DWORD>(EntityPtr + BONE_MATRIX_OFFSET);
    mat3x4 BoneMatrix = Read<mat3x4>(BoneMatrixPtr + (0x30 * BoneIndex));
    return Vector(BoneMatrix.c[0][3], BoneMatrix.c[1][3], BoneMatrix.c[2][3]);
}


auto curEnt = BestTarget(); // BestTarget ist die Funktion nearest entity on crosshair

auto Bonepos = GetBonePosition23(curEnt, 8);

QAngle qAimAngles;
CalcAngles(GetEyePosition(GetLocalPlayer()), Bonepos, qAimAngles);


auto qDiff = qAimAngles - GetViewAngles();
NormalizeVector(qDiff);
auto smooth1 = qDiff / 200.f;
qAimAngles = GetViewAngles() + smooth1;
qDiff = qDiff / 200.f;


NormalizeVector(qAimAngles);
ClampAngles(qAimAngles);
Write<Vector>(angPtr + OFFSET_ViewAngles, qAimAngles);
Aber er aimt einfach irgendwo hin.
Weil du bei der BestTarget Funktion den Index zurück bekommst und nicht die EntNum. Du versuchst also einen Read auf die Bones des Index und nicht auf das Entity.
 
Likes: Narcotiqo

Narcotiqo

New Member
2 May 2018
12
1
#16
Weil du bei der BestTarget Funktion den Index zurück bekommst und nicht die EntNum. Du versuchst also einen Read auf die Bones des Index und nicht auf das Entity.
und wie soll ich Index->Entity umwandeln o.o

also ich habe ja immer noch nen loop von 64 im aimbot drinne, welches durch die entity loopt,
jetzt kann ich das ja benutzten um die bonestruct zu scannen. nur was ich nicht ganz verstehe, wie soll ich ausgerechnet von dem der nah an meinem fadenkreuz ist scannen wenn er ein Index ist?
 
C

calb

Guest
#19
Gude,

also einfach den index loopen?
Da ich deinen Satz nicht richtig deuten kann, will ich dir sagen was ebyam ebyam meint. Du bekommst den Index deiner Entity zurück, um damit zu deinem Entity zukommen, wo du dann die Bones auslesen kannst, musst du, wie ebyam ebyam schon geschrieben hat, über die Entitylist gehen mit dem entsprechenden Index. Diesen liest du dann aus, der passende Code wurde ja bereits oben gequotet.

Bitte lern' doch vernünftig C++ und stürz dich nicht direkt auf so ein großes Projekt wie einen Cheat.

Grüße, calb.
 

rn_

wo ist mein admin rang seal
7 Jan 2011
5,521
9,916
#20
Sehe den Fehler nur auf dem IPhone den Code zu fixen ist so ne Sache, schreibe später rein wenn ich zuhause bin