Hilfe bei Bot

08/24/2010 16:10 Tomok244#1
Hallo Liebe Community!

Ich habe mich mal daran gesetzt, einen Levelbot für Metin2 zu programmieren.
Das ganze soll mit Tapferkeitsumhängen funktionieren. Hier mal mein bisheriges Skript:

Code:
HotkeySet ("{F5}", "Bot")
HotKeySet ("{ESC}", "Ende")
HotkeySet ("{F6}", "Pause")

Func Ende ()
	Exit
EndFunc

Func Pause ()
	send ("1")
EndFunc


Func Bot ()
While 1
$timer = TimerInit ()
While 1
If TimerDiff ($timer) > 15000 Then
Send ("{2}")
EndIf
Send ("{^}{SPACE}{1}")
WEnd
WEnd

EndFunc

While 1
	sleep (10)
WEnd
Ich habe es jetzt soweit geschafft, das er die ganze Zeit die Angriffs, Trank und Aufhebe Taste drückt. Nach 15 Sekunden drückt er dann die Taste für die Tapferkeitsumhänge (locken Monster an), aber drückt sie dann ununterborchen.

Mein Ziel ist es aber, die Ganze Zeit Angriffs, Trank und Aufhebe Taste drücken zu lassen, und alle 15 Sekunden einen einzigen Tapferkeitsumhang zu benutzen. Möchte das ganze dann hinterher auch verstehen und anwenden können.

Vielen Dank!!!
08/24/2010 16:22 omer36#2
ich glaube müsste so gehen... (mit timerinit ect habe ich mich noch nicht so beschäftigt.)

PHP Code:
HotkeySet ("{F5}""Bot")
HotKeySet ("{ESC}""Ende")
HotkeySet ("{F6}""Pause")

Func Ende ()
    Exit
EndFunc

Func Pause 
()
    
send ("1")
EndFunc

Func Bot 
()
    
$timer TimerInit()
While 
1
If TimerDiff($timer) >= 15000 Then
Send 
("{2}")
$timer TimerInit()
EndIf
Send ("{^}{SPACE}{1}")
WEnd
EndFunc


While 1
    sleep 
(10)
WEnd 
08/24/2010 16:28 Tomok244#3
Sieht auf jedenfall schonmal gut aus! Kann es grad nur nicht testen, weil die Channel vom Server voll sind xD
08/24/2010 16:30 omer36#4
xD

habs mal im txt editor getestet... alle 3sec ENTER.
und sieht gut aus... ^^

also müsste es klappen..
08/24/2010 16:36 Tomok244#5
Naja, ich habs grad auch mit dem Editor getestet, hab aber kein Leertaste fürs Angreifen gesehen. Ich lass das ganze mal etwas länger laufen.
08/24/2010 16:37 Jeoni#6
Du möchtest, dass er die Taste für die Umhänge nicht ununterbrochen drückt, sondern nur einmal? Zudem besteht im Script allgemein verbesserungsbedarf. Was soll die Pause-Taste bewirken? Ich würde das so machen:
PHP Code:
HotkeySet ("{F5}""Bot_an_aus")
HotKeySet ("{ESC}""Ende")
HotkeySet ("{F6}""Pause")

$started 0
$once_started 
0

Func Ende 
()
    Exit
EndFunc

Func Pause 
()
    
send ("1")
EndFunc


Func Bot_an_aus 
()
    If 
$started 0 Then
        $started 
1
        $once_started 
0
    
Else
        
$started 0
    
EndIf
WEnd

EndFunc

While 1
    
If $started 1 Then
        
If $once_started 0 Then
            $timer 
TimerInit ()
            
$once_started 1
        
EndIf
        If 
TimerDiff ($timer) > 15000 Then
            Send 
("{2}")
            
$timer TimerInit ()
        EndIf
        
Send ("{^}{SPACE}{1}")
    EndIf
WEnd 
Mit der Taste F5 kannst du den Bot stoppen und starten, ohne ihn vollständig zu beenden.
08/24/2010 16:45 Tomok244#7
So gut kenne ich mich noch nicht aus ^^. Nebenbei will ich auch verstehen, was der Bot da macht, und nicht nur einfach kopieren und benutzen.


Edit: Habs grad mal probiert, der zeigt mir in Zeile 24 Error an, weil da ein Wend ohne eine While schleife ist. Kann ich das einfach rausnehmen?

Quote:
Du möchtest, dass er die Taste für die Umhänge nicht ununterbrochen drückt, sondern nur einmal? Zudem besteht im Script allgemein verbesserungsbedarf. Was soll die Pause-Taste bewirken? Ich würde das so machen:
Einmal alle 15/30 was weiß ihc Sekunden einmal die Taste für Umhang benutzen. Wäre zudem sehr nett wenn du das überflüssige abspecken könntest, damit ich das ganze besser verstehe.
08/25/2010 03:43 Psycho_Ente#8
Omer hats erklärt.
Tomok will glaub ich nicht. dass es nur einmal geschiet, sondern nach einer bestimmten zeit immer wieder. Er meint nähmlich,dass sobald die timer Zeit um ist , es ununterbrochen ausgeführt.Damit dies nicht geschieht. Hat Omer Den Timer einfach danach reseten lassen Ich Zeige euch einmal den Ausschnitt:
PHP Code:
If TimerDiff($timer) >= 15000 Then
Send 
("{2}")
$timer TimerInit()
EndIf 
Im Vergleich zu deinem:

PHP Code:
If TimerDiff ($timer) > 15000 Then
Send 
("{2}")
EndIf 
Er hat einfach den Befehl TimerInit() Benutzt.
Welcher wie schon gesagt hat, den timer "neu starten" lässt.
Es ist nur ein Befehl, welcher sehr viel bewirken kann ...
08/28/2010 13:16 93hacker#9
PHP Code:
HotkeySet ("{F5}""Bot")
HotKeySet ("{ESC}""Ende")
HotkeySet ("{F6}""Pause")

While 
1
    sleep 
(10)
WEnd

Func Ende 
()
    Exit
EndFunc

Func Pause 
()
    
send ("1")
EndFunc


Func Bot 
()
while 
1
$i 
0
Do
$i += 1
sleep 
(250)
Send ("{^}{SPACE}{1}")
sleep (250)
Send ("{^}{SPACE}{1}")
sleep (250)
Send ("{^}{SPACE}{1}")
sleep (250)
Send ("{^}{SPACE}{1}")
Until $i 15
Send 
("{2}")
WEnd
EndFunc 
So hab ich immer meine sd2 bots gemacht
08/28/2010 15:32 bladerofdarknes#10
das ganze geht auch hidden mit postmessage und außerdem (da deins ja eh im vordergrund ist) kannst du noch einen autopotter einbauen, das kostet ja keine zeit ;)