[TuT] How to code BoT's

02/01/2009 11:10 Azunai#16
[Only registered and activated users can see links. Click Here To Register...]

aufgabe:
erstelle ein script, mit dem du erkennst welcher gegner anvisiert wurde
(in diesem falle auf der insel der namenlosen)
sollte das ziel ein bestimmter gegner sein (60ger Rüstungsziel), dann greife an
02/01/2009 11:11 darkangel1000#17
Quote:
Originally Posted by Azunai View Post
[Only registered and activated users can see links. Click Here To Register...]

aufgabe:
erstelle ein script, mit dem du erkennst welcher gegner anvisiert wurde
(in diesem falle auf der insel der namenlosen)
sollte das ziel ein bestimmter gegner sein (60ger Rüstungsziel), dann greife an
Danke für die Aufgabe und den Link...
aber wo muss ich da jetzt downloaden, weil ich hab von jetzt schon mein normales AutiIt...
02/01/2009 12:16 Azunai#18
hä?
im v3 autoit ist alles mit drin,
und gui sowieso

guicreate()
02/01/2009 18:21 darkangel1000#19
ok aber gibts da nicht so nen Koda-designer, den man mit ALT-M aufrufen kann...Des mein ich eben :rolleyes:

€ ok, jetzt hab ich den auch, aber könnte mir bitte jemand nochmal den Link zur deutschen AutoIT-Hilfe geben, den fin dich nich mehr, nachdem ichs neu aufgesetz hab...
€²: auch das hat sich erledigt...
02/01/2009 20:51 darkangel1000#20
Problem...Wenn ich GW öffne um die Koordinaten mit dem AutoIT window-Tool zu Finden schiebst sich des iummmer in den Hintergrund obwohl icih des auf immer im Vordergrund hab...
02/01/2009 20:55 kknb#21
ja ist normal, mit strg+alt+f frierst du das prog ein und kannst die koordinaten in ruhe übernehmen.
02/02/2009 12:58 aLasca#22
Quote:
Originally Posted by darkangel1000 View Post
Problem...Wenn ich GW öffne um die Koordinaten mit dem AutoIT window-Tool zu Finden schiebst sich des iummmer in den Hintergrund obwohl icih des auf immer im Vordergrund hab...
Alt+Tab ftw ;)
02/02/2009 15:31 darkangel1000#23
Quote:
Originally Posted by aLasca View Post
Alt+Tab ftw ;)
alt+TAB ging bei mir ned...
02/02/2009 18:04 darkangel1000#24
ok...Ich poste erst mal wie weit,oder eben nicht ich es bis jetzt gemacht hab.


Code:
#cs 
OK... Aufgabenschwere: 3-4 erstelle ein script, mit dem du erkennst welcher gegner anvisiert wurde
(in diesem falle auf der insel der namenlosen)
sollte das ziel ein bestimmter gegner sein (60ger Rüstungsziel), dann greife an 
#ce
$left
$top
$bottom
$right
$Gegner1
$Gegner2
$60ger
Sleep(10000)

HotKeySet("{F10}","_attack") 
HotKeySet("{F9}","_end")

Func _activate()
	WinWait("Guild Wars","")
If Not WinActive("Guild Wars","") Then WinActivate("Guild Wars","")
WinWaitActive("Guild Wars","")
EndFunc
Func _attack ()
	_activate
If $60ger = PixelChecksum($left, $top, $right, $bottom )
	Then 
	Sleep(1000)
	Send("{space}")
ElseIf
	_check
	
EndIf
EndFunc

Func _check()
	If $Gegner1 = PixelChecksum($left, $top, $right, $bottom )
		Sleep(100)		
		MsgBox(0,"Gegner",$Gegner1)
	ElseIf
		$Gegner2 = PixelChecksum($left, $top, $right, $bottom )
		Sleep(100)
		MsgBox(0,"Gegner",$Gegner2)
	ElseIf
		;;USW...
	EndIf
EndFunc


Func _end ()
			
		Exit
			
EndFunc
Meine Fragen jetzt:
Muss ich erst nen screen machen mit allen Gegnertypen machen um die dann iwie in ne art .ini zu machen oder wie kann ich des machen, dass der checkt obs ein 60ger-Rüstunger is.
Oder geht es so, dass ich schauen muss, welcher Gegner welche Pixels hat und dann mit PixelGetColor machen.

DANKE
02/02/2009 18:27 darthwitch#25
Wie kann ich einen pointer machen möchte mir mal ein movetopointer machen brauche dafür ja x und y werte aber wie kann ich machen das mit die werte wo ich grad steh im gui angezeit werden und mit hotkey in einer ini oder txt gespeichert werden wäre echt nett wenn mir jemand kleine denkansätze geben könnte!
02/02/2009 19:26 Azunai#26
das hat doch nix mit pointern zu tun o0
@aufgabe, das ist deine aufgabe, aber ich verrate dir mal, brauchst keine screenshots
02/02/2009 19:33 darthwitch#27
Na toll nu hab ich ne aufgabe am arsch nur weil ich gefragt hab aber okay ich weis schon was ich brauch nur weis nicht wie ich es richtig umsetzen soll... hat jemand ein kleinen tipp
P.s: kenn mich im großen und ganzen mit den befehlen aus auch mit mem's etc nur array kann ich nicht
brauche x und y adresse gui und iniwrite + hotkey sonst nichts oder? was muss ich nun machen mit memoryread und das er mir dann das in eine ini oder txt speichert? und in eine inputbox schreibt...
02/02/2009 19:42 kknb#28
hm ich versteh deine frage nicht ganz. du liest einfach die werte per memread aus, schreibst die per filewrite dann in ne textdatei.
02/02/2009 20:04 darthwitch#29
mkay und wie verbinde ich das memoryread mit filewrite
Quote:
$xwert = _memoryread(xwert,hprocess)
filewrite("test.txt",$xwert)
so oder wie?
02/02/2009 20:10 kknb#30
hab mal nen kleines beispiel für dich gemacht

Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <nomadmemory.au3>

$PID  = WinGetProcess("Guild Wars")
$hprocess  = _MemoryOpen($PID)

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 201, 154, 192, 124)
$Input1 = GUICtrlCreateInput("0xd28c54", 66, 6, 121, 21)
$Input2 = GUICtrlCreateInput("0xd28c58", 66, 34, 121, 21)
$Label1 = GUICtrlCreateLabel("wert x", 8, 8, 32, 17)
$Label2 = GUICtrlCreateLabel("wert y", 8, 38, 32, 17)
$Button1 = GUICtrlCreateButton("read", 4, 72, 75, 25, 0)
$Button2 = GUICtrlCreateButton("save", 110, 72, 75, 25, 0)
$Input3 = GUICtrlCreateInput("", 6, 114, 181, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
dim $xerg, $yerg, $x, $y
HotKeySet("{F1}", "save")

go()

func go()
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		case $Button1
			$x = GUICtrlRead($Input1)
			$y = GUICtrlRead($Input2)
			auslesen()
	EndSwitch
WEnd
EndFunc

func auslesen()
	if not ProcessExists("gw.exe") then 
		MsgBox(1,"achtung!", "erst gw starten dann auf read klicken...")
		go()
	endif		
	while 1
		sleep(100)
		$Xerg1 = _MEMORYREAD($X, $hprocess , "float")
		$Yerg1 = _MEMORYREAD($Y, $hprocess , "float")
		$xerg = Round($Xerg1, 0)
		$yerg = Round($Yerg1, 0)
		guictrlsetdata($Input3, "koordinaten: " & "x= " & $Xerg & " ; " & "y= " & $Yerg)
		$nMsg = GUIGetMsg()
		if $nMsg = $Button2 then save()
		if $nMsg = $GUI_EVENT_CLOSE then exit
	WEnd
EndFunc

func save()
	FileWrite("koords.txt", "koordinaten: " & "x= " & $Xerg & " ; " & "y= " & $Yerg & @crlf)
EndFunc