Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2
You last visited: Today at 07:09

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[AutoIt] Frage/Antworte Thread

Discussion on [AutoIt] Frage/Antworte Thread within the Metin2 forum part of the Popular Games category.

Reply
 
Old 04/26/2008, 23:26   #76
 
Quade's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 496
Received Thanks: 171
Ich melde mich auch ma zu Wort.

Ich scripte ja noch nich lange... trotzdem PickUpBot ohne Hilfe selbst gescriptet...

Nunja... Zum Problem: Ich hab ja nun mein GUI erschaffen.

Nun will ich das bei Click auch einen Button oder beim anhaken eines Tree's oder Radio's halt das ausführt... somit is mir nich ganz kla wie ich mein GUI mit einer Function verbinde...:


GUICtrlCreateButton("1", 20, 80, 30, 20) ; Auf diesem Button soll also die Funktion: HotKeySet("{F9}", "Start")
HotKeySet("{F10}", "Ende")

while(1)
sleep(1000)
WEnd


func Start ()
While(1)
Send("y")
sleep(100)
WEnd
EndFunc

Func Ende ()
Exit
EndFunc

liegen,


Ich will ja nich jedes Script einzeln ausführen müssen sondern mit ner einfachen oberfläche wie z.B. beim HackSelctor ganz einfach einen Button pushen

Schonma Danke
Quade is offline  
Old 04/27/2008, 09:33   #77
 
marcopolo1990's Avatar
 
elite*gold: 20
Join Date: Jan 2008
Posts: 2,632
Received Thanks: 8,492
Quote:
Originally Posted by Nightmaster560 View Post
genau
hast du nen Lösungsansatz?
man könnte es mit ner date funktion machen, ist aber sehr umständlich
ich würde vorschlagen, eine variable als counter zu benutzen
man setzt die variable in die while funktion und gibt ihr ein +=
dadurch vermehrt sie sich und kann ab einen bestimmten punkt gestoppt werden

Code:
While (1)
Global $Counter = 0

While (1)

$Pixel = Pixelsearch ( x1, y1, x2, y2, farbe in hex, range, step )

if not @error then
;code
endif

Sleep (100)

$Counter += 1

If $Counter = 100 then
msgbox (0, "Counter", "Die Zeit wurde überschritten" )
$Counter = 0
exitloop
endif

wend

Quote:
Originally Posted by Quade View Post
Ich melde mich auch ma zu Wort.

Ich scripte ja noch nich lange... trotzdem PickUpBot ohne Hilfe selbst gescriptet...

Nunja... Zum Problem: Ich hab ja nun mein GUI erschaffen.

Nun will ich das bei Click auch einen Button oder beim anhaken eines Tree's oder Radio's halt das ausführt... somit is mir nich ganz kla wie ich mein GUI mit einer Function verbinde...:


GUICtrlCreateButton("1", 20, 80, 30, 20) ; Auf diesem Button soll also die Funktion: HotKeySet("{F9}", "Start")
HotKeySet("{F10}", "Ende")

while(1)
sleep(1000)
WEnd


func Start ()
While(1)
Send("y")
sleep(100)
WEnd
EndFunc

Func Ende ()
Exit
EndFunc

liegen,


Ich will ja nich jedes Script einzeln ausführen müssen sondern mit ner einfachen oberfläche wie z.B. beim HackSelctor ganz einfach einen Button pushen

Schonma Danke
eigentlich soll ja hier nicht über GUI's gesprochen werden, dennoch versuche ich dir mal zu helfen

erstell dir zuerstmal ein komplettes GUI

Code:
#include <GUIConstants.au3>

$Form1 = GUICreate("Form1", 200, 200, 300, 300)
$Button1 = GUICtrlCreateButton("1", 20, 80, 30, 20)
GUISetState(@SW_SHOW)
dann verbinde dein Gui und den Button mit einer Switch case endswitch schleife

Code:
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
                Case $Button1
                        ;Code
	EndSwitch
WEnd
die Case die benutzt werden, können für andere variablen auch stehen

ok ich nehm dir mal die arbeit ab
hier der komplette code :

Code:
#include <GUIConstants.au3>

HotKeySet("{F9}", "Start")
HotKeySet("{F10}", "Ende")

$Form1 = GUICreate("Form1", 200, 200, 300, 300)
$Button1 = GUICtrlCreateButton("1", 20, 80, 30, 20)
GUISetState(@SW_SHOW)

Func Start ()
While(1)
		Send("y")
		sleep(100)
	WEnd
Endfunc

Func Ende ()
Exit
Endfunc

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
                Case $Button1
Sleep (5000) ;warte 5 sekunden, bis der script losgeht
                       While(1)
		Send("y")
		sleep(100)
	WEnd
	EndSwitch
WEnd
hoffe habe mal beiden geholfen (und vielleicht den anderen auch xD)
marcopolo1990 is offline  
Thanks
1 User
Old 04/27/2008, 11:32   #78
 
elite*gold: 0
Join Date: Dec 2007
Posts: 12
Received Thanks: 14
Das is ein Ansatz....aber das Problem an der Sache ist jetzt wieder, dass der Script erst weiter läuft, wenn

$Pixel = Pixelsearch ( x1, y1, x2, y2, farbe in hex, range, step )

erfüllt ist.

Daraufhin wird $counter um 1 erhöht.

Das heißt jetzt auf ein konkretes Besipiel bezogen....er Angelt (If $Counter = 100 then) 100 mal und zeigt dann Box an (msgbox (0, "Counter", "Die Zeit wurde überschritten" ).

d.h. ich kann mit dieser Funktion bestimmen wieoft die Angel ausgeworfen wird.

Das ließe sich ganz einfach beheben indem man 2 Schlaufen parallel laufen lässt....eine Schlaufe setzt $counter +=1
und die zweite Schlaufe läuft gleichzeitig nebenbei mit....das hab ich aber noch nicht rausgefunden.

Ein Ansatz wäre

While 2
$counter +=1
WEnd

While 1
$counter =0
If $counter >=20 Then

Jetzt is aber das Problem dass der aus der While 2 Loop nich raus geht sondern die ganze Zeit $counter += 1 setzt...Also ne Endlosschleife.
Nightmaster560 is offline  
Old 04/27/2008, 11:47   #79
 
marcopolo1990's Avatar
 
elite*gold: 20
Join Date: Jan 2008
Posts: 2,632
Received Thanks: 8,492
hmm du kannst nicht 2 endlosschleifen einfach nebeneinander laufen lassen

außderm versteh ich nicht, was an diesem beispiel falsch sein sollte
wenn du mal erklären würdest was du genau vorhast, kann man es besser daran anpassen
marcopolo1990 is offline  
Old 04/27/2008, 12:26   #80

 
°Remus°'s Avatar
 
elite*gold: 2
Join Date: Mar 2008
Posts: 8,541
Received Thanks: 4,539
weis nich aber so dürfte es doch am besten gehen:

While 1
Pixelsearch(...)
If not @error Then
Send("{Space}")
$Counter = 0
Else
$Counter +=1
EndIf
If $Counter = 500 Then
Send("{Space}"
$Counter = 0
EndIf
WEnd
°Remus° is offline  
Thanks
1 User
Old 04/27/2008, 13:02   #81
 
marcopolo1990's Avatar
 
elite*gold: 20
Join Date: Jan 2008
Posts: 2,632
Received Thanks: 8,492
da würde aber dann der sleep fehlen xD naja aber so würde es auch gehen
marcopolo1990 is offline  
Old 04/27/2008, 13:05   #82

 
°Remus°'s Avatar
 
elite*gold: 2
Join Date: Mar 2008
Posts: 8,541
Received Thanks: 4,539
der sleep is ja egal dann wartet man einfach bis $Counter = 5000 einziges problem is das die zählgeschwindigkeit vom rechner abhängt^^
°Remus° is offline  
Old 04/27/2008, 13:10   #83
 
marcopolo1990's Avatar
 
elite*gold: 20
Join Date: Jan 2008
Posts: 2,632
Received Thanks: 8,492
deswegen ja der sleep, der regelt den counter egal wie schnell der pc ist
zb conter soll jede sekunde 2 mal scannen
wurde einen sleep von (500) entsprechen
oder 3 mal (333) oder 4 mal (250) etc
dann muss man nurnoch rechnen
jede sek 2 mal counter
daher 60 sec 120 mal counter
also if $Counter = 120 Then ...
marcopolo1990 is offline  
Old 04/27/2008, 13:17   #84

 
°Remus°'s Avatar
 
elite*gold: 2
Join Date: Mar 2008
Posts: 8,541
Received Thanks: 4,539
die zeit die nen rechner bei pixelsearch brauch belibt trotzdem unterschiedlich un selbst bei so kleinen sleeps erhöht das die wahrscheinlichkeit das die fischblase verpasst wird
°Remus° is offline  
Old 04/27/2008, 14:09   #85
 
elite*gold: 0
Join Date: Dec 2007
Posts: 12
Received Thanks: 14
Ok ich hole mal ein stückchen weiter aus.....

Ich habe mir einen Angelbot gescriptet. Dieser ist wie folgt aufgebaut:

-Er macht Köder dran und wirft aus.
-Er geht in eine Endlosschleife.
-Angelblase suchen. Der Script wird erst "fortgesetzt" wenn eine Angelblase gefunden wurde
-rausziehen, suche nach kleinem Fisch, wieder auswerfen.

Das ist mein Angelbot...nix besonderes.

So jetzt zu euren Lösungen. Ich bezihe sie gleich direkt auf meinen Angelbot.

-wirft aus
-Schleife beginnt
-Zählvariable $v wird auf 0 gesetzt
-Angelblase suchen, wenn gefunden
-raus ziehen
-$v + 1
-rausziehen, suche nach kleinem Fisch, wieder auswerfen.
-$v prüfen, wenn bst. Wert überschritten....macht er irgendwas, wenn nich passiert nix
-Angelblase suchen , wenn gefunden
-raus ziehen
-$v + 1
-rausziehen, suche nach kleinem Fisch, wieder auswerfen.
-$v prüfen, wenn bst. Wert überschritten....macht er irgendwas, wenn nich passiert nix
-Angelblase suchen
.
.
.

Das war der Lödungsansatz von MarcoPolo..... das Problem daran ist jetzt, dass wie man sieht egal wo man das $v+1 in der Schleife platziert, es wird immer jeweils nach gefundener Angelblase erhöht. Ich will aber dass wenn nach längerer Zeit keine Angelblase gefunden wird erneut ausgeworfen wird. Um das zu beheben könnte folgende Funktion benutzen:

While 1
Pixelsearch(...)
If not @error Then
Send("{Space}")
$Counter = 0
Else
$Counter +=1
EndIf
If $Counter = 500 Then
Send("{Space}"
$Counter = 0
EndIf
WEnd

Das war der Lösungsansatz von Remus.

Ich beschreibe ihn nochmals eindeutig im Wortlaut und beziehe ihn gleichzeitig wieder speziell auf meinen Bot.

.
.
.
-Angelblase suchen, wenn gefunden
-rausziehen, kleinen Fisch suchen auswerfen
wenn nicht gefunden
-$v+1, (kleinen Fisch suchen auswerfen)

;##An dieser Stelle könnte man nachdem $v+1 ausgeführt wurde die Schleife von vorne beginnen lassen, dann wäre mein Problem gelöst.##

-Angelblase suchen, wenn gefunden
-rausziehen, kleinen Fisch suchen auswerfen
wenn nicht gefunden
-$v+1, (kleinen Fisch suchen auswerfen)
.
.
.

So, und das Hauptproblem an der Sache ist, dass der Script erst weitergeführt wird wenn eine Angelblase gefunden wurde. Das kann ich nicht ändern, weil ich sonst die kleinen Fische nicht mit verwenden kann. (If kleiner Fisch gefunden, dann dran machen, else normalen Köder nehmen).

so ich denke bis hier hin ist alles klar.

Und jetzt suche ich eine Lösung für folgendes Problem:

Es wird keine Angelblase gefunden aufgrund eines Fehlers im Spiel (lagg, Bug, was auch immer). Jetzt will ich dass mein Bot diese Fehler umgeht, indem er die Angel erneut auswirft wenn nach einer gewissen Zeit nichts passiert ist. (Die Zeit kann auch in Form einer Zählvariable eingebaut werden)

Ein Algorithmus im Wortlaut wäre wie folgt:

.
.
.
-$v auf 0 setzten
-mit jedem error welche der pixelsearch vom Suchen der Angelblase zurückgibt wird $v um eins erhöht, und derselbe pixelsearch wird erneut ausgeführt.
-Angelblase suchen, wenn gefunden...sihe oben ...
.
.
.

Oh mein Gott....jetzt bin ich auch noch seklber drauf gekommen ich depp

While 1
While 1
$coord = PixelSearch( x1, y1, x2, y2, Farbhex ) ;Angelblase
If @error Then
$counter += 1
Sleep(100)
If $counter = 25 then
Sleep(100)
Send("{F4 down}")
Sleep("100")
Send("{F4 up}")
Sleep(100)
$counter = 0
Else
EndIf
ExitLoop


Eieieiei....aber danke dass ihr mich zum Ergebnis geführt habt....falls ihr sowas nochmal gebrauchen könnt^^ da steht ne Lösung is sicherlich ganz hilfreich
Nightmaster560 is offline  
Old 04/27/2008, 14:34   #86
 
marcopolo1990's Avatar
 
elite*gold: 20
Join Date: Jan 2008
Posts: 2,632
Received Thanks: 8,492
hast dir den pixelsearch auch falsch gesetzt xD

sollte eigentlich eher so ein format haben
Code:
[COLOR="Red"]While (1)[/COLOR]
Sleep (5000)
[COLOR="Lime"]$Rollback = 0[/COLOR]
Send ( "{F3 down}" , 0 )
Sleep (500)
Send ( "{F3 up}" , 0 )
Sleep (5000)
Send ( "{F4 down}" , 0 )
Sleep (500)
Send ( "{F4 up}" , 0 )
Sleep (300)
[COLOR="Red"]While (1)[/COLOR]
Sleep (100)
$Pixelfisch = Pixelsearch ( x1, x2, y1, y2, fabre, range , step )
If not @error  Then
Sleep ( 2650 )
Send("{F4 down}")
Sleep(500)
Send("{F4 up}")
ExitLoop
Endif
$Rollback += 1
If $Rollback = 2000 Then
[COLOR="Lime"]$Rollback = 0[/COLOR]
ExitLoop
Endif
[COLOR="Red"]Wend[/COLOR]
[COLOR="Red"]Wend[/COLOR]
daher wenn er der counter ausschlägt, kehrt er in die vorige while schlife zurück und nicht ganz raus
taadaa er fängt von vorne an
(was dein kleiner fisch search angeht soll hier bitte nicht beredet werden! einziger tipp den ich geben kann wäre, es per 2ten bot suchen lassen durch hotkeys die sich dann zwischeneinander austauschen)
marcopolo1990 is offline  
Old 04/27/2008, 14:38   #87
 
Moviestar's Avatar
 
elite*gold: 0
Join Date: Oct 2007
Posts: 511
Received Thanks: 543
Könnte man vll. ein Handelbug Bot scripten ?
Oder so änlich ^^
Moviestar is offline  
Old 04/27/2008, 14:40   #88
 
marcopolo1990's Avatar
 
elite*gold: 20
Join Date: Jan 2008
Posts: 2,632
Received Thanks: 8,492
könnte man, ich bin aber immoment zu faul dazu xD
mein script pc wird immer langsamer xD wenn metin2 ruckelt krieg ich das kotz##
marcopolo1990 is offline  
Old 04/30/2008, 14:40   #89
 
elite*gold: 0
Join Date: Jan 2008
Posts: 17
Received Thanks: 35
Ich ahbe eine Frage.ICha heb einen Fishing Bot gescriptet und jetzt frag ich mich wie kann ich das machen das ich die Zeit einstellen kann in einem Kästchen(will net immer den code verändern) so wie bei einem fish bot von marcpolo.(da konnte man die zeit eingeben 1000=1 sec.)Wie geht das? danke für die antworten.
Lord123123 is offline  
Old 04/30/2008, 14:54   #90
 
marcopolo1990's Avatar
 
elite*gold: 20
Join Date: Jan 2008
Posts: 2,632
Received Thanks: 8,492
erklär ich dir nachher, wenn ich zuhause bin xD also ca heut abend
marcopolo1990 is offline  
Reply




All times are GMT +1. The time now is 07:10.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.