Hi Spiegelfechter,

First of all, willst du das in AutoIT oder in JavaScript machen? Wenn AutoIT, dann kannst du JQuery vergessen. :( Falls du dass aber mit JavaScript machen möchtest, dann antworte mir nochmal kurz, und ich münze diese Antwort auf JQuery (oder PureJavaScript) um. Hier aber erst mal nur die AutoIT Variante.

Jede Website besteht aus Quellcode. Dieser Quellcode ist bei Spielen oder bekannten Websiten meist in einer Zeile zusammen komprimiert, jedoch kannst du in vielen Browsern mit F9, STRG-F9 oder STRG-SHIFT-I (oder Rechtsklick -> Element untersuchen) den Quellcode schön ordentlich dargestellt betrachten. Meist existiert hier auch eine hervorhebe Option, mit der du ein Element anklicken kannst und der Editor dann direkt zu diesem Element in dem Quellcode springt.

Hier musst du dir die Elemente nun ansehen. Was haben die Elemente gemeinsam? Worin erkennt man, ob ein Element ausverkauft ist?

Häufig spiegelt die ID des Elementes das Element selber wieder. So kannst du jedes Element unterscheiden. Es muss aber nicht so sein! Hier ist einfach Scharfsinn und ausprobieren gefragt.

Das Element selber kannst du dann in AutoIT und FF mit dem Befehl _FFClick anklicken. Hier musst du dann deinen eigenen Suchergebnisse einsetzen:

_FFClick("shop_item35", "id")

In diesem Beispiel klicke ich das Objekt in dem Quelltext an, welches die id=shop_item35 hat. Alternativ kannst du auch zum Beispiel dir die Klassen anschauen. Vielleicht hat jedes Shop-Element die selbe Klasse? Dann klicke das 35 Shop_element an:

_FFClick("shop_image", "class", 35)

Mehr Informationen dazu findest du hier: http://german.documentation.ff-au3.thorsten-willert.de/ff_functions/_FFClick.php

Das Auslesen der Daten ist leider nicht so einfach. Hier gibt es zwar die Methode _FFReadHTML(), jedoch gibt diese uns den kompletten Quelltext wieder. Hier muss man also irgendwie den Quelltext eingrenzen.

Mir haben die Befehle _StringBetween() und StringTrimLeft() / StringTrimRight() geholfen. Mithilfe von StringBetween kannst du den Text zwischen zwei Passagen herausfiltern, während du mit TrimLeft oder Right vorne und hinten noch Reste wegschneiden kannst. Wenn du Arrays schon kennst, kannst du dir diese Befehle mal ansehen.

Falls Probleme auftreten, antworte einfach nochmal auf diese Antwort. Ich versuche dann, dir beim Problem lösen zu helfen.

LG Lennard

(Und sorry, wenn ich etwas zu viel über HTML geredet habe...)

...zur Antwort

Hallo xDarkFlame

Da in deinen Tags das Wort AutoIT vorkommt, gehe ich mal davon aus, dass du dieses Programm dafür benutzen willst und dir somit selber so ein Makro schreiben willst... Dann wollen wir mal:

Als erstes musst du dir natürlich auf deinem PC AutoIT installieren. Sollte nicht all zu schwer sein :D

Danach gehst du in irgendeinen Ordner und klickst an eine freie Stelle einen Rechtsklick. Danach kannst du unter NEU den Punkt "AutoIT v3 Script" auswählen. Je nach Installation von AutoIT kannst du jetzt zum Öffnen der Datei einen Doppelklick oder einen Rechtsklick und dann "Edit Script" auswählen.

Nun kannst du in dem darauf folgendem Fenster alles eingeben, was AutoIT für dich übernehmen soll. Jeder Befehl wird in eine neue Zeile geschrieben, sonst brauchst du nicht wirklich viel zu beachten...

Da ich deine Frage nicht so ganz verstanden habe, gebe ich dir hier nur ein Beispiel und du baust dir dann dein Spezielles Script selber zusammen:

Wichtig sind in AutoIT für dich folgende Befehle:

MouseClick("left")

Bewirkt ein Klicken der Maus. Wenn du "left" durch "right" ersetzt, dann klickt der PC mit der rechten Maustaste.

Sleep(1000)

Hiermit kannst du das Programm 1 Sekunde lang nichts tun lassen. Für 2 Sekunden gibt man 2000 ein, für eine halbe Sekunde dann 500. Wenn man nicht die Genaue Zahl weiß, kann man auch Rechen-Ausdrücke eingeben, wie zum Beispiel 6/100 (für den Bruch 6 Einhundertstel) oder 1000 * 60 * 3 (für 3 Minuten)

MouseMove(6,24)

Hiermit bewegst du deine Maus zur der Stelle 6, 24 (also 6 Pixel von der linken oberen Ecke nach Rechts und 24 Pixel nach unten)


Beispiel:

Wenn du jetzt einfach nur 25 mal die Linke Maustaste gedrückt haben willst, kannst du gerne einfach nur

MouseClick("left")
MouseClick("left")
.....

schreiben. Man kann das aber mit Schleifen wesentlich abkürzen:

For $i = 1 to 25
    MouseClick("left")
next

Das heißt im Endeffekt nichts anderes als das der Befehl, der zwischen "For" und "next" steht genau 25 mal ausgeführt werden soll. (AutoIT-Fans werde mich wahrscheinlich jetzt steinigen)

Wenn du dieses Programm nun ausführen solltest ("Tools" -> "Go") wirst du feststellen, dass er nach kürzester Zeit bereits fertig ist. Nach 0.829 Sekunden hat er bei mir alles ausgeführt... Also müssen wir dem Programm noch sagen, dass er zwischen den einzelnen Klicks noch etwas warten soll:

For $i = 1 to 25
    MouseClick("left")
    Sleep(1000 / 25)
next

Mathematik hilft uns hier weiter. Wir warten jeweils eine 25stel Sekunde. Wenn wir das 25 mal machen, haben wir damit genau eine Sekunde...

Ich hoffe, du kannst damit etwas Anfangen und dir damit dein eigenes Programm basteln. Wenn du weiterhin Fragen hast oder du einfach gar nichts verstanden hast, so frag einfach nach... Ich werde dir versuchen zu helfen...

Dornteufel

...zur Antwort

Hallo Im1909.

Es ist nicht wirklich kompliziert.

Wenn ich dich richtig verstanden haben, willst du mit Hilfe von AutoIT eine Zeile einer Datei in eine Variable Speichern und anschließend etwas mit der Variable anstellen. Danach soll die Variable mit der nächsten Zeile überschrieben werden, oder?

$datei = FileRead("data.txt")
$variable = StringSplit($datei, @CRLF)
For $i = 1 To $variable[0] Step 2
    MsgBox(0, "", $variable[$i])
Next
Exit

So würde ich das jetzt machen, aber da ist die Überschreibung der Variable nicht dabei.

Wenn dir die wirklich wichtig ist, dann habe ich aber auch eine Lösung.

$zeilenanzahl = 3

For $i = 1 To $zeilenanzahl
    $variable = FileReadLine ("data.txt",$i)
    MsgBox (0,"",$variable)
Next
Exit

Die erste Zeile muss entsprechend geändert werden. Zudem kannst du natürlich die MsgBox rausschmeißen :)

Wenn du das mit den Zeilenzählen nicht immer neu eintragen kannst, musst du wohl auf eine andere Funktion in "#include <File.au3>" zugreifen. Die Datei muss aber immer für AutoIT zugreifbar sein.

#include File.au3 ;Hier sollten eigentlich klammern stehen.....

$ort = "data.txt"
$zeilenanzahl = _FileCountLines ($ort)

For $i = 1 To $zeilenanzahl
    $variable = FileReadLine ($ort,$i)
    MsgBox (0,"",$variable)
Next
Exit

Falls du dass nicht verstanden hast, dann frag mich bitte nochmal. Kann sein, das das jetzt zu kompliziert ist.

Dornteufel

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.