[TUT]1.Potfunktions Methode in AutoIT

08/22/2012 17:37 Samulau#1
Hallo Leute.
Da es zurzeit viele Bots gibt, die nur Angreifen und aufheben (HP und MP) auslesen möchte ich euch noch dazu erklären wie ihr eine erweiterte Funktion erstellen könnt.Ich nehme hier mal eine Auto-Pot Funktion rein damit ihr seht wie man so etwas aufbauen könnte.
So nun zum eigentlichen Bot Aufbau.
Man nehme ein Fenster mit einem Label,eine Combo und einer Input.
(Schnell erstellt sorry für das schlechte Design :D)
[Only registered and activated users can see links. Click Here To Register...]

So nun kommen wir zum eigentlichen Code.
Also er sieht bis jetzt noch folgender Maßen aus :
ALso mit der Combo wollen wir einstellen oder der Benutzer wo diese in der Skill-leiste liegen.Habe jetzt mal nur 6-9 genommen.
In der Input werden die Sekunden eingetragen wenn diese Sekunden auf 0 fallen Pottet er einmal die Taste 6-oder/bis-9 und dannach setzt er die Sekunden von 0 wieder auf die eingetragenen Sekunden ein.Als erstes werden nun die Start/Stop/Exit Funktionen geschrieben jedoch die Start-funktion noch nicht ganz.(Dies kommt noch.)
Die Funktionen werden im Code beschrieben wer AutoIT etwas kann sollte den Code verstehen können :)
Nun müssen wir diese Funktionen natürlich aufrufen können dies machen wir indem wir die HotKeys platzieren ! Am besten verwendet man die Tasten F1-F11(nicht F12 !).
So nun können wir die Funktionen auch noch erfolgreich aufrufen mit den Tasten F1,F2,F3.Nun kommen wir zur Save Funktion !Wir müssen die Input Speichern bevor wir die eigentliche Funktion starten können da er die Sekunden nicht einfach so herzaubern kann nachdem die Zahl auf 0 gefallen ist.Dafür lassen wir eine Save.ini erstellen (es geht auch mit Variablen zeige es jetzt mit diesen Methoden)im gleichen Ordner wo das Script/die .exe liegt.
Als nächstes Brauchen wir die Funktion zum Schreiben in die Save.ini und zum Aufrufen der Save.ini ! Diese Funktionen braucht ihr nun und setzt sie an das Ende des Scriptes !
Nun brauchen wir eigentlich nur noch die Potfunktion aber ich möchte noch darauf hinweisen nicht das #RequireAdmin am Anfang zu setzen und die $Save Variablen in die entsprechenden Combos und Inputs aber lest euch den kompletten Code später nochmal richtig durch damit ihr nichts falsch macht !
Nun kommt die eigentliche Potfunktion !
Nun müssen wir natürlich die ganzen Funktionen in die Startfunktion versetzen das macht ihr ungefähr so :
Zudem habe ich dort noch eingestellt das man während des Bottens nichts verändern kann an den Sekunden und an dem Potbutton und das wenn man ihn stoppt das die richtigen Sekunden wieder angezeigt werden statt die bei der man stehen geblieben ist.
Und herzlichen Glückwunsch du hast eine Methode der Potfunktion herausgefunden und kannst sie hoffentlich nun auch benutzen.
Hier sit der komplette Code:

Bitte informiert mich wenn Fehler vorhanden sind aber NICHT wenn ihr eine bessere Methode kennt !Das interessiert mich hier im Thread nicht .Rechtschreibfehler könnt ihr auch für euch behalten ,ich weiß das ich nicht gerade der beste in Sachen Rechtschreibung bin !
Ich hoffe ihr habt es halbwegs verstanden und könnt jetzt auch eine Potfunktion in euren Bot schreiben.
Ich bitte euch wenn ihr diese Funktion benutzt meine Credits mit an zu geben.

Mfg Samulau


PS.: Ich hoffe ich habe es euch genug erklärt und näher gebracht und mit ein paar Funktionen hier könnt ihr auch einiges Automatisch abspeichern lassen :)
Um die Save.ini zu erhalten müsst ihr meines erachtens nach einem die Potfunktion starten und dann den Bot wieder beenden.
08/22/2012 18:22 Mr.Tr33#2
Schlechtes Tutorial ;)
Also indirekt :D Ich habe es nicht durchgelesen und nur die Beispielscripte angeguckt.
Wenn man schon eine GUI hat, warum baut man nicht gleich Start/Stop und Exit Buttons ein? Hotkeyset wären in deinem Fall unnötig ;)
Ich helfe momentan [Only registered and activated users can see links. Click Here To Register...] bei AutoIt (mein Schüler :P) und er würde ein besseres Script, mit dem selben Funktionen und kleinerem Aufwand hinlegen, wenn er sich bemüht :P

Desweiterem ist dies hier der falsche Bereich dafür und man sollte jemanden nicht was "falsches" beibringen, wenn es auch richtig geht ...
08/22/2012 18:44 Samulau#3
Was ist falsch wenn die Funktion trotzdem funktioniert ?
Was ist falsch daran ein HotKeySet zu nehmen wenn es nicht so Zeitraubend ist ?
Was ist falsch an den Funktionen ?
Ganz genau NICHTS ist hier falsch.
Ich habe hier meine Methode gepostet du konntest deine Posten hast es aber nicht getan und lese bitte den Thread nochmal genau durch.
Ich habe das Tutorial genau so erklärt und wollte NICHT das hier etwas von wegen einer anderen Methode usw. gepostet wird .
Mich nervt es einmählig das hier manche meinen zu Posten das er das Tut schlecht findet vom Source aus obwohl er funktionstüchtig ist.
Wie Bartholo mal sagte
Selbst schreiben -> Releasen -> Beschweren.

PS.: Ich kann Kritik vertragen jedoch nicht wenn die Threadregeln gebrochen werden.

Mfg
08/22/2012 19:24 Mr.Tr33#4
Naja, ich habe gerade keine Lust drauf ein zu gehen, weil ich gleich weg muss.
Mach was du richtig findest, so sollte man es aber keinem beibringen wenn man schon jemanden was beibringen möchte ...
08/22/2012 19:30 xXKonaXx#5
Quote:
Originally Posted by Mr.Tr33 View Post
Schlechtes Tutorial ;)
Also indirekt :D Ich habe es nicht durchgelesen und nur die Beispielscripte angeguckt.
Wenn man schon eine GUI hat, warum baut man nicht gleich Start/Stop und Exit Buttons ein? Hotkeyset wären in deinem Fall unnötig ;)
Ich helfe momentan [Only registered and activated users can see links. Click Here To Register...] bei AutoIt (mein Schüler :P) und er würde ein besseres Script, mit dem selben Funktionen und kleinerem Aufwand hinlegen, wenn er sich bemüht :P

Desweiterem ist dies hier der falsche Bereich dafür und man sollte jemanden nicht was "falsches" beibringen, wenn es auch richtig geht ...
1.Hotkey's sind bei Bots viiiiiieeel handlicher als Buttons.
2.GUI's werden verwendet damit der User eingaben machen kann(Deswegen auch [G]raphical [U]ser [I]nterface), was in diesem Fall auch nötig ist.
3.Jeder hat seinen eigenen Schreibstyle, der vielleicht nicht der beste ist aber dennoch funktioniert.
4.Was willst du für ein "Lehrer" sein? :facepalm:
Lass deine unausgereifte Kritik bitte bei dir.

@Samulau
Ich bin der Meinung das dein Tutorial gut ist, weil du die einzelnen Codeabschnitte recht gut erklärst und du mal etwas Abwechslung in diese Forumabteilung bringst.
08/22/2012 20:24 Samulau#6
Ich freue mich das jemand meine Arbeit zu schätzen weiß ,weiß was man damit anfangen kann und auch weiß das es völlig richtig ist.
Ich finde es auch gut das du "Abwechslung" einbringst da ich hier eh nie TuT´s von irgendwas sehe.Also solltet ihr mal froh sein ,dass ich überhaupt mal ein TuT release.
Achja
@Mr.Tr33
Wieso ist dies hier der falsche Bereich ?
Dachte es wäre richtig korrigiert mich wenn ich hier falsch bin und wo es eigentlich hin muss.Wenn mir jemand mit AutoIT Section kommt neh :P Istn NosTale Tut.
08/22/2012 20:59 Δbraxas#7
Ich habs mir jetzt nicht genau durchgelesen, aber was unterscheidet das von einem Normalen Bot? Es wird ja nur eine bestimmte Taste in einem Zeitintervall gedrückt, oder?
Wäre es nicht klüger die HP auszulesen und bei x% zu potten?
08/22/2012 22:27 Furkiii#8
Zuuuuu aufwandvoll ....

Inputbox -> Zeit reinschreiben ---> In Bot einbauen ---> Fertig

Sollte ein script nicht über 20 Zeilen sein
08/22/2012 22:49 Samulau#9
Lest den ersten post ich möchte nichts von einer anderen methode wissen und dabei ist nichts zeitaufwendig wenn du den code einmal richtig gelesen hast und sieht zuvleich auch nicht schlecht aus
Released eure tuts ich meine jedoch glaube ich kaum das ihr dies machdn werdet.das mit den pointer ist auch was anderes ich wollte was zum forum beitragen und wieder diese kommentare tut von mir ... nie wieder könnt ihr schlaumeier machen :)
sorry schreibe auf handx
08/23/2012 11:59 Atzenkeeper#10
Ich glaub sie wollen einfach alle darauf hinaus da der Code unsauber und unnötig verkompliziert ist.

Nehmen wir mal:
Code:
$active = 1 ;wir setzen die Variable active auf 1
If $active = 1 Then ;wenn die Variable active gleich 1 ist dann (funktion)
Was soll denn bitteschön diese Abfrage obwohl active jedesmal vor der Abfrage auf 1 gesetzt wird ??

Zudem ist es lediglich ein Keypresser mit unnötigen speicher Funktionen.
Was macht er er drückt mit nem bestimmten Delay ne bestimmte Taste.
Also genau das selbe wie ein Leertasten Bot. Würde man dort jetzt Leertaste angeben können wäre es genau das selbe. Die Autopot Funktion bekommt jeder hin der nen Keypresser schreiben kann also JEDER.

Und Kritik muss man auch vertragen können wenn man hier was Postet zumal du ja auch in den Credits erwähnt werden willst :D
08/23/2012 13:27 Nestos#11
Schlechte Kritik ist nicht immer etwas schlechtes, aber so wie ihr es rüberbringt ist es wirklich unnütze Kritik. Das ganze grenzt ja schon am Schlechtmachen.

Seit froh dass er den Anfängern soetwas zur Verfügung stellt. Wenn ihr es besser könnt dann macht einen eigenen Thread dafür und beweist es.

BTT:
Ich finde die Idee nicht schlecht, vorallem für Anfänger ist es etwas nützliches.
Allerdings würde ich dir folgendes ans Herz legen:
  • Statt GUIGetMsg solltest du den GUIOnEventMode nutzen. Leichter zu handln und in meinen Augen auch machtvoller.
  • Versuch die HotkeySet's mit _IsPressed auszutauschen, da HotkeySet die Tasten für das Programm reserviert.
  • Drück öfters in SciTE 'Strg + T' um Tidy aufzurufen, welches dein Skript seubert und somit leserlicher macht.
  • Gewöhn dir an vor deinen eigenen Funktionen ein '_' zu setzen, damit man schneller erkennen kann dass es sich bei der Funktion um keine native handelt.
  • Versuch deinen Funktionen eindeutigere Namen zu geben. Weil IniWrite_ ist nicht gerade sehr eindeutig und beinhaltet zudem noch den Namen einer nativen Methode, was bei drüberlesen schnell zu Verwirrung führen kann.
  • While-Schleifen sind in Funktionen generell immer zu vermeiden, da sie das gesamte Skript blockieren.

Dann noch ein Fehler in deinem Skript:
Code:
Func Stop_()
    GuiCtrlSetState($Input1,$GUI_Enable)
    GuiCtrlSetState($Combo1,$GUI_Enable)
	$active = 0
	If $active = 0 Then
		While 1
			sleep(20);Schläft durchgehend bis das $acive auf 1 gesetzt wird
		WEnd
	EndIf
EndFunc
Das Programm kann die While-Schleife nie verlassen, weil die While-Schleife sich wiederholt solange 1 == 1 ist, was immer der Fall ist. Somit ist das Kommentar ";Schläft durchgehend bis das $acive auf 1 gesetzt wird" falsch, weil $active jetzt garnichtmehr berücksichtigt werden kann.
Außerdem ist es eine schlechte Angewohnheit While-Schleifen in Funktionen zu verwenden, da sie wie oben gesagt das ganze Skript blockieren.
Das ganze sollte in die Hauptschleife verlegt werden, weil es wirklich nur dort Sinn macht.

Aber nette Idee auf alle Fälle. ;)

MfG,
Nestos.
08/23/2012 14:32 Samulau#12
Danke für die gute Kritik.
Es ist kein Fehler im Script ,da der Bot perfekt stoppt kannst es ja mal ausprobieren :)
Aber danke das andere werde ich mir zu Herzen nehmen auch wenn ich es so gelernt habe ,und wahrscheinlich dennoch weiterhin so anwenden werde.
Finde ich einfach leichter ,mein Script-style und HotKey´s verbaue ich meist in Bots da es für mich auch leichter ist und zudem schneller und handlicher.
08/25/2012 13:40 *-Zero-*#13
Eigendlich ganz gut gelungen das Tut, ist zwar für richtige Anfänger noch etwas zu kompliziert aber sonst gut!
08/25/2012 13:46 TTPP#14
Quote:
Originally Posted by *-Zero-* View Post
Eigendlich ganz gut gelungen das Tut, ist zwar für richtige Anfänger noch etwas zu kompliziert aber sonst gut!

Dann bist du ja weit entfernt es zu verstehen!
08/27/2012 04:01 Mr.Tr33#15
Quote:
Originally Posted by *-Zero-* View Post
Meine fans haten mal wieder ;) findsch jut ...
Mich magst du ja am aller meisten, hast du gesagt :D

/Edit:
@Samulau
Ich habe mir das ganze jetzt mal durchgelesen und dachte das ich doch etwas zu hard war. Ich sehe das du den Usern helfen möchtest.
Ich weiß das du keine Änderungen haben möchtest an deinem Script, aber ich kann es nicht anssehen, dass man so viele Schleifen benutzt.
Naja, ich habe es dir grob angepasst. Nun funktioniert die Gui so wie sie funktionieren soll (man kann sie über das X schliessen ^^) und das ganze läuft nur noch über eine Schleife.
Schau es dir einfach an, ich habe so manche stellen kommentiert, aber meine Kommentare wirst du schon sehen :)

Desweiterem würde ich dich bitten den Unterstrich bei Funktionen am Anfang zu setzen :P

Wenn du selbst Hilfe bei AutoIt brauchst, du kannst dich jederzeit bei mir melden. Ich helfe gerne jemanden, bei dem ich sehe das er was lernen möchte. Also keine Angst ;)