Autoitcode leichter wartbar machen...

  • Und zwar rufe ich häufig _memoryreads auf in meiner Code. Und zwar rufe ich einen Memoryread auf eine gewisse Speicheradresse 8 mal auf. Mein Problem ist wenn sich diese Speicheradresse ändert ( ist eigentlich statisch aber anscheinend nicht immer ) muss ich das 8 mal im Programmcode machen.

    Beispielcode: Hier rufe ich die Funktion nur 2 mal auf

    [autoit]

    $abc = _MemoryRead(0xffffffff, $infom)
    if $abc < 100 then
    while $abc < 1000
    sleep(500)
    $abc = _MemoryRead(0xffffffff, $infom)
    WEnd
    EndIf

    [/autoit]

    Gibt es eine Möglichkeit das ich nur 1 mal eine Memoryread auf eine Adresse definiere

    [autoit]

    $abc = _MemoryRead(0xffffffff, $infom)

    [/autoit]

    Und er schaut " dann immer " oben nach anstadt das ich es 8 mal hinschreiben muss. Ich ändere praktisch den Code nur an einer Stelle. Und es wird für die 8 Stellen " mitübernommen". Hoffe ich habe mich klar ausgedrückt. Ich bin mir sicher es geht ganz leicht und ich sehe den Wald vor lauter Bäumen nicht.

  • machs mit ner funktion:
    z.b.
    func _memoryread1()
    $abc = _MemoryRead(0xffffffff, $infom)
    endfunc

    und dort wo du es brauchst rufst du die funktion dann mit _memoryread() auf, und schon hast du das Problem gelöst.

    Kannst es aber auch mit ner .ini mahcen in der du die Speicheradresse reinschreibst, dann brauchst du die nur in der .ini ändern und der rest passiert automatisch.

    Mfg

    Computers are like Airconditioning. They don´t work with open Windows.

  • [autoit]

    func _memoryread1()
    $abc = _MemoryRead(0xffffffff, $infom)
    endfunc

    [/autoit][autoit]

    $abc = memoryread1()
    if $abc < 100 then
    while $abc < 1000
    sleep(500)
    $abc = memoryread1()
    WEnd
    EndIf

    [/autoit]

    So meinst du das ? Kanns gerade nicht testen auf der arbeit. Funktioniert das so ? Wenn ja vielen dank ;) Inni Datei will ich wenn möglich vermeiden.

  • Ich zeig dir mal nen ausschnitt aus ner ini die Ich für so etwas ähnliches verwende:

    Code
    AX =					0xa05650
    AY =					0xa05654
    TOWN_OUT_ID =				0xa06498
    NO_NPC =				0xa07234
    DEATH =					0xA2D30B
    MOUSE_COORDX =				0xa05ce0
    MOUSE_COORDY =				0xa05ce4
    CAMCOURSE =				0xA0F0A0


    Am Anfang des Skripts les ich mir mit iniread die Speicheradresssen aus, und speichere die dann in ner Variable. Wenn du z.b. einen Memoryread immer wieder bracuhst würde ich so ne funktion machen wie du sie da beschrieben hast und die dann einfach öfter ausrufen

    Computers are like Airconditioning. They don´t work with open Windows.

  • In der Funktion würde ich noch ein Return hinzufügen, damit man weiß das $ABC der Rückgabe Wert ist!

    [autoit]

    $ABC = _MemoryRead_Eins()
    If $ABC < 100 Then
    While $ABC < 1000
    Sleep(500)
    $ABC = MemoryRead_Eins()
    WEnd
    EndIf

    [/autoit][autoit][/autoit][autoit]

    Func _MemoryRead_Eins()
    $ABC = _MemoryRead(0xffffffff, $infom)
    Return $ABC
    EndFunc

    [/autoit]