Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local getMetadata = gg.getRangesList("global-metadata.dat")
- for lib, name in ipairs(getMetadata) do
- if name.state == "O" then metadataStartAddress, metadataEndAddress = name["start"], name["end"] end
- end
- local getMetadata = gg.getRangesList("global-csharp-metadata.dat")
- for lib, name in ipairs(getMetadata) do
- if name.state == "O" then metadataCSharpStartAddress, metadataCSharpEndAddress = name["start"], name["end"] end
- end
- cSharpMetadata = {metadataCSharpStartAddress, metadataCSharpEndAddress}
- function searchClass(class, useMetadata)
- if gg.getTargetInfo().x64 == true then thisBit = 16 else thisBit = 8 end
- gg.setRanges(gg.REGION_OTHER)
- gg.searchNumber(":" .. class , gg.TYPE_BYTE, false, gg.SIGN_EQUAL, useMetadata[1], useMetadata[2])
- if gg.getResultsCount() == 0 then
- gg.searchNumber(":" .. class , gg.TYPE_BYTE)
- end
- c = gg.getResults(gg.getResultsCount())
- if gg.getResultsCount() == 0 then return nil end
- gg.refineNumber(":".. string.sub(class, 1,1) , gg.TYPE_BYTE)
- c = gg.getResults(gg.getResultsCount())
- gg.clearResults()
- gg.setRanges(gg.REGION_C_ALLOC)
- gg.loadResults(c)
- gg.searchPointer(0)
- c = gg.getResults(gg.getResultsCount())
- for k, v in ipairs(c) do
- v.address = v.address - thisBit
- end
- c = gg.getValues(c)
- if gg.getResultsCount() == 0 then return nil else
- gg.clearResults()
- return c
- end
- end
- function C_A_Pointer(myoffsets , type , addrData , kpr)
- gg.clearResults()
- gg.setRanges(gg.REGION_ANONYMOUS)
- if addrData == nil then return nil end
- gg.loadResults(addrData)
- if gg.getResultsCount() == 0 then return nil end
- repl = gg.getResults(gg.getResultsCount())
- gg.searchPointer(0)
- if gg.getResultsCount() == 0 then
- for k , v in ipairs(repl) do
- v.address = v.address + 0xb400000000000000
- v.flags = gg.TYPE_QWORD
- end
- n = 1
- if #repl > 8 then gg.toast("be patient, this takes a little while") end
- while(n <= #repl) do
- gg.searchNumber(repl[n].address , gg.TYPE_QWORD)
- t = gg.getResults(gg.getResultsCount())
- gg.clearResults()
- gg.addListItems(t)
- n = n + 1
- end
- gg.loadResults(gg.getListItems())
- gg.clearList()
- TsuNever = gg.getResults(gg.getResultsCount())
- else
- t = gg.getResults(gg.getResultsCount())
- end
- if gg.getResultsCount() == 0 then return nil end
- gg.clearResults()
- if kpr == true then return t end
- for k , v in ipairs(t) do
- v.address = v.address + myoffsets
- v.flags = type
- end
- TsuNever = gg.getValues(t)
- gg.clearResults()
- return TsuNever
- end
- function stringMethod(startAddress, method)
- local stringName = {}
- for lengthName = 0 ,#method do
- local getAddressName = gg.getValues({
- {
- address = startAddress + lengthName,
- flags = gg.TYPE_BYTE
- }
- })
- if getAddressName[1].value == 0 then return tostring(table.concat(stringName)) end
- if getAddressName[1].value > 0 and getAddressName[1].value <= 255 then
- table.insert(stringName, string.char(getAddressName[1].value))
- end
- end
- return tostring(table.concat(stringName))
- end
- UIRankHero = {
- banList = 0x180
- }
- pointerUIRankHero = nil
- fileDataUIRankHero = gg.EXT_CACHE_DIR .. "/UIRankHero"
- function initUIRankHero()
- local loadVar = loadfile(fileDataUIRankHero)
- if loadVar ~= nil then
- pointerUIRankHero = loadVar()
- loadVar = nil
- local getValue = gg.getValues({{address = pointerUIRankHero, flags = gg.TYPE_QWORD}})
- getValue = gg.getValues({{address = getValue[1].value + 0x10, flags = gg.TYPE_QWORD}})
- if stringMethod(getValue[1].value, "UIChooseHero") == "UIChooseHero" then
- return pointerUIRankHero
- end
- end --// loadVar
- local classUIRankHero = searchClass("UIChooseHero", cSharpMetadata)
- if classUIRankHero == nil then
- return
- end
- local pointerUIRankHero = C_A_Pointer(0, gg.TYPE_QWORD, classUIRankHero, true)
- if pointerUIRankHero == nil then
- return
- end
- for totalLen = 1, #pointerUIRankHero do
- local getValue = gg.getValues({{address = pointerUIRankHero[totalLen].address + UIRankHero.banList, flags = gg.TYPE_QWORD}})[1].value
- getValue = gg.getValues({{address = getValue, flags = gg.TYPE_QWORD}})[1].value
- getValue = gg.getValues({{address = getValue + 0x10, flags = gg.TYPE_QWORD}})[1].value
- if stringMethod(getValue, "UI_ChooseHeroUI") == "UI_ChooseHeroUI" then
- gg.saveVariable(pointerUIRankHero[totalLen].address, fileDataUIRankHero)
- return pointerUIRankHero[totalLen].address
- end
- end
- return
- end
- UIInit = initUIRankHero()
- function firstMenu()
- local choose = gg.choice({
- "Chou"
- })
- if choose then
- if choose == 1 then
- gg.addListItems({{address = UIInit + 0x270, flags = gg.TYPE_DWORD, value = 26, freeze = true}})
- end
- end
- end
- while true do
- if gg.isVisible(true) then
- gg.setVisible(false)
- firstMenu()
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement