Tratsch rund um Autoit / Autoit Talk | kleinere Fragen

05/16/2012 20:05 K1ramoX#91
Wie will man bitteschön den Namen einer Variable auslesen können? Wofür brauchst du so etwas o.o
05/16/2012 20:18 Dr.Toni-old#92
Hey... :)

Also ich wollte euch fragen ob mir jemand dabei helfen könnte... Das meine Programm nicht geshared werden ;)
Wollte es über HWID machen, komme aber damit nicht klar und empfinde es als "Benutzer unfreundlich". Gibt es noch andere Möglichkeiten? ;)
05/16/2012 20:30 Lawliet#93
Serial Codes? Hoffe aber du weißt, dass AutoIt open source ist :p
05/16/2012 20:32 Dr.Toni-old#94
Ja das weiß ich :D

Könnte ich dich mal in Skype adden? :D

€: ADDED :D
05/16/2012 20:53 KDeluxe#95
Quote:
Originally Posted by Toni_Damager View Post
Hey... :)

Also ich wollte euch fragen ob mir jemand dabei helfen könnte... Das meine Programm nicht geshared werden ;)
Wollte es über HWID machen, komme aber damit nicht klar und empfinde es als "Benutzer unfreundlich". Gibt es noch andere Möglichkeiten? ;)
Was genau soll daran "Benutzer unfreundlich" sein? Dass man eine generierte HWID einmalig im Profil angeben muss?
05/16/2012 22:37 Achat#96
Quote:
Originally Posted by Toni_Damager View Post
Hey... :)

Also ich wollte euch fragen ob mir jemand dabei helfen könnte... Das meine Programm nicht geshared werden ;)
Wollte es über HWID machen, komme aber damit nicht klar und empfinde es als "Benutzer unfreundlich". Gibt es noch andere Möglichkeiten? ;)
Lade dir doch einfach das Beispiel von Kdeluxe
[Only registered and activated users can see links. Click Here To Register...]
steht im Sticky nur einen Sticky unter diesem Sticky :D


Quote:
Originally Posted by Lawliet! View Post
Serial Codes? Hoffe aber du weißt, dass AutoIt open source ist :p
Man könnte den Source oder Teile davon verschlüsseln - man kann aber nicht verhindern, dass andere an den Quellcode kommen, denn wenn man das könnte, könnte man das Script nicht mehr ausführen.

MfG
05/17/2012 12:46 -STORM-#97
Hi
Bin gerade leicht verwirrt bei der Auswahl der Datentypen für _MemoryRead.
Bis jetzt habe ich nur 'dword' und 'Float' gebraucht.

Doch jetzt gibt es ein paar Werte (ganzzahlig, also nicht Float, Double etc.), die wegen ihrer Länge nicht korrekt angezeigt werden.

In CE gibt es ja entweder 4byte, oder 8byte.
Laut verschiedener Tuts sind das in AutoIt 'dword' und 'qword'

Dword funktioniert perfekt für alle 4byte aus CE, qword zeigt aber immer 0 an.

Nun habe ich mal Google bemüht, und die Liste ist dort deutlich länger.
Alleine für 4byte ohne Gleitkomma umfasst die Liste:
Quote:
int 32bit(4bytes) signed integer
uint 32bit(4bytes) unsigned integer
long 32bit(4bytes) signed integer
ulong 32bit(4bytes) unsigned integer
dword 32bit(4bytes) unsigned integer
ptr 32bit(4bytes) integer
hwnd 32bit(4bytes) integer
Für 8byte ohne Gleitkomma:
Quote:
int64 64bit(8bytes) signed integer
uint64 64bit(8bytes) unsigned integer
qword scheint es in AuoIt gar nicht (mehr?) zu geben.
Was ist der Unterschied zwischen integer, signed integer und unsigned integer? signed=ganze Zahlen, unsigned=natürliche Zahlen, integer ohne Angabe=?

Und wann brauche ich welchen Datentyp?

Und was unterscheidet int und long, uint ulong und dword, ptr und hwnd?
Laut Beschreibung wären die doch exakt gleich.
05/17/2012 16:15 KDeluxe#98
signed → vorzeichenbehaftet
unsigned → vorzeichenlos.

Verwendest du einen Datentyp ohne weitere Angabe sind diese "signed". Ausnahme hierbei ist "byte", das ist der einzige Datentyp der Standardgemäß "unsigned" ist.
Durch weglassen der Vorzeichen verdoppelt sich der Wertebereich (im positiven Bereich). "signed byte" umfasst Werte von -128 bis 127, "unsigned byte" umfasst Werte von 0 bis 255.

"QWORD" ist eine Typdefinition von Windows.
Code:
typedef unsigned __int64 QWORD, *PQWORD
"long" und "int" reservieren beide 32 Bit im Speicher. Früher reservierte "int" nur 16 Bit, bei Java ist das meines Wissens immer noch so, bin mir aber nicht sicher.
05/18/2012 17:19 -STORM-#99
Habe gerade versucht, für Last Chaos einen kleinen Teleporthack zu coden. Koordinaten auslesen und schreiben funktioniert auch soweit, aber ich werde immer wieder, nachdem ich kurz am Ziel war, wieder zurückgesetzt.
Was ich bereits versucht habe, um das zu verhindern:
Während des Portens die W-Taste gedrückt lassen (zum laufen) und die Z-Koordinate höher einstellen.
Beides hat nicht geholfen.
Vorschläge, was ich ausprobieren könnte?

Achja, die Teleport-Func sieht im Moment so aus:
Code:
Func _teleport($x, $y, $z)
	ControlSend($windowname, "", "", "{w down}")
	Sleep(200)
	$teleporttimer = TimerInit()
	Do
		_MemoryWrite($posxaddress, $open, $x, 'Float')
		_MemoryWrite($posyaddress, $open, $y, 'Float')
		_MemoryWrite($poszaddress, $open, $z + 2, 'Float')
	Until TimerDiff($teleporttimer) > 200
	Sleep(200)
	ControlSend($windowname, "", "", "{w up}")
EndFunc
Statt den 200ms habe ich auch schon verschiedene andere Werte von 10 bis 1000 probiert, das bringt auch nichts. Auch $z+2 habe ich variiert.
05/18/2012 18:12 Lawliet#100
Warscheinlich achtet Last Chaos einfach darauf, dass Strecken nicht zu schnell zurück gelegt werden ;)
05/18/2012 18:16 omer36#101
Versuchs mal mit
AdlibRegister(_MemoryWrite($posxaddress, $open, $x, 'Float'))
AdlibRegister(_MemoryWrite($posyaddress, $open, $y, 'Float'))
AdlibRegister(_MemoryWrite($poszaddress, $open, $z + 2, 'Float'))
05/18/2012 18:35 -STORM-#102
Quote:
Originally Posted by Lawliet! View Post
Warscheinlich achtet Last Chaos einfach darauf, dass Strecken nicht zu schnell zurück gelegt werden ;)
Achja, habe vergessen zu erwähnen: Es gibt Trainer, mit denen das funktioniert, also ist es definitiv möglich.
Ich weiß halt nur nicht, was die machen.
Alles, was ich denen ansehen konnte, ist, dass man in der Luft über dem Ziel auftaucht, und dann ein kurzes Stück runterfällt, und dass für eine gewisse Zeit wohl die w-Taste gedrückt wird.
05/18/2012 18:40 KDeluxe#103
AdlibRegister() solltest du in diesem Fall lieber nicht verwenden, wenn doch solltest du nach dem Teleport aber auf jeden Fall AdlibUnRegister() verwenden. Andernfalls kommt dein DC sowieso recht schnell.
Ich würde jetzt einfach mal behaupten, dass ControlSend() nicht funktioniert. Falls es doch funktionieren sollte, solltest du es dennoch nicht verwenden. Benutze lieber die Pointer für das "Laufziel", sprich der Punkt (x, y, z) wo der Charakter hinlaufen soll (wie bei einem Mausklick auf den Boden). Dein Charakter muss außerdem zu diesen Punkt laufen. Dafür gibt es einen Pointer mit den Werten 0 (= stehen) und 1 (= laufen).
Mir wurde mal gesagt, dass man sich zunächst zum Ziel mit einem hohen Z-Wert und anschließend mit dem normalen Z-Wert teleportieren muss. Der Maximalwert für die Z-Position ist 3.4³⁸.
05/18/2012 18:46 K1ramoX#104
Quote:
Originally Posted by -STORM- View Post
Achja, habe vergessen zu erwähnen: Es gibt Trainer, mit denen das funktioniert, also ist es definitiv möglich.
Ich weiß halt nur nicht, was die machen.
Alles, was ich denen ansehen konnte, ist, dass man in der Luft über dem Ziel auftaucht, und dann ein kurzes Stück runterfällt, und dass für eine gewisse Zeit wohl die w-Taste gedrückt wird.
Bei sowas würd ich dir eine Dll empfehlen da dass folgende sich da mit Detours und _asm besser umsetzen lässt:

Du gehst zu einem Punkt der oft gecallt wird und setzt dort einen CC. In dem CC setzt du erstmal den Befehl rein der an der Stelle stehen würde wo dein CC jetzt steht. Dann machst du in deinem CC einen Writeprocessmemory call und lässt immer die Koordinaten in ein Register pushen dass du dann in deinem Writeprocessmemorycall nutzen tust.

Sry wenn ich mich hier gerade irre, hab so etwas noch nicht in einem CC umgesetzt ;O
05/18/2012 18:49 -STORM-#105
Quote:
Originally Posted by omer36 View Post
Versuchs mal mit
AdlibRegister(_MemoryWrite($posxaddress, $open, $x, 'Float'))
AdlibRegister(_MemoryWrite($posyaddress, $open, $y, 'Float'))
AdlibRegister(_MemoryWrite($poszaddress, $open, $z + 2, 'Float'))
Funktioniert leider auch nicht.

Quote:
Originally Posted by Kiramox View Post
Bei sowas würd ich dir eine Dll empfehlen da dass folgende sich da mit Detours und _asm besser umsetzen lässt:

Du gehst zu einem Punkt der oft gecallt wird und setzt dort einen CC. In dem CC setzt du erstmal den Befehl rein der an der Stelle stehen würde wo dein CC jetzt steht. Dann machst du in deinem CC einen Writeprocessmemory call und lässt immer die Koordinaten in ein Register pushen dass du dann in deinem Writeprocessmemorycall nutzen tust.

Sry wenn ich mich hier gerade irre, hab so etwas noch nicht in einem CC umgesetzt ;O
Hört sich erstmal interessant an, aber müsste ich dafür nicht irgendeine andere Sprache wählen? Oder gibt es ne Möglichkeit, mein AutoIt Script als .dll zu compilieren.
Quote:
Originally Posted by KDeluxe View Post
AdlibRegister() solltest du in diesem Fall lieber nicht verwenden, wenn doch solltest du nach dem Teleport aber auf jeden Fall AdlibUnRegister() verwenden. Andernfalls kommt dein DC sowieso recht schnell.
Ich würde jetzt einfach mal behaupten, dass ControlSend() nicht funktioniert. Falls es doch funktionieren sollte, solltest du es dennoch nicht verwenden. Benutze lieber die Pointer für das "Laufziel", sprich der Punkt (x, y, z) wo der Charakter hinlaufen soll (wie bei einem Mausklick auf den Boden). Dein Charakter muss außerdem zu diesen Punkt laufen. Dafür gibt es einen Pointer mit den Werten 0 (= stehen) und 1 (= laufen).
Mir wurde mal gesagt, dass man sich zunächst zum Ziel mit einem hohen Z-Wert und anschließend mit dem normalen Z-Wert teleportieren muss. Der Maximalwert für die Z-Position ist 3.4³⁸.
Das sind schonmal einige gute Ansätze. Werde das mal ausprobieren.

Edit: Nach einigen Versuchen funktioniert es mit den Tipps von KDeluxe schon ziemlich gut.