So, tut mir Leid das ich ""ewig" nichts mehr geschrieben habe, ich hatte vergessen mich "abzumelden"
Aus Gründen des Programmierens bin ich hier raus, ich leite ein Game-Projekt an dem ich grade mit Blut + Schweiß arbeite !
PHP Code:
If NOT ProcessExists("TClient.exe") Then
MsgBox(0, "Error", "4Story ist nicht geöffnet !")
Exit
Else
EndIf
#include <Pointer.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiListView.au3>
#Region ### START Koda GUI section ### Form=
Global $Gesamt
Global $XAchse="", $YAchse="", $ZAchse="", $MonsterZahlWrite
Global $Open = _MemoryOpen(ProcessExists("TClient.exe"))
Global $BotStart = 0
Global $AktuellesMob = 0
$ECBot = GUICreate("4Story Bot by [EC]Mattthias", 409, 288, 192, 124)
$Bot = GUICtrlCreateListView("X-Achse|Y-Achse|Z-Achse|Monster Anzahl", 2, 46, 404, 190)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 100)
$Label1 = GUICtrlCreateLabel("4Story Bot by [EC]Mattthias", 58, 2, 253, 28)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
$Levelspot = GUICtrlCreateButton("Levelspot Hinzufügen", 2, 238, 111, 25, $WS_GROUP)
$Starten = GUICtrlCreateButton("Starten", 144, 238, 75, 25, $WS_GROUP)
$Stoppen = GUICtrlCreateButton("Stoppen", 144, 262, 75, 25, $WS_GROUP)
$Speichern = GUICtrlCreateButton("Speichern", 306, 238, 75, 25, $WS_GROUP)
$Laden = GUICtrlCreateButton("Laden", 306, 262, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
FileDelete(@ScriptDir&".[EC]")
Exit
Case $Starten
Local $ItemMob = _GUICtrlListView_GetItemTextArray($Bot,0)
_MemoryWrite (_XKoord(), $Open, $ItemMob[1], 'float')
_MemoryWrite (_YKoord(), $Open, $ItemMob[2], 'float')
_MemoryWrite (_ZKoord(), $Open, $ItemMob[3], 'float')
While 1
If $Gesamt <> $BotStart Then
If $AktuellesMob = 0 Then
Local $ItemMob = _GUICtrlListView_GetItemTextArray($Bot,$BotStart)
_MemoryWrite (_XKoord(), $Open, $ItemMob[1], 'float')
_MemoryWrite (_YKoord(), $Open, $ItemMob[2], 'float')
_MemoryWrite (_ZKoord(), $Open, $ItemMob[3], 'float')
$AktuellesMob = $ItemMob[4]
$BotStart += 1
Sleep (500)
ElseIf $AktuellesMob <> 0 Then
If _MemoryRead(_MobPointer(), $Open) = 0 Then
ControlSend ("4Story", "", 0, "{z}")
ControlSend ("4Story", "", 0, "{TAB}")
$AktuellesMob -= 1
Sleep (500)
ElseIf _MemoryRead(_MobPointer(), $Open) <> 0 Then
ControlSend ("4Story", "", 0, "{1}")
EndIf
EndIf
ElseIf $Gesamt = $BotStart Then
$BotStart = 0
EndIf
WEnd
Case $Levelspot
$MonsterZahl = InputBox("Monster", "Wie viele Monster sind hier zu töten ?")
$XAchse = Round(_MemoryRead(_XKoord(), $Open, 'float'))
$YAchse = Round(_MemoryRead(_YKoord(), $Open, 'float'))
$ZAchse = Round(_MemoryRead(_ZKoord(), $Open, 'float'))
GUICtrlCreateListViewItem($XAchse&'|'&$YAchse&'|'&$ZAchse&'|'&$MonsterZahl, $Bot)
$Gesamt += 1
Case $Speichern
$Save = FileSaveDialog ("Speichere Koordinaten", @ScriptDir, "[EC] (*.[EC])")
If @Error Then
Else
For $Aktuell = 0 to $Gesamt-1
$Item = _GUICtrlListView_GetItemTextArray($Bot, $Aktuell)
IniWrite ($Save&".[EC]", "Bot", "XAchse"&$Aktuell, $Item[1])
IniWrite ($Save&".[EC]", "Bot", "YAchse"&$Aktuell, $Item[2])
IniWrite ($Save&".[EC]", "Bot", "ZAchse"&$Aktuell, $Item[3])
IniWrite ($Save&".[EC]", "Bot", "Monster"&$Aktuell, $Item[4])
Next
IniWrite ($Save&".[EC]", "Gesamt", "GesamtWert", $Gesamt)
EndIf
Case $Laden
$Load = FileOpenDialog ("Öffne Koordinaten", @ScriptDir, "[EC] (*.[EC])")
If @Error Then
Else
$GesamtAktuell = IniRead($Load, "Gesamt", "GesamtWert", "")
For $Aktuell = 0 to IniRead($Load, "Gesamt", "GesamtWert", "")
$ReadX = IniRead ($Load, "Bot", "XAchse"&$Aktuell, "")
$ReadY = IniRead ($Load, "Bot", "YAchse"&$Aktuell, "")
$ReadZ = IniRead ($Load, "Bot", "ZAchse"&$Aktuell, "")
$ReadMonster = IniRead ($Load, "Bot", "Monster"&$Aktuell, "")
GUICtrlCreateListViewItem($ReadX&'|'&$ReadY&'|'&$ReadZ&'|'&$ReadMonster, $Bot)
Next
$Gesamt = $GesamtAktuell
EndIf
EndSwitch
WEnd
Func _XKoord()
Local $M_R_,$Open_Process_ = _MemoryOpen(ProcessExists("TClient.exe"))
$M_R_ = _MemoryModuleGetBaseAddress(ProcessExists("TClient.exe"),"TClient.exe")
$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("29D8F0"),$Open_Process_),8)
$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("0A20"),$Open_Process_),8)
Return "0x" & Hex($M_R_ + Dec("0084"),8)
EndFunc
Func _YKoord()
Local $M_R_,$Open_Process_ = _MemoryOpen(ProcessExists("TClient.exe"))
$M_R_ = _MemoryModuleGetBaseAddress(ProcessExists("TClient.exe"),"TClient.exe")
$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("29D8F0"),$Open_Process_),8)
$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("0A20"),$Open_Process_),8)
Return "0x" & Hex($M_R_ + Dec("008C"),8)
EndFunc
Func _ZKoord()
Local $M_R_,$Open_Process_ = _MemoryOpen(ProcessExists("TClient.exe"))
$M_R_ = _MemoryModuleGetBaseAddress(ProcessExists("TClient.exe"),"TClient.exe")
$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("29D8F0"),$Open_Process_),8)
$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("0A20"),$Open_Process_),8)
Return "0x" & Hex($M_R_ + Dec("0088"),8)
EndFunc
Func _MobPointer()
Local $M_R_,$Open_Process_ = _MemoryOpen(ProcessExists("TClient.exe"))
$M_R_ = _MemoryModuleGetBaseAddress(ProcessExists("TClient.exe"),"TClient.exe")
$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("29D8F0"),$Open_Process_),8)
$M_R_ = "0x" & Hex(_MemoryRead($M_R_ + Dec("06CC"),$Open_Process_),8)
Return "0x" & Hex($M_R_ + Dec("0408"),8)
EndFunc
Func Bot()
If $Gesamt <> $BotStart Then
If $AktuellesMob = 0 Then
Local $ItemMob = _GUICtrlListView_GetItemTextArray($Bot,$BotStart)
_MemoryWrite (_XKoord(), $Open, $ItemMob[1], 'float')
_MemoryWrite (_YKoord(), $Open, $ItemMob[2], 'float')
_MemoryWrite (_ZKoord(), $Open, $ItemMob[3], 'float')
$AktuellesMob = $ItemMob[4]
$BotStart += 1
ElseIf $AktuellesMob <> 0 Then
If _MemoryRead(_MobPointer(), $Open) = 0 Then
ControlSend ("4Story", "", 0, "{z}")
ControlSend ("4Story", "", 0, "{TAB}")
$AktuellesMob -= 1
ElseIf _MemoryRead(_MobPointer(), $Open) <> 0 Then
ControlSend ("4Story", "", 0, "{1}")
EndIf
EndIf
ElseIf $Gesamt = $BotStart Then
$BotStart = 0
EndIf
EndFunc
Es gibt unter anderem noch kleinere Bugs, aber das Grobe ist getan, nehmt einfach neue Pointer, ich habe keine Zeit welche zu finden !