elitepvpers

elitepvpers (https://www.elitepvpers.com/forum/)
-   AutoIt (https://www.elitepvpers.com/forum/autoit/)
-   -   AutoIT Bot Gedankengang richtig ? (https://www.elitepvpers.com/forum/autoit/931059-autoit-bot-gedankengang-richtig.html)

TurboGolom 01/04/2011 19:51

AutoIT Bot Gedankengang richtig ?
 
Hi leuts 1 mal Sry für den wahrscheinlich unnötigen Post aber das muss für mich jetzt persönlich geklärt werden xD.
Also ich will/bin dabei nen Bot für ein Spiel zu schreiben und wollte jetzt den teil im Bot coden der sich mit dem Kampf beschäftigt. Jetzt hab ich die Hp-Leiste des Monsters und hab mir so ungefähr gedacht, dass ich ganz am anfang des Balkens einen PixelPointer reinbastel ( Farbe des Balkens ist rot) der die Farbe rot ausliest und guckt ob diese True ( Ja die Farbe ist rot) oder False ( Farbe ist nicht Rot) ist. Falls False kommt soll er Tab drücken und wieder checken ob der nächste Balken rot ist etc. Falls es True ist, soll er mit dem Kampf anfangen.
Jetzt hab ich ein bisschen schwierigkeiten und zwar soll er ca zum Ende des Hp-Balkens wieder einen Punkt auslesen der entweder bestätigt Mob ist tot oder Mob lebt noch setze Skill 1-2 nochmal ein. Dafür müsste ich ja ziemlich zum Ende des Hp-Balkens wieder nen Pointer setzen der wieder die Farbe rot ausliest. Bei True setze skill 1-2 nochmal ein und bei False, drücke die Aufsammelntaste oder ? Mit welcher Schleife sollte ich das am besten machen mit If und EndIf oder mit Do/ Until ???? Und würde das so im groben klappen und ist das genau genug damit der Bot keine Probleme hat ?

Desweiteren frage ich mich ob er rummeckern würde, wenn er zb mal kurzzeitig keine Hp-Leiste hat und er nen ganz andern Pixel hat ?

Sry für die blöde Frage aber hoffe ihr könnt mir helfen und evrsteht so ungefähr was ich sagen wollte xD.

omer36 01/04/2011 20:37

wenn du willst, versuch es über memory..ist genauer, und sicherer...

musst du bischen rumschauen, sind einige tut´s dazu hier..
NomadMemory.au3 brauchste dafür...
und bischen erfahrung mit cheat engine...


dann suchst du zb nach der adresse, die dir zeigt, ob du einen gegner anvisierst (zb 1) oder nicht (zb 0) ..
und/oder du könntest versuchen, die adresse für die HP deines gegners zu suchen...
und dann da einfach über if abfragen deine skills benutzen oder per tab weiter suchen...

ganz einfach gehalten würde es dann zb so aussehen:
Spoiler:
PHP Code:

#RequireAdmin
#include <Nomadmemory.au3>

HotKeySet("{ESC}""_exit")
HotKeySet("{F4}""_start")

WinWaitActive("[...]")

$Open _MemoryOpen(ProcessExists(" .... exe"))
If @
error Then MsgBox(4096"Fehler""Das richtige Fenster konnte nicht gefunden werden")


Global 
$play True
Global $start False

$LebenPointer 
0x106507E8
Global $LebenOffset[2] = [00x109308]

$ManaPointer 0x106507E8
Global $ManaOffset[2] = [00x109310]

$ZielPointer 0x106507E8
Global $ZielOffset[2] = [00x108F08]

While 
$play
$pLeben 
_MemoryPointerRead($LebenPointer$Open$LebenOffset)
$pMana _MemoryPointerRead($ManaPointer$Open$ManaOffset)
$pZiel _MemoryPointerRead($ZielPointer$Open$ZielOffset)
    If 
$start Then
        
If $pLeben[1] <= 350 Then
            ControlSend
("""""""3")  ;hp pot
        
EndIf
        If 
$pMana[1] <= 250 Then
            ControlSend
(""""" ""9") ; mp pot
        
EndIf
        
ControlSend(""""" ""{4 DOWN}")  ;schätze aufsammeln
        
If $pZiel[1] = "1" Then
            ControlSend
(""""" ""{4 UP}") ; aufhören zu sammeln
            ControlSend
(""""" ""1") ;skill /attacke
        
Else
            
ControlSend(""""" ""{TAB}") ; gegner suchen
        
EndIf
        
Sleep(300)
    EndIf
WEnd


Func _start
()
    
$start Not $start
EndFunc

Func _exit
()
    
$play False
EndFunc 


aber mit pixelsearch gehts natürlich auch..

irgentwie so zb
[Only registered and activated users can see links. Click Here To Register...]

TurboGolom 01/04/2011 21:38

danke dir vielmals. ich werd mich mal ein bisschen in richtung memory umschauen und gucken obs klappt. und danke für das script wird mir sicher helfen xD
Edit: Ich glaub ich wage mich erstmal an Pixelsearch etc ran xD. Aber wie meinste das mit memory ist genauer und sicherer ?
könnte ich den bot auch im Hintergrund laufen lassen falls er eine Pixelsearch funktion benutzt?

Stupid_Bitsh 01/06/2011 02:38

Ganz ganz simpel ! Undzwar machst du FOLGENDES :
Du wartest ab wie lange es etwa dauert bis er die Leiste voll geladen hat bzw. bis dahin wo du möchtest ! (Zähle die sekunden)
Dann gehst du UNTER den teil , der das erfasst das es wieder rot ist und dan setzt du da meinet wegen einen Sleep ein von Sleep(12000) ! und dan den teil das er fighten soll !

AutoIt v3 (Script und Koda mit inbezogen) ist ein Programm das wie einen Brief nur in Computer sprache liest ;) Mit freundlichen Grüße : Lenamarie (loli) aus Köln xD (Mail mir ma per skype wende net weiter kommst ! Skypename : L3namarie)

______________

Hier bin ich xD
[Only registered and activated users can see links. Click Here To Register...]

Stupid_Bitsh 01/06/2011 02:39

xDDDDDDDDDDDD

omer36 01/06/2011 08:50

Quote:

Originally Posted by Stupid_Bitsh (Post 8511164)
Ganz ganz simpel ! Undzwar machst du FOLGENDES :
Du wartest ab wie lange es etwa dauert bis er die Leiste voll geladen hat bzw. bis dahin wo du möchtest ! (Zähle die sekunden)
Dann gehst du UNTER den teil , der das erfasst das es wieder rot ist und dan setzt du da meinet wegen einen Sleep ein von Sleep(12000) ! und dan den teil das er fighten soll !

AutoIt v3 (Script und Koda mit inbezogen) ist ein Programm das wie einen Brief nur in Computer sprache liest ;) Mit freundlichen Grüße : Lenamarie (loli) aus Köln xD (Mail mir ma per skype wende net weiter kommst ! Skypename : L3namarie)

einfach klappe halten :facepalm:


Quote:

Originally Posted by TurboGolom (Post 8483822)
Edit: Ich glaub ich wage mich erstmal an Pixelsearch etc ran xD. Aber wie meinste das mit memory ist genauer und sicherer ?
könnte ich den bot auch im Hintergrund laufen lassen falls er eine Pixelsearch funktion benutzt?

pixelsearch sucht nach dem, was du siehst...also nix mit hidden, über memory schon, (siehe beim bsp code ala ControlSend...)
genauer/sicherer im bezug auf die "treffsicherheit", da weiß er immer genau wann gegner gefunden ist/tot ist...
pixelsearch ist halt so ne sache... ^^

| Moep | 01/06/2011 09:15

Eigentlich brauchst du garnicht wissen wieviel hp dein gegner hat. Der Wert ist oftmals schwer zu finden. Such die memory für deine mp und hp raus. Dann suchst noch die für deine character motion raus. Ist im Grunde ne memory die wiederspiegelt welche bewegeung dein char gerade macht.
So könnte die mem z.B. folgende Werte haben:
- stehen = 0
- laufen = 1
- springen = 8
- kämpfen = 4
- schwimmen = 2
etc...

so jetzt folgender pseudocode:

Code:

while 1
        if $motion = 0 then
                send(tab)
                if $motion = 4 then
                        do
                        send(1)
                        sleep(1000)
                        send(2)
                        until $motion = 0
                endif
        endif
wend

Und dazwischen baust dann noch nen hp und mp check ein um nicht zu sterben bzw. out of mana zu sein.

TurboGolom 01/06/2011 18:21

k Danke schonmal für die vielen Antworten xD
Hat vllt jemand ein Memory Tut (egal ob englisch oder deutsch) für online games ?
Und wie soll ich meine Hp, Mp auslesen wenn sich der Wert ständig ändert ? Bei anhaltenden Hp ( also hab zb 1000 hp und nach 2 min immernoch 1000) ist mir das klar wie das geht nur bei solchen Anzeigen die sich alle 5 sek verändern etc ist mir das nicht ganz bewusst.
Mal dazu gesagt ich habe für das Game jetzt bei Cheat Engine 2 .exe möglichkeiten einfach bei beiden mal das mit dem auslesen versuchen ja oder ?

| Moep | 01/07/2011 10:42

Quote:

Originally Posted by TurboGolom (Post 8523495)
k Danke schonmal für die vielen Antworten xD
Hat vllt jemand ein Memory Tut (egal ob englisch oder deutsch) für online games ?
Und wie soll ich meine Hp, Mp auslesen wenn sich der Wert ständig ändert ? Bei anhaltenden Hp ( also hab zb 1000 hp und nach 2 min immernoch 1000) ist mir das klar wie das geht nur bei solchen Anzeigen die sich alle 5 sek verändern etc ist mir das nicht ganz bewusst.
Mal dazu gesagt ich habe für das Game jetzt bei Cheat Engine 2 .exe möglichkeiten einfach bei beiden mal das mit dem auslesen versuchen ja oder ?

Einfach mal hier umschauen, es gibt genug Tutorials zu dem Thema auf e*pvp.

Dann suchst du nach der 1000 und meinetwegen nach der 0 wenn du tot bist. Oder du legst verschiedene Waffen/ Rüstungen an, damit verändert sich meist auch deine HP/MP Dann sollten die werte irgendwann so wenig sein dass du auch innerhalb von 5 secs einen wert dazwischen findest. Bei manchen Spielen ist es jedoch anders, zb GW. Da liegt die HP als float im Arbeitspeicher. Dass heißt, wenn du 100% deiner HP hast steht im Arbeitspeicher eine 1,0 bei 50% ist es eine 0,5 usw.

Probier einfach beide aus. Meist ist es die letze in der Liste.

THX nicht vergessen ;)

TurboGolom 01/07/2011 18:34

k habs mal getestet nach ne Tut und ich habe jetzt trotzdem 11 Werte die alle die gleiche Value haben
Vorgehensweise
Meine MaxHp sind 3496 die gebe ich in Cheat Engine ein und klicke auf Scan. Danach nehm ich ein Item raus welches mir Hp gibt. Dann habe ich 3141 Hp die ich wieder in CE eingebe und auf next Scan klicke. Dann leg ich das Item wieder an und die Suche mach ich so lange bis keine Anzahl an Werten sich verändert ( in dem Falle 11 Ergebnisse)
Woher weiß ich jetzt welche dieser 11 Ergebnisse das ist welches ich brauche ? btw. Die Values von allen 11 Ergebnissen lassen sich nicht ändern, sie springen immer wieder auf 3496 zurück

puzzlr 01/07/2011 19:25

Quote:

Originally Posted by TurboGolom (Post 8544765)
k habs mal getestet nach ne Tut und ich habe jetzt trotzdem 11 Werte die alle die gleiche Value haben
Vorgehensweise
Meine MaxHp sind 3496 die gebe ich in Cheat Engine ein und klicke auf Scan. Danach nehm ich ein Item raus welches mir Hp gibt. Dann habe ich 3141 Hp die ich wieder in CE eingebe und auf next Scan klicke. Dann leg ich das Item wieder an und die Suche mach ich so lange bis keine Anzahl an Werten sich verändert ( in dem Falle 11 Ergebnisse)
Woher weiß ich jetzt welche dieser 11 Ergebnisse das ist welches ich brauche ? btw. Die Values von allen 11 Ergebnissen lassen sich nicht ändern, sie springen immer wieder auf 3496 zurück

wieso willst du die values denn ändern?

versuch mal, deine hp anderweitig zu senken(um das value rauszukriegen), dh. wenn du das item ablegst und dann wieder anlegst, lass dir von einem mob hp abziehen und scan dann.

| Moep | 01/07/2011 19:40

Quote:

Originally Posted by TurboGolom (Post 8544765)
k habs mal getestet nach ne Tut und ich habe jetzt trotzdem 11 Werte die alle die gleiche Value haben
Vorgehensweise
Meine MaxHp sind 3496 die gebe ich in Cheat Engine ein und klicke auf Scan. Danach nehm ich ein Item raus welches mir Hp gibt. Dann habe ich 3141 Hp die ich wieder in CE eingebe und auf next Scan klicke. Dann leg ich das Item wieder an und die Suche mach ich so lange bis keine Anzahl an Werten sich verändert ( in dem Falle 11 Ergebnisse)
Woher weiß ich jetzt welche dieser 11 Ergebnisse das ist welches ich brauche ? btw. Die Values von allen 11 Ergebnissen lassen sich nicht ändern, sie springen immer wieder auf 3496 zurück

Ist ein grüner Wert dabei, dann nimm den, der ändert sich für gewöhnlich nicht nach einem Neustart, is quase die Base. Ansonsten wechsel mal den Char, geh in ein anderes Gebiet, Map, Distrik, log dich aus und wieder ein. What else.
Wichtig ist das der Wert immer mit den von deiner hp übereinstimmt. Wenn mehrere passen dann ists Schnuppe mit welchen du arbeitest.
Wenn keiner von den werten alle anforderungen hat, dann musst du die pointer finden um zu deiner Base zu kommen.

TurboGolom 01/07/2011 20:18

@u_failed Das geht ja nicht da sich ja alle 2 sek oder so der Wert ändert von daher bräuchte ich feste Werte die ich Scannen kann. wollte die Values ändern da ich mir dachte das die geänderte Value mir dann als Hp angezeigt wird im Spiel ( nur angezeigt)

kk ich guck mal aber danke euch schonmal

Jonas_93 01/07/2011 20:26

Vielleicht sagst du uns mal das spiel dann können wir dir die Values einfach hier rien posten, oder mal gezielt zeigen wie das geht :D

TurboGolom 01/08/2011 00:59

Forsaken World heißt das Game xD

TurboGolom 01/09/2011 13:40

Ich versuch es sonst einfach mal mit etwas leichteren Games wie Nostale wo es ohne Probleme funktionieren sollte. Einfach mal um ein bisschen zu üben und um paar sachen ausprobieren

| Moep | 01/09/2011 19:36

Wieso sollte es da leichter sein?
Leider ist Forsaken World in der CB, sonst hätt ich dir mal was rausgesucht. Oder hast vielleicht ne Idee wie ich da reinkomme?

TurboGolom 01/09/2011 20:45

weil es dazu ein naheliegendes Tut gibt. Ich guck mal was ich machen kann in sachen cb
Edit: memorys ändern sich doch bestimmt nach jedem update oder =?

| Moep | 01/10/2011 08:32

Ja vom Prinzip her ist aber eigentlich meist gleich.

Kommt drauf an, bei kleinen Updates kannst du Glück haben. Bei größeren Updates ist die Wahsrcheinlichkeit groß das sich die Werte verschieben, dann aber meistens auch um die gleiche Stelle. So dass du nur einen Wert raussuchen musst und dann das Offset auf die anderen aufrechnest.


All times are GMT +2. The time now is 13:22.

Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.