wilmans2m

DBLegendsAU3

Aug 19th, 2024 (edited)
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 31.71 KB | Gaming | 0 0
  1. LUA = 'WILS2M'
  2. GLabel = 'DB LEGENDS'
  3. GProcess = 'com.bandainamcoent.dblegends_ww'
  4. GVersion = '(vAU.03)'
  5. xbit = 64
  6. LibResult = 1
  7. xlib = 'libil2cpp.so'
  8. xlibsize = 0
  9. xREV = 1  I={}
  10. xCNE = 0
  11. xSSE = 0
  12. XbitX = 2
  13. printx = '---------------------------------------------------------------'
  14. expire='free'
  15. game = gg.getTargetInfo()
  16. P=game.processName
  17. FP=game.name
  18. L=gg.getTargetInfo().label
  19. M=gg.getTargetInfo()["label"]
  20. V=game.versionName
  21. TP=gg.getTargetPackage()
  22. xTAGx="Have fun"
  23. xLINKx="https://t.me/HxE_Chat"
  24. xLINK1x="https://www.tiktok.com/@hxesq"
  25. printx="---------------------------------------------------------------"
  26. print(printx)
  27. print(xTAGx)
  28. print("Telegram = "..xLINKx)
  29. print("TikTok = "..xLINK1x)
  30. print(printx)  
  31. print("Script = "..GLabel.."  "..GVersion)
  32. --███████████████████████
  33. --███████████████████████
  34. --███████████████████████
  35. -- APEX[GG]v2
  36. ::RESTARTSCRIPT::
  37. apex=1
  38. gg.setVisible(false)
  39. v=gg.getTargetInfo()
  40.     if v==nil then
  41.         print("×× ERROR ××\n×× INVALID PROCESS SELECTED / OR NO ROOT ACCESS")
  42.         gg.setVisible(true) os.exit()
  43.         return
  44.     end
  45.    
  46. ------------------------------------------------------------------------------
  47. AUalert="\nThis Script will Auto-Update\nInitial Calibration may take a while\n1) START SCRIPT AFTER ANY COMPLETE FIGHT.\n2) Otherwise, Calibration will Fail and Hacks Not Work,then\n    Tap [ START ] on Script.\n\nX) if Not Ready, Press [ NO ]\n"
  48. -- [START] / [NO]
  49. ------------------------------------------------------------------------------
  50.    
  51. HxEmenu = ('            ⚡HxE Menu by wils2m⚡\
  52.           ❦ ════ •⊰❂ - ❂⊱• ════ ❦\
  53.                     ⛥🇮‌🇳‌🇫‌🇴‌⛥\
  54.  🎮🅖🅐🅜🅔🎮 : '..GLabel..'\
  55.  🎰🅥🅔🅡🅢🎰 : '..GVersion..'\
  56.    🎰🅐🅡🅜🎰   : '..xbit..'\
  57. \
  58. ⏳Exᴘɪʀᴇᴅ Date⏳ : '..expire..'\
  59. 🎁 Encryption 🎁 :  '..expire..'\
  60.            ❦ ════ •⊰❂ - ❂⊱• ════ ❦')
  61.            
  62. gg.alert(HxEmenu)
  63.  
  64. print("In Collaboration With:")
  65. print("    ~ APEX[GG]v2 ~")
  66. xLINKx="https://t.me/apexgg2Home"
  67. print("Telegram = "..xLINKx)
  68.  
  69. gg.alert("                           Patch Note\
  70.           ❦ ════ •⊰❂ - ❂⊱• ════ ❦\
  71. - HxE script menu\
  72. - Huge thanks to (Apex[GG])\
  73. - Script Auto-Updating\
  74. - NEW:\
  75. - Updated search method\
  76. - Deleted PvP bot Hack\
  77. .............................................\
  78. - Unlimited stamina (Apex[GG])\
  79. - New disable method (Apex[GG])\
  80. - All Completed Challenge\
  81. - Timer stopped\
  82. - Unlimited Vanish\
  83. - Unlimited Rising Rush\
  84. - Reuse Arts cards\
  85. - Rising Rush Cards\
  86. - No Skill Cooldown\
  87. - No Ki Cost\
  88.            ❦ ════ •⊰❂ - ❂⊱• ════ ❦\
  89. ")
  90. ------------------------------------------------------------------------------
  91. I=nil I={}
  92. A={} for i =1,100 do A[i]={} end
  93. ------------------------------------------------------------------------------
  94. OFF="× " ON="√ "
  95. CC=OFF OH=OFF DE=OFF UV=OFF RR=OFF NC=OFF TS=OFF UC=OFF RC=OFF ST=OFF BT=OFF DS=OFF
  96. HT=OFF
  97.  
  98. function menu()
  99. apex=0
  100. gg.setRanges(gg.REGION_ANONYMOUS)
  101. gg.toast("APEX[GG]v2\nwils2m")
  102. mc=gg.multiChoice({
  103. CC.."All Challenge complete",
  104. OH.."One Hit K.O",
  105. DE.."Disable ennemy",
  106. TS.."Timer stopped",
  107. UV.."Unlimited Vanish",
  108. RR.."Unlimited Rising Rush",
  109. NC.."No Skill Cooldown",
  110. UC.."ReUse Arts Cards",
  111. RC.."RisingRushBall/Card",
  112. ST.."Unlimited Stamina",
  113.     "[ EXIT ]"},
  114.     {},xTAGx.."\n"..xLINKx.."\n"..GLabel.." "..GVersion.." "..xBITx)
  115.    
  116.     if mc==nil then cancel() return end
  117.     if mc[1] then chal() end
  118.     if mc[2] then oneh() end
  119.     if mc[3] then disable() end
  120.     if mc[4] then stoptimer() end
  121.     if mc[5] then vanish() end
  122.     if mc[6] then rising() end
  123.     if mc[7] then nocd() end
  124.     if mc[8] then usearts() end
  125.     if mc[9] then rushcard() end
  126.     if mc[10] then stam() end
  127.     if OH==ON and RR==ON then choose() end
  128.     if UC==ON and RC==ON then choose2() end
  129.    
  130. xhaX={
  131. CC.."All Challenge complete",
  132. OH.."One Hit K.O",
  133. DE.."Disable ennemy",
  134. TS.."Timer stopped",
  135. UV.."Unlimited Vanish",
  136. RR.."Unlimited Rising Rush",
  137. NC.."No Skill Cooldown",
  138. UC.."ReUse Arts Cards",
  139. RC.."RisingRushBall/Card",
  140. ST.."Unlimited Stamina",
  141.     }
  142. xhaX=table.concat(xhaX, "\n")
  143. xhaX=tostring(xhaX)
  144.  
  145.     if mc[11] then exit() return end
  146.  
  147. gg.toast("[√] Complete")
  148.  
  149. gg.alert("Hacks "..GLabel.." "..GVersion.." "..xBITx.."\n\n"..xhaX,"OK",nil,xTAGx)
  150.  
  151. end
  152.  
  153. --███████████████████████
  154.  
  155. --public sealed class TeamStatus : IEventListener
  156. --public int GetArtsCost(ArtsType type)
  157.     A[1].class="TeamStatus"
  158.     A[1].method="GetArtsCost"
  159.  
  160.     function nocd()
  161.     if A[1].error==1 then error() return end
  162.     x=0 HACK(1,1,NC) BC=ONOFF(NC)
  163.     end
  164.        
  165. --███████████████████████      
  166.  
  167. --public sealed class TeamStatus : IEventListener
  168. --public RisingRushBallFlag get_risingRushBallFlag()
  169.     A[2].class="TeamStatus"
  170.     A[2].method="get_risingRushBallFlag"
  171.    
  172.     function rising()
  173.     if A[2].error==1 then error() return end
  174.     x="hE00F80D2" HACK(2,2,RR) RR=ONOFF(RR)
  175.     end
  176.  
  177. --███████████████████████
  178.  
  179. --public sealed class TeamStatus : IEventListener
  180. --public float SpendVanish()
  181. --public sealed class TeamStatus : IEventListener
  182. --public float SpendVanish(float value)
  183.     A[3].class="TeamStatus"
  184.     A[3].method="SpendVanish"
  185.    
  186.     function vanish()
  187.     if A[3].error==1 then error() return end
  188.     x=0 HACK(3,3,UV) UV=ONOFF(UV)
  189.     end
  190.    
  191.   --███████████████████████
  192.  
  193. -- public class AIController : AIControllerBase // TypeDefIndex:
  194. -- public override void Initialize(TeamManager ownTeam, AiData aiData) { }
  195.     A[4].class="AIController"
  196.     A[4].method="Initialize"
  197.    
  198.     function disable()
  199.     if A[4].error==1 then error() return end
  200.     x=0 HACK(4,4,DE) DE=ONOFF(DE) HT=ON
  201.     end
  202.  
  203.  --███████████████████████
  204.  
  205. --public sealed class BattleManager : PeerSyncSingletonMonoBehaviour
  206. --public void SpendTimer(int delta)
  207.     A[5].class="BattleManager"
  208.     A[5].method="SpendTimer"
  209.  
  210.     function stoptimer()
  211.     if A[5].error==1 then error() return end
  212.     x=0 HACK(5,5,TS) TS=ONOFF(TS)
  213.     end
  214.  
  215. --███████████████████████
  216. --public sealed class TeamStatus : IEventListener
  217. --public bool ConsumeArtsCardHand(int handIndex)
  218.     A[6].class="TeamStatus"
  219.     A[6].method="ConsumeArtsCardHand"
  220.  
  221.     function usearts()
  222.     if A[6].error==1 then error() return end
  223.     x=0 HACK(6,6,UC) UC=ONOFF(UC)
  224.     end
  225.  
  226. --███████████████████████
  227.  
  228. --public sealed class BattleSystemParam : SingletonMonoBehaviour<BattleSystemParam>
  229. --public int GetRisingRushBallDrawProbPer(int risingRushActivatedCount, int aliveCharaCountDisadvantage, int addendPer = 0)
  230.     A[7].class="BattleSystemParam"
  231.     A[7].method="GetRisingRushBallDrawProbPer"
  232.  
  233.     function rushcard()
  234.     if A[7].error==1 then error() return end
  235.     x="h800C80D2" HACK(7,7,RC) RC=ONOFF(RC)
  236.     end
  237.  
  238. --███████████████████████
  239.  
  240. --public class BattleChallengeManager
  241. --private static bool ChallengeCheck(int id, int target, int param*)
  242.     A[8].class="BattleChallengeManager"
  243.     A[8].method="ChallengeCheck"
  244.  
  245.     function chal()
  246.     if A[8].error==1 then error() return end
  247.     x=1 HACK(8,8,CC) CC=ONOFF(CC)
  248.     end
  249.    
  250. --███████████████████████
  251.  
  252. -- public class CharacterMasterProxy // TypeDefIndex:
  253.     for i = 9,12 do A[i].class="CharacterMasterProxy" end
  254.     --get_health_nonboost
  255.     A[9].method="get_health_nonboost"
  256.     --h800C80D2
  257.     --get_form_health_gauge_num
  258.     A[10].method="get_form_health_gauge_num"
  259.     --get_health_boostonly
  260.     A[11].method="get_health_boostonly"
  261.     --get_health
  262.     A[12].method="get_health"
  263.    
  264.     function oneh()
  265.     ERR(9,12) if E==1 then error() return end  
  266.     x="h800C80D2" HACK(9,9,OH)
  267.     x=0 HACK(10,12,OH)
  268.     if HT==OFF then disable() end
  269.     OH=ONOFF(OH)
  270.     if OH==OFF then
  271.     x=0 HACK(4,4,DE) DE=ONOFF(DE) HT=OFF
  272.     end
  273.     end
  274.  
  275. --███████████████████████
  276.  
  277. -- public class BattleStartFlow : SceneBase // TypeDefIndex:
  278. -- private IEnumerator CheckStaminaConfirmation() { }
  279.     A[13].class="BattleStartFlow"
  280.     A[13].method="CheckStaminaConfirmation"
  281.  
  282.     function stam()
  283.     if A[13].error==1 then error() return end
  284.     x=0 HACK(13,13,ST) ST=ONOFF(ST)
  285.     end
  286.  
  287. --███████████████████████
  288.  
  289. -- public struct SNetworkBattleStatus // TypeDefIndex:
  290. -- public void Initialize(bool isNetwork, int ownNetworkBattleKey) { }
  291.  
  292. -- function bot()
  293. -- if v.versionName~="5.0.1"  then
  294. -- gg.alert("PvP Bots Only\nSorry This Hack Does Not Auto-Update and is Only Available for Game Version 5.0.1","OK",nil,xTAGx)
  295. -- return
  296. -- end
  297. -- o=0x17C2FA4 x=0
  298. -- if BT==OFF then arm() BT=ON else revert() BT=OFF end
  299. -- end
  300.  
  301. --███████████████████████
  302.  
  303. function choose()
  304. xchoose=gg.choice({
  305.     " \n√ ONE HIT KO\n× RISING RUSH\n ",
  306.     " \n× ONE HIT KO\n√ RISING RUSH\n "},
  307.     0,"These 2 Hacks Cannot be Active at Same Time,  Please Select New Hacks Condition")
  308.     if xchoose==nil then return end
  309.     if xchoose==2 then oneh() return end
  310.     if xchoose==1 then rising() return end
  311. end
  312.  
  313. function choose2()
  314. choosex=gg.choice({
  315.     " \n√ ReUse Arts Card\n× Rising Rush Card\n ",
  316.     " \n× ReUse Arts Card\n√ Rising Rush Card\n "},
  317.     0,"These 2 Hacks Cannot be Active at Same Time,  Please Select New Hacks Condition")
  318.    
  319.     if choosex==nil then rushcard() return end
  320.     if choosex==1 then rushcard() return end
  321.     if choosex==2 then usearts() return end
  322. end
  323. --███████████████████████
  324. --███████████████████████
  325. --███████████████████████
  326.     if v.processName~=GProcess then
  327.         print("This Script is For:\n    "..GLabel.."\n    "..GProcess.."\nYou Selected:\n    "..v.label.."\n    "..v.processName)
  328.         gg.setVisible (true) os.exit()
  329.         return
  330.     end
  331. ------------------------------------------------------------------------------
  332.     if v.x64 then bitx=64 xBITx="[x64]" else bitx=32 xBITx="[x32]" end
  333.         print(xBITx)  
  334.         print(printx)  
  335. ------------------------------------------------------------------------------
  336.  
  337. --███████████████████████
  338.     if LibResult==1 then
  339.     xAPEXx={} xXx=0
  340.     xLibRes=0
  341.     libx=gg.getRangesList()
  342.         if #(libx)==0 then
  343.         print("×× LIB ERROR #01 ××\nNo Libs Found\nTry a Different Virtual Environment \nor Try a Better Game Installation Method\nor Download Game From 'apkcombo.com' ")
  344.         gg.setVisible(true)
  345.         os.exit()
  346.         end
  347.     libx=gg.getRangesList(xlib)
  348.         if #(libx)==0 then  
  349.         print("×× No "..xlib.." Found")
  350.         xLibRes=2
  351.         goto APEX_SPLIT
  352.         end
  353.     xlibn=0
  354.         for i, v in ipairs(libx) do
  355.             if libx[i].state=="Xa" then
  356.             xXx=xXx+1
  357.             xAPEXx[xXx]=libx[i].start
  358.             XLIBSIZE=libx[i]["end"]-libx[i].start
  359.             xLibRes=1
  360.             end
  361.         end
  362.         if xLibRes==0 then
  363.         print("×× LIB ERROR #03 ××\nNo "..xlib.." Found in Xa\nTry a Different Virtual Environment \nor Try a Better Game Installation Method\nor Download Game From 'apkcombo.com' ")
  364.         gg.setVisible(true)
  365.         os.exit()    
  366.         end    
  367.                  
  368.         ::APEX_SPLIT::    
  369.         if xLibRes==2 then
  370.         splitapk=0
  371.         libx=gg.getRangesList()
  372.             for i, v in ipairs(libx) do
  373.                 if libx[i].state=="Xa" and string.match(libx[i].name,"split_config") then
  374.                 splitapk=1
  375.                 end
  376.             end
  377.             if splitapk==1 then
  378.             xsapk={} xsapkx=0
  379.                 for i, v in ipairs(libx) do
  380.                     if libx[i].state=="Xa" then
  381.                     xsapkx=xsapkx+1
  382.                     xsapk[xsapkx]=libx[i]["end"]-libx[i].start
  383.                     end
  384.                 end
  385.                 if xsapkx~=0 then                
  386.                 APEXQ=math.max(table.unpack(xsapk))
  387.                     for i, v in ipairs(libx) do              
  388.                         if libx[i].state=="Xa" and libx[i]["end"]-libx[i].start==APEXQ then              
  389.                         xXx=xXx+1            
  390.                        xAPEXx[xXx]=libx[i].start
  391.                        XLIBSIZE=libx[i]["end"]-libx[i].start
  392.                         print("√√ Split Apk Lib Found\n√√ "..libx[i].name)
  393.                         xLibRes=1                      
  394.                         end
  395.                     end
  396.                 end
  397.             end
  398.          
  399.              if splitapk==0 and xLibRes~=1 then
  400.              print("×× No split_config Lib Found")  
  401.              xc=1 xt={}
  402.              libx=gg.getRangesList()
  403.                  for i, v in ipairs(libx) do
  404.                      if libx[i].state=="Xa" then
  405.                      xt[xc]=tonumber(libx[i]["end"]-libx[i].start)
  406.                      xc=xc+1
  407.                      end
  408.                  end
  409.                  if xc==1 then
  410.                      print("×× No libs in Xa Region\n-- Your Device is Broken --\nGoodbye")
  411.                      gg.setVisible(true)  os.exit()
  412.                      return
  413.                  end
  414.              APEXQ=math.max(table.unpack(xt))
  415.                  for i, v in ipairs(libx) do              
  416.                      if libx[i].state=="Xa" and libx[i]["end"]-libx[i].start==APEXQ then        
  417.                      xXx=xXx+1      
  418.                      xAPEXx[xXx]=libx[i].start
  419.                      XLIBSIZE=libx[i]["end"]-libx[i].start
  420.                      print("√√ math.max Xa Lib Found\n√√ "..libx[i].name)
  421.                      xLibRes=1  
  422.                      end
  423.                  end
  424.             end                        
  425.  
  426.             if xLibRes~=1 then
  427.             print("×× Correct Lib Not Found ××\n×× Direct/Split Config/Xa Max ××")
  428.             gg.setVisible(true)
  429.             os.exit()
  430.              return
  431.             end
  432.         end
  433.    
  434.         if xlibsize~=0 then  
  435.             if XLIBSIZE<xlibsize then
  436.             print("×× Incorrect Lib Size in Xa Region ××\nYour device / virtual / emulator is not compatible with this script")
  437.             gg.setVisible(true)
  438.             os.exit()
  439.             return
  440.             end
  441.         end
  442.        
  443.     end
  444. --███████████████████████
  445. -- OO=ONOFF(OO)
  446. function ONOFF(OO)
  447.     if OO==OFF then OO=ON else OO=OFF end
  448. return OO
  449. end
  450. ------------------------------------------------------------------------------  
  451. function HACK(v1,v2,v3)
  452.     for i = A[v1].start, A[v2].finish do o=I[i]
  453.         if v3==OFF then arm() else revert() end
  454.     end
  455. end
  456. ------------------------------------------------------------------------------  
  457. function ERR(E1,E2)
  458. E=0
  459.     for i = E1,E2 do if A[i].error==1 then E=1 end end    
  460. end
  461. ------------------------------------------------------------------------------  
  462. function arm()
  463. o=tonumber(o)
  464.     for XxX=1,#(xAPEXx) do
  465.         xdump=nil xdump={}
  466.         if type(x)~="table" then
  467.         xdump[1]={} xdump[2]={}
  468.         xdump[1].address=xAPEXx[XxX] + o
  469.         xdump[1].flags=4
  470.             if x==0 then xdump[1].value=xfalse end
  471.             if x==1 then xdump[1].value=xtrue end
  472.             if x~=0 and x~=1 then xdump[1].value=x end
  473.         xdump[2].address=xAPEXx[XxX]+(o+4)
  474.         xdump[2].flags=4
  475.         xdump[2].value=xEND
  476.         else
  477.         cc=0
  478.             for c=1,#(x) do
  479.             xdump[c]={}
  480.             xdump[c].address=xAPEXx[XxX]+o+cc
  481.             xdump[c].flags=4  
  482.             xdump[c].value=tostring(x[c])
  483.             cc=cc+4
  484.             end        
  485.         end
  486.     gg.setValues(xdump)
  487.     end
  488. end
  489. ------------------------------------------------------------------------------  
  490. function revert()
  491.     for XxX=1,#(xAPEXx) do
  492.     REVERT=nil REVERT={} xRx=nil xRx=1
  493.         for i, v in ipairs(ORIG) do
  494.             if tonumber(xAPEXx[XxX]+o)==ORIG[i].address then
  495.                 if type(x)~="table" then
  496.                     REVERT[xRx]={}
  497.                     REVERT[xRx].address=xAPEXx[XxX]+o
  498.                     REVERT[xRx].flags=4
  499.                     REVERT[xRx].value=ORIG[i].value
  500.                     xRx=xRx+1
  501.                     REVERT[xRx]={}
  502.                     REVERT[xRx].address=xAPEXx[XxX]+o+4
  503.                     REVERT[xRx].flags=4
  504.                     REVERT[xRx].value=ORIG[i+1].value
  505.                     xRx=xRx+1
  506.                 else              
  507.                 offcnt=0 tnuc=0
  508.                     for dfg=1,#(x) do
  509.                     REVERT[xRx]={}
  510.                     REVERT[xRx].address=xAPEXx[XxX]+o+offcnt
  511.                     REVERT[xRx].flags=4
  512.                     REVERT[xRx].value=ORIG[i+tnuc].value
  513.                     offcnt=offcnt+4 tnuc=tnuc+1 xRx=xRx+1
  514.                     end
  515.                 end
  516.             gg.setValues(REVERT)
  517.             break
  518.             end
  519.             -- xRx+1
  520.         end
  521.     end
  522. end
  523. --███████████████████████
  524. if v.x64 then
  525. xtrue="h200080D2" -- MOV X0, #0x1
  526. xfalse="h000080D2" -- MOV X0, #0x0
  527. xEND="hC0035FD6" -- RET
  528. else
  529. xtrue="h0100A0E3" -- MOVW R0, #1
  530. xfalse="h0000A0E3" -- MOVW R0, #0
  531. xEND="h1EFF2FE1" -- BX LR
  532. end
  533. ------------------------------------------------------------------------------  
  534.  
  535. -- APEX[GG]v2
  536. function clear()
  537. gg.getResults(gg.getResultsCount())
  538. gg.clearResults()
  539. end
  540. ------------------------------------------------------------------------------  
  541. function search()
  542. gg.getResults(gg.getResultsCount())
  543. gg.clearResults()
  544. gg.searchNumber(x,t)
  545. end
  546. ------------------------------------------------------------------------------  
  547. function refine()
  548. gg.refineNumber(x,t)
  549. end
  550. ------------------------------------------------------------------------------  
  551. function check()
  552. E=nil E=gg.getResultsCount()
  553. end
  554. ------------------------------------------------------------------------------  
  555. function offset()
  556. o=tonumber(o) addoff=nil
  557. addoff=gg.getResults(gg.getResultsCount())
  558.     for i, v in ipairs(addoff) do
  559.         addoff[i].address=addoff[i].address+o
  560.         addoff[i].flags=t
  561.     end
  562. gg.loadResults(addoff)
  563. end
  564. --███████████████████████
  565.  
  566. -- APEX[GG]v2
  567. ------------------------------------------------------------------------------  
  568. function cancel()
  569. gg.toast("CANCELLED")
  570. end
  571. ------------------------------------------------------------------------------  
  572. function wait()
  573. gg.toast("Please Wait..")
  574. end
  575. ------------------------------------------------------------------------------  
  576. function error()
  577. gg.toast("× ERROR ×")
  578. gg.sleep(1000)
  579. end
  580. ------------------------------------------------------------------------------  
  581. function exit()
  582. gg.getListItems()
  583. gg.clearList()
  584. gg.getResults(gg.getResultsCount())
  585. gg.clearResults()
  586. gg.toast("[ EXIT ]")  
  587.     if xhaX~=nil then
  588.         print(printx)
  589.         print(xhaX)
  590.         print(printx)  
  591.     end
  592. gg.setVisible(true)
  593. os.exit()
  594. return
  595. end
  596.  
  597. --███████████████████████
  598.  
  599. NEEDSEARCH=1
  600. SFILE=nil
  601. SFILE=io.open(gg.EXT_FILES_DIR.."/"..GProcess..".lua")
  602.     if SFILE==nil then
  603.         STARTALERT=xTAGx.."\n\n"..GLabel.."\n"..v.versionName.."  "..GVersion.."\n"..LUA.."\n"..AUalert
  604.     else
  605.         SFILE=nil
  606.         SFILE=io.open(gg.EXT_FILES_DIR.."/"..GProcess..".lua"):read("*all")
  607.         pcall(load(SFILE))
  608.             if tostring(v.versionName)~=tostring(SFversion) then
  609.                 gg.alert(xTAGx.."\n\n"..GLabel.."\n"..v.versionName.."  "..GVersion.."\n"..LUA.."\n\nNEW GAME VERSION DETECTED\n","OK")
  610.                 os.remove(gg.EXT_FILES_DIR.."/"..GProcess..".lua")
  611.                 NEEDSEARCH=1
  612.                 goto RESTARTSCRIPT
  613.             else
  614.                 STARTALERT=gg.alert(xTAGx.."\n\n"..GLabel.."\n"..v.versionName.."  "..GVersion.."\n"..LUA.."\n\n√ SAVED OFFSETS FILE FOUND.","[ START ]","DELETE","-- EXIT --")
  615.                 if STARTALERT==3 then exit() return end
  616.                 if STARTALERT==1 then NEEDSEARCH=0 end
  617.                 if STARTALERT==2 then
  618.                    os.remove(gg.EXT_FILES_DIR.."/"..GProcess..".lua")
  619.                    NEEDSEARCH=1
  620.                    goto RESTARTSCRIPT
  621.                    return
  622.                end                
  623.             end
  624.     end
  625.                
  626. if NEEDSEARCH==1 then
  627. ::XGETREADYX::
  628. plwt=gg.alert(xTAGx.."\n\n"..GLabel.."\n"..v.versionName.."  "..GVersion.."\n"..LUA.."\n"..AUalert,"[ START ]","[ NO ]","[ -- EXIT -- ]")
  629. if plwt==3 then exit() return end
  630. if plwt==2 then
  631.     gg.setVisible(false)
  632.     while true do
  633.         if gg.isVisible() then gg.setVisible(false) break end
  634.     end
  635.     goto XGETREADYX
  636.     return
  637. end
  638.  
  639. local xtx=0
  640. local gvr={"Ca","Cd","Cb","A","O"}
  641. local sr={gg.REGION_C_ALLOC, gg.REGION_C_DATA, gg.REGION_C_BSS, gg.REGION_ANONYMOUS, gg.REGION_OTHER}
  642. gg.clearResults() gg.toast("Please Wait..")
  643. gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_DATA | gg.REGION_C_BSS | gg.REGION_ANONYMOUS | gg.REGION_OTHER)
  644. gg.searchNumber(":get_localToWorldMatrix_Injected",1)
  645. gg.refineNumber(":g",1)
  646. gg.searchPointer(0)
  647.     if gg.getResultsCount()~=0 then
  648.         rp=gg.getResults(1)
  649.         rt={} rt[1]={}
  650.         rt[1].address=rp[1].value
  651.         rt[1].flags=1
  652.         rt=gg.getValues(rt)
  653.         rt=gg.getValuesRange(rt)
  654.         rt=tostring(rt[1])
  655.         rp=gg.getValuesRange(rp)
  656.         rp=tostring(rp[1])  
  657.             if rp==rt then
  658.                 for i = 1,5 do
  659.                     if rp==tostring(gvr[i]) then
  660.                         r1=sr[i] r2=sr[i]
  661.                         xtx=2
  662.                         break
  663.                     end
  664.                 end
  665.             else
  666.                 for i = 1,5 do
  667.                     if rp==tostring(gvr[i]) then r2=sr[i] xtx=1 break end
  668.                 end
  669.                 for i = 1,5 do
  670.                     if rt==tostring(gvr[i]) then r1=sr[i] xtx=xtx+1 break end
  671.                 end                
  672.             end
  673.             if xtx~=2 then gg.setRanges(gg.REGION_OTHER | gg.REGION_C_ALLOC | gg.REGION_ANONYMOUS) end
  674.     end
  675. sr=nil gvr=nil rp=nil rt=nil  plwt=nil
  676.  
  677. --███████████████████████
  678.  
  679. SFT={}
  680. SFT[1]="SFversion = '"..v.versionName.."'"
  681. SFT[2]="A={}"
  682. SFT[3]="I={}"
  683. SFTA={}
  684. SFTI={}
  685.  
  686. if v.x64 then off1=-16 typ=32 else off1=-8 typ=4 end
  687.  
  688. ATOTAL=0
  689. for i = 1,100 do
  690.     if A[i].method==nil then break end
  691.     ATOTAL=ATOTAL+1
  692. end
  693.  
  694. ASTART=1 AEND=0 ATABT=ATOTAL+1 ATAB=1
  695. S=0
  696.     while ATAB<=ATOTAL do
  697.     ::AUTOSTART::
  698.     gg.setVisible(false)
  699.         if ATAB>ATOTAL then break goto FINISHED end
  700.     gg.toast("Please Wait.. [ "..ATABT-ATAB.." ]")
  701.     A[ATAB].error=1
  702.     ANAME=nil ANAME={}
  703.     if A[ATAB].name~=nil then
  704.         for i = 1,#(tostring(A[ATAB].name)) do
  705.             ANAME[i]=string.byte(A[ATAB].name,i)
  706.         end
  707.     else
  708.         A[ATAB].name=0
  709.     end
  710.     ACLASS=nil ACLASS={}
  711.     if A[ATAB].class~=nil then
  712.         for i = 1,#(tostring(A[ATAB].class))+1 do
  713.             if i == #(tostring(A[ATAB].class))+1 then
  714.                 ACLASS[i]=0
  715.             else
  716.                 ACLASS[i]=string.byte(A[ATAB].class,i)
  717.             end
  718.         end
  719.     else
  720.         A[ATAB].class=0
  721.     end
  722.    
  723.                 ASTART=AEND+1
  724.                 if xtx==2 then gg.setRanges(r1) end
  725.                 clear() t=1
  726.                 gg.searchNumber(":"..tostring(A[ATAB].method),1)
  727.                 if xtx==2 then gg.setRanges(r2) end
  728.                 xm=gg.getResults(2) gg.getResults(gg.getResultsCount())
  729.                 check()
  730.                     if E==0 then ATAB=ATAB+1
  731.                         if ATAB>ATOTAL then break return end
  732.                     goto AUTOSTART return
  733.                     end
  734.                 x=xm[1].value..";"..xm[2].value.."::2" refine()
  735.                 x=xm[1].value refine()
  736.                 o=-1 offset() x=0 refine() oo=#(tostring(A[ATAB].method))
  737.                 o=oo+1 offset() refine() o=-oo offset()
  738.                 check()
  739.                     if E==0 then ATAB=ATAB+1
  740.                         if ATAB>ATOTAL then break return end
  741.                     goto AUTOSTART return
  742.                     end
  743.                 gg.searchPointer(0) xcount=gg.getResultsCount()
  744.                 xpoint=gg.getResults(xcount,nil, nil, nil, nil, nil, nil, nil,gg.POINTER_READ_ONLY)
  745.                     if #(xpoint)==0 then ATAB=ATAB+1
  746.                         if ATAB>ATOTAL then break return end
  747.                     goto AUTOSTART return
  748.                     end
  749.                 clear()
  750.                     for xp=1,#(xpoint) do
  751.                     xpoint[xp].address=xpoint[xp].address+off1
  752.                     xpoint[xp].flags=typ
  753.                     end
  754.                 gg.loadResults(xpoint)
  755.                 xoff=gg.getResults(#(xpoint),nil, nil, nil, nil, nil, nil, nil, gg.POINTER_EXECUTABLE)
  756.                     if #(xoff)==0 then ATAB=ATAB+1
  757.                         if ATAB>ATOTAL then break return end
  758.                     goto AUTOSTART return
  759.                     end
  760.                     xfin=1
  761.                     while xfin<=#(xoff) do
  762.                     ::XFIN::
  763.                         if xfin>#(xoff) then ATAB=ATAB+1
  764.                             if ATAB>ATOTAL then break return end
  765.                         goto AUTOSTART return
  766.                         end
  767.                         if gg.getTargetInfo().x64 then
  768.                             xadd=tonumber(xoff[xfin].value)  
  769.                         else
  770.                             xadd=string.format("%X",tonumber(xoff[xfin].value))
  771.                             xadd=string.sub(tostring(xadd), -8,-1)
  772.                             xadd=tonumber("0x"..xadd)
  773.                         end    
  774.                     gval1=nil gval1={} gval1[1]={}
  775.                         if gg.getTargetInfo().x64 then gvo=24 gvo1=16 gvo2=24 else gvo=12 gvo1=8 gvo2=12 end
  776.                     gval1[1].address=xoff[xfin].address+gvo
  777.                     gval1[1].flags=typ
  778.                     gval1=gg.getValues(gval1)
  779.                         if gg.getTargetInfo().x64 then
  780.                             gval=tonumber(gval1[1].value)  
  781.                         else
  782.                             gval=string.format("%X",tonumber(gval1[1].value))
  783.                             gval=string.sub(tostring(gval), -8,-1)
  784.                             gval=tonumber("0x"..gval)
  785.                         end    
  786.                     gval2=nil gval2={} gval2[1]={} gval2[2]={}
  787.                     gval2[1].address=gval+gvo1
  788.                     gval2[1].flags=typ
  789.                     gval2[2].address=gval+gvo2
  790.                     gval2[2].flags=typ
  791.                     gval2=gg.getValues(gval2)
  792.                         if gg.getTargetInfo().x64 then
  793.                             gval21=tonumber(gval2[1].value)  
  794.                             gval22=tonumber(gval2[2].value)
  795.                         else
  796.                             gval21=string.format("%X",tonumber(gval2[1].value))
  797.                             gval21=string.sub(tostring(gval21), -8,-1)
  798.                             gval21=tonumber("0x"..gval21)
  799.                             gval22=string.format("%X",tonumber(gval2[2].value))
  800.                             gval22=string.sub(tostring(gval22), -8,-1)
  801.                             gval22=tonumber("0x"..gval22)
  802.                         end    
  803.                          xrefine=0
  804.                          if A[ATAB].class~=0 then
  805.                             for xyz=1,#(ACLASS) do
  806.                                 gvalc={} gvalc[1]={}
  807.                                 gvalc[1].address=gval21+(xyz-1)
  808.                                 gvalc[1].flags=1                        
  809.                                 gvalc=gg.getValues(gvalc)
  810.                                 if gvalc[1].value~=ACLASS[xyz] then xrefine=1 break xfin=xfin+1 goto XFIN end
  811.                             end
  812.                         end
  813.                        
  814.                         if A[ATAB].name~=0 then
  815.                             for xyz=1,#(ANAME) do
  816.                                 gvalc={} gvalc[1]={}
  817.                                 gvalc[1].address=gval22+(xyz-1)
  818.                                 gvalc[1].flags=1                        
  819.                                 gvalc=gg.getValues(gvalc)
  820.                                     if gvalc[1].value~=ANAME[xyz] then xrefine=1 break xfin=xfin+1 goto XFIN end                                
  821.                             end
  822.                         end
  823.                          
  824.                          if xrefine==0 then
  825.                         A[ATAB].start=ASTART AEND=AEND+1
  826.                         A[ATAB].finish=AEND
  827.                         A[ATAB].error=0
  828.                         clear() I[AEND]=xadd-xAPEXx[xXx]
  829.                         SFTA[ATAB]="A["..ATAB.."]={}\nA["..ATAB.."].name = "..A[ATAB].name.."\nA["..ATAB.."].class = "..A[ATAB].class.."\nA["..ATAB.."].method = "..A[ATAB].method.."\nA["..ATAB.."].start = "..ASTART.."\nA["..ATAB.."].finish = "..AEND.."\nA["..ATAB.."].error = 0"
  830.                         SFTI[AEND]="I["..AEND.."] = "..xadd-xAPEXx[xXx]      
  831.                         end
  832.                     xfin=xfin+1            
  833.                     end -- xfin
  834.     ATAB=ATAB+1
  835.     end -- ATAB
  836.    
  837. ---------------------------------------------------
  838.  
  839. ::FINISHED::
  840.  xBAR=0
  841.     for i = 1, ATOTAL do
  842.         if A[i].error~=0 then xBAR=xBAR+1 end
  843.     end
  844.     if xBAR>=ATOTAL  then
  845.         gg.toast("×× FAILURE ××") gg.alert("× AUTO UPDATE FAILURE ×","EXIT",nil, xTAGx)  
  846.         exit()
  847.         return
  848.     end
  849.     if xBAR>=1 then gg.toast("× ERROR ×") gg.alert("× Auto Update Errors\nSome/All Hacks May Not Work","OK",nil, xTAGx)
  850.     end
  851.    
  852.     if xBAR==0 then
  853.     sft=table.concat(SFT,"\n")
  854.     sfta=table.concat(SFTA,"\n")
  855.     sfti=table.concat(SFTI,"\n")
  856.     wstring=tostring(sft.."\n"..sfta.."\n"..sfti)
  857.     local sfsuccess=gg.alert("Auto-Update Success\nCurrent Offsets Will be Saved to File and Automatically Loaded Every Script Execution. Script will Verify Game Version and Automatically Update File as Needed.\n\nSaved File Path:\n"..gg.EXT_FILES_DIR.."/"..GProcess..".lua","√ SAVE","× SAVE","APEX[GG]V2")
  858.         if sfsuccess==1 then
  859.             io.open(gg.EXT_FILES_DIR.."/"..GProcess..".lua","w"):write(wstring):close()
  860.             print("Offsets Written to File:\n"..gg.EXT_FILES_DIR.."/"..GProcess..".lua")
  861.         end
  862. end  
  863. end   -- if NEEDSEARCH
  864. --███████████████████████
  865. --███████████████████████
  866. if xREV==1 then
  867. xRx=1 ORIG={} xREV={}
  868.     for XxX=1,#(xAPEXx) do  
  869.         for i, v in ipairs(I) do
  870.         thiscunt=0
  871.             for dfg=1,7 do
  872.             ORIG[xRx]={}
  873.             ORIG[xRx].address=xAPEXx[XxX]+tonumber(I[i])+thiscunt
  874.             ORIG[xRx].flags=4
  875.             xRx=xRx+1
  876.             thiscunt=thiscunt+4
  877.             end
  878.         end    
  879.     end
  880. ORIG=gg.getValues(ORIG)
  881. end
  882. --███████████████████████
  883. while true do
  884.     if gg.isVisible() or apex==1 then
  885.         gg.setVisible(false) apex=0
  886.         menu()
  887.     end
  888. end
Add Comment
Please, Sign In to add comment