Pgrogramm schließt bei Hotkey oO

05/19/2010 19:53 Mephizto666#1
Hiho, bin noch relativ neu was das programmieren mit AutoIt und GWCA angeht.
Wollte einen ID-Save Bot schreiben, um ein wenig in die Materie reinzukommen (jaja, ich weiß den Bot gibts schon). Ich hoffe ihr könnt mir helfen. Der Bot schließt sich, sobald ich die "0" auf dem Numblock drücke oO
Hier der Code:

Code:
#include "GWCAConstants.au3"
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

HotKeySet("{Numpad0}", "fSave")
HotKeySet("{Numpadadd}", "fDelete")
HotKeySet("{Numpad1}", "fTarget1")
HotKeySet("{Numpad2}", "fTarget2")
HotKeySet("{Numpad3}", "fTarget3")
HotKeySet("{Numpad4}", "fTarget4")
HotKeySet("{Numpad5}", "fTarget5")
HotKeySet("{Numpad6}", "fTarget6")
HotKeySet("{Numpad7}", "fTarget7")
HotKeySet("{Numpad8}", "fTarget8")
HotKeySet("{Numpad9}", "fTarget9")
HotKeySet("{Numpaddiv}", "fExit")

$i = 1

func activate()
	if Not WinActive($sGW) Then WinActivate($sGW)
EndFunc

Func fSave()
	CmdCB($CA_GetCurrentTarget, $Player_ID[$i])
	$i = $i + 1
EndFunc

Func fTarget1()
	Cmd($CA_ChangeTarget, $Player_ID[1]) 
EndFunc

Func fTarget2()
	Cmd($CA_ChangeTarget, $Player_ID[2]) 
EndFunc

Func fTarget3()
	Cmd($CA_ChangeTarget, $Player_ID[3]) 
EndFunc

Func fTarget4()
	Cmd($CA_ChangeTarget, $Player_ID[4]) 
EndFunc

Func fTarget5()
	Cmd($CA_ChangeTarget, $Player_ID[5]) 
EndFunc

Func fTarget6()
	Cmd($CA_ChangeTarget, $Player_ID[6]) 
EndFunc

Func fTarget7()
	Cmd($CA_ChangeTarget, $Player_ID[7])
EndFunc

Func fTarget8()
	Cmd($CA_ChangeTarget, $Player_ID[8]) 
EndFunc

Func fTarget9()
	Cmd($CA_ChangeTarget, $Player_ID[9])
EndFunc

Func fDelete()
	For $i = 1 To 9 
		$Player_ID[$i] = 0
	Next
	$i = 1;
EndFunc

Func fExit()
	Exit
EndFunc

While 1
WEnd
05/19/2010 20:09 kknb#2
ich nehme an du bekommst fehler in scite ausgegeben, diese solltest du lernen zu verstehen und zu beseitigen, ich bin mir ziemlich sicher das sich das script beendet weil variablen nicht deklariert sind.
05/19/2010 20:30 Mephizto666#3
Variablen sind deklariert:

Code:
Global $i = 1,  $Player_ID[9]
Problem jetzt, dass er beendet, wenn ich "+" auf dem Numblock drücke oO
05/20/2010 07:44 Mephizto666#4
Habs gestern nochmal überarbeitet, komm aber trotzdem nich drauf >.<
Wär echt nett, wenn da jmd helfen könnte ;)

Code:
#include "GWCAConstants.au3" ; Dürfte klar sein

;Hotkeys werden gesetzt
HotKeySet("{Numpad0}", "fSave")
HotKeySet("{Numpadadd}", "fDelete")
HotKeySet("{Numpad1}", "fTarget1")
HotKeySet("{Numpad2}", "fTarget2")
HotKeySet("{Numpad3}", "fTarget3")
HotKeySet("{Numpad4}", "fTarget4")
HotKeySet("{Numpad5}", "fTarget5")
HotKeySet("{Numpad6}", "fTarget6")
HotKeySet("{Numpad7}", "fTarget7")
HotKeySet("{Numpad8}", "fTarget8")
HotKeySet("{Numpad9}", "fTarget9")
HotKeySet("{Numpaddiv}", "fExit")

;Deklaration der Variablen
Global $i, $Player_ID, $cbType = "Float"

func activate()
	if Not WinActive($sGW) Then WinActivate($sGW)
EndFunc

Func fSave()
	$Player_ID[$i] = CmdCB($CA_GetCurrentTarget); <-- Richtig oO?
	$i = $i + 1
EndFunc

Func fTarget1()
	Cmd($CA_ChangeTarget) = $Player_ID[1]; <-- Richtig oO? 
EndFunc

Func fTarget2()
	Cmd($CA_ChangeTarget) = $Player_ID[2] 
EndFunc

Func fTarget3()
	Cmd($CA_ChangeTarget) = $Player_ID[3]
EndFunc

Func fTarget4()
	Cmd($CA_ChangeTarget) = $Player_ID[4] 
EndFunc

Func fTarget5()
	Cmd($CA_ChangeTarget) = $Player_ID[5]
EndFunc

Func fTarget6()
	Cmd($CA_ChangeTarget) = $Player_ID[6] 
EndFunc

Func fTarget7()
	Cmd($CA_ChangeTarget) = $Player_ID[7]
EndFunc

Func fTarget8()
	Cmd($CA_ChangeTarget) = $Player_ID[8] 
EndFunc

Func fTarget9()
	Cmd($CA_ChangeTarget) = $Player_ID[9]
EndFunc

Func fDelete()
	For $i = 1 To 9 ; Von $i = 1 Bis 9 werden die Werte von $Player_ID auf 0 gesetzt
		$Player_ID[$i] = 0
	Next
	$i = 1; $i wird wieder =1, damit der Speichervorgang von neuem beginnen kann
EndFunc

Func fExit(); Schließt die Kiste
	Exit
EndFunc

While 1
WEnd
05/20/2010 07:59 OlafTank#5
wenn du ein array deklarierst dann so:

Global $Player_ID[1337]

du deklarierst eine Variable und greifst darauf zu als ob es ein array wäre. Die Größe des Arrays musst du wissen.

-------------------------------------------------------------------------

$Player_ID[$i] = CmdCB($CA_GetCurrentTarget);
schreib davor
$cbType = "int"

-------------------------------------------------------------------------

Global $i = 0
ich hab keine Ahnung ob autoit globale Variablen auf 0 initialisiert aber
es ist auf jeden fall besser wenn du es machst.
-------------------------------------------------------------------------


Func fTarget2()
Cmd($CA_ChangeTarget) =
EndFunc

das geht so nicht.
CA_ChangeTarget Parameter = id of target, changes target.

das ist eine funktion, der kannst du keinen wert zuweisen.
So muss es aussehen.
Cmd($CA_ChangeTarget, $Player_ID[2])

das gleiche gilt für die anderen Funktionen die so aussehen.

-------------------------------------------------------------------------

Du solltest dich mal ein bisschen mit Variablen und Funktionen und den GWCA Commands beschäftigen.

[Only registered and activated users can see links. Click Here To Register...]
05/20/2010 12:30 Mephizto666#6
OK danke, hatte das nur mit der Parameter-/Variablenzuweisung nich ganz verstanden, danke für die Erklärung :)