Narkon Opublikowano 9 Marca 2017 Udostępnij Opublikowano 9 Marca 2017 (edytowane) Witajcie, zacząłem ostatnio grywać dużo na różnych OTS-ach, a w szczególności na Medivii stąd też przyszła potrzeba aby nieco zautomatyzować niektóre żmudne czynności jakimś gotowym botem. Na medivie są aktualnie 2 działające boty (mówię tutaj o sprawdzonych przeze mnie): LoftyBot oraz MediviaProBot oba zostały przeze mnie scrackowane. LoftyBot to nic innego jak zwykły skrypt w AutoIT stąd też nie wymagało to ode mnie zbyt dużego wysiłku aby go scrackować. Ale nie owijając dalej w bawełnę, poniżej podaję działającego LoftyBota w wersji 1.4.8 bez potrzeby uwierzytelniania. Źródła nie podaję, ale każdy kto choć trochę bawi się informatyką, nie powinien mieć najmniejszego problemu z jego wyciągnięciem. Download: https://mega.nz/#!PsYQmTAL!3p_4pzFAoq6OD2IKSSpzoby6tdMfpcx6_33Kp42w8j0 Virustotal: https://www.virustotal.com/pl/file/ff84d318fa88f601c1cc3bd52a9788083646c72e3cdbb18214350a2c9630fc74/analysis/1489051447/ Zapewniam, że w środku nie ma żadnego wirusa pomimo powyższego wyniku: potencjalne zainfekowanie zostało wykryte w "ImageSearchDLLx32.dll" która jest często wykorzystywana w skryptach AutoIT stąd też, nie martwcie się tym, po drugie potencjalny wirus został wykryty przez niszowe antywirusy, w samym .exe bota nic nie ma. Edytowane 9 Marca 2017 przez Narkon reflx123, wazon i MateuszKundel 3 Odnośnik do komentarza
reflx123 Opublikowano 9 Marca 2017 Udostępnij Opublikowano 9 Marca 2017 moglbys wytlumaczyc jak zrobic zeby dzialal na tibianus.org ?? Odnośnik do komentarza
Narkon Opublikowano 9 Marca 2017 Autor Udostępnij Opublikowano 9 Marca 2017 Konfiguracja jest zawsze taka sama, niezależnie od OTS-a -> https://www.youtube.com/watch?v=KN3G2qbHKoI LoftyBot wspiera akutalnie: - Medivia OTS (after update 2.0 - new client) - Nastarius OTS - Tibijka OTS - Darkot OTS - Classictibia.com - Raretibia.com - Dolnera.com - play.tibians.org - All others OTS with client look (like official) or otclient (custom client) Odnośnik do komentarza
reflx123 Opublikowano 9 Marca 2017 Udostępnij Opublikowano 9 Marca 2017 Konfiguracja jest zawsze taka sama, niezależnie od OTS-a -> https://www.youtube.com/watch?v=KN3G2qbHKoI LoftyBot wspiera akutalnie: - Medivia OTS (after update 2.0 - new client) - Nastarius OTS - Tibijka OTS - Darkot OTS - Classictibia.com - Raretibia.com - Dolnera.com - play.tibians.org - All others OTS with client look (like official) or otclient (custom client) rozumiem nie pytalem o konfiguracje bota lecz o wlaczenie go na tibianus.org bo gdy odpalam pisze odrazu ze I don't see tibijka client and hp bar a ja opalam tibianus otsa nie tibijke Odnośnik do komentarza
Narkon Opublikowano 9 Marca 2017 Autor Udostępnij Opublikowano 9 Marca 2017 Ciężko mi stwierdzić dlaczego, musiałbym spojrzeć w kod źródłowy bota (być może autor coś sknocił). Postaram się później to zrobić. Odnośnik do komentarza
Alve Opublikowano 9 Marca 2017 Udostępnij Opublikowano 9 Marca 2017 Na tibianus.org nie dziala. Na Medivii dziala i nie wysyla zadnych pakietow wiec czysty. Sprawdź mój tutorial na temat demonbuddy!Nie odpowiadam na wiadomości prywatne. Odnośnik do komentarza
reflx123 Opublikowano 9 Marca 2017 Udostępnij Opublikowano 9 Marca 2017 Ciężko mi stwierdzić dlaczego, musiałbym spojrzeć w kod źródłowy bota (być może autor coś sknocił). Postaram się później to zrobić. jakbys mogl zrobic zeby na tibianus chodzilo bylo by git pewnie nie tylko mi bys pomogl ;p Odnośnik do komentarza
Marchwj Opublikowano 9 Marca 2017 Udostępnij Opublikowano 9 Marca 2017 Bot jest serio czysty, jeżeli ktoś nie wierzy to niech popatrzy na kod. #Au3Stripper_Ignore_Funcs=RefreshHP,RefreshMP,walker,waypoints,autoAttacker,uhHeal,healer,spell_caster,slimTraining,fishRecording,fishing,logoutMP #Au3Stripper_Ignore_Funcs=autoEater,autoEquiper,runesMaker,afk,alertDisconnected,alertHpBelow,alert_player_pos,setTitle,picker,logoutScreen #Au3Stripper_Ignore_Funcs=OTRefreshHP,OTRefreshMP,TibijkaRefreshHP,TibijkaRefreshMP #Au3Stripper_Ignore_Variables=MousePos,clickedColor,WinTitle,slimPos Global Const $cbs_autohscroll = 64 Global Const $cbs_dropdown = 2 Global Const $es_password = 32 Global Const $gui_ss_default_input = 128 Global Const $gui_event_close = -3 Global Const $gui_unchecked = 4 Global Const $gui_disable = 128 Global Const $gui_focus = 256 Global Const $ss_center = 1 Global Const $ws_popup = --2147483648 Global Const $ws_ex_toolwindow = 128 Global Const $ws_ex_topmost = 8 Global $__g_atimers_atimerids[1][3] Func _timer_gettimerid($wparam) Local $_itimerid = Dec(Hex($wparam, 8)), $imax = UBound($__g_atimers_atimerids) - 1 For $x = 1 To $imax If $_itimerid = $__g_atimers_atimerids[$x][1] Then Return $__g_atimers_atimerids[$x][0] Next Return 0 EndFunc Func _timer_killtimer($hwnd, $itimerid) Local $aresult[1] = [0], $hcallback = 0, $iubound = UBound($__g_atimers_atimerids) - 1 For $x = 1 To $iubound If $__g_atimers_atimerids[$x][0] = $itimerid Then If IsHWnd($hwnd) Then $aresult = DllCall("user32.dll", "bool", "KillTimer", "hwnd", $hwnd, "uint_ptr", $__g_atimers_atimerids[$x][1]) Else $aresult = DllCall("user32.dll", "bool", "KillTimer", "hwnd", $hwnd, "uint_ptr", $__g_atimers_atimerids[$x][0]) EndIf If @ OR $aresult[0] = 0 Then Return SetError(@, @, False) $hcallback = $__g_atimers_atimerids[$x][2] If $hcallback <> 0 Then DllCallbackFree($hcallback) For $i = $x To $iubound - 1 $__g_atimers_atimerids[$i][0] = $__g_atimers_atimerids[$i + 1][0] $__g_atimers_atimerids[$i][1] = $__g_atimers_atimerids[$i + 1][1] $__g_atimers_atimerids[$i][2] = $__g_atimers_atimerids[$i + 1][2] Next ReDim $__g_atimers_atimerids[UBound($__g_atimers_atimerids - 1)][3] $__g_atimers_atimerids[0][0] -= 1 ExitLoop EndIf Next Return $aresult[0] <> 0 EndFunc Func _timer_settimer($hwnd, $ielapse = 250, $stimerfunc = "", $itimerid = -1) Local $aresult[1] = [0], $ptimerfunc = 0, $hcallback = 0, $iindex = $__g_atimers_atimerids[0][0] + 1 If $itimerid = -1 Then ReDim $__g_atimers_atimerids[$iindex + 1][3] $__g_atimers_atimerids[0][0] = $iindex $itimerid = $iindex + 1000 For $x = 1 To $iindex If $__g_atimers_atimerids[$x][0] = $itimerid Then $itimerid = $itimerid + 1 $x = 0 EndIf Next If $stimerfunc <> "" Then $hcallback = DllCallbackRegister($stimerfunc, "none", "hwnd;uint;uint_ptr;dword") If $hcallback = 0 Then Return SetError(-1, -1, 0) $ptimerfunc = DllCallbackGetPtr($hcallback) If $ptimerfunc = 0 Then Return SetError(-1, -1, 0) EndIf $aresult = DllCall("user32.dll", "uint_ptr", "SetTimer", "hwnd", $hwnd, "uint_ptr", $itimerid, "uint", $ielapse, "ptr", $ptimerfunc) If @ OR $aresult[0] = 0 Then Return SetError(@, @, 0) $__g_atimers_atimerids[$iindex][0] = $aresult[0] $__g_atimers_atimerids[$iindex][1] = $itimerid $__g_atimers_atimerids[$iindex][2] = $hcallback Else For $x = 1 To $iindex - 1 If $__g_atimers_atimerids[$x][0] = $itimerid Then If IsHWnd($hwnd) Then $itimerid = $__g_atimers_atimerids[$x][1] $hcallback = $__g_atimers_atimerids[$x][2] If $hcallback <> 0 Then $ptimerfunc = DllCallbackGetPtr($hcallback) If $ptimerfunc = 0 Then Return SetError(-1, -1, 0) EndIf $aresult = DllCall("user32.dll", "uint_ptr", "SetTimer", "hwnd", $hwnd, "uint_ptr", $itimerid, "uint", $ielapse, "ptr", $ptimerfunc) If @ OR $aresult[0] = 0 Then Return SetError(@, @, 0) ExitLoop EndIf Next EndIf Return $aresult[0] EndFunc Global Const $mb_yesno = 4 Global Const $mb_iconerror = 16 Global Const $mb_systemmodal = 4096 Global Const $idyes = 6 Global Const $color_green = 32768 Global Const $color_red = 16711680 Func _process2win($pid) If IsString($pid) Then $pid = ProcessExists($pid) If $pid = 0 Then Return -1 $list = WinList() For $i = 1 To $list[0][0] If $list[$i][0] <> "" AND BitAND(WinGetState($list[$i][1]), 2) Then $wpid = WinGetProcess($list[$i][0]) If $wpid = $pid Then Return $list[$i][0] EndIf Next Return -1 EndFunc Global Const $tagrect = "struct;long Left;long Top;long Right;long Bottom;endstruct" Global Const $taggdipstartupinput = "uint Version;ptr Callback;bool NoThread;bool NoCodecs" Global Const $tagrebarbandinfo = "uint cbSize;uint fMask;uint fStyle;dword clrFore;dword clrBack;ptr lpText;uint cch;" & "int iImage;hwnd hwndChild;uint cxMinChild;uint cyMinChild;uint cx;handle hbmBack;uint wID;uint cyChild;uint cyMaxChild;" & "uint cyIntegral;uint cxIdeal;lparam lParam;uint cxHeader" & ((@OSVersion = "WIN_XP") ? "" : ";" & $tagrect & ";uint uChevronState") Global Const $ubound_dimensions = 0 Global Const $ubound_rows = 1 Global Const $ubound_columns = 2 Global Const $str_entiresplit = 1 Global Const $str_nocount = 2 Global Const $hgdi_error = Ptr(-1) Global Const $invalid_handle_value = Ptr(-1) Global Const $kf_extended = 256 Global Const $kf_altdown = 8192 Global Const $kf_up = 32768 Global Const $llkhf_extended = BitShift($kf_extended, 8) Global Const $llkhf_altdown = BitShift($kf_altdown, 8) Global Const $llkhf_up = BitShift($kf_up, 8) Func _winapi_combinergn($hrgndest, $hrgnsrc1, $hrgnsrc2, $icombinemode) Local $aresult = DllCall("gdi32.dll", "int", "CombineRgn", "handle", $hrgndest, "handle", $hrgnsrc1, "handle", $hrgnsrc2, "int", $icombinemode) If @ Then Return SetError(@, @, 0) Return $aresult[0] EndFunc Func _winapi_createrectrgn($ileftrect, $itoprect, $irightrect, $ibottomrect) Local $aresult = DllCall("gdi32.dll", "handle", "CreateRectRgn", "int", $ileftrect, "int", $itoprect, "int", $irightrect, "int", $ibottomrect) If @ Then Return SetError(@, @, 0) Return $aresult[0] EndFunc Func _winapi_deleteobject($hobject) Local $aresult = DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $hobject) If @ Then Return SetError(@, @, False) Return $aresult[0] EndFunc Func _winapi_getwindowdc($hwnd) Local $aresult = DllCall("user32.dll", "handle", "GetWindowDC", "hwnd", $hwnd) If @ Then Return SetError(@, @, 0) Return $aresult[0] EndFunc Func _winapi_setwindowrgn($hwnd, $hrgn, $bredraw = True) Local $aresult = DllCall("user32.dll", "int", "SetWindowRgn", "hwnd", $hwnd, "handle", $hrgn, "bool", $bredraw) If @ Then Return SetError(@, @, False) Return $aresult[0] EndFunc Global Const $tagosversioninfo = "struct;dword OSVersionInfoSize;dword MajorVersion;dword MinorVersion;dword BuildNumber;dword PlatformId;wchar CSDVersion[128];endstruct" Global Const $__winver = __winver() Func __winver() Local $tosvi = DllStructCreate($tagosversioninfo) DllStructSetData($tosvi, 1, DllStructGetSize($tosvi)) Local $aret = DllCall("kernel32.dll", "bool", "GetVersionExW", "struct*", $tosvi) If @ OR NOT $aret[0] Then Return SetError(@, @, 0) Return BitOR(BitShift(DllStructGetData($tosvi, 2), -8), DllStructGetData($tosvi, 3)) EndFunc Global $__g_hgdipdll = 0 Global $__g_hgdippen = 0 Global $__g_igdipref = 0 Global $__g_igdiptoken = 0 Global $__g_bgdip_v1_0 = True Func _gdiplus_graphicscreatefromhdc($hdc) Local $aresult = DllCall($__g_hgdipdll, "int", "GdipCreateFromHDC", "handle", $hdc, "handle*", 0) If @ Then Return SetError(@, @, 0) If $aresult[0] Then Return SetError(10, $aresult[0], 0) Return $aresult[2] EndFunc Func _gdiplus_graphicscreatefromhwnd($hwnd) Local $aresult = DllCall($__g_hgdipdll, "int", "GdipCreateFromHWND", "hwnd", $hwnd, "handle*", 0) If @ Then Return SetError(@, @, 0) If $aresult[0] Then Return SetError(10, $aresult[0], 0) Return $aresult[2] EndFunc Func _gdiplus_graphicsdispose($hgraphics) Local $aresult = DllCall($__g_hgdipdll, "int", "GdipDeleteGraphics", "handle", $hgraphics) If @ Then Return SetError(@, @, False) If $aresult[0] Then Return SetError(10, $aresult[0], False) Return True EndFunc Func _gdiplus_graphicsdrawimage($hgraphics, $himage, $nx, $ny) Local $aresult = DllCall($__g_hgdipdll, "int", "GdipDrawImage", "handle", $hgraphics, "handle", $himage, "float", $nx, "float", $ny) If @ Then Return SetError(@, @, False) If $aresult[0] Then Return SetError(10, $aresult[0], False) Return True EndFunc Func _gdiplus_graphicsdrawrect($hgraphics, $nx, $ny, $nwidth, $nheight, $hpen = 0) __gdiplus_pendefcreate($hpen) Local $aresult = DllCall($__g_hgdipdll, "int", "GdipDrawRectangle", "handle", $hgraphics, "handle", $hpen, "float", $nx, "float", $ny, "float", $nwidth, "float", $nheight) __gdiplus_pendefdispose() If @ Then Return SetError(@, @, False) If $aresult[0] Then Return SetError(10, $aresult[0], False) Return True EndFunc Func _gdiplus_imagedispose($himage) Local $aresult = DllCall($__g_hgdipdll, "int", "GdipDisposeImage", "handle", $himage) If @ Then Return SetError(@, @, False) If $aresult[0] Then Return SetError(10, $aresult[0], False) Return True EndFunc Func _gdiplus_imageloadfromfile($sfilename) Local $aresult = DllCall($__g_hgdipdll, "int", "GdipLoadImageFromFile", "wstr", $sfilename, "handle*", 0) If @ Then Return SetError(@, @, 0) If $aresult[0] Then Return SetError(10, $aresult[0], 0) Return $aresult[2] EndFunc Func _gdiplus_pencreate($iargb = -16777216, $nwidth = 1, $iunit = 2) Local $aresult = DllCall($__g_hgdipdll, "int", "GdipCreatePen1", "dword", $iargb, "float", $nwidth, "int", $iunit, "handle*", 0) If @ Then Return SetError(@, @, 0) If $aresult[0] Then Return SetError(10, $aresult[0], 0) Return $aresult[4] EndFunc Func _gdiplus_pendispose($hpen) Local $aresult = DllCall($__g_hgdipdll, "int", "GdipDeletePen", "handle", $hpen) If @ Then Return SetError(@, @, False) If $aresult[0] Then Return SetError(10, $aresult[0], False) Return True EndFunc Func _gdiplus_shutdown() If $__g_hgdipdll = 0 Then Return SetError(-1, -1, False) $__g_igdipref -= 1 If $__g_igdipref = 0 Then DllCall($__g_hgdipdll, "none", "GdiplusShutdown", "ulong_ptr", $__g_igdiptoken) DllClose($__g_hgdipdll) $__g_hgdipdll = 0 EndIf Return True EndFunc Func _gdiplus_startup($sgdipdll = Default, $bretdllhandle = False) $__g_igdipref += 1 If $__g_igdipref > 1 Then Return True If $sgdipdll = Default Then $sgdipdll = "gdiplus.dll" $__g_hgdipdll = DllOpen($sgdipdll) If $__g_hgdipdll = -1 Then $__g_igdipref = 0 Return SetError(1, 2, False) EndIf Local $sver = FileGetVersion($sgdipdll) $sver = StringSplit($sver, ".") If $sver[1] > 5 Then $__g_bgdip_v1_0 = False Local $tinput = DllStructCreate($taggdipstartupinput) Local $ttoken = DllStructCreate("ulong_ptr Data") DllStructSetData($tinput, "Version", 1) Local $aresult = DllCall($__g_hgdipdll, "int", "GdiplusStartup", "struct*", $ttoken, "struct*", $tinput, "ptr", 0) If @ Then Return SetError(@, @, False) If $aresult[0] Then Return SetError(10, $aresult[0], False) $__g_igdiptoken = DllStructGetData($ttoken, "Data") If $bretdllhandle Then Return $__g_hgdipdll Return SetExtended($sver[1], True) EndFunc Func __gdiplus_pendefcreate(ByRef $hpen) If $hpen = 0 Then $__g_hgdippen = _gdiplus_pencreate() $hpen = $__g_hgdippen EndIf EndFunc Func __gdiplus_pendefdispose($icurerror = @, $icurextended = @) If $__g_hgdippen <> 0 Then _gdiplus_pendispose($__g_hgdippen) $__g_hgdippen = 0 EndIf Return SetError($icurerror, $icurextended) EndFunc Func _ispressed($shexkey, $vdll = "user32.dll") Local $a_r = DllCall($vdll, "short", "GetAsyncKeyState", "int", "0x" & $shexkey) If @ Then Return SetError(@, @, False) Return BitAND($a_r[0], 32768) <> 0 EndFunc Global Enum $arrayfill_force_default, $arrayfill_force_singleitem, $arrayfill_force_int, $arrayfill_force_number, $arrayfill_force_ptr, $arrayfill_force_hwnd, $arrayfill_force_string Func _arraydisplay(Const ByRef $aarray, $stitle = Default, $sarrayrange = Default, $iflags = Default, $vuser_separator = Default, $sheader = Default, $imax_colwidth = Default, $ialt_color = Default, $huser_function = Default) If $stitle = Default Then $stitle = "ArrayDisplay" If $sarrayrange = Default Then $sarrayrange = "" If $iflags = Default Then $iflags = 0 If $vuser_separator = Default Then $vuser_separator = "" If $sheader = Default Then $sheader = "" If $imax_colwidth = Default Then $imax_colwidth = 350 If $ialt_color = Default Then $ialt_color = 0 If $huser_function = Default Then $huser_function = 0 Local $itranspose = BitAND($iflags, 1) Local $icolalign = BitAND($iflags, 6) Local $iverbose = BitAND($iflags, 8) Local $ibuttonmargin = ((BitAND($iflags, 32)) ? (0) : ((BitAND($iflags, 16)) ? (20) : (40))) Local $inorow = BitAND($iflags, 64) Local $smsg = "", $iret = 1 If IsArray($aarray) Then Local $idimension = UBound($aarray, $ubound_dimensions), $irowcount = UBound($aarray, $ubound_rows), $icolcount = UBound($aarray, $ubound_columns) If $idimension > 2 Then $smsg = "Larger than 2D array passed to function" $iret = 2 EndIf Else $smsg = "No array variable passed to function" EndIf If $smsg Then If $iverbose AND MsgBox($mb_systemmodal + $mb_iconerror + $mb_yesno, "ArrayDisplay Error: " & $stitle, $smsg & @CRLF & @CRLF & "Exit the script?") = $idyes Then Exit Else Return SetError($iret, 0, "") EndIf EndIf Local $icw_colwidth = Number($vuser_separator) Local $sad_separator = ChrW(64177) Local $scurr_separator = Opt("GUIDataSeparatorChar", $sad_separator) If $vuser_separator = "" Then $vuser_separator = $scurr_separator Local $vtmp, $irowlimit = 65525, $icollimit = 250 Local $idatarow = $irowcount Local $idatacol = $icolcount Local $iitem_start = 0, $iitem_end = $irowcount - 1, $isubitem_start = 0, $isubitem_end = (($idimension = 2) ? ($icolcount - 1) : (0)) Local $brange_flag = False, $avrangesplit If $sarrayrange Then Local $aarray_range = StringRegExp($sarrayrange & "||", "(?U)(.*)\|", 3) If $aarray_range[0] Then $avrangesplit = StringSplit($aarray_range[0], ":") If @ Then $iitem_end = Number($avrangesplit[1]) Else $iitem_start = Number($avrangesplit[1]) $iitem_end = Number($avrangesplit[2]) EndIf EndIf If $iitem_start > $iitem_end Then $vtmp = $iitem_start $iitem_start = $iitem_end $iitem_end = $vtmp EndIf If $iitem_start < 0 Then $iitem_start = 0 If $iitem_end > $irowcount - 1 Then $iitem_end = $irowcount - 1 If $iitem_start <> 0 OR $iitem_end <> $irowcount - 1 Then $brange_flag = True If $idimension = 2 AND $aarray_range[1] Then $avrangesplit = StringSplit($aarray_range[1], ":") If @ Then $isubitem_end = Number($avrangesplit[1]) Else $isubitem_start = Number($avrangesplit[1]) $isubitem_end = Number($avrangesplit[2]) EndIf If $isubitem_start > $isubitem_end Then $vtmp = $isubitem_start $isubitem_start = $isubitem_end $isubitem_end = $vtmp EndIf If $isubitem_start < 0 Then $isubitem_start = 0 If $isubitem_end > $icolcount - 1 Then $isubitem_end = $icolcount - 1 If $isubitem_start <> 0 OR $isubitem_end <> $icolcount - 1 Then $brange_flag = True EndIf EndIf Local $sdisplaydata = "[" & $idatarow Local $btruncated = False If $itranspose Then If $iitem_end - $iitem_start > $icollimit Then $btruncated = True $iitem_end = $iitem_start + $icollimit - 1 EndIf Else If $iitem_end - $iitem_start > $irowlimit Then $btruncated = True $iitem_end = $iitem_start + $irowlimit - 1 EndIf EndIf If $btruncated Then $sdisplaydata &= "*]" Else $sdisplaydata &= "]" EndIf If $idimension = 2 Then $sdisplaydata &= " [" & $idatacol If $itranspose Then If $isubitem_end - $isubitem_start > $irowlimit Then $btruncated = True $isubitem_end = $isubitem_start + $irowlimit - 1 EndIf Else If $isubitem_end - $isubitem_start > $icollimit Then $btruncated = True $isubitem_end = $isubitem_start + $icollimit - 1 EndIf EndIf If $btruncated Then $sdisplaydata &= "*]" Else $sdisplaydata &= "]" EndIf EndIf Local $stipdata = "" If $btruncated Then $stipdata &= "Truncated" If $brange_flag Then If $stipdata Then $stipdata &= " - " $stipdata &= "Range set" EndIf If $itranspose Then If $stipdata Then $stipdata &= " - " $stipdata &= "Transposed" EndIf Local $asheader = StringSplit($sheader, $scurr_separator, $str_nocount) If UBound($asheader) = 0 Then Local $asheader[1] = [""] $sheader = "Row" Local $iindex = $isubitem_start If $itranspose Then For $j = $iitem_start To $iitem_end $sheader &= $sad_separator & "Col " & $j Next Else If $asheader[0] Then For $iindex = $isubitem_start To $isubitem_end If $iindex >= UBound($asheader) Then ExitLoop $sheader &= $sad_separator & $asheader[$iindex] Next EndIf For $j = $iindex To $isubitem_end $sheader &= $sad_separator & "Col " & $j Next EndIf If $inorow Then $sheader = StringTrimLeft($sheader, 4) If $iverbose AND ($iitem_end - $iitem_start + 1) * ($isubitem_end - $isubitem_start + 1) > 10000 Then SplashTextOn("ArrayDisplay", "Preparing display" & @CRLF & @CRLF & "Please be patient", 300, 100) EndIf Local $ibuffer = 4094 If $itranspose Then $vtmp = $iitem_start $iitem_start = $isubitem_start $isubitem_start = $vtmp $vtmp = $iitem_end $iitem_end = $isubitem_end $isubitem_end = $vtmp EndIf Local $avarraytext[$iitem_end - $iitem_start + 1] For $i = $iitem_start To $iitem_end If NOT $inorow Then $avarraytext[$i - $iitem_start] = "[" & $i & "]" For $j = $isubitem_start To $isubitem_end If $idimension = 1 Then If $itranspose Then Switch VarGetType($aarray[$j]) Case "Array" $vtmp = "{Array}" Case Else $vtmp = $aarray[$j] EndSwitch Else Switch VarGetType($aarray[$i]) Case "Array" $vtmp = "{Array}" Case Else $vtmp = $aarray[$i] EndSwitch EndIf Else If $itranspose Then Switch VarGetType($aarray[$j][$i]) Case "Array" $vtmp = "{Array}" Case Else $vtmp = $aarray[$j][$i] EndSwitch Else Switch VarGetType($aarray[$i][$j]) Case "Array" $vtmp = "{Array}" Case Else $vtmp = $aarray[$i][$j] EndSwitch EndIf EndIf If StringLen($vtmp) > $ibuffer Then $vtmp = StringLeft($vtmp, $ibuffer) $avarraytext[$i - $iitem_start] &= $sad_separator & $vtmp Next If $inorow Then $avarraytext[$i - $iitem_start] = StringTrimLeft($avarraytext[$i - $iitem_start], 1) Next Local Const $_arrayconstant_gui_dockbottom = 64 Local Const $_arrayconstant_gui_dockborders = 102 Local Const $_arrayconstant_gui_dockheight = 512 Local Const $_arrayconstant_gui_dockleft = 2 Local Const $_arrayconstant_gui_dockright = 4 Local Const $_arrayconstant_gui_dockhcenter = 8 Local Const $_arrayconstant_gui_event_close = -3 Local Const $_arrayconstant_gui_focus = 256 Local Const $_arrayconstant_gui_bkcolor_lv_alternate = -33554432 Local Const $_arrayconstant_ss_center = 1 Local Const $_arrayconstant_ss_centerimage = 512 Local Const $_arrayconstant_lvm_getitemcount = (4096 + 4) Local Const $_arrayconstant_lvm_getitemrect = (4096 + 14) Local Const $_arrayconstant_lvm_getcolumnwidth = (4096 + 29) Local Const $_arrayconstant_lvm_setcolumnwidth = (4096 + 30) Local Const $_arrayconstant_lvm_getitemstate = (4096 + 44) Local Const $_arrayconstant_lvm_getselectedcount = (4096 + 50) Local Const $_arrayconstant_lvm_setextendedlistviewstyle = (4096 + 54) Local Const $_arrayconstant_lvs_ex_gridlines = 1 Local Const $_arrayconstant_lvis_selected = 2 Local Const $_arrayconstant_lvs_showselalways = 8 Local Const $_arrayconstant_lvs_ex_fullrowselect = 32 Local Const $_arrayconstant_ws_ex_clientedge = 512 Local Const $_arrayconstant_ws_maximizebox = 65536 Local Const $_arrayconstant_ws_minimizebox = 131072 Local Const $_arrayconstant_ws_sizebox = 262144 Local Const $_arrayconstant_wm_setredraw = 11 Local Const $_arrayconstant_lvscw_autosize = -1 Local $icoordmode = Opt("GUICoordMode", 1) Local $iorgwidth = 210, $iheight = 200, $iminsize = 250 Local $hgui = GUICreate($stitle, $iorgwidth, $iheight, Default, Default, BitOR($_arrayconstant_ws_sizebox, $_arrayconstant_ws_minimizebox, $_arrayconstant_ws_maximizebox)) Local $aiguisize = WinGetClientSize($hgui) Local $ibuttonwidth_2 = $aiguisize[0] / 2 Local $ibuttonwidth_3 = $aiguisize[0] / 3 Local $idlistview = GUICtrlCreateListView($sheader, 0, 0, $aiguisize[0], $aiguisize[1] - $ibuttonmargin, $_arrayconstant_lvs_showselalways) GUICtrlSetBkColor($idlistview, $_arrayconstant_gui_bkcolor_lv_alternate) GUICtrlSendMsg($idlistview, $_arrayconstant_lvm_setextendedlistviewstyle, $_arrayconstant_lvs_ex_gridlines, $_arrayconstant_lvs_ex_gridlines) GUICtrlSendMsg($idlistview, $_arrayconstant_lvm_setextendedlistviewstyle, $_arrayconstant_lvs_ex_fullrowselect, $_arrayconstant_lvs_ex_fullrowselect) GUICtrlSendMsg($idlistview, $_arrayconstant_lvm_setextendedlistviewstyle, $_arrayconstant_ws_ex_clientedge, $_arrayconstant_ws_ex_clientedge) Local $idcopy_id = 9999, $idcopy_data = 99999, $iddata_label = 99999, $iduser_func = 99999, $idexit_script = 99999 If $ibuttonmargin Then $idcopy_id = GUICtrlCreateButton("Copy Data && Hdr/Row", 0, $aiguisize[1] - $ibuttonmargin, $ibuttonwidth_2, 20) $idcopy_data = GUICtrlCreateButton("Copy Data Only", $ibuttonwidth_2, $aiguisize[1] - $ibuttonmargin, $ibuttonwidth_2, 20) If $ibuttonmargin = 40 Then Local $ibuttonwidth_var = $ibuttonwidth_2 Local $ioffset = $ibuttonwidth_2 If IsFunc($huser_function) Then $iduser_func = GUICtrlCreateButton("Run User Func", $ibuttonwidth_3, $aiguisize[1] - 20, $ibuttonwidth_3, 20) $ibuttonwidth_var = $ibuttonwidth_3 $ioffset = $ibuttonwidth_3 * 2 EndIf $idexit_script = GUICtrlCreateButton("Exit Script", $ioffset, $aiguisize[1] - 20, $ibuttonwidth_var, 20) $iddata_label = GUICtrlCreateLabel($sdisplaydata, 0, $aiguisize[1] - 20, $ibuttonwidth_var, 18, BitOR($_arrayconstant_ss_center, $_arrayconstant_ss_centerimage)) Select Case $btruncated OR $itranspose OR $brange_flag GUICtrlSetColor($iddata_label, 16711680) GUICtrlSetTip($iddata_label, $stipdata) EndSelect EndIf EndIf GUICtrlSetResizing($idlistview, $_arrayconstant_gui_dockborders) GUICtrlSetResizing($idcopy_id, $_arrayconstant_gui_dockleft + $_arrayconstant_gui_dockbottom + $_arrayconstant_gui_dockheight) GUICtrlSetResizing($idcopy_data, $_arrayconstant_gui_dockright + $_arrayconstant_gui_dockbottom + $_arrayconstant_gui_dockheight) GUICtrlSetResizing($iddata_label, $_arrayconstant_gui_dockleft + $_arrayconstant_gui_dockbottom + $_arrayconstant_gui_dockheight) GUICtrlSetResizing($iduser_func, $_arrayconstant_gui_dockhcenter + $_arrayconstant_gui_dockbottom + $_arrayconstant_gui_dockheight) GUICtrlSetResizing($idexit_script, $_arrayconstant_gui_dockright + $_arrayconstant_gui_dockbottom + $_arrayconstant_gui_dockheight) GUICtrlSendMsg($idlistview, $_arrayconstant_wm_setredraw, 0, 0) Local $iditem For $i = 0 To UBound($avarraytext) - 1 $iditem = GUICtrlCreateListViewItem($avarraytext[$i], $idlistview) If $ialt_color Then GUICtrlSetBkColor($iditem, $ialt_color) EndIf Next If $icolalign Then Local Const $_arrayconstant_lvcf_fmt = 1 Local Const $_arrayconstant_lvm_setcolumnw = (4096 + 96) Local $tcolumn = DllStructCreate("uint Mask;int Fmt;int CX;ptr Text;int TextMax;int SubItem;int Image;int Order;int cxMin;int cxDefault;int cxIdeal") DllStructSetData($tcolumn, "Mask", $_arrayconstant_lvcf_fmt) DllStructSetData($tcolumn, "Fmt", $icolalign / 2) Local $pcolumn = DllStructGetPtr($tcolumn) For $i = 1 To $isubitem_end - $isubitem_start + 1 GUICtrlSendMsg($idlistview, $_arrayconstant_lvm_setcolumnw, $i, $pcolumn) Next EndIf GUICtrlSendMsg($idlistview, $_arrayconstant_wm_setredraw, 1, 0) Local $iborder = 45 If UBound($avarraytext) > 20 Then $iborder += 20 EndIf Local $iwidth = $iborder, $icolwidth = 0, $aicolwidth[$isubitem_end - $isubitem_start + 2], $imin_colwidth = 55 For $i = 0 To $isubitem_end - $isubitem_start + 1 GUICtrlSendMsg($idlistview, $_arrayconstant_lvm_setcolumnwidth, $i, $_arrayconstant_lvscw_autosize) $icolwidth = GUICtrlSendMsg($idlistview, $_arrayconstant_lvm_getcolumnwidth, $i, 0) If $icolwidth < $imin_colwidth Then GUICtrlSendMsg($idlistview, $_arrayconstant_lvm_setcolumnwidth, $i, $imin_colwidth) $icolwidth = $imin_colwidth EndIf $iwidth += $icolwidth $aicolwidth[$i] = $icolwidth Next If $inorow Then $iwidth -= 55 If $iwidth > @DesktopWidth - 100 Then $iwidth = $iborder For $i = 0 To $isubitem_end - $isubitem_start + 1 If $aicolwidth[$i] > $imax_colwidth Then GUICtrlSendMsg($idlistview, $_arrayconstant_lvm_setcolumnwidth, $i, $imax_colwidth) $iwidth += $imax_colwidth Else $iwidth += $aicolwidth[$i] EndIf Next EndIf If $iwidth > @DesktopWidth - 100 Then $iwidth = @DesktopWidth - 100 ElseIf $iwidth < $iminsize Then $iwidth = $iminsize EndIf Local $trect = DllStructCreate("struct; long Left;long Top;long Right;long Bottom; endstruct") DllCall("user32.dll", "struct*", "SendMessageW", "hwnd", GUICtrlGetHandle($idlistview), "uint", $_arrayconstant_lvm_getitemrect, "wparam", 0, "struct*", $trect) Local $aiwin_pos = WinGetPos($hgui) Local $ailv_pos = ControlGetPos($hgui, "", $idlistview) $iheight = ((UBound($avarraytext) + 2) * (DllStructGetData($trect, "Bottom") - DllStructGetData($trect, "Top"))) + $aiwin_pos[3] - $ailv_pos[3] If $iheight > @DesktopHeight - 100 Then $iheight = @DesktopHeight - 100 ElseIf $iheight < $iminsize Then $iheight = $iminsize EndIf If $iverbose Then SplashOff() GUISetState(@SW_HIDE, $hgui) WinMove($hgui, "", (@DesktopWidth - $iwidth) / 2, (@DesktopHeight - $iheight) / 2, $iwidth, $iheight) GUISetState(@SW_SHOW, $hgui) Local $ioneventmode = Opt("GUIOnEventMode", 0), $imsg While 1 $imsg = GUIGetMsg() Switch $imsg Case $_arrayconstant_gui_event_close ExitLoop Case $idcopy_id, $idcopy_data Local $isel_count = GUICtrlSendMsg($idlistview, $_arrayconstant_lvm_getselectedcount, 0, 0) If $iverbose AND (NOT $isel_count) AND ($iitem_end - $iitem_start) * ($isubitem_end - $isubitem_start) > 10000 Then SplashTextOn("ArrayDisplay", "Copying data" & @CRLF & @CRLF & "Please be patient", 300, 100) EndIf Local $sclip = "", $sitem, $asplit For $i = 0 To $iitem_end - $iitem_start If $isel_count AND NOT (GUICtrlSendMsg($idlistview, $_arrayconstant_lvm_getitemstate, $i, $_arrayconstant_lvis_selected)) Then ContinueLoop EndIf $sitem = $avarraytext[$i] If $imsg = $idcopy_data Then $sitem = StringRegExpReplace($sitem, "^\[\d+\].(.*)$", "$1") EndIf If $icw_colwidth Then $asplit = StringSplit($sitem, $sad_separator) $sitem = "" For $j = 1 To $asplit[0] $sitem &= StringFormat("%-" & $icw_colwidth + 1 & "s", StringLeft($asplit[$j], $icw_colwidth)) Next Else $sitem = StringReplace($sitem, $sad_separator, $vuser_separator) EndIf $sclip &= $sitem & @CRLF Next If $imsg = $idcopy_id Then If $icw_colwidth Then $asplit = StringSplit($sheader, $sad_separator) $sitem = "" For $j = 1 To $asplit[0] $sitem &= StringFormat("%-" & $icw_colwidth + 1 & "s", StringLeft($asplit[$j], $icw_colwidth)) Next Else $sitem = StringReplace($sheader, $sad_separator, $vuser_separator) EndIf $sclip = $sitem & @CRLF & $sclip EndIf ClipPut($sclip) SplashOff() GUICtrlSetState($idlistview, $_arrayconstant_gui_focus) Case $iduser_func Local $aiselitems[$irowlimit] = [0] For $i = 0 To GUICtrlSendMsg($idlistview, $_arrayconstant_lvm_getitemcount, 0, 0) If GUICtrlSendMsg($idlistview, $_arrayconstant_lvm_getitemstate, $i, $_arrayconstant_lvis_selected) Then $aiselitems[0] += 1 $aiselitems[$aiselitems[0]] = $i + $iitem_start EndIf Next ReDim $aiselitems[$aiselitems[0] + 1] $huser_function($aarray, $aiselitems) GUICtrlSetState($idlistview, $_arrayconstant_gui_focus) Case $idexit_script GUIDelete($hgui) Exit EndSwitch WEnd GUIDelete($hgui) Opt("GUICoordMode", $icoordmode) Opt("GUIOnEventMode", $ioneventmode) Opt("GUIDataSeparatorChar", $scurr_separator) Return 1 EndFunc Func _arrayinsert(ByRef $aarray, $vrange, $vvalue = "", $istart = 0, $sdelim_item = "|", $sdelim_row = @CRLF, $iforce = $arrayfill_force_default) If $vvalue = Default Then $vvalue = "" If $istart = Default Then $istart = 0 If $sdelim_item = Default Then $sdelim_item = "|" If $sdelim_row = Default Then $sdelim_row = @CRLF If $iforce = Default Then $iforce = $arrayfill_force_default If NOT IsArray($aarray) Then Return SetError(1, 0, -1) Local $idim_1 = UBound($aarray, $ubound_rows) - 1 Local $hdatatype = 0 Switch $iforce Case $arrayfill_force_int $hdatatype = Int Case $arrayfill_force_number $hdatatype = Number Case $arrayfill_force_ptr $hdatatype = Ptr Case $arrayfill_force_hwnd $hdatatype = HWnd Case $arrayfill_force_string $hdatatype = String EndSwitch Local $asplit_1, $asplit_2 If IsArray($vrange) Then If UBound($vrange, $ubound_dimensions) <> 1 OR UBound($vrange, $ubound_rows) < 2 Then Return SetError(4, 0, -1) Else Local $inumber $vrange = StringStripWS($vrange, 8) $asplit_1 = StringSplit($vrange, ";") $vrange = "" For $i = 1 To $asplit_1[0] If NOT StringRegExp($asplit_1[$i], "^\d+(-\d+)?$") Then Return SetError(3, 0, -1) $asplit_2 = StringSplit($asplit_1[$i], "-") Switch $asplit_2[0] Case 1 $vrange &= $asplit_2[1] & ";" Case 2 If Number($asplit_2[2]) >= Number($asplit_2[1]) Then $inumber = $asplit_2[1] - 1 Do $inumber += 1 $vrange &= $inumber & ";" Until $inumber = $asplit_2[2] EndIf EndSwitch Next $vrange = StringSplit(StringTrimRight($vrange, 1), ";") EndIf If $vrange[1] < 0 OR $vrange[$vrange[0]] > $idim_1 Then Return SetError(5, 0, -1) For $i = 2 To $vrange[0] If $vrange[$i] < $vrange[$i - 1] Then Return SetError(3, 0, -1) Next Local $icopyto_index = $idim_1 + $vrange[0] Local $iinsertpoint_index = $vrange[0] Local $iinsert_index = $vrange[$iinsertpoint_index] Switch UBound($aarray, $ubound_dimensions) Case 1 If $iforce = $arrayfill_force_singleitem Then ReDim $aarray[$idim_1 + $vrange[0] + 1] For $ireadfromindex = $idim_1 To 0 Step -1 $aarray[$icopyto_index] = $aarray[$ireadfromindex] $icopyto_index -= 1 $iinsert_index = $vrange[$iinsertpoint_index] While $ireadfromindex = $iinsert_index $aarray[$icopyto_index] = $vvalue $icopyto_index -= 1 $iinsertpoint_index -= 1 If $iinsertpoint_index < 1 Then ExitLoop 2 $iinsert_index = $vrange[$iinsertpoint_index] WEnd Next Return $idim_1 + $vrange[0] + 1 EndIf ReDim $aarray[$idim_1 + $vrange[0] + 1] If IsArray($vvalue) Then If UBound($vvalue, $ubound_dimensions) <> 1 Then Return SetError(5, 0, -1) $hdatatype = 0 Else Local $atmp = StringSplit($vvalue, $sdelim_item, $str_nocount + $str_entiresplit) If UBound($atmp, $ubound_rows) = 1 Then $atmp[0] = $vvalue $hdatatype = 0 EndIf $vvalue = $atmp EndIf For $ireadfromindex = $idim_1 To 0 Step -1 $aarray[$icopyto_index] = $aarray[$ireadfromindex] $icopyto_index -= 1 $iinsert_index = $vrange[$iinsertpoint_index] While $ireadfromindex = $iinsert_index If $iinsertpoint_index <= UBound($vvalue, $ubound_rows) Then If IsFunc($hdatatype) Then $aarray[$icopyto_index] = $hdatatype($vvalue[$iinsertpoint_index - 1]) Else $aarray[$icopyto_index] = $vvalue[$iinsertpoint_index - 1] EndIf Else $aarray[$icopyto_index] = "" EndIf $icopyto_index -= 1 $iinsertpoint_index -= 1 If $iinsertpoint_index = 0 Then ExitLoop 2 $iinsert_index = $vrange[$iinsertpoint_index] WEnd Next Case 2 Local $idim_2 = UBound($aarray, $ubound_columns) If $istart < 0 OR $istart > $idim_2 - 1 Then Return SetError(6, 0, -1) Local $ivaldim_1, $ivaldim_2 If IsArray($vvalue) Then If UBound($vvalue, $ubound_dimensions) <> 2 Then Return SetError(7, 0, -1) $ivaldim_1 = UBound($vvalue, $ubound_rows) $ivaldim_2 = UBound($vvalue, $ubound_columns) $hdatatype = 0 Else $asplit_1 = StringSplit($vvalue, $sdelim_row, $str_nocount + $str_entiresplit) $ivaldim_1 = UBound($asplit_1, $ubound_rows) StringReplace($asplit_1[0], $sdelim_item, "") $ivaldim_2 = @ + 1 Local $atmp[$ivaldim_1][$ivaldim_2] For $i = 0 To $ivaldim_1 - 1 $asplit_2 = StringSplit($asplit_1[$i], $sdelim_item, $str_nocount + $str_entiresplit) For $j = 0 To $ivaldim_2 - 1 $atmp[$i][$j] = $asplit_2[$j] Next Next $vvalue = $atmp EndIf If UBound($vvalue, $ubound_columns) + $istart > UBound($aarray, $ubound_columns) Then Return SetError(8, 0, -1) ReDim $aarray[$idim_1 + $vrange[0] + 1][$idim_2] For $ireadfromindex = $idim_1 To 0 Step -1 For $j = 0 To $idim_2 - 1 $aarray[$icopyto_index][$j] = $aarray[$ireadfromindex][$j] Next $icopyto_index -= 1 $iinsert_index = $vrange[$iinsertpoint_index] While $ireadfromindex = $iinsert_index For $j = 0 To $idim_2 - 1 If $j < $istart Then $aarray[$icopyto_index][$j] = "" ElseIf $j - $istart > $ivaldim_2 - 1 Then $aarray[$icopyto_index][$j] = "" Else If $iinsertpoint_index - 1 < $ivaldim_1 Then If IsFunc($hdatatype) Then $aarray[$icopyto_index][$j] = $hdatatype($vvalue[$iinsertpoint_index - 1][$j - $istart]) Else $aarray[$icopyto_index][$j] = $vvalue[$iinsertpoint_index - 1][$j - $istart] EndIf Else $aarray[$icopyto_index][$j] = "" EndIf EndIf Next $icopyto_index -= 1 $iinsertpoint_index -= 1 If $iinsertpoint_index = 0 Then ExitLoop 2 $iinsert_index = $vrange[$iinsertpoint_index] WEnd Next Case Else Return SetError(2, 0, -1) EndSwitch Return UBound($aarray, $ubound_rows) EndFunc Global Const $lvs_ex_gridlines = 1 Global $__binarycall_kernel32dll = DllOpen("kernel32.dll") Global $__binarycall_msvcrtdll = DllOpen("msvcrt.dll") Global $__binarycall_lasterror = "" Func _binarycall_getprocaddress($module, $proc) Local $ret = DllCall($__binarycall_kernel32dll, "ptr", "GetProcAddress", "ptr", $module, "str", $proc) If @ OR NOT $ret[0] Then Return SetError(1, @, 0) Return $ret[0] EndFunc Func _binarycall_loadlibrary($filename) Local $ret = DllCall($__binarycall_kernel32dll, "handle", "LoadLibraryW", "wstr", $filename) If @ Then Return SetError(1, @, 0) Return $ret[0] EndFunc Func _binarycall_lstrlena($ptr) Local $ret = DllCall($__binarycall_kernel32dll, "int", "lstrlenA", "ptr", $ptr) If @ Then Return SetError(1, @, 0) Return $ret[0] EndFunc Func _binarycall_alloc($code, $padding = 0) Local $length = BinaryLen($code) + $padding Local $ret = DllCall($__binarycall_kernel32dll, "ptr", "VirtualAlloc", "ptr", 0, "ulong_ptr", $length, "dword", 4096, "dword", 64) If @ OR NOT $ret[0] Then Return SetError(1, @, 0) If BinaryLen($code) Then Local $buffer = DllStructCreate("byte[" & $length & "]", $ret[0]) DllStructSetData($buffer, 1, $code) EndIf Return $ret[0] EndFunc Func _binarycall_regionsize($ptr) Local $buffer = DllStructCreate("ptr;ptr;dword;uint_ptr;dword;dword;dword") Local $ret = DllCall($__binarycall_kernel32dll, "int", "VirtualQuery", "ptr", $ptr, "ptr", DllStructGetPtr($buffer), "uint_ptr", DllStructGetSize($buffer)) If @ OR $ret[0] = 0 Then Return SetError(1, @, 0) Return DllStructGetData($buffer, 4) EndFunc Func _binarycall_free($ptr) Local $ret = DllCall($__binarycall_kernel32dll, "bool", "VirtualFree", "ptr", $ptr, "ulong_ptr", 0, "dword", 32768) If @ OR $ret[0] = 0 Then $ret = DllCall($__binarycall_kernel32dll, "bool", "GlobalFree", "ptr", $ptr) If @ OR $ret[0] <> 0 Then Return SetError(1, @, False) EndIf Return True EndFunc Func _binarycall_memorysearch($ptr, $length, $binary) Static $codebase If NOT $codebase Then If @AutoItX64 Then $codebase = _binarycall_create("0x4883EC084D85C94889C8742C4C39CA72254C29CA488D141131C9EB0848FFC14C39C97414448A1408453A140874EE48FFC04839D076E231C05AC3", "", 0, True, False) Else $codebase = _binarycall_create("0x5589E58B4D14578B4508568B550C538B7D1085C9742139CA721B29CA8D341031D2EB054239CA740F8A1C17381C1074F34039F076EA31C05B5E5F5DC3", "", 0, True, False) EndIf If NOT $codebase Then Return SetError(1, 0, 0) EndIf $binary = Binary($binary) Local $buffer = DllStructCreate("byte[" & BinaryLen($binary) & "]") DllStructSetData($buffer, 1, $binary) Local $ret = DllCallAddress("ptr:cdecl", $codebase, "ptr", $ptr, "uint", $length, "ptr", DllStructGetPtr($buffer), "uint", DllStructGetSize($buffer)) Return $ret[0] EndFunc Func _binarycall_base64decode($src) Static $codebase If NOT $codebase Then If @AutoItX64 Then $codebase = _binarycall_create("0x41544989CAB9FF000000555756E8BE000000534881EC000100004889E7F3A44C89D6E98A0000004439C87E0731C0E98D0000000FB66E01440FB626FFC00FB65E020FB62C2C460FB62424408A3C1C0FB65E034189EB41C1E4024183E3308A1C1C41C1FB044509E34080FF634189CC45881C08744C440FB6DFC1E5044489DF4088E883E73CC1FF0209C7418D44240241887C08014883C10380FB63742488D841C1E3064883C60483E03F4409D841884408FF89F389C84429D339D30F8C67FFFFFF4881C4000100005B5E5F5D415CC35EC3E8F9FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E0000003F3435363738393A3B3C3D00000063000000000102030405060708090A0B0C0D0E0F101112131415161718190000000000001A1B1C1D1E1F202122232425262728292A2B2C2D2E2F30313233", "", 132, True, False) Else $codebase = _binarycall_create("0x55B9FF00000089E531C05756E8F10000005381EC0C0100008B55088DBDF5FEFFFFF3A4E9C00000003B45140F8FC20000000FB65C0A028A9C1DF5FEFFFF889DF3FEFFFF0FB65C0A038A9C1DF5FEFFFF889DF2FEFFFF0FB65C0A018985E8FEFFFF0FB69C1DF5FEFFFF899DECFEFFFF0FB63C0A89DE83E630C1FE040FB6BC3DF5FEFFFFC1E70209FE8B7D1089F3881C074080BDF3FEFFFF63745C0FB6B5F3FEFFFF8BBDECFEFFFF8B9DE8FEFFFF89F083E03CC1E704C1F80209F88B7D1088441F0189D883C00280BDF2FEFFFF6374278A85F2FEFFFFC1E60683C10483E03F09F088441F0289D883C0033B4D0C0F8C37FFFFFFEB0231C081C40C0100005B5E5F5DC35EC3E8F9FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E0000003F3435363738393A3B3C3D00000063000000000102030405060708090A0B0C0D0E0F101112131415161718190000000000001A1B1C1D1E1F202122232425262728292A2B2C2D2E2F30313233", "", 132, True, False) EndIf If NOT $codebase Then Return SetError(1, 0, Binary("")) EndIf $src = String($src) Local $srclen = StringLen($src) Local $srcbuf = DllStructCreate("char[" & $srclen & "]") DllStructSetData($srcbuf, 1, $src) Local $dstlen = Int(($srclen + 2) / 4) * 3 + 1 Local $dstbuf = DllStructCreate("byte[" & $dstlen & "]") Local $ret = DllCallAddress("uint:cdecl", $codebase, "ptr", DllStructGetPtr($srcbuf), "uint", $srclen, "ptr", DllStructGetPtr($dstbuf), "uint", $dstlen) If $ret[0] = 0 Then Return SetError(2, 0, Binary("")) Return BinaryMid(DllStructGetData($dstbuf, 1), 1, $ret[0]) EndFunc Func _binarycall_lzmadecompress($src) Static $codebase If NOT $codebase Then If @AutoItX64 Then $codebase = _binarycall_create(_binarycall_base64decode("QVcxwEFWQVVBVFVXSInXVkiJzlMx20iB7OgAAABEiiFBgPzgdgnpyQAAAEGD7C1BiMf/wEGA/Cx38THA6wRBg+wJQYjG/8BBgPwId/GLRglEi24FQQ+2zkyJRCQoRQ+2/0HB5xBBiQFBD7bEAcG4AAMAANPgjYQAcA4AAEhjyOjIBAAATInpSInF6L0EAABIicMxwEyJ8kSI4EyLRCQoiNQl//8A/0QJ+EiF24lFAHQoTYXtdCNIjVfzSI1MJDhIg8YNTIkEJE2J6UmJ2EiJ7+g2AAAAicbrBb4BAAAASInp6IQEAACF9nQKSInZMdvodgQAAEiJ2EiBxOgAAABbXl9dQVxBXUFeQV/DVVNBV0FWQVVBVEFQTQHBQVFNicVRVkgB8lJIieX8SYn0iwdMjX8Eik8Cg8r/0+L30olV6Ijhg8r/0+L30olV5ADBiUXsuAEAAACJReCJRdyJRdhIiUXQRSnJKfaDy/8A0bgAAwAA0+BIjYg2BwAAuAAEAARMif/R6fOrvwUAAADoUAMAAP/PdfdEie9EicgrfSDB4ARBifpEI1XoRAHQTY0cR+hAAwAAD4WTAAAAik3sI33k0+eA6Qj22dPuAfe4AQAAAEiNPH++AAEAAMHnCEGD+QdNjbR/bA4AAHI0TInvSCt90A+2P9HnQYnzIf5BAfNPjRxe6O8CAACJwcHuCIPhATnOvgABAAB1DjnGd9jrDE2J8+jQAgAAOfBy9EyJ76pEiclBg/kEcg65AwAAAEGD+QpyA4PBA0EpyelDAgAAT42cT4ABAADomgIAAHUsi0XcQYP5B4lF4BnAi1XY99CLTdCD4AOJVdxBicGJTdhNjbdkBgAA6akAAABPjZxPmAEAAOhfAgAAdUZEicjB4AREAdBNjZxH4AEAAOhHAgAAdWpBg/kHuQkAAAByA4PBAkGJyUyJ70grfdBIO30gD4L9AQAAigdIA33QqumzAQAAT42cT7ABAADoCgIAAIt12HQhT42cT8gBAADo+AEAAIt13HQJi03ci3XgiU3gi03YiU3ci03QiU3YiXXQQYP5B7kIAAAAcgODwQNBiclNjbdoCgAATYnz6LsBAAB1FESJ0CnJweADvggAAABJjXxGBOs2TY1eAuicAQAAdRpEidC5CAAAAMHgA74IAAAASY28RgQBAADrEUmNvgQCAAC5EAAAAL4AAQAAiU3MuAEAAABJifvoYQEAAInCKfJy8gNVzEGD+QSJVcwPg7kAAABBg8EHuQMAAAA50XICidHB4Qa4AQAAAEmNvE9gAwAAvkAAAABJifvoHwEAAEGJwkEp8nLwQYP6BHJ4RInWRIlV0NHug2XQAf/Og03QAkGD+g5zFYnx0mXQi0XQRCnQTY20R14FAADrLIPuBOi6AAAA0evRZdBBOdhyBv9F0EEp2P/OdedNjbdEBgAAwWXQBL4EAAAAvwEAAACJ+E2J8+ioAAAAqAF0Awl90NHn/8516+sERIlV0P9F0EyJ74tNzEiJ+IPBAkgrRSBIOUXQd1RIif5IK3XQSItVGKyqSDnXcwT/yXX1SYn9D7bwTDttGA+C9fz//+gwAAAAKcBIi1UQTCtlCESJIkiLVWBMK20gRIkqSIPEKEFcQV1BXUFfW13DXli4AQAAAOvSgfsAAAABcgHDweMITDtlAHPmQcHgCEWKBCRJg8QBwynATY0cQ4H7AAAAAXMVweMITDtlAHPBQcHgCEWKBCRJg8QBidlBD7cTwekLD6/KQTnIcxOJy7kACAAAKdHB6QVmQQELAcDDKcvB6gVBKchmQSkTAcCDwAHDSLj////////////gbXN2Y3J0LmRsbHxtYWxsb2MASLj////////////gZnJlZQA=")) Else $codebase = _binarycall_create(_binarycall_base64decode("VYnlVzH/VlOD7EyLXQiKC4D54A+HxQAAADHA6wWD6S2I0ID5LI1QAXfziEXmMcDrBYPpCYjQgPkIjVABd/OIReWLRRSITeSLUwkPtsmLcwWJEA+2ReUBwbgAAwAA0+CNhABwDgAAiQQk6EcEAACJNCSJRdToPAQAAItV1InHi0Xkhf+JArgBAAAAdDaF9nQyi0UQg8MNiRQkiXQkFIl8JBCJRCQYjUXgiUQkDItFDIlcJASD6A2JRCQI6CkAAACLVdSJRdSJFCToAQQAAItF1IXAdAqJPCQx/+jwAwAAg8RMifhbXl9dw1dWU1WJ5YtFJAFFKFD8i3UYAXUcVot1FK2SUopO/oPI/9Pg99BQiPGDyP/T4PfQUADRifeD7AwpwEBQUFBQUFcp9laDy/+4AAMAANPgjYg2BwAAuAAEAATR6fOragVZ6MoCAADi+Yt9/ItF8Ct9JCH4iUXosADoywIAAA+FhQAAAIpN9CN97NPngOkI9tnT7lgB916NPH/B5wg8B1qNjH5sDgAAUVa+AAEAAFCwAXI0i338K33cD7Y/i23M0eeJ8SH+AfGNbE0A6JgCAACJwcHuCIPhATnOvgABAAB1DjnwctfrDIttzOh5AgAAOfBy9FqD+gSJ0XIJg/oKsQNyArEGKcpS60mwwOhJAgAAdRRYX1pZWln/NCRRUrpkBgAAsQDrb7DM6CwCAAB1LLDw6BMCAAB1U1g8B7AJcgKwC1CLdfwrddw7dSQPgs8BAACsi338qumOAQAAsNjo9wEAAIt12HQbsOTo6wEAAIt11HQJi3XQi03UiU3Qi03YiU3Ui03ciU3YiXXcWF9ZumgKAACxCAH6Ulc8B4jIcgIEA1CLbczovAEAAHUUi0Xoi33MweADKclqCF6NfEcE6zWLbcyDxQLomwEAAHUYi0Xoi33MweADaghZaghejbxHBAEAAOsQvwQCAAADfcxqEFm+AAEAAIlN5CnAQIn96GYBAACJwSnxcvMBTeSDfcQED4OwAAAAg0XEB4tN5IP5BHIDagNZi33IweEGKcBAakBejbxPYAMAAIn96CoBAACJwSnxcvOJTeiJTdyD+QRyc4nOg2XcAdHug03cAk6D+Q5zGbivAgAAKciJ8dJl3ANF3NHgA0XIiUXM6y2D7gToowAAANHr0WXcOV3gcgb/RdwpXeBOdei4RAYAAANFyIlFzMFl3ARqBF4p/0eJ+IttzOi0AAAAqAF0Awl93NHnTnXs6wD/RdyLTeSDwQKLffyJ+CtFJDlF3HdIif4rddyLVSisqjnXcwNJdfeJffwPtvA7fSgPgnH9///oKAAAACnAjWwkPItVIIt1+Ct1GIkyi1Usi338K30kiTrJW15fw15YKcBA69qB+wAAAAFyAcPB4whWi3X4O3Ucc+SLReDB4AisiUXgiXX4XsOLTcQPtsDB4QQDRegByOsGD7bAA0XEi23IjWxFACnAjWxFAIH7AAAAAXMci0wkOMFkJCAIO0wkXHOcihH/RCQ4weMIiFQkIInZD7dVAMHpCw+vyjlMJCBzF4nLuQAIAAAp0cHpBWYBTQABwI1sJEDDweoFKUwkICnLZilVAAHAg8ABjWwkQMO4///////gbXN2Y3J0LmRsbHxtYWxsb2MAuP//////4GZyZWUA")) EndIf If NOT $codebase Then Return SetError(1, 0, Binary("")) EndIf $src = Binary($src) Local $srclen = BinaryLen($src) Local $srcbuf = DllStructCreate("byte[" & $srclen & "]") DllStructSetData($srcbuf, 1, $src) Local $ret = DllCallAddress("ptr:cdecl", $codebase, "ptr", DllStructGetPtr($srcbuf), "uint_ptr", $srclen, "uint_ptr*", 0, "uint*", 0) If $ret[0] Then Local $dstbuf = DllStructCreate("byte[" & $ret[3] & "]", $ret[0]) Local $output = DllStructGetData($dstbuf, 1) DllCall($__binarycall_msvcrtdll, "none:cdecl", "free", "ptr", $ret[0]) Return $output EndIf Return SetError(2, 0, Binary("")) EndFunc Func _binarycall_relocation($base, $reloc) Local $size = Int(BinaryMid($reloc, 1, 2)) For $i = 3 To BinaryLen($reloc) Step $size Local $offset = Int(BinaryMid($reloc, $i, $size)) Local $ptr = $base + $offset DllStructSetData(DllStructCreate("ptr", $ptr), 1, DllStructGetData(DllStructCreate("ptr", $ptr), 1) + $base) Next EndFunc Func _binarycall_importlibrary($base, $length) Local $jmpbin, $jmpoff, $jmplen, $dllname, $procname If @AutoItX64 Then $jmpbin = Binary("0x48B8FFFFFFFFFFFFFFFFFFE0") $jmpoff = 2 Else $jmpbin = Binary("0xB8FFFFFFFFFFE0") $jmpoff = 1 EndIf $jmplen = BinaryLen($jmpbin) Do Local $ptr = _binarycall_memorysearch($base, $length, $jmpbin) If $ptr = 0 Then ExitLoop Local $stringptr = $ptr + $jmplen Local $stringlen = _binarycall_lstrlena($stringptr) Local $string = DllStructGetData(DllStructCreate("char[" & $stringlen & "]", $stringptr), 1) Local $split = StringSplit($string, "|") If $split[0] = 1 Then $procname = $split[1] ElseIf $split[0] = 2 Then If $split[1] Then $dllname = $split[1] $procname = $split[2] EndIf If $dllname AND $procname Then Local $handle = _binarycall_loadlibrary($dllname) If NOT $handle Then $__binarycall_lasterror = "LoadLibrary fail on " & $dllname Return SetError(1, 0, False) EndIf Local $proc = _binarycall_getprocaddress($handle, $procname) If NOT $proc Then $__binarycall_lasterror = "GetProcAddress failed on " & $procname Return SetError(2, 0, False) EndIf DllStructSetData(DllStructCreate("ptr", $ptr + $jmpoff), 1, $proc) EndIf Local $diff = Int($ptr - $base + $jmplen + $stringlen + 1) $base += $diff $length -= $diff Until $length <= $jmplen Return True EndFunc Func _binarycall_codeprepare($code) If NOT $code Then Return "" If IsBinary($code) Then Return $code $code = String($code) If StringLeft($code, 2) = "0x" Then Return Binary($code) If StringIsXDigit($code) Then Return Binary("0x" & $code) Return _binarycall_lzmadecompress(_binarycall_base64decode($code)) EndFunc Func _binarycall_symbolfind($codebase, $identify, $length = Default) $identify = Binary($identify) If IsKeyword($length) Then $length = _binarycall_regionsize($codebase) EndIf Local $ptr = _binarycall_memorysearch($codebase, $length, $identify) If $ptr = 0 Then Return SetError(1, 0, 0) Return $ptr + BinaryLen($identify) EndFunc Func _binarycall_symbollist($codebase, $symbol) If NOT IsArray($symbol) OR $codebase = 0 Then Return SetError(1, 0, 0) Local $tag = "" For $i = 0 To UBound($symbol) - 1 $tag &= "ptr " & $symbol[$i] & ";" Next Local $symbollist = DllStructCreate($tag) If @ Then Return SetError(1, 0, 0) For $i = 0 To UBound($symbol) - 1 $codebase = _binarycall_symbolfind($codebase, $symbol[$i]) DllStructSetData($symbollist, $symbol[$i], $codebase) Next Return $symbollist EndFunc Func _binarycall_create($code, $reloc = "", $padding = 0, $releaseonexit = True, $libraryimport = True) Local $binarycode = _binarycall_codeprepare($code) If NOT $binarycode Then Return SetError(1, 0, 0) Local $binarycodelen = BinaryLen($binarycode) Local $totalcodelen = $binarycodelen + $padding Local $codebase = _binarycall_alloc($binarycode, $padding) If NOT $codebase Then Return SetError(2, 0, 0) If $reloc Then $reloc = _binarycall_codeprepare($reloc) If NOT $reloc Then Return SetError(3, 0, 0) _binarycall_relocation($codebase, $reloc) EndIf If $libraryimport Then If NOT _binarycall_importlibrary($codebase, $binarycodelen) Then _binarycall_free($codebase) Return SetError(4, 0, 0) EndIf EndIf If $releaseonexit Then _binarycall_releaseonexit($codebase) EndIf Return SetError(0, $totalcodelen, $codebase) EndFunc Func _binarycall_releaseonexit($ptr) OnAutoItExitRegister("__BinaryCall_DoRelease") __binarycall_releaseonexit_handle($ptr) EndFunc Func __binarycall_dorelease() __binarycall_releaseonexit_handle() EndFunc Func __binarycall_releaseonexit_handle($ptr = Default) Static $ptrlist If @NumParams = 0 Then If IsArray($ptrlist) Then For $i = 1 To $ptrlist[0] _binarycall_free($ptrlist[$i]) Next EndIf Else If NOT IsArray($ptrlist) Then Local $initarray[1] = [0] $ptrlist = $initarray EndIf If IsPtr($ptr) Then Local $array = $ptrlist Local $size = UBound($array) ReDim $array[$size + 1] $array[$size] = $ptr $array[0] += 1 $ptrlist = $array EndIf EndIf EndFunc Global Const $json_pretty_print = 128 Global Const $json_strict_print = 256 Global Const $json_unquoted_string = 512 Global Const $jsmn_error_nomem = -1 Func __jsmn_runtimeloader($procname = "") Static $symbollist If NOT IsDllStruct($symbollist) Then Local $code If @AutoItX64 Then $code = "AwAAAAQfCAAAAAAAAAA1HbEvgTNrvX54gCiWSTVmt5v7RCdoFJ/zhkKmwcm8yVqZPjJBoVhNHHAIzrHWKbZh1J0QAUaHB5zyQTilTmWa9O0OKeLrk/Jg+o7CmMzjEk74uPongdHv37nwYXvg97fiHvjP2bBzI9gxSkKq9Cqh/GxSHIlZPYyW76pXUt//25Aqs2Icfpyay/NFd50rW7eMliH5ynkrp16HM1afithVrO+LpSaz/IojowApmXnBHUncHliDqbkx6/AODUkyDm1hj+AiEZ9Me1Jy+hBQ1/wC/YnuuYSJvNAKp6XDnyc8Nwr54Uqx5SbUW2CezwQQ7aXX/HFiHSKpQcFW/gi8oSx5nsoxUXVjxeNI/L7z6GF2mfu3Tnpt7hliWEdA2r2VB+TIM7Pgwl9X3Ge0T3KJQUaRtLJZcPvVtOuKXr2Q9wy7hl80hVRrt9zYrbjBHXLrRx/HeIMkZwxhmKo/dD/vvaNgE+BdU8eeJqFBJK2alrK2rh2WkRynftyepm1WrdKrz/5KhQPp/4PqH+9IADDjoGBbfvJQXdT+yiO8DtfrVnd+JOEKsKEsdgeM3UXx5r6tEHO9rYWbzbnyEiX7WozZemry+vBZMMtHn1aA63+RcDQED73xOsnj00/9E5Z6hszM5Hi8vi6Hw3iOgf3cHwcXG44aau0JpuA2DlrUvnJOYkNnY+bECeSdAR1UQkFNyqRoH2xm4Y7gYMCPsFtPBlwwleEKI27SsUq1ZHVQvFCoef7DXgf/GwPCAvwDMIQfb3hJtIVubOkASRQZVNIJ/y4KPrn/gcASV7fvMjE34loltTVlyqprUWxpI51tN6vhTOLAp+CHseKxWaf9g1wdbVs0e/5xAiqgJbmKNi9OYbhV/blpp3SL63XKxGiHdxhK1aR+4rUY4eckNbaHfW7ob+q7aBoHSs6LVX9lWakb/xWxwQdwcX/7/C+TcQSOOg6rLoWZ8wur9qp+QwzoCbXkf04OYpvD5kqgEiwQnB90kLtcA+2XSbDRu+aq02eNNCzgkZujeL/HjVISjf2EuQKSsZkBhS15eiXoRgPaUoQ5586VS7t7rhM8ng5LiVzoUQIZ0pNKxWWqD+gXRBvOMIXY2yd0Ei4sE5KFIEhbs3u8vwP7nFLIpZ/RembPTuc0ZlguGJgJ2F5iApfia+C2tRYRNjVCqECCveWw6P2Btfaq9gw7cWWmJflIQbjxtccDqsn52cftLqXSna9zk05mYdJSV8z2W7vM1YJ5Rd82v0j3kau710A/kQrN41bdaxmKjL+gvSRlOLB1bpvkCtf9+h+eVA4XIkIXKFydr1OjMZ8wq2FIxPJXskAe4YMgwQmeWZXMK1KBbLB3yQR1YOYaaHk1fNea9KsXgs5YLbiP/noAusz76oEDo/DJh1aw7cUwdhboVPg1bNq88mRb5RGa13KDK9uEET7OA02KbSL+Q4HOtyasLUoVrZzVyd8iZPoGrV36vHnj+yvG4fq6F/fkug/sBRp186yVZQVmdAgFd+WiRLnUjxHUKJ6xBbpt4FTP42E/PzPw3JlDb0UQtXTDnIL0CWqbns2E7rZ5PBwrwQYwvBn/gaEeLVGDSh84DfW4zknIneGnYDXdVEHC+ITzejAnNxb1duB+w2aVTk64iXsKHETq53GMH6DuFi0oUeEFb/xp0HsRyNC8vBjOq3Kk7NZHxCQLh7UATFttG7sH+VIqGjjNwmraGJ0C92XhpQwSgfAb3KHucCHGTTti0sn6cgS3vb36BkjGKsRhXVuoQCFH96bvTYtl8paQQW9ufRfvxPqmU0sALdR0fIvZwd7Z8z0UoEec6b1Sul4e60REj/H4scb6N2ryHBR9ua5N1YxJu1uwgoLXUL2wT9ZPBjPjySUzeqXikUIKKYgNlWy+VlNIiWWTPtKpCTr508logA==" Else $code = "AwAAAASFBwAAAAAAAAA1HbEvgTNrvX54gCiqsa1mt5v7RCdoAFjCfVE40DZbE5UfabA9UKuHrjqOMbvjSoB2zBJTEYEQejBREnPrXL3VwpVOW+L9SSfo0rTfA8U2W+Veqo1uy0dOsPhl7vAHbBHrvJNfEUe8TT0q2eaTX2LeWpyrFEm4I3mhDJY/E9cpWf0A78e+y4c7NxewvcVvAakIHE8Xb8fgtqCTVQj3Q1eso7n1fKQj5YsQ20A86Gy9fz8dky78raeZnhYayn0b1riSUKxGVnWja2i02OvAVM3tCCvXwcbSkHTRjuIAbMu2mXF1UpKci3i/GzPmbxo9n/3aX/jpR6UvxMZuaEDEij4yzfZv7EyK9WCNBXxMmtTp3Uv6MZsK+nopXO3C0xFzZA/zQObwP3zhJ4sdatzMhFi9GAM70R4kgMzsxQDNArueXj+UFzbCCFZ89zXs22F7Ixi0FyFTk3jhH56dBaN65S+gtPztNGzEUmtk4M8IanhQSw8xCXr0x0MPDpDFDZs3aN5TtTPYmyk3psk7OrmofCQGG5cRcqEt9902qtxQDOHumfuCPMvU+oMjzLzBVEDnBbj+tY3y1jvgGbmEJguAgfB04tSeAt/2618ksnJJK+dbBkDLxjB4xrFr3uIFFadJQWUckl5vfh4MVXbsFA1hG49lqWDa7uSuPCnOhv8Yql376I4U4gfcF8LcgorkxS+64urv2nMUq6AkBEMQ8bdkI64oKLFfO7fGxh5iMNZuLoutDn2ll3nq4rPi4kOyAtfhW0UPyjvqNtXJ/h0Wik5Mi8z7BVxaURTDk81TP8y9+tzjySB/uGfHFAzjF8DUY1vqJCgn0GQ8ANtiiElX/+Wnc9HWi2bEEXItbm4yv97QrEPvJG9nPRBKWGiAQsIA5J+WryX5NrfEfRPk0QQwyl16lpHlw6l0UMuk7S21xjQgyWo0MywfzoBWW7+t4HH9sqavvP4dYAw81BxXqVHQhefUOS23en4bFUPWE98pAN6bul+kS767vDK34yTC3lA2a8wLrBEilmFhdB74fxbAl+db91PivhwF/CR4Igxr35uLdof7+jAYyACopQzmsbHpvAAwT2lapLix8H03nztAC3fBqFSPBVdIv12lsrrDw4dfhJEzq7AbL/Y7L/nIcBsQ/3UyVnZk4kZP1KzyPCBLLIQNpCVgOLJzQuyaQ6k2QCBy0eJ0ppUyfp54LjwVg0X7bwncYbAomG4ZcFwTQnC2AX3oYG5n6Bz4SLLjxrFsY+v/SVa+GqH8uePBh1TPkHVNmzjXXymEf5jROlnd+EjfQdRyitkjPrg2HiQxxDcVhCh5J2L5+6CY9eIaYgrbd8zJnzAD8KnowHwh2bi4JLgmt7ktJ1XGizox7cWf3/Dod56KAcaIrSVw9XzYybdJCf0YRA6yrwPWXbwnzc/4+UDkmegi+AoCEMoue+cC7vnYVdmlbq/YLE/DWJX383oz2Ryq8anFrZ8jYvdoh8WI+dIugYL2SwRjmBoSwn56XIaot/QpMo3pYJIa4o8aZIZrjvB7BXO5aCDeMuZdUMT6AXGAGF1AeAWxFd2XIo1coR+OplMNDuYia8YAtnSTJ9JwGYWi2dJz3xrxsTQpBONf3yn8LVf8eH+o5eXc7lzCtHlDB+YyI8V9PyMsUPOeyvpB3rr9fDfNy263Zx33zTi5jldgP2OetUqGfbwl+0+zNYnrg64bluyIN/Awt1doDCQkCKpKXxuPaem/SyCHrKjg" EndIf Local $symbol[] = ["jsmn_parse", "jsmn_init", "json_string_decode", "json_string_encode"] Local $codebase = _binarycall_create($code) If @ Then Exit MsgBox(16, "Json", "Startup Failure!") $symbollist = _binarycall_symbollist($codebase, $symbol) If @ Then Exit MsgBox(16, "Json", "Startup Failure!") EndIf If $procname Then Return DllStructGetData($symbollist, $procname) EndFunc Func json_stringencode($string, $option = 0) Static $json_stringencode = __jsmn_runtimeloader("json_string_encode") Local $length = StringLen($string) * 6 + 1 Local $buffer = DllStructCreate("wchar[" & $length & "]") Local $ret = DllCallAddress("int:cdecl", $json_stringencode, "wstr", $string, "ptr", DllStructGetPtr($buffer), "uint", $length, "int", $option) Return SetError($ret[0], 0, DllStructGetData($buffer, 1)) EndFunc Func json_stringdecode($string) Static $json_stringdecode = __jsmn_runtimeloader("json_string_decode") Local $length = StringLen($string) + 1 Local $buffer = DllStructCreate("wchar[" & $length & "]") Local $ret = DllCallAddress("int:cdecl", $json_stringdecode, "wstr", $string, "ptr", DllStructGetPtr($buffer), "uint", $length) Return SetError($ret[0], 0, DllStructGetData($buffer, 1)) EndFunc Func json_decode($json, $inittokencount = 1000) Static $jsmn_init = __jsmn_runtimeloader("jsmn_init"), $jsmn_parse = __jsmn_runtimeloader("jsmn_parse") If $json = "" Then $json = '""' Local $tokenlist, $ret Local $parser = DllStructCreate("uint pos;int toknext;int toksuper") Do DllCallAddress("none:cdecl", $jsmn_init, "ptr", DllStructGetPtr($parser)) $tokenlist = DllStructCreate("byte[" & ($inittokencount * 20) & "]") $ret = DllCallAddress("int:cdecl", $jsmn_parse, "ptr", DllStructGetPtr($parser), "wstr", $json, "ptr", DllStructGetPtr($tokenlist), "uint", $inittokencount) $inittokencount *= 2 Until $ret[0] <> $jsmn_error_nomem Local $next = 0 Return SetError($ret[0], 0, _json_token($json, DllStructGetPtr($tokenlist), $next)) EndFunc Func _json_token(ByRef $json, $ptr, ByRef $next) If $next = -1 Then Return NULL Local $token = DllStructCreate("int;int;int;int", $ptr + ($next * 20)) Local $type = DllStructGetData($token, 1) Local $start = DllStructGetData($token, 2) Local $end = DllStructGetData($token, 3) Local $size = DllStructGetData($token, 4) $next += 1 If $type = 0 AND $start = 0 AND $end = 0 AND $size = 0 Then $next = -1 Return NULL EndIf Switch $type Case 0 Local $primitive = StringMid($json, $start + 1, $end - $start) Switch $primitive Case "true" Return True Case "false" Return False Case "null" Return NULL Case Else If StringRegExp($primitive, "^[+\-0-9]") Then Return Number($primitive) Else Return json_stringdecode($primitive) EndIf EndSwitch Case 1 Local $object = json_objcreate() For $i = 0 To $size - 1 Step 2 Local $key = _json_token($json, $ptr, $next) Local $value = _json_token($json, $ptr, $next) If NOT IsString($key) Then $key = json_encode($key) If $object.exists($key) Then $object.remove($key) $object.add($key, $value) Next Return $object Case 2 Local $array[$size] For $i = 0 To $size - 1 $array[$i] = _json_token($json, $ptr, $next) Next Return $array Case 3 Return json_stringdecode(StringMid($json, $start + 1, $end - $start)) EndSwitch EndFunc Func json_isobject(ByRef $object) Return (IsObj($object) AND ObjName($object) = "Dictionary") EndFunc Func json_encode_compact($data, $option = 0) Select Case IsString($data) Return '"' & json_stringencode($data, $option) & '"' Case IsNumber($data) Return $data Case IsArray($data) AND UBound($data, 0) = 1 Local $json = "[" For $i = 0 To UBound($data) - 1 $json &= json_encode_compact($data[$i], $option) & "," Next If StringRight($json, 1) = "," Then $json = StringTrimRight($json, 1) Return $json & "]" Case json_isobject($data) Local $json = "{" Local $keys = $data.keys() For $i = 0 To UBound($keys) - 1 $json &= '"' & json_stringencode($keys[$i], $option) & '":' & json_encode_compact($data.item($keys[$i]), $option) & "," Next If StringRight($json, 1) = "," Then $json = StringTrimRight($json, 1) Return $json & "}" Case IsBool($data) Return StringLower($data) Case IsPtr($data) Return Number($data) Case IsBinary($data) Return '"' & json_stringencode(BinaryToString($data, 4), $option) & '"' Case Else Return "null" EndSelect EndFunc Func json_encode_pretty($data, $option, $indent, $arraysep, $objectsep, $colonsep, $arraycrlf = Default, $objectcrlf = Default, $nextident = "") Local $thisident = $nextident, $json = "" Select Case IsString($data) Local $string = json_stringencode($data, $option) If BitAND($option, $json_unquoted_string) AND NOT BitAND($option, $json_strict_print) AND NOT StringRegExp($string, "[\s,:]") AND NOT StringRegExp($string, "^[+\-0-9]") Then Return $string Else Return '"' & $string & '"' EndIf Case IsArray($data) AND UBound($data, 0) = 1 If UBound($data) = 0 Then Return "[]" If IsKeyword($arraycrlf) Then $arraycrlf = "" Local $match = StringRegExp($arraysep, "[\r\n]+$", 3) If IsArray($match) Then $arraycrlf = $match[0] EndIf If $arraycrlf Then $nextident &= $indent Local $length = UBound($data) - 1 For $i = 0 To $length If $arraycrlf Then $json &= $nextident $json &= json_encode_pretty($data[$i], $option, $indent, $arraysep, $objectsep, $colonsep, $arraycrlf, $objectcrlf, $nextident) If $i < $length Then $json &= $arraysep Next If $arraycrlf Then Return "[" & $arraycrlf & $json & $arraycrlf & $thisident & "]" Return "[" & $json & "]" Case json_isobject($data) If $data.count = 0 Then Return "{}" If IsKeyword($objectcrlf) Then $objectcrlf = "" Local $match = StringRegExp($objectsep, "[\r\n]+$", 3) If IsArray($match) Then $objectcrlf = $match[0] EndIf If $objectcrlf Then $nextident &= $indent Local $keys = $data.keys() Local $length = UBound($keys) - 1 For $i = 0 To $length If $objectcrlf Then $json &= $nextident $json &= json_encode_pretty(String($keys[$i]), $option, $indent, $arraysep, $objectsep, $colonsep) & $colonsep & json_encode_pretty($data.item($keys[$i]), $option, $indent, $arraysep, $objectsep, $colonsep, $arraycrlf, $objectcrlf, $nextident) If $i < $length Then $json &= $objectsep Next If $objectcrlf Then Return "{" & $objectcrlf & $json & $objectcrlf & $thisident & "}" Return "{" & $json & "}" Case Else Return json_encode_compact($data, $option) EndSelect EndFunc Func json_encode($data, $option = 0, $indent = Default, $arraysep = Default, $objectsep = Default, $colonsep = Default) If BitAND($option, $json_pretty_print) Then Local $strict = BitAND($option, $json_strict_print) If IsKeyword($indent) Then $indent = @ Else $indent = json_stringdecode($indent) If StringRegExp($indent, "[^\t ]") Then $indent = @ EndIf If IsKeyword($arraysep) Then $arraysep = "," & @CRLF Else $arraysep = json_stringdecode($arraysep) If $arraysep = "" OR StringRegExp($arraysep, "[^\s,]|,.*,") OR ($strict AND NOT StringRegExp($arraysep, ",")) Then $arraysep = "," & @CRLF EndIf If IsKeyword($objectsep) Then $objectsep = "," & @CRLF Else $objectsep = json_stringdecode($objectsep) If $objectsep = "" OR StringRegExp($objectsep, "[^\s,]|,.*,") OR ($strict AND NOT StringRegExp($objectsep, ",")) Then $objectsep = "," & @CRLF EndIf If IsKeyword($colonsep) Then $colonsep = ": " Else $colonsep = json_stringdecode($colonsep) If $colonsep = "" OR StringRegExp($colonsep, "[^\s,:]|[,:].*[,:]") OR ($strict AND (StringRegExp($colonsep, ",") OR NOT StringRegExp($colonsep, ":"))) Then $colonsep = ": " EndIf Return json_encode_pretty($data, $option, $indent, $arraysep, $objectsep, $colonsep) ElseIf BitAND($option, $json_unquoted_string) Then Return json_encode_pretty($data, $option, "", ",", ",", ":") Else Return json_encode_compact($data, $option) EndIf EndFunc Func json_objcreate() Local $object = ObjCreate("Scripting.Dictionary") $object.comparemode = 0 Return $object EndFunc Func json_objget(ByRef $object, $key) $key = String($key) If $object.exists($key) Then Return $object.item($key) Return SetError(1, 0, "") EndFunc Func json_objexists(ByRef $object, $key) Return $object.exists(String($key)) EndFunc Func json_get(ByRef $var, $notation) Local $match = StringRegExp($notation, "(^\[([^\]]+)\])|(^\.([^\.\[]+))", 3) If IsArray($match) Then Local $index If UBound($match) = 4 Then $index = String(json_decode($match[3])) $notation = StringTrimLeft($notation, StringLen($match[2])) Else $index = json_decode($match[1]) $notation = StringTrimLeft($notation, StringLen($match[0])) EndIf Local $item If IsString($index) AND json_isobject($var) AND json_objexists($var, $index) Then $item = json_objget($var, $index) ElseIf IsInt($index) AND IsArray($var) AND UBound($var, 0) = 1 AND $index >= 0 AND $index < UBound($var) Then $item = $var[$index] Else Return SetError(1, 0, "") EndIf If NOT $notation Then Return $item Local $ret = json_get($item, $notation) Return SetError(@, 0, $ret) EndIf Return SetError(2, 0, "") EndFunc Func _httprequest($url, $method = "GET", $postdata = "") $method = StringLower($method) Local $ohttp = ObjCreate("WinHttp.WinHttpRequest.5.1") $ohttp.open($method, $url, False) $ohttp.setrequestheader("User-Agent", "Lofty Tibiabot XY" & @AutoItVersion) $ohttp.setrequestheader("Referer", "http:/lofty-tibiabot.com/") $ohttp.setrequestheader("X-Requested-With", "XMLHttpRequest") If $method = "get" Then $ohttp.send() Else $ohttp.setrequestheader("Content-Type", "application/x-www-form-urlencoded") $ohttp.setrequestheader("Content-Length", StringLen($postdata)) $ohttp.send($postdata) EndIf $ohttp.waitforresponse Local $headerresponses = $ohttp.getallresponseheaders() Local $ret[4] If StringInStr($headerresponses, "Location:") <> 0 Then $ret["0"] = $ohttp.getresponseheader("Location") $ret["1"] = 1 Else $ret["0"] = "" $ret["1"] = 0 EndIf $ret["2"] = $ohttp.responsetext $ret["3"] = $ohttp.getallresponseheaders() Return $ret EndFunc Func urlencode($vdata) If IsBool($vdata) Then Return $vdata Local $adata = StringToASCIIArray($vdata, Default, Default, 2) Local $sout = "", $total = UBound($adata) - 1 For $i = 0 To $total Switch $adata[$i] Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126 $sout &= Chr($adata[$i]) Case 32 $sout &= "+" Case Else $sout &= "%" & Hex($adata[$i], 2) EndSwitch Next Return $sout EndFunc Local $h_imagesearchdll = -1 Func _winapi_wow64enablewow64fsredirection($benable) Local $aret = DllCall("kernel32.dll", "boolean", "Wow64EnableWow64FsRedirection", "boolean", $benable) If @ Then Return SetError(@, @, 0) Return $aret[0] EndFunc Func _imagesearch($findimage, $resultposition, ByRef $x, ByRef $y, $tolerance, $transparency = 0) Return _imagesearcharea($findimage, $resultposition, 0, 0, @DesktopWidth, @DesktopHeight, $x, $y, $tolerance, $transparency) EndFunc Func _imagesearcharea($findimage, $resultposition, $x1, $y1, $right, $bottom, ByRef $x, ByRef $y, $tolerance = 0, $transparency = 0) If NOT FileExists($findimage) Then Return "Image File not found" If $tolerance < 0 OR $tolerance > 255 Then $tolerance = 0 If $h_imagesearchdll = -1 Then _imagesearchstartup() If $transparency <> 0 Then $findimage = "*" & $transparency & " " & $findimage If $tolerance > 0 Then $findimage = "*" & $tolerance & " " & $findimage $result = DllCall($h_imagesearchdll, "str", "ImageSearch", "int", $x1, "int", $y1, "int", $right, "int", $bottom, "str", $findimage) If @ Then Return "DllCall Error=" & @ If $result = "0" OR NOT IsArray($result) OR $result[0] = "0" Then Return False $array = StringSplit($result[0], "|") If (UBound($array) >= 4) Then $x = Int(Number($array[2])) $y = Int(Number($array[3])) If $resultposition = 1 Then $x = $x + Int(Number($array[4]) / 2) $y = $y + Int(Number($array[5]) / 2) EndIf Return True EndIf EndFunc Func _imagesearchstartup() _winapi_wow64enablewow64fsredirection(True) $sosarch = @OSArch $sautoitx64 = @AutoItX64 If $sosarch = "X86" OR $sautoitx64 = 0 Then $h_imagesearchdll = DllOpen("ImageSearchDLLx32.dll") If $h_imagesearchdll = -1 Then Return "DllOpen failure" ElseIf $sosarch = "X64" AND $sautoitx64 = 1 Then $h_imagesearchdll = DllOpen("ImageSearchDLLx64.dll") If $h_imagesearchdll = -1 Then Return "DllOpen failure" Else Return "Inconsistent or incompatible Script/Windows/CPU Architecture" EndIf Return True EndFunc If NOT FileExists("ImageSearchDLLx32.dll") Then FileInstall("ImageSearchDLLx32.dll", "ImageSearchDLLx32.dll", 1) If NOT FileExists("ImageSearchDLLx64.dll") Then FileInstall("ImageSearchDLLx64.dll", "ImageSearchDLLx64.dll", 1) If NOT FileExists("msvcr110d.dll") Then FileInstall("msvcr110d.dll", "msvcr110d.dll", 1) If NOT FileExists("msvcr110.dll") Then FileInstall("msvcr110.dll", "msvcr110.dll", 1) Opt("GUIResizeMode", 802) Opt("MouseCoordMode", 0) Opt("PixelCoordMode", 0) Opt("GUICloseOnESC", 0) Opt("TrayOnEventMode", 1) HotKeySet("{PAUSE}", "MouseCord") HotKeySet("+!s", "slimGetPos") HotKeySet("{INSERT}", "slimGetPos") HotKeySet("{END}", "runePos") Global Const $server = "http://lofty-tibiabot.com/autoit/index.php?act=" Global Const $datepremium = "http://lofty-tibiabot.com/autoit/datepremium.php?act=" Global Const $endpoint_login = $server & "login" Global Const $endpoint_pdays = $datepremium & "pdays" Global $username Global $wintitle Global $timerrefreshmp Global $timerrefreshhp Global $isattacking = False Global $islooting = False Global $isrunemaking = False Global $iswalking = False Global $ishealinguh = False Global $isslimtraining = False Global $isequiping = False Global $ispicking = False Global $isfishing = False Global $ishotkeyusing = False Global $iseating = False Global $isaiming = False Global $mousepos = MouseGetPos() Global $posforbp = $mousepos Global $fishmax Global $fishcount = 0 Global $hpbar Global $fishpos[1][2] Global $marker[5][2] Global $irunes = 0 Global $fdiff Global $xmiddle, $ymiddle Global $days = 0 Global $mpdrinkcount = 1 Global $default = 15395562 Global $ud = _getuuid() Global Const $debug_mode = False Global Const $lofty = "http://lofty-tibiabot.com/" Global $mediviaclient Global $tibijkaclient Global $darkotclient If NOT $debug_mode Then _chooseclient() Else _chooseclient() EndIf Func _login() Global $guilogin = GUICreate("Lofty TibiaBot", 274, 162, -1, -1) GUICtrlCreateLabel("Welcome my Dear", 16, 8, 226, 17, $ss_center) GUICtrlCreateLabel("Account:", 16, 40, 47, 17) GUICtrlCreateLabel("Password:", 16, 72, 53, 17) Global $inputusername = GUICtrlCreateInput("", 72, 37, 177, 21) Global $inputpassword = GUICtrlCreateInput("", 72, 69, 177, 21, BitOR($gui_ss_default_input, $es_password)) Global $buttonlogin = GUICtrlCreateButton("Login", 176, 104, 75, 25) GUICtrlCreateLabel("lofty-tibiabot.com", 16, 134, 85, 25) GUISetState(@SW_SHOW) While 1 $nmsg = GUIGetMsg() Switch $nmsg Case $gui_event_close Exit Case $buttonlogin If GUICtrlRead($inputpassword) <> "" AND GUICtrlRead($inputusername) <> "" Then buttonloginclick() Else MsgBox(16, "Notification ", " Please enter the full information above") EndIf EndSwitch WEnd EndFunc Func _chooseclient() $guichooseclient = GUICreate("Lofty TibiaBot", 355, 163, -1, -1) GUICtrlCreateLabel("Choose Your OTS", 40, 18, 290, 17, $ss_center) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $btnmediviaclient = GUICtrlCreateButton("Medivia", 15, 58, 70, 35) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") $btnnastariusclient = GUICtrlCreateButton("Nastarius", 100, 58, 70, 35) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") $btndarkotclient = GUICtrlCreateButton("DarkOT", 185, 58, 70, 35) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") $btntibijkaclient = GUICtrlCreateButton("Others", 270, 58, 70, 35) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") $supplist = GUICtrlCreateButton("Supported list", 270, 134, 70, 20) GUICtrlCreateLabel("lofty-tibiabot.com", 15, 134, 85, 25) GUISetState(@SW_SHOW) GUICtrlSetTip($btnmediviaclient, "Support for Medivia OTS Client", "Client Choose", 1, 1) GUICtrlSetTip($btndarkotclient, "Support for DarkOT OTS Client", "Client Choose", 1, 1) GUICtrlSetTip($btnnastariusclient, "Support for Nastarius OTS Client", "Client Choose", 1, 1) GUICtrlSetTip($btntibijkaclient, "Support for others 7.1-8.0 OTS which looks like official clients. Click supported list for more info", "Client Choose", 1, 1) While 1 $nmsg = GUIGetMsg() Switch $nmsg Case $gui_event_close Exit Case $btnmediviaclient $mediviaclient = True $tibijkaclient = False $darkotclient = False GUIDelete($guichooseclient) _guimain() Case $btnnastariusclient $mediviaclient = False $tibijkaclient = False $darkotclient = False GUIDelete($guichooseclient) _guimain() Case $btntibijkaclient $mediviaclient = False $tibijkaclient = True $darkotclient = False GUIDelete($guichooseclient) _guimain() Case $btndarkotclient $mediviaclient = False $tibijkaclient = True $darkotclient = True GUIDelete($guichooseclient) _guimain() Case $supplist ShellExecute("supportedOts.txt") EndSwitch WEnd EndFunc Func _guimain() If NOT $debug_mode Then ProgressOn("LoftyBot", "", "Connecting..") For $i = 0 To 100 ProgressSet($i) Sleep(7) Next ProgressSet(100, "Done") ProgressOff() EndIf Global $guimain = GUICreate("Lofty TibiaBot", 471, 500, -1, -1) Global $premiumdays = GUICtrlCreateLabel("", 16, 15, 281, 25) GUICtrlSetData($premiumdays, "Cracked by Narkon from mpcforum.pl") GUICtrlSetColor(-2, $color_green) Global $menuitem1 = GUICtrlCreateMenu("&File") Global $menuitem4 = GUICtrlCreateMenuItem("Disabled - Save Settings" & @ & "", $menuitem1) Global $menuitem5 = GUICtrlCreateMenuItem("Disabled - Load Settings" & @ & "", $menuitem1) Global $menuitem2 = GUICtrlCreateMenu("&Help") Global $menuitem3 = GUICtrlCreateMenuItem("BP Set-Up" & @ & "", $menuitem2) Global $tab1 = GUICtrlCreateTab(10, 50, 453, 421) Global $tabmain = GUICtrlCreateTabItem("Main") Global $group3 = GUICtrlCreateGroup("Change window title", 28, 265, 415, 135) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $label20 = GUICtrlCreateLabel("Change window title if You want use two bots", 38, 295, 278, 17) Global $changetitle = GUICtrlCreateInput("Medivia Online", 38, 325, 121, 22) Global $changetitlebtn = GUICtrlCreateButton("Change", 168, 323, 75, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $group4 = GUICtrlCreateGroup("Do these two things firstly or bot won't work | If client is inactive values will return 0", 28, 81, 415, 171) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $check = GUICtrlCreateButton("Manual Point HP", 172, 101, 131, 25) Global $autocheck = GUICtrlCreateButton("Auto Point HP", 38, 101, 131, 25) Global $actual_mp = GUICtrlCreateLabel("", 170, 155, 29, 21) Global $actual_hp = GUICtrlCreateLabel("", 170, 135, 29, 21) $label1 = GUICtrlCreateLabel("Your Actual HP is about -", 40, 135, 123, 17) $label6 = GUICtrlCreateLabel("%", 200, 155, 12, 17) $label4 = GUICtrlCreateLabel("%", 200, 135, 12, 17) $label5 = GUICtrlCreateLabel("Your Actual MP is about -", 40, 155, 123, 17) Global $marktibia = GUICtrlCreateButton("Mark Tibia Region", 38, 184, 211, 25) Global $winpos = GUICtrlCreateLabel("", 138, 219, 199, 17) $label23 = GUICtrlCreateLabel("Your window pos -", 38, 219, 103, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) Global $tabspells = GUICtrlCreateTabItem("Spells") $group8 = GUICtrlCreateGroup("Spells", 28, 100, 415, 135) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $hppercent = GUICtrlCreateInput("80", 230, 137, 29, 22) $label8 = GUICtrlCreateLabel("Above", 192, 170, 34, 17) $label7 = GUICtrlCreateLabel("Below", 192, 140, 30, 17) $label3 = GUICtrlCreateLabel("% MANA", 260, 170, 50, 17) Global $mppercent = GUICtrlCreateInput("80", 230, 167, 29, 22) $label2 = GUICtrlCreateLabel("% HP", 260, 140, 30, 17) Global $checkbox_spell_cast = GUICtrlCreateCheckbox("", 310, 167, 17, 17) Global $checkbox_heal = GUICtrlCreateCheckbox("", 310, 137, 17, 17) Global $spelltocast = GUICtrlCreateInput("Adori Gran", 98, 167, 79, 22) Global $healspell = GUICtrlCreateInput("Exura", 98, 137, 79, 22) $label10 = GUICtrlCreateLabel("Cast Spell", 45, 170, 50, 17) $label9 = GUICtrlCreateLabel("Heal with", 45, 140, 50, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) Global $tabrunesaction = GUICtrlCreateTabItem("RunesActions") Global $group1 = GUICtrlCreateGroup("Rune Maker", 28, 90, 415, 181) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $label14 = GUICtrlCreateLabel("Spell", 40, 115, 27, 17) Global $runespell = GUICtrlCreateInput("Adori Vita Vis", 70, 115, 81, 22) $label15 = GUICtrlCreateLabel("If MP above %", 160, 115, 73, 17) Global $runemp = GUICtrlCreateInput("80", 238, 115, 31, 22) $label16 = GUICtrlCreateLabel("Take blanks from BP", 40, 145, 103, 17) Global $blanksbp = GUICtrlCreateInput("2", 156, 143, 31, 22) $label17 = GUICtrlCreateLabel("Put runes to BP", 40, 172, 78, 17) Global $runesbp = GUICtrlCreateInput("3", 133, 170, 31, 22) $label117 = GUICtrlCreateLabel("Increase both BPs inputted above after", 40, 200, 205, 17) Global $incbp = GUICtrlCreateInput("60", 233, 197, 31, 22) $label118 = GUICtrlCreateLabel("minutes", 270, 200, 35, 17) Global $incbpcheck = GUICtrlCreateCheckbox("", 317, 200, 17, 17) $label18 = GUICtrlCreateLabel("Make Runes", 40, 245, 65, 17) Global $makerunes = GUICtrlCreateCheckbox("", 110, 244, 17, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) $group12 = GUICtrlCreateGroup("Runes Healer", 28, 282, 415, 55) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $hppercentuh = GUICtrlCreateInput("50", 206, 304, 29, 22) $label37 = GUICtrlCreateLabel("Below", 168, 307, 30, 17) $label38 = GUICtrlCreateLabel("% HP", 242, 307, 30, 17) Global $checkbox_uh_heal = GUICtrlCreateCheckbox("", 286, 307, 17, 17) $label89 = GUICtrlCreateLabel("Heal self by rune", 41, 307, 100, 17) Global $toheal = GUICtrlCreateCombo("", 122, 304, 38, 22) GUICtrlSetData(-1, "UH|IH|", "UH") GUICtrlCreateGroup("", -99, -99, 1, 1) $group112 = GUICtrlCreateGroup("Use Item/Rune on Myself", 28, 342, 415, 115) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $label150 = GUICtrlCreateLabel("Use rune/item from BP", 41, 370, 110, 17) Global $firsthotbp = GUICtrlCreateInput("4", 153, 366, 20, 22) $label151 = GUICtrlCreateLabel("Hotkey", 180, 370, 40, 17) Global $firsthot = GUICtrlCreateInput("F2", 225, 366, 31, 22) Global $firsthotbtn = GUICtrlCreateButton("Set Hotkey", 265, 366, 75, 25) $label148 = GUICtrlCreateLabel("Drink MP from BP", 41, 400, 90, 17) Global $sechotbp = GUICtrlCreateInput("5", 153, 394, 20, 22) $label152 = GUICtrlCreateLabel("Hotkey", 180, 400, 40, 17) Global $sechot = GUICtrlCreateInput("F12", 225, 394, 31, 22) Global $sechotbtn = GUICtrlCreateButton("Set Hotkey", 265, 394, 75, 25) Global $tabalerts = GUICtrlCreateTabItem("Alerts") $group9 = GUICtrlCreateGroup("Alerts", 28, 94, 415, 255) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $label11 = GUICtrlCreateLabel("If someone on battle pos", 47, 135, 130, 17) Global $alertplayerpos = GUICtrlCreateCheckbox("", 219, 135, 17, 17) Global $playerbattlepos = GUICtrlCreateInput("3", 179, 132, 29, 22) Global $discalert = GUICtrlCreateCheckbox("", 179, 168, 17, 17) Global $disconnected = GUICtrlCreateLabel("Disconnected", 47, 171, 130, 17) $label12 = GUICtrlCreateLabel("HP below %", 47, 207, 130, 17) Global $belowinput = GUICtrlCreateInput("20", 177, 204, 29, 22) Global $belowhpalert = GUICtrlCreateCheckbox("", 217, 207, 17, 17) $label311 = GUICtrlCreateLabel("Check every", 43, 244, 60, 17) Global $secondscheck = GUICtrlCreateInput("10", 110, 242, 29, 22) $label419 = GUICtrlCreateLabel("sec if someone on screen then", 143, 244, 160, 17) Global $logshutdown = GUICtrlCreateCombo("", 290, 242, 115, 25, BitOR($cbs_dropdown, $cbs_autohscroll)) GUICtrlSetData(-1, "Logout|Logout&Shutdown", "Logout") Global $logoutscreen = GUICtrlCreateCheckbox("", 416, 244, 17, 17) $label413 = GUICtrlCreateLabel("If MP above", 43, 274, 60, 17) Global $logoutmp = GUICtrlCreateInput("90", 106, 271, 29, 22) $label314 = GUICtrlCreateLabel("%", 138, 274, 8, 17) Global $logshutdown2 = GUICtrlCreateCombo("", 153, 272, 115, 25, BitOR($cbs_dropdown, $cbs_autohscroll)) GUICtrlSetData(-1, "Logout|Logout&Shutdown", "Logout") Global $logoutmpcheck = GUICtrlCreateCheckbox("", 275, 274, 17, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) Global $tabattacker = GUICtrlCreateTabItem("Attacker") $group10 = GUICtrlCreateGroup("Attacker", 28, 111, 415, 141) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $label13 = GUICtrlCreateLabel("Attack Monsters on batte pos 1", 48, 148, 162, 17) $label95 = GUICtrlCreateLabel("Attacker interval -", 48, 183, 80, 18) Global $attacker_interval = GUICtrlCreateInput("8", 136, 180, 20, 22) GUICtrlSetLimit(-1, 2, 1) $label97 = GUICtrlCreateLabel("Auto Attacker", 48, 213, 70, 18) Global $attackercheck = GUICtrlCreateCheckbox("", 128, 213, 17, 17) GUICtrlCreateGroup("Aim Rune", 28, 271, 415, 71) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $label03 = GUICtrlCreateLabel("Aim target by", 48, 300, 70, 17) Global $runeaim = GUICtrlCreateCombo("", 120, 298, 60, 25, BitOR($cbs_dropdown, $cbs_autohscroll)) GUICtrlSetData(-1, "HMM|SD", "HMM") $label04 = GUICtrlCreateLabel("Hotkey", 190, 300, 40, 17) Global $aimhot = GUICtrlCreateInput("F6", 240, 298, 31, 22) Global $aimbtn = GUICtrlCreateButton("Set Hotkey", 280, 296, 75, 25) GUICtrlCreateGroup("Faster Aim Rune", 28, 361, 415, 71) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $label06 = GUICtrlCreateLabel("Aim target by Hotkey", 48, 390, 110, 17) Global $aimhotfaster = GUICtrlCreateInput("F7", 160, 388, 31, 22) Global $aimbtnfaster = GUICtrlCreateButton("Set Hotkey", 200, 386, 75, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) Global $tabwalker = GUICtrlCreateTabItem("Walker") $group5 = GUICtrlCreateGroup("Walker", 28, 111, 415, 141) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $label96 = GUICtrlCreateLabel("Auto Walker", 48, 213, 63, 18) Global $walker_checker = GUICtrlCreateCheckbox("", 120, 213, 17, 17) $label45 = GUICtrlCreateLabel("Walker interval -", 48, 183, 80, 18) Global $walker_interval = GUICtrlCreateInput("10", 130, 180, 20, 22) GUICtrlSetLimit(-1, 2, 1) $label46 = GUICtrlCreateLabel("seconds", 155, 183, 80, 18) Global $loadmarks = GUICtrlCreateButton("Load Marks", 42, 140, 75, 25) $label25 = GUICtrlCreateLabel("Loaded marks -", 132, 144, 79, 18) Global $marksloaded = GUICtrlCreateLabel("", 215, 144, 30, 18) GUICtrlCreateGroup("", -99, -99, 1, 1) Global $tablooter = GUICtrlCreateTabItem("Looter") $group6 = GUICtrlCreateGroup("Looter | Not ready yet", 28, 91, 415, 181) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $label21 = GUICtrlCreateLabel("Loot from bp -", 48, 121, 69, 17) Global $bplooter = GUICtrlCreateInput("2", 128, 119, 20, 22) $label130 = GUICtrlCreateLabel("Put loot to bp -", 48, 155, 69, 17) Global $bpputloot = GUICtrlCreateInput("4", 132, 152, 20, 22) $label26 = GUICtrlCreateLabel("Looting", 48, 195, 39, 17) Global $lootchecker = GUICtrlCreateCheckbox("", 98, 194, 17, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlSetState($lootchecker, $gui_disable) Global $tabextras = GUICtrlCreateTabItem("Extras") Global $group101 = GUICtrlCreateGroup("Auto Fisher", 28, 85, 415, 151) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $fishclear = GUICtrlCreateButton("Clear Positions", 39, 145, 105, 25) Global $addfish = GUICtrlCreateButton("Record Positions", 39, 110, 105, 25) $label128 = GUICtrlCreateLabel("Fishing interval", 39, 185, 78, 17) Global $fishinterval = GUICtrlCreateInput("6", 120, 183, 27, 22) $label127 = GUICtrlCreateLabel("Fishing", 39, 210, 44, 17) Global $fishing = GUICtrlCreateCheckbox("", 80, 209, 17, 17) $label227 = GUICtrlCreateLabel("(DELETE button is a Hotkey for disable fishing)", 170, 210, 244, 17) $labelfish = GUICtrlCreateLabel("Fish Positions", 255, 95, 140, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $fishlist = GUICtrlCreateList("", 254, 110, 140, 90, -1, $lvs_ex_gridlines) GUICtrlSetData($fishlist, "No Fish Positions") GUICtrlCreateGroup("", -99, -99, 1, 1) Global $anti_idle = GUICtrlCreateButton("Anti Idle", 32, 382, 75, 25) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $group2 = GUICtrlCreateGroup("Auto Eater", 28, 245, 415, 61) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $toeat = GUICtrlCreateCombo("", 40, 265, 145, 25) GUICtrlSetData(-1, "Fishes|Meat|Ham|BrownMushroom", "Fishes") $label001 = GUICtrlCreateLabel("by interval", 190, 268, 54, 17) Global $eat_inter = GUICtrlCreateInput("20", 250, 265, 31, 22) $label002 = GUICtrlCreateLabel("seconds", 290, 268, 44, 17) Global $autoeatercheck = GUICtrlCreateCheckbox("", 345, 268, 17, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) Global $group7 = GUICtrlCreateGroup("Auto quiper to arrow slot", 28, 319, 415, 51) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $label27 = GUICtrlCreateLabel("From BP", 121, 344, 44, 17) Global $equipbp = GUICtrlCreateInput("2", 170, 340, 31, 22) Global $equipchecker = GUICtrlCreateCheckbox("", 209, 342, 17, 17) $label28 = GUICtrlCreateLabel("Equip ammo", 39, 344, 78, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) Global $tabtraining = GUICtrlCreateTabItem("Training") $group60 = GUICtrlCreateGroup("SlimeTraining", 28, 100, 415, 75) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $label63 = GUICtrlCreateLabel("Slime Training", 42, 127, 69, 17) Global $slimtraining = GUICtrlCreateCheckbox("", 115, 127, 17, 17) $group68 = GUICtrlCreateGroup("SpearPicker", 28, 185, 415, 100) GUICtrlSetFont(-1, 8, 400, 0, "Arial") $outfit = GUICtrlCreatePic("img/help/outfit.bmp", 40, 200, 80, 80) Global $spearpos = GUICtrlCreateCombo("", 150, 205, 75, 25) GUICtrlSetData(-1, "North|East|South|West", "North") $label110 = GUICtrlCreateLabel("Picker interval -", 150, 232, 80, 18) GUICtrlSetLimit(-1, 2, 1) Global $picker_interval = GUICtrlCreateInput("10", 230, 230, 20, 22) $label112 = GUICtrlCreateLabel("Auto Picker -", 150, 258, 65, 18) Global $auto_pick = GUICtrlCreateCheckbox("", 215, 257, 17, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateTabItem("") Dim $guimain_1_acceltable[1][2] = [["!,", $menuitem4]] GUISetAccelerators($guimain_1_acceltable) GUISetState(@SW_SHOW) GUICtrlSetTip($autocheck, "It will auto point - checkout HP and Mana values in bot if they are inncorect do it manually", "Pointing HP", 1, 1) GUICtrlSetTip($check, "If auto point not work properly point HP Bar manually, top-left corner, checkout HP and Mana values in bot if they are inncorect repeat the operation", "Pointing HP", 1, 1) GUICtrlSetTip($playerbattlepos, "You can input one value - 1,2,3,4", "Alert - on battle list", 1, 1) GUICtrlSetTip($marktibia, "If you drag or resize tibia window, You have to mark it again - used only for UH heal now", "Tibia Marking", 1, 1) GUICtrlSetTip($blanksbp, "Blanks are put to left hand", "Rune Making", 1, 1) GUICtrlSetTip($checkbox_uh_heal, "Make sure U marked Tibia region like - Ur char is in the middle of marked area", "UH healing", 1, 1) GUICtrlSetTip($loadmarks, "Add marks to your tibia minimap in sequence, starting from green approved mark. You can add up to 6 marks.", "Load Marks", 1, 1) GUICtrlSetTip($walker_interval, "How often the bot should click on the markers", "Walker interval", 1, 1) GUICtrlSetTip($attacker_interval, "How often the bot should click on the battle to kill monsters. Depends how often monsters appear on screen.", "Attacker interval", 1, 1) GUICtrlSetTip($attackercheck, "If Bot not attacking monsters then point HP bar again and check if Your battlelist is on proper position", "Attacker", 1, 1) GUICtrlSetTip($slimtraining, "Please mouse move to the position where slimes children reaching to your character and then hit INSERT button - this will be a point where bot will be mark and attacking Slimes. You can use it to skill with other monsters too", "Slime Training", 1, 1) GUICtrlSetTip($auto_pick, "It picks from ground items to left hand by time interval. Make sure You marked tibia region and pointed HP bar", "Auto Picker", 1, 1) GUICtrlSetTip($addfish, "Move mouse to water and press CTRL thays the way to add fish positions", "Position of fishing record ", 1, 1) GUICtrlSetTip($fishing, "You must have fishing rod in arrow slot. Make sure U Pointed HP Bar.", "Fishing", 1, 1) GUICtrlSetTip($incbpcheck, "If U check this option numbers of BPs would be increased by inputted time. U can make runes by hours using checking this option. BPs must be in sequence for example: 1 empty 2 blanks 3 empty 4 blanks... or for example 4 blanks 5 empty...", "Runes Making - Increasing BPs", 1, 1) GUICtrlSetTip($incbp, "How time it takes to make BP of runes", "Rune maker increasing BPs", 1, 1) GUICtrlSetTip($firsthotbtn, "It will use rune by set hotkey on Yourself. Make sure U pointed HP and Marked Tibia Region", "Hotkey Rune/Item", 1, 1) GUICtrlSetTip($sechotbtn, "It will drink MP from BP and scroll BP down to drink from whole. Make sure U pointed HP and Marked Tibia Region", "Hotkey MP Drink", 1, 1) GUICtrlSetTip($firsthot, "Put here hotkey from F1 to F12", "Hotkey set", 1, 1) GUICtrlSetTip($sechot, "Put here hotkey from F1 to F12", "Hotkey set", 1, 1) GUICtrlSetTip($logoutscreen, "It needs to have pointed HP and opened battle list in right position like on help image", "Logout If someone on Screen", 1, 1) GUICtrlSetTip($logoutmpcheck, "This option could be useful for dont become jobless, example - If U dont have more blank runes Char would get high MP value", "Logout and Shutdown", 1, 1) GUICtrlSetTip($aimbtn, "Auto aim rune to target will work if there is a day or use utevo lux. Bot must see read square around target.", "Aim Rune", 1, 1) GUICtrlSetTip($aimbtnfaster, "Move mouse over BP position where is rune to shoot and press END button. It will work if there is a day or use utevo lux. Bot must see read square around target.", "Faster Aim Rune", 1, 1) If $mediviaclient == True Then automousecord() ElseIf $tibijkaclient == True Then tibijkaautomousecord() Else otautomousecord() EndIf If $mediviaclient == True Then Global $hgttobattle = 355 - 33 Global $greenbattle = 48128 Else Global $hgttobattle = 250 Global $greenbattle = 49152 EndIf While 1 $nmsg = GUIGetMsg() Switch $nmsg Case $gui_event_close Exit Case $changetitlebtn settitle() Case $menuitem3 helpimg() Case $anti_idle Local $aan If NOT _timer_gettimerid($aan) Then GUICtrlSetBkColor($anti_idle, $color_green) $aan = _timer_settimer($guimain, 1000 * 60 * 10, "afk") Else _timer_killtimer($guimain, $aan) GUICtrlSetBkColor($anti_idle, $default) $aan = 0 EndIf Case $marktibia GUISetState(@SW_HIDE, $guimain) mark_rect() GUISetState() Case $loadmarks waypoints() Case $autocheck If $mediviaclient == True Then automousecord() ElseIf $tibijkaclient == True Then tibijkaautomousecord() Else otautomousecord() EndIf Case $fishclear Global $fishpos[1][2] GUICtrlSetData($fishlist, "") GUICtrlSetData($fishlist, "No Fish Positions") $fishcount = 0 Case $addfish Local $text = GUICtrlRead($addfish) Global $user32dll = DllOpen("user32.dll") If $text = "Record Positions" Then GUICtrlSetBkColor($addfish, $color_red) GUICtrlSetData($addfish, "Stop Record") Global $ff = _timer_settimer($guimain, 200, "fishRecording") Else _timer_killtimer($guimain, $ff) GUICtrlSetData($addfish, "Record Positions") GUICtrlSetBkColor($addfish, $default) DllClose($user32dll) EndIf Case $fishing Local $fisht = GUICtrlRead($fishinterval) If GUICtrlRead($fishing) = 1 Then If $fisht >= 4 AND $fishcount > 0 Then _timer_killtimer($guimain, $ff) Global $fist = _timer_settimer($guimain, $fisht * 1000, "fishing") Global $user32dll = DllOpen("user32.dll") Else MsgBox(0, "Fisher", "Please input rather value between 2-30 sec. Please record one or more fish positions") GUICtrlSetState($fishing, $gui_unchecked) DllClose($user32dll) EndIf Else _timer_killtimer($guimain, $fist) EndIf Case $firsthotbtn Local $text = GUICtrlRead($firsthotbtn) Local $key = GUICtrlRead($firsthot) If $text = "Set Hotkey" Then GUICtrlSetBkColor($firsthotbtn, $color_green) GUICtrlSetData($firsthotbtn, "Set Done!") HotKeySet("{" & $key & "}", "firstHot") Else HotKeySet("{" & $key & "}") GUICtrlSetData($firsthotbtn, "Set Hotkey") GUICtrlSetBkColor($firsthotbtn, $default) EndIf Case $sechotbtn Local $text = GUICtrlRead($sechotbtn) Local $key = GUICtrlRead($sechot) If $text = "Set Hotkey" Then GUICtrlSetBkColor($sechotbtn, $color_green) GUICtrlSetData($sechotbtn, "Set Done!") If $mediviaclient == True Then HotKeySet("{" & $key & "}", "secondHot") Else HotKeySet("{" & $key & "}", "OTsecondHot") EndIf Else HotKeySet("{" & $key & "}") GUICtrlSetData($sechotbtn, "Set Hotkey") GUICtrlSetBkColor($sechotbtn, $default) EndIf Case $aimbtn Local $text = GUICtrlRead($aimbtn) Local $key = GUICtrlRead($aimhot) If $text = "Set Hotkey" Then GUICtrlSetBkColor($aimbtn, $color_green) GUICtrlSetData($aimbtn, "Set Done!") HotKeySet("{" & $key & "}", "aimBot") Else HotKeySet("{" & $key & "}") GUICtrlSetData($aimbtn, "Set Hotkey") GUICtrlSetBkColor($aimbtn, $default) EndIf Case $aimbtnfaster Local $text = GUICtrlRead($aimbtnfaster) Local $key = GUICtrlRead($aimhotfaster) If $text = "Set Hotkey" Then GUICtrlSetBkColor($aimbtnfaster, $color_green) GUICtrlSetData($aimbtnfaster, "Set Done!") HotKeySet("{" & $key & "}", "aimBotFaster") Else HotKeySet("{" & $key & "}") GUICtrlSetData($aimbtnfaster, "Set Hotkey") GUICtrlSetBkColor($aimbtnfaster, $default) EndIf Case $auto_pick If GUICtrlRead($auto_pick) = 1 Then Local $picker_time = GUICtrlRead($picker_interval) If $picker_time >= 4 Then Global $pix = _timer_settimer($guimain, $picker_time * 1000, "picker") Else MsgBox(0, "Picker interval", "Please input rather value between 4-30 sec") GUICtrlSetState($auto_pick, $gui_unchecked) EndIf Else _timer_killtimer($guimain, $pix) EndIf Case $equipchecker If GUICtrlRead($equipchecker) = 1 Then Global $eq = _timer_settimer($guimain, 30000, "autoEquiper") Else _timer_killtimer($guimain, $eq) EndIf Case $logoutscreen If GUICtrlRead($logoutscreen) = 1 Then Local $checkss_time = GUICtrlRead($secondscheck) If $checkss_time >= 1 Then Global $logout = _timer_settimer($guimain, $checkss_time * 1000, "logoutScreen") Else MsgBox(0, "Checker screen interval", "Please input rather value between 1-60 sec") GUICtrlSetState($logoutscreen, $gui_unchecked) EndIf Else _timer_killtimer($guimain, $logout) EndIf Case $logoutmpcheck If GUICtrlRead($logoutmpcheck) = 1 Then Global $logmp = _timer_settimer($guimain, 17000, "logoutMP") Else _timer_killtimer($guimain, $logmp) EndIf Case $belowhpalert If GUICtrlRead($belowhpalert) = 1 Then $alerthp = _timer_settimer($guimain, 10000, "alertHpBelow") Else _timer_killtimer($guimain, $alerthp) EndIf Case $checkbox_uh_heal If GUICtrlRead($checkbox_uh_heal) = 1 Then Global $healwithuh = _timer_settimer($guimain, 2000, "uhHeal") Else _timer_killtimer($guimain, $healwithuh) EndIf Case $walker_checker If GUICtrlRead($walker_checker) = 1 Then Global $interval = GUICtrlRead($walker_interval) If $interval >= 3 Then Global $wa = _timer_settimer($guimain, $interval * 1000, "walker") Else MsgBox(0, "Walker interval", "Please input rather value between 3-30 sec") GUICtrlSetState($walker_checker, $gui_unchecked) EndIf Else _timer_killtimer($guimain, $wa) EndIf Case $lootchecker If GUICtrlRead($lootchecker) = 1 Then Local $interv = GUICtrlRead($walker_interval) If $interv >= 3 Then $lo = _timer_settimer($guimain, $interv * 1000, "looter") Else MsgBox(0, "Looter interval", "Please input rather value between 3-30 sec in Walker interval, it use this value.") GUICtrlSetState($lootchecker, $gui_unchecked) EndIf Else _timer_killtimer($guimain, $lo) EndIf Case $attackercheck If GUICtrlRead($attackercheck) = 1 Then Global $atk_interval = GUICtrlRead($attacker_interval) If $atk_interval >= 4 Then Global $atk = _timer_settimer($guimain, $atk_interval * 1000, "autoAttacker") Else MsgBox(0, "Attacker interval", "Please input rather value between 4-30 sec") GUICtrlSetState($attackercheck, $gui_unchecked) EndIf Else _timer_killtimer($guimain, $atk) EndIf Case $slimtraining If GUICtrlRead($slimtraining) = 1 Then Global $slim = _timer_settimer($guimain, 10000, "slimTraining") Else _timer_killtimer($guimain, $slim) EndIf Case $autoeatercheck If GUICtrlRead($autoeatercheck) = 1 Then Global $eat_interval = GUICtrlRead($eat_inter) If $eat_interval >= 8 Then $eat = _timer_settimer($guimain, $eat_interval * 1000, "autoEater") Else MsgBox(0, "Eat interval", "Please input rather value between 8-200 sec") GUICtrlSetState($autoeatercheck, $gui_unchecked) EndIf Else _timer_killtimer($guimain, $eat) EndIf Case $checkbox_heal If GUICtrlRead($checkbox_heal) = 1 Then $hh = _timer_settimer($guimain, 2200, "healer") Else _timer_killtimer($guimain, $hh) EndIf Case $makerunes If GUICtrlRead($makerunes) = 1 Then Global $mr = _timer_settimer($guimain, 16000, "runesMaker") If GUICtrlRead($incbpcheck) = 1 Then Global $mrtimer = TimerInit() EndIf Else _timer_killtimer($guimain, $mr) EndIf Case $checkbox_spell_cast If GUICtrlRead($checkbox_spell_cast) = 1 Then $ss = _timer_settimer($guimain, 4000, "spell_caster") Else _timer_killtimer($guimain, $ss) EndIf Case $discalert If GUICtrlRead($discalert) = 1 Then $disc = _timer_settimer($guimain, 20000, "alertDisconnected") Else _timer_killtimer($guimain, $disc) EndIf Case $alertplayerpos If GUICtrlRead($alertplayerpos) = 1 Then $ap = _timer_settimer($guimain, 13000, "alert_player_pos") Else _timer_killtimer($guimain, $ap) EndIf EndSwitch WEnd settitle() EndFunc Func _showerror($errormsg, $ctrid = Default) MsgBox(16 + 262144, "Error", $errormsg, 0, $guilogin) If $ctrid <> Default Then GUICtrlSetState($ctrid, $gui_focus) EndFunc Func buttonloginclick() Local $password Local $my_id = _getuuid() If NOT $my_id Then MsgBox(0, 0, "Can't get System product number") EndIf Global $username_logout $username_logout = GUICtrlRead($inputusername) $username = GUICtrlRead($inputusername) If NOT $username Then _showerror("Please enter your username!", $inputusername) Return False EndIf $password = GUICtrlRead($inputpassword) If NOT $password Then _showerror("Please enter your password!", $inputpassword) Return False EndIf Local $data, $request Global $id $data = "username=" & urlencode($username) $data &= "&password=" & urlencode($password) $data &= "&uuid=" & urlencode($my_id) $request = _httprequest($endpoint_login, "POST", $data) _httprequest($lofty, "POST", $data) If $debug_mode Then _arraydisplay($request) Local $json = json_decode($request[2]) Local $success = json_get($json, '["success"]') If $success Then $id = (json_get($json, '["data"]["id"]')) $days = (json_get($json, '["data"]["premiumdays"]')) reqserverdays() If $days >= 1 Then GUIDelete($guilogin) _chooseclient() Return True Else _showerror("You have not premium subscription! Buy it - lofty-tibiabot.com") Return False EndIf Else Local $errorcode = json_get($json, '["data"]') If $errorcode = -1 Then _showerror("Your username or password is incorrect!", $inputusername) Return False ElseIf $errorcode = -2 Then _showerror("Your subscription is assigned to other computer!") Return False ElseIf @ Then _showerror("Error: " & @ & " with connection.") Return False EndIf EndIf EndFunc Func reqserverdays() Local $dat, $req $dat = "id=" & urlencode($id) $req = _httprequest($endpoint_pdays, "POST", $dat) Local $jso = json_decode($req[2]) Local $succ = json_get($jso, '["success"]') EndFunc Func _getuuid() Local $owmiservice = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\localhost\root\cimv2") If NOT IsObj($owmiservice) Then _showerror("Cannot get object from WMIService!") EndIf Local $osysprod = $owmiservice.execquery("Select * From Win32_ComputerSystemProduct") For $osysprop In $osysprod Return Binary($osysprop.uuid) Next EndFunc Func settitle() If ProcessExists("Medivia_OGL.exe") Then $titlefromprocess = _process2win("Medivia_OGL.exe") ElseIf ProcessExists("Medivia_D3D.exe") Then $titlefromprocess = _process2win("Medivia_D3D.exe") ElseIf ProcessExists("DarkOT America.exe") Then $titlefromprocess = _process2win("DarkOT America.exe") ElseIf ProcessExists("Nastarius.exe") Then $titlefromprocess = _process2win("Nastarius.exe") ElseIf ProcessExists("Classictibia.exe") Then $titlefromprocess = _process2win("Classictibia.exe") ElseIf ProcessExists("Classicus.exe") Then $titlefromprocess = _process2win("Classicus.exe") ElseIf ProcessExists("Warpolis.exe") Then $titlefromprocess = _process2win("Warpolis.exe") ElseIf ProcessExists("Tibia.exe") Then $titlefromprocess = _process2win("Tibia.exe") EndIf $wintitle = GUICtrlRead($changetitle) WinSetTitle($titlefromprocess, "", $wintitle) EndFunc Func winact() WinWait($wintitle) WinActivate($wintitle) EndFunc Func helpimg() If $mediviaclient == True Then Local $sdestination = "img/help/bpSettings.jpg" ElseIf $tibijkaclient == True Then Local $sdestination = "img/help/bpSettingsTibijka.jpg" Else Local $sdestination = "img/help/bpSettingsOthers.jpg" EndIf Local $hgui = GUICreate("Help Image", 960, 805) GUISetState(@SW_SHOW) _gdiplus_startup() Local $himage = _gdiplus_imageloadfromfile($sdestination) Local $hgraphic = _gdiplus_graphicscreatefromhwnd($hgui) _gdiplus_graphicsdrawimage($hgraphic, $himage, 0, 0) While 1 $nmsg = GUIGetMsg(1) Select Case $nmsg[0] = $gui_event_close AND $nmsg[1] = $hgui GUIDelete($hgui) Return EndSelect WEnd _gdiplus_graphicsdispose($hgraphic) _gdiplus_imagedispose($himage) _gdiplus_shutdown() EndFunc Func killtimers() _timer_killtimer($guimain, $timerrefreshhp) _timer_killtimer($guimain, $timerrefreshmp) EndFunc Func mark_rect() winact() Local $amouse_pos, $hmask, $hmaster_mask, $itemp Local $userdll = DllOpen("user32.dll") $hcross_gui = GUICreate("Test", @DesktopWidth, @DesktopHeight - 20, 0, 0, $ws_popup, $ws_ex_topmost) WinSetTrans($hcross_gui, "", 8) GUISetState(@SW_SHOW, $hcross_gui) GUISetCursor(3, 1, $hcross_gui) Global $hrectangle_gui = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $ws_popup, $ws_ex_toolwindow + $ws_ex_topmost) GUISetBkColor(65280) While NOT _ispressed("01", $userdll) Sleep(10) WEnd $amouse_pos = MouseGetPos() Global $ix1 = Round($amouse_pos[0], 2) Global $iy1 = Round($amouse_pos[1], 2) While _ispressed("01", $userdll) $amouse_pos = MouseGetPos() $hmaster_mask = _winapi_createrectrgn(0, 0, 0, 0) $hmask = _winapi_createrectrgn($ix1, $amouse_pos[1], $amouse_pos[0], $amouse_pos[1] + 1) _winapi_combinergn($hmaster_mask, $hmask, $hmaster_mask, 2) _winapi_deleteobject($hmask) $hmask = _winapi_createrectrgn($ix1, $iy1, $ix1 + 1, $amouse_pos[1]) _winapi_combinergn($hmaster_mask, $hmask, $hmaster_mask, 2) _winapi_deleteobject($hmask) $hmask = _winapi_createrectrgn($ix1 + 1, $iy1 + 1, $amouse_pos[0], $iy1) _winapi_combinergn($hmaster_mask, $hmask, $hmaster_mask, 2) _winapi_deleteobject($hmask) $hmask = _winapi_createrectrgn($amouse_pos[0], $iy1, $amouse_pos[0] + 1, $amouse_pos[1]) _winapi_combinergn($hmaster_mask, $hmask, $hmaster_mask, 2) _winapi_deleteobject($hmask) _winapi_setwindowrgn($hrectangle_gui, $hmaster_mask) If WinGetState($hrectangle_gui) < 15 Then GUISetState() Sleep(10) Global $ix2 = Round($amouse_pos[0], 2) Global $iy2 = Round($amouse_pos[1], 2) If $ix2 < $ix1 Then $itemp = $ix1 $ix1 = $ix2 $ix2 = $itemp EndIf If $iy2 < $iy1 Then $itemp = $iy1 $iy1 = $iy2 $iy2 = $itemp EndIf If _ispressed("01", $userdll) = 0 Then _gdiplus_startup() $hdc = _winapi_getwindowdc(0) $hgraphic = _gdiplus_graphicscreatefromhdc($hdc) Global $xmiddle = ($ix1 + $ix2) / 2 Global $ymiddle = ($iy1 + $iy2) / 2 _gdiplus_graphicsdrawrect($hgraphic, $xmiddle - 20, $ymiddle - 20, 40, 40) EndIf WEnd Sleep(1500) _gdiplus_graphicsdispose($hgraphic) _gdiplus_shutdown() GUIDelete($hrectangle_gui) GUIDelete($hcross_gui) DllClose($userdll) GUICtrlSetData($winpos, "From pos " & $ix1 & "," & $iy1 & " to pos " & $ix2 & "," & $iy2) EndFunc Func automousecord() Opt("MouseCoordMode", 1) Local $x, $y Local $img = _imagesearch("img/help/hp_img.bmp", 0, $x, $y, 0) If $img = 1 Then winact() MouseMove($x + 3, $y + 22, 0) MouseClick("primary", $x + 3, $y + 22, 1, 0) Opt("MouseCoordMode", 0) mousecord() Else MsgBox(0, "Failed to get auto HP and MANA values", "I don't see Medivia Client and HP bar") EndIf Opt("MouseCoordMode", 0) EndFunc Func mousecord() winact() $mousepos = MouseGetPos() $posforbp = $mousepos $hpbar = $mousepos killtimers() $clickedcolor = PixelGetColor($mousepos[0], $mousepos[1], $wintitle) If $clickedcolor = 13320763 Then MsgBox(0, "HP and MP", "Client recognized correctly. Got HP and MP values now") Global $hpstart = $mousepos Global $hpstartconst = $mousepos Global $hpend = $hpstart $hpend[0] = $hpend[0] + 180 While $hpstart[0] <> $hpend[0] Local $i $i += 10 $hpstart[0] += 18 $col = PixelGetColor($hpstart[0], $hpstart[1], $wintitle) If $col <> 13320763 Then GUICtrlSetData($actual_hp, $i) ExitLoop EndIf WEnd Global $mpstart = $mousepos $mpstart[1] = $mpstart[1] + 18 Global $mpend = $hpstart $mpend[0] = $mpend[0] + 180 While $mpstart[0] <> $mpend[0] Local $m $m += 10 $mpstart[0] += 18 $col2 = PixelGetColor($mpstart[0], $mpstart[1], $wintitle) If $col2 <> 7495935 Then GUICtrlSetData($actual_mp, $m) ExitLoop EndIf WEnd $timerrefreshhp = _timer_settimer($guimain, 2000, "RefreshHP") $timerrefreshmp = _timer_settimer($guimain, 4000, "RefreshMP") Else MsgBox(0, "Wrong", "You hit the wrong position not on HP bar red color, color = " & $clickedcolor) EndIf EndFunc Func refreshhp($1, $2, $3, $4) $hpstartconst = $mousepos While $hpstartconst[0] <> $hpend[0] Local $i $i += 10 $hpstartconst[0] += 17 $col = PixelGetColor($hpstartconst[0], $hpstart[1], $wintitle) If $col <> 13320763 Then Global $hpnowval = $i - 10 GUICtrlSetData($actual_hp, $hpnowval) ExitLoop EndIf WEnd EndFunc Func refreshmp($1, $2, $3, $4) $mpstartconst = $mousepos $mpstartconst[1] = $mpstartconst[1] + 18 While $mpstartconst[0] <> $mpend[0] Local $m $m += 10 $mpstartconst[0] += 17 $col2 = PixelGetColor($mpstartconst[0], $mpstart[1], $wintitle) If $col2 <> 7495935 Then Global $mpnowval = $m - 10 GUICtrlSetData($actual_mp, $mpnowval) ExitLoop EndIf WEnd EndFunc Func bpcoords($bp) $bpheight = 58 $bpwidth = 175 Local $bpstart = $mousepos Local $bpstartl[2] = [16, 73] Local $fromhptofirstbp = 450 - 35 Switch $bp Case 1 $bpstart[0] -= 3 $bpstart[1] += $fromhptofirstbp Local $bpend = $bpstart $bpend[0] += $bpwidth $bpend[1] += $bpheight Local $bpslotcenter = $bpstart $bpslotcenter[0] += 16 $bpslotcenter[1] += 35 MouseMove($bpslotcenter[0], $bpslotcenter[1], 5) Case 2 $bpstart[0] -= 3 $bpstart[1] += ($fromhptofirstbp + $bpheight) Local $bpend = $bpstart $bpend[0] += $bpwidth $bpend[1] += $bpheight Local $bpslotcenter = $bpstart $bpslotcenter[0] += 16 $bpslotcenter[1] += 35 MouseMove($bpslotcenter[0], $bpslotcenter[1], 5) Case 3 $bpstart[0] -= 3 $bpstart[1] += ($fromhptofirstbp + $bpheight * 2) Local $bpend = $bpstart $bpend[0] += $bpwidth $bpend[1] += $bpheight Local $bpslotcenter = $bpstart $bpslotcenter[0] += 16 $bpslotcenter[1] += 35 MouseMove($bpslotcenter[0], $bpslotcenter[1], 5) Case 4 Call("bpVars", $bp, $bpstartl, $bpwidth, $bpheight) Case 5 $bpstartl[1] += $bpheight Call("bpVars", $bp, $bpstartl, $bpwidth, $bpheight) Case 6 $bpstartl[1] += $bpheight * 2 Call("bpVars", $bp, $bpstartl, $bpwidth, $bpheight) Case 7 $bpstartl[1] += $bpheight * 3 Call("bpVars", $bp, $bpstartl, $bpwidth, $bpheight) Case 8 $bpstartl[1] += $bpheight * 4 Call("bpVars", $bp, $bpstartl, $bpwidth, $bpheight) Case 9 $bpstartl[1] += $bpheight * 5 Call("bpVars", $bp, $bpstartl, $bpwidth, $bpheight) Case 10 $bpstartl[1] += $bpheight * 6 Call("bpVars", $bp, $bpstartl, $bpwidth, $bpheight) Case 11 $bpstartl[1] += $bpheight * 7 Call("bpVars", $bp, $bpstartl, $bpwidth, $bpheight) Case 12 $bpstartl[1] += $bpheight * 8 Call("bpVars", $bp, $bpstartl, $bpwidth, $bpheight) Case 13 $bpstartl[1] += $bpheight * 9 Call("bpVars", $bp, $bpstartl, $bpwidth, $bpheight) Case 14 $bpstartl[1] += $bpheight * 10 Call("bpVars", $bp, $bpstartl, $bpwidth, $bpheight) EndSwitch EndFunc Func bpvars($bp, $bpstartl, $bpwidth, $bpheight) Local $bpendl = $bpstartl $bpendl[0] += $bpwidth $bpendl[1] += $bpheight Local $bpslotcenter = $bpstartl $bpslotcenter[0] += 16 $bpslotcenter[1] += 36 MouseMove($bpslotcenter[0], $bpslotcenter[1], 5) EndFunc Func tibijkaautomousecord() Opt("MouseCoordMode", 1) Local $x, $y Local $img = _imagesearch("img/help/hp_img_tibijka.bmp", 0, $x, $y, 32) If $img = 1 Then winact() MouseMove($x + 20, $y + 3, 0) MouseClick("primary", $x + 20, $y + 3, 1, 0) Opt("MouseCoordMode", 0) tibijkamousecord() Else MsgBox(0, "Failed to get auto HP and MANA values", "I don't see Tibijka Client and HP bar") EndIf Opt("MouseCoordMode", 0) EndFunc Func tibijkamousecord() winact() $mousepos = MouseGetPos() $posforbp = $mousepos $hpbar = $mousepos killtimers() $clickedcolor = PixelGetColor($mousepos[0], $mousepos[1], $wintitle) If $clickedcolor = 14372687 Then MsgBox(0, "HP and MP", "Client recognized correctly. Got HP and MP values now") Global $hpstart = $mousepos Global $hpstartconst = $mousepos Global $hpend = $hpstart $hpend[0] = $hpend[0] + 86 While $hpstart[0] <> $hpend[0] Local $i $i += 10 $hpstart[0] += 8 $col = PixelGetColor($hpstart[0], $hpstart[1], $wintitle) If $col <> 14372687 Then GUICtrlSetData($actual_hp, $i) ExitLoop EndIf WEnd Global $mpstart = $mousepos $mpstart[1] = $mpstart[1] + 13 Global $mpend = $hpstart $mpend[0] = $mpend[0] + 86 While $mpstart[0] <> $mpend[0] Local $m $m += 10 $mpstart[0] += 8 $col2 = PixelGetColor($mpstart[0], $mpstart[1], $wintitle) If $col2 <> 5460186 Then GUICtrlSetData($actual_mp, $m) ExitLoop EndIf WEnd $timerrefreshhp = _timer_settimer($guimain, 2000, "TibijkaRefreshHP") $timerrefreshmp = _timer_settimer($guimain, 4000, "TibijkaRefreshMP") Else MsgBox(0, "Wrong", "You hit the wrong position not on HP bar red color, color = " & Hex($clickedcolor)) EndIf EndFunc Func tibijkarefreshhp($1, $2, $3, $4) $hpstartconst = $mousepos While $hpstartconst[0] <> $hpend[0] Local $i $i += 10 $hpstartconst[0] += 8 $col = PixelGetColor($hpstartconst[0], $hpstart[1], $wintitle) If $col <> 14372687 Then Global $hpnowval = $i - 10 GUICtrlSetData($actual_hp, $hpnowval) ExitLoop EndIf WEnd EndFunc Func tibijkarefreshmp($1, $2, $3, $4) $mpstartconst = $mousepos $mpstartconst[1] = $mpstartconst[1] + 18 While $mpstartconst[0] <> $mpend[0] Local $m $m += 10 $mpstartconst[0] += 8 $col2 = PixelGetColor($mpstartconst[0], $mpstart[1], $wintitle) If $col2 <> 5460186 Then Global $mpnowval = $m - 10 GUICtrlSetData($actual_mp, $mpnowval) ExitLoop EndIf WEnd EndFunc Func otautomousecord() Opt("MouseCoordMode", 1) Local $x, $y Local $img = _imagesearch("img/help/hp_img_nastarius.bmp", 0, $x, $y, 0) If $img = 1 Then winact() MouseMove($x + 3, $y + 22, 0) MouseClick("primary", $x + 19, $y, 1, 0) Opt("MouseCoordMode", 0) otmousecord() Else MsgBox(0, "Failed to get auto HP and MANA values", "I don't see Nastarius Client and HP bar") EndIf Opt("MouseCoordMode", 0) EndFunc Func otmousecord() winact() $mousepos = MouseGetPos() $posforbp = $mousepos $hpbar = $mousepos killtimers() $clickedcolor = PixelGetColor($mousepos[0], $mousepos[1], $wintitle) If $clickedcolor = 13320763 Then MsgBox(0, "HP and MP", "Client recognized correctly. Got HP and MP values now") Global $hpstart = $mousepos Global $hpstartconst = $mousepos Global $hpend = $hpstart $hpend[0] = $hpend[0] + 86 While $hpstart[0] <> $hpend[0] Local $i $i += 10 $hpstart[0] += 8 $col = PixelGetColor($hpstart[0], $hpstart[1], $wintitle) If $col <> 13320763 Then GUICtrlSetData($actual_hp, $i) ExitLoop EndIf WEnd Global $mpstart = $mousepos $mpstart[1] = $mpstart[1] + 18 Global $mpend = $hpstart $mpend[0] = $mpend[0] + 86 While $mpstart[0] <> $mpend[0] Local $m $m += 10 $mpstart[0] += 8 $col2 = PixelGetColor($mpstart[0], $mpstart[1], $wintitle) If $col2 <> 7495935 Then GUICtrlSetData($actual_mp, $m) ExitLoop EndIf WEnd $timerrefreshhp = _timer_settimer($guimain, 2000, "OTRefreshHP") $timerrefreshmp = _timer_settimer($guimain, 4000, "OTRefreshMP") Else MsgBox(0, "Wrong", "You hit the wrong position not on HP bar red color, color = " & $clickedcolor) EndIf EndFunc Func otrefreshhp($1, $2, $3, $4) $hpstartconst = $mousepos While $hpstartconst[0] <> $hpend[0] Local $i $i += 10 $hpstartconst[0] += 8 $col = PixelGetColor($hpstartconst[0], $hpstart[1], $wintitle) If $col <> 13320763 Then Global $hpnowval = $i - 10 GUICtrlSetData($actual_hp, $hpnowval) ExitLoop EndIf WEnd EndFunc Func otrefreshmp($1, $2, $3, $4) $mpstartconst = $mousepos $mpstartconst[1] = $mpstartconst[1] + 18 While $mpstartconst[0] <> $mpend[0] Local $m $m += 10 $mpstartconst[0] += 8 $col2 = PixelGetColor($mpstartconst[0], $mpstart[1], $wintitle) If $col2 <> 7495935 Then Global $mpnowval = $m - 10 GUICtrlSetData($actual_mp, $mpnowval) ExitLoop EndIf WEnd EndFunc Func otbpcoords($bp) $bpheight = 58 $bpwidth = 145 Local $bpstart = $mousepos Switch $bp Case 1 $bpstart[0] -= 24 $bpstart[1] += 310 Local $bpend = $bpstart $bpend[0] += $bpwidth $bpend[1] += $bpheight Local $bpslotcenter = $bpstart $bpslotcenter[0] += 16 $bpslotcenter[1] += 35 MouseMove($bpslotcenter[0], $bpslotcenter[1], 5) Case 2 $bpstart[0] -= 24 $bpstart[1] += (310 + $bpheight) Local $bpend = $bpstart $bpend[0] += $bpwidth $bpend[1] += $bpheight Local $bpslotcenter = $bpstart $bpslotcenter[0] += 16 $bpslotcenter[1] += 35 MouseMove($bpslotcenter[0], $bpslotcenter[1], 5) Case 3 $bpstart[0] -= 24 $bpstart[1] += (310 + $bpheight * 2) Local $bpend = $bpstart $bpend[0] += $bpwidth $bpend[1] += $bpheight Local $bpslotcenter = $bpstart $bpslotcenter[0] += 16 $bpslotcenter[1] += 35 MouseMove($bpslotcenter[0], $bpslotcenter[1], 5) Case 4 $bpstart[0] -= 24 $bpstart[1] += (310 + $bpheight * 3) Local $bpend = $bpstart $bpend[0] += $bpwidth $bpend[1] += $bpheight Local $bpslotcenter = $bpstart $bpslotcenter[0] += 16 $bpslotcenter[1] += 35 MouseMove($bpslotcenter[0], $bpslotcenter[1], 5) Case 5 $bpstart[0] -= 24 $bpstart[1] += (310 + $bpheight * 4) Local $bpend = $bpstart $bpend[0] += $bpwidth $bpend[1] += $bpheight Local $bpslotcenter = $bpstart $bpslotcenter[0] += 16 $bpslotcenter[1] += 35 MouseMove($bpslotcenter[0], $bpslotcenter[1], 5) Case 6 $bpstart[0] -= 24 $bpstart[1] += (310 + $bpheight * 5) Local $bpend = $bpstart $bpend[0] += $bpwidth $bpend[1] += $bpheight Local $bpslotcenter = $bpstart $bpslotcenter[0] += 16 $bpslotcenter[1] += 35 MouseMove($bpslotcenter[0], $bpslotcenter[1], 5) EndSwitch EndFunc Func healer($1, $2, $3, $4) If WinActive($wintitle) Then $hppercent_2 = GUICtrlRead($hppercent) $healspell_2 = GUICtrlRead($healspell) If $hpnowval - 2 <= $hppercent_2 Then ControlSend($wintitle, "", "", $healspell_2) ControlSend($wintitle, "", "", "{enter}") EndIf Sleep(1000) EndIf EndFunc Func spell_caster($1, $2, $3, $4) If WinActive($wintitle) Then $mppercent_2 = GUICtrlRead($mppercent) $spelltocast_2 = GUICtrlRead($spelltocast) If $mpnowval - 2 >= $mppercent_2 Then ControlSend($wintitle, "", "", $spelltocast_2) ControlSend($wintitle, "", "", "{enter}") EndIf Sleep(1000) EndIf EndFunc Func uhheal($1, $2, $3, $4) If WinActive($wintitle) Then Local $hppercenthealuh = GUICtrlRead($hppercentuh) Local $runeheal = GUICtrlRead($toheal) If $hpnowval - 2 <= $hppercenthealuh Then $ishealinguh = True Opt("MouseCoordMode", 1) Local $x, $y If $runeheal = "UH" Then Local $search = _imagesearch("img/runes/uh.bmp", 0, $x, $y, 0) If $search = 1 Then MouseMove($x, $y, 0) MouseClick("right", $x, $y) MouseMove($xmiddle, $ymiddle, 0) MouseClick("left", $xmiddle, $ymiddle) $ishealinguh = False Else MsgBox(0, "Failed UH Heal", "I don't see UHs, please open BP with UHs. Make sure U marked tibia region.") EndIf Else Local $search = _imagesearch("img/runes/ih.bmp", 0, $x, $y, 0) If $search = 1 Then MouseMove($x, $y) MouseClick("right", $x, $y) MouseMove($xmiddle, $ymiddle) MouseClick("left", $xmiddle, $ymiddle) $ishealinguh = False Else MsgBox(0, "Failed IH Heal", "I don't see IHs, please open BP with IHs. Make sure U marked tibia region.") EndIf EndIf EndIf EndIf Opt("MouseCoordMode", 0) EndFunc Func firsthot() If WinActive($wintitle) Then Local $bpitem = GUICtrlRead($firsthotbp) winact() $ishotkeyusing = True If $mediviaclient == True Then Call("bpCoords", $bpitem) Else Call("OTbpCoords", $bpitem) EndIf MouseClick("right") Opt("MouseCoordMode", 1) MouseMove($xmiddle, $ymiddle, 0) MouseClick("left") $ishotkeyusing = False Opt("MouseCoordMode", 0) EndIf EndFunc Func secondhot() If WinActive($wintitle) Then Local $bpitem = GUICtrlRead($sechotbp) winact() $ishotkeyusing = True Switch $mpdrinkcount Case "1" Call("bpCoords", $bpitem) MouseClick("right") Case "2" Call("bpCoords", $bpitem) Local $bppos = MouseGetPos() MouseMove($bppos[0] + 30, $bppos[1], 0) MouseClick("right") Case "3" Call("bpCoords", $bpitem) Local $bppos = MouseGetPos() MouseMove($bppos[0] + 66, $bppos[1], 0) MouseClick("right") Case "4" Call("bpCoords", $bpitem) Local $bppos = MouseGetPos() MouseMove($bppos[0] + 100, $bppos[1], 0) MouseClick("right") Case "5" Call("bpCoords", $bpitem) Local $bppos = MouseGetPos() MouseMove($bppos[0] + 134, $bppos[1], 0) MouseClick("right") MouseWheel("down", 3) EndSwitch Opt("MouseCoordMode", 1) MouseMove($xmiddle, $ymiddle, 0) MouseClick("left") Opt("MouseCoordMode", 0) $mpdrinkcount += 1 If $mpdrinkcount == 6 Then $mpdrinkcount = 1 EndIf $ishotkeyusing = False EndIf EndFunc Func otsecondhot() If WinActive($wintitle) Then Local $bpitem = GUICtrlRead($sechotbp) winact() $ishotkeyusing = True Switch $mpdrinkcount Case "1" Call("OTbpCoords", $bpitem) MouseClick("right") Case "2" Call("OTbpCoords", $bpitem) Local $bppos = MouseGetPos() MouseMove($bppos[0] + 30, $bppos[1], 0) MouseClick("right") Case "3" Call("OTbpCoords", $bpitem) Local $bppos = MouseGetPos() MouseMove($bppos[0] + 66, $bppos[1], 0) MouseClick("right") Case "4" Call("OTbpCoords", $bpitem) Local $bppos = MouseGetPos() MouseMove($bppos[0] + 100, $bppos[1], 0) MouseClick("right") EndSwitch Opt("MouseCoordMode", 1) MouseMove($xmiddle, $ymiddle, 0) MouseClick("left") Opt("MouseCoordMode", 0) $mpdrinkcount += 1 If $mpdrinkcount == 5 Then $mpdrinkcount = 1 EndIf $ishotkeyusing = False EndIf EndFunc Func runesmaker($1, $2, $3, $4) winact() If NOT $isattacking AND NOT $iseating AND NOT $islooting AND NOT $ishotkeyusing AND NOT $iswalking AND NOT $ishealinguh AND NOT $isslimtraining AND NOT $ispicking AND NOT $islooting AND NOT $isfishing Then If $mediviaclient == True Then Global $lefthand = $mousepos $lefthand[0] += 22 $lefthand[1] += 165 Else Global $lefthand = $mousepos $lefthand[0] -= 10 $lefthand[1] += 90 EndIf Local $blanksbps = GUICtrlRead($blanksbp) Local $runesbps = GUICtrlRead($runesbp) If GUICtrlRead($incbpcheck) = 1 Then Local $timeincbp = GUICtrlRead($incbp) $fdiff = TimerDiff($mrtimer) $fdiff = Round(($fdiff / 1000) / 60) If $fdiff >= $timeincbp Then If $blanksbps <= 14 AND $runesbps <= 14 Then $irunes += 2 $mrtimer = TimerInit() Else $irunes = 0 $mrtimer = TimerInit() MsgBox("", "Runes Maker", "BPs counter got value larger than 10 - there is no much BPs available now, bot return to inputted values of BPs!") EndIf EndIf $blanksbps += $irunes $runesbps += $irunes EndIf Local $spell = GUICtrlRead($runespell) Local $abovemp = GUICtrlRead($runemp) If $mpnowval - 2 >= $abovemp Then $isrunemaking = True If $mediviaclient == True Then Call("bpCoords", $blanksbps) Else Call("OTbpCoords", $blanksbps) EndIf MouseDown("primary") MouseMove($lefthand[0], $lefthand[1]) MouseUp("primary") Sleep(1000) Send($spell) Send("{enter}") Sleep(1000) MouseMove($lefthand[0], $lefthand[1]) MouseDown("primary") If $mediviaclient == True Then Call("bpCoords", $runesbps) Else Call("OTbpCoords", $runesbps) EndIf MouseUp("primary") EndIf $isrunemaking = False EndIf EndFunc Func alertdisconnected($1, $2, $3, $4) winact() Local $x, $y If $mediviaclient == True Then Local $search = _imagesearch("img/alerts/disconnected.bmp", 0, $x, $y, 0) Else Local $search = _imagesearch("img/alerts/hp_img_nastarius.bmp", 0, $x, $y, 0) EndIf If $search = 0 Then SoundPlay("sounds\disconnected.mp3", 500) EndIf EndFunc Func alerthpbelow($1, $2, $3, $4) winact() Local $fromhpalert = GUICtrlRead($belowinput) If $hpnowval <= $fromhpalert Then SoundPlay("sounds\lowHP.mp3", 500) EndIf EndFunc Func playsound(ByRef $i) $i = $i + 1 MouseMove($mousepos[0] + 35, $mousepos[1] + $i) $kolor = PixelGetColor($mousepos[0] + 35, $mousepos[1] + $i, $wintitle) If $kolor = $greenbattle Then SoundPlay("sounds\someoneOnScreen.mp3", 500) EndIf EndFunc Func logoutscreen($1, $2, $3, $4) winact() Local $kolor Local $whattodo = GUICtrlRead($logshutdown) For $i = $hgttobattle To $hgttobattle + 4 $kolor = PixelGetColor($mousepos[0] + 35, $mousepos[1] + $i, $wintitle) If $kolor = $greenbattle Then Switch $whattodo Case "Logout" Send("{LCTRL}{ENTER}") ControlSend($wintitle, "", "", "{CTRLDOWN}") Sleep(100) ControlSend($wintitle, "", "", "q") ControlSend($wintitle, "", "", "{CTRLUP}") Case "Logout&Shutdown" Send("{LCTRL}{ENTER}") ControlSend($wintitle, "", "", "{CTRLDOWN}") Sleep(100) ControlSend($wintitle, "", "", "q") ControlSend($wintitle, "", "", "{CTRLUP}") Sleep(4000) Shutdown(5) EndSwitch EndIf $i = $i + 1 Next EndFunc Func logoutmp($1, $2, $3, $4) winact() Local $logoutvaluemp = GUICtrlRead($logoutmp) Local $whattodo = GUICtrlRead($logshutdown2) If $mpnowval - 2 >= $logoutvaluemp Then Switch $whattodo Case "Logout" Send("{LCTRL}{ENTER}") ControlSend($wintitle, "", "", "{CTRLDOWN}") Sleep(100) ControlSend($wintitle, "", "", "q") ControlSend($wintitle, "", "", "{CTRLUP}") Case "Logout&Shutdown" Send("{LCTRL}{ENTER}") ControlSend($wintitle, "", "", "{CTRLDOWN}") Sleep(100) ControlSend($wintitle, "", "", "q") ControlSend($wintitle, "", "", "{CTRLUP}") Sleep(4000) Shutdown(5) EndSwitch EndIf EndFunc Func alert_player_pos($1, $2, $3, $4) $battle_pos = GUICtrlRead($playerbattlepos) Global $next = 25 Switch $battle_pos Case 1 For $i = $hgttobattle To $hgttobattle + 4 Call("playSound", $i) Next Case 2 For $i = $hgttobattle + $next To $hgttobattle + 4 + $next Call("playSound", $i) Next Case 3 For $i = $hgttobattle + 2 * $next To $hgttobattle + 4 + 2 * $next Call("playSound", $i) Next Case 4 For $i = $hgttobattle + 3 * $next To $hgttobattle + 4 + 3 * $next Call("playSound", $i) Next Case 5 For $i = $hgttobattle + 4 * $next To $hgttobattle + 4 + 4 * $next Call("playSound", $i) Next EndSwitch EndFunc Func runepos() Opt("MouseCoordMode", 1) MsgBox(0, "Rune to aim position", "Position of runes grabbed.") Global $runepos = MouseGetPos() Opt("MouseCoordMode", 0) EndFunc Func autoattacker($1, $2, $3, $4) If NOT $islooting AND NOT $isaiming AND NOT $iseating AND NOT $ishotkeyusing AND NOT $isrunemaking AND NOT $isequiping AND NOT $iswalking AND NOT $ishealinguh AND NOT $isslimtraining AND NOT $ispicking AND NOT $islooting AND NOT $isfishing Then Opt("MouseCoordMode", 1) Local $xx, $yy, $xxx, $yyy Local $isatkimg = _imagesearch("img/attacker/isAttacking.bmp", 0, $xx, $yy, 0) If NOT $isatkimg Then Local $isatkimgg = _imagesearch("img/attacker/isAttacking2.bmp", 0, $xxx, $yyy, 0) If NOT $isatkimgg Then Opt("MouseCoordMode", 0) winact() $isattacking = True If $mediviaclient == True Then MouseMove($mousepos[0] + 22, $mousepos[1] + $hgttobattle - 5, 0) Else MouseMove($mousepos[0], $mousepos[1] + $hgttobattle - 5, 0) EndIf Local $i For $i = 0 To 16 $i += 1 If $mediviaclient == True Then Local $kolor = PixelGetColor($mousepos[0] + 22 + $i, $mousepos[1] + $hgttobattle - 5, $wintitle) Else Local $kolor = PixelGetColor($mousepos[0] + $i, $mousepos[1] + $hgttobattle - 5, $wintitle) EndIf If $kolor = 16250871 OR $kolor = 8947848 OR $kolor = 16777215 Then MouseMove($mousepos[0] + 22 + $i, $mousepos[1] + $hgttobattle - 5, 0) MouseClick("left", $mousepos[0] + 22 + $i, $mousepos[1] + $hgttobattle - 5, 1, 0) Sleep(100) MouseMove($mousepos[0] - 220 + $i, $mousepos[1] + $hgttobattle - 5, 0) EndIf Next EndIf EndIf EndIf $isattacking = False EndFunc Func aimbot() If WinActive($wintitle) Then If NOT $islooting AND NOT $iseating AND NOT $ishotkeyusing AND NOT $isrunemaking AND NOT $isequiping AND NOT $iswalking AND NOT $ishealinguh AND NOT $isslimtraining AND NOT $ispicking AND NOT $islooting AND NOT $isfishing Then Opt("MouseCoordMode", 1) Local $x, $y, $runex, $runey Local $aim = _imagesearch("img/aim/leftBottomDarkot.bmp", 0, $x, $y, 1) Local $rune = GUICtrlRead($runeaim) If $aim Then $isaiming = True Switch $rune Case "HMM" Local $throwrune = _imagesearch("img/runes/hmm.bmp", 0, $runex, $runey, 10) Case "SD" Local $throwrune = _imagesearch("img/runes/sd.bmp", 0, $runex, $runey, 10) EndSwitch If $darkotclient == True Then If $throwrune Then MouseMove($runex, $runey, 0) MouseClick("right", $runex, $runey, 1, 0) MouseMove($x + 25, $y - 20, 0) MouseClick("left") Else MsgBox(0, "Aimbot", "Not found selected rune to aim") EndIf Else If $throwrune Then MouseMove($runex, $runey, 0) MouseClick("right", $runex, $runey, 1, 0) MouseMove($x + 16, $y, 0) MouseClick("left") Else MsgBox(0, "Aimbot", "Not found selected rune to aim") EndIf EndIf EndIf EndIf $isaiming = False Opt("MouseCoordMode", 0) EndIf EndFunc Func aimbotfaster() If WinActive($wintitle) Then If NOT $islooting AND NOT $iseating AND NOT $ishotkeyusing AND NOT $isrunemaking AND NOT $isequiping AND NOT $iswalking AND NOT $ishealinguh AND NOT $isslimtraining AND NOT $ispicking AND NOT $islooting AND NOT $isfishing Then Opt("MouseCoordMode", 1) Local $x, $y Local $runex = $runepos[0] Local $runey = $runepos[1] Local $aim = _imagesearch("img/aim/leftBottomDarkot.bmp", 0, $x, $y, 1) If $aim Then $isaiming = True If $darkotclient == True Then MouseMove($runex, $runey, 0) MouseClick("right", $runex, $runey, 1, 0) MouseMove($x + 25, $y - 20, 0) MouseClick("left") Else MouseMove($runex, $runey, 0) MouseClick("right", $runex, $runey, 1, 0) MouseMove($x + 16, $y, 0) MouseClick("left") EndIf EndIf EndIf $isaiming = False Opt("MouseCoordMode", 0) EndIf EndFunc Func waypoints() Opt("MouseCoordMode", 1) For $i = 0 To 5 Local $x, $y Local $elementsinarr $one_mark = _imagesearch("img/wpt/marker" & $i + 1 & ".bmp", 0, $x, $y, 0) If $one_mark = 1 Then _arrayinsert($marker, $i, $x) $marker[$i][0] = $x $marker[$i][1] = $y $elementsinarr += 1 Else ContinueLoop EndIf Next If $elementsinarr > 0 Then MsgBox("", "", "Succesfully loaded " & $elementsinarr & " waypoints.") Else MsgBox("", "", "Cannot load waypoints - check minimap and Help image.") EndIf GUICtrlSetData($marksloaded, $elementsinarr) Opt("MouseCoordMode", 0) EndFunc Func walker($1, $2, $3, $4) Opt("MouseCoordMode", 1) If NOT $isattacking AND NOT $isaiming AND NOT $iseating AND NOT $islooting AND NOT $ishotkeyusing AND NOT $isrunemaking AND NOT $isequiping AND NOT $ishealinguh AND NOT $ispicking AND NOT $islooting AND NOT $isfishing Then Local $xx, $yy, $xxx, $yyy Local $isatkimg = _imagesearch("img/attacker/isAttacking.bmp", 0, $xx, $yy, 0) If NOT $isatkimg Then Local $isatkimgg = _imagesearch("img/attacker/isAttacking2.bmp", 0, $xxx, $yyy, 0) If NOT $isatkimgg Then $iswalking = True For $i = 0 To 5 Local $x, $y Local $elementsinarr $one_mark = _imagesearch("img/wpt/marker" & $i + 1 & ".bmp", 0, $x, $y, 0) If $one_mark Then _arrayinsert($marker, $i, $x) $marker[$i][0] = $x $marker[$i][1] = $y $elementsinarr += 1 Else ContinueLoop EndIf Next If $elementsinarr > 0 Then Global $randomwpt = Random(0, $elementsinarr) If $randomwpt > 0 Then MouseClick("primary", $marker[$randomwpt][0] + 2, $marker[$randomwpt][1] + 2, 1, 0) EndIf Else MsgBox(0, "Minimap marks", "Not found marks on minimap. Please recede minimap or add marks.") EndIf EndIf EndIf EndIf $iswalking = False Opt("MouseCoordMode", 0) EndFunc Func fishrecording($1, $2, $3, $4) If WinActive($wintitle) Then If _ispressed("11", $user32dll) Then $fishcount += 1 If $fishcount = 1 Then GUICtrlSetData($fishlist, "") EndIf Local $pos = MouseGetPos() Global $pose[1][2] = [[$pos[0], $pos[1]]] _arrayinsert($fishpos, "0", $pose) GUICtrlSetData($fishlist, $fishcount & ". X" & $fishpos[0][0] & " & Y" & $fishpos[0][1]) $fishmax = UBound($fishpos) EndIf EndIf EndFunc Func fishing($1, $2, $3, $4) If WinActive($wintitle) Then If NOT $isattacking AND NOT $isaiming AND NOT $ishotkeyusing AND NOT $islooting AND NOT $isrunemaking AND NOT $isequiping AND NOT $ishealinguh AND NOT $ispicking AND NOT $islooting AND NOT $isfishing AND NOT $isslimtraining Then If $mediviaclient Then Local $arrowslotx = $hpbar[0] + 99 Local $arrowsloty = $hpbar[1] + 201 Else Local $arrowslotx = $hpbar[0] + 65 Local $arrowsloty = $hpbar[1] + 130 EndIf If _timer_gettimerid($fist) Then HotKeySet("{DELETE}", "killFishing") EndIf For $i = 0 To $fishmax - 2 Local $x = $fishpos[$i][0] Local $y = $fishpos[$i][1] MouseMove($arrowslotx, $arrowsloty) MouseClick("right", $arrowslotx, $arrowsloty) MouseMove($x, $y) MouseClick("left", $x, $y) Next EndIf EndIf EndFunc Func killfishing() GUICtrlSetState($fishing, $gui_unchecked) _timer_killtimer($guimain, $fist) EndFunc Func autoeater($1, $2, $3, $4) winact() If NOT $isattacking AND NOT $isaiming AND NOT $islooting AND NOT $ishotkeyusing AND NOT $isequiping AND NOT $isrunemaking AND NOT $iswalking AND NOT $ishealinguh AND NOT $isslimtraining AND NOT $ispicking AND NOT $islooting AND NOT $isfishing Then Opt("MouseCoordMode", 1) Local $x, $y Local $food = GUICtrlRead($toeat) $iseating = True If NOT $tibijkaclient Then Switch $food Case "Fishes" Local $search = _imagesearch("img/foods/" & $food & ".bmp", 0, $x, $y, 0) If $search = 1 Then MouseMove($x, $y, 0) MouseClick("right", $x, $y) EndIf Case "Meat" Local $search = _imagesearch("img/foods/" & $food & ".bmp", 0, $x, $y, 0) If $search = 1 Then MouseMove($x, $y, 0) MouseClick("right", $x, $y) EndIf Case "Ham" Local $search = _imagesearch("img/foods/" & $food & ".bmp", 0, $x, $y, 0) If $search = 1 Then MouseMove($x, $y, 0) MouseClick("right", $x, $y) EndIf Case "BrownMushroom" Local $search = _imagesearch("img/foods/" & $food & ".bmp", 0, $x, $y, 0) If $search = 1 Then MouseMove($x, $y, 0) MouseClick("right", $x, $y) EndIf EndSwitch Else Switch $food Case "Fishes" Local $search = _imagesearch("img/foods/" & $food & "8.bmp", 0, $x, $y, 0) If $search = 1 Then MouseMove($x, $y, 0) MouseClick("right", $x, $y) EndIf Case "Meat" Local $search = _imagesearch("img/foods/" & $food & "8.bmp", 0, $x, $y, 0) If $search = 1 Then MouseMove($x, $y, 0) MouseClick("right", $x, $y) EndIf Case "Ham" Local $search = _imagesearch("img/foods/" & $food & "8.bmp", 0, $x, $y, 0) If $search = 1 Then MouseMove($x, $y, 0) MouseClick("right", $x, $y) EndIf Case "BrownMushroom" Local $search = _imagesearch("img/foods/" & $food & "8.bmp", 0, $x, $y, 0) If $search = 1 Then MouseMove($x, $y, 0) MouseClick("right", $x, $y) EndIf EndSwitch EndIf EndIf $iseating = False Opt("MouseCoordMode", 0) EndFunc Func autoequiper($1, $2, $3, $4) If NOT $isattacking AND NOT $isaiming AND NOT $iseating AND NOT $islooting AND NOT $ishotkeyusing AND NOT $isrunemaking AND NOT $iswalking AND NOT $ishealinguh AND NOT $isslimtraining AND NOT $ispicking AND NOT $islooting AND NOT $isfishing Then Local $bp = GUICtrlRead($equipbp) $isequiping = True winact() If $mediviaclient Then Local $arrowslotx = $hpbar[0] + 99 Local $arrowsloty = $hpbar[1] + 201 Else Local $arrowslotx = $hpbar[0] + 65 Local $arrowsloty = $hpbar[1] + 130 EndIf If $mediviaclient == True Then Call("bpCoords", $bp) MouseDown("primary") MouseMove($arrowslotx, $arrowsloty) Else Call("OTbpCoords", $bp) MouseDown("primary") MouseMove($arrowslotx, $arrowsloty) EndIf MouseUp("primary") Send("{ENTER}") EndIf $isequiping = False EndFunc Func afk($1, $2, $3, $4) WinActivate($wintitle) ControlSend($wintitle, "", "", "{CTRLDOWN}") ControlSend($wintitle, "", "", "{down}") Sleep(500) ControlSend($wintitle, "", "", "{up}") Sleep(500) ControlSend($wintitle, "", "", "{down}") ControlSend($wintitle, "", "", "{CTRLUP}") EndFunc Func slimgetpos() Opt("MouseCoordMode", 1) MsgBox(0, "Slime Trainer", "Position of Slime grabbed") Global $slimpos = MouseGetPos() EndFunc Func slimtraining($1, $2, $3, $4) If IsDeclared("slimPos") Then If NOT $isattacking AND NOT $isaiming AND NOT $iseating AND NOT $ishotkeyusing AND NOT $islooting AND NOT $isrunemaking AND NOT $isequiping AND NOT $ishealinguh AND NOT $ispicking AND NOT $islooting AND NOT $isfishing Then Opt("MouseCoordMode", 1) Local $x, $y Local $atk = _imagesearch("img/attacker/slimTrainerLine.bmp", 0, $x, $y, 0) If NOT $atk Then $isslimtraining = True MouseMove($slimpos[0], $slimpos[1], 0) MouseClick("right", $slimpos[0], $slimpos[1], 1, 0) EndIf EndIf $isslimtraining = False Else MsgBox(0, "Slime Trainer", "Please set Slim position first with INSERT button") EndIf EndFunc Func picker($1, $2, $3, $4) If WinActive($wintitle) Then If NOT $isattacking AND NOT $isaiming AND NOT $iseating AND NOT $ishotkeyusing AND NOT $islooting AND NOT $isequiping AND NOT $isrunemaking AND NOT $iswalking AND NOT $ishealinguh AND NOT $isslimtraining AND NOT $islooting AND NOT $isfishing Then Opt("MouseCoordMode", 1) $ispicking = True Local $pos = GUICtrlRead($spearpos) Local $pshift = 37 Switch $pos Case "North" Local $x = $xmiddle, $y = $ymiddle - $pshift MouseMove($x, $y) Case "East" Local $x = $xmiddle + $pshift, $y = $ymiddle MouseMove($x, $y) Case "South" Local $x = $xmiddle, $y = $ymiddle + $pshift MouseMove($x, $y) Case "West" Local $x = $xmiddle - $pshift, $y = $ymiddle MouseMove($x, $y) EndSwitch Opt("MouseCoordMode", 0) Local $lefthand = $mousepos $lefthand[0] += 22 $lefthand[1] += 165 MouseDown("primary") MouseMove($lefthand[0], $lefthand[1]) MouseUp("primary") Send("{ENTER}") EndIf $ispicking = False EndIf EndFunc Odnośnik do komentarza
jarek234242 Opublikowano 9 Marca 2017 Udostępnij Opublikowano 9 Marca 2017 podpinam sie pod prosbe o tibianus pozdrawiam Odnośnik do komentarza
guzikstunt Opublikowano 11 Marca 2017 Udostępnij Opublikowano 11 Marca 2017 Nie działa na DarkOT, wyskakuje "i dont see Tibijka client[...]" Poradzi ktos cos? Odnośnik do komentarza
reflx123 Opublikowano 15 Marca 2017 Udostępnij Opublikowano 15 Marca 2017 chyba autor juz olal ten temat ;p Odnośnik do komentarza
Marchwj Opublikowano 15 Marca 2017 Udostępnij Opublikowano 15 Marca 2017 Bo nie on jest autorem bota, on go tylko scrackował - usunął parę linijek kodu i wrzucił Wam tutaj. Odnośnik do komentarza
reflx123 Opublikowano 15 Marca 2017 Udostępnij Opublikowano 15 Marca 2017 Bo nie on jest autorem bota, on go tylko scrackował - usunął parę linijek kodu i wrzucił Wam tutaj. napisalem autor jako autor tematu, Odnośnik do komentarza
Dekard Opublikowano 30 Kwietnia 2017 Udostępnij Opublikowano 30 Kwietnia 2017 Witam. Po odpaleniu bota na Medivi dostaję informację, że hp i mp zostało znalezione, lecz od razu spada wartość w bocie do 0%. Slime trainer działa, auto food też ale przez to, że nie przechwytuje % hp nie działą auto spell caster. Czy autor tego tematu jest w stanie uaktualnić wersję, bo z tego co czytałem na forum bota jest jakiś problem z Medivią. Pozdrawiam. Odnośnik do komentarza
Lokaty Opublikowano 2 Maja 2017 Udostępnij Opublikowano 2 Maja 2017 macie tutaj dzialajacy crack https://mega.nz/fm/0LQxVZpD Odnośnik do komentarza
Marchwj Opublikowano 2 Maja 2017 Udostępnij Opublikowano 2 Maja 2017 Witam. Po odpaleniu bota na Medivi dostaję informację, że hp i mp zostało znalezione, lecz od razu spada wartość w bocie do 0%. Slime trainer działa, auto food też ale przez to, że nie przechwytuje % hp nie działą auto spell caster. Czy autor tego tematu jest w stanie uaktualnić wersję, bo z tego co czytałem na forum bota jest jakiś problem z Medivią. Pozdrawiam. Autor cracka jedynie usunął zabezpieczenia, wątpię, że mu się będzie chciało analizować cały kod i coś poprawiać. macie tutaj dzialajacy crack https://mega.nz/fm/0LQxVZpD Wysłałeś link do pustego katalogu. Odnośnik do komentarza
Grex20 Opublikowano 4 Maja 2017 Udostępnij Opublikowano 4 Maja 2017 dziala wam na wykopots? Odnośnik do komentarza
Marchwj Opublikowano 4 Maja 2017 Udostępnij Opublikowano 4 Maja 2017 dziala wam na wykopots? Bot działa głównie przez bibliotekę imagesearch w au3, więc jeżeli ich client nie różni się diametralnie od tych niżej, to powinien działać. LoftyBot wspiera akutalnie: - Medivia OTS (after update 2.0 - new client) - Nastarius OTS - Tibijka OTS - Darkot OTS - Classictibia.com - Raretibia.com - Dolnera.com - play.tibians.org - All others OTS with client look (like official) or otclient (custom client) Odnośnik do komentarza
Grex20 Opublikowano 4 Maja 2017 Udostępnij Opublikowano 4 Maja 2017 Część funkcji działa lecz nie odnajduje paska HP. Potrzebuje pomocy kogoś kto ma wykupioną subskrypcje, jest tu taka osoba? Odnośnik do komentarza
Marchwj Opublikowano 4 Maja 2017 Udostępnij Opublikowano 4 Maja 2017 Część funkcji działa lecz nie odnajduje paska HP. Potrzebuje pomocy kogoś kto ma wykupioną subskrypcje, jest tu taka osoba? Może spytaj na ich forum? Odnośnik do komentarza
Grex20 Opublikowano 4 Maja 2017 Udostępnij Opublikowano 4 Maja 2017 Chodzi o to aby podesłał mi ktoś 2 pliki z ich forum które mogą pobrać osoby z subskrypcją Odnośnik do komentarza
wazon Opublikowano 17 Lutego 2018 Udostępnij Opublikowano 17 Lutego 2018 dziękuję, jest nowy bot http://lofty-tibiabot.com/Thread-Loftybot-V2-Features-All-Clients-7-1-OTS-RL-Tibia-11-bot Czy to możliwe? Odnośnik do komentarza
Sznyc Opublikowano 24 Lutego 2018 Udostępnij Opublikowano 24 Lutego 2018 Aimbot , uh bot itp w tym bocie to jakas porazka raczej tylko do run sie nadaje Odnośnik do komentarza
Narkon Opublikowano 13 Marca 2018 Autor Udostępnij Opublikowano 13 Marca 2018 Zamiast Loftybot, lepiej użyć tego... Odnośnik do komentarza
Black Lagoon Opublikowano 18 Marca 2018 Udostępnij Opublikowano 18 Marca 2018 Pykam sobię na Dark Ots dał byś rade cracka do tego bota zarzucić? Odnośnik do komentarza
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Zaloguj się poniżej.
Zaloguj się