String auslesen

  • hallo,
    ich möchte mir einen bot für ragnarok (free server) schreiben und bin hier hin gestoßen.

    es ich ja nicht so das ich keine ahnung vom programmieren habe denn ich kann purebasic.
    so jetzt zur meine frage...

    ist es möglich direckt aus dem spiele fenster einen sting auszulesen? und wenn ja wie?
    oder wahlweise aus dem arbeist speicher?

    wenn eines der beiden möglich ist muss ich die position des strings haben (X und Y) damit ich den mauszeiger dahinsteuern kann...

  • in spielen sind das meistens grafiken -> keine strings.

    es gibt aber zwei möglichkeiten wie du die grafiken herausfinden kannst:

    1: texterkennun per pixelgetcolor-> relativ schwirig(ich hab für ein e in wow 4stunden gebraucht und hab es danachaufgegeben).

    2:du schreibst ein addon wenn es das für das spiel gibt und wertest die events aus(auch kompliziert).

    //edit: wenn es nicht all zu genau sein muss kanst du auch schaun ob du was mit pixelchecksumm oder/und pixelsearch hinbekommst

    also wen du mich fragst ist das mehr als schwierig aber du kannst es ja mal versuchen.


    mfg

    Einmal editiert, zuletzt von derda (9. Juni 2007 um 12:18)

  • wenn der text sich net bewegt bzw einige Zeit an der gleiche stelle bleibt geht es auch über screenshot und ocr -> aber auch a weng umständlich -> am besten sdk anschauen

  • naja ich kann pixelgetcolor nicht benutzen da ich ja die position nicht kenne... ich möchte aber die position herausfinden...

    ach ja und den bereich den ich finden muss muss man vorher mit der maus ansteuern... das hate ich vergessen zum ersten beitag zu schreiben...

    ist es ggf. auch möglich die maus über den bildschirm wandern zu lassen und wenn es gefunden wurde meine aktion durchzufüren?

    okay das wird auch das beste sein... wie finde ich die mausposition raus?
    dann kann ich mit zum beispiel "pixelgetcolor" eine reinfolge rauslesen....

  • MouseGetPos
    --------------------------------------------------------------------------------

    Retrieves the current position of the mouse cursor.


    MouseGetPos ( [dimension] )


    Parameters

    Dimension An optional argument that determines what the return value will be. See Return Value.


    Return Value

    Dimension Values
    None Returns a two-element array that containing the mouse coordinates: $array[0] = X coord (horizontal), $array[1] = Y coord (vertical)
    0 Returns the X co-ordinate as an integer.
    1 Returns the Y co-ordinate as an integer.


    If dimension is not a number @error will be set to 1.


    Remarks

    See MouseCoordMode for relative/absolute position settings. If relative positioning, numbers may be negative.

  • okay ich habe hier nun ein kleinen test geschrieben... nur ich habe da leider einen fehler drinne.... ich kann ihn nur leider nicht finden :(

    ich hoffe mal das ihr was findet... (aber ich denke mal schon)

    [autoit]

    Run ( "C:\Programme\Gravity\RO\FrostRo.exe")
    opt("WinWaitDelay", 1500)
    For $X = 1 To 1024 Step +1
    For $Y = 1 To 768 Step +1
    WinWait ( "2007-02-20a kRO Sakexe")
    MouseClick ( "" , $X, $Y , 1 , 0 )
    $Farbe = PixelGetColor ( $X , $Y )
    If Hex($Farbe, 6) = "F4DFE4" Then
    Send ( "F8" )
    opt("WinWaitDelay", 10)
    MouseClick ("left" , $X, $Y , 1 , 0 )
    opt("WinWaitDelay", 5000)
    EndIf

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

    Next
    Next

    [/autoit]

    [edit]
    okay ich habe mich geirrt.... der quelltext ist inordnung...

    okay aber stadessen ein problem... und zwar bewegt sich die maus nicht wie erwartet..... um ggf. den farb pixel zu finden... und die F8 teaste wird auch nicht gedrückt....was ist da falsch?

    [Edit 2]

    es wird F8 geschrieben anstat die taste betätigt

    Edit BugFix: AutoIt-Tags gesetzt ;)

    2 Mal editiert, zuletzt von Tearsof-theMoon (9. Juni 2007 um 14:37)

  • habe ich leider erfolgslos getestet.... im system ist es die F* taste aber im game ist es F und [Ziffer]

    • Offizieller Beitrag

    Dann teste doch vorab, ob das Game überhaupt Befehle von Autoit annimmt.
    Falls in deinem Game eine Hilfefunktion z.B. auf "F1" liegt, schreib ein Skript um zu testen ob "F1" per Autoit angenommen wird.
    z.B.

    [autoit]

    Run("game.exe")
    WinWaitActive("Fenstertitel_wenn_Game_aktiv")
    Sleep(3000) ; nun kannst du mitzählen 3-2-1
    Send("{F1}") ; jetzt müßte deine Hilfe aufpoppen

    [/autoit]