Ich versuche schon seid einiger zeit einen lvlbot für nostale zu basteln.
Nur wenn man in einer Input box einträgt wielange und ab wann man schlafen möchte, funktioniert das nicht.Lass ich die werte so wie ich sie eingetragen habe beim Skripten, funktioniert alles, nur wenn ich dort die werte ändere setzt er sich sovort steht wieder auf und das immerwieder.
Denn hier mal das was ich für wichtig halte^^
Hoffe das es so übersichtlicher ist, sonst kopiere den Code von oben mal in Scite rein, vllt ist es so übersichtlicher.
...kopiere den Code von oben mal in Scite rein, vllt ist es so übersichtlicher.
auch wieder wahr ^^
tauchen fehler meldungen auf ?
wenn ja in welcher Linie ?
ich nehme mal an das da absichtlich bei der Func Angriff was fehlt oder ? ^^
übrigens
While 1 nicht While 2 , weil es die erste schleife ist , ist logischer obs direkten einfluss hat weiß ich nicht habs nie probiert, wozu auch ? ^^
hab einen fehler entdeckt...
ich nehme mal an das er keine befehle an den clienten sendet...
der grund ist
ControlSend($windowname, '', '', "c")
da darf kein $(i-was) sein sonst geht es nicht
hab das auch schon versucht, als ich dann einfach den fensternamen direkt reingeschrieben habe ging es ^^
Hmm normalerweise geht das mit der $windowname, hat netmax tut mir beigebracht...
Und mit der while weiß ich auch ned, ich stell es gleich ma um.
Und xD
Nein, es kommen keine fehler, sonst hätt ich ihn wohl gefunden.^^
Er lvlt einfach nicht wenn man die schlafzeit ändert.
EDIT: Habe alles so geändert wie du es geschrieben hast, hat mir nix gebracht, dafür dachte ich,
vllt macht das Sleep($WielangeSitzen) das das programm steht und somit nicht angreift.Daraufhin habe ich einen Timer eingebaut aber trotzdem funktioniert nix.
Hier mal das skript wo ich was geändert habe, es sind nur brauchstücke^^
Code:
$zeit4 = TimerInit() ;---------WielangeSitzen
;Hier wäre iwo die Gui^^
Case $Start
$DL = 0 ;durchlauf
While 1
If(ZeitZumSitzen()) Then
Sitzen()
EndIf
If(ZeitZumSammeln()) Then
Sammeln()
EndIf
If(Angriff()) Then
Angreifen()
EndIf
$DL = $DL + 1
WEnd
Func ZeitZumSitzen()
If TimerDiff($zeit1 >= GUICtrlRead($AbWannSitzen)) Then
return True
Else
return False
EndIf
EndFunc
Func Sitzen()
ControlSend($windowname, '', '', "c")
$zeit1 = TimerInit()
If TimerDiff($zeit4 = GUICtrlRead($WielangeSitzen)) Then ;Das ist der Timer statt das sleep.Muss ich Guictrlread benutzen oder reicht die variable alleine?
ControlSend($windowname, '', '', "c")
$zeit4 = TimerInit()
EndIf
EndFunc
;ab hier wird wohl unwichtig, aber habs trotzdem hier reingeschrieben falls dort fehler sind.
;--------Sammeln:
Func ZeitZumSammeln()
If TimerDiff($zeit2 >= GUICtrlRead($WannSammeln)) Then
return True
Else
return False
EndIf
EndFunc
Func Sammeln()
ControlSend($windowname, '', '', GUICtrlRead($AufsammelTaste))
$zeit2 = TimerInit()
EndFunc
;--------Angriff:
Func Angriff()
If TimerDiff($zeit3 <= GUICtrlRead($AbWannSitzen)) Then
return True
Else
return False
EndIf
EndFunc
Func Angreifen()
ControlSend($windowname, '', '', "{SPACE}")
Sleep(100)
$zeit3 = TimerInit()
EndFunc
Hoffe ich darf das Pushen da ich echt nicht weiter komme )=
Sonst kann mir pls wer per PN helfen?
Ich hänge schon eine ewigkeit an diesem doofen fehler, habe 1 Woche lang versucht den fehler selber zu finden was aber leider nicht funktioniert hat-.-
Hoffe ich darf das Pushen da ich echt nicht weiter komme )=
Sonst kann mir pls wer per PN helfen?
Ich hänge schon eine ewigkeit an diesem doofen fehler, habe 1 Woche lang versucht den fehler selber zu finden was aber leider nicht funktioniert hat-.-
Pls helft mir doch *-*
What the hell are you doing?
PHP Code:
If TimerDiff($zeit4 = GUICtrlRead($WielangeSitzen)) Then
Diesen Skript-Teil könntest du auch so schreiben:
PHP Code:
$variable=($zeit4 = GUICtrlRead($WielangeSitzen))
If TimerDiff($variable) Then
Zuerst sagst du AutoIt: "Überprüfe mir mal ob $zeit4 und GUICtrlRead($WielangeSitzen) gleich groß sind".
Wenn die beiden Werte gleich groß sind, liefert AutoIt eine 1 zurück, ansonsten eine 0. Als nächstes sagst du: "Schau mal ob die Differenz von der jetzigen Zeit und der variable [also entweder 1 oder 0] gleich 1 ist".
Und dann wunderst du dich, dass es nicht geht?
So sollte es gehen:
PHP Code:
If TimerDiff($zeit4)>=GUICtrlRead($WielangeSitzen) Then
Musst halt nur noch überall ausbessern, danach sollte er laufen.
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $BtnSchlafen
GUISetState(@SW_SHOW, $Hinsetzenfenster)
Case $ChkSchlafen
Case $ChkSammeln
Case $ChkSkills
Case $Schliessen3
GUISetState(@SW_HIDE, $Hinsetzenfenster)
Case $BtnSammeln
GUISetState(@SW_SHOW, $Aufsammelfenster)
Case $Schliessen2
GUISetState(@SW_HIDE, $Aufsammelfenster)
Case $BtnSkills
GUISetState(@SW_SHOW, $Skillfenster)
Case $Schliessen1
GUISetState(@SW_HIDE, $Skillfenster)
Case $Start
$DL = 0 ;durchlauf
$zeit1 = TimerInit() ;---------Sitzen
$zeit2 = TimerInit() ;--------Sammeln
$zeit3 = TimerInit() ;--------Angriff
$zeit4 = TimerInit()
While 1
If (ZeitZumSitzen()) Then
Sitzen()
$zeit1 = TimerInit()
EndIf
If (ZeitZumSammeln()) Then
Sammeln()
$zeit2 = TimerInit()
EndIf
If (Angriff()) Then
Angreifen()
$zeit3 = TimerInit()
EndIf
$DL = $DL + 1
WEnd
;Hauptskript ENDE
EndSwitch
WEnd
;---------Sitzen:
Func ZeitZumSitzen()
If TimerDiff($zeit1) >= GUICtrlRead($AbWannSitzen) Then
Return True
Else
Return False
EndIf
EndFunc ;==>ZeitZumSitzen
ich mach das zwar auch immer so an den rand mit den guis, aber weil da viele oberflächen verwendet werden und diese alle bündig am rand sind sieht es verwirrend aus mach doch als mal eine durchgehende ;------------------------------------ rein
außerdem brauchste nur das include: #include <GUIConstantsEx.au3>
wieso du #require-admin drinn hast weiß ich auch nicht, du suchst ja nur pixels etc.
Nö^^
Muss nur die Tastendrücke simmulieren per controlsend ;D
@Shadow992
Er funktionert jetzt, ich musste wegen dem angreifen das > zu < ändern und wegen dem setzen,sag ich nur LOL.
Der timer(zeit4) zählt ja von anfang an und da er dann schon höher als $WielangeSitzen ist, ist er auch sovort aufgestanden hier die lösung xD:
Code:
Func Sitzen()
ControlSend($windowname, '', '', "c")
$zeit4 = TimerInit() ;Das war der fehlende baustein o.O
If TimerDiff($zeit4) > GUICtrlRead($WielangeSitzen) Then ;;;;;;;;;;
ControlSend($windowname, '', '', "c")
$zeit4 = TimerInit()
EndIf
EndFunc ;==>Sitzen
Ich möchte meinem Bot einbauen das er die HP erkennt, aber wie mache ich das?
Ich verstehe es weder Von Netmax Tutorial,Wiki oder anderem.
Welche Adressen muss der Spieler eingeben?
Die adresse ist klar,dann noch bei wieviel Hp er sich setzen soll und austehen soll.Brauche ich noch irgendwelche daten?
Also kann ich mal fragen wozu er die Hp erkennen soll?
Ich zock das Game auch und hab da gestern nen Steinbruch Bot erstellt der mit Pixelsearch arbeitet...
Naja was ich sagen will nach ca. 4 Std. intensiver Arbeit mit Pixelsearch würd ich einfach die Hp über den Befehl PixelGetColor erkennen lassen.
->
Code:
While 1
If PixelGetColor(x,y) = 0xff0000 then
Send("{Pott-taste}")
EndIf
WEnd
Wenn du diesen Code verwendest musst du natürlich die x und y Pixeladdresse austauschen und die Farbe. Bei diesem Code würde ich empfehlen den Pixel anzusetzten wenn die Hp gerade rot wird.