#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=LordKill.ico
#AutoIt3Wrapper_outfile=Moblock-Extended.exe
#AutoIt3Wrapper_Res_Comment=Moblock
#AutoIt3Wrapper_Res_Description=Moblock
#AutoIt3Wrapper_Res_Fileversion=2.0.0.1
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_LegalCopyright=LordKill
#AutoIt3Wrapper_Add_Constants=n
#AutoIt3Wrapper_Run_Obfuscator=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.0.0
Author: LordKill
Script Function:
Moblock Extended
#ce ----------------------------------------------------------------------------
If ProcessExists("spiritmt2_ohne_patcher.exe") Then
Else
MsgBox(0,"Fehler","Bitte zuerst die aktuelle Metin2 Version starten.")
Exit
EndIf
#include <pointer.au3>
SetPrivilege("SeDebugPrivilege", 1)
#include <Memory2.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
;~ #include <GuiStatusBar.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $schaltermoblock = 0
Global $wintittel = "Moblock - Extended"
$pid = WinGetProcess("METIN2")
$openmem = _MemoryOpen($pid)
$baseadress = _MemoryModuleGetBaseAddress($pid,"metin2client.bin ")
$testoffset3 = "001F74FC"
$testoffset16 = "2C8"
$testoffset17 = "584"
$testoffset19 = "2C8"
$testoffset20 = "588"
;#############################################
;< Moblock >
;#############################################
$mobadr1 = "001F53F0"
;x´
$moboffsetx = "584"
;y
$moboffsety = "588"
$numberx = 0
Global $mobx[100]
For $i = 0 to UBound($mobx)-1
$mobx[$i] = Hex($numberx)
$numberx = $numberx + 4
Next
$numbery = 0
Global $moby[100]
For $i = 0 to UBound($moby)-1
$moby[$i] = Hex($numbery)
$numbery = $numbery + 4
Next
$MobXaddress = "0x" & Hex($baseadress + Dec($mobadr1))
Global $MobXOffset[100][3]
Global $MobYOffset[100][3]
For $i = 0 to UBound($mobx)-1
$MobXOffset[$i][0] = 0
$MobXOffset[$i][1] = Dec($mobx[$i])
$MobXOffset[$i][2] = Dec($moboffsetx)
$MobYOffset[$i][0] = 0
$MobYOffset[$i][1] = Dec($mobx[$i])
$MobYOffset[$i][2] = Dec($moboffsety)
Next
Global $XOffset[3]
$XOffset[0] = 0
$XOffset[1] = Dec($testoffset16)
$XOffset[2] = Dec($testoffset17)
$Xaddress = "0x" & Hex($baseadress + Dec($testoffset3))
$Xmemread = _MemoryPointerRead($Xaddress, $openmem, $XOffset, "float")
$Xwert = Round($Xmemread[1]/100)
Global $YOffset[3]
$YOffset[0] = 0
$YOffset[1] = Dec($testoffset19)
$YOffset[2] = Dec($testoffset20)
$Yaddress = "0x" & Hex($baseadress + Dec($testoffset3))
$Ymemread = _MemoryPointerRead($Yaddress, $openmem, $YOffset, "float")
$Ywert = Round($Ymemread[1]/100)
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$formx = (@DesktopWidth/2) - 136
$formy = (@DesktopHeight/2) - 95.5
$Form1 = GUICreate("Moblock - Extended", 272, 191,$formx, $formy, -1, BitOR($WS_EX_APPWINDOW,$WS_EX_TOOLWINDOW,$WS_EX_WI NDOWEDGE))
$Label1 = GUICtrlCreateLabel("", 8, 16, 100, 100,$WS_BORDER)
GUICtrlSetBkColor(-1,0x00CC00 )
Global $label[UBound($mobx)]
For $i = 0 to UBound($mobx)-1
$label[$i] = GUICtrlCreateLabel("",54,66,2,2)
GUICtrlSetBkColor(-1,0xEE2C2C)
GUICtrlSetState(-1, $GUI_HIDE)
Global $MobxOffset2[3]
$MobXOffset2[0] = 0
$MobXOffset2[1] = $MobXOffset[$i][1]
$MobXOffset2[2] = $MobXOffset[$i][2]
Global $MobyOffset2[3]
$MobYOffset2[0] = 0
$MobYOffset2[1] = $MobYOffset[$i][1]
$MobYOffset2[2] = $MobYOffset[$i][2]
$readmobx = _MemoryPointerRead($mobXaddress, $openmem, $MobxOffset2, "float")
$readmoby = _MemoryPointerRead($mobXaddress, $openmem, $MobyOffset2, "float")
if $readmobx[1] > 900 and $readmobx[1] < 200000 Then
GUICtrlSetState($label[$i],$GUI_SHOW)
GUICtrlSetPos($label[$i],54,66,2,2)
EndIf
Next
$you = GUICtrlCreateLabel("",53,65,4,4)
GUICtrlSetBkColor(-1,0x0F0F0F)
$Button1 = GUICtrlCreateButton("An", 160, 16, 91, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1,"_start")
$Slider1 = GUICtrlCreateSlider(8, 136, 254, 29, BitOR($TBS_AUTOTICKS,$TBS_NOTICKS,$TBS_FIXEDLENGTH ,$WS_BORDER))
GUICtrlSetData(-1,0)
GUICtrlSetLimit(-1,99,0)
$Button2 = GUICtrlCreateButton("Hilfe", 160, 48, 91, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1,"_help")
$Button3 = GUICtrlCreateButton("Beenden", 160, 80, 91, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1,"_exit")
GUISetOnEvent($GUI_EVENT_CLOSE,"_exit")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$Xmemread = _MemoryPointerRead($Xaddress, $openmem, $XOffset, "float")
$Xwert = Round($Xmemread[1]/100)
$Ymemread = _MemoryPointerRead($Yaddress, $openmem, $YOffset, "float")
$Ywert = Round($Ymemread[1]/-100)
If _MouseOver(53,65,3,3) = 1 Then
ToolTip("X:"& $Xwert &"Y:" & $Ywert )
else
ToolTip("")
EndIf
if $schaltermoblock = 1 Then
$readslider = GUICtrlRead($Slider1)
$readslider = 100-$readslider
For $i = $readslider to UBound($mobx)-1
Global $MobxOffset2[3]
$MobXOffset2[0] = 0
$MobXOffset2[1] = $MobXOffset[$i][1]
$MobXOffset2[2] = $MobXOffset[$i][2]
Global $MobyOffset2[3]
$MobYOffset2[0] = 0
$MobYOffset2[1] = $MobYOffset[$i][1]
$MobYOffset2[2] = $MobYOffset[$i][2]
$readmobx = _MemoryPointerRead($mobXaddress, $openmem, $MobxOffset2, "float")
$readmoby = _MemoryPointerRead($mobXaddress, $openmem, $MobyOffset2, "float")
if $readmobx[1] > 900 and $readmobx[1] < 200000 Then
$readx = _MemoryPointerRead($Xaddress, $openmem, $XOffset, "float")
$ready = _MemoryPointerRead($Yaddress, $openmem, $YOffset, "float")
_MemoryPointerWrite($mobXaddress, $openmem, $MobxOffset2, $readx[1], "float")
_MemoryPointerWrite($mobXaddress, $openmem, $MobyOffset2, $ready[1], "float")
EndIf
Next
EndIf
For $i = 0 to UBound($mobx)-1
Global $MobxOffset2[3]
$MobXOffset2[0] = 0
$MobXOffset2[1] = $MobXOffset[$i][1]
$MobXOffset2[2] = $MobXOffset[$i][2]
Global $MobyOffset2[3]
$MobYOffset2[0] = 0
$MobYOffset2[1] = $MobYOffset[$i][1]
$MobYOffset2[2] = $MobYOffset[$i][2]
$readmobx = _MemoryPointerRead($mobXaddress, $openmem, $MobxOffset2, "float")
$readmoby = _MemoryPointerRead($mobXaddress, $openmem, $MobyOffset2, "float")
$readx = _MemoryPointerRead($Xaddress, $openmem, $XOffset, "float")
if $readmobx[1] > 900 and $readmobx[1] < 200000 and $readmobx[1] <> $readx[1] Then
$readx = _MemoryPointerRead($Xaddress, $openmem, $XOffset, "float")
$ready = _MemoryPointerRead($Yaddress, $openmem, $YOffset, "float")
$ergebnisx = $readx[1] - $readmobx[1]
$ergebnisx = $ergebnisx/200
$ergebnisy = $ready[1] - $readmoby[1]
$ergebnisy = $ergebnisy/200
If _MouseOver($ergebnisx, $ergebnisy,2,2) = 1 Then
ToolTip("X:"& $readmobx[1] &"Y:" & $readmoby[1] )
else
ToolTip("")
EndIf
GUICtrlSetState($label[$i],$GUI_SHOW)
GUICtrlSetPos($label[$i],54 - $ergebnisx,66 - $ergebnisy,2,2)
Else
GUICtrlSetState($label[$i],$GUI_HIDE)
EndIf
Next
WEnd
Func _start()
if $schaltermoblock = 0 Then
$schaltermoblock = 1
GUICtrlSetData($Button1,"AUS")
Else
$schaltermoblock = 0
GUICtrlSetData($Button1,"AN")
EndIf
EndFunc
Func _help()
MsgBox(0,"Help","Ein Moblock, welcher über eine gewisse Bandbreite verfügt. Diese ist durch den Regler einstellbar.")
EndFunc
Func _exit()
Exit
EndFunc
Func _MouseOver($_mo_x, $_mo_y, $_mo_width, $_mo_height)
If WinActive($wintittel) = 1 Then
$_mo_pos = GUIGetCursorInfo()
If WinActive($wintittel) And ($_mo_pos[0] > $_mo_x) and ($_mo_pos[0] < $_mo_x + $_mo_width) and ($_mo_pos[1] > $_mo_y) and ($_mo_pos[1] < $_mo_y + $_mo_height) Then
Return 1
Else
Return 0
EndIf
EndIf
EndFunc