points, kills shit) but its much safer as MUCH MUCH less people have it.
I managed to decompile the .exe and essentially de-obfuscate the code and remove the parts in which you had to enter your 'thermkey' and then it forced your client to authenticate your unique 'thermkey' with his server.
I then recompiled it.
There is a readme included and i suggest you read it.
From my over zealous scanning / reversing i found no malicious code. That said, i still suggest you hex it yourself to be sure (Or at least scan it)
Link to scanners:


Link to file

This Bot is coded in AUTOIT therefore some virus scanners (Due to heuristics) might pick it up; its a false positive.
HERE IS THE SOURCE, COMPILE IT FOR YOUR OWN SAFETY OR DOWNLOAD WITH THE LINK PROVIDED
Code:
#Region;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_outfile=..\..\Scripts\Thermo.exe #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Allow_Decompile=n #AutoIt3Wrapper_Run_Obfuscator=n #EndRegion;**** Directives created by AutoIt3Wrapper_GUI **** ; ---------------------------------------------------------------------------- ; ---------------------------------------------------------------------------- ; ; Author: ; Malu05 aka. Mads Hagbart Lund <> ; ; Script Function: ; Thermo Prime - A Automated Movement Script for wow. ; ; ; ---------------------------------------------------------------------------- ; ---------------------------------------------------------------------------- ; About Project Thermo: ; A Memory Reading Automated Movement Script for World Of Warcraft. ; Developed to be fully indenpendet. ; ---------------------------------------------------------------------------- ; |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ;Includes #include <GUIConstants.au3> #include <String.au3> #include <Date.au3> #include <array.au3> #include <Math.au3> #include <File.au3> #include <_XMLDomWrapper.au3> #include <NomadMemory.au3> #include <File.au3> ;Hotkeys HotKeySet("{ESC}", "terminate") HotKeySet("{F2}", "RunTheBot") ;hotkeyset("{F3}","Pause") - Implant soon... HotKeySet("{F4}", "SaveDestination") HotKeySet("{F5}", "SaveDestination_Ghost") ;;============================================================================== = ;;Variable Definition; ;;============================================================================== = ;;App $App_name = "Thermo Prime";Main Name of the application $App_version = "3.1";Version Number of the Application $App_Title = ($App_name & " v" & $App_version & " -Full version Enabled-" & " Cracked By DiEsIeL");Final Name of Process ;Files Global $WowProcessName = "World of Warcraft";Name of the process (CASE SENSITIVE!!! FIX FOR YOUR VERSION) Global $logname = "/Progress.log";Name of the logfile ;; Usual Config Dim $RatioConvertion = "100" Dim $slowdistance = "1" Dim $TimeBeforeJump = "4000";ms before starting to jump over a obstecle Dim $TimeBeforeReverse = "10000";ms before going back to previous waypoint Dim $walkkey = "{NUMLOCK}";Not used ;others Global $wait, $running, $MouseDown, $taskset, $rot_perfect = 0;MouseDown is 1 when the mouse is down, and 0 when not Dim $cmdtabel = 0;When running the bot it will automaticly go to the first CASE in the CMDTable Global $CurrentCheck = 1;Is 1 when its first time a check is being made Dim $dubblecheckPos Dim $Overllrot, $OverllLocX, $OverllLocY, $OverllZone, $CurrentRot, $CurrentLocX, $CurrentLocY, $continentID, $lastX, $lastY, $debug, $toposX, $toposY, $result = 0 Dim $dubblecheckPos, $ycheck, $slow, $move_x_big, $move_y_big, $rot_perfect, $rot_fast, $down, $XCurBigger, $YCurBigger, $jtdif, $jtstart = 0 Dim $checkagain = 0 Global $arraynumber = "0" Dim $array_x_number = "0" Global $pi = 4 * ATan(1) Dim $Xstart, $Ystart = 0 Global $pasedborder = 0 Dim $jumptimerwalk, $deathNY = 0 $alive = 1 ;for XML Process Global $xmlFile;Name of the XML File open Dim $test_pause = 0 $ATTRIBS = _ArrayCreate("Continent", "Zone", "Nr", "posX", "posY", "Comment") $CHILDATTRIBS = _ArrayCreate("Continent", "Zone", "Nr", "posX", "posY", "Comment") Global $xmlFile Global $count = 0 Global $sNxPath, $fHwnd Global $ARRAY[1][1] Global $ARRAYX Global $ARRAYY Local $additional = 1 Local $numb = 0001 Dim $corpselocX, $releasecorpse, $corpselocY = 0 ;for XML Process __ for save waypoint Local $szXPath1, $szXPath2, $aNodeName1, $aNodeName2, $find, $oXSD, $iNodeCount, $aAttrName1[1], $aAttrVal1[1], $aAttrName2[1], $aAttrVal2[1], $ret_val, $X Opt("WinTitleMatchMode", 4) Global $ProcessID = WinGetProcess($WowProcessName, "") SetPrivilege ("SeDebugPrivilege", 1) If $ProcessID = -1 Then MsgBox(4096, "Thermo Prime - ERROR", "Failed to detect World of Warcraft running.") Exit EndIf _FileWriteLog(@ScriptDir & $logname, ":::Start Of Session:::") ;;============================================================================== = ;;GUI; ;;============================================================================== = ;Window GUICreate($App_Title, 500, 250) GUISetState(@SW_SHOW) ;Buttons $Button_SelectProfile = GUICtrlCreateButton("Select Profile", 100, 10, 100) $Button_NewProfile = GUICtrlCreateButton("New Profile", 100, 40, 100) ;Labels $FinalCharname = GUICtrlCreateLabel("Charname", 10, 10, 70, 20, ($SS_SUNKEN)) $Finallocx = GUICtrlCreateLabel("Position X", 10, 40, 70, 20, ($SS_SUNKEN)) $Finallocy = GUICtrlCreateLabel("Position Y", 10, 70, 70, 20, ($SS_SUNKEN)) $Finalrot = GUICtrlCreateLabel("Rotation", 10, 100, 70, 20, ($SS_SUNKEN)) $Finalrandom = GUICtrlCreateLabel("ZoneID", 10, 130, 70, 20, ($SS_SUNKEN)) ;Labels_debug $DebugID = GUICtrlCreateLabel("StatusID", 5, 210, 120, 20, ($SS_SUNKEN)) $RotationID = GUICtrlCreateLabel("RotationID", 5, 190, 120, 20, ($SS_SUNKEN)) ;Checkbox $debugcheck = GUICtrlCreateCheckbox("Debug Mode", 5, 230, 160, 20) $combatmode = GUICtrlCreateCheckbox("Combat Mode", 180, 230, 260, 20) ;WinSetOnTop($App_Title, "", 1) - Implant soon... SmartBehavior() ;;============================================================================== = ;;THERMO START! ;;============================================================================== = Func SmartBehavior() While $wait = 0 ;Check GUI for userinput $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit 0 Case $msg = $Button_SelectProfile SelectOpenXML() Case $msg = $Button_NewProfile NewProfile() EndSelect ;Check if wow is running If WinActive("World of Warcraft") Then If $xmlFile = "" Then Sleep(10) MsgBox(0, "Thermo Prime - ERROR", "You have not selected a XML File! Please press the [Select Profile] button and select a profile before running") WinWaitActive($App_Title) Else _FileWriteLog(@ScriptDir & $logname, "World Of Warcraft process opned") Sleep(20) Send("{Enter}") Sleep(11) ClipPut("/script DEFAULT_CHAT_FRAME:AddMessage(""" & $App_name & " v" & $App_version & " is running!! "",0.0,0.0,1.0); ") Sleep(11) Send("^v") Sleep(11) Send("{Enter}") $wait = 1 EndIf EndIf WEnd ;Start the bot----------------- While 1 Cmdtable() WEnd EndFunc ;==>SmartBehavior ;;============================================================================== = ;;Command Table; ;;============================================================================== = Func Cmdtable();;Command Table for functions, this table can be used for configuring the steps of the bots behaviour $debug = GUICtrlRead($debugcheck) Switch $cmdtabel Case 0 ;ControlSetText($App_Title, "", $DebugID, "0-GetCurrentData") GetCurrentData() Case 1 ControlSetText($App_Title, "", $DebugID, "1-EventCalculation" & $array_x_number);these are for debuggin - Remove soon... EventCalculation() Case 2 ControlSetText($App_Title, "", $DebugID, "2-CheckRotation") _FileWriteLog(@ScriptDir & $logname, "checkRotation" & $taskset) CheckRotation() Case 3 ControlSetText($App_Title, "", $DebugID, "3-GoToPos") _FileWriteLog(@ScriptDir & $logname, "Gotopos") GoToPos() Case 4 ControlSetText($App_Title, "", $DebugID, "4-Dubblecheck") _FileWriteLog(@ScriptDir & $logname, "dualchecl") Dubblecheck() Case 5 ControlSetText($App_Title, "", $DebugID, "5-runbot") _FileWriteLog(@ScriptDir & $logname, "runbot") RunBot() EndSwitch Return EndFunc ;==>Cmdtable ;;============================================================================== = ;;GetCurrentData; ;;============================================================================== = Func GetCurrentData();Read data from memory If $CurrentCheck = 1 Then MemoryLoop() EndIf If $dubblecheckPos = 1 Then $cmdtabel = 4;Next step = 4 Dubblecheck() Return Else $cmdtabel = 1;Next step = EvenCalculation() Return EndIf EndFunc ;==>GetCurrentData ;;============================================================================== = ;;EvenCalculation; ;;============================================================================== = Func EventCalculation();With the info from GetCurrentData calculate what to do If $deathNY = 0 Then If $alive = 1 Then $alive = 0 $corpselocX = $CurrentLocX $corpselocY = $CurrentLocY Sleep(20) Send("{Enter}") Sleep(11) ClipPut("/script RepopMe()") Sleep(11) Send("^v") Sleep(11) Send("{Enter}") EndIf EndIf If $running = "1" Then If $CurrentLocX = $toposX Then If $CurrentLocY = $toposY Then $running = "0" $checkagain = 0 $dubblecheckPos = 0 $cmdtable = 5 $rot_perfect = 0 Return;Next step = GetCurrentData() EndIf EndIf ;$cmdtable = 5 ;$rot_perfect = 0 ;Return;Next step = GetCurrentData() EndIf If $pasedborder = 1 Then $running = "0" $checkagain = 0 $dubblecheckPos = 0 $cmdtable = 5 $rot_perfect = 0 Return;Next step = GetCurrentData() EndIf If $taskset = 1 Then _FileWriteLog(@ScriptDir & $logname, "Data recived from game; Rotation=" & $CurrentRot & ". PositionX=" & $CurrentLocX & ". PositionY=" & $CurrentLocY & ".") $cmdtabel = 2;Next step = CheckRotation() Return EndIf If $rot_perfect = 1 Then $cmdtabel = 3;Next step = GoToPos() Return EndIf $cmdtabel = 0;Next step = GetCurrentData() Return EndFunc ;==>EventCalculation ;;============================================================================== = ;;CheckRotation ;;============================================================================== = Func CheckRotation() If $debug = 1 Then Send("{Enter}") Sleep(200) ClipPut("Current = " & $CurrentRot & " result= " & $result) Send("^v") Sleep(200) Send("{Enter}") EndIf $jtstart = "0" $jumptimerwalk = "0" $lastX = "0" $lastY = "0" $windowsize = WinGetPos($WowProcessName) MouseMove((($windowsize[2] / 2) + $windowsize[0]), (($windowsize[3] / 2) + $windowsize[1]), 0) While $taskset = 1 MemoryLoop() Rotationfix() $Rot_Smallest = _Min($CurrentRot, $result) $Rot_Biggest = _Max($CurrentRot, $result) If $CurrentRot = $Rot_Biggest Then If ($CurrentRot - $result) < 190 Then $down = 1 If ($CurrentRot - $result) < 50 Then $rot_fast = 0 If ($CurrentRot - $result) < 9 Then $rot_fast = 2 EndIf Else $rot_fast = 1 EndIf Else $down = 0 If (($result + 360) - $CurrentRot) < 50 Then $rot_fast = 0 If (($result + 360) - $CurrentRot) < 9 Then $rot_fast = 2 EndIf Else $rot_fast = 1 EndIf EndIf Else If ($result - $CurrentRot) < 190 Then $down = 0 If ($result - $CurrentRot) < 50 Then $rot_fast = 0 If ($result - $CurrentRot) < 9 Then $rot_fast = 2 EndIf Else $rot_fast = 1 EndIf Else $down = 1 If (($CurrentRot + 360) - $result) < 50 Then $rot_fast = 0 If (($CurrentRot + 360) - $result) < 9 Then $rot_fast = 2 EndIf Else $rot_fast = 1 EndIf EndIf EndIf If $CurrentLocX = $toposX Then If $CurrentLocY = $toposY Then $cmdtabel = 5;Next step = GetCurrentData() $rot_perfect = 1 $taskset = 0 Return;Next step = GetCurrentData() EndIf EndIf MouseDown("right") If $rot_fast = 1 Then If $down = 0 Then ;MouseDown("right") _MouseMovePlus(-20, 0) Sleep(10) Else ;MouseDown("right") _MouseMovePlus(20, 0) Sleep(10) EndIf EndIf If $rot_fast = 0 Then If $down = 0 Then MouseDown("right") _MouseMovePlus(-10, 0) Sleep(10) ;sleep(200) Else ;MouseDown("right") _MouseMovePlus(10, 0) Sleep(10) EndIf EndIf If $rot_fast = 2 Then If $down = 0 Then ;MouseDown("right") _MouseMovePlus(-2, 0) Sleep(10) ;sleep(200) Else ;MouseDown("right") _MouseMovePlus(2, 0) Sleep(10) EndIf EndIf ;Update Rotation Data MemoryLoop() Rotationfix() If Floor($CurrentRot) = Floor($result) Then MouseUp("right") $taskset = 0 Sleep(200) EndIf WEnd _FileWriteLog(@ScriptDir & $logname, "Rotation Complete; CurrentRotation=" & $CurrentRot & ". FinalRotation=" & $result & ".") MouseUp("right") $cmdtabel = 0;Next step = GetCurrentData() $rot_perfect = 1 $taskset = 0 Return EndFunc ;==>CheckRotation ;;============================================================================== = ;;GoToPos ;;============================================================================== = Func GoToPos() ; [Find The Coordinate Place] If $toposX <= $Xstart Then $XCurBigger = 1 Else $XCurBigger = 0 EndIf If $toposY <= $Ystart Then $YCurBigger = 1 Else $YCurBigger = 0 EndIf $distance = _Max(($CurrentLocX + $CurrentLocY), ($toposX + $toposY)) - _Min(($CurrentLocX + $CurrentLocY), ($toposX + $toposY)) ; [/Find The Coordinate Place] Send("{w down}") While $rot_perfect = 1 ;For Jump Timer $lastX = $CurrentLocX $lastY = $CurrentLocY ; [Gather Position Data From WoW] MemoryLoop() ;[Tjek Data] ;Jump Timer (if the player stays too long at the same location it will start jumping, and short after return to previous waypoint.) If $lastX = $CurrentLocX Then If $lastY = $CurrentLocY Then If $jtstart = 0 Then $jumptimerwalk = TimerInit() $jtstart = 1 EndIf $jtdif = TimerDiff($jumptimerwalk) ControlSetText($App_Title, "", $RotationID, "TimerLoc:" & $lastX & "," & $lastY & " t:" & Floor($jtdif)) If $jtdif > $TimeBeforeReverse Then;For Going Back One Step in the Waypoint Section If $deathNY = 0 Then If $alive = 1 Then $alive = 0 $corpselocX = $CurrentLocX $corpselocY = $CurrentLocY Sleep(20) Send("{Enter}") Sleep(11) ClipPut("/script RepopMe()") Sleep(11) Send("^v") Sleep(11) Send("{Enter}") EndIf EndIf _FileWriteLog(@ScriptDir & $logname, "Could not reach the desired destination; waypoint: " & $array_x_number & ", retrying from last waypoint. RP=" & $jtdif) $array_x_number = $array_x_number - 1 $cmdtabel = 5;Next step = Save_test() $jtstart = 0 ;send ("{w down}") Send("{w}") Return EndIf If $jtdif > $TimeBeforeJump Then;For Basic Jump after X Secounds _FileWriteLog(@ScriptDir & $logname, "Suspected stuck trying to reach; waypoint: " & $array_x_number & ", attempting jump procedure. RP=" & $jtdif) Send("{w up}") Sleep(20) Send("{space}") Sleep(100) Send("{w down}") EndIf Else $jumptimerwalk = 0 $jtstart = 0 $jtdif = 0 EndIf Else $jumptimerwalk = 0 $jtstart = 0 $jtdif = 0 EndIf ;[Tjek Data] If _Max(($CurrentLocX + $CurrentLocY), ($toposX + $toposY)) - _Min(($CurrentLocX + $CurrentLocY), ($toposX + $toposY)) > $distance Then $cmdtabel = 0;Next step = Save_test() Send("{w}") $dubblecheckPos = 1 $cmdtable = 0 $rot_perfect = 0 $pasedborder = 1 Return EndIf If $XCurBigger = 0 Then If $CurrentLocX >= $toposX Then ;send ("{w down}") $dubblecheckPos = 1 $cmdtable = 0 $rot_perfect = 0 $pasedborder = 1 Return;Next step = GetCurrentData() EndIf EndIf If $XCurBigger = 1 Then If $CurrentLocX <= $toposX Then If $YCurBigger = 1 Then If $CurrentLocY <= $toposY Then ;send ("{w down}") $dubblecheckPos = 1 $cmdtable = 0 $rot_perfect = 0 $pasedborder = 1 Return;Next step = GetCurrentData() EndIf EndIf If $YCurBigger = 0 Then If $CurrentLocY >= $toposY Then ;send ("{w down}") $dubblecheckPos = 1 $cmdtable = 0 $rot_perfect = 0 $pasedborder = 1 Return;Next step = GetCurrentData() EndIf EndIf EndIf EndIf If $YCurBigger = 0 Then If $CurrentLocY >= $toposY Then ;send ("{w down}") $dubblecheckPos = 1 $cmdtable = 0 $rot_perfect = 0 $pasedborder = 1 Return;Next step = GetCurrentData() EndIf EndIf If $YCurBigger = 1 Then If $CurrentLocY <= $toposY Then If $XCurBigger = 0 Then If $CurrentLocX >= $toposX Then ;send ("{w down}") $dubblecheckPos = 1 $cmdtable = 0 $rot_perfect = 0 $pasedborder = 1 Return;Next step = GetCurrentData() EndIf EndIf If $XCurBigger = 1 Then If $CurrentLocX <= $toposX Then ;send ("{w down}") $dubblecheckPos = 1 $cmdtable = 0 $rot_perfect = 0 $pasedborder = 1 Return;Next step = GetCurrentData() EndIf EndIf EndIf EndIf ControlSetText($App_Title, "", $DebugID, "3-GoToPos:" & $toposX & "," & $toposY) WEnd If $debug = 1 Then Send("{Enter}") Sleep(200) ClipPut("Error") Send("^v") Sleep(200) Send("{Enter}") EndIf ;send ("{w up}") $cmdtabel = 0;Next step = GetCurrentData() Return EndFunc ;==>GoToPos ;;============================================================================== = ;;Dubblecheck() ;;============================================================================== = Func Dubblecheck() If $CurrentLocX <= ($toposX + 1) And $CurrentLocX >= ($toposX - 1) Then If $CurrentLocY <= ($toposY + 1) And $CurrentLocY >= ($toposY - 1) Then $dubblecheckPos = 0 $taskset = 0 $rot_perfect = 0 $cmdtabel = 0 ;send("{´}") $slow = 0 If ($ARRAY[4][($ARRAYY - $arraynumber) + 0]) = $arraynumber Then $checkagain = 1 MsgBox(0, "error", "error") Return Else $cmdtabel = 5 $checkagain = 0 _FileWriteLog(@ScriptDir & $logname, "Succes Reaching waypoint: " & $array_x_number & " check" & $CurrentLocX & "=" & $toposX & " . " & $CurrentLocY & "=" & $toposY) If $deathNY = 0 Then If $releasecorpse = 1 Then Send("{Enter}") Sleep(11) ClipPut("/script RetrieveCorpse()") Sleep(11) Send("^v") Sleep(11) Send("{Enter}") $alive = 1 EndIf EndIf Return EndIf EndIf EndIf $checkagain = 1 $dubblecheckPos = 0 $cmdtabel = 5;Next step = EvenCalculation() Send("{w up}") Return EndFunc ;==>Dubblecheck ;;============================================================================== = ;;Runbot; ;;============================================================================== = Func RunBot() ;msgbox(0,"LOL",$toposX & " " & $toposY & " <- " & $CurrentLocX & " " & $CurrentLocY) $running = "1" If $checkagain = 0 Then ;;For repeat (if the current number goes beyond the last array it will set to 1) If $deathNY = 1 Then If ($array_x_number) = ($ARRAYY) Then $array_x_number = 0 Return EndIf EndIf $array_x_number = $array_x_number + 1 EndIf If $deathNY = 0 Then If ($array_x_number) = ($ARRAYY) Then Send("{Enter}") Sleep(11) ClipPut("/script RetrieveCorpse()") Sleep(11) Send("^v") Sleep(11) Send("{Enter}") Sleep(20) If $deathNY = 1 Then $alive = 1 $array_x_number = 0 Else $posx2 = $CurrentLocX $posy2 = (($CurrentLocY / "100") * $RatioConvertion) $toposX = $corpselocX $toposY = $corpselocY $posx1 = $corpselocX $posy1 = (($corpselocY / "100") * $RatioConvertion) $releasecorpse = 1 MsgBox(0, "test", $corpselocX & " " & $corpselocY) $radToDeg = -180 / $pi $result = ATan(($posy1 - $posy2) / ($posx2 - $posx1)) * $radToDeg If $posx2 < $posx1 Then If $result < 0 Then $result = 270 + $result Else $result = 270 + $result EndIf EndIf If $posx2 >= $posx1 Then If $result < 0 Then $result = 90 + $result Else $result = 90 + $result EndIf EndIf $result = $result - 360 $result = Floor(($result - $result) - $result) If $result = "360" Then $result = 0 $cmdtabel = 0 $taskset = 1 $pasedborder = 0 $cmdtable = 1 EndIf Return;Next step = GetCurrentData() EndIf EndIf ;; If the Current number is 0 it will go to the last waypoint to make it backwoards compatible. If $array_x_number = 0 Then $array_x_number = $ARRAYY EndIf _FileWriteLog(@ScriptDir & $logname, "Processing Destination Waypoint; " & $array_x_number & ".") If $debug = 1 Then Send("{Enter}") Sleep(200) ClipPut("1 = " & $array_x_number) Sleep(20) Send("^v") Sleep(200) Send("{Enter}") EndIf If $deathNY = 1 Then $szXPath1 = "//DATAPACKET/METADATA/FIELDS" $szXPath2 = "//DATAPACKET/ROWDATA" Else $szXPath1 = "//DATAPACKET/METADATA/FIELDS" $szXPath2 = "//DATAPACKET/ROWGHOST" Secureghost() ;$array_x_number = 0 EndIf ;; If the Current number is 0 it will go to the last waypoint to make it backwoards compatible. ;if $array_x_number = 0 Then ; $array_x_number = $ARRAYY ; EndIf ReDim $ARRAY[$ARRAYX][$ARRAYY + 1] ;TrayTip("Position Manager", $ARRAYY & " Nodes Loaded...", 5, 1) $aNodeName1 = _XMLGetChildNodes ($szXPath1) $aNodeName2 = _XMLGetChildNodes ($szXPath2) If $aNodeName1 <> -1 Then ;LOOP THROUGH //DATAPACKET/METADATA/FIELDS For $find = 1 To $aNodeName1[0] _XMLGetAllAttrib ($szXPath1 & "/*" & '[' & $find & ']', $aAttrName1, $aAttrVal1) ;ADD TO ARRAY $ARRAY[$find - 1][0] = $aAttrVal1[0] ;LOOP THROUGH //DATAPACKET/ROWDATA For $X = 1 To $aNodeName2[0] _XMLGetAllAttrib ($szXPath2 & "/*" & '[' & $X & ']', $aAttrName2, $aAttrVal2) ;ONLY APPEND IF CURRENT FIELD NIMBER IS LESS THAN NUMBER OF ATTRIBS FOUND IN EACH ROW If $find <= UBound($aAttrName2) Then ;msgbox(0,"hej",$find & " X= " & $X & " att " &$aNodeName2[0] & " AN= " & $aNodeName1[0] & " " & $aAttrVal2[$find-1]) Secureghost() $ARRAY[$find - 1][$X] = $aAttrVal2[$find - 1] EndIf Next Next Else MsgBox(0, "Error:", "No nodes found for " & $szXPath1) EndIf ;if $array_x_number = ($ARRAYY+1) Then ; $array_x_number = $array_x_number - 1 ; EndIf $posx2 = $CurrentLocX $posy2 = (($CurrentLocY / "100") * $RatioConvertion) $posx1 = $ARRAY[3][$array_x_number] $posy1 = ((($ARRAY[4][$array_x_number]) / "100") * $RatioConvertion) $toposX = $ARRAY[3][$array_x_number] $toposY = $ARRAY[4][$array_x_number] $checkagain = 1 ;if $deathNY = 0 Then ; if ($array_x_number+1) = ($ARRAYY) Then ; $toposX = $corpselocX ; $toposY = $corpselocY ; $posx1 = $corpselocX ; $posy1 = (($corpselocY/"100")*$RatioConvertion ) ; $releasecorpse = 1 ; msgbox(0,"test",$corpselocX & " " & $corpselocY) ; EndIf ;EndIf ;msgbox(0,"hej","$posx1=" & $posx1 & " " & "$posy1=" & $posy1 & " " & "$posx2=" &$posx2 & " " & "$posy2=" & $posy2 & " " & "$toposX=" &$toposX & " " & "$toposY=" & $toposY) _FileWriteLog(@ScriptDir & $logname, "Data From XML - " & $array_x_number & ". Destination pos: " & $toposX & "." & $toposY) If $debug = 1 Then Send("{Enter}") Sleep(200) ClipPut("1 = " & $ARRAY[3][1] & " 2 = " & $ARRAY[4][1] & " 3 =" & $array_x_number) Sleep(20) Send("^v") Sleep(200) Send("{Enter}") EndIf $radToDeg = -180 / $pi $result = ATan(($posy1 - $posy2) / ($posx2 - $posx1)) * $radToDeg If $posx2 < $posx1 Then If $result < 0 Then $result = 270 + $result Else $result = 270 + $result EndIf EndIf If $posx2 >= $posx1 Then If $result < 0 Then $result = 90 + $result Else $result = 90 + $result EndIf EndIf $result = $result - 360 $result = Floor(($result - $result) - $result) If $result = "360" Then $result = 0 $cmdtabel = 0 $taskset = 1 If $debug = 1 Then Send("{Enter}") Sleep(200) ClipPut("Current position = " & $CurrentLocX & "," & $CurrentLocY & " End Position = " & $toposX & "," & $toposY & " rotation calculated = " & $result) Sleep(20) Send("^v") Sleep(200) Send("{Enter}") EndIf $pasedborder = 0 $cmdtable = 1 Return;Next step = GetCurrentData() EndFunc ;==>RunBot ;;============================================================================== = ;;Runbot1; ;;============================================================================== = Func RunTheBot() If $test_pause = 0 Then $oXSD = _XMLFileOpen ($xmlFile, "") ;If @error Or $oXSD < 1 Then ; MsgBox(0, "Error", "There was an error opening the file " & $xmlFile) ; $oXSD = 0 ; _FileWriteLog(@ScriptDir & $logname,"Error Opning XMLFile - Ending Session") ; _FileWriteLog(@ScriptDir & $logname,":::End Of Session:::") ; Exit ;EndIf If $deathNY = 1 Then $szXPath1 = "//DATAPACKET/METADATA/FIELDS" $szXPath2 = "//DATAPACKET/ROWDATA" Else $szXPath1 = "//DATAPACKET/METADATA/FIELDS" $szXPath2 = "//DATAPACKET/ROWGHOST" $array_x_number = 0 EndIf $ARRAYX = _XMLGetNodeCount ($szXPath1 & "/*") $ARRAYY = _XMLGetNodeCount ($szXPath2 & "/*") $additional = $ARRAYY ;ReDim $ARRAY[$ARRAYX][$ARRAYY+1] If $ARRAYY < 0 Then $ARRAYY = 0 TrayTip("Position Manager", $ARRAYY & " Nodes Loaded...", 5, 1) $aNodeName1 = _XMLGetChildNodes ($szXPath1) $aNodeName2 = _XMLGetChildNodes ($szXPath2) If $aNodeName1 <> -1 Then ;LOOP THROUGH //DATAPACKET/METADATA/FIELDS For $find = 1 To $aNodeName1[0] _XMLGetAllAttrib ($szXPath1 & "/*" & '[' & $find & ']', $aAttrName1, $aAttrVal1) ;ADD TO ARRAY ;$ARRAY[$find-1][0] = $aAttrVal1[0] ;LOOP THROUGH //DATAPACKET/ROWDATA ;For $X=1 To $aNodeName2[0] ; _XMLGetAllAttrib($szXPath2 & "/*" & '[' & $X & ']',$aAttrName2,$aAttrVal2) ;;ONLY APPEND IF CURRENT FIELD NIMBER IS LESS THAN NUMBER OF ATTRIBS FOUND IN EACH ROW ; If $find <= Ubound($aAttrName2) Then ; $ARRAY[$find-1][$X] = $aAttrVal2[$find-1] ; EndIf ;Next Next Else MsgBox(0, "Error:", "No nodes found for " & $szXPath1) EndIf ;$arraynumber = ($ARRAY[2][$ARRAYY]) $array_x_number = 0;$arraynumber $oXSD = 0 EndIf RunBot() EndFunc ;==>RunTheBot ;;============================================================================== = ;;Secure Ghost ;;============================================================================== = Func Secureghost() If $test_pause = 0 Then $oXSD = _XMLFileOpen ($xmlFile, "") ;If @error Or $oXSD < 1 Then ; MsgBox(0, "Error", "There was an error opening the file " & $xmlFile) ; $oXSD = 0 ; _FileWriteLog(@ScriptDir & $logname,"Error Opning XMLFile - Ending Session") ; _FileWriteLog(@ScriptDir & $logname,":::End Of Session:::") ; Exit ;EndIf If $deathNY = 1 Then $szXPath1 = "//DATAPACKET/METADATA/FIELDS" $szXPath2 = "//DATAPACKET/ROWDATA" Else $szXPath1 = "//DATAPACKET/METADATA/FIELDS" $szXPath2 = "//DATAPACKET/ROWGHOST" EndIf $ARRAYX = _XMLGetNodeCount ($szXPath1 & "/*") $ARRAYY = _XMLGetNodeCount ($szXPath2 & "/*") $additional = $ARRAYY ;ReDim $ARRAY[$ARRAYX][$ARRAYY+1] If $ARRAYY < 0 Then $ARRAYY = 0 TrayTip("Position Manager", $ARRAYY & " Nodes Loaded...", 5, 1) $aNodeName1 = _XMLGetChildNodes ($szXPath1) $aNodeName2 = _XMLGetChildNodes ($szXPath2) If $aNodeName1 <> -1 Then ;LOOP THROUGH //DATAPACKET/METADATA/FIELDS For $find = 1 To $aNodeName1[0] _XMLGetAllAttrib ($szXPath1 & "/*" & '[' & $find & ']', $aAttrName1, $aAttrVal1) ;ADD TO ARRAY ;$ARRAY[$find-1][0] = $aAttrVal1[0] ;LOOP THROUGH //DATAPACKET/ROWDATA ;For $X=1 To $aNodeName2[0] ; _XMLGetAllAttrib($szXPath2 & "/*" & '[' & $X & ']',$aAttrName2,$aAttrVal2) ;;ONLY APPEND IF CURRENT FIELD NIMBER IS LESS THAN NUMBER OF ATTRIBS FOUND IN EACH ROW ; If $find <= Ubound($aAttrName2) Then ; $ARRAY[$find-1][$X] = $aAttrVal2[$find-1] ; EndIf ;Next Next Else MsgBox(0, "Error:", "No nodes found for " & $szXPath1) EndIf ;$arraynumber = ($ARRAY[2][$ARRAYY]) $oXSD = 0 EndIf Return EndFunc ;==>Secureghost ;;============================================================================== = ;;MemoryLoop; ;;============================================================================== = Func MemoryLoop() ;Check if memory is accesible Local $DllInformation = _MemoryOpen ($ProcessID) If @error Then MsgBox(4096, "ERROR", "Failed to open memory.") Exit EndIf $CurrentCharname = _MemoryRead (0x00cbaa88, $DllInformation, 'char[11]') If @error Then MsgBox(4096, "ERROR", "Failed to read memory.") Exit EndIf $CurrentLocX = Floor(_MemoryRead (0x00D80228, $DllInformation, 'float')) If @error Then MsgBox(4096, "ERROR", "Failed to read memory.") Exit EndIf $CurrentLocY = Floor(_MemoryRead (0x00D81234, $DllInformation, 'float')) If @error Then MsgBox(4096, "ERROR", "Failed to read memory.") Exit EndIf $CurrentRot = _MemoryRead (0x00d80248, $DllInformation, 'float') If @error Then MsgBox(4096, "ERROR", "Failed to read memory.") Exit EndIf $continentID = _MemoryRead (0x008D5B20, $DllInformation, 'dword') If @error Then MsgBox(4096, "ERROR", "Failed to read memory.") Exit EndIf $deathNY = _MemoryRead (0x00C58FD0, $DllInformation, 'dword') If @error Then MsgBox(4096, "ERROR", "Failed to read memory.") Exit EndIf _MemoryClose ($DllInformation) ;Final Calculations $Xstart = $CurrentLocX $Ystart = $CurrentLocY $CurrentRot = Floor(($CurrentRot / (3.14159265358979 / 180))) ;Update GUI ControlSetText($App_Title, "", $FinalCharname, $CurrentCharname) ControlSetText($App_Title, "", $Finalrot, $CurrentRot) ControlSetText($App_Title, "", $Finallocx, $CurrentLocX) ControlSetText($App_Title, "", $Finallocy, $CurrentLocY) ControlSetText($App_Title, "", $Finalrandom, $continentID) EndFunc ;==>MemoryLoop ;;============================================================================== = ;;Rotationfix ;;============================================================================== = Func Rotationfix() $posx2 = $CurrentLocX $posy2 = (($CurrentLocY / "100") * $RatioConvertion) $posx1 = $ARRAY[3][$array_x_number] $posy1 = ((($ARRAY[4][$array_x_number]) / "100") * $RatioConvertion) $toposX = $ARRAY[3][$array_x_number] $toposY = $ARRAY[4][$array_x_number] $radToDeg = -180 / $pi $result = ATan(($posy1 - $posy2) / ($posx2 - $posx1)) * $radToDeg If $posx2 < $posx1 Then If $result < 0 Then $result = 270 + $result Else $result = 270 + $result EndIf EndIf If $posx2 >= $posx1 Then If $result < 0 Then $result = 90 + $result Else $result = 90 + $result EndIf EndIf $result = $result - 360 $result = Floor(($result - $result) - $result) If $result = "360" Then $result = 0 EndFunc ;==>Rotationfix ;;============================================================================== = ;;Select XML; ;;============================================================================== = Func SelectOpenXML() $xmlFile = FileOpenDialog("Open XML", @ScriptDir, "XML (*.XML)", 1) If @error Then MsgBox(4096, "Thermo Prime - File Open", "No file chosen, you must select a profile to be able to run the bot!") Else _FileWriteLog(@ScriptDir & $logname, "XML File Selected; " & $xmlFile) If $test_pause = 0 Then $oXSD = _XMLFileOpen ($xmlFile, "") ;If @error Or $oXSD < 1 Then ; MsgBox(0, "Error", "There was an error opening the file " & $xmlFile) ; $oXSD = 0 ; _FileWriteLog(@ScriptDir & $logname,"Error Opning XMLFile - Ending Session") ; _FileWriteLog(@ScriptDir & $logname,":::End Of Session:::") ; Exit ;EndIf $szXPath1 = "//DATAPACKET/METADATA/FIELDS" $szXPath2 = "//DATAPACKET/ROWDATA" $ARRAYX = _XMLGetNodeCount ($szXPath1 & "/*") $ARRAYY = _XMLGetNodeCount ($szXPath2 & "/*") $additional = $ARRAYY ;ReDim $ARRAY[$ARRAYX][$ARRAYY+1] If $ARRAYY < 0 Then $ARRAYY = 0 TrayTip("Position Manager", $ARRAYY & " Nodes Loaded...", 5, 1) $aNodeName1 = _XMLGetChildNodes ($szXPath1) $aNodeName2 = _XMLGetChildNodes ($szXPath2) If $aNodeName1 <> -1 Then ;LOOP THROUGH //DATAPACKET/METADATA/FIELDS For $find = 1 To $aNodeName1[0] _XMLGetAllAttrib ($szXPath1 & "/*" & '[' & $find & ']', $aAttrName1, $aAttrVal1) ;ADD TO ARRAY ;$ARRAY[$find-1][0] = $aAttrVal1[0] ;LOOP THROUGH //DATAPACKET/ROWDATA ;For $X=1 To $aNodeName2[0] ; _XMLGetAllAttrib($szXPath2 & "/*" & '[' & $X & ']',$aAttrName2,$aAttrVal2) ;;ONLY APPEND IF CURRENT FIELD NIMBER IS LESS THAN NUMBER OF ATTRIBS FOUND IN EACH ROW ; If $find <= Ubound($aAttrName2) Then ; $ARRAY[$find-1][$X] = $aAttrVal2[$find-1] ; EndIf ;Next Next Else MsgBox(0, "Error:", "No nodes found for " & $szXPath1) EndIf ;$arraynumber = ($ARRAY[2][$ARRAYY]) $array_x_number = 0;$arraynumber $oXSD = 0 EndIf Return EndIf Return EndFunc ;==>SelectOpenXML ;;============================================================================== = ;;Create New XML; ;;============================================================================== = Func NewProfile() $newprfname = InputBox("Thermo Prime - New Profile", "Enter Profile Name.", "", "", 20, 20) If @error Then MsgBox(4096, "Thermo Prime - New Profile", "No Profile Created") Else $newprfname = ($newprfname & ".xml") If FileExists($newprfname) Then $answer1 = MsgBox(4, "Thermo Prime - New Profile", "A profile with that name; " & $newprfname & " does allready exists. Do you want to overwrite this file?") If $answer1 = 6 Then FileDelete($newprfname) Else Return EndIf EndIf _FileCreate($newprfname) $file = FileOpen($newprfname, 1) FileWriteLine($newprfname, "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>") FileWriteLine($newprfname, "<DATAPACKET Version=""2.0"">") FileWriteLine($newprfname, " <METADATA>") FileWriteLine($newprfname, " <FIELDS>") FileWriteLine($newprfname, " <FIELD attrname=""Continent"" fieldtype=""i4""/>") FileWriteLine($newprfname, " <FIELD attrname=""Zone"" fieldtype=""i4""/>") FileWriteLine($newprfname, " <FIELD attrname=""Nr"" fieldtype=""i4""/>") FileWriteLine($newprfname, " <FIELD attrname=""posX"" fieldtype=""i4""/>") FileWriteLine($newprfname, " <FIELD attrname=""posY"" fieldtype=""i4""/>") FileWriteLine($newprfname, " <FIELD attrname=""Comment"" fieldtype=""string"" WIDTH=""20""/>") FileWriteLine($newprfname, " </FIELDS>") FileWriteLine($newprfname, " <PARAMS/>") FileWriteLine($newprfname, " </METADATA>") FileWriteLine($newprfname, " <ROWDATA>") FileWriteLine($newprfname, " </ROWDATA>") FileWriteLine($newprfname, " <ROWGHOST>") FileWriteLine($newprfname, " </ROWGHOST>") FileWriteLine($newprfname, "</DATAPACKET>") FileClose($newprfname) Return EndIf EndFunc ;==>NewProfile ;;============================================================================== = ;;SaveDestination; ;;============================================================================== = Func SaveDestination() If $test_pause = 0 Then $toposX = $CurrentLocX $toposY = $CurrentLocY $oXSD = _XMLFileOpen ($xmlFile, "") If @error Or $oXSD < 1 Then MsgBox(0, "Error", "There was an error opening the file " & $xmlFile) $oXSD = 0 _FileWriteLog(@ScriptDir & $logname, "Error Opening XMLFile- Ending Session") _FileWriteLog(@ScriptDir & $logname, ":::End Of Session:::") Exit EndIf $szXPath1 = "//DATAPACKET/METADATA/FIELDS" $szXPath2 = "//DATAPACKET/ROWDATA" $ARRAYX = _XMLGetNodeCount ($szXPath1 & "/*") $ARRAYY = _XMLGetNodeCount ($szXPath2 & "/*") If $ARRAYY = -1 Then $ARRAYY = 0 EndIf $additional = $ARRAYY ReDim $ARRAY[$ARRAYX][$ARRAYY + 1] TrayTip("Position Manager", $ARRAYY & " Nodes Loaded...", 5, 1) $aNodeName1 = _XMLGetChildNodes ($szXPath1) $aNodeName2 = _XMLGetChildNodes ($szXPath2) If $aNodeName1 <> -2 Then ;LOOP THROUGH //DATAPACKET/METADATA/FIELDS For $find = 1 To $aNodeName1[0] _XMLGetAllAttrib ($szXPath1 & "/*" & '[' & $find & ']', $aAttrName1, $aAttrVal1) ;ADD TO ARRAY $ARRAY[$find - 1][0] = $aAttrVal1[0] ;LOOP THROUGH //DATAPACKET/ROWDATA If $ARRAYY > 0 Then For $X = 1 To $aNodeName2[0] _XMLGetAllAttrib ($szXPath2 & "/*" & '[' & $X & ']', $aAttrName2, $aAttrVal2) ;ONLY APPEND IF CURRENT FIELD NIMBER IS LESS THAN NUMBER OF ATTRIBS FOUND IN EACH ROW If $find <= UBound($aAttrName2) Then $ARRAY[$find - 1][$X] = $aAttrVal2[$find - 1] EndIf Next EndIf Next Else MsgBox(0, "Error:", "No nodes found for " & $szXPath1) EndIf $arraynumber = ($ARRAY[2][$ARRAYY]) $array_x_number = 0;$arraynumber ;MsgBox(0, "hej", $ARRAY[2][$ARRAYY]);[$additional]) $oXSD = 0 $currentZone = 1 $numb = $ARRAY[2][$additional] $CHILDVALUES = _ArrayCreate($continentID, $currentZone, ($numb + 1), $toposX, $toposY, "For Testing") _XMLCreateChildWAttr ("//DATAPACKET/ROWDATA[1]", "ROW", $CHILDATTRIBS, $CHILDVALUES);by node index If $debug = 1 Then Send("{Enter}") Sleep(200) ClipPut("Waypoint - " & ($numb + 1) & " pos: " & $toposX & "." & $toposY) _FileWriteLog(@ScriptDir & $logname, "Waypoint - " & ($numb + 1) & ". Saves pos: " & $toposX & "." & $toposY) Sleep(20) Send("^v") Sleep(200) Send("{Enter}") EndIf EndIf Return EndFunc ;==>SaveDestination ;;============================================================================== = ;;SaveDestinationGhost; ;;============================================================================== = Func SaveDestination_Ghost() If $test_pause = 0 Then $toposX = $CurrentLocX $toposY = $CurrentLocY $oXSD = _XMLFileOpen ($xmlFile, "") If @error Or $oXSD < 1 Then MsgBox(0, "Error", "There was an error opening the file " & $xmlFile) $oXSD = 0 _FileWriteLog(@ScriptDir & $logname, "Error Opening XMLFile- Ending Session") _FileWriteLog(@ScriptDir & $logname, ":::End Of Session:::") Exit EndIf $szXPath1 = "//DATAPACKET/METADATA/FIELDS" $szXPath2 = "//DATAPACKET/ROWGHOST" $ARRAYX = _XMLGetNodeCount ($szXPath1 & "/*") $ARRAYY = _XMLGetNodeCount ($szXPath2 & "/*") If $ARRAYY = -1 Then $ARRAYY = 0 EndIf $additional = $ARRAYY ReDim $ARRAY[$ARRAYX][$ARRAYY + 1] TrayTip("Position Manager", $ARRAYY & " Nodes Loaded...", 5, 1) $aNodeName1 = _XMLGetChildNodes ($szXPath1) $aNodeName2 = _XMLGetChildNodes ($szXPath2) If $aNodeName1 <> -2 Then ;LOOP THROUGH //DATAPACKET/METADATA/FIELDS For $find = 1 To $aNodeName1[0] _XMLGetAllAttrib ($szXPath1 & "/*" & '[' & $find & ']', $aAttrName1, $aAttrVal1) ;ADD TO ARRAY $ARRAY[$find - 1][0] = $aAttrVal1[0] ;LOOP THROUGH //DATAPACKET/ROWDATA If $ARRAYY > 0 Then For $X = 1 To $aNodeName2[0] _XMLGetAllAttrib ($szXPath2 & "/*" & '[' & $X & ']', $aAttrName2, $aAttrVal2) ;ONLY APPEND IF CURRENT FIELD NIMBER IS LESS THAN NUMBER OF ATTRIBS FOUND IN EACH ROW If $find <= UBound($aAttrName2) Then $ARRAY[$find - 1][$X] = $aAttrVal2[$find - 1] EndIf Next EndIf Next Else MsgBox(0, "Error:", "No nodes found for " & $szXPath1) EndIf $arraynumber = ($ARRAY[2][$ARRAYY]) $array_x_number = 0;$arraynumber ;MsgBox(0, "hej", $ARRAY[2][$ARRAYY]);[$additional]) $oXSD = 0 $currentZone = 1 $numb = $ARRAY[2][$additional] $CHILDVALUES = _ArrayCreate($continentID, $currentZone, ($numb + 1), $toposX, $toposY, "For Testing") _XMLCreateChildWAttr ("//DATAPACKET/ROWGHOST[1]", "ROWGHOST", $CHILDATTRIBS, $CHILDVALUES);by node index If $debug = 1 Then Send("{Enter}") Sleep(200) ClipPut("Waypoint - " & ($numb + 1) & " pos: " & $toposX & "." & $toposY) _FileWriteLog(@ScriptDir & $logname, "Waypoint - " & ($numb + 1) & ". Saves pos: " & $toposX & "." & $toposY) Sleep(20) Send("^v") Sleep(200) Send("{Enter}") EndIf EndIf Return EndFunc ;==>SaveDestination_Ghost ;;============================================================================== = ;;MouseMovePlus (thx to Oxin8 for this code) ;;============================================================================== = Func _MouseMovePlus($X, $Y, $absolute = 0) Local $MOUSEEVENTF_MOVE = 1 Local $MOUSEEVENTF_ABSOLUTE = 32768 DllCall("user32.dll", "none", "mouse_event", _ "long", $MOUSEEVENTF_MOVE + ($absolute * $MOUSEEVENTF_ABSOLUTE), _ "long", $X, _ "long", $Y, _ "long", 0, _ "long", 0) EndFunc ;==>_MouseMovePlus ;;============================================================================== = ;;Terminate; ;;============================================================================== = Func terminate() WinSetOnTop($App_Title, "", 0) Send("{w}") If $MouseDown = 1 Then MouseUp("right") EndIf MsgBox(1, "Info", "Terminate") _FileWriteLog(@ScriptDir & $logname, "User Termination - Ending Session") _FileWriteLog(@ScriptDir & $logname, ":::End Of Session:::") Exit 0 EndFunc ;==>terminate






