|
You last visited: Today at 17:24
Advertisement
[My personal Problem Thread xD ]
Discussion on [My personal Problem Thread xD ] within the GW Bots forum part of the Guild Wars category.
11/07/2010, 20:56
|
#1
|
elite*gold: 18
Join Date: Jun 2009
Posts: 1,213
Received Thanks: 56
|
[My personal Problem Thread xD ]
Moin Liebe Community ich brauch mal wieder ein wenig Hilfe da ich wieder aufm Schlauch stehe und da ich net jedesmal mit nem neuen Thread rumspammen will, mach ich jetzt einfach mal nen großen Thread für alle meine Fragen, falls das O.K ist.
So mein Problem ist diesmal das ich einen Nestlinge-Bot schreiben möchte der in Rata Sum anfängt und danach ins Portal läuft. So weit erstmal. Mein Problem ist nun das 1. Der Cha nie 100% genau an der selben Stelle steht ( z.b. beim neubetreten von Rata Sum)
2. Das wenn ich mit Hilfe der x/y +/- abfrage der Interval die er tolerieren soll zu groß ist. Damit meine ich zb. das ich die koords habe wenn ich auf der rechten Seite stehen würde und ich aber auf der Linken Seite stehe. So nun toleriert er zb. diese kp 1200 in dem x-Wert aber läuft jetzt als ob er auf der rechten Seite stehen würde = falsch.
Muss man net unbedingt verstehen xD.
Jetzt hatte ich die Idee das ich es so ca. mache
Das wäre die Berechnung der Toleranz des Checkpoints.
PHP Code:
Const $memx = IniRead("update.ini","SECTION D","-24272","Not found") ; position x Const $memy = IniRead("update.ini","SECTION D","-5717","Not found") ; position y Func CheckArea($xval, $yval) $xval = 14452 $yval = 14949 $ret = False $pX = _memoryread($memx,$hprocess,'float') $pY = _memoryread($memy,$hprocess,'float') if ($pX < $xval + 250) And ($pX > $xval - 250) And ($pY < $yval + 250) And ($pY > $yval - 250) Then $ret = True EndIf Return $ret
Und dann alle 4 Spawnpunkte abfrage:
PHP Code:
Checkarea(14452, 14949) Then Moveto ElseIf Checkarea(16375, 19403) Then Moveto ElseIf Checkarea(17748, 14503) Then Moveto ElseIf Checkarea(16298, 19528) Then Moveto ElseIf Checkarea (14575, 14863) EndIf
Jetzt müsste er ja den 1 Punkt abfragen gucken ob der Bereich innerhalb der Toleranz von +/- 250 liegt und geht dann da und da lang. Falls nicht Prüft er Punkt 2 ab, ob der Cha dort steht berücksichtig dort wieder die 250 geht gegebenfalls diese Strecke lang usw.
Jetzt weiß ich aber nicht genau, wie ich es schreibe das er bei jedem Checkarea diese Toleranz von 250 berücksichtig. Weil bei dem definieren der x/y Werte würde er ja nur 1 Punkt abchecken lassen.
Falls in meiner Theorie etwas falsch ist oder mir sonst irgendwie jemand helfen kann, ich bin für alles offen und hoffe auf Hilfe.
Ich hoffe man hat es so weit verstanden, wenn das nicht der Fall sein sollte einfach schreiben xD.
|
|
|
11/07/2010, 21:10
|
#2
|
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,294
|
entferne die koordinaten aus der checkarea funktion, die haben dort nichts zu suchen. du übergibst die parameter doch mit dem funktionsaufruf. dann funktioniert das auch. btw wird dein letztes elseif so nicht funktionieren. außerdem solltest du noch drüber nachdenken was dein bot machen soll falls keine der koordinaten passen...else...
vielleicht solltest du erstmal mit etwas leichterem anfangen, wenn dass hier schon nichts wird dann aeg ich ehrlich gesagt bei der umfangreichen fight funktion schwarz.
|
|
|
11/07/2010, 21:32
|
#3
|
elite*gold: 0
Join Date: Oct 2009
Posts: 557
Received Thanks: 160
|
Schon mal was von rezonen gehört damit kannste dir den ganzen kram sparen.
Lass den Cahrakter 1mal aus Ratasum aus dem richtigen Portale laufen und lauf wieder rein ... nu musst du nur noch nach jedem run resignen und er steht immer an der gleichen stelle.
|
|
|
11/07/2010, 22:06
|
#4
|
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,294
|
das bringt ihm auch nichts wenn er weiterhin funktionen verstümmelt.
|
|
|
11/08/2010, 17:59
|
#5
|
elite*gold: 18
Join Date: Jun 2009
Posts: 1,213
Received Thanks: 56
|
K Kknb hat wahrscheinlich recht und ich lass es erstmal mit Nestlinge und bastel ein wenig an meinem Tore von Kryta-Bot weiter. Allerdings wollte ich gerne das von Nestlinge noch geklärt haben da ich da einfach net weiter weiß und mich das gerade tierisch wurmt.
PHP Code:
Func Goout () prepmoveto () If Checkarea (14505, 14827) Then ; MoveTo(1, 14757, 15137) MoveTo(1, 15203, 15423) MoveTo(1, 15814, 15813) MoveTo(1, 16370, 15782) MoveTo(1, 17017, 15732) MoveTo(1, 17467, 15802) MoveTo(1, 17753, 16081) MoveTo(1, 17889, 16456) MoveTo(1, 17974, 16826) MoveTo(1, 18310, 16839) MoveTo(1, 18741, 16835) MoveTo(1, 19206, 16832) MoveTo(1, 19692, 16835) ElseIf Checkarea (17881, 14435) Then MoveTo(1, 17958, 14593) MoveTo(1, 18337, 14971) MoveTo(1, 18768, 15314) MoveTo(1, 19095, 15577) MoveTo(1, 19365, 15848) MoveTo(1, 19407, 16251) MoveTo(1, 19400, 16601) MoveTo(1, 19395, 16816) MoveTo(1, 19621, 16849) ElseIf Checkarea (16280, 19519) Then MoveTo(1, 16538, 19416) MoveTo(1, 17037, 19128) MoveTo(1, 17487, 18868) MoveTo(1, 17751, 18499) MoveTo(1, 17831, 18027) MoveTo(1, 17861, 17568) MoveTo(1, 17938, 17108) MoveTo(1, 17994, 16866) MoveTo(1, 18538, 16881) MoveTo(1, 19140, 16869) MoveTo(1, 19574, 16852) ElseIf Checkarea (16375, 19512) Then MoveTo(1, 16538, 19416) MoveTo(1, 17037, 19128) MoveTo(1, 17487, 18868) MoveTo(1, 17751, 18499) MoveTo(1, 17831, 18027) MoveTo(1, 17861, 17568) MoveTo(1, 17938, 17108) MoveTo(1, 17994, 16866) MoveTo(1, 18538, 16881) MoveTo(1, 19140, 16869) MoveTo(1, 19574, 16852) EndIf keepmoveto() loadout() EndFunc
Und ich gerade nicht wirklich weiß warum er mir anzeigt das er bei Func goout anzeigt das der passende EndFunc befehl fehlt. Das mein letztes ElseIf net gehen sollte, da weiß ich auch nicht genau warum. Über eine Erklärung wäre ich sehr dankbar.
Btw. Kknb hast du vllt Ideen wie ich einfacher in Sachen botten in bezug auf Gw anfangen kann =?
|
|
|
11/09/2010, 19:23
|
#6
|
elite*gold: 0
Join Date: Mar 2008
Posts: 820
Received Thanks: 156
|
Einfacher als das wird wohl schwer werden :P
Wenn loadout und keepmoveto auch definiert sind, dann müsste es so gehen. Wenn du den Code in AutoIT offen hast dann drück mal strg + f5...und sag was für ein error angezeigt wird.
Btw als kleiner Tipp: Da die Spawnpoints variieren würde ich bei wayouts nach den verschiedenen Ifs und Elseifs immer ein Else changedis() oder so etwas machen. Also so:
PHP Code:
Func Goout () prepmoveto () If Checkarea (14505, 14827) Then ; MoveTo(... ) ElseIf Checkarea (17881, 14435) Then MoveTo(... ) ElseIf Checkarea (16280, 19519) Then MoveTo(... ) ElseIf Checkarea (16375, 19512) Then MoveTo(... ) Else changedis() EndIf keepmoveto() loadout() EndFunc
Changedis ist dann halt die Func zum Dis wechseln.
|
|
|
11/09/2010, 21:16
|
#7
|
elite*gold: 18
Join Date: Jun 2009
Posts: 1,213
Received Thanks: 56
|
Jup ich schick morgen nach dem ich an dem Script noch ein bissche gebastelt habe es mal hier rein falls es dann immernoch net geht.
Btw. weiß wer warum bei dieser Skillreihenfolge ständig die 8 gedrückt wird ?
PHP Code:
For $i = 1 To 3 Send ("(c)") Send("{space}") Sleep(2000) Send("6") Sleep(1000) Send("1") Sleep(5000) Send ("(2)") Sleep (2000) Send("{space}") Sleep (3000) Send("{space}") sleep (5000) Send ("(6") sleep (1000) Send("{space}") sleep (4000) Next
Ich vermute das es am space liegt aber unter einstellungen und skill 8 ist nur die taste 8 definiert.^^
|
|
|
11/11/2010, 01:00
|
#8
|
elite*gold: 0
Join Date: Apr 2009
Posts: 442
Received Thanks: 189
|
Deswegen: Send("(c)").
So wie du das gerne möchtest müsste es Send("c") heissen.
Tatsächlich geschrieben wird allerdings (c) und da "(" Shift+8 entspricht wird auch Shift+8 gesendet. Wenn du das mal in GW drückst wirst du sehen, dass Skill 8 aktiviert wird.
Der ganze Teil da müsste korrekt so heissen:
PHP Code:
For $i = 1 To 3 Send ("c") Send("{space}") Sleep(2000) Send("6") Sleep(1000) Send("1") Sleep(5000) Send ("2") Sleep (2000) Send("{space}") Sleep (3000) Send("{space}") sleep (5000) Send ("6") sleep (1000) Send("{space}") sleep (4000) Next
Allerdings glaube ich ehrlich gesagt nicht, dass da was Vernünftiges rauskommt, da Send-Bots in der Regel viel zu ungenau sind.
|
|
|
11/11/2010, 22:08
|
#9
|
elite*gold: 18
Join Date: Jun 2009
Posts: 1,213
Received Thanks: 56
|
achso k danke dir vielmals. wie meinste das mit ungenau und welche möglichkeit gebe es dies genauer zu machen ? würde mich dann auch gleich dies bezüglich belesen.
Edit:
hab jetzt das Script so weot fertig das er erstmal ausm Portal laufen müsste aber er motzt ein bisschen bei prepmoveto und bei der keepmoveto weil ich net genau weiß wie ich keepmoveto definieren soll
hier erstmal das script:
PHP Code:
#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <TabConstants.au3> #include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Basti\Eigene Dateien\Downloads\Vaettire bot\GUI Nestlinge.kxf $Form1 = GUICreate("GW Nestlinge Bot", 633, 447, 192, 124) $Tab1 = GUICtrlCreateTab(64, 48, 465, 305) GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) GUICtrlCreateTabItem("") $Button1 = GUICtrlCreateButton("Start", 80, 304, 81, 41, $WS_GROUP) $Button2 = GUICtrlCreateButton("Pause", 424, 304, 97, 41, $WS_GROUP) $Input_Place = GUICtrlCreateInput("", 104, 40, 33, 21) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ###
WinWaitActive ("Guild Wars")
Hotkeyset("{F2}","End")
Func End() Exit EndFunc
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 sleep (2000) GoOut() loadout () EndSwitch WEnd
Func GoOut() prepmoveto() Const $memx = IniRead("update.ini","SECTION D","POSX","Not found") ; position x Const $memy = IniRead("update.ini","SECTION D","POSY","Not found") ; position y
Func CheckArea($xval, $yval) $ret = False $pX = _memoryread($memx,$hprocess,'float') $pY = _memoryread($memy,$hprocess,'float')
if ($pX < $xval + 250) And ($pX > $xval - 250) And ($pY < $yval + 250) And ($pY > $yval - 250) Then $ret = True EndIf Return $ret If Checkarea (14505, 14827) Then ; MoveTo(1, 14757, 15137) MoveTo(1, 15203, 15423) MoveTo(1, 15814, 15813) MoveTo(1, 16370, 15782) MoveTo(1, 17017, 15732) MoveTo(1, 17467, 15802) MoveTo(1, 17753, 16081) MoveTo(1, 17889, 16456) MoveTo(1, 17974, 16826) MoveTo(1, 18310, 16839) MoveTo(1, 18741, 16835) MoveTo(1, 19206, 16832) MoveTo(1, 19692, 16835)
ElseIf Checkarea (17881, 14435) Then MoveTo(1, 17958, 14593) MoveTo(1, 18337, 14971) MoveTo(1, 18768, 15314) MoveTo(1, 19095, 15577) MoveTo(1, 19365, 15848) MoveTo(1, 19407, 16251) MoveTo(1, 19400, 16601) MoveTo(1, 19395, 16816) MoveTo(1, 19621, 16849)
ElseIf Checkarea (16280, 19519) Then MoveTo(1, 16538, 19416) MoveTo(1, 17037, 19128) MoveTo(1, 17487, 18868) MoveTo(1, 17751, 18499) MoveTo(1, 17831, 18027) MoveTo(1, 17861, 17568) MoveTo(1, 17938, 17108) MoveTo(1, 17994, 16866) MoveTo(1, 18538, 16881) MoveTo(1, 19140, 16869) MoveTo(1, 19574, 16852)
ElseIf Checkarea (16375, 19512) Then MoveTo(1, 16538, 19416) MoveTo(1, 17037, 19128) MoveTo(1, 17487, 18868) MoveTo(1, 17751, 18499) MoveTo(1, 17831, 18027) MoveTo(1, 17861, 17568) MoveTo(1, 17938, 17108) MoveTo(1, 17994, 16866) MoveTo(1, 18538, 16881) MoveTo(1, 19140, 16869) MoveTo(1, 19574, 16852) EndIf keepmoveto() loadout() EndFunc Func loadout() While _memoryread($memmap, $hprocess) <> 1 Sleep(500) WEnd EndFunc
Ach er meckert einfach überall -.-
Hier mal der Fehlerlog
PHP Code:
>C:\Programme\AutoIt3\SciTE\..\au3check.exe "C:\Dokumente und Einstellungen\Basti\Eigene Dateien\Downloads\Vaettire bot\Nestlinge Farmbot.au3" AutoIt3 Syntax Checker v1.54.8 Copyright (c) Tylo 2007
bot\Nestlinge Farmbot.au3(51,1) : ERROR: syntax error Func ^ bot\Nestlinge Farmbot.au3(35,12) : ERROR: loadout(): undefined function. loadout () ~~~~~~~~~~^ C:\Dokumente und Einstellungen 2 error(s), 0 warning(s) >Exit code: 2 Time: 0.311
|
|
|
11/13/2010, 15:35
|
#10
|
elite*gold: 0
Join Date: Apr 2009
Posts: 442
Received Thanks: 189
|
1. Deine Funktion GoOut() hat kein EndFunc
2. Du rufst die Funktion loadout() auf, die allerdings nicht vorhanden ist.
|
|
|
All times are GMT +2. The time now is 17:24.
|
|