Guten Abend, Community!
Vor kurzem habe ich mich mal wieder dem Thema AutoIT zugewandt und möchte euch jetzt mal ein nützliches Tool von mir präsentieren.
[Only registered and activated users can see links. Click Here To Register...] (1.00)
Das Programm loggt euch bei Metin2 ein (auch mit dem neusten Patch von heute...oder gestern?! Kp... Bin auf jeden Fall eben damit fertig geworden, die neuen Coords der Server und CH's einzutragen -.-")
Dazu kommt noch ein von mir Programmierter (Simpler) Farmbot und ein (Eigentlich nicht nennenswerter) PickUpBot.
Die Accountdaten etc. werden in einer separaten Datei gespeichert und bei jedem Start abgerufen.
Metin2 sollte in der Auflösung 800x600 geöffnet werden, sonst gibts ein paar Probleme ;)
Wie schnell oder langsam euer PC arbeitet ist bei diesem Einlogbot egal, da ich mit Pixelsearch gearbeitet habe und er so lange wartet, bis er den nächsten Abschnitt anhand eines bestimmten Pixels identifizieren kann.
Ich stelle den Code gerne hier zur Verfügung, damit andere evtl. auch noch etwas lernen können und ihr euch selbst davon überzeugen könnt, dass das Teil virenfrei ist.
Schönen Abend noch...
Ver. 1.00:
[Only registered and activated users can see links. Click Here To Register...]
Ver. 1.01:
[Only registered and activated users can see links. Click Here To Register...]
Änderungen 1.01:
-Charakterauswahl
-Ein paar Bugfixes
Ver. 1.02:
[Only registered and activated users can see links. Click Here To Register...]
Änderungen 1.02:
-GUI Änderung beim Farmbot
-Bugfixes beim Starter
Code:
PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <GuiSlider.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>
#include <IE.au3>
#Region ### START Koda GUI section ### Form=
$Phraze = GUICreate("Phraze's Multi Starter", 314, 150, -1, -1)
GUISetBkColor(0x2A2A2A)
$Acc = GUICtrlCreateInput(Iniread(@Scriptdir & "\saves.ini", "Account", "Account", "" ), 4, 8, 133, 21)
$PW = GUICtrlCreateInput(Iniread(@Scriptdir & "\saves.ini", "Passwort", "Passwort", "" ), 4, 36, 133, 21,$ES_PASSWORD)
$Serv = GUICtrlCreateCombo(Iniread(@Scriptdir & "\saves.ini", "Server", "Server", "" ), 4, 64, 133, 25)
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21")
$CH = GUICtrlCreateCombo(Iniread(@Scriptdir & "\saves.ini", "Channel", "Channel", "" ), 4, 92, 133, 25)
GUICtrlSetData(-1, "1|2|3|4|5|6")
$Save = GUICtrlCreateButton("Speichern", 4, 120, 61, 25, 0)
$Metin2 = GUICtrlCreateButton("Login", 76, 120, 63, 25, 0)
$Label1 = GUICtrlCreateLabel("< Account", 144, 8, 53, 17)
$Label2 = GUICtrlCreateLabel("< Passwort", 144, 36, 56, 17)
$Label3 = GUICtrlCreateLabel("< Server", 144, 64, 44, 17)
$Label4 = GUICtrlCreateLabel("< Channel", 144, 92, 52, 17)
$Label5 = GUICtrlCreateLabel("(Numpad 1 = Hilfe/Infos)", 144, 124, 83, 17)
$PotBot = GUICtrlCreateButton("Pot Bot", 232, 60, 75, 25, 0)
$Farmbot = GUICtrlCreateButton("Farmbot", 232, 24, 75, 25, 0)
$PickUp = GUICtrlCreateButton("PickUp Bot", 232, 96, 75, 25, 0)
$Exit = GUICtrlCreateButton("Exit", 247, 120, 45, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
HotKeySet ("{NUMPAD1}" ,"Help") ;Hotkey für die Hilfefunktion (F1)
Func Help() ;Numpad 1 Hilfefunktion
MsgBox (0,"Hilfe","Der EinlogBot funktioniert nur bei einer Auflösung von 800x600.Wenn es sonstige Probleme gibt, schreibt ne Mail an: [Only registered and activated users can see links. Click Here To Register...]... Dieses Programm wurde von Phraze erstellt.")
EndFunc
Func Metin2Start()
Run("start.bat") ;Metin2 ohne Patch sofort starten
Sleep (700) ;Kurz warten
ProcessClose("cmd.exe") ;Die Batch Datei schließen, sie wird nicht länger benötigt
;WinExists (".bat") ;Kontrolle ob ein Fehler vorliegt
;If not @error Then ;Wenn einer vorliegt...
;error() ;Funktion "error" ausführen
;Else ;Wenn nicht...
WinActivate ("METIN2") ;Metin2 starten und mit dem Login fortfahren
WinWaitActive ("METIN2")
Sleep (1000)
Login()
;EndIf
EndFunc
Func Login() ;Login Funktion
;Ab hier stehen die Server Coords
If GUICtrlRead($Serv) = 1 Then
MouseClick("left",290,232)
EndIf
If GUICtrlRead($Serv) = 2 Then
MouseClick("left",290,249)
EndIf
If GUICtrlRead($Serv) = 3 Then
MouseClick("left",290,266)
EndIf
If GUICtrlRead($Serv) = 4 Then
MouseClick("left",290,283)
EndIf
If GUICtrlRead($Serv) = 5 Then
MouseClick("left",290,299)
EndIf
If GUICtrlRead($Serv) = 6 Then
MouseClick("left",290,317)
EndIf
If GUICtrlRead($Serv) = 7 Then
MouseClick("left",290,336)
EndIf
If GUICtrlRead($Serv) = 8 Then
MouseClick("left",290,350)
EndIf
If GUICtrlRead($Serv) = 9 Then
MouseClick("left",290,367)
EndIf
If GUICtrlRead($Serv) = 10 Then
MouseClick("left",290,384)
EndIf
If GUICtrlRead($Serv) = 11 Then
MouseClick("left",290,402)
EndIf
If GUICtrlRead($Serv) = 12 Then
MouseClick("left",290,418)
EndIf
If GUICtrlRead($Serv) = 13 Then
MouseClick("left",290,436)
EndIf
If GUICtrlRead($Serv) = 14 Then
MouseClick("left",290,452)
EndIf
If GUICtrlRead($Serv) = 15 Then
MouseClick("left",290,469)
EndIf
If GUICtrlRead($Serv) = 16 Then
MouseClick("left",400,232)
EndIf
If GUICtrlRead($Serv) = 17 Then
MouseClick("left",400,249)
EndIf
If GUICtrlRead($Serv) = 18 Then
MouseClick("left",400,266)
EndIf
If GUICtrlRead($Serv) = 19 Then
MouseClick("left",400,283)
EndIf
If GUICtrlRead($Serv) = 20 Then
MouseClick("left",400,299)
EndIf
If GUICtrlRead($Serv) = 21 Then
MouseClick("left",400,317)
EndIf
If GUICtrlRead($Serv) = 22 Then
MouseClick("left",400,336)
EndIf
;Ab hier stehen die Channel Coords
If GUICtrlRead($CH) = 1 Then
MouseClick("left",540,232)
EndIf
If GUICtrlRead($CH) = 2 Then
MouseClick("left",540,249)
EndIf
If GUICtrlRead($CH) = 3 Then
MouseClick("left",540,266)
EndIf
If GUICtrlRead($CH) = 4 Then
MouseClick("left",540,283)
EndIf
If GUICtrlRead($CH) = 5 Then
MouseClick("left",540,299)
EndIf
If GUICtrlRead($CH) = 6 Then
MouseClick("left",540,317)
EndIf
Sleep (1000)
MouseClick ("left",528,545) ;Auf "OK" klicken
Sleep (1000)
Send (GUICtrlRead($Acc)) ;Eingabe der Accountdaten
Send ("{Enter}")
Sleep (500)
Send (GUICtrlRead($PW));Eingabe des Passworts
Send ("{Enter}")
sleep (4500)
PixelSearch (0,0,@DesktopWidth,@DesktopHeight,0xD9D9D9) ;Wenn ein bestimmtes Pixel bei der Figurenauswahl gefunden wird, loggt der Bot den Character ein
If not @error Then ;Wenn das Pixel gefunden wird...
MouseClick ("left",172,505) ;Klickt der Bot auf den Start-Button
EndIf
Endfunc
Func FarmbotStart() ;Startfunktion für meinen Farmbot
MsgBox (0,"Hinweis","Wechsle jetzt möglichst schnell ins Metin2 Fenster.")
Run ("frm.exe")
EndFunc
Func PickUpStart() ;Startfunktion für meinen PickUp-Bot
Run ("pup.exe")
EndFunc
Func PotBotStart() ;Spätere Startfunktion für einen PotBot
Sleep (200)
MsgBox (1,"Error","Leider ist die Funktion noch nicht im Script enthalten, da ich selber noch keinen PotBot gecodet habe. Sorry!")
EndFunc
Func Save() ;Speicherfunktion für Benutzerdaten etc.
IniWrite(@ScriptDir & "\saves.ini", "Account", "Account", GUICtrlRead($Acc))
IniWrite(@ScriptDir & "\saves.ini", "Passwort", "Passwort", GUICtrlRead($PW))
IniWrite(@ScriptDir & "\saves.ini", "Server", "Server", GUICtrlRead($Serv))
IniWrite(@ScriptDir & "\saves.ini", "Channel", "Channel", GUICtrlRead($CH))
EndFunc
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Metin2
Call("Metin2Start")
Case $Farmbot
Call("FarmbotStart")
Case $PotBot
Call("PotBotStart")
Case $PickUp
Call("PickUpStart")
Case $Save
Call ("Save")
Case $Exit
Exit
EndSwitch
WEnd
Achso...WICHTIG!!! =>> Das Paket muss in den Metin2 Ordner entpackt werden, sonst funzt der Run Befehl nicht richtig...
Feedback erwünscht, mich interessiert, ob das Ding auch auf anderen Rechnern funktioniert ^^
Edit2: Hatte ganz vergessen den eingebauten Farmbot zu erklären...
Also, wenn ihr beim Multistarter auf den Farmbot Button klickt, kommt Momentan noch eine Meldung: "Jetzt schnell ins Metin2 Fenster wechseln" Diese stammt noch aus grauer Vorzeit, also einfach ignorieren.
Danach öffnet sich das Farmbot Fenster. Die Auflösung des Spiels ist beim Farmbot egal, da er im Moment noch ohne Fertgikeiten arbeitet...(Sorry ;)) Allerdings solltet ihr die Minimap und das Inventar schließen, da er sonst rote Pixel dort finden könnte, was zu Fehfunktionen führt.
Wenn ihr dann Auf den Starten Button klickt, fängt er an Monster zu suchen. Wenn er welche findet klickt er sie - ganz simpel - an. Wenn ihr ihn unbeaufsichtigt laufen lassen wollt, solltet ihr euch einen Pot und/oder Fertigkeiten Bot holen, sonst kackt er früher oder später ab.
(Ich werde in späteren Releases auch selbst gecodete Pot/Fertigkeiten Bots in den Multistarter einbauen.)