GWFunctions

07/03/2011 19:46 i4mSoH34Vy#1
Ich möchte hier gerne ein Projekt von mir veröffentlichen. Bei dem Projekt handelt es sich um ein paar Funktionen für Guild Wars.

Das Projekt ist in C++ geschrieben und ist mein erstes Projekt in C++.
Es beinhaltet folgende Funktionen:

WaitForScreen
CheckAreaID
DeathCheck
CurrentPosition
MTActiveWindow
runningcourse
MTInactive


Zwei MoveTo's sind enthalten.
Sie unterscheiden sich darin, dass die Funktion MTActiveWindow genauer ist, aber nicht im inaktiven Fenster verwendet werden kann. Die MTInactive kann im inaktiven Fenster verwendet werden.

Thermalquellen Bot
-55HP Monk Build: OwAU0K3+S4F1DkGMl/DgiUeA
-Auflösung 800x600
-Alle Taschen öffnen F9
-Gruppenfenster oben rechts in die Ecke
-Alle Taschen oben links in die Ecke
- Kaufmannsfenster oben rechts in die Ecke
- Identwerkzeug ganz unten links in die letzte Tasche
- nächstbefindlichen Gegenstand O

10.07.2011
Version 1.0.0.2
-Thermalquellen Bot hinzugefügt
-Bugs bei der MoveTo behoben
-WaitForScreen Bug behoben
-Speicheradressen erneuert
-Mausklick Funktion hinzugefügt
-GWActivateSkill Funktion hinzugefügt
-SendThisKey Funktion hinzugefügt
-resign Funktion hinzugefügt
-ident Funktion hinzugefügt
-pickup Funktion hinzugefügt
-sellmerchant Funktion hinzugefügt
-NMorHM Funktion hinzugefügt

3.07.2011
Version 1.0.0.1
- ReadProcessMemory entfernt
3.07.2011
Version 1.0.0.0
- Release
07/03/2011 20:00 _Merowinger_#2
Sieht interessant aus, nur warum nutzt du in einer dll, die injected werden muss, Funktionen wie OpenProcess und ReadProcessMemory?

Als Tipp: Schau dir TT6 & GWMI an.
07/03/2011 20:04 i4mSoH34Vy#3
Ich wusste nicht direkt wie ich es ohne ReadProcessMemory mache und hatte im Internet nichts zu den Thema gefunden wie ich innerhalb eines Prozesses den Speicher auslese.
07/03/2011 20:06 _Merowinger_#4
Du tust es an manchen Stellen schon unbewusst, indem du Dinge in die Adresse speicherst^^

int MapLoading = *(int*)MapLoadingAdresse;
07/03/2011 20:18 i4mSoH34Vy#5
Danke schon mal.Ich wirds nochmal umändern. Dann wird das Projekt auch ein wenig übersichtlicher.
07/10/2011 16:48 i4mSoH34Vy#6
Update
07/10/2011 18:49 _Merowinger_#7
Jetzt mal ehrlich lerne erst einmal richtig C++.
Von switch und case hast du noch nie etwas gehört, oder?
Und WaitForScreen klappt so auch ohne ausprobieren nicht,
Naja das war der letzte Input von mir, da ich das Projekt bei vorhandenem
GWMI,TT6,GWAAC,GWA² nicht wirklich sinnvoll finde.
Übersetze lieber eins der oben genannten Projekte in C++,
da hast du mehr von.
07/11/2011 19:46 Asul on frenzy#8
@ i4mSoH34Vy

Hallo,

woher hast du diese Speicheradressen ?


#define Checkmap 0x00D4E848
#define MapID 0x00A2AE78
#define Death 0x00A2A084
#define PositionX 0x00D4E8E8
#define PositionY 0x00D4E8EC
#define walking 0x00A2A680
#define right 0x00A2A698
#define left 0x00A2A694
#define Course 0x00A29F70
07/11/2011 21:16 kknb#9
cheatengine wäre mal ne möglichkeit.
07/11/2011 22:00 Asul on frenzy#10
Aber man kann damit doch nur sehen wie sich Werte verändern...
Naja ok den Disassembler hat man noch, den DeathCheck könnte ich mir ja vielleicht noch erklären aber die Spieler Position o_O wie geht man da vor ?
07/11/2011 23:02 black_byte#11
Quote:
Originally Posted by Asul on frenzy View Post
Aber man kann damit doch nur sehen wie sich Werte verändern...
Naja ok den Disassembler hat man noch, den DeathCheck könnte ich mir ja vielleicht noch erklären aber die Spieler Position o_O wie geht man da vor ?
gw hat ein ganz normales koordinatensystem (x,y & z-Achse), einfach nach nem unbekannten wert suchen --> bewegen --> changed vlue etc. bis du nurnoch ein paar werte hast, wenn du glück hast sind es 2-3.

MfG
black byte
07/13/2011 19:00 Asul on frenzy#12
Eine vielleicht dumme Frage, aber wie oft muss ich mich bewegen und dann wieder nach changed value suchen?

Ich hab das ganze so ca. 20 mal hintereinander wiederholt.

First scan, Changed value, Bewegen, Changed, Bewegen, Changed ....

Und naja ich hatte so geschätzt über 100 Werte da noch stehen ...
07/13/2011 20:07 i4mSoH34Vy#13
Das kommt drauf an.
Erst Unknown -> bewegen -> changed value -> stehen bleiben unchanged -> und so weiter.
Wenn du 100 Adressen hast musst du halt mal bei den statischen Adressen kucken, welche zu der Position X und Y passt. Die beiden Adressen solltest du als float suchen.