Hallo, gibt es aktuell einen Bot der nur Tasten drückt (Buchstaben oder Zahlen)
Ich glaube nicht, dass er/sie weiß wofür ein "Packetlogger" da ist.Quote:
Das was du vorhast lässt sich mittels Packetlogger voraussichtlich deutlich leichter umsetzen: [Only registered and activated users can see links. Click Here To Register...]
Einfach die Pakete von was auch immer du machen möchtest beobachten und per AutoiT Script selbst senden.
Läuft zuverlässig im Hintergrund und du kannst auch ohne Probleme auf Feedback reagieren.
ChatGPT hilft im zweifelsfall bei der Implementierung (du darfst natürlich nicht sagen du willst einen bot programmieren, sondern sowas wie die logik für einen NPC).
Looolz :DQuote:
Ich glaube nicht, dass er/sie weiß wofür ein "Packetlogger" da ist.
Abgesehen davon wären wir wieder dann beim Thema mit den Script. Es gibt auch Tasten/Maus-Repeater die im Hintergrund laufen. Die bräuchte man sich nur herunterladen und zu starten
Wenn man das ganze bedenkt, dass er/sie mit einem "Repeater-Programm" nicht mal zurecht, ich glaube da bräuchte man erst gar nicht mit Auto-IT anfangen.
Wenn er/sie das ganze wüsste, hätte er/sie sicherlich nicht diesen Thread hier für aufgemacht.
Was du hier versuchst ist irgendeiner Person auf etwas hinzuweisen ohne überhaupt im klaren zu sein, ob er/sie sich auch nur im geringsten in der Richtung von Scripts und ähnliches auskennt.
Während ich hier versuche den einfachsten Weg zu suchen. Den jeder versteht.
Aber wenn du der Person ja so gerne helfen möchtest, dann kannst du ihn/ihr ja gleich ein Script schreiben. Oder eben alles erklären von vorne bis hinten.
Möchtest du der nächsten Person die ebenfalls ein Script braucht auch ein schreiben für sein/ihr vorhaben? Also im Durchschnitt wird hier im Forum 1x pro Woche nach nen Farmbot gefragt. Kannst es gerne jeder Person einzeln erklären oder deren wünsche erfüllen.
Oder eben den Hinweis auf ein herunterladbares Programm geben mit einfacher Funktion ohne Kenntnissen von irgendwas
Wenn es jetzt DIEPerson ist. Also wenn hier nur eine Person pro halben Jahr nachfragt, dann würde ich denen selbst alle ein Script schreiben. Aber einmal pro Woche ist mir zu viel. Nicht vom Aufwand her, aber man fühlt sich dann in so einer Situation "gefangen"
Situation Beispiel: "Du malst ein Bild. Verschenkst das Bild an jemanden. Die Woche darauf malst du noch ein Bild und verschenkst es an jemand anderen. Darauf die Woche das gleiche und immer wieder...."
Quote:
Looolz :D
Meine Anleitung ist aufführlich genug das sie theoretisch für nen neugierigen 12 Jährigen mit zuviel Freizeit völlig ausreicht.
Für deine hätte die suchfunktion gereicht oder man hätte ChatGPT fragen können, der hätte es einem gleich auch implementiert :D
@[Only registered and activated users can see links. Click Here To Register...] Ach, bist Du dir da sicher?^^Quote:
Wie wäre es dann mit einfach einen schreiben lassen :D
Jup, bin schon ne weile hier.Quote:
@[Only registered and activated users can see links. Click Here To Register...] Ach, bist Du dir da sicher?^^
#include <Array.au3>
Dim $PacketLogger_OpenSockets[0]
Dim $PacketLogger_Started = False
Dim $PacketLogger_DisconnectedCallback = -1
Const $PacketLogger_Recv = 0
Const $PacketLogger_Send = 1
HotKeySet("{NumpadSub}", "Cellaring")
Func PacketLogger_TitleMode($Option = -1)
If $Option = -1 Then
Return Opt("WinTitleMatchMode")
Else
Return Opt("WinTitleMatchMode", $Option)
EndIf
EndFunc
Func PacketLogger_GetPorts()
$OldTitleMode = PacketLogger_TitleMode()
PacketLogger_TitleMode(2)
$Titles = WinList("[BladeTiger12] - NosTale PacketLogger - Server: 127.0.0.1")
PacketLogger_TitleMode($OldTitleMode)
Dim $Ports[0]
If $Titles[0][0] > 0 Then
For $i = 1 To $Titles[0][0]
$Port = StringRegExp($Titles[$i][0], "127\.0\.0\.1\:(\d+)", 3)
If IsArray($Port) Then
_ArrayAdd($Ports, $Port[0])
EndIf
Next
EndIf
Return $Ports
EndFunc
Func PacketLogger_Startup()
TCPStartup()
$PacketLogger_Started = True
EndFunc
Func PacketLogger_Shutdown()
TCPShutdown()
$PacketLogger_Started = False
EndFunc
Func PacketLogger_ConnectTo($Port, $Ip = "127.0.0.1")
If Not $PacketLogger_Started Then
MsgBox(16, "PacketLogger", "First of all you have to call 'PacketLogger_Startup()'!")
Return False
EndIf
$Socket = TCPConnect($Ip, $Port)
If $Socket < 0 Then
Return False
EndIf
_ArrayAdd($PacketLogger_OpenSockets, $Socket)
Return $Socket
EndFunc
;Func PacketLogger_SetDisconnectedCallback($Callback)
; $PacketLogger_DisconnectedCallback = $Callback
;EndFunc
Func PacketLogger_Close($Socket)
$Index = _ArraySearch($PacketLogger_OpenSockets, $Socket)
If $Index <> -1 Then
_ArrayDelete($PacketLogger_OpenSockets, $Index)
EndIf
EndFunc
Func PacketLogger_Handle($Socket, $ReceiveCallback, $MaxReceiveBytes = 8192)
$ReceivedPacket = TCPRecv($Socket, $MaxReceiveBytes)
;If [MENTION=299637]ErRoR[/MENTION] <> 0 Then
; MsgBox(0,"" [MENTION=299637]ErRoR[/MENTION])
; If IsFunc($PacketLogger_DisconnectedCallback) Then
; $PacketLogger_DisconnectedCallback($Socket)
; EndIf
;Else
If $ReceivedPacket <> "" Then
$PacketsSplitted = StringSplit($ReceivedPacket, @CR, 2)
For $i = 0 To UBound($PacketsSplitted) - 1
If $PacketsSplitted[$i] = "" Then ContinueLoop
$PacketSplitted = StringSplit($PacketsSplitted[$i], " ", 2)
If UBound($PacketSplitted) > 1 Then
$PacketType = $PacketSplitted[0]
_ArrayDelete($PacketSplitted, 0)
If IsFunc($ReceiveCallback) Then
$ReceiveCallback($PacketType, $PacketSplitted, $PacketsSplitted[$i])
EndIf
EndIf
Next
EndIf
EndFunc
Func PacketLogger_SendToSocket($Socket, $Type, $Packet)
If IsArray($Packet) Then
For $i = 0 To UBound($Packet) - 1
PacketLogger_SendToSocket($Socket, $Type, $Packet[$i])
Next
Else
TCPSend($Socket, $Type & " " & $Packet & @CR)
EndIf
EndFunc
Func PacketLogger_RecvPacket($Socket, $Packet)
PacketLogger_SendToSocket($Socket, 0, $Packet)
EndFunc
Func PacketLogger_SendPacket($Socket, $Packet)
PacketLogger_SendToSocket($Socket, 1, $Packet)
EndFunc
PacketLogger_Startup()
$Ports = PacketLogger_GetPorts()
$Socket = PacketLogger_ConnectTo($Ports[0])
While True
Sleep(100)
WEnd
Func Cellaring()
For $i = 0 To 50
PacketLogger_SendPacket($Socket, "u_i 2 2734 1 0 0 0")
Sleep(500)
Next
EndFunc
PacketLogger_Close($Socket)
PacketLogger_Shutdown()
#ce
Quote:
Jup, bin schon ne weile hier.
Btw: So lernt er nix. Da kannst du ihm gleich das Ergebnis in die hand drücken.
Das Packet das gesucht ist, ist "u_i 2 2734 1 0 0 0" sofern sich der Kristallveredler ganz links oben im Inventar befindet.
Das Packet schlüsselt sich so auf:
PacketU_i(EntityType entType, int entID, InventoryType invType, short invSlot, int _x, int _y, int _option1, int _option2)
Heißt folgender Code nutzt jedes mal wenn du die Minus taste auf dem Nummernblock drückst 50 mal den Kristallveredeler der sich ganz links oben auf dem ersten slot im hauptinventar befindet.
Dauert nur einen moment da es einen Serverseitigen delay gibt.
Wenn du die 50 Hoch oder runter schraubst kannst du einstellen wieviele pro tastendruck erzeugt werden. Mehrmaliges drücken bevor er fertig ist beschleunigt den prozess nicht.Code:#include <Array.au3> Dim $PacketLogger_OpenSockets[0] Dim $PacketLogger_Started = False Dim $PacketLogger_DisconnectedCallback = -1 Const $PacketLogger_Recv = 0 Const $PacketLogger_Send = 1 HotKeySet("{NumpadSub}", "Cellaring") Func PacketLogger_TitleMode($Option = -1) If $Option = -1 Then Return Opt("WinTitleMatchMode") Else Return Opt("WinTitleMatchMode", $Option) EndIf EndFunc Func PacketLogger_GetPorts() $OldTitleMode = PacketLogger_TitleMode() PacketLogger_TitleMode(2) $Titles = WinList("[BladeTiger12] - NosTale PacketLogger - Server: 127.0.0.1") PacketLogger_TitleMode($OldTitleMode) Dim $Ports[0] If $Titles[0][0] > 0 Then For $i = 1 To $Titles[0][0] $Port = StringRegExp($Titles[$i][0], "127\.0\.0\.1\:(\d+)", 3) If IsArray($Port) Then _ArrayAdd($Ports, $Port[0]) EndIf Next EndIf Return $Ports EndFunc Func PacketLogger_Startup() TCPStartup() $PacketLogger_Started = True EndFunc Func PacketLogger_Shutdown() TCPShutdown() $PacketLogger_Started = False EndFunc Func PacketLogger_ConnectTo($Port, $Ip = "127.0.0.1") If Not $PacketLogger_Started Then MsgBox(16, "PacketLogger", "First of all you have to call 'PacketLogger_Startup()'!") Return False EndIf $Socket = TCPConnect($Ip, $Port) If $Socket < 0 Then Return False EndIf _ArrayAdd($PacketLogger_OpenSockets, $Socket) Return $Socket EndFunc ;Func PacketLogger_SetDisconnectedCallback($Callback) ; $PacketLogger_DisconnectedCallback = $Callback ;EndFunc Func PacketLogger_Close($Socket) $Index = _ArraySearch($PacketLogger_OpenSockets, $Socket) If $Index <> -1 Then _ArrayDelete($PacketLogger_OpenSockets, $Index) EndIf EndFunc Func PacketLogger_Handle($Socket, $ReceiveCallback, $MaxReceiveBytes = 8192) $ReceivedPacket = TCPRecv($Socket, $MaxReceiveBytes) ;If [MENTION=299637]ErRoR[/MENTION] <> 0 Then ; MsgBox(0,"" [MENTION=299637]ErRoR[/MENTION]) ; If IsFunc($PacketLogger_DisconnectedCallback) Then ; $PacketLogger_DisconnectedCallback($Socket) ; EndIf ;Else If $ReceivedPacket <> "" Then $PacketsSplitted = StringSplit($ReceivedPacket, @CR, 2) For $i = 0 To UBound($PacketsSplitted) - 1 If $PacketsSplitted[$i] = "" Then ContinueLoop $PacketSplitted = StringSplit($PacketsSplitted[$i], " ", 2) If UBound($PacketSplitted) > 1 Then $PacketType = $PacketSplitted[0] _ArrayDelete($PacketSplitted, 0) If IsFunc($ReceiveCallback) Then $ReceiveCallback($PacketType, $PacketSplitted, $PacketsSplitted[$i]) EndIf EndIf Next EndIf EndFunc Func PacketLogger_SendToSocket($Socket, $Type, $Packet) If IsArray($Packet) Then For $i = 0 To UBound($Packet) - 1 PacketLogger_SendToSocket($Socket, $Type, $Packet[$i]) Next Else TCPSend($Socket, $Type & " " & $Packet & @CR) EndIf EndFunc Func PacketLogger_RecvPacket($Socket, $Packet) PacketLogger_SendToSocket($Socket, 0, $Packet) EndFunc Func PacketLogger_SendPacket($Socket, $Packet) PacketLogger_SendToSocket($Socket, 1, $Packet) EndFunc PacketLogger_Startup() $Ports = PacketLogger_GetPorts() $Socket = PacketLogger_ConnectTo($Ports[0]) While True Sleep(100) WEnd Func Cellaring() For $i = 0 To 50 PacketLogger_SendPacket($Socket, "u_i 2 2734 1 0 0 0") Sleep(500) Next EndFunc PacketLogger_Close($Socket) PacketLogger_Shutdown() #ce
Easy :bandit:
Oh jaa das böse Nostale Team und ihre Log-Checks.Quote:
Er wollte ein Bot haben und kein Makro. Steht jedenfalls so im Titel.
Ich hätte den Code hier niemals öffentlich gepostet, sondern ihn privat geschrieben. Alleine aus dem Grund, weil hier Leute von der Nostale Crew sich herumtreiben um genau solche Sachen auszunutzen.
Du hast hier jetzt die vollständige Funktion deines Makros gepostet. Wenn er ihn jetzt nutzt, könnte er gesperrt werden. Falls die NosTale Teamler diesen Thread lesen bzw. gelesen haben. Und dann den Log im Spiel vergleichen.
Du hast das denen jetzt ganz leicht gemacht. Wegen dem Verhaltensmuster deines Makros
Abgesehen davon, du meintest ja, dass ers nicht mal hinbekommt den Packetlogger zu bedienen. Bist du dir jetzt überhaupt sicher, dass er es schafft deinen Code in eine Datei umzuwandeln?