AHK | Overlay Problem

  • Hallo,
    vorweg: Ich benutze die API.ahk von gta-api.de und die overlay.ahk von agrippa (github).


    Habe versucht ein Overlay mit HP-, Armor- und Ortsangabe zu erstellen. Jedoch bekomme ich beim clearen (/overlayoff) sofort eine Exe und das Game crasht.
    Weiß jemand wieso?


    Hier der Code:



    #include overlay.ahk
    #include API.ahk
    #SingleInstance, Force
    #NoEnv
    #Persistent


    /*################ Positionen der Overlays ########################################*/
    aoverlay_x := 718
    aoverlay_y := 59


    overlay_x := 718
    overlay_y := 89


    moverlay_x := 20
    moverlay_y := 400


    /*############### Beim Prozess GTA:SA ##############################################*/
    SetParam("process", "gta_sa.exe")


    /*############### Starten der Overlays #############################################*/
    :?:/overlayon::
    Health_Overlay := -1
    Map_Overlay := -1
    Armour_Overlay := -1
    SetTimer, Update, 250
    return


    GetCityName(City)
    GetZoneName(Zone)


    /*############## Der Timer, damit es regelmäßig aktualisiert wird ###################*/
    Update:
    {
    if(Health_Overlay == -1 && Map_Overlay == -1 && Armour_Overlay == -1)
    {
    Armour_Overlay := TextCreate("Arial", 10, false, false, aoverlay_x, aoverlay_y, 0xFFFFFFFF, "100", true, true)
    Health_Overlay := TextCreate("Arial", 10, false, false, overlay_x, overlay_y, 0xFFF00000, "100", true, true)
    Map_Overlay := TextCreate("Arial", 10, false, false, moverlay_x, moverlay_y, 0xFFFFFFFF, Zone "`n"City, true, true)
    }
    else
    {
    Health := GetPlayerHealth()
    Armour := GetPlayerArmour()


    TextSetString(Health_Overlay, Health)
    TextSetString(Armour_Overlay, Armour)
    TextSetString(Map_Overlay, Zone "`n"City)
    }
    }
    return


    /*############ Ändern der Farbe bei HP // Testweise // Funktioniert ###################*/
    :?:/color::
    Suspend Permit
    TextSetColor(Health_Overlay, 0xFF00FF00)
    return


    /*############ Das Stoppen der Overlays // Bekomme hier den Crash #####################*/
    :?:/overlayoff::
    Suspend Permit
    Sleep 1000
    Map_Overlay := -1
    Health_Overlay := -1
    Armour_Overlay := -1
    DestroyAllVisual()
    SetTimer, Update, Off
    return



    Hoffe jemand kennt sich mit der overlay API aus und kann mir helfen.


    Mit freundlichen Grüßen
    BooKai



    //EDIT//
    05.04 - 21:45 : PUSH [Eintrag: Wie kann ich das Overlay sofort beim Start von GTA anzeigen lassen, wenn davor der Keybinder bereits geöffnet ist]
    06.04 - 21:50 : PUSH
    08.05 - 17:13 : PUSH

    5 Mal editiert, zuletzt von Bookai ()

  • Mach mal dein ENB Mod raus, dann sollte es nicht mehr crashen.
    Für den Start benötigst du einen Timer, der in einem bestimmten Abstand checkt, ob GTA:SA:MP als Prozess läuft, wenn das nicht der Fall sein sollte soll er eine Variable auf 0 Setzen.
    Sollte er doch an sein, ändert er sich auf 1 und das Overlay soll starten.


    Infos bei mir via. PN ;)

  • Melde mich mal mit einem erneuten Problem.


    Das Overlay soll starten, sobald ich a) den Keybinder bereits geöffnet habe und dann GTA:SA öffne [funktioniert nicht], oder b) GTA:SA bereits geöffnet habe und anschließend den Keybinder starte [funktioniert]
    Ich hoffe mir kann jemand bei meinem Problem helfen.


    Der Code:


    20.02.2016: Push
    15.04.2016: Push

    2 Mal editiert, zuletzt von Bookai ()

  • Folgende Funktion einfügen (mit der SAMP-UDF verwendbar):

    So einsetzen:

    Es ist so, dass wenn du erst dein AHK Script und dann GTA startest, wird schon viel zu früh probiert ein Overlay zu erstellen.
    Meist schon dann, wenn das GTA Fenster noch nicht geladen ist.
    Deswegen ist eine Abfrage, die guckt ob GTA schon geladen hat, sinnvoll.
    Die Funktion ließt aus, ob der Chat von SAMP geladen ist und sollte dann eigentlich das Overlay anzeigen.



    MfG

  • Habs probiert, allerdings wird das Overlay auch hier nur dann erstellt, wenn zuerst SAMP gestartet wurde und anschließend der Keybinder neu gestartet wird.



    [Edit:] Lag an dem #IfWinActive, GTA:SA:MP. Aber wenn ich das rausnehme, müsste ich ja bei jeder Taste abfragen, ob GTA:SA:MP geöffnet ist... (dass es aufm Desk nicht ausgeführt wird) Oder gibts da ne leichte lösbare Alternative?

  • Habs probiert, allerdings wird das Overlay auch hier nur dann erstellt, wenn zuerst SAMP gestartet wurde und anschließend der Keybinder neu gestartet wird.



    [Edit:] Lag an dem #IfWinActive, GTA:SA:MP. Aber wenn ich das rausnehme, müsste ich ja bei jeder Taste abfragen, ob GTA:SA:MP geöffnet ist... (dass es aufm Desk nicht ausgeführt wird) Oder gibts da ne leichte lösbare Alternative?


    Habe immer bei jeder Taste eine Abfrage gemacht, ob der Chat offen und GTA gestartet war.
    wäre dann halt zwei Zeilen pro Taste mehr zu schreiben.



    MfG

  • Jo, dann werde ich das auch so machen.
    Danke für die Hilfe :>


    // Edit: Kleines Problem:


    Folgender Code:


    Ich starte den Keybinder -> Ich starte SAMP -> Nachdem SAMP Available ist, wird das Overlay angezeigt, aber sofort danach crasht GTA ("gta_sa.exe funktioniert nicht mehr"). Denke mal es liegt an dem TextSetString ... Aber was mache ich da falsch?

    Einmal editiert, zuletzt von Bookai ()

  • Ich bin mir nicht ganz sicher welcher Wert von der Funktion BoxCreate() zurückgegeben wird in der folgenden Zeile:

    Code
    box_overlay := BoxCreate(635, 400, 120, 170, 0xAA848484, true)


    Mach es am Besten so, dass du die Variable, die du Abfragst, ob die Box erstellt wird/wurde manuell auf einen anderen Wert setzt. Z.B. so:


    P.S: Falls es dich interessiert: Bei der Funktion TextCreate(), musst du den Parameter "text" garnicht angeben, da du diesen mit der Funktion TextSetString sowieso erneut definierst.
    Kannst also rein theoretisch das:

    Code
    HP := TextCreate("Arial", 9, true, true, 719, 88, 0xFFFFFFFF, GetPlayerHealth(), true, true)


    zu dem ändern:

    Code
    HP := TextCreate("Arial", 9, true, true, 719, 88, 0xFFFFFFFF, "", true, true)


    MfG

  • Wenn die Box angezeigt wird, also BoxCreate() ausgeführt wurde, gibt er wenn alles richtig war, den Wert 1 zurück. (Was auch der Fall ist)
    Ebenfalls ist es mit TextCreate(), bei der HP-Anzeige.


    So wie ich es getestet habe, muss es an dem "TextSetString(HP, GetPlayerHealth() liegen, weil beim Starten von SAMP zeigt er das Overlay ja kurz an, und nach dem die HP-Anzeige geupdated werden sollte, crasht GTA...

  • Musste bei mir noch eine Taste hinzufügen, weil sich sonst das Teil direkt beendet hat.
    Sieht bei mir jetzt so aus:

    & Ingame so:

    Die roten Boxen zensieren nur einige Server-Namen.
    Wenn es bei dir mit meinem Script immer noch nicht funktioniert, kannst du es ja mal mit einer nicht modifizierten SAMP Version probieren.



    MfG

  • Hallo,
    Hab das Overlay hier gefunden und wollte es als Vorlage verwenden, bekomme aber immer diese Fehlermeldung.


    C:\Open-SAMP-API-master\overlay.ahk (3) : ==> Call to nonexistent function.
    Specifically: RelToAbs(A_ScriptDir, "..\..\bin\dx9_overlay.dll")


    Die dx9_overlay.dll ist im Rootverzeichnis vorhanden.


    was mache ich falsch?

  • Richtige Version von Autohotkey installiert? <- ANSI32-Bit



    MfG

  • Richtige Version von Autohotkey installiert? <- ANSI32-Bit

    ja, hab's jetzt aber hinbekommen.


    ist das Ausrufezeichen in Satz 13 absicht?


    if(!IsSAMPAvailable())<-------------

    Einmal editiert, zuletzt von Fuzzy McGee ()

  • Ja, denn hier wird ja abgefragt, dass solange SAMP nicht verfügbar ist (geladen hat), der Timer returned wird. Sobald SAMP dann geladen hat wird dein Timer ausgeführt.

    ah ok,
    Hast du dein Overlay jetzt hin bekommen?
    Bei mir crasht das immer.

  • Poste mal deinen Code und schreib dazu, wann es crasht (direkt beim Starten von SAMP, erst nachdem du das Overlay aufrufst, ...)

    Ist genau baugleich wie deins bei denem ersten Post.
    Es crasht wenn ich /overlayoff eingebe.


    Es gibt ja genügend fertige Overlays da bekomme ich allerdings immer ne Virenmeldung.
    Ich bin eigentlich nur auf der suche nach einem Overlay-script welches ich eventuell in mein keybinder einfügen kann.
    Es sollte HP, Fahrzeug HP und Standort anzeigen können.

  • Ist genau baugleich wie deins bei denem ersten Post.Es crasht wenn ich /overlayoff eingebe.


    Es gibt ja genügend fertige Overlays da bekomme ich allerdings immer ne Virenmeldung.
    Ich bin eigentlich nur auf der suche nach einem Overlay-script welches ich eventuell in mein keybinder einfügen kann.
    Es sollte HP, Fahrzeug HP und Standort anzeigen können.

    Könnte das hier mal veröffentlichen:


    Mal schauen ob ich es die Tage veröffentliche, oder dir einfach ein fertiges Script mit deinen Sachen posten werde.



    MfG