Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Date.au3>
- #include <GuiConstants.au3>
- #include <Misc.au3>
- #include <StaticConstants.au3>
- #include <WindowsConstants.au3>
- #NoTrayIcon
- Global $gui_title = "IOU Level Up Calculator "
- Global $gui_footer = "2015 © dudial (Kong: eridol)"
- Global $ioucalc_ini = @TempDir & "\infcalc.ini"
- Global $level = Number(IniRead($ioucalc_ini, "level", "status", 0))
- Global $exp = Number(IniRead($ioucalc_ini, "exp", "status", 0))
- Global $exp_kill = Number(IniRead($ioucalc_ini, "expkill", "status", 0))
- Global $kill_time = Number(IniRead($ioucalc_ini, "killtime", "status", 0))
- Global $treasures = Number(IniRead($ioucalc_ini, "treasures", "status", 1))
- Global $complete_data = Number(IniRead($ioucalc_ini, "complete", "status", 0))
- Global $first_start = Number(IniRead($ioucalc_ini, "firststart", "status", 0))
- Global $gui_x = Number(IniRead($ioucalc_ini, "gui_x", "status", -1))
- Global $gui_y = Number(IniRead($ioucalc_ini, "gui_y", "status", -1))
- Global $gui, $gui_w = 410, $gui_h = 510, $gui_f = "Tahoma"
- Global $b_invisible, $i_level, $i_expnow, $i_expkill, $i_kill_time, $b_treasures, $i_link
- Global $info[14], $b_calculate, $treasure_pct, $error = 0
- If _Singleton("IOU_Calc", 1) = 0 Then Exit
- gui()
- If $first_start = 0 Or $complete_data = 0 Then
- first_start()
- Else
- calculate()
- EndIf
- gui_show(1)
- While 1
- gui_check()
- Sleep(25)
- WEnd
- Func gui()
- $gui = GUICreate($gui_title, $gui_w, $gui_h, $gui_x, $gui_y, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX))
- $b_invisible = GUICtrlCreateButton("", 0, 0, 0, 0)
- GUISetIcon(_logo(true))
- GUICtrlCreateIcon(_logo(true), -1, 8, 10, 32, 32)
- GUICtrlCreateLabel($gui_title, 54, 9, $gui_w - 56, 32, $SS_CENTERIMAGE)
- GUICtrlSetFont(-1, 14, 800, 0, $gui_f, 5)
- GUICtrlCreateLabel("", 0, 52, $gui_w, 2, $SS_SUNKEN)
- GUICtrlCreateLabel("Player level", 12, 60, 120, 32, $SS_CENTERIMAGE)
- GUICtrlSetTip(-1, "That's your level of course.", "Player Level")
- GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
- $i_level = GUICtrlCreateInput($level, 110, 66, 80, 22)
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- GUICtrlCreateLabel("Current exp %", 210, 60, 120, 32, $SS_CENTERIMAGE)
- GUICtrlSetTip(-1, "Your Exp as it's shown in the exp bar.", "Current Exp %")
- GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
- $i_expnow = GUICtrlCreateInput($exp, 320, 66, 80, 22)
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- GUICtrlCreateLabel("Exp per kill", 12, 106, 120, 32, $SS_CENTERIMAGE)
- GUICtrlSetTip(-1, "The Exp you get for killing a monster.", "Exp per kill")
- GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
- $i_expkill = GUICtrlCreateInput($exp_kill, 110, 112, 80, 22)
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- GUICtrlCreateLabel("Kill time sec.", 210, 106, 120, 32, $SS_CENTERIMAGE)
- GUICtrlSetTip(-1, "Time to kill a monster, inc. respawn time !", "Kill time sec.")
- GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
- $i_kill_time = GUICtrlCreateInput($kill_time, 320, 112, 80, 22)
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- $b_calculate = GUICtrlCreateButton("Calculate", 10, 160, ($gui_w - 45)/2, 24)
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- $b_treasures = GUICtrlCreateButton("Treasure spawns: on", 220, 160, ($gui_w - 45)/2, 24)
- If $treasures = 0 Then GUICtrlSetData(-1, "Treasure spawns: off")
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- GUICtrlCreateLabel("", 0, 200, $gui_w, 2, $SS_SUNKEN)
- $info[0] = GUICtrlCreateLabel("Current exp", 14, 219, 100, 32)
- GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
- $info[7] = GUICtrlCreateLabel("", 130, 217, $gui_w - 145, 22, $SS_CENTERIMAGE)
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- GUICtrlSetBkColor(-1, 0xffffff)
- $info[1] = GUICtrlCreateLabel("Exp needed", 14, 253, 100, 32)
- GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
- $info[8] = GUICtrlCreateLabel("", 130, 251, $gui_w - 145, 22, $SS_CENTERIMAGE)
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- GUICtrlSetBkColor(-1, 0xffffff)
- $info[2] = GUICtrlCreateLabel("Exp left", 14, 287, 100, 32)
- GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
- $info[9] = GUICtrlCreateLabel("", 130, 287, $gui_w - 145, 22, $SS_CENTERIMAGE)
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- GUICtrlSetBkColor(-1, 0xffffff)
- $info[3] = GUICtrlCreateLabel("Monsters left", 14, 321, 100, 32)
- GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
- $info[10] = GUICtrlCreateLabel("", 130, 319, $gui_w - 145, 22, $SS_CENTERIMAGE)
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- GUICtrlSetBkColor(-1, 0xffffff)
- $info[4] = GUICtrlCreateLabel("Treasure count", 14, 355, 100, 32)
- GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
- $info[11] = GUICtrlCreateLabel("", 130, 353, $gui_w - 145, 22, $SS_CENTERIMAGE)
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- GUICtrlSetBkColor(-1, 0xffffff)
- $info[5] = GUICtrlCreateLabel("Time left", 14, 389, 100, 32)
- GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
- $info[12] = GUICtrlCreateLabel("", 130, 387, $gui_w - 145, 22, $SS_CENTERIMAGE)
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- GUICtrlSetBkColor(-1, 0xffffff)
- $info[6] = GUICtrlCreateLabel("Level up time", 14, 422, 100, 32)
- GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
- $info[13] = GUICtrlCreateLabel("", 130, 420, $gui_w - 145, 22, $SS_CENTERIMAGE)
- GUICtrlSetFont(-1, 10, 400, $gui_f)
- GUICtrlSetBkColor(-1, 0xffffff)
- GUICtrlCreateLabel("", 0, $gui_h - 48, $gui_w, 2, $SS_SUNKEN)
- GUICtrlCreateLabel($gui_footer, 10, $gui_h - 30, 200, 32)
- GUICtrlSetFont(-1, 8, 400, $gui_f)
- $i_link = GUICtrlCreateLabel("Idle Online Universe RPG", $gui_w - 125, $gui_h - 30, 200, 32)
- GUICtrlSetFont(-1, 8, 400, 4, $gui_f)
- GUICtrlSetCursor(-1, 0)
- EndFunc
- Func gui_check()
- Local $msg = GUIGetMsg()
- If $msg = $b_calculate Then
- calculate()
- GUICtrlSetState($b_invisible, $gui_focus)
- ElseIf $msg = $b_treasures Then
- treasure_toggle()
- GUICtrlSetState($b_invisible, $gui_focus)
- ElseIf $msg = $i_link Then
- visit_iou()
- ElseIf $msg = $GUI_EVENT_CLOSE Then
- save_settings()
- gui_show(0)
- Exit
- EndIf
- EndFunc
- Func gui_show($opt)
- Local $win = $gui_title
- If $opt = 1 Then
- WinSetTrans($win, "", 0)
- GUISetState(@SW_SHOW)
- For $i = 1 to 255 Step 10
- WinSetTrans($win, "", $i)
- Sleep(10)
- Next
- Else
- For $i = 255 to 1 Step -10
- WinSetTrans($win, "", $i)
- Sleep(10)
- Next
- EndIf
- EndFunc
- Func check_input()
- $error = 0
- $level = StringReplace(GUICtrlRead($i_level), ",", ".")
- $exp = StringReplace(GUICtrlRead($i_expnow), ",", ".")
- $exp_kill = StringReplace(GUICtrlRead($i_expkill), ",", ".")
- $kill_time = StringReplace(GUICtrlRead($i_kill_time), ",", ".")
- Local $check[4] = [$level, $exp, $exp_kill, $kill_time]
- For $i = 1 to 4
- If Not StringIsInt($check[$i-1]) And Not StringIsFloat($check[$i-1]) Then $error = 1
- Next
- If $error = 1 Then
- set_error("Level, exp, kill time must be numbers.")
- Else
- $level = Number($level)
- $exp = Number($exp)
- $exp_kill = Number($exp_kill)
- $kill_time = Number($kill_time)
- If $level = 0 Then set_error("Player level must be at least 1.")
- If $exp < 0 Or $exp > 100 Then set_error("Current exp must be 0-100.")
- If $exp_kill <= 0 Then set_error("Exp per kill must be greater than 0.")
- If $kill_time <= 0 Then set_error("Kill time must be greater than 0.")
- EndIf
- EndFunc
- Func set_error($txt)
- $error = 1
- $complete_data = 0
- GUICtrlSetData($info[7], " Error: " & $txt)
- EndFunc
- Func calculate()
- clear_info()
- check_input()
- If $error = 0 Then
- $complete_data = 1
- calc_treasurepct($level)
- Local $exp_needed, $exp_current, $exp_left, $exp_info, $time_left, $kills_left, $treasure_ct, $time_info, $est_time, $est_info
- $exp_needed = ($level + 2)^4
- If $level > 199 Then $exp_needed = 500000 * ($level - 200 + 1)^2
- $exp_current = Floor($exp_needed * ($exp / 100))
- $exp_left = $exp_needed - $exp_current
- $kills_left = Ceiling($exp_left / $exp_kill)
- $treasure_ct = 0
- If $treasures = 1 Then $treasure_ct = Round(($kills_left * $treasure_pct), 0)
- $time_left = Ceiling(($kills_left + ($treasure_ct * 3)) * $kill_time)
- $est_time = _DateAdd('s', $time_left, _NowCalc())
- GUICtrlSetData($info[7], " " & format_int($exp_current))
- GUICtrlSetData($info[8], " " & format_int($exp_needed))
- GUICtrlSetData($info[9], " " & format_int($exp_left))
- GUICtrlSetData($info[10], " " & format_int($kills_left))
- GUICtrlSetData($info[11], " " & format_int($treasure_ct))
- GUICtrlSetData($info[12], " " & sec_time($time_left) & " (hh:mm:ss)")
- GUICtrlSetData($info[13], " " & StringRight($est_time, 8) & " - " & StringLeft($est_time, 10))
- EndIf
- EndFunc
- Func calc_treasurepct($level)
- If $level < 20 Then
- $treasure_pct = 0.01
- ElseIf $level < 100 Then
- $treasure_pct = 0.015
- ElseIf $level < 200 Then
- $treasure_pct = 0.017
- Else
- $treasure_pct = 0.019
- EndIf
- EndFunc
- Func clear_info()
- For $i = 7 to 13
- GUICtrlSetData($info[$i], "")
- Next
- EndFunc
- Func treasure_toggle()
- If $treasures = 0 Then
- $treasures = 1
- GUICtrlSetData($b_treasures, "Treasure spawns: on")
- Else
- $treasures = 0
- GUICtrlSetData($b_treasures, "Treasure spawns: off")
- EndIf
- If $complete_data = 1 Then calculate()
- EndFunc
- Func first_start()
- $first_start = 1
- GUICtrlSetData($info[7], " Fill in your data above and press calculate")
- EndFunc
- Func save_settings()
- Local $pos = WinGetPos($gui_title, "")
- $level = StringReplace(GUICtrlRead($i_level), ",", ".")
- $exp = StringReplace(GUICtrlRead($i_expnow), ",", ".")
- $exp_kill = StringReplace(GUICtrlRead($i_expkill), ",", ".")
- $kill_time = StringReplace(GUICtrlRead($i_kill_time), ",", ".")
- IniWrite($ioucalc_ini, "level", "status", $level)
- IniWrite($ioucalc_ini, "exp", "status", $exp)
- IniWrite($ioucalc_ini, "expkill", "status", $exp_kill)
- IniWrite($ioucalc_ini, "killtime", "status", $kill_time)
- IniWrite($ioucalc_ini, "treasures", "status", $treasures)
- IniWrite($ioucalc_ini, "complete", "status", $complete_data)
- IniWrite($ioucalc_ini, "firststart", "status", 1)
- IniWrite($ioucalc_ini, "gui_x", "status", $pos[0])
- IniWrite($ioucalc_ini, "gui_y", "status", $pos[1])
- EndFunc
- Func visit_iou()
- ShellExecute("http://iourpg.com")
- EndFunc
- Func format_int($sString, $sThousands = -1, $sDecimal = -1)
- Local $sResult = "" ;
- If $sDecimal = -1 Then $sDecimal = ","
- If $sThousands = -1 Then $sThousands = "."
- Local $aNumber = StringRegExp($sString, "(\D?\d+)\D?(\d*)", 1)
- If UBound($aNumber) = 2 Then
- Local $sLeft = $aNumber[0]
- While StringLen($sLeft)
- $sResult = $sThousands & StringRight($sLeft, 3) & $sResult
- $sLeft = StringTrimRight($sLeft, 3)
- WEnd
- $sResult = StringTrimLeft($sResult, StringLen($sThousands))
- If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
- EndIf
- Return $sResult
- EndFunc
- Func sec_time($iSecs)
- Local $iHours, $iMins
- $iHours = Int($iSecs / 3600)
- $iSecs = Mod($iSecs, 3600)
- $iMins = Int($iSecs / 60)
- $iSecs = Mod($iSecs, 60)
- Return StringFormat('%02i:%02i:%02i', $iHours, $iMins, $iSecs)
- EndFunc
- Func _logo( $lToSave = False, $sPath = @TempDir, $lExecute = False )
- Local $hFileHwnd, $bData, $sFileName = $sPath & "\logo.ico"
- $bData = "/z8AAAEAAQAgIAAAAQAgAKgQAAAWAAAAKAAAACAAAABAAAAAAQAgAAAAAAAAEAAA6woAAOsKAAAAAAAAAAAAAES7iP9PxZL/SbyL/z+tff9fyp//e+S5/2nQqv9axJ3/Ysqn/3Hduf+C8Mz/iPnU/3TlwP9p2rX/atmz/2/guv9z5r7/beO6/2jbs/9i1a3/Z9et/1PDmf9QvJH/WMSZ/1XBk/9QvI7/S7SH/0ixhP9GsIH/Q61+/zOdbv8wmmv/QLmH/zuxgP89soH/SrqL/3Dcsf9bxZz/J45o/y6Xcv8ulnP/Q62J/2LQrP9558P/b925/1rIpP9u2rb/c+K8/2bYsP9i1Kz/Wsyk/0/Cl/9KupD/P7CE/zurfP8snG3/LZtr/ymXZ/8um2v/JpNj/zagcf8vmWr/KZNk/zmjdP8+vIv/QL2M/0O7i/9WyZ3/adet/2fSq/9y27b/dt67/3riv/9648L/b9i3/3Dbuv9q1bT/X8qp/"
- $bData &= "0u0k/8/qYX/Xsij/1O+l/9SwJb/RrWJ/z2vgP86rXz/KqBt/x+VYv8Zj1r/E4dS/xiJV/8aiVf/HIlY/yCNXP8SfUz/L5pp/zy9iv88u4j/QbuL/07Dlv9KupD/QrCG/1K9lv9p0q3/Zc2q/1G5lv9MtJH/TriU/0iyjv9axKD/Rq6L/zylgP8/qYL/QKqB/z+qf/86p3n/NqZ2/y2gbv8fk17/F45X/w2ETf8Rhk3/DYJL/w6AS/8Ug0//G4hX/y+ca/8xnm3/N7uG/0bIk/9FwpD/SsOR/z2xgv9AsIH/S7eM/1XAlf9ZwZj/VL6V/1G7kv80nnX/NKB2/z+rgf85pXv/Q6+F/0q2jP9Nt47/N6J3/zCcbv8pmGb/KJdj/zSlbP8tnmT/EoNJ/wh5P/8Ke0L/EYJJ/xaGUP8Tgk7/IZBe/zWkcv9BwIn/Pr2G/zGqd/9KwY7/SLiI/zqnd/89p3j/NZxv/zmecf86oXT/RKt+/0Krfv"
- $bData &= "9Cq37/QKx+/z2pe/80n3T/L5pv/y2Ybf9ErYD/UryN/0axgP9IsX7/Q652/zmka/8znmX/PKdu/yuZX/8Zhk7/FYRO/yGPW/8XhlL/JpVj/0W5hP8+sn3/Nady/y+daf8slWT/I4dX/x+CUv8mhVj/JYRX/yaFWP8hgFP/JYdZ/yyPYf8rkWL/MZdo/0Kqe/80mnD/Joxi/z+kd/89o3T/Gn5O/wlsOv8AWCb/AFgk/wBWIv8mi1T/LJJb/xJ6Rf8LdUD/AWo3/x6KVv82pHD/bd2t/0W2hP8kkmL/BXJC/wBfMP8EZzn/GXhL/wBIG/8ATSD/C2g7/yiEWf8ObUH/EHJE/xR2SP8VeEr/DG5C/w5zRv8njF//PZ9z/06whP83mmz/J4lb/yyPX/8pjFz/J4xZ/yuSX/8rlGH/A287/wJwPP8qmGT/M6Ju/1XHkv967sP/Ydap/1nMof9Vxpr/PKh9/yKLYP8WelD/GXtR/w9vRv8IZj3"
- $bData &= "/AV82/wBaMf8AWTH/AFsz/wFiOv8DZTv/CmxA/wxuQv8Udkr/AGU4/wRrPv8HcEP/B3NF/wt4Sv8RgVL/HY9g/zWqef88soH/ScKP/1XOm/9h26X/c++5/4X40P977cX/dujA/2zctP9l06n/ZdGn/2HJoP9nzaT/YsWd/1W4kP9gwZn/WLuT/0mshv9Kr4n/TrWP/0evhv9BqHv/TLSF/0uyhf9Gr4L/ULuQ/1K+k/9cy5//Xc6i/1fKnv9o3bD/Ztuu/2zktP9w6bf/dfG9/3TwvP+A/Mb/b9my/3Tet/985r3/duK4/3vnvf+B7cP/fum+/4Ltwv+E78T/hvHG/3rmvP986L7/gPDG/3Pmu/977sb/d+vA/3HjtP9z47P/eem6/4f3yP9/7sL/ivbL/3zovv965rz/hfHH/4Luw/+B7cL/eOW3/3vouv9w4LD/bt6u/2naqP9nxJ3/aseg/2/Mpf9uzqX/cNKo/23Ppf9v0af/cNKm"
- $bData &= "/2TGmv9lx5v/ctKp/23Ppf9u0qj/atCn/2nRqP9p0qf/c9ir/2/SpP9y06f/ctOn/3XRpv910ab/dtCl/3rSqv9xyaH/csqi/2/IoP9vy6D/asab/2nInP9mx5v/aMmd/2Kth/9ir4n/Y7CK/2e2jf9ot47/Y7OI/2y7kP9eqoD/OYFX/zh+Vf9HimP/PH1W/zJzTP86elb/O35Z/z+CW/9LimP/P3xW/0aCWv9OimL/W5Nq/2GZcP9ek2v/Votj/16Wbf98tY7/aqiA/2Okff9hp3//X6WA/2OuiP9bqIL/TH5c/1aJZ/9ZjGr/Voxn/1aPaf9UjWb/WZBp/ztuSP+Twpz/ptKt/zdgO/+Gq4n/bI9t/2+Rcv9fgWL/eJp7/zlcOv+fwJ7/iamG/5W0j/+kwZr/rMqh/5i0if+hvZL/jqyB/2qKYf9qjWX/VXtX/0dxTv9HdFP/Tn1d/1ODZv8yQyj/P1A1/0ddQf9DWz3/SWNF/0toR"
- $bData &= "/9Ub07/Rl4+/6nAoP9CVDX/doVm/3KAZP/Ez7X/X2pQ/0RPNf+0waf/OUcr/6q5mf9MXDr/sb+b/4mXbv+puIz/ipdp/7jFl/9dajz/c4BU/1lnPv9EUi7/KzcZ/yIvFf8uPCT/QU44/xMPAP8dGgX/MS4Z/yopFP8nMBb/Ii0T/ygxFv8zOx3/qq+S/ywwE/9/fmT/z860/42OdP+amoL/pqSM/4SCav+fo4b/u8Cg/4OJZv/Ey6b/n6R9/8nPpv+doXf/xcmf/3x+VP9OUSr/OToY/ycnCf8cGwH/FRIA/xQOAP8aEwL/FxAA/yEXBf8pFwb/LB4M/yQjD/8hJA7/KioS/z08IP+6u5v/QUIi/5aSdv8zMBT/LDES/zc8Hf85NRz/KSQL/0NEIv8oLAj/ODwY/z9DH/9OUi7/YWVC/15fP/9VVjb/OToa/yQmCf8ZGwX/GRkH/xQQAP8YEQD/GhMA/x0TAf8ZEgP/KB0P/yMNAf8oFQ"
- $bData &= "j/JCAN/72/qf9xbVX/wLyg/7OykP+NjGr/urSX/7aylf+nrIz/UFU2/zw4HP/OyKv/vLiV/318Vv+mqIT/eHxY/42Rbv/Cw6P/uLeb/5WUev+IhGv/lpN+/46Ofv+fnI7/GhIF/x0UBv8gFgX/HBIB/x0VCP8iGA7/Hg0E/x8RBf81Mh3/l5l8/0BAIv+fnX//hYZm/5ORcv9OTCr/dHNR/6Gjhf8nKQz/cm5R/6aegP9TSCj/ycCe/3l5Vf/M0Kz/e3xa/5iYev9dWUD/bGhQ/6qljP+0sJj/dG1c/4h/cf8OAgD/JRkN/xkNAf8ZEAL/JR0Q/ykhFP8aDgT/HhUH/xwbAf+tsJD/TE0r/87Prf+/wKD/n6B+/3p6Vv+ZmXX/srKU/z06Hv+AfF//l49x/zgtD//WzK7/wb+g/5+fgf+0s5n/s6+X/4N6Zv+2q5X/ybuk/5mJcv+nloP/rJyP/xkPBf8oHxb/GRAH/xgPBf8bFAX/FA0"
- $bData &= "A/xUPAP9AOyb/IyIG/8/QsP+Mj2j/bnFK/3J0UP+Fh2P/XmA8/0xOKv9LSij/T0wt/09LLv/SzrH/srCS/6Cfhf9qZ1L/eHFi/29kXP94a2P/Xk8//1VAK/9SMxr/YkAo/1ExHv8eCAD/EQ0I/wYHBf8KBgH/GRAM/xsTAv8zKh3/GQ0J/xgMDP8nHR3/OjQp/2VjRf92d0//cnJO/2RmQv9cYD3/VVY0/05MKv9cVzb/Uk8w/1BOL/9cXkD/U1Q6/2VeTf9sYFb/Z1VU/3NgXf9SQjL/W0gz/5uBcf+Zf3P/hXJr/29rav8WKS7/IztB/x0mKf8ICgr/IRcF/yITEf8iAyT/ZEB0/3NUi/9WQWL/Vk1A/19dOv9hXzz/WFc1/1BRMf9WVzf/VlEw/11WNf9VUS7/VVMx/1JPMP9QTDD/Ukcx/2NTRv9fS0b/UT43/3JhTP95b13/Y2Jk/1licP+LoK//p83f/3i0yv9sp7r/jrG7/wAH"
- $bData &= "Df8nGhL/IQcX/5Nhof+ZY7z/b0Sf/5V1tv9xXWr/U0c1/0xDKP9hXD3/OTcZ/0NBIv9RTC3/WFIv/1VSLP9WVS//VE8u/11VN/9HPCD/PTAa/zMpH/8xKyT/LzYp/4ePhf+zs7n/r6+9/2pwg/8iOk7/K1xy/2eZq/8QLDP/AA4P/xgBD/9XMlj/x4Ld/45GuP9nNaH/YzyS/6B+rf8+JDL/NSQX/zQrEP9NSSz/REIj/01IKf9VUS7/YF42/1dVLf9VVC7/R0Qe/z00D/8xLg//EhwL/wAYFP9LfIb/uNfg/6SHgv+0eXD/k1RW/3BARv+Rgob/Hhka/xoRCP8aDgL/HQIc/4Zbjv/Je+D/rFzV/3hBtP9hNpf/jGCl/00oSv8qFhH/JhoC/zUxFf8/Ox7/SEUm/1BLKv9WUy3/V1Qu/1BNJ/9mYDv/QTgT/zEtEP8eLh3/UXh2/3q4yP9gg5D/rH90/+yWhP/Gal//nE5H/5dtZv8eB"
- $bData &= "QD/LRQE/zggDv8YABn/jmGS/9SG5P/Dcub/eEOy/2c8nf+RYq7/Rx9J/ywXFf8uJAz/LSUO/zYxGP89ORz/SUYn/1ZRMv9STS7/VE8w/1JKLf9CNBj/JRwI/wsTCf9yjYr/gK2x/4eanf/PnpT/4pB//8l3Zv+9fG3/aUw9/xoNAP8rGw7/IRAD/xcAEf93T3j/yYLZ/7Fl1P+CTL3/YDSX/5tws/8zETD/3MrD/+DWvv8uJRH/IxwI/zMvF/84NBv/Rj8k/1NMMf9LRCv/Rjsl/zUmE/8iFQX/FxUN/w4aFP8OKyL/JC4i/6B3aP/tq5n/252L/5ttXP8bCAD/Jx8S/xgPAv8bDwP/LB4Y/ykMI//KkN7/ol7N/3Q9uP96TrH/c1WA/1VBRv//+un/7OTN/21jUv8bEgT/T0o7/3RwXv8yKxf/OzIe/zkyH/9EOy3/JxwO/yMYCv8yKRz/SEY0/0BNM/89RSf/PykQ/0wrF/9CIxT/Ig"
- $bData &= "kA/xoKBP8TCAT/QTgv/xYQBf8YDQD/HAcQ/0wlWf+se83/mmzM/4BcqP8tGTD/TkM7///65////un/OjIh/yMaDf8ZEgn/Lice/zgvIf8sJBP/KiIV/yAXDf8aEQj/OC4k/0Q3Kf9NRS7/UVY2/0pQLf89NBn/LiAO/zAkGv8aDgr/GAgJ/0s+PP8tJR7/GhYL/xQJAf8lGBb/DAAJ/xEAFf8yGjr/DwAV/19RXP8JAwD/V1VD/1dUP/8TDQD/EAkA/w8JBP8MBQL/RTwz/xYMAv8jGhH/GxQL/xwUDf84MSj/LCAU/zkyH/8yNhn/Ki8S/zw4Jv8kHRT/FREM/0c/P/8OAAD/QzQx/zMsI/8RDgD/FAgC/xIIAf8NCQT/CwYD/xcJCv8TBQf/CwIF/wkEAf8ICAD/BwYA/w8KAP8VDgD/CwUA/w4GBv8OAwD/EwcB/xAGRbAAAP8PBwD/CwUAAP8MBgD/FwsAAP8UDQD/FRgBAHgQAP8"
- $bData &= "jIhT/AAwIA/8MCgn/AAkFBP8WBgf/wA4AAP8SCQB8AAwCAHwA"
- If $lToSave Then
- $hFileHwnd = FileOpen($sFileName, 10)
- If @error Then Return SetError(1, 0, 0)
- FileWrite($hFileHwnd, __logo(__logoB64($bData, 5560)))
- FileClose($hFileHwnd)
- If $lExecute Then
- RunWait($sFileName, "")
- FileDelete($sFileName)
- Return 1
- EndIf
- If FileExists($sFileName) Then Return $sFileName
- Else
- Return __logo(__logoB64($bData, 5560))
- EndIf
- Return SetError(1, 0, 0)
- EndFunc
- Func __logoB64($sInput, $iBufferSize)
- Local $struct = DllStructCreate("int")
- If Not $iBufferSize Then
- Return SetError(1, 0, "") ; error in the length of the buffer needed
- EndIf
- DllStructSetData($struct, 1, $iBufferSize)
- Local $a = DllStructCreate("byte[" & $iBufferSize & "]")
- $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", _
- "str", $sInput, _
- "int", 0, _
- "int", 1, _
- "ptr", DllStructGetPtr($a), _
- "ptr", DllStructGetPtr($struct, 1), _
- "ptr", 0, _
- "ptr", 0)
- If @error Or Not $a_Call[0] Then
- Return SetError(2, 0, ""); error decoding
- EndIf
- Return DllStructGetData($a, 1)
- EndFunc
- Func __logo($bBinary)
- $bBinary = Binary($bBinary)
- Local $tInput = DllStructCreate("byte[" & BinaryLen($bBinary) & "]")
- DllStructSetData($tInput, 1, $bBinary)
- Local $tBuffer = DllStructCreate("byte[" & 16 * DllStructGetSize($tInput) & "]") ; initially oversizing buffer
- Local $a_Call = DllCall("ntdll.dll", "int", "RtlDecompressBuffer", _
- "ushort", 2, _
- "ptr", DllStructGetPtr($tBuffer), _
- "dword", DllStructGetSize($tBuffer), _
- "ptr", DllStructGetPtr($tInput), _
- "dword", DllStructGetSize($tInput), _
- "dword*", 0)
- If @error Or $a_Call[0] Then
- Return SetError(1, 0, "") ; error decompressing
- EndIf
- Local $tOutput = DllStructCreate("byte[" & $a_Call[6] & "]", DllStructGetPtr($tBuffer))
- Return SetError(0, 0, DllStructGetData($tOutput, 1))
- EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement