@DJMANU:
Wenn du mit Import das Hochladen per FTP meinst, dann dürfte Export wieder mit INetGet zu bewerkstelligen sein. Das ist einfach verlässlicher und sicherer (da passwortunabhängig) als _FTP-UDFs...
peethebee
@DJMANU:
Wenn du mit Import das Hochladen per FTP meinst, dann dürfte Export wieder mit INetGet zu bewerkstelligen sein. Das ist einfach verlässlicher und sicherer (da passwortunabhängig) als _FTP-UDFs...
peethebee
Hallo!
Das Löschen erledigst du mit
oder
, wobei in letzterem Fall oben in deinem Skript das hier hin muss:
Diese UDF enthält auch schöne Funktionen, um Einträge in das Listview zu schreiben usw. (siehe Hilfe).
Das Füllen des ListView würde ich in eine Funktion packen (am besten gleich mit dem oben beschriebenen Löschen), dann musst du es nur einmal am Anfang und nach jeder Schreiboperation ausführen.
peethebee
PixelCheckSum (oder evtl. PixelGetColor) wird dennoch die einfachste Möglichkeit sein.
Versuche mal, ob du damit überhaupt realistische Werte bekommst, was bei DirectX-/OpenGL-Anwendungen nicht immer der Fall ist...
peethebee
Beim dritten (und entscheidenden) Bild schneit es nicht.
Kann aber sein, dass ich dich falsch verstehe. Vielleicht kannst du es noch mal präzise beschreiben, was alles passieren kann und wie die Reaktion aussehen soll?
peethebee
Hallo!
@Run:
Bei deiner Lösung sucht er im Verzeichnis, in dem das Skript liegt nach der Datei Frozen Throne.exe. Sie liegt ab woanders. Der erste Parameter enthält Dateiname MIT Pfad, der zweite das "Arbeitsverzeichnis", das aber automatisch der Pfad ist und beim Aufruf von Run optional ist.
Also:
@Sleep:
Ich weiß nicht, ob ich dich richtig verstanden habe, aber du könntest mit PixelCheckSum solange warten (in einer While-Schleife), bis die Eingabefelder für Passwort und Benutzername erscheinen.
peethebee
Noch was.
Ich würde trotz der Verlockung auf Visuall C++ verzichten, da das - so wie ich es sehe - mit purem C++ nicht mehr viel zu tun hat. Die GUIs bastele ich im Moment mit AutoIt und reuf die C++-Exe-Dateien dann mit entsprechenden Paramtern auf.
Hier ein (leider schlechterer als SciTE) Editor für pures C++: http://bloodshed.net
(Liste anderer Compiler hier: http://bloodshed.net/compilers/index.html)
Das einzige einigermaßen gute Forum habe ich unter https://autoit.de/www.cplusplus.de gefunden, wobei die Suchfunktion komplett wertlos ist, man muss also zur Not mit Google auf der Seite suchen lassen.
peethebee
Hallo!
Genau dein Problem hatte ich vor kurzem auch. Allerdings wollte ich freiwillig C++ lernen, nicht C.
Wenn du Sachen aus 2001 findest, kannst du dich glücklich schätzen, es gibt auch Bücher aus den 80er Jahren des letzten Jahrtausends...
Optimal wäre es, wenn du jemanden kennen würdest, der es schon (zumindest ein bisschen) kann, denn sonst ist es am Anfang sehr frustrierend.
Suchst du dir allerdings eine Aufgabe, die performancelastig ist, wirst du viiiiiel Spaß an C++ haben.
peethebee
p.s. muss heute auch was ist C++ schreiben, mal sehen, ob es was wird...
Hallo!
Es gibt bei dieser GUI-Ereignis-Auswertungs-Methode (;-)) nur eine grooooße While-Endlosschleife. Darin werden ALLE Controls abgearbeitet, von denen Ereignisse kommen können. So auch jeder Button.
Daher musst du nur in dem Switch- (oder Select-)Teil für deinen Button einen weiteren Case-Block einfügen. Dazu brauchst du seine Id.
Wenn dein button so erstellt wurde
,
dann brauchst du einen Case-Block folgender Art:
Alternative ist der GUIOnEventMode, der speziell bei größeren und komplizierteren Skripten zu empfehlen ist.
peethebee
Wie schon einmal erwähnt bin ich der Meinung, dass du für jeden Client einen eigenen Port brauchst. So war das zumindest früher meiner Erinnerung nach mal. Könnte sich geändert haben, glaube ich aber eher nicht.
In diesem Fall müsste der Client die Portnummer nach jedem erfolglosen Verbindungsversuch hochzählen oder einfach warten, bis der, der gerade dran ist "abgefertigt" ist, srpich die IP des gesuchten Kontaktes erhalten hat.
peethebee
Das meiste, was noch aussteht sind Bug-Fixes. Das wird wohl an mir hängen bleiben, da ich den tiefsten Durchblick im Code habe.
Das bedeutet, dass bis Version 1.0 nicht mehr viel zu tun bliebe für dich. Wenn mir was einfällt, komme ich auf das Angebot zurück.
Für Version 1.0+ kannst du dir in Abstimmung mit den anderen Devs gerne einen Tätigkeitsbereich wählen, für den du verantwortlich zeichnest.
Andererseits scheinst du ja viele eigene Projekte zu haben (z.B. http://mk-software.auftwaerts.de *erinner*), die sicher auch Zeit kosten...
peethebee
Das Filehandle ist dann sinnvoll einzusetzen, wenn man mehrere Zeilen nacheinander in eine Datei schreiben will.
Dann muss nicht vor jeder Zeile die Datei geöffnet und nach jeder geschlossen werden, sondern nur einmal davor und einmal danach. Dadurch wird also die Perfortmance gesteigert.
peethebee
Hallo!
Der Ursache wäre wohl am einfachsten mit MsgBoxen beizukommen.
Aber ein paar grundsätzliche Sachen hätte ich noch, die vielleicht die Übersicht steigern und evtl. den Fehler beseitigen oder offen zu Tage treten lassen:
- Die Gliederung in Funktionen scheint mir hier nicht sinnvoll, da sie scheinbar nur einmal (und das evtl. sogar direkt hintereinander aufgerufen werden. Würde man einfach alles "hintereinander weg" schreiben, hätte man auch Problem 2 gelöst:
- Jedes Mal wird ein neues Filehandle aufgemacht, was per se schon mal nicht effektiv und nicht übersichtlich ist. Zudem kann man FileWriteLine als ersten Parameter statt eines Filehandles auch einen Dateinamen ($inventoryfilename) übergeben, der dann automatisch geöffnet und geschlossen wird.
peethebee
Hallo!
Ich würde mir mal testweise die Werte der Variablen, die du in der If-Anweisung überprüfst, ausgeben lassen.
Außerdem ist ElseIf durch Else ersetzbar, da ja entweder aktiviert ist oder eben nicht.
Leider wird in deinem Skriptausschnitt scheinbar keine der problematischen Zeilen geschrieben, sodass eine genaue Fehlersuche noch schwer ist...
peethebee
GtaSpider hat so etwas, aber der ist gerade schlafen
War der Bot in AutoIt geschrieben?
Ich meine mich zu erinnern, dass zu dem Spiel mal was in AutoIt lief...
peethebee
Also.
Vielen Dank für die Screenshots, so ist es perfekt!
Aber leider kann ich es halt technisch nicht nachvollziehen, da ich das Spiel nicht besitze.
Das nProtect GameGuard Hacking Prevent System könnte der Grund der Probleme sein. Möglicherweise blockt es Nachrichten, die von einem anderen Programm kommen.
peethebee
Hallo und :willkommen:!
Also, grundsätzlich wäre es schon sehr hilfreich, den Namen des Spieles zu erfahren. Ein Login-Bot wird ja wohl kaum unter Cheating fallen...
Wie du richtig erkannt hast, wäre Run statt MouseClick sehr zu enpfehlen, denn sonst kann eine Ausführung des Skriptes bei nicht sichtbarem Desktop unkalkulierbare Auswirkungen haben...
Das Warten kannst (und solltest) du mit WinWaitActive realiiseren, wenn das bei diesem Spiel geht.
Der Klick auf Starten wäre besser mit ControlClick realiseren, wenn das noch ein Standardwindowsfenster ist und nicht das Fullscreen-Game.
Das Intro sollte sich mit Send("{ESC}") o.ä. abrrechen lassen.
Es ist leider so, dass manche Spiele sich gegen solche Skripte wehren, da diese ja potentiell auch später im Spiel als Bots agieren könnten mittels Maus- und Tastatuesimulation betrügen könnten. Daher sind hier Tipps erst sinnvoll zu geben, wenn wir wissen, um welches Spiel es sich handelt.
Grundsätzliche Struktur des Skriptes zum mehrfachen Connect-Versuch:
; was du bisher hast
While 1
Send("username{TAB}passwort{ENTER}")
Sleep(4000)
$logged_in = ??? ; Hier müsste man das "disconnected"-Fenster erkennen lassen
If $logged_in = 1 Then ExitLoop
WEnd
Ich hoffe, das hilft dir erst mal ein bisschen weiter,
peethebee
Hallo!
In der aktuellen Ausgabe der c't (https://autoit.de/www.ctmagazin.de) ist genau das beschrieben. Es wird geschildert, wie Skype es erreicht, dass man "rauskommt" und es woanders auch "ankommt", beides trotz NAT und Firewall.
Allerdings habe ich es nicht mehr genau im Kopf, aber es dürfte mit AutoIt eher nicht gehen...
Dürfte nicht das Problem sein, den Port freischalten zu lassen, oder?
Wegen der Portnummer musst du nur darauf achten, keine zu erwischen, die schon besertzt ist. Das ist besonders bei den kleinen Nummern der Fall (21 FTP, 80 HTTP, ...). Daher solltest du eine größere Nummer nehmen und ein bisschen recherchieren, ob die sonst noch jemand nutzt. Maximalwert ist 2^16 (-1?), also 65535.
Die Verbindung über den Server laufen zu lassen, halte ich nicht für eine gute Idee, da das viel unnötigen Traffic verursacht und auch für den User nicht transparent ist. Lieber sollte der zentrale Server nur die Verwaltung der IPs der Clients verwalten, mit deren Hilfe sich dann recht einfach eine Direktverbindung aufbauen lassen sollte.
Es kann sein, dass du für jede Verbindung - also jeden Chatpartner - einen eigenen Port belegen musst, das musst du mal untersuchen, habe ich gerade nicht im Kopf.
peethebee
Hallo!
Nachdem die neue AutoIt-Version 3.2.0.0 online ist, können wir damit die neue Hilfe ins
Deutsche übersetzen.
Die Quelldateien werde ich organisieren.
Das Programm zum Verglleich, was neu ist, stand auch schon oder?
Wer helfen will, zu übersetzen, melde sich bitte hier noich einmal kurz.
peethebee
Sorry, aber ich habe im Moment einfach viel zu tun (Galenda, Ruby lernen, CleanScript schreiben, supporten).
Wie gesagt, was bei Galenda ist, sollte vom Ansatz her verwendbar sien. Klar musst du einige Galenda-spezifische Funktionen ersetzen, aber es sollte machbar sien.
peethebee