Autoit ragiert Ingame nicht!

11/21/2011 16:59 Djstv#1
Sry Überschrift sollte: Autoit Reagiert Ingame nicht! heißen

Hey ich brauche eure Hilfe undzwar habe ich mir ein Bot gescripted der bei 4Story Automatisch angreifen und töten soll das ganze funktioniert habe das auf einen Editor getestet: 1:Tab um anzuvisieren 2:Angreifen und 3: die Attacken bis 5. Er drückt alle Tasten auch in den Zeiten wie ich es möchte bloß Ingame scheint es so also ob er Pausieren würde oder halt nicht Reagiert:

Code:
#cs ----------------------------------------------------------------------------
	AutoIt Version: 1.5
	Author: Djstv
#ce --------------

HotKeySet ("{F5}","_start")
HotKeySet ("{F6}","_exit")

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Windows\Desktop\Form1_1_1.kxf
$Form1_1_1 = GUICreate("4Story lvl Bot", 267, 323, 863, 559)
$Group1 = GUICtrlCreateGroup("Funktionen", 8, 8, 249, 57)
$Button2 = GUICtrlCreateButton("Stop (F6)", 144, 24, 97, 25)
$Button1 = GUICtrlCreateButton("Start (F5)", 24, 24, 97, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Einstellungen", 8, 72, 249, 161)
$Button_Save = GUICtrlCreateButton("Speichern", 136, 164, 100, 20)
$Button_Laden = GUICtrlCreateButton("Laden", 136, 196, 100, 20)
$Label1 = GUICtrlCreateLabel("Attacken:", 24, 96, 50, 17)
$Label2 = GUICtrlCreateLabel("1 Attacke:", 24, 117, 53, 17)
$Label3 = GUICtrlCreateLabel("2 Attacke:", 24, 140, 53, 17)
$Label4 = GUICtrlCreateLabel("3 Attacke:", 24, 162, 53, 17)
$Input1 = GUICtrlCreateInput("1", 88, 112, 17, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
$Input2 = GUICtrlCreateInput("2", 88, 135, 17, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
$Input3 = GUICtrlCreateInput("3", 88, 157, 17, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
$Label5 = GUICtrlCreateLabel("4 Attacke:", 24, 185, 53, 17)
$Input4 = GUICtrlCreateInput("4", 88, 179, 17, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
$Label6 = GUICtrlCreateLabel("5 Attacke:", 24, 209, 53, 17)
$Input5 = GUICtrlCreateInput("5", 88, 202, 17, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Credits:", 8, 248, 249, 65)
$Label7 = GUICtrlCreateLabel("Scripted by DarkRivals aka. Djstv ,", 48, 272, 169, 17)
$Label8 = GUICtrlCreateLabel("and Special Thanks to Stalker600", 48, 288, 165, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
		_start ()
		Case $Button2
		_Exit ()
Case $Button_Save
            ;Speichern von Inputfeldern

            $sZielDatei = FileSaveDialog("Speichern", "", "Grab-Datei (*.grab)")
            If @error Then ContinueLoop ; Wenn Abrrechen gedrückt wurde, zurück zu Zeile 9 springen
            If StringRight($sZielDatei, 5) <> ".grab" Then $sZielDatei = $sZielDatei & ".grab"

            ;Informationen aus Feldern auslesen (GUICtrlRead) und in die Datei schreiben. (IniWrite)
            $sInputWert = GUICtrlRead($Input1)
            IniWrite($sZielDatei, "Inputfelder", "Input1", $sInputWert)

            $sInputWert = GUICtrlRead($Input2)
            IniWrite($sZielDatei, "Inputfelder", "Input2", $sInputWert)
			
			$sInputWert = GUICtrlRead($Input3)
            IniWrite($sZielDatei, "Inputfelder", "Input3", $sInputWert)
			
			$sInputWert = GUICtrlRead($Input4)
            IniWrite($sZielDatei, "Inputfelder", "Input4", $sInputWert)
			
			$sInputWert = GUICtrlRead($Input5)
            IniWrite($sZielDatei, "Inputfelder", "Input5", $sInputWert)

            ; ....
            ; für mehr Input felder, muss das hier fortgeführt werden.

        Case $Button_Laden
            ;Laden von Texten in die Inputfelder
            $sQuelldatei = FileSaveDialog("Öffnen", "", "Grab-Datei (*.grab)")
            If @error Then ContinueLoop ; Wenn Abrrechen gedrückt wurde, zurück zu Zeile 9 springen
            If StringRight($sQuelldatei, 5) <> ".grab" Then $sQuelldatei = $sQuelldatei & ".grab"

            ;Informationen auslesen (Iniread), und eintragen (GUICtrlSetData)
            $sIniWert = IniRead($sQuelldatei, "Inputfelder", "Input1", "")
            GUICtrlSetData($Input1, $sIniWert)

            $sIniWert = IniRead($sQuelldatei, "Inputfelder", "Input2", "")
            GUICtrlSetData($Input2, $sIniWert)
			
			$sIniWert = IniRead($sQuelldatei, "Inputfelder", "Input3", "")
            GUICtrlSetData($Input3, $sIniWert)
			
			$sIniWert = IniRead($sQuelldatei, "Inputfelder", "Input4", "")
            GUICtrlSetData($Input4, $sIniWert)
			
			$sIniWert = IniRead($sQuelldatei, "Inputfelder", "Input5", "")
            GUICtrlSetData($Input5, $sIniWert)


		EndSwitch
WEnd


While 1
	sleep(1500)
	WEnd
		
Func _start ()
	AutoItSetOption("SendKeyDownDelay",10)
	While 1
	sleep(3000)
Send("{TAB}")
Send("{1}")
	sleep(3000)
Send("{2}")
	sleep(2000)
Send("{3}")
	sleep(2000)
Send("{4}")
	sleep(2000)
Send("{5}")
	sleep(9000)

WEnd
EndFunc 

Func _Exit ()
	Exit
EndFunc
Dies ist aber nicht mein einziges Problem nähmlich ich habe InputBoxen erstellt und ich möchte das wenn ich dort jetzt zb. 3 eingebe und ich start drücke das er Ingame dann auch als Erstes die 3 statt die 1 drückt. Da ich das mit den InputBoxen noch nicht geschafft hatte habe ich mir folgendes eingefügt:
Code:
Func _start ()
	AutoItSetOption("SendKeyDownDelay",10)
	While 1
	sleep(3000)
Send("{TAB}")
Send("{1}")
	sleep(3000)
Send("{2}")
	sleep(2000)
Send("{3}")
	sleep(2000)
Send("{4}")
	sleep(2000)
Send("{5}")
	sleep(9000)

WEnd
EndFunc
Das ist der code der eingentlich funktionieren sollte den hatte ich auf Editor Erfolgreich testen können bloß Ingame scheint es nicht zu funktionieren.

Also nochmal zusammengefasst:
Ich möchte das wenn ich in den InputBoxen die Zahl 3 eingebe das er dann ingame auch die 3 statt die 1 drückt und ich das ganze dann ohne diese Code machen kann:
Code:
Func _start ()
	AutoItSetOption("SendKeyDownDelay",10)
	While 1
	sleep(3000)
Send("{TAB}")
Send("{1}")
	sleep(3000)
Send("{2}")
	sleep(2000)
Send("{3}")
	sleep(2000)
Send("{4}")
	sleep(2000)
Send("{5}")
	sleep(9000)

WEnd
EndFunc
Da ja dieser Code schon alle Zahlen vorgiebt.

Und was noch Nett wäre wenn ihr mir erklären könntet wie man diesen Bot einen Prozess zuteilt sodass ich nicht das spiel im Vordergrund haben muss oder wie ist eine Art liste von Prozessen machen kann da ich diesen Bot auch für andere Games benutzen möchte.

Sry das es soviel ist bin noch ein Anfänger aber ich google schon den ganzen Tag und habe jetzt auch schon Kopfschmerzen.

Vielen Dank im Vorraus!

MFG Djstv
11/21/2011 18:05 KDeluxe#2
Das mit dem Input kannst du mit GUICtrlRead($Input) lösen. 4Story blockiert aber alle Send() Befehle, bringen wird es dir also nichts.
11/21/2011 18:21 Djstv#3
Dh. das ich das ganze bei 4Story vergessen kann oder wie?
Ich kenne ein paar Bots bei 4Story die ebendfalls mit Autoit gescripted wurden oder muss ich da noch irgendwas einbauen? Sry das ich soviel frage xDDD

/Edit Wie würde da Script denn mit GUICtrlRead($Input) aussehen ich versuche das jetzt irgendwie einzubauen aber es bringt nichts er benutzt weiter hin die anderen und wenn ich die anderen entferne kommt garnichts ?
11/22/2011 18:14 KDeluxe#4
Je nach System kannst du noch etwas mit [Only registered and activated users can see links. Click Here To Register...] bewirken. Es gibt auch noch andere Möglichkeiten, darauf näher einzugehen lohnt sicher meiner Meinung aber nicht, da du davon keine Ahnung hast.
Soviel ich weiß werden AutoIt Applikationen aber generell von 4Story als "Hack" erkannt, was zum beenden des Spiels führt. Kann sein, dass es sich inzwischen geändert hat.
11/24/2011 13:10 Djstv#5
Also 4Story schleißt sich bei mir nicht es bewirkt einfach nur nichts also passiert nichts kann den Bot so oft starten wie ich will passiert nichts.. habe den Bot auch einen Speziellen Prozess gegeben und dennoch bleibt 4Story an..
11/24/2011 17:36 KDeluxe#6
Für welchen Server soll das Ganze den jetzt sein? Auf einem Server ohne HackShield kannst du problemlos PostMessage benutzen. Für einen Server mit HackShield wäre das theoretisch auch möglich, wenn du ein 64 Bit System hast.
11/25/2011 20:33 Djstv#7
also es war für ein Offi server gedacht habe das ganze mal bei 4Story global ausprobiert scheint auch dort nicht zu funktionieren. und ich habe ein 32bit System