C++ Anwendung inGame benutzen?



  • ok... es mein programm soll ein makro werden.
    Es soll beispielsweise die pistole die ganze zeit klicken lassen. das macht es ein wenig bequemer für mich... ausserdem könnte ich bewegungsabläufe durch klicken auf einen button steuern... dh zb ich klicke "shift" und mein charakter ingame springt, lädt nach und legt sich wieder hin... das ist alles... falls dies schon als cheat gilt, bitte ich vielmals um verzeihung und werde das programm nicht weiter bearbeiten.
    mfg



  • Naja ich kann mir denken was er machen will 🙂 BF2 = Battlefield2 = Ego shooter = Pistole Einzelschusswaffe = Nicht 20Mal klicken damit Magazin leer ist sondern einfach gedrückt halten = Pistole Automatik 😃 Sollte nun geklärt seine glaube ich Dravere ^^ Naja und sobald er die Maus nicht gedrückt hält in seinem Konsolenfenster bringts ihm nix. Somit denke ich für das was er machen will brauch man ASM um alles abzufangen.


  • Administrator

    Das sehe ich persönlich als Cheat. Damit schaffst du dir unfaire Vorteile gegenüber anderen im Spiel, was in meinen Augen cheaten ist.

    @Freaky,
    Mir schon klar, das BF2 ein Egoshooter ist und mir ist definitiv klar, dass es sehr stark nach Cheat riecht, wie sich nun auch herausgestellt hat, trotzdem muss das nicht sein.

    Ich kenne da jemanden, um genau zu sein, mich, der hat versucht mehrere Screenshots hintereinander zu machen. Da gab es im Spiel ein Knopf für den Screenshot und derjenige wollte das automatisieren. Bis die Person von jemanden dann mitgeteilt bekam, dass dies einfacher gehen würde, mit Mitteln, welche auch nicht so extrem ans Cheaten erinnern 😉

    Grüssli



  • Genau das ist mein anliegen!
    Falls dies als cheat gilt, bitte ich um Verzeihung und werde nicht weiter nachfragen.
    Es tut mir leid, aber ich bin ein totaler Anfänger auf dem Gebiet des Programmierens und hatte absolut keine böse Absichten.
    Außerdem weiß ich nicht was mit ASM gemeint ist und was ich damit anfangen soll.
    Entschuldigung, falls ich hier zu viele Probleme mache.
    MFG



  • Eigentlich bieten die Spielen immer eine Scriptsprache, weiss jetzt nicht wie das bei BF aussieht. Aber z.B. bei Call of Duty gibts so eine.

    bind X "+gostand; wait; -frag; wait; -gostand; wait"
    

    Womit du eine Granate konstant ab einem bestimmten Punkt wirst und sie so immer am weitesten geworfen wird. Von daher, wofür C++ missbrauchen ? 😞



  • Wie gesagt ich habe keine Ahnung vom Scripten oder Coden...
    Ich möchte auf keinen Fall irgendetwas am Spiel ansich verändern.
    Ich hab mich ein wenig erkundigt über programmiersprachen und die meisten meinten C++ wäre die schnellste und angenehmste weise.
    Naja anscheind werde ichs wohl lassen und weiterhin meinen finger trainieren müssen um schnell zu klicken...
    mfg



  • Ich gebe dir ein Tipp ... Mausrad ... mehr kriegste net ^^



  • Im Ego-Shoter mit Mausrad schießen genau 😃 und was ist wenn er nun eine MG ha?, dann muss er drehn wie ein Bekloppter, find ich gut *grins*

    Versuchs doch mal mit Hooks *hust*

    Gruß Tobi



  • Es war nie die Rede davon, dass er schiessen nur auf dem Mausrad hat 🙂 Man kann ein und die gleiche Funktion auf mehreren Tasten haben.



  • FreakY<3Cpp schrieb:

    Es war nie die Rede davon, dass er schiessen nur auf dem Mausrad hat 🙂 Man kann ein und die gleiche Funktion auf mehreren Tasten haben.

    Hm hast recht 🙂



  • Damit du mal noch einen sinnvollen Tipp zu deinem Programm bekommst und nicht nur Moralapostelgelaber: der Grund warum dein Programm nicht funktioniert kann zwei Ursachen haben:
    a) BF2 hat exklusiven Keyboard/Mouse-Zugriff, das heißt dein Programm bekommt gar nichts mit, wenn du im Spiel irgendwelche Tasten drückst oder die Maus bewegst.
    b) dein Programm bekommt zwar die Events, weil BF2 nett ist und nicht exklusiven Zugriff angefordert hat, aber BF2 benutzt nicht die Windows-Message-Queue für Input-Events.

    Für ein Workaround müsstest du zunächst herausfinden was BF2 nutzt für die Eingaben, zum Beispiel DirectInput. Dann informierst du dich wie man die entsprechende Bibliothek "hooked". Allerdings wird das natürlich einem Anti-Cheat-Tool sofort auffallen.

    Ansonsten gäbe es noch die "einfache" Möglichkeit dich in den I/O-Layer der Eingabe-Treiber einhängen und dort die entsprechenden Events erzeugen, das ist dann völlig transparent. Wie das für Tastatureingaben geht kannst du hier nachschauen, naja zumindest früher gab es davon noch den Source-Code bevor sysinternals von Microsoft übernommen wurde. Schau mal auf archive.org nach einer älteren Version der Website www.sysinternals.com
    Wenn du dir den verlinkten Artikel durchliest wirst du auch ein paar Referenzen zu dem Thema finden (ganz unten).



  • Mein Gott nah, lasst ihn halt im singleplayer cheaten... Kann doch nicht sein dass er deswegen gleich verurteilt wird.



  • @TippGeber mal angenommen BF2 hätte die exclusiven Rechte, könnte man dann nicht einmal via' globalen Kbd-Hook die Nachrichten empfangen? (sofern BF2 die Windows Message Queue nutzt)

    Gruß Tobi



  • MSDN schrieb:

    Windows NT/2000/XP: This function has been superseded. Use SendInput instead.

    Und das hier scheint mir Unsinn zu sein:

    Sleep(10);
       if(GetAsyncKeyState(VK_F11))
       {
        run=true;
        Sleep(10);
        while (run)
        {
          Sleep(10);
          while(GetAsyncKeyState(VK_LBUTTON)==-32768)
          {
           mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
           mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
           mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
           Sleep(10);
          }
          if(GetAsyncKeyState(VK_F12))
          {
           run=false;
          }
        }
       }
    

    Mach's doch lieber so:

    Falls F11 gedrückt wurde:
        Solange nicht F12 gedrückt wurde:
            Maus-Klick senden
            Gewisse Zeit warten
    Sonst (Falls F11 nicht gedrückt wurde):
        Warte gewisse Zeit
    

Anmelden zum Antworten