function PS() end function setvalue(address,flags,value) PS('TANG INA MO LUDE😐)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setVisible(false) gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) yyy=gg.getResultCount() if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "\nFound: "..yyy.." Edited: " .. xgsl .. "") else gg.toast(qmnb[2]["name"] .. " Failed") end end end gg.clearResults() end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end local hex = {} function mahdiprog(lib,offset,edit,type) local ranges = gg.getRangesList(lib) local xy = {} xy[1] = {} xy[1].address = ranges[1].start + offset xy[1].flags = type xy[1].value = edit gg.setValues(xy) end function setvalue(address,flags,value) PS('Modify address value (address, numeric type, value to be modified)') local tt={} tt[1]={} tt[1].address=address tt[ 1].flags=flags tt[1].value=value gg.setValues(tt) end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setVisible(false) gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) yyy=gg.getResultCount() if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "\nFound: "..yyy.." Edited: " .. xgsl .. "") else gg.toast(qmnb[2]["name"] .. " Failed") end end end gg.clearResults() end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end local hex = {} function mahdiprog(lib,offset,edit,type) local ranges = gg.getRangesList(lib) local xy = {} xy[1] = {} xy[1].address = ranges[1].start + offset xy[1].flags = type xy[1].value = edit gg.setValues(xy) end local HexPatches = {} local memFrom, memTo, lib, num, lim, results, src, ok = 0, -1, nil, 0, 32, {}, nil, false function name(n) if lib ~= n then lib = n local ranges = gg.getRangesList(lib) if #ranges == 0 then print("Error!"..lib.." IS NOT FOUND, MAKE SURE YOU OPEN THE GAME FIRST. BEFORE EXECUTING THE SCRIPT") gg.toast("ᴇʀʀᴏʀ! "..lib.." ɪs ɴᴏᴛ ғᴏᴜɴᴅ") gg.sleep(1800) gg.toast("MAKE SURE YOU OPEN THE GAME FIRST") gg.sleep(1800) gg.setVisible(true) os.exit() else memFrom = ranges[1].start memTo = ranges[#ranges]["end"] end end end function hex2tbl(hex) local ret = {} hex:gsub("%S%S", function (ch) ret[#ret + 1] = ch return "" end) return ret end function original(orig,longoff) local tbl = hex2tbl(orig) local len = #tbl if len == 0 then return end local used = len if len > lim then used = lim end local s = "" for i = 1, used do if i ~= 1 then s = s..";" end local v = tbl[i] if v == "??" or v == "**" then v = "0~~0" end s = s..v.."r" end s = s.."::"..used gg.searchNumber(s, gg.TYPE_BYTE, false, gg.SIGN_EQUAL, memFrom, memTo) if len > used then for i = used + 1, len do local v = tbl[i] if v == "??" or v == "**" then v = 256 else v = ("0x"..v) + 0 if v > 127 then v = v - 256 end end tbl[i] = v end end local found = gg.getResultCount(); results = {} local count = 0 local checked = 0 while true do if checked >= found then break end local all = gg.getResults(8) local total = #all local start = checked if checked + used > total then break end for i, v in ipairs(all) do v.address = v.address + longoff end gg.loadResults(all) while start < total do local good = true local offset = all[1 + start].address - 1 if used < len then local get = {} for i = lim + 1, len do get[i - lim] = {address = offset + i, flags = gg.TYPE_BYTE, value = 0} end get = gg.getValues(get) for i = lim + 1, len do local ch = tbl[i] if ch ~= 256 and get[i - lim].value ~= ch then good = false break end end end if good then count = count + 1 results[count] = offset checked = checked + used else local del = {} for i = 1, used do del[i] = all[i + start] end gg.removeResults(del) end start = start + used end end end function replaced(repl) num = num + 1 local tbl = hex2tbl(repl) if src ~= nil then local source = hex2tbl(src) for i, v in ipairs(tbl) do if v ~= "??" and v ~= "**" and v == source[i] then tbl[i] = "**" end end src = nil end local cnt = #tbl local set = {} local s = 0 for _, addr in ipairs(results) do for i, v in ipairs(tbl) do if v ~= "??" and v ~= "**" then s = s + 1 set[s] = { ["address"] = addr + i, ["value"] = v.."r", ["flags"] = gg.TYPE_BYTE, } end end end if s ~= 0 then gg.setValues(set) end ok = true end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, Loading1) for x = 1, #(Loading1) do xgpy = szpy + Loading1[x]["address"] xglx = Loading1[x]["flags"] xgsz = Loading1[x]["value"] xgdj = Loading1[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function LoadingQ(Loading) gg.setRanges(Loading[1]["memory"]) gg.searchNumber(Loading[3]["value"], Loading[3]["flags"]) if gg.getResultCount() == 0 then gg.toast(Loading[2]["Projects"] .. "Load失败❌") else gg.refineNumber(Loading[3]["value"], Loading[3]["flags"]) gg.refineNumber(Loading[3]["value"], Loading[3]["flags"]) gg.refineNumber(Loading[3]["value"], Loading[3]["flags"]) if gg.getResultCount() == 0 then gg.toast(Loading[2]["Projects"] .. "Load失败❌") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(Loading) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + Loading[v]["address"] pysz[1].flags = Loading[v]["flags"] szpy = gg.getValues(pysz) pdpd = Loading[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, Loading1) end end if xgjg == true then end end end end function edit(orig,ret)_om=orig[1].memory or orig[1][1]_ov=orig[3].value or orig[3][1]_on=orig[2].name or orig[2][1] gg.clearResults()gg.setRanges(_om)gg.searchNumber(_ov,orig[3].type or orig[3][2])sz=gg.getResultCount()if sz<1 then gg.toast(_on.." 开启失败")else sl=gg.getResults(50000)for i =1,sz do ist=true for v=4,#orig do if ist==true and sl[i].value==_ov then cd={{}}cd[1].address=sl[i].address+(orig[v].offset or orig[v][2])cd[1].flags=orig[v].type or orig[v][3]szpy=gg.getValues(cd)cdlv=orig[v].lv or orig[v][1]cdv=szpy[1].value if cdlv==cdv then pdjg=true ist=true else pdjg=false ist=false end end end if pdjg==true then szpy=sl[i].address for x=1,#(ret)do xgpy=szpy+(ret[x].offset or ret[x][2])xglx=ret[x].type or ret[x][3]xgsz=ret[x].value or ret[x][1]xgdj=ret[x].freeze or ret[x][4]xgsj={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xgsj[1].freeze=xgdj gg.addListItems(xgsj)else gg.setValues(xgsj)end end xgjg=true end end if xgjg==true then gg.toast(_on.." 开启成功")else gg.toast(_on.." 开启失败")end end end local app = {} app.memorySearchMode = function(MEMORY) if (MEMORY == 2) then gg.setRanges(gg.REGION_JAVA_HEAP | gg.REGION_C_HEAP | gg.REGION_C_ALLOC | gg.REGION_C_DATA | gg.REGION_C_BSS | gg.REGION_PPSSPP) end if (MEMORY == -1) then gg.setRanges(gg.REGION_VIDEO) end if (MEMORY == -2) then gg.setRanges(gg.REGION_CODE_APP | gg.REGION_CODE_SYS) end if (MEMORY == 0) then gg.setRanges(gg.REGION_ANONYMOUS) end end function checkType(dataType) local type if dataType =="D" or dataType == "D" then type = gg.TYPE_DWORD end if dataType == "F" then type = gg.TYPE_FLOAT end if dataType == "E" then type = gg.TYPE_DOUBLE end if dataType == "B" or dataType == "B" then type = gg.TYPE_BYTE end if dataType == "W" or dataType == "W" then type = gg.TYPE_WORD os.exit() end return type end app.memorySearch = function(pkgName, isNewSearch, address, tb, dataType) gg.clearResults() gg.setVisible(false) local isSucess = gg.searchNumber(tb[1]["lv"], checkType(dataType), false, gg.SIGN_EQUAL, address, -1); local t = gg.getResults(9999); local tab = {} local data = {} for i =1, #t do for j=2, #tb do tab[j] = {} tab[j].address = t[i].address + tb[j]["offset"] if(tb[j]["type"] == nil) then tab[j].flags = t[i].flags else tab[j].flags = checkType(tb[j]["type"]) end tab = gg.getValues(tab) if (tab[j].value == tb[j]["lv"]) then data[#data+1] = t[i].address end end end gg.clearResults() return isSucess, data end app.memoryWrite = function(pkgName, address, value, dataType) gg.setVisible(false) local t = {} t[1] ={} t[1].address = address t[1].flags = checkType(dataType) t[1].value = value return gg.setValues(t) end GG = {Read,Write} function GG.ReadWrite(Read,Writw)TZ = {} dataTZ = Read[1] offset = dataTZ[2] for i =1,#Read do TZA = Read[i] LV = {["lv"] = TZA[1],["offset"] = TZA[2]-offset} table.insert(TZ, i, LV) end app.memorySearchMode(Memory) isSuuess,TUG = app.memorySearch(pkgName, true, 0, TZ, Type) if TUG[1] == nil then else for ii =1,#TUG do for iii =1,#Write do dataxg = Write[iii] value = dataxg[1] Deviant = dataxg[2] app.memoryWrite(pkgName,TUG[ii]+Deviant-offset,value,Type) end end gg.toast(ID.. "开启成功") end end function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local t = gg.getResults(9999) gg.clearResults() if t ~= nil then local r = {} for j=2, #Search do for i, v in ipairs(t) do r[i] = {} r[i].address = v.address + Search[j][2] - Search[1][2] r[i].flags = v.flags end r = gg.getValues(r) for i = #t, 1, -1 do if (tostring(r[i].value) ~= tostring(Search[j][1]) ) then table.remove(t, i) table.remove(r, i) end end end --写入数据 local r = {} for i =1, #t do for j=1, #Write do r[#r+1] = {} r[#r].address = t[i].address + Write[j][2] - Search[1][2] r[#r].flags = t[i].flags r[#r].value = Write[j][1] r[#r].freeze = true--冻结的话修改后面加false end end gg.setValues(r) end end --gg.addListItems(r) function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("搜索η"..#data.."条ΔΘ") local t = {} local base = Search[1][2] for i =1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else gg.toast("not found", false) return false end else gg.toast("Not Found") return false end end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setVisible(false) gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) yyy=gg.getResultCount() if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "\nFound: "..yyy.." Edited: " .. xgsl .. "") else gg.toast(qmnb[2]["name"] .. " Failed") end end end gg.clearResults() end function PS() end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end gg.alert("چیت کامل اپدیت شده توضیحات تو چنل وی ای پی") vip = 1 function HOME() MENU = gg.multiChoice({ "⚜𝙢𝙚𝙣𝙪 𝙗𝙮𝙥𝙖𝙨𝙨⚜", "⚜𝙢𝙚𝙣𝙪 𝙘𝙝𝙚𝙖𝙩 𝙡𝙤𝙗𝙗𝙮⚜", "⚜𝙢𝙚𝙣𝙪 𝙘𝙝𝙚𝙖𝙩 𝙜𝙖𝙢𝙚⚜", "⚜𝙖𝙗𝙤𝙪𝙩⚜", "⚜𝙚𝙭𝙞𝙩⚜", },nil, (os.date("🇮🇷🇮🇷VIP SCRIPT MAMMAD YT & AlirezaYT🇮🇷🇮🇷⚜⚜"))) if MENU == nil then else if MENU[1] == true then m1() end if MENU[2] == true then m2() end if MENU[3] == true then m3() end if MENU[4] == true then m4() end if MENU[5] == true then EXIT() end end vip = -1 end function m1() byp = gg.multiChoice({ "🔥LOGO BYPASS USE LOGO TIMI", "🔥FIX CRASH USE LOGIN", "🔥TEST ANTI CHEAT USE LOBBY", "🔥𝙗𝙖𝙘𝙠🔥", },nil, (os.date("🇮🇷🇮🇷VIP SCRIPT AlirezaYT🇮🇷🇮🇷⚜⚜"))) if byp == nil then else if byp[1] == true then logo() end if byp[2] == true then login() end if byp[3] == true then check() end if byp[4] == true then back() end end end function logo() so = gg.getRangesList('libil2cpp.so')[1].start py = 0x۷۹۹۸۷ setvalue(so + py, 4, -1) gg.alert("gg logo ON") end function login() so = gg.getRangesList('libanogs.so')[1].start py = 0x۷۶۵۵ setvalue(so + py, 4, 0) gg.alert("fixCRASH on") end function check() gg.setVisible(false) gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("67109633", gg.TYPE_DWORD) result = gg.getResultCount() if ۲< result then gg.alert("ᴀɴᴛɪᴄʜᴇᴀᴛ ʀᴇꜱᴜʟᴛ ➪ " .. result .. "\nꜱᴛᴀᴛᴜꜱ ➪ ʀɪsᴋy ✘\nʀᴇʟᴏɢ ➪ yᴇs") gg.processKill() os.exit() else gg.alert("ᴀɴᴛɪᴄʜᴇᴀᴛ ʀᴇꜱᴜʟᴛ ➪ " .. result .. "\nꜱᴛᴀᴛᴜꜱ ➪ sᴀғᴇ ✔︎\nʀᴇʟᴏɢ ➪ ɴᴏ ") gg.clearResults() end end function back() HOME() end function m2() ch1 = gg.multiChoice({ "🔥𝙖𝙞𝙢 𝙗𝙤𝙩🔥", "🔥𝙣𝙤 𝙨𝙥𝙧𝙚𝙚𝙙🔥", "🔥𝙣𝙤 𝙧𝙚𝙡𝙤𝙖𝙙🔥", "🔥𝙣𝙤 𝙧𝙚𝙘𝙤𝙞𝙡🔥", "🔥magic🔥", "🔥𝙗𝙖𝙘𝙠🔥", },nil, (os.date("🇮🇷🇮🇷VIP SCRIPT AlirezaYT🇮🇷🇮🇷⚜⚜"))) if ch1 == nil then else if ch1[1] == true then aim() end if ch1[2] == true then hip() end if ch1[3] == true then rel() end if ch1[4] == true then rec() end if ch1[5] == true then magic() end if ch1[6] == true then back1() end end end function magic() local SEARCH = {{1041462460, 0}, {1050924810, 4}} local WRITE = {{1071462460, 0}} local TYPE = 4 SearchWrite(SEARCH, WRITE, TYPE) gg.clearResults() local SEARCH = {{1040724263, 0}} local WRITE = {{1059936128, 0}} local TYPE = 4 SearchWrite(SEARCH, WRITE, TYPE) gg.clearResults()------- magic gg.setRanges(gg.REGION_VIDEO) gg.searchNumber("16", gg.TYPE_FLOAT) gg.refineNumber("16", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("0", gg.TYPE_FLOAT) gg.clearResults() --------FIX LAG end function aim() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1.40129846e-45;0.44999998808:5", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("0.44999998808", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("3", gg.TYPE_FLOAT) gg.clearResults() gg.toast("AIM BOT ACTIVATED✅") end function hip() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("2.29999995232;2.5;1", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("1.0", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("9.99999972e-10", gg.TYPE_FLOAT) gg.clearResults() gg.toast("NO SPREED ACTIVATED✅") end function rel() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("3.09999990463;3.40000009537", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("3.09999990463;3.40000009537", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("9.99999972e-10", gg.TYPE_FLOAT) gg.clearResults() gg.toast("NO RELOAD ACTIVATED✅") end function rec() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.12999999523", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1020) gg.editAll("2", gg.TYPE_FLOAT) gg.clearResults() gg.toast("ᴍᴀɢɪᴄ ʙᴜʟʟᴇᴛ ") gg.toast("NO RECOIL ACTIVATED✅") end function back1() HOME() end function m3() ch2 = gg.multiChoice({ "🔥𝙧𝙚𝙙 𝙡𝙞𝙜𝙝𝙩🔥", "🔥𝙧𝙚𝙙 𝙡𝙞𝙣𝙚🔥", "🔥𝙢𝙖𝙜𝙞𝙘 𝙗𝙪𝙡𝙡𝙚𝙩🔥", "🔥𝙨𝙥𝙚𝙚𝙙 𝙝𝙖𝙘𝙠🔥", "🔥𝙝𝙞𝙜𝙝 𝙟𝙪𝙢𝙥🔥", "🔥𝙗𝙡𝙖𝙘𝙠 𝙗𝙤𝙙𝙮🔥", "🔥ANTEN🔥", "🔥𝙗𝙖𝙘𝙠🔥", },nil, (os.date("🇮🇷🇮🇷VIP SCRIPT AlirezaYT🇮🇷🇮🇷⚜⚜"))) if ch2 == nil then else if ch2[1] == true then light() end if ch2[2] == true then line() end if ch2[3] == true then magic() end if ch2[4] == true then speed() end if ch2[5] == true then jump() end if ch2[6] == true then black() end if ch2[7] == true then anten() end if ch2[8] == true then back2() end end end function light() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("256;4", gg.TYPE_FLOAT) gg.refineNumber("4", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("100", gg.TYPE_FLOAT) gg.clearResults() gg.toast("RED LIGHT ACTIVATED✅") end function line() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("4575657222490554368;1065353216:9", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("4575657222490554368;1065353216", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(9999) gg.editAll("4575657222520438784;1133903872", gg.TYPE_QWORD) gg.clearResults() gg.toast("RED LINE ACTIVATED✅") end function magic() end function speed() gg.setRanges(gg.REGION_ANONYMOUS) V=gg.prompt({"🏃??sᴇᴛ sᴘᴇᴇᴅ ᴛᴏ🏃🏻‍♀[5;20]","ɴᴏ ʟᴀɢ(ɢᴏᴏᴅ ғᴏʀ ʙʀ)"},{Y},{"number","checkbox"}) for i = 1,5 do gg.sleep(100) gg.setVisible(false) gg.toast("Starting SpeedHack: "..V[1]) end if V[2] == true then gg.searchNumber("4.28000020981;3.20000004768", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) else gg.searchNumber("4.28000020981;3.20000004768", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) end -------------------------------(NoLag_Test)------------------------ speedmenubar=tonumber(V[1]) --------------------------------------------------------------------------- if speedmenubar == 5 then gg.getResults(999) gg.editAll("5", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 6 then gg.getResults(999) gg.editAll("6", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 7 then gg.getResults(999) gg.editAll("7", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 8 then gg.getResults(999) gg.editAll("8", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 9 then gg.getResults(999) gg.editAll("9", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 10 then gg.getResults(999) gg.editAll("10", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 11 then gg.getResults(999) gg.editAll("11", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 12 then gg.getResults(999) gg.editAll("12", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 13 then gg.getResults(999) gg.editAll("13", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 14 then gg.getResults(999) gg.editAll("14", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 15 then gg.getResults(999) gg.editAll("15", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 16 then gg.getResults(999) gg.editAll("16", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 17 then gg.getResults(999) gg.editAll("17", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 18 then gg.getResults(999) gg.editAll("18", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 19 then gg.getResults(999) gg.editAll("19", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 20 then gg.getResults(999) gg.editAll("20", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end end function jump() jumpm = gg.alert("Choose Mode ","MP","BR") if jumpm == 1 then gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("7.5;0.8", gg.TYPE_FLOAT) gg.refineNumber("0.8", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("4", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") end if jumpm == 2 then gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1,065,353,216;1,069,547,520;1,050,253,722:9", gg.TYPE_DWORD) gg.refineNumber("1,065,353,216", gg.TYPE_DWORD) gg.getResults(9999) gg.editAll("1,082,130,432", gg.TYPE_DWORD) gg.clearResults() gg.toast("Active") end end function black() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1048592;1048596;1048680;1048700", gg.TYPE_DWORD) gg.getResults(9999) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.toast("BLAC SKY ACTIVATED✅") end function anten() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("10,126,001;100,423;10,126,001::9", gg.TYPE_DWORD) gg.getResults(10000) gg.editAll("10,126,002;100,424;10,126,002", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("73890;10126001;1,057,803,469::31", gg.TYPE_DWORD) gg.refineNumber("73890", gg.TYPE_DWORD) gg.getResults(10000) gg.editAll("74013", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("2;100,423;73,877;73,903;73,890::21", gg.TYPE_DWORD) gg.getResults(10000) gg.editAll("100,583;100,424;74,002;74,024;74,013", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("10,126,001;56;1,880,000,001;45;0;0;0;0;0;0;0;0;0::65", gg.TYPE_DWORD) gg.getResults(10000) gg.editAll("0;0;0;0;0;400,010;200,157;300,150;5", gg.TYPE_DWORD) gg.setVisible(false) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.18500000238", gg.TYPE_FLOAT) gg.refineNumber("0.18500000238", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("1.8", gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.18500000238", gg.TYPE_FLOAT) gg.refineNumber("0.18500000238", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("1.8", gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.1439999938", gg.TYPE_FLOAT) gg.refineNumber("0.1439999938", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("2", gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.1439999938", gg.TYPE_FLOAT) gg.refineNumber("0.1439999938", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("2", gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460", gg.TYPE_DWORD) gg.refineNumber("1041462460", gg.TYPE_DWORD) gg.getResults(9999) gg.editAll("1092616192", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460", gg.TYPE_DWORD) gg.refineNumber("1041462460", gg.TYPE_DWORD) gg.getResults(9999) gg.editAll("1092616192", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("1071462460", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(999999) gg.editAll("1071462460", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("1071462460", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(9999) gg.editAll("1071462460", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460",gg.TYPE_DWORD) var = gg.getResults(9999) gg.editAll("1077936128",gg.TYPE_DWORD)gg.clearResults() -- [𝐋𝐨𝐠-𝐇𝐨𝐨𝐤] 𝐁𝐲 𝐎𝐧𝐥𝐲𝐓𝐫𝐢𝐬 gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.1439999938",gg.POINTER_WRITABLE,TYPE_FLOAT,gg.SIGN_EQUAL,0,-1) var = gg.getResults(1000) gg.editAll("3",gg.POINTER_WRITABLE)gg.clearResults() -- [𝐋𝐨𝐠-𝐇𝐨𝐨𝐤] 𝐁𝐲 𝐎𝐧𝐥𝐲𝐓𝐫𝐢𝐬 gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460",gg.TYPE_DWORD,TYPE_DWORD,gg.SIGN_EQUAL,0,-1) var = gg.getResults(1000) gg.editAll("1059936128",gg.TYPE_DWORD)gg.clearResults() -- [𝐋𝐨𝐠-𝐇𝐨𝐨𝐤] 𝐁𝐲 𝐎𝐧𝐥𝐲𝐓𝐫𝐢𝐬 gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1040724263",gg.TYPE_DWORD,TYPE_DWORD,gg.SIGN_EQUAL,0,-1) var = gg.getResults(1000) gg.editAll("1059936128",gg.TYPE_DWORD)gg.clearResults() end function back2() HOME() end function m4() ab = gg.multiChoice({ "🔥𝙢𝙮 𝙘𝙝𝙖𝙣𝙣𝙚𝙡🔥", "🔥𝙩𝙚𝙡𝙡 𝙢𝙚🔥", "🔥𝙗𝙖𝙘𝙠🔥", },nil, (os.date("🇮🇷🇮🇷VIP SCRIPT AlirezaYT🇮🇷🇮🇷⚜⚜"))) if ab == nil then else if ab[1] == true then chan() end if ab[2] == true then me() end if ab[3] == true then back3() end end end function chan() -----اینجا با یه الرت اسم چنلو بزن end function me() gg.alert("🇮🇷🇮🇷VIP SCRIPT AlirezaYT🇮🇷🇮🇷⚜⚜") end function back3() HOME() end function EXIT() ex = gg.alert("𝙚𝙭𝙞𝙩 ?","𝙮𝙚𝙨","𝙣𝙤") if ex == nil then else if ex == 1 then exit() end if ex == 3 then end end end function exit() gg.alert("بای بای ما رفتیم") os.exit() end while true do if gg.isVisible(true) then vip = 1 gg.setVisible(false) end if vip == 1 then HOME() end end