Advertisement
Guest User

Untitled

a guest
Oct 17th, 2015
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.27 KB | None | 0 0
  1. #include <Date.au3>
  2. #include <GuiConstants.au3>
  3. #include <Misc.au3>
  4. #include <StaticConstants.au3>
  5. #include <WindowsConstants.au3>
  6. #NoTrayIcon
  7.  
  8. Global $gui_title = "IOU Level Up Calculator "
  9. Global $gui_footer = "2015 © dudial (Kong: eridol)"
  10. Global $ioucalc_ini = @TempDir & "\infcalc.ini"
  11. Global $level = Number(IniRead($ioucalc_ini, "level", "status", 0))
  12. Global $exp = Number(IniRead($ioucalc_ini, "exp", "status", 0))
  13. Global $exp_kill = Number(IniRead($ioucalc_ini, "expkill", "status", 0))
  14. Global $kill_time = Number(IniRead($ioucalc_ini, "killtime", "status", 0))
  15. Global $treasures = Number(IniRead($ioucalc_ini, "treasures", "status", 1))
  16. Global $complete_data = Number(IniRead($ioucalc_ini, "complete", "status", 0))
  17. Global $first_start = Number(IniRead($ioucalc_ini, "firststart", "status", 0))
  18. Global $gui_x = Number(IniRead($ioucalc_ini, "gui_x", "status", -1))
  19. Global $gui_y = Number(IniRead($ioucalc_ini, "gui_y", "status", -1))
  20. Global $gui, $gui_w = 410, $gui_h = 510, $gui_f = "Tahoma"
  21. Global $b_invisible, $i_level, $i_expnow, $i_expkill, $i_kill_time, $b_treasures, $i_link
  22. Global $info[14], $b_calculate, $treasure_pct, $error = 0
  23.  
  24.  
  25. If _Singleton("IOU_Calc", 1) = 0 Then Exit
  26. gui()
  27.  
  28. If $first_start = 0 Or $complete_data = 0 Then
  29. first_start()
  30. Else
  31. calculate()
  32. EndIf
  33.  
  34. gui_show(1)
  35. While 1
  36. gui_check()
  37. Sleep(25)
  38. WEnd
  39.  
  40. Func gui()
  41. $gui = GUICreate($gui_title, $gui_w, $gui_h, $gui_x, $gui_y, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX))
  42. $b_invisible = GUICtrlCreateButton("", 0, 0, 0, 0)
  43. GUISetIcon(_logo(true))
  44. GUICtrlCreateIcon(_logo(true), -1, 8, 10, 32, 32)
  45. GUICtrlCreateLabel($gui_title, 54, 9, $gui_w - 56, 32, $SS_CENTERIMAGE)
  46. GUICtrlSetFont(-1, 14, 800, 0, $gui_f, 5)
  47. GUICtrlCreateLabel("", 0, 52, $gui_w, 2, $SS_SUNKEN)
  48. GUICtrlCreateLabel("Player level", 12, 60, 120, 32, $SS_CENTERIMAGE)
  49. GUICtrlSetTip(-1, "That's your level of course.", "Player Level")
  50. GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
  51. $i_level = GUICtrlCreateInput($level, 110, 66, 80, 22)
  52. GUICtrlSetFont(-1, 10, 400, $gui_f)
  53. GUICtrlCreateLabel("Current exp %", 210, 60, 120, 32, $SS_CENTERIMAGE)
  54. GUICtrlSetTip(-1, "Your Exp as it's shown in the exp bar.", "Current Exp %")
  55. GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
  56. $i_expnow = GUICtrlCreateInput($exp, 320, 66, 80, 22)
  57. GUICtrlSetFont(-1, 10, 400, $gui_f)
  58. GUICtrlCreateLabel("Exp per kill", 12, 106, 120, 32, $SS_CENTERIMAGE)
  59. GUICtrlSetTip(-1, "The Exp you get for killing a monster.", "Exp per kill")
  60. GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
  61. $i_expkill = GUICtrlCreateInput($exp_kill, 110, 112, 80, 22)
  62. GUICtrlSetFont(-1, 10, 400, $gui_f)
  63. GUICtrlCreateLabel("Kill time sec.", 210, 106, 120, 32, $SS_CENTERIMAGE)
  64. GUICtrlSetTip(-1, "Time to kill a monster, inc. respawn time !", "Kill time sec.")
  65. GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
  66. $i_kill_time = GUICtrlCreateInput($kill_time, 320, 112, 80, 22)
  67. GUICtrlSetFont(-1, 10, 400, $gui_f)
  68. $b_calculate = GUICtrlCreateButton("Calculate", 10, 160, ($gui_w - 45)/2, 24)
  69. GUICtrlSetFont(-1, 10, 400, $gui_f)
  70. $b_treasures = GUICtrlCreateButton("Treasure spawns: on", 220, 160, ($gui_w - 45)/2, 24)
  71. If $treasures = 0 Then GUICtrlSetData(-1, "Treasure spawns: off")
  72. GUICtrlSetFont(-1, 10, 400, $gui_f)
  73. GUICtrlCreateLabel("", 0, 200, $gui_w, 2, $SS_SUNKEN)
  74. $info[0] = GUICtrlCreateLabel("Current exp", 14, 219, 100, 32)
  75. GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
  76. $info[7] = GUICtrlCreateLabel("", 130, 217, $gui_w - 145, 22, $SS_CENTERIMAGE)
  77. GUICtrlSetFont(-1, 10, 400, $gui_f)
  78. GUICtrlSetBkColor(-1, 0xffffff)
  79. $info[1] = GUICtrlCreateLabel("Exp needed", 14, 253, 100, 32)
  80. GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
  81. $info[8] = GUICtrlCreateLabel("", 130, 251, $gui_w - 145, 22, $SS_CENTERIMAGE)
  82. GUICtrlSetFont(-1, 10, 400, $gui_f)
  83. GUICtrlSetBkColor(-1, 0xffffff)
  84. $info[2] = GUICtrlCreateLabel("Exp left", 14, 287, 100, 32)
  85. GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
  86. $info[9] = GUICtrlCreateLabel("", 130, 287, $gui_w - 145, 22, $SS_CENTERIMAGE)
  87. GUICtrlSetFont(-1, 10, 400, $gui_f)
  88. GUICtrlSetBkColor(-1, 0xffffff)
  89. $info[3] = GUICtrlCreateLabel("Monsters left", 14, 321, 100, 32)
  90. GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
  91. $info[10] = GUICtrlCreateLabel("", 130, 319, $gui_w - 145, 22, $SS_CENTERIMAGE)
  92. GUICtrlSetFont(-1, 10, 400, $gui_f)
  93. GUICtrlSetBkColor(-1, 0xffffff)
  94. $info[4] = GUICtrlCreateLabel("Treasure count", 14, 355, 100, 32)
  95. GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
  96. $info[11] = GUICtrlCreateLabel("", 130, 353, $gui_w - 145, 22, $SS_CENTERIMAGE)
  97. GUICtrlSetFont(-1, 10, 400, $gui_f)
  98. GUICtrlSetBkColor(-1, 0xffffff)
  99. $info[5] = GUICtrlCreateLabel("Time left", 14, 389, 100, 32)
  100. GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
  101. $info[12] = GUICtrlCreateLabel("", 130, 387, $gui_w - 145, 22, $SS_CENTERIMAGE)
  102. GUICtrlSetFont(-1, 10, 400, $gui_f)
  103. GUICtrlSetBkColor(-1, 0xffffff)
  104. $info[6] = GUICtrlCreateLabel("Level up time", 14, 422, 100, 32)
  105. GUICtrlSetFont(-1, 10, 800, 4, $gui_f)
  106. $info[13] = GUICtrlCreateLabel("", 130, 420, $gui_w - 145, 22, $SS_CENTERIMAGE)
  107. GUICtrlSetFont(-1, 10, 400, $gui_f)
  108. GUICtrlSetBkColor(-1, 0xffffff)
  109. GUICtrlCreateLabel("", 0, $gui_h - 48, $gui_w, 2, $SS_SUNKEN)
  110. GUICtrlCreateLabel($gui_footer, 10, $gui_h - 30, 200, 32)
  111. GUICtrlSetFont(-1, 8, 400, $gui_f)
  112. $i_link = GUICtrlCreateLabel("Idle Online Universe RPG", $gui_w - 125, $gui_h - 30, 200, 32)
  113. GUICtrlSetFont(-1, 8, 400, 4, $gui_f)
  114. GUICtrlSetCursor(-1, 0)
  115. EndFunc
  116.  
  117. Func gui_check()
  118. Local $msg = GUIGetMsg()
  119. If $msg = $b_calculate Then
  120. calculate()
  121. GUICtrlSetState($b_invisible, $gui_focus)
  122. ElseIf $msg = $b_treasures Then
  123. treasure_toggle()
  124. GUICtrlSetState($b_invisible, $gui_focus)
  125. ElseIf $msg = $i_link Then
  126. visit_iou()
  127. ElseIf $msg = $GUI_EVENT_CLOSE Then
  128. save_settings()
  129. gui_show(0)
  130. Exit
  131. EndIf
  132. EndFunc
  133.  
  134. Func gui_show($opt)
  135. Local $win = $gui_title
  136. If $opt = 1 Then
  137. WinSetTrans($win, "", 0)
  138. GUISetState(@SW_SHOW)
  139. For $i = 1 to 255 Step 10
  140. WinSetTrans($win, "", $i)
  141. Sleep(10)
  142. Next
  143. Else
  144. For $i = 255 to 1 Step -10
  145. WinSetTrans($win, "", $i)
  146. Sleep(10)
  147. Next
  148. EndIf
  149. EndFunc
  150.  
  151. Func check_input()
  152. $error = 0
  153. $level = StringReplace(GUICtrlRead($i_level), ",", ".")
  154. $exp = StringReplace(GUICtrlRead($i_expnow), ",", ".")
  155. $exp_kill = StringReplace(GUICtrlRead($i_expkill), ",", ".")
  156. $kill_time = StringReplace(GUICtrlRead($i_kill_time), ",", ".")
  157. Local $check[4] = [$level, $exp, $exp_kill, $kill_time]
  158. For $i = 1 to 4
  159. If Not StringIsInt($check[$i-1]) And Not StringIsFloat($check[$i-1]) Then $error = 1
  160. Next
  161. If $error = 1 Then
  162. set_error("Level, exp, kill time must be numbers.")
  163. Else
  164. $level = Number($level)
  165. $exp = Number($exp)
  166. $exp_kill = Number($exp_kill)
  167. $kill_time = Number($kill_time)
  168. If $level = 0 Then set_error("Player level must be at least 1.")
  169. If $exp < 0 Or $exp > 100 Then set_error("Current exp must be 0-100.")
  170. If $exp_kill <= 0 Then set_error("Exp per kill must be greater than 0.")
  171. If $kill_time <= 0 Then set_error("Kill time must be greater than 0.")
  172. EndIf
  173. EndFunc
  174.  
  175.  
  176. Func set_error($txt)
  177. $error = 1
  178. $complete_data = 0
  179. GUICtrlSetData($info[7], " Error: " & $txt)
  180. EndFunc
  181.  
  182.  
  183. Func calculate()
  184. clear_info()
  185. check_input()
  186. If $error = 0 Then
  187. $complete_data = 1
  188. calc_treasurepct($level)
  189. Local $exp_needed, $exp_current, $exp_left, $exp_info, $time_left, $kills_left, $treasure_ct, $time_info, $est_time, $est_info
  190. $exp_needed = ($level + 2)^4
  191. If $level > 199 Then $exp_needed = 500000 * ($level - 200 + 1)^2
  192. $exp_current = Floor($exp_needed * ($exp / 100))
  193. $exp_left = $exp_needed - $exp_current
  194. $kills_left = Ceiling($exp_left / $exp_kill)
  195. $treasure_ct = 0
  196. If $treasures = 1 Then $treasure_ct = Round(($kills_left * $treasure_pct), 0)
  197. $time_left = Ceiling(($kills_left + ($treasure_ct * 3)) * $kill_time)
  198. $est_time = _DateAdd('s', $time_left, _NowCalc())
  199. GUICtrlSetData($info[7], " " & format_int($exp_current))
  200. GUICtrlSetData($info[8], " " & format_int($exp_needed))
  201. GUICtrlSetData($info[9], " " & format_int($exp_left))
  202. GUICtrlSetData($info[10], " " & format_int($kills_left))
  203. GUICtrlSetData($info[11], " " & format_int($treasure_ct))
  204. GUICtrlSetData($info[12], " " & sec_time($time_left) & " (hh:mm:ss)")
  205. GUICtrlSetData($info[13], " " & StringRight($est_time, 8) & " - " & StringLeft($est_time, 10))
  206. EndIf
  207. EndFunc
  208.  
  209. Func calc_treasurepct($level)
  210. If $level < 20 Then
  211. $treasure_pct = 0.01
  212. ElseIf $level < 100 Then
  213. $treasure_pct = 0.015
  214. ElseIf $level < 200 Then
  215. $treasure_pct = 0.017
  216. Else
  217. $treasure_pct = 0.019
  218. EndIf
  219. EndFunc
  220.  
  221. Func clear_info()
  222. For $i = 7 to 13
  223. GUICtrlSetData($info[$i], "")
  224. Next
  225. EndFunc
  226.  
  227. Func treasure_toggle()
  228. If $treasures = 0 Then
  229. $treasures = 1
  230. GUICtrlSetData($b_treasures, "Treasure spawns: on")
  231. Else
  232. $treasures = 0
  233. GUICtrlSetData($b_treasures, "Treasure spawns: off")
  234. EndIf
  235. If $complete_data = 1 Then calculate()
  236. EndFunc
  237.  
  238. Func first_start()
  239. $first_start = 1
  240. GUICtrlSetData($info[7], " Fill in your data above and press calculate")
  241. EndFunc
  242.  
  243. Func save_settings()
  244. Local $pos = WinGetPos($gui_title, "")
  245. $level = StringReplace(GUICtrlRead($i_level), ",", ".")
  246. $exp = StringReplace(GUICtrlRead($i_expnow), ",", ".")
  247. $exp_kill = StringReplace(GUICtrlRead($i_expkill), ",", ".")
  248. $kill_time = StringReplace(GUICtrlRead($i_kill_time), ",", ".")
  249. IniWrite($ioucalc_ini, "level", "status", $level)
  250. IniWrite($ioucalc_ini, "exp", "status", $exp)
  251. IniWrite($ioucalc_ini, "expkill", "status", $exp_kill)
  252. IniWrite($ioucalc_ini, "killtime", "status", $kill_time)
  253. IniWrite($ioucalc_ini, "treasures", "status", $treasures)
  254. IniWrite($ioucalc_ini, "complete", "status", $complete_data)
  255. IniWrite($ioucalc_ini, "firststart", "status", 1)
  256. IniWrite($ioucalc_ini, "gui_x", "status", $pos[0])
  257. IniWrite($ioucalc_ini, "gui_y", "status", $pos[1])
  258. EndFunc
  259.  
  260. Func visit_iou()
  261. ShellExecute("http://iourpg.com")
  262. EndFunc
  263.  
  264. Func format_int($sString, $sThousands = -1, $sDecimal = -1)
  265. Local $sResult = "" ;
  266. If $sDecimal = -1 Then $sDecimal = ","
  267. If $sThousands = -1 Then $sThousands = "."
  268. Local $aNumber = StringRegExp($sString, "(\D?\d+)\D?(\d*)", 1)
  269. If UBound($aNumber) = 2 Then
  270. Local $sLeft = $aNumber[0]
  271. While StringLen($sLeft)
  272. $sResult = $sThousands & StringRight($sLeft, 3) & $sResult
  273. $sLeft = StringTrimRight($sLeft, 3)
  274. WEnd
  275. $sResult = StringTrimLeft($sResult, StringLen($sThousands))
  276. If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
  277. EndIf
  278. Return $sResult
  279. EndFunc
  280.  
  281. Func sec_time($iSecs)
  282. Local $iHours, $iMins
  283. $iHours = Int($iSecs / 3600)
  284. $iSecs = Mod($iSecs, 3600)
  285. $iMins = Int($iSecs / 60)
  286. $iSecs = Mod($iSecs, 60)
  287. Return StringFormat('%02i:%02i:%02i', $iHours, $iMins, $iSecs)
  288. EndFunc
  289.  
  290. Func _logo( $lToSave = False, $sPath = @TempDir, $lExecute = False )
  291. Local $hFileHwnd, $bData, $sFileName = $sPath & "\logo.ico"
  292. $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/"
  293. $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"
  294. $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"
  295. $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"
  296. $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"
  297. $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"
  298. $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"
  299. $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"
  300. $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"
  301. $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"
  302. $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"
  303. $bData &= "jIhT/AAwIA/8MCgn/AAkFBP8WBgf/wA4AAP8SCQB8AAwCAHwA"
  304. If $lToSave Then
  305. $hFileHwnd = FileOpen($sFileName, 10)
  306. If @error Then Return SetError(1, 0, 0)
  307. FileWrite($hFileHwnd, __logo(__logoB64($bData, 5560)))
  308. FileClose($hFileHwnd)
  309. If $lExecute Then
  310. RunWait($sFileName, "")
  311. FileDelete($sFileName)
  312. Return 1
  313. EndIf
  314. If FileExists($sFileName) Then Return $sFileName
  315. Else
  316. Return __logo(__logoB64($bData, 5560))
  317. EndIf
  318.  
  319. Return SetError(1, 0, 0)
  320. EndFunc
  321.  
  322. Func __logoB64($sInput, $iBufferSize)
  323. Local $struct = DllStructCreate("int")
  324. If Not $iBufferSize Then
  325. Return SetError(1, 0, "") ; error in the length of the buffer needed
  326. EndIf
  327. DllStructSetData($struct, 1, $iBufferSize)
  328. Local $a = DllStructCreate("byte[" & $iBufferSize & "]")
  329. $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", _
  330. "str", $sInput, _
  331. "int", 0, _
  332. "int", 1, _
  333. "ptr", DllStructGetPtr($a), _
  334. "ptr", DllStructGetPtr($struct, 1), _
  335. "ptr", 0, _
  336. "ptr", 0)
  337. If @error Or Not $a_Call[0] Then
  338. Return SetError(2, 0, ""); error decoding
  339. EndIf
  340. Return DllStructGetData($a, 1)
  341. EndFunc
  342.  
  343. Func __logo($bBinary)
  344. $bBinary = Binary($bBinary)
  345. Local $tInput = DllStructCreate("byte[" & BinaryLen($bBinary) & "]")
  346. DllStructSetData($tInput, 1, $bBinary)
  347. Local $tBuffer = DllStructCreate("byte[" & 16 * DllStructGetSize($tInput) & "]") ; initially oversizing buffer
  348. Local $a_Call = DllCall("ntdll.dll", "int", "RtlDecompressBuffer", _
  349. "ushort", 2, _
  350. "ptr", DllStructGetPtr($tBuffer), _
  351. "dword", DllStructGetSize($tBuffer), _
  352. "ptr", DllStructGetPtr($tInput), _
  353. "dword", DllStructGetSize($tInput), _
  354. "dword*", 0)
  355.  
  356. If @error Or $a_Call[0] Then
  357. Return SetError(1, 0, "") ; error decompressing
  358. EndIf
  359. Local $tOutput = DllStructCreate("byte[" & $a_Call[6] & "]", DllStructGetPtr($tBuffer))
  360. Return SetError(0, 0, DllStructGetData($tOutput, 1))
  361. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement