Problem bei Memory Coding - Skript

  • Guten Tag Liebe AutoIt - Community,
    Ich bin erst seit kurzem dabei Autoit zu programmieren und habe mich jetzt an das Memory Coding gemacht. Mein aktuelles Skript, dass ich zum anwenden von erlerntem verwende, hat allerdings einen Fehler, den ich irgendwie nicht in den Griff bekomme. Dabei handelt es sich um eine Statusleiste, die mir aktuelle HP und MP meines Charakters aus Silkroad anzeigt und immer im Vordergrund ist, mehr nicht. Daher denke ich, dass es nicht als Bot zählt. Hier ist erstmal mein Skript:

    [autoit]

    #include <NomadMemory.au3>
    #include <GuiConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    SetPrivilege("SeDebugPrivilege", 1)

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

    While Not ProcessExists("sro_client.exe")
    Sleep(200)
    WEnd

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Stat", 325, 90, @DesktopWidth*0.5-162.5, 0, BitOR($WS_MINIMIZEBOX,$WS_SYSMENU,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    $Progress1 = GUICtrlCreateProgress(8, 8, 257, 25, $PBS_SMOOTH)
    $Progress2 = GUICtrlCreateProgress(8, 40, 257, 25, $PBS_SMOOTH)
    $Label1 = GUICtrlCreateLabel("HP", 280, 16, 36, 17)
    $Label2 = GUICtrlCreateLabel("MP", 280, 48, 36, 17)
    $Label3 = GUICtrlCreateLabel("Mit F11 wird das Programm beendet", 16, 72, 252, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $Open = _memoryopen(ProcessExists("sro_client.exe"))
    $MaxHP = 0x00A01624
    $MaxMP = 0x00A01628
    $HP_OFFSET = 360
    $MP_OFFSET = 354
    $HPPOINTER = 0x00A0465C
    $MPPOINTER = 0x00A0465C
    $ReadMaxHP = _memoryRead($MaxHP,$Open,'dword')
    $ReadMaxMP = _memoryRead($MaxMP,$Open,'dword')
    HotkeySet("{F11}","Beenden")

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

    while 1

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

    WinSetOnTop("Stat","",1)
    $ReadHP = _memoryRead(_AktuelleHP(),$Open,'dword')
    $ReadMP = _memoryRead(_AktuelleMP(),$Open,'dword')
    GuiCtrlSetData($Progress1,$ReadHP/$ReadMaxHP*100)
    GuiCtrlSetData($Progress2,$ReadMP/$ReadMaxMP*100)

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

    wEnd

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

    Func Beenden()
    Exit

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

    EndFunc

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

    Func _AktuelleHP()
    $Lesen = _MemoryRead($HPPOINTER,$Open,"dword")
    $HP = "0x" & Hex($Lesen + $HP_OFFSET)
    $Lesen = _MemoryRead($HP,$Open,"dword")
    msgbox(1,"",$HP)

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

    Return $Lesen
    EndFunc

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

    Func _AktuelleMP()
    $Lesen = _MemoryRead($MPPOINTER,$Open,"dword")
    $MP = "0x" & Hex($Lesen + $MP_OFFSET)
    $Lesen = _MemoryRead($MP,$Open,"dword")

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

    Return $Lesen
    EndFunc

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


    Ich habe mir schon per MsgBox die Werte $HP/$MP und den Wert $Lesen aus den Funktionen $AktuelleMP/HP ausgeben lassen, bekam bei $MP/$HP auch den gewünschten Wert (Adresse des Values), bei $Lesen allerdings nur 0. Wäre nett wenn mir jemand helfen könnte.

    MFG Benawi

  • So etwas

    [autoit]

    _memoryRead

    [/autoit]

    ist hier aber in Zusammenhang mit Spielen nicht gern gesehen, und deswegen werde ich dich auch nicht unterstützen (vor allem aber weil man daraus ganz einfach einen Bot machen kann) :whistling:

    Zitat

    Daher denke ich, dass es nicht als Bot zählt


    Ich weiß nicht ob das in diesen

    Zitat

    5. Der Nutzer darf nur in der von JOYMAX gewollten Weise auf Software, Datenbank oder andere Daten, die auf von JOYMAX betriebenen Servern gespeichert werden, zugreifen oder zuzugreifen versuchen.


    Bereich fällt, aber ich wäre trotzdem vorsichtig und würde mich noch mal informieren ;).

  • Bei dem Silkroad Server handelt es sich um den Privat Server, daher sind dort solche Skripts erwünscht, oder nicht verboten. Ich denke auch, dass sich mit so einem Skript nicht so einfach ein Bot gestaltet werden kann, das einzige was man am naheliegensten mit diesem Skript machen könnte, wäre ein Autopot, der in dem Spiel nicht vorhanden ist, und extern genutzt werden kann, daher ist sowas ebenfalls erlaubt. Ich werde mir dann aber wahrscheinlich Hilfe woanders holen....