C++ Anwendung inGame benutzen?



  • Hallo!
    Ich bin ein totaler Anfänger in Sachen C++.
    Habe grade mein erstes Programm geschrieben und dachte ich könnte es auch in einem PC-Spiel benutzen.
    Es läuft auch soweit und macht das, was ich will.
    Leider nur in anderen Fenstern, also auf Windows basis.
    Wenn ich ein PC-Spiel starte nimmt es keine Informationen mehr auf und gibt auch keine mehr ab.
    Gibt es irgend einen Befehl, sodass ich es inGame benutzen kann?
    MFG


  • Administrator

    SnoopDawk schrieb:

    Hallo!

    Hallo.

    SnoopDawk schrieb:

    Habe grade mein erstes Programm geschrieben und dachte ich könnte es auch in einem PC-Spiel benutzen.

    Seit wann kann man ein C++ Programm in einem PC Spiel benutzen?

    SnoopDawk schrieb:

    Es läuft auch soweit und macht das, was ich will.

    Es läuft in einem PC Spiel? Also das musst du mal genauer erläutern ...

    SnoopDawk schrieb:

    Leider nur in anderen Fenstern, also auf Windows basis.

    Auch Linux hat Fenster ... Mac hat auch Fenster ... Was für andere Fenster überhaupt? Wieso eigentlich in Fenster? ... 😕

    SnoopDawk schrieb:

    Wenn ich ein PC-Spiel starte nimmt es keine Informationen mehr auf und gibt auch keine mehr ab.

    Dein Programm? Das Spiel? Was macht dein Programm überhaupt? 😕

    SnoopDawk schrieb:

    Gibt es irgend einen Befehl, sodass ich es inGame benutzen kann?

    Troll? Welches Spiel? Was für einen Befehl? Wofür?
    Also falls dieser Post wirklich ernst gemeint war, dann musst du wirklich deutlicher werden. Das was du da schreibst macht überhaupt gar keinen Sinn. Nicht mal die Reihenfolge der Sätze ...

    Grüssli



  • xD ok danke..
    nochmal:
    Ich hab ein Programm gemacht das so aussieht:

    #include <windows.h>
    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
      INPUT_RECORD inRec;
    
      bool run = false;
    
      while(1)
      {
       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;
          }
        }
       }
    }
       return 0;
    }
    

    Ich möchte gerne, dass das Programm auch in PC-Spielen läuft. Dh. in meinem Fall BF2...
    Also er soll klicken wenn ich die Maustaste gedrückt halte...
    Hoffe es ist ein bisschen klarer geworden...
    mfg


  • Administrator

    Kann es sein, dass du möchtest, dass dieses Programm im Hintergrund während dem Spiel laufen soll? Dann kann ich dir wohl zwei Dinge versichern:
    1. Es gibt genügend Wege ein Spiel vor Cheats zu schützen und so einfach kommt man meistens nicht um diesen Schutz rum.
    2. Das sieht extrem nach einem Programm aus, was einem helfen soll, in einem Spiel zu cheaten. Grundsätzlich werden hier Cheater verachtet und ihnen wird nicht geholfen. Tut mir Leid ... oder auch nicht ^^

    Grüssli



  • nein es soll kein cheat sein -.-
    das is ein autoclicker...
    ich möchte weder cheaten noch sonst irgendetwas...
    ich möchte dass es klickt wenn ich die maustaste gedrückt halte...
    tut es auch.. nur nich ingame..



  • Die ganze geschichte gibt es auch als ganz normales script für mäuse... bei der g9 sind sogenannte "makros" sogar als zusatz funktion vorhanden... da ich aber kein geld ausgeben möchte um mir eine maus zu kaufen die
    1. überteuert ist
    und
    2. überflüssig ist, falls mein programm läuft
    ist dies meine einzige möglichkeit...


  • Administrator

    SnoopDawk schrieb:

    nein es soll kein cheat sein -.-
    das is ein autoclicker...
    ich möchte weder cheaten noch sonst irgendetwas...
    ich möchte dass es klickt wenn ich die maustaste gedrückt halte...
    tut es auch.. nur nich ingame..

    Du willst ein Programm von aussen beeinflussen und dann erst noch ein Spiel. So klein diese Beeinflussung auch sein soll oder vielleicht sogar unsinnig, grundsätzlich geht es in die gleiche Richtung. Auch wenn das Programm schlussendlich nichts am Spiel verändern würde, wir würden dir zeigen, wie man es tun könnte.

    Zudem, es soll nicht klicken, wenn du die Maustaste gedrückt hälst, sondern es soll automatisch klicken, sobald du auf F11 drückst und aufhören wenn du auf F12 klickst. Wofür automatische Klicks in einem Spiel wohl gut sein könnten?

    Grüssli



  • nein es klickt wenn ich die maustaste gedrückt halte...
    beeinflussen soll es das spiel überhaupt nicht.. ich möchte auch wirklich nichts davon wissen, wie man sowas machen kann... ich möchte nur dass mein programm die mausklicke auch ingame anwenden kann...
    eigentlich habe ich gehofft dass es ein "include" oder vergleichbares gibt, dass mein programm auch im hintergrund laufen lässt, wenn ich ein spiel starte...
    natürlich sehe ichs ein, dass es in die richtung eines cheats geht... und falls ich nicht drumrum komme das programm zum richtigen ablauf zu bringen, OHNE das spiel zu manipulieren, dann werd ichs wohl lassen...
    mfg


  • Administrator

    snoopdings schrieb:

    nein es klickt wenn ich die maustaste gedrückt halte...

    Oh, stimmt, da habe ich einen Befehl überlesen. Das ist mein Fehler, aber mein Standpunkt ändert sich dadurch nicht. Mal sehen was andere dazu sagen.
    Was vielleicht helfen würde, wenn du deine wirklichen Absichten erklärst. Denn bisher ist es mir ein Rätsel, was du eigentlich erreichen möchtest. Wieso soll es automatisch klicken, im Spiel? Wofür?

    snoopdings schrieb:

    eigentlich habe ich gehofft dass es ein "include" oder vergleichbares gibt, dass mein programm auch im hintergrund laufen lässt, wenn ich ein spiel starte...

    Wenn du dein Programm startest, dann läuft es. Egal welcher andere Prozess daneben läuft. Du musst nur das Programm weiterlaufen lassen und nicht beenden, dann läuft es auch im Hintergrund.
    Im übrigen kann man mit "include" sowas nicht automatisch hinzufügen. Da solltest du vielleicht die absoluten Grundlagen nochmals anschauen, was include wirklich macht.

    Grüssli



  • 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).


Log in to reply