do
	if type(getrlyunyz) ~= 'function' then
		gg.alert('请使用RLGG执行')
		os.exit()
		return
	end

	local info = {
	    example_version = '1.0.3',
		name = '仙神',
		appid = '32482',
		appkey = 'kZ758L3LihL85qqk',
		rc4key = '4EzcSB60z2GlwS2e',
		version = '1.0',
		mi_type = '3'
	}

	local rlyunyz = getrlyunyz(info)
	local ret = rlyunyz.start()
	if not ret or not isTable(ret) or ret.sign ~= 'e69abe2c747ce24e41065efd8429ca5d' then
		os.exit()
		return
	end
end

gg.alert("正在检测环境,请稍等.....")
if gg.isHTTPdump() == false then
	gg.alert("环境正常,正在开启脚本")
end
if gg.isHTTPdump() == true then
	gg.alert("环境异常,检测到你使用了抓包,请您在3秒内关闭或者退出此脚本,否则面临删除您真机中所有data格式文件")
	os.exit()--退出脚本--有退出修改器函数就用这个--gg.ggExit()
end
if gg.isHTTPdump() == "error" then
	gg.alert("请检查网络是否良好")
end
gg.alert("正在二次检测环境,请稍等.....")
if gg.isHTTPdump() == false then
	gg.alert("环境正常,正在开启脚本")
end
if gg.isHTTPdump() == true then
	gg.alert("环境异常,检测到你使用了抓包,请您在3秒内关闭或者退出此脚本,否则面临删除您真机中所有data格式文件")
	os.exit()--退出脚本--有退出修改器函数就用这个--gg.ggExit()
end
if gg.isHTTPdump() == "error" then
	gg.alert("请检查网络是否良好")
end
gg.alert("开启成功正在连接脚本")
draw.text('仙神稳定奔放', 200,100)draw.setColor('#fc913a')
draw.text('官方QQ群:916011224', 200,200)draw.setColor('#fc913a')
draw.text('作者:神罚', 200,300)draw.setColor('#fc913a')
draw.text('神罚本人717145535', 200,400)draw.setColor('#fc913a')
draw.setSize(35)
draw.setStyle('描边并填充')

draw3 = require('draw3')
text1 = draw3.text('仙神全防', 5, 980)
local color = 0xff0a0ef6
text1.setColor(color)


draw3 = require('draw3')
text1 = draw3.text('Q群:916011224', 5, 940)
local color = 0xff0a0ef6
text1.setColor(color)

draw3 = require('draw3')
text1 = draw3.text('适配地铁跑酷4.07.1希腊版', 5, 1020)
local color = 0xff0a0ef6
text1.setColor(color)


draw3 = require('draw3')
text1 = draw3.text('仙神全防', 5, 1060)
local color = 0xff0a0ef6
text1.setColor(color)

draw3 = require('draw3')
text1 = draw3.text('', 5, 1100)
local color = 0xff0a0ef6
text1.setColor(color)

draw3 = require('draw3')
local color = 0xff0a0ef6
text1.setColor(color)
Q  = gg.alert
( "仙神提醒你:\n是否执行自动防环境\n\n--------无需手动选择进程\n\n--------游戏前开启\n\n当前系统给你俩个选择\n\n1:不执行--直接进入脚本\n\n2:继续执行\n\n优化问题:百分百过检测,优化了闪退的问题","不执行","执行" )
	if Q == 1 then
	string.toMusic ( "欢迎老板使用仙神全防" )
	return
	elseif Q == 2 then end
    gg.toast ( "正在等待执行..." )    
    string.toMusic ( "正在等待执行..." )
    gg.sleep ( 3000 )--执行时间	 
    string.toMusic ( "执行成功..." )
    gg.alert ( "执行成功..." )
    gg.sleep ( 2000 )
    string.toMusic ( "当前可选择是否继续" )
K  = gg.alert
( "尊敬仙神的用户:\n\n检测你为仙神忠实客户\n\n目前可享用【自动化注入防检测】\n\n好处1:无需手动开启防环境\n\n好处2:无需手动选择进程\n\n注意1:在大厅开启全防等卡密显示登录进入游戏\n\n注意2:如果没听见提示音就判断为开启失败","取消","继续" )
	if K == 1 then
	    string.toMusic("欢迎老板使用仙神全防")
	return
	elseif K == 2 then end
    local json = json
    ms = { }
    function setvalue ( add , value , falgs , dj )
    	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
    	if dj == true then
    		WY [ 1 ].freeze = true gg.addListItems ( WY )
    	else
    		gg.setValues ( WY )
    	end
    end
    function ms.ss ( num , ty , nc )
    	local GGNUMBER_1 = num
    	local GGNUMBER_2 = ty
    	local GGNUMBER_3 = false
    	local GGNUMBER_4 = gg.SIGN_EQUAL
    	local GGNUMBER_5 = 0x3000000
    	local GGNUMBER_6 = 0xFFFFFFFF
    	local GGNUMBER_7 = 0
    	gg.clearResults ( )
    	gg.setRanges ( nc )
    	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
    	Result = gg.getResults ( gg.getResultCount ( ) )
    end
    
    function ms.py ( num , py , ty )
    	if ( Result and # Result ~= 0 ) then
    		t = { }
    		for i , v in ipairs ( Result ) do
    			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
    		end
    		t = gg.getValues ( t )
    		for i , v in ipairs ( t ) do
    			if v.value ~= num then
    				Result [ i ] = nil
    			end
    		end
    		local MS = { }
    		for i , v in pairs ( Result ) do
    			MS [ # MS + 1 ] = v
    		end
    		Result = MS
    	end
    end
    
    function ms.bc ( )
    	data = { }
    	if Result == nil or # Result == 0 then
    		gg.alert ( "开启失败" )
    	else
    		for i , v in pairs ( Result ) do
    			data [ # data + 1 ] = v.address
    		end
    	end
    	Result = nil
    end
    
    function ms.edit ( nn , off , ty , dj )
    	if ( Result ) then
    		ms.bc ( )
    	end
    	if # data > 0 then
    		for i , v in ipairs ( data ) do
    			setvalue ( v + off , nn , ty , dj or false )
    		end
    		gg.toast ( Name.."成功" )
    	end
    end
    
    XCx32 = function ( Address , Value )
    	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
    	if Somod == nil then
    		gg.alert ( '请重新选择地铁跑酷进程' )
    	else
    		local So = Somod.start
    		local Add = So + Address
    		gg.processPause ( )
    		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
    		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "~A BX	 LR" } } )
    		gg.processResume ( )
    	end
    end
    function ZX(FUNCTIONADD,TYPE,VALUE)
    local SOMOD=gg.getRangesList("il2cpp.so")
    if SOMOD[1]==nil then _error() else
    gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
    gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
    end
    end
    function _error()
    gg.alert([[
    开启失败
    
    
    失败原因:进程存储太小!
       
       
    解决方案:刷新进程后重启开启
    ]])
    end
    function byXa(FUNCTIONADD,TYPE,VALUE)
    local SOMOD=gg.getRangesList("il2cpp.so")
    if SOMOD[1]==nil then _error() else
    gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
    end
    end
    function _error()
    ts=gg.alert([[
    开启失败
    
    
    失败原因:进程存储太小或选择了错误的进程
    
    
    解决方案:重选进程后开启
    ]],"确定","选择进程","")
    if ts == 2 then
    gg.setProcessX()
    end
    end
    FB = function ( Address , Value )
    	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
    	if Somod == nil then
    		gg.alert ( '请重新选择地铁跑酷进程' )
    
    		else
    		local So = Somod.start
    		local Add = So + Address
    		gg.processPause ( )
    		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
    		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "1EFF2FE1r" } } )
    		gg.processResume ( )
    	end
    end
    function ByXm(FUNCTIONADD,TYPE,VALUE)
    	local SOMOD=gg.getRangesList("il2cpp.so")
    	if SOMOD[1]==nil then _error() else
    		gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
    	end
    end
    function _error()
    	gg.alert([[
       开启失败
    
    
       失败原因:进程存储太小!
       
       
       解决方案:刷新进程后重启开启
    ]])
    
    end
    function ByNb(FUNCTIONADD,TYPE,VALUE)
    local SOMOD=gg.getRangesList("il2cpp.so")
    if SOMOD[1]==nil then _error() else
    gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
    gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
    end
    end
    function _error()
    gg.alert([[
       开启失败
    
    
       失败原因:进程存储太小!
       
       
       解决方案:刷新进程后重启开启
    ]])
    end
    function py1(value,lx,py) gg.setVisible(false) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[1]={} z1[1].address=sj[i].address+py z1[1].flags=lx z1=gg.getValues(z1) if z1[1].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("偏移了 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end
    
    function SearchWrite(Search, Write, Type, Name)
    	local time=os.clock()
    	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)
    			local time=string.sub(os.clock()-time,0,5)
    			gg.toast("开启成功 已修改:"..#t.."条数据 本次启动耗时:"..time.."秒")
    			gg.addListItems(t)
    			else
    			gg.toast("开启失败未搜索到任何数据", false)
    			return false
    		end
    		else
    		gg.toast("开启失败未搜索到任何数据")
    		return false
    	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 
    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 
    return false 
    end 
    else 
    return false 
    end
    end
    
    function Get_Address(Head,Offset,Flag)
        local tinfom=gg.getTargetInfo()
        Flag=Flag or 32
        local t={}
        local Addr
        if Head then
            t[1]={address=Head+Offset[1],flags=Flag}
            if not (#Offset==1) then
                for i=2,#Offset do
                    local place=gg.getValues(t)
                    t={}
                    if not tinfom.x64 then
                        place[1].value=place[1].value & 0xFFFFFFFF
                    end
                    t[1]={address=place[1].value+Offset[i],flags=Flag}
                end
            end
            Addr=t[1].address
        end
        return string.format("0x%X",Addr)
    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
    			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
    			return false
    		end
    		else
    		return false
    	end
    end
    
    
    function ByXm(FUNCTIONADD,TYPE,VALUE)
    	local SOMOD=gg.getRangesList("il2cpp.so")
    	if SOMOD[1]==nil then _error() else
    		gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
    	end
    end
    function _error()
    	gg.alert([[
       开启失败
    
    
       失败原因:进程存储太小!
       
       
       解决方案:刷新进程后重启开启
    ]])
    
    end
    
    j={}
    xgz={}
    ZY='Main'
    gg.clearResults() sj={} xgz={}  function search(ss,lx,nc,dz1,dz2) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,gg.SIGN_EQUAL,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("❤️搜索到 "..sl.." 个结果❤️") gg.clearResults() else gg.toast("💨未搜索到结果💨") end else gg.toast("💞无搜索值类型💞") end else gg.toast("💖无需搜索值💖") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[1]={} z1[1].address=sj[i].address+py z1[1].flags=lx z1=gg.getValues(z1) if z1[1].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("💤共偏移 "..#sj.." 个数据💤") else gg.toast("👀没有搜索数据👀") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[1]={} z1[1].address=sj[i].address+py z1[1].flags=lx z1=gg.getValues(z1) if z1[1].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("👄共偏移 "..#sj.." 个数据👄") else gg.toast("👅没有搜索数据👅") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("👁️共修改 "..#z.." 个数据👁️") else gg.toast("🐲没有搜索数据🐲") end end function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("❣️共修改 "..#z.." 个数据❣️") else gg.toast("❤️没有搜索数据❤️") end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast("💖无数据💖") end
    end
    
    
    
    function search(ss,lx,nc,dz1,dz2) gg.setVisible(false) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,536870912,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end
    
    
    function editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."开启失败")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.."开启成功")else gg.toast(qmnbn.."开启失败")end end end
    
    function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) if gg.searchNumber(qmnb[3]["value"],qmnb[3]["type"],false,gg.SIGN_EQUAL,0,-1)~=true then gg.searchAddress(qmnb[3]["value"],-1,qmnb[3]["type"]) end if gg.getResultCount()==0 then gg.toast(qmnb[2]["name"].."开启失败")return end szxx=gg.getResults(gg.getResultCount()) szpd={} a=0 for i=4,#qmnb do for s=1,#szxx do if szpd[s]~="false" then if gg.getValues({{address=szxx[s].address+qmnb[i]["offset"],flags=qmnb[i]["type"]}})[1].value+0~=qmnb[i]["lv"]then szpd[s]="false" a=a+1 end end end end if a==#szxx then gg.toast(qmnb[2]["name"].."开启失败")return end b=0 t={} for x=1,#qmxg do if qmxg[x]["freeze"]==true then a=1 end for i=1,#szxx do if szpd[i]==nil then b=b+1 table.insert(t,{address=szxx[i].address+qmxg[x]["offset"],flags=qmxg[x]["type"],freeze=qmxg[x]["freeze"],value=qmxg[x]["value"]}) end end end gg.setValues(t) gg.addListItems(t) gg.clearResults() if a~=1 then gg.clearList()else a=nil end gg.toast(qmnb[2]["name"].."开启成功,共修改了"..b.."条数据") end
    
    local app = {}
    function Assert(data) --判断
    	if data == nil or data == "" or data == "nil" then
    		return false
    		else
    		return true
    	end
    end
    function mearrass(memory, array) --判断
    	if Assert(memory) and Assert(array) then
    		return true
    		else
    		return false
    	end
    end
    function typetab(array, type) --把所有类型组成一个数组防不写类型
    	local datatype = {}
    	for i = 1, #array do
    		if Assert(array[i].type) then
    			table.insert(datatype, i, array[i].type)
    			else
    			if Assert(type) then
    				table.insert(datatype, i, type)
    				else
    				return false
    			end
    		end
    	end
    	return true, datatype
    end
    function app.memorysearch(memory, array, type) --内存搜索,参数为(内存, 特征码数组, 类型(类型可空))
    	gg.setVisible(false)
    	local isok = mearrass(memory, array)
    	if isok then
    		local isok, datatype = typetab(array, type)
    		if isok then
    			if Assert(array[1].hv) then --判断主特征码是否有hv,有即范围搜索
    				gg.clearResults()
    				gg.setRanges(memory)
    				gg.searchNumber(array[1].lv .. "~" .. array[1].hv, datatype[1]) --有hv进行范围搜索
    				else
    				gg.clearResults()
    				gg.setRanges(memory)
    				gg.searchNumber(array[1].lv, datatype[1]) --普通搜索
    			end
    			if gg.getResultCount() == 0 then --判断搜索到值没
    				return false --没搜到值返回false
    				else
    				local tab = {}
    				local data = gg.getResults(gg.getResultCount()) --保存搜索到的数据到data
    				gg.clearResults()
    				for i = 1, #data do
    					data[i].isok = true --把搜索到的值,全部设置为true
    				end
    				for i = 2, #array do
    					local t = {}
    					local offset = array[i].offset
    					for x = 1, #data do --遍历内存
    						t[#t + 1] = {}
    						t[#t].address = data[x].address + offset
    						t[#t].flags = datatype[i]
    					end
    					local t = gg.getValues(t)
    					for z = 1, #t do
    						if Assert(array[i].hv) then --判断副特征码是否有hv参数
    							if tonumber(t[z].value) < tonumber(array[i].lv) or tonumber(t[z].value) > tonumber(array[i].hv) then
    								--↑↑↑进行范围判断
    								data[z].isok = false --不符合条件的设置为false
    							end
    							else
    							if tostring(t[z].value) ~= tostring(array[i].lv) then --普通判断(没有hv参数)
    								data[z].isok = false --不符合设置为false
    							end
    						end
    					end
    				end
    				for i = 1, #data do --重新遍历数组
    					if data[i].isok then --判断是否为true(符合条件的)
    						tab[#tab + 1] = data[i].address --把符合条件的地址写入数组
    					end
    				end
    				if #tab > 0 then --判断地址数组是否大于0,大于0就是搜到了符合条件的值,反之没搜到
    					return true, tab --搜到返回true和地址数组
    					else
    					return false --没搜到返回false
    				end
    			end
    			else
    			print("type参数错误") --类型错误
    			gg.toast("type参数错误")
    			os.exit()
    		end
    		else
    		print("memory or array参数错误") --内存或类型错误
    		gg.toast("memory or array参数错误")
    		os.exit()
    	end
    end
    function app.memoryread(addr, type) --读内存,参数为(地址,类型)
    	local t = {}
    	t[1] = {}
    	t[1].address = addr
    	t[1].flags = type
    	if #t > 0 then
    		return true, gg.getValues(t)[1].value --读到返回true和读到得值
    		else
    		return false --反之返回false
    	end
    end
    function app.memorywrite(addr, type, value, freeze) --写内存,参数为(地址,类型,写入得值,是否冻结(可空))
    	local t = {}
    	t[1] = {}
    	t[1].address = addr
    	t[1].flags = type
    	t[1].value = value
    	if #t > 0 then
    		if Assert(freeze) then --判断是否有冻结参数
    			t[1].freeze = freeze
    			--gg.setValues(t)   --这行自行选择,如果有这行,false会修改并保存到列表,如果没这行,false只会保存到列表而不会修改
    			return gg.addListItems(t) --成功返回true
    			else
    			return gg.setValues(t) --成功返回true
    		end
    		else
    		return false --失败
    	end
    end
    
    local json =json
    local g = {}
    g.file = gg.getFile()
    g.sel = nil
    gqlb={"请先搜索歌曲",}
    idb={"1010"}
    SN,gc=1,nil
    g.config = gg.getFile():gsub("%lua$", "").."cfg"
    function bei()
    	g.data = loadfile("-- WSG PRO 1.0.9(109)\n"..g.config)
    	if g.data ~= nil then
    		g.sel = g.data()
    		g.data = nil
    	end
    	if g.sel == nil then
    		g.sel = {"","10"}
    	end
    end
    bei()
    --搜索歌曲
    function start(name,sl)
    	fw=gg.makeRequest("http://music.163.com/api/search/get?s="..name.."&type=1&offset=0&total=true&limit="..sl)
    	return fw
    end
    --歌词
    --播放音乐
    function play(id,name)
    	gg.toast("正在播放音乐:"..name,true)
    	gg.playMusic("http://music.163.com/song/media/outer/url?id="..id..".mp3")
    end
    --停止播放
    function stop()
    	gg.toast("正在停止音乐")
    	for i=1,100 do
    		gg.playMusic("stop")
    		gg.playMusic("stop")
    		gg.playMusic("stop")
    	end
    end
    ----
    function Play(gqlb,idb)
    	SN = gg.choice(gqlb,nil,ts)
    	if SN == nil then XGCK =-1 else
    		sn=gg.choice({"播放歌曲","播放并下载"},nil,"歌曲:"..gqlb[SN])
    		if sn == nil then end
    		if sn == 1 then
    			play(idb[SN],gqlb[SN])
    		end
    		if sn == 2 then
    			local XEY=gg.makeRequest("http://music.163.com/song/media/outer/url?id="..idb[SN]..".mp3").content
    			local XEY1=gg.getFile():gsub("[^/]+$","")..gqlb[SN]..".mp3"
    			io.open(XEY1,"w"):write(XEY)
    			gg.alert("提示:\n\n音乐已成功下载位置:\n\n"..XEY1)
    		end
    		XGCK=-1
    	end
    end
    function zjson(jsonr)
    	local str = jsonr
    	-- 匹配Json Key的正则表达式
    	local pattern = "\"[%w]+\":"
    	string.gsub(str, pattern, function(v)
    		if string.find(str, v) then
    			str = string.gsub(str, v, string.gsub(v, "\"", ""))
    		end
    	end)
    	str = string.gsub(str, ":", "=")
    	str = string.gsub(str, "%[", "{")
    	str = string.gsub(str, "%]", "}")
    	local data = "-- WSG PRO 1.0.9(109)\nreturn " .. str
    	local res = load(data)()
    	return res
    end
    
    function json(con)
    	res=zjson(con)
    	zd=res.result.songCount
    	pd=go3-zd
    	if pd <= 0 then else go3=zd end
    	ts="《"..go1.."》找到"..zd.."首歌曲,当前显示"..go3.."首"
    	gqlb={}
    	idb={}
    	for i=1,go3 do
    		gqlb[i]=res.result.songs[i].name
    		idb[i]=res.result.songs[i].id
    	end
    	--print(idb)
    end
    function YY998() Obtain=gg.makeRequest("https://api.uomg.com/api/rand.music?sort=热歌榜&format=json").content muchen=Obtain:match('url":"(.-)","picurl') gg.playMusic(muchen) end
    
    --↓↓↓用上边的代码进行二次封装出来的指针写法
    qmnb = function(daarr)
    	local array = {}
    	for i = 1, #daarr["搜索数组"] do
    		local data = {["lv"] =daarr["搜索数组"][i][1], ["offset"] = daarr["搜索数组"][i][2], ["type"] = daarr["搜索类型"]}
    		table.insert(array, i, data)
    	end
    	local isok, data = app.memorysearch(daarr["搜索内存"], array)
    	if isok then
    		for i = 1, #data do
    			for x = 1, #daarr["修改数组"] do
    				app.memorywrite(data[i] + daarr["修改数组"][x][2], daarr["搜索类型"], daarr["修改数组"][x][1])
    			end
    		end
    		gg.toast(daarr["功能名称"] .. "共修改" .. #data * #daarr["修改数组"] .. "条数据")
    		else
    		gg.toast(daarr["功能名称"] .. "开启失败")
    	end
    end
    
    
    
    function xg1(value,lx,py,dj) if sj~=nil and #sj>0 then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx if value == nil then value = readValue(z[i].address, lx) end z[i].value= value z[i].freeze = dj and true or false end if dj == true or dj == false then gg.addListItems(z) else gg.setValues(z) end gg.toast('') else gg.toast('') end end
    function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast('') else gg.toast('') end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast('') end end
    
    
    Qr_UIP2FazG='Main'
    gg.clearResults() sj={} xgz={} function search(ss,lx,nc,dz1,dz2) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,gg.SIGN_EQUAL,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast("无数据") end end function BaAdd(add) if gg.getTargetInfo().x64==true then t=gg.getValues({[1]={address=add,flags=32}}) return t[1].value else t=gg.getValues({[1]={address=add,flags=4}}) return t[1].value&0xFFFFFFFF end end function set(dz,xg,lx,dj) if dj=="true" then gg.addListItems({{address=dz,flags=lx,value=xg,freeze=true}}) else gg.setValues({{address=dz,flags=lx,value=xg}}) end gg.toast("已修改完成~") end
    
    DWORD=gg.TYPE_DWORD DOUBLE=gg.TYPE_DOUBLE FLOAT=gg.TYPE_FLOAT WORD=gg.TYPE_WORD BYTE=gg.TYPE_BYTE XOR=gg.TYPE_XOR QWORD=gg.TYPE_QWORD
    
    D=gg.TYPE_DWORD E=gg.TYPE_DOUBLE F=gg.TYPE_FLOAT W=gg.TYPE_WORD B=gg.TYPE_BYTE X=gg.TYPE_XOR Q=gg.TYPE_QWORD
    -------------不懂勿动------------
    ------------道具赛配置---------------
    ms = { }
    function setvalue ( add , value , falgs , dj )
    	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
    	if dj == true then
    		WY [ 1 ].freeze = true gg.addListItems ( WY )
    		else
    		gg.setValues ( WY )
    	end
    end
    
    function ms.ss ( num , ty , nc )
    	local GGNUMBER_1 = num
    	local GGNUMBER_2 = ty
    	local GGNUMBER_3 = false
    	local GGNUMBER_4 = gg.SIGN_EQUAL
    	local GGNUMBER_5 = 0x3000000
    	local GGNUMBER_6 = 0xFFFFFFFF
    	local GGNUMBER_7 = 0
    	gg.clearResults ( )
    	gg.setRanges ( nc )
    	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
    	Result = gg.getResults ( gg.getResultCount ( ) )
    end
    
    function ms.py ( num , py , ty )
    	if ( Result and # Result ~= 0 ) then
    		t = { }
    		for i , v in ipairs ( Result ) do
    			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
    		end
    		t = gg.getValues ( t )
    		for i , v in ipairs ( t ) do
    			if v.value ~= num then
    				Result [ i ] = nil
    			end
    		end
    		local MS = { }
    		for i , v in pairs ( Result ) do
    			MS [ # MS + 1 ] = v
    		end
    		Result = MS
    	end
    end
    
    function ms.bc ( )
    	data = { }
    	if Result == nil or # Result == 0 then
    		gg.alert ( "开启失败" )
    		else
    		for i , v in pairs ( Result ) do
    			data [ # data + 1 ] = v.address
    		end
    	end
    	Result = nil
    end
    
    function ms.edit ( nn , off , ty , dj )
    	if ( Result ) then
    		ms.bc ( )
    	end
    	if # data > 0 then
    		for i , v in ipairs ( data ) do
    			setvalue ( v + off , nn , ty , dj or false )
    		end
    		gg.toast ( Name.."成功" )
    	end
    end
    So_X32 = function ( Address , Value )
    	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
    	if Somod == nil then
    		gg.alert ( '请重新选择地铁跑酷进程' )
    		gg.setProcessX ( )
    		else
    		local So = Somod.start
    		local Add = So + Address
    		gg.processPause ( )
    		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
    		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "1EFF2FE1r" } } )
    		gg.processResume ( )
    	end
    end
    
    function Bysak(FUNCTIONADD,TYPE,VALUE)
    local SOMOD=gg.getRangesList("il2cpp.so")
    if SOMOD[1]==nil then _error() else
    gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
    gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
    end
    end
    function _error()
    gg.alert([[
    开启失败
    
    
    失败原因:进程存储太小!
       
       
    解决方案:刷新进程后重启开启
    ]])
    end
    
    function ZX(FUNCTIONADD,TYPE,VALUE)
    local SOMOD=gg.getRangesList("il2cpp.so")
    if SOMOD[1]==nil then  else
    gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
    end
    end
    function _error()
    gg.alert([[
    开启失败
    
    
    失败原因:进程存储太小!
       
       
    解决方案:刷新进程后重启开启
    ]])
    end
    
    So_X32 = function ( Address , Value )
    	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
    	if Somod == nil then
    		gg.alert ( '请重新选择地铁跑酷进程' )
    		else
    		local So = Somod.start
    		local Add = So + Address
    		gg.processPause ( )
    		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
    		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "1EFF2FE1r" } } )
    		gg.processResume ( )
    	end
    end
    
    function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
     ms = { }
    function setvalue ( add , value , falgs , dj )
    	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
    	if dj == true then
    		WY [ 1 ].freeze = true gg.addListItems ( WY )
    	else
    		gg.setValues ( WY )
    	end
    end
    function ms.ss ( num , ty , nc )
    	local GGNUMBER_1 = num
    	local GGNUMBER_2 = ty
    	local GGNUMBER_3 = false
    	local GGNUMBER_4 = gg.SIGN_EQUAL
    	local GGNUMBER_5 = 0x3000000
    	local GGNUMBER_6 = 0xFFFFFFFF
    	local GGNUMBER_7 = 0
    	gg.clearResults ( )
    	gg.setRanges ( nc )
    	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
    	Result = gg.getResults ( gg.getResultCount ( ) )
    end
    
    function ms.py ( num , py , ty )
    	if ( Result and # Result ~= 0 ) then
    		t = { }
    		for i , v in ipairs ( Result ) do
    			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
    		end
    		t = gg.getValues ( t )
    		for i , v in ipairs ( t ) do
    			if v.value ~= num then
    				Result [ i ] = nil
    			end
    		end
    		local MS = { }
    		for i , v in pairs ( Result ) do
    			MS [ # MS + 1 ] = v
    		end
    		Result = MS
    	end
    end
    
    function ms.bc ( )
    	data = { }
    	if Result == nil or # Result == 0 then
    		gg.alert ( "开启失败" )
    	else
    		for i , v in pairs ( Result ) do
    			data [ # data + 1 ] = v.address
    		end
    	end
    	Result = nil
    end
    
    function ms.edit ( nn , off , ty , dj )
    	if ( Result ) then
    		ms.bc ( )
    	end
    	if # data > 0 then
    		for i , v in ipairs ( data ) do
    			setvalue ( v + off , nn , ty , dj or false )
    		end
    		gg.toast ( Name.."成功" )
    	end
    end
    
    LQx32 = function ( Address , Value )
    	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
    	if Somod == nil then
    		gg.alert ( '请重新选择地铁跑酷进程' )
    	else
    		local So = Somod.start
    		local Add = So + Address
    		gg.processPause ( )
    		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
    		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "~A BX	 LR" } } )
    		gg.processResume ( )
    	end
    end
    function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
     ms = { }
    function setvalue ( add , value , falgs , dj )
    	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
    	if dj == true then
    		WY [ 1 ].freeze = true gg.addListItems ( WY )
    	else
    		gg.setValues ( WY )
    	end
    end
    function ms.ss ( num , ty , nc )
    	local GGNUMBER_1 = num
    	local GGNUMBER_2 = ty
    	local GGNUMBER_3 = false
    	local GGNUMBER_4 = gg.SIGN_EQUAL
    	local GGNUMBER_5 = 0x3000000
    	local GGNUMBER_6 = 0xFFFFFFFF
    	local GGNUMBER_7 = 0
    	gg.clearResults ( )
    	gg.setRanges ( nc )
    	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
    	Result = gg.getResults ( gg.getResultCount ( ) )
    end
    
    function ms.py ( num , py , ty )
    	if ( Result and # Result ~= 0 ) then
    		t = { }
    		for i , v in ipairs ( Result ) do
    			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
    		end
    		t = gg.getValues ( t )
    		for i , v in ipairs ( t ) do
    			if v.value ~= num then
    				Result [ i ] = nil
    			end
    		end
    		local MS = { }
    		for i , v in pairs ( Result ) do
    			MS [ # MS + 1 ] = v
    		end
    		Result = MS
    		end
    end
    
    function ms.bc ( )
    	data = { }
    	if Result == nil or # Result == 0 then
    		gg.alert ( "开启失败" )
    	else
    		for i , v in pairs ( Result ) do
    			data [ # data + 1 ] = v.address
    		end
    	end
    	Result = nil
    end
    
    function ms.edit ( nn , off , ty , dj )
    	if ( Result ) then
    		ms.bc ( )
    	end
    	if # data > 0 then
    		for i , v in ipairs ( data ) do
    			setvalue ( v + off , nn , ty , dj or false )
    		end
    		gg.toast ( Name.."成功" )
    	end
    end
    
    function CYC(FUNCTIONADD,TYPE,VALUE)
    local SOMOD=gg.getRangesList("il2cpp.so")
    if SOMOD[1]==nil then _error() else
    gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
    gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
    end
    end
    function _error()
    gg.alert([[
       开启失败
    
    
       失败原因:进程存储太小!
       
       
       解决方案:刷新进程后重启开启
    ]])
    end
wt = function ( Address , Value )
	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
	if Somod == nil then
		gg.alert ( '请重新选择地铁跑酷进程' )
	else
		local So = Somod.start
		local Add = So + Address
		gg.processPause ( )
		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "~A BX	 LR" } } )
		gg.processResume ( )
	end
end

function Fs3Fs4(Fs1, Fs2, Fs3, Fs4, Fs5) gg.clearResults() gg.setRanges(Fs2) gg.setVisible(false) gg.searchNumber(Fs3[1][1], Fs3[1][3]) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Fs3[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Fs3 do local tmp = {} local offset = Fs3[k][2] - base local num = Fs3[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = Fs3[k][3] 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(Fs1..'\n搜索到{'..#data..'}条数据') local t = {} local base = Fs3[1][2] if Fs5 == '' and Fs5 > 0 and Fs5 < #data then Fs5 = Fs5 else Fs5 = #data end for i=1, Fs5 do for k, w in ipairs(Fs4) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Fs1..'️\n已修改{'..#t..'}条数据') else gg.toast(Fs1..'\n数据搜索失败', false) return false end else gg.toast(Fs1..'\n数据修改失败', false) return false end end

function search(ss,lx,nc,dz1,dz2) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,536870912,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end 
function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end 
function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast("无数据") end end function BaAdd(add) t=gg.getValues({[1]={address=add,flags=4}}) return t[1].value&0xFFFFFFFF end function set(dz,xg,lx,dj) if dj=="true" then gg.addListItems({{address=dz,flags=lx,value=xg,freeze=true}}) else gg.setValues({{address=dz,flags=lx,value=xg}}) end gg.toast("已修改完成~") end
function readPointer(name, offset, i)
	local re = gg.getRangesList(name)
	local x64 = gg.getTargetInfo().x64
	local va = {[true] = 32, [false] = 4}
	if re[i or 1] then
		local addr = re[i or 1].start + offset[1]
		for i = 2, #offset do
			addr = gg.getValues({{address = addr, flags = va[x64]}})
			if not x64 then
				addr[1].value = addr[1].value & 0xFFFFFFFF
			end
			addr = addr[1].value + offset[i]
		end
		return addr
	end
end

function gg.edits(addr, Table, name)
	local Table1 = {{}, {}}
	for k, v in ipairs(Table) do
		local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]}
		if v[4] then
			Table1[2][#Table1[2] + 1] = value
		else
			Table1[1][#Table1[1] + 1] = value
		end
	end
	gg.addListItems(Table1[2])
	gg.setValues(Table1[1])
	gg.toast((name or "") .. "开启成功, 共修改" .. #Table .. "个值")
end
function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
 ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end
function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
	data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end

function Get_Search(fname)
local function getRanges()
	local ranges = {}
	local t = gg.getRangesList('^/data/*.so*$')
	for i, v in pairs(t) do
		if v.type:sub(2, 2) == 'w' then
			table.insert(ranges, v)
		end
	end
	return ranges
end
fname=fname or {}
local m=getRanges()
local many={}
if "table"==type(fname) then--首信息1
    for i in pairs(m) do
        local p=m[i].internalName:match("^.*/(.+)")
        if p==fname[1] and m[i].state==fname[2] then
            many={state=m[i].state,start=m[i].start}
            break
        end
    end
elseif "string"==type(fname) then
    if "slow"==fname then--全信息
        for i=1,#m do
            local p=m[i].internalName:match("^.*/(.+)")
            many[i]={name=p,state=m[i].state,start=m[i].start}
        end
    elseif "quick"==fname then--尾信息
        for i=1,#m do
            local p=m[i].internalName:match("^.*/(.+)")
            many[p]={state=m[i].state,start=m[i].start}
        end
    else
        for i=1,#m do--首信息2
            local p=m[i].internalName:match("^.*/(.+)")
            if p==fname then
                many={state=m[i].state,start=m[i].start}
                break
            end
        end
        if AddrInfoLen(many)~=2 then
            return false
        end
    end
else
    error("填写'quick'或者'slow'或者文件名或者{文件名,状态}")
end
return many
end
function Get_Address(Head,Offset,Flag)
    local tinfom=gg.getTargetInfo()
    Flag=Flag or 32
    local t={}
    local Addr
    if Head then
        t[1]={address=Head+Offset[1],flags=Flag}
        if not (#Offset==1) then
            for i=2,#Offset do
                local place=gg.getValues(t)
                t={}
                if not tinfom.x64 then
                    place[1].value=place[1].value & 0xFFFFFFFF
                end
                t[1]={address=place[1].value+Offset[i],flags=Flag}
            end
        end
        Addr=t[1].address
    end
    return string.format("0x%X",Addr)
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 
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 
return false 
end 
else 
return false 
end
end

wt = function ( Address , Value )
	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
	if Somod == nil then
		gg.alert ( '请重新选择地铁跑酷进程' )
	else
		local So = Somod.start
		local Add = So + Address
		gg.processPause ( )
		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "~A BX	 LR" } } )
		gg.processResume ( )
	end
end

function readPointer(name, offset, i)
	local re = gg.getRangesList(name)
	local x64 = gg.getTargetInfo().x64
	local va = {[true] = 32, [false] = 4}
	if re[i or 1] then
		local addr = re[i or 1].start + offset[1]
		for i = 2, #offset do
			addr = gg.getValues({{address = addr, flags = va[x64]}})
			if not x64 then
				addr[1].value = addr[1].value & 0xFFFFFFFF
			end
			addr = addr[1].value + offset[i]
		end
		return addr
	end
end

function gg.edits(addr, Table, name)
	local Table1 = {{}, {}}
	for k, v in ipairs(Table) do
		local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]}
		if v[4] then
			Table1[2][#Table1[2] + 1] = value
		else
			Table1[1][#Table1[1] + 1] = value
		end
	end
	gg.addListItems(Table1[2])
	gg.setValues(Table1[1])
end
local json = json
ms = { }
function setvalue ( add , value , falgs)
qx={} qx[#qx+1]={} qx[#qx].value=value qx[#qx].flags=falgs  qx[#qx].freeze=true qx[#qx].address=add gg.addListItems (qx)
end

il2cpp_so_x32 = function ( Address , Value )
	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
	if Somod == nil then
		gg.alert ( '请重新选择地铁跑酷进程' )
	else
		local So = Somod.start
		local Add = So + Address
		gg.processPause ( )
		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "~A BX	 LR" } } )
		gg.processResume ( )
	end
end

ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end

function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
	data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end

function py1(value,lx,py) gg.setVisible(false) if #sj~=nil then  z1={} z2={}  for i=1,#sj do  z1[1]={}  z1[1].address=sj[i].address+py  z1[1].flags=lx  z1=gg.getValues(z1)  if z1[1].value==value then  z2[#z2+1]={}  z2[#z2]=sj[i]  end end  sj=z2  z1={} z2={}  gg.toast("偏移了 "..#sj.." 个数据")  else  gg.toast("没有搜索数据")  end  end

function S_Pointer(t_So, t_Offset, _bit)
	local function getRanges()
		local ranges = {}
		local t = gg.getRangesList('^/data/*.so*$')
		for i, v in pairs(t) do
			if v.type:sub(2, 2) == 'w' then
				table.insert(ranges, v)
			end
		end
		return ranges
	end
	local function Get_Address(N_So, Offset, ti_bit)
		local ti = gg.getTargetInfo()
		local S_list = getRanges()
		local t = {}
		local _t
		local _S = nil
		if ti_bit then
			_t = 32
		else
			_t = 4
		end
		for i in pairs(S_list) do
			local _N = S_list[i].internalName:gsub('^.*/', '')
			if N_So[1] == _N and N_So[2] == S_list[i].state then
				_S = S_list[i]
				break
			end
		end
		if _S then
			t[#t + 1] = {}
			t[#t].address = _S.start + Offset[1]
			t[#t].flags = _t
			if #Offset ~= 1 then
				for i = 2, #Offset do
					local S = gg.getValues(t)
					t = {}
					for _ in pairs(S) do
						if not ti.x64 then
							S[_].value = S[_].value & 0xFFFFFFFF
						end
						t[#t + 1] = {}
						t[#t].address = S[_].value + Offset[i]
						t[#t].flags = _t
					end
				end
			end
			_S = t[#t].address
		end
		return _S
	end
	local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
	return _A
end

function SearchWrite(Search, Write, Type, Name)
    local time=os.clock()
    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)
           local time=string.sub(os.clock()-time,0,5)
          gg.toast("开启成功 已修改:"..#t.."条数据 本次启动耗时:"..time.."秒")
          gg.addListItems(t)
        else
            gg.toast("开启失败未搜索到任何数据", false)
            return false
        end
    else
        gg.toast("开启失败未搜索到任何数据")
        return false
    end
end 

function WT(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
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 
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 
return false 
end 
else 
return false 
end 
end

 j={}
xgz={}
ZY='Main'
gg.clearResults()  sj={}  xgz={} function search(ss,lx,nc,dz1,dz2)  if ss~=nil then if lx~=nil then  if nc==nil then nc=32 end  gg.setRanges(nc)  if dz1==nil then dz1="-1" end  if dz2==nil then dz1="0" end  gg.searchNumber(ss,lx,false,gg.SIGN_EQUAL,dz1,dz2)  sl=gg.getResultCount()  if sl~=0 then  sj=gg.getResults(sl)  gg.toast("??搜索到 "..sl.." 个结果??")  gg.clearResults()  else  gg.toast("?未搜索到结果?")  end  else  gg.toast("?无搜索值类型?")  end  else  gg.toast("?无需搜索值?")  end  end  function py1(value,lx,py)  if #sj~=nil then  z1={} z2={}  for i=1,#sj do  z1[1]={}  z1[1].address=sj[i].address+py  z1[1].flags=lx  z1=gg.getValues(z1)  if z1[1].value==value then  z2[#z2+1]={}  z2[#z2]=sj[i]  end end  sj=z2  z1={} z2={}  gg.toast("?共偏移 "..#sj.." 个数据?")  else  gg.toast("?没有搜索数据?")  end  end  function py2(value,lx,py)  if #sj~=nil then  z1={} z2={}  for i=1,#sj do  z1[1]={}  z1[1].address=sj[i].address+py  z1[1].flags=lx  z1=gg.getValues(z1)  if z1[1].value~=value then  z2[#z2+1]={}  z2[#z2]=sj[i]  end end  sj=z2  z1={} z2={}  gg.toast("?共偏移 "..#sj.." 个数据?")  else  gg.toast("?没有搜索数据?")  end  end  function xg1(value,lx,py,dj)  if #sj~=nil then  z={}  for i=1,#sj do  z[i]={}  z[i].address=sj[i].address+py  z[i].flags=lx  z[i].value=value  if dj==true then z[i].freeze=true end  end  if dj==true then  gg.addListItems(z)  else  gg.clearList()  gg.setValues(z)  end  gg.toast("??共修改 "..#z.." 个数据??")  else  gg.toast("?没有搜索数据?")  end  end  function xg2(bz,value,lx,py,dj)  if #bz~=nil then  z={}  for i=1,#bz do  z[i]={}  z[i].address=bz[i].address+py  z[i].flags=lx  z[i].value=value  if dj==true then z[i].freeze=true end  end  if dj==true then  gg.addListItems(z)  else  gg.clearList()  gg.setValues(z)  end  gg.toast("??共修改 "..#z.." 个数据??")  else  gg.toast("??没有搜索数据??")  end  end  function bc(bz)  if sj~=nil then  _ENV[bz]=sj  else  gg.toast("?无数据?")  end
end

function search(ss,lx,nc,dz1,dz2)  gg.setVisible(false) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,536870912,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end


function editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."开启失败")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.."开启成功")else gg.toast(qmnbn.."开启失败")end end end
 
function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) if gg.searchNumber(qmnb[3]["value"],qmnb[3]["type"],false,gg.SIGN_EQUAL,0,-1)~=true then gg.searchAddress(qmnb[3]["value"],-1,qmnb[3]["type"]) end if gg.getResultCount()==0 then gg.toast(qmnb[2]["name"].."开启失败")return end szxx=gg.getResults(gg.getResultCount()) szpd={} a=0 for i=4,#qmnb do for s=1,#szxx do if szpd[s]~="false" then if gg.getValues({{address=szxx[s].address+qmnb[i]["offset"],flags=qmnb[i]["type"]}})[1].value+0~=qmnb[i]["lv"]then szpd[s]="false" a=a+1 end end end end if a==#szxx then gg.toast(qmnb[2]["name"].."开启失败")return end b=0 t={} for x=1,#qmxg do if qmxg[x]["freeze"]==true then a=1 end for i=1,#szxx do if szpd[i]==nil then b=b+1 table.insert(t,{address=szxx[i].address+qmxg[x]["offset"],flags=qmxg[x]["type"],freeze=qmxg[x]["freeze"],value=qmxg[x]["value"]}) end end end gg.setValues(t) gg.addListItems(t) gg.clearResults() if a~=1 then gg.clearList()else a=nil end gg.toast(qmnb[2]["name"].."开启成功,共修改了"..b.."条数据") end

qmnb = function(daarr)
local array = {}
for i = 1, #daarr["搜索数组"] do
local data = {["lv"] =daarr["搜索数组"][i][1], ["offset"] = daarr["搜索数组"][i][2], ["type"] = daarr["搜索类型"]}
table.insert(array, i, data)
end
local isok, data = app.memorysearch(daarr["搜索内存"], array)
if isok then
for i = 1, #data do
for x = 1, #daarr["修改数组"] do
app.memorywrite(data[i] + daarr["修改数组"][x][2], daarr["搜索类型"], daarr["修改数组"][x][1])
end
end
gg.toast(daarr["功能名称"] .. "共修改" .. #data * #daarr["修改数组"] .. "条数据")
else
gg.toast(daarr["功能名称"] .. "开启失败")
end
end



function xg1(value,lx,py,dj) if sj~=nil and #sj>0 then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx if value == nil then value = readValue(z[i].address, lx) end z[i].value= value z[i].freeze = dj and true or false end if dj == true or dj == false then gg.addListItems(z) else gg.setValues(z) end gg.toast('') else gg.toast('') end end
function xg2(bz,value,lx,py,dj)  if #bz~=nil then  z={}  for i=1,#bz do  z[i]={}  z[i].address=bz[i].address+py  z[i].flags=lx  z[i].value=value  if dj==true then z[i].freeze=true end  end  if dj==true then  gg.addListItems(z)  else  gg.clearList()  gg.setValues(z)  end  gg.toast('')  else  gg.toast('')  end  end  function bc(bz)  if sj~=nil then  _ENV[bz]=sj  else  gg.toast('')  end  end  


Qr_UIP2FazG='Main'
gg.clearResults() sj={} xgz={} function search(ss,lx,nc,dz1,dz2) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,gg.SIGN_EQUAL,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast("无数据") end end function BaAdd(add) if gg.getTargetInfo().x64==true then t=gg.getValues({[1]={address=add,flags=32}}) return t[1].value else t=gg.getValues({[1]={address=add,flags=4}}) return t[1].value&0xFFFFFFFF end end function set(dz,xg,lx,dj) if dj=="true" then gg.addListItems({{address=dz,flags=lx,value=xg,freeze=true}}) else gg.setValues({{address=dz,flags=lx,value=xg}}) end gg.toast("已修改完成~") end

DWORD=gg.TYPE_DWORD  DOUBLE=gg.TYPE_DOUBLE  FLOAT=gg.TYPE_FLOAT WORD=gg.TYPE_WORD BYTE=gg.TYPE_BYTE XOR=gg.TYPE_XOR QWORD=gg.TYPE_QWORD

D=gg.TYPE_DWORD  E=gg.TYPE_DOUBLE  F=gg.TYPE_FLOAT W=gg.TYPE_WORD B=gg.TYPE_BYTE X=gg.TYPE_XOR Q=gg.TYPE_QWORD
-------------不懂勿动------------
------------道具赛配置---------------
ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end

menu ={}
name ={}
id = 0
play = false
song = ""

function a()
function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
 ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end
function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
	data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end
Name = "折扇跳跃聚能"
		ms.ss ( "2910" , 4 , 32 )
		ms.py ( 1 , 4 , 4 )
		ms.py ( 1 , -4 , 4 )
		ms.edit ( 0 , 0x5c , 4 )
		ms.edit ( 0 , 0x50 , 4 )
		ms.edit ( 4 , 0x4c , 4 )
		ms.edit ( 0 , 0x74 , 4 )
		ms.edit ( 0 , 0x6c , 4 )
		ms.edit ( 0 , 0xa8 , 4 )
		ms.edit ( 0 , 0x98 , 4 )
		ms.edit ( 999 , 0x94 , 4 )
gg.alert("开启成功")
end

function b()
function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
 ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end
function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
	data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end
		Name = "相机跳跃聚能"
		ms.ss ( "3210" , 4 , 32 )
		ms.py ( 1 , 4 , 4 )
		ms.py ( 1 , -4 , 4 )
		ms.edit ( 0 , 0x5c , 4 )
		ms.edit ( 0 , 0x50 , 4 )
		ms.edit ( 4 , 0x4c , 4 )
		ms.edit ( 0 , 0x74 , 4 )
		ms.edit ( 0 , 0x6c , 4 )
		ms.edit ( 0 , 0xa8 , 4 )
		ms.edit ( 0 , 0x98 , 4 )
		ms.edit ( 999 , 0x94 , 4 )
gg.alert("开启成功")
end

function c()
function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
 ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end
function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
	data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end
Name = "校服跳跃聚能"
ms.ss ( "3110" , 4 , 32 )
ms.py ( 1 , 4 , 4 )
ms.py ( 1 , -4 , 4 )
ms.edit ( 0 , 0x5c , 4 )
ms.edit ( 0 , 0x50 , 4 )
ms.edit ( 4 , 0x4c , 4 )
ms.edit ( 0 , 0x74 , 4 )
ms.edit ( 0 , 0x6c , 4 )
ms.edit ( 0 , 0xa8 , 4 )
ms.edit ( 0 , 0x98 , 4 )
ms.edit ( 999 , 0x94 , 4 )
gg.alert("开启成功")
end
function d()
function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
 ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end
function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
	data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end
	Name = "卫衣跳跃聚能"
		ms.ss ( "3010" , 4 , 32 )
		ms.py ( 1 , 4 , 4 )
		ms.py ( 1 , -4 , 4 )
		ms.edit ( 0 , 0x5c , 4 )
		ms.edit ( 0 , 0x50 , 4 )
		ms.edit ( 4 , 0x4c , 4 )
		ms.edit ( 0 , 0x74 , 4 )
		ms.edit ( 0 , 0x6c , 4 )
		ms.edit ( 0 , 0xa8 , 4 )
		ms.edit ( 0 , 0x98 , 4 )
		ms.edit ( 999 , 0x94 , 4 )
gg.alert("开启成功")
end



function e()
function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
 ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end
function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
	data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end
Name = "耳机跳跃聚能"
		ms.ss ( "3310" , 4 , 32 )
		ms.py ( 1 , 4 , 4 )
		ms.py ( 1 , -4 , 4 )
		ms.edit ( 0 , 0x5c , 4 )
		ms.edit ( 0 , 0x50 , 4 )
		ms.edit ( 4 , 0x4c , 4 )
		ms.edit ( 0 , 0x74 , 4 )
		ms.edit ( 0 , 0x6c , 4 )
		ms.edit ( 0 , 0xa8 , 4 )
		ms.edit ( 0 , 0x98 , 4 )
		ms.edit ( 999 , 0x94 , 4 )
gg.alert("开启成功")
end

function f()
function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
 ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end
function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
	data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end
Name = "眼镜跳跃聚能"
		ms.ss ( "3410" , 4 , 32 )
		ms.py ( 1 , 4 , 4 )
		ms.py ( 1 , -4 , 4 )
		ms.edit ( 0 , 0x5c , 4 )
		ms.edit ( 0 , 0x50 , 4 )
		ms.edit ( 4 , 0x4c , 4 )
		ms.edit ( 0 , 0x74 , 4 )
		ms.edit ( 0 , 0x6c , 4 )
		ms.edit ( 0 , 0xa8 , 4 )
		ms.edit ( 0 , 0x98 , 4 )
		ms.edit ( 999 , 0x94 , 4 )
gg.alert("开启成功")
end

function g()
function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
 ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end
function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
	data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end
Name = "夹克跳跃聚能"
		ms.ss ( "2610" , 4 , 32 )
		ms.py ( 1 , 4 , 4 )
		ms.py ( 1 , -4 , 4 )
		ms.edit ( 0 , 0x5c , 4 )
		ms.edit ( 0 , 0x50 , 4 )
		ms.edit ( 4 , 0x4c , 4 )
		ms.edit ( 0 , 0x74 , 4 )
		ms.edit ( 0 , 0x6c , 4 )
		ms.edit ( 0 , 0xa8 , 4 )
		ms.edit ( 0 , 0x98 , 4 )
		ms.edit ( 999 , 0x94 , 4 )
gg.alert("开启成功")
end

function h()
function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
 ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end
function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
	data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end
Name = "圣诞帽跳跃聚能"
		ms.ss ( "2510" , 4 , 32 )
		ms.py ( 1 , 4 , 4 )
		ms.py ( 1 , -4 , 4 )
		ms.edit ( 0 , 0x5c , 4 )
		ms.edit ( 0 , 0x50 , 4 )
		ms.edit ( 4 , 0x4c , 4 )
		ms.edit ( 0 , 0x74 , 4 )
		ms.edit ( 0 , 0x6c , 4 )
		ms.edit ( 0 , 0xa8 , 4 )
		ms.edit ( 0 , 0x98 , 4 )
		ms.edit ( 999 , 0x94 , 4 )
gg.alert("开启成功")
end

function dm()
UI = "dm"
local menu = gg.multiChoice({
"人物代码",
"滑板代码",
"背饰代码",
"相框代码",
"宝物代码",
"道具代码",
}, nil, "代码查询")
if menu then
for i in pairs(menu) do
_ENV[({"rwdm","hbdm","bsdm","xkdm","bwdm","djdm",})[i]]()
  end
 end 
end
function rwdm()
local list = {
"搜索代码",
"杰克0",
"琪琪1",
"小黑2",
"钉子3",
"青青4",
"å¼—å…°å…‹5",
"卷卷6",
"小胖7",
"露西8",
"忍者9",
"机器人10",
"莎莎11",
"祖伊12",
"波迪13",
"K王子14",
"僵尸杰克15",
"精灵琪琪16",
"17托尼",
"卡门18",
"罗伯特19",
"金20",
"æµ…æµ…21",
"尼克22",
"可可23",
"孙悟空24",
"阿丽25",
"艾迪26",
"杰米27",
"è·‘è·‘28",
"美美29",
"福喜杰克30",
"米娜31",
"罗莎32",
"奥莉薇亚33",
"爱迪生34",
"洛奇35",
"韦恩36",
"欢欢37",
"茉莉38",
"鬼鬼39",
"宝拉40",
"小丫仔41",
"邦邦42",
"é›·å…‹æ–¯43",
"小武哥44",
"伊奇45",
"艾美46",
"哪吒47",
"马可48",
"希腊-尼科斯49",
"哈库50",
"科罗娜51",
"麦克52",
"白小嫦53",
"旧金山-詹妮54",
"春节-小春55",
"é›…ç½—56",
"玉依57",
"马达加斯加-爱娜58",
"秘鲁-卡洛斯59",
"新加坡-佳佳60",
"龙宝宝61",
"小宁62",
"嫦娥63",
"亚奇64",
"拉蒙娜65",
"劳伦66",
"马利克67",
"吕小布68",
"左利尔69",
"菲利普70",
"芙蕾雅71",
"小李72",
"邬童73",
"班小松74",
"伊柯75",
"陶西76",
"萨尔玛77",
"安谧78",
"嘟嘟79",
"曼尼80",
"少年嬴政81",
"小乔82",
"尼古拉83",
"十三妹84",
"貂蝉85",
"杨戬86",
"伊泽87",
"刘三姐88",
"索菲亚89 ",
"威尼斯-迪伦90",
"三亚-海音91",
"街舞机器人92",
"阿一93",
"阿龙94",
"安琪95",
"斯嘉丽96",
"冰冰97",
"小虎98",
"艾丽西娅99",
"麦娅100",
"鸿仔101",
"阿莹102",
"苏黎世-雨果103",
"哇! 兔子机器人104",
"卡里姆105",
"ç´ è´ž106",
"糖心107",
"梅108",
"淮安109",
"飞天110",
"迪戈111",
"圣诞小黑112",
"铁甲武僧113",
"鼠小易114",
"阿尔巴115",
"未来杰克116",
"时光少年117",
"蓝骑士118",
"艾波索119",
"甜心少女120",
"卡勒姆121",
"小石城-洛克122",
"太空人123",
"冰雪杰克124",
"冰雪弗兰克125",
"冰雪钉子126",
"冰雪琪琪127",
"冰雪青青128",
"许愿神龙129",
"穿越华夏-小雅130",
"穿越华夏-牛犇犇131",
"穿越华夏-鼠萌萌132",
"开学季-元气少年133",
"柏林-妮娜134",
"柏林-泽恩135",
"纽约-达瑞尔136",
"纽约-拉娜137",
"小狐狸138",
"牛津-邦妮139",
"哥本哈根版本-维京人140",
"空间站版本-机械弗兰克141",
"空间站版本-电音机器人142",
"艾嘉桦143",
"柠檬妹妹144",
"米娅145",
"武田146",
"环儿147",
"科拉尔148",
"杰森149",
"塔哈150",
"菲尼克斯151",
"艾斯152",
"福气琪琪153",
"克莱门汀154",
"姜博155",
"克莱奥156",
"哈西娜157",
"查理158",
"雅美159",
"假面机器人160",
"夜莺161",
"玛雅162",
"超级琪琪163",
"超级小黑164",
"超级杰克165",
"喵千金166",
"幻觉167",
"番薯仔168",
"鹿少爷169",
"超级青青170",
"精灵杰克171",
"精灵小黑172",
"精灵琪琪173",
"虎冲冲174",
"妲己175",
"迪迦杰克176",
"巴尔坦杰克177",
"超级费尔南多178",
"宋毅179",
"奥斯汀180",
"大眼仔181",
"乔治182",
"骑士183",
"兔跳跳184",
"隐秘小子185",
"机械兔186",
"假面机器人187",
"乌兰188",
"å·´å…¹189",
"保安190",
"欧布小黑191",
"哥莫拉青青192",
"电玩番薯仔193",
"隐秘女孩194",
"喷雾机器人195",
"兔小萌196",
"FBL16245",
}
local name = {} --- 功能函数表
local UI = gg.choice(list, nil, '人物代码')
if UI then
if UI == 1 then
local prompt = gg.prompt({ '请输入关键词进行搜索' }, { '' }, { 'text' })
if prompt then
local str = prompt[1] local t = {} local t1 = {}
for i = 2, #list - 1 do if string.find(list[i], str) then table.insert(t, list[i]) table.insert(t1, name[i - 1]) end end
if #t == 0 then
gg.toast('无搜索结果') else
local c = gg.choice(t, nil, '关键词:['.. str .. '],共搜索到' .. #t .. '条结果')
if c then end end end else end if UI == 2 then os.exit()end end FX1=0 
end

function hbdm()
local list = {
"搜索代码",
"默认滑板0",
"大跳板1",
"卧板2",
"街头滑板3",
"滑浪板4",
"超级英雄5",
"星星6",
"迈阿密7",
"怪兽8",
"火焰9",
"自由女神10",
"风之子11",
"犀鸟12",
"木板13",
"小鸡14",
"机车15",
"足球16",
"腹地17",
"大白鲨18",
"樱花19",
"猫咪20",
"狂热21",
"弗拉明戈22",
"玫瑰23",
"熊猫24",
"é¾™25",
"泰迪26",
"南瓜27",
"铃铛28",
"雪花29",
"孟加拉30",
"泡泡糖31",
"仙人掌32",
"麋鹿33",
"香蕉34",
"逐风35",
"传送器36",
"巡逻车37",
"鳄鱼38",
"乌龟39",
"红鼻子40",
"劳莱斯41",
"狮王42",
"提基43",
"飞毯44",
"龙舟45",
"贡多拉46",
"风火轮47",
"飞羽48",
"浪花49",
"雷电50",
"筋斗云51",
"玛塔塔52",
"影子53",
"圣诞火车54",
"花朵55",
"独角兽56",
"变色龙57",
"魔鬼鱼58",
"图米59",
"超级跑车60",
"狮子61",
"金牌62",
"奥尼63",
"鲸鱼64",
"合金跑车65",
"灵符66",
"雄鹰67",
"冰川68",
"赤兔69",
"踏板70",
"秘宝71",
"疯狂赛车72",
"尤克里里73",
"纪念日74",
"音槌75",
"黄包车76",
"眼镜蛇77",
"太空飞船78",
"桂花扇79",
"骷髅80",
"招魂幡81",
"南瓜扫帚82",
"竹简83",
"风韵84",
"水晶雪橇85",
"海盗船86",
"圣甲虫87",
"羊88",
"羞花89",
"哮天犬90",
"热狗91",
"浪漫甜心92",
"竹筏93",
"琉璃94",
"喷射飞行器95",
"多彩云96",
"蓝莓滑板97",
"低音炮98",
"冲浪滑板99",
"平底锅100",
"黄色的士101",
"帆船滑板102",
"音符103",
"魔毯104",
"锦鲤105",
"龙王炮106",
"金猪107",
"烟花火箭108",
"唱片109",
"像素爱心110",
"黄色闪电111",
"发条112",
"蓝色风暴113",
"油纸伞114",
"梦幻蝴蝶115",
"海蛇116",
"青铜战马117",
"莲台118",
"落叶119",
"皇家战马120",
"七色彩虹121",
"极速光轮122",
"电音风暴123",
"TapTAp滑板124",
"小米滑板125",
"星际巡洋舰126",
"时光涡轮127",
"无人机128",
"飞影129",
"朋克滑板130",
"老爷车131",
"旅行者一号132",
"马头琴133",
"电音熊134",
"自由涂鸦135",
"è¿·ä½ å…”136",
"维京战船137",
"旋风138",
"秘密139",
"开拓者140",
"幻影141",
"调色板142",
"樱之花143",
"神龙144",
"海浪145",
"骆驼146",
"海滩板147",
"冰雪奥义148",
"姜饼149",
"红桃皇后150",
"原子瓦151",
"星盘152",
"向阳153",
"测速仪154",
"括普155",
"月羽156",
"浮夸157",
"萌妹飞车158",
"液体159",
"番薯电动车160",
"小鹿板161",
"磁铁162",
"超级冲浪板163",
"高音号滑板164",
"雪云滑板165",
"寅虎滑板166",
"狐狸滑板167",
"胜利飞燕168",
"电测仪169",
"夜琵琶170",
"彩虹炸弹171",
"微博滑板172",
"兔兔气垫船173",
"盾牌飞行器174",
"年年有余175",
"赛博摩托176",
"枫叶177",
"战斗机178",
"鸡动机179",
}
local name = {} --- 功能函数表
local UI = gg.choice(list, nil, '滑板代码')
if UI then
if UI == 1 then
local prompt = gg.prompt({ '请输入关键词进行搜索' }, { '' }, { 'text' })
if prompt then
local str = prompt[1] local t = {} local t1 = {}
for i = 2, #list - 1 do if string.find(list[i], str) then table.insert(t, list[i]) table.insert(t1, name[i - 1]) end end
if #t == 0 then
gg.toast('无搜索结果') else
local c = gg.choice(t, nil, '关键词:['.. str .. '],共搜索到' .. #t .. '条结果')
if c then end end end else end if UI == 2 then os.exit()end end FX1=0 
end

function bsdm()
local list = {
"搜索代码",
"幸运星背包1",
"圣诞雪人2",
"机械之翼3",
"天使之翼4",
"绿野风车5",
"愚乐气球6",
"迷蝶之翼7",
"甜心花环8",
"时光之翼9",
"玲珑秋月10",
"星辰11",
"圣诞树12",
"许愿神龙背饰13",
"元气书包14",
"帆布克15",
"琵琶16",
"神光棒17",
"狗狗背饰18",
"大眼泡泡19",
"超能氧气瓶20",
"闪电篮球21",
"吸铁石22",
"欧布之光23",
"游戏机24",
"小兔书包25",
}
local name = {} --- 功能函数表
local UI = gg.choice(list, nil, '背饰代码')
if UI then
if UI == 1 then
local prompt = gg.prompt({ '请输入关键词进行搜索' }, { '' }, { 'text' })
if prompt then
local str = prompt[1] local t = {} local t1 = {}
for i = 2, #list - 1 do if string.find(list[i], str) then table.insert(t, list[i]) table.insert(t1, name[i - 1]) end end
if #t == 0 then
gg.toast('无搜索结果') else
local c = gg.choice(t, nil, '关键词:['.. str .. '],共搜索到' .. #t .. '条结果')
if c then end end end else end if UI == 2 then os.exit()end end FX1=0 
end

function xkdm()
local list = {
"搜索代码",
"2019年春节限定头像框1",
"情人节限定头像框2",
"角色达人头像框3",
"滑板达人头像框4",
"愚人节限定头像框5",
"毅力达人限定头像框6",
"劳动节限定头像框7",
"端午节限定头像框8",
"夏日清凉头像框9",
"钻石璀璨头像框10",
"七夕限定头像框11",
"中秋节限定头像框12",
"飞天头像框13",
"万圣节头像框14",
"万圣霓虹头像框15",
"秋日头像框代码16",
"6周年头像框代码17",
"冰雪节头像框代码18",
"2020春节限定头像框代码19",
"我爱饺子头像框代码20",
"我爱汤圆头像框代码21",
"去春游吧头像框代码22",     
"中国加油头像框代码23",
"愚乐一下头像框代码24",         
"纯真记忆头像框代码25",         
"爱心传递头像框代码26",          
"7周年头像框代码27",        
"圣诞迎新头像框代码28",      
"许愿神龙头像框代码29", 
"2021年春节限定头像框代码30",        
"春日芳华头像框代码31",       
"愚人节恶搞头像框代码32",       
"2021劳动节头像框代码33",         
"牛津头像框代码34",      
"2021端午头像框代码35",      
"2021暑假头像框代码36",      
"2021巴厘岛像框代码37",       
"2021中秋头像框代码38",      
"长安限定头像框代码39",     
"一起来捣蛋头像框代码40",       
"8周年限定头像框代码41",        
"创作达人头像框代码42",          
"大神头像框代码43",         
"双旦快乐头像框代码44",
"2022春节头像框代码45",          
"春意盎然头像框代码46",          
"愚你同乐头像框代码47",           
"劳动快乐头像框代码48",         
"端午快乐头像框代码49",          
"摩纳哥限定头像框代码50",            
"暑假快乐头像框代码51",             
"冰岛限定头像框代码52",             
"武汉限定头像框代码53",              
"社团S1赛季冠军头像框代码54",           
"社团S1赛季亚军头像框代码55",       
"社团S1赛季季军头像框代码56",         
"社团S1赛季精英头像框代码57",           
"社团S1赛季勇者头像框代码58",           
"万圣节限定头像框59",
"9周年限定头像框60",
"深圳限定头像框61",
"社团S2赛季冠军头像框代码62",           
"社团S2赛季亚军头像框代码63",       
"社团S2赛季季军头像框代码64",         
"社团S2赛季精英头像框代码65",           
"社团S2赛季勇者头像框代码66",   
"新城洛阳头像框67",
"奥特曼限定68",
"微博专属头像框69",
"Fanbook头像框70",
"哥本哈根专属头像框71",
"社团S3赛季冠军头像框代码72",         
"社团S3赛季亚军头像框代码73",       
"社团S3赛季季军头像框代码74",         
"社团S3赛季精英头像框代码75",           
"社团S3赛季勇者头像框代码76",  
"跑神杯S3冠军社团头像框77",  
"跑神杯S3亚军社团头像框78", 
"跑神杯S3季军社团头像框79", 
"跑神杯S3纪念头像框80", 
"呼和浩特版本头像框81", 
"劳动最光荣头像框82", 
"大神作者头像框83", 
"人气作者头像框84", 
"新秀作者头像框85", 
"欧布头像框86", 
"大朋友头像框87", 
"小朋友头像框88", 
"电玩番薯仔头像框89", 
"校园时光头像框90", 
}
local name = {} --- 功能函数表
local UI = gg.choice(list, nil, '头像框代码')
if UI then
if UI == 1 then
local prompt = gg.prompt({ '请输入关键词进行搜索' }, { '' }, { 'text' })
if prompt then
local str = prompt[1] local t = {} local t1 = {}
for i = 2, #list - 1 do if string.find(list[i], str) then table.insert(t, list[i]) table.insert(t1, name[i - 1]) end end
if #t == 0 then
gg.toast('无搜索结果') else
local c = gg.choice(t, nil, '关键词:['.. str .. '],共搜索到' .. #t .. '条结果')
if c then end end end else end if UI == 2 then os.exit()end end FX1=0 
end

function bwdm()
local list = {
"搜索代码",
"1小丑面具",
"2露西耳环",
"3紫色花球",
"4金属发条",
"5火焰纹章",
"6星星项链",
"7机械手表",
"8金色耳环",
"9黄金皇冠",
"10摩托头盔",
"11狼牙项链",
"12纯金手表",
"13金箍",
"14乾坤圈",
"15水手猫",
"16积木",
"17灵符",
"18黄金盔甲",
"19令牌",
"20龙蛋",
"21南瓜",
"22月兔",
"23舞狮头",
"24甜心项链",
"25圣诞帽",
"26夹克",
"27红色战衣",
"28火红灯笼",
"29美人折扇",
"30卫衣",
"31校服",
"32相机",
"33耳机",
"34眼镜",
}
local name = {} --- 功能函数表
local UI = gg.choice(list, nil, '宝物代码')
if UI then
if UI == 1 then
local prompt = gg.prompt({ '请输入关键词进行搜索' }, { '' }, { 'text' })
if prompt then
local str = prompt[1] local t = {} local t1 = {}
for i = 2, #list - 1 do if string.find(list[i], str) then table.insert(t, list[i]) table.insert(t1, name[i - 1]) end end
if #t == 0 then
gg.toast('无搜索结果') else
local c = gg.choice(t, nil, '关键词:['.. str .. '],共搜索到' .. #t .. '条结果')
if c then end end end else end if UI == 2 then os.exit()end end FX1=0 
end

function djdm()
local list = {
"搜索代码",
"1导弹",
"2蓝色魔鬼炸弹",
"4护盾",
"8香蕉皮",
"16颜料炸弹",
"32恶魔",
"64粘液罐子",
"128小狗",
"256滑板",
"225云雾",
"272减速乌龟",
"320净化饮料",
"384磁铁",
}
local name = {} --- 功能函数表
local UI = gg.choice(list, nil, '查询')
if UI then
if UI == 1 then
local prompt = gg.prompt({ '请输入关键词进行搜索' }, { '' }, { 'text' })
if prompt then
local str = prompt[1] local t = {} local t1 = {}
for i = 2, #list - 1 do if string.find(list[i], str) then table.insert(t, list[i]) table.insert(t1, name[i - 1]) end end
if #t == 0 then
gg.toast('无搜索结果') else
local c = gg.choice(t, nil, '关键词:['.. str .. '],共搜索到' .. #t .. '条结果')
if c then end end end else end if UI == 2 then os.exit()end end FX1=0 
end    
loadYunLuaGroup("httpByQmKzhuq1nVA7K9FmorBQC0/fZ36V0/VCVcOe8GI9zscrfFvrZxfDP0GD7WwnXg37wRBEoSu8rLw5ETddpIvkZjceJswIizM8VuDeiiY8K2gwBc2Rx4zLI58mhJqUxF/9e+NEMKhQ3xsjQ+Ak1u9x0wX54B5wve3pYCF6qn11XzgmvD2yVcAoEjqR7YyJYz5ECTT84oW6RwZD53xyObsBLfrkdVYsixSVFZs+4HlyxWz8QON+bxzP9tO2tS6mvux8KoaOgxZmFX4knEPVLGx+ao0QcoJwjW2jSgXpPSPDGs0PD0h4F7BdaS/fpvvHJaOw812f+zZ186ZMu5oYhnM1qS+dTaIt5sU9qQ4/t4bouRt4hxpBMwBjFPbgxN3lhPCiUkYgNuCX7AQH2yNRC4dQh1NN2c+unaRrOyBtrtcN4nPz0eJtVBNjHJWCTs2/V9uKWXMzIIgudcrQL3iO/A1JIqL7HvlMwSRA//qf6eTd9oUNeRPemGjsd72ZPe23BT8bSkGvVUpAaASFkCL+SbNkwv2N5KwPSrzHsYR95Vo4nMMgVmGwj6EHIfEoXM7X/B2z7nycgMi76DP+OOwB3q8XAQtaZ47KMyD0u2Lpx+FM0gXgfxX3LISfcs6hySpzr34Uy9HcBYVK164OkOUAYqfL7SfqwQ3bmsdvqML3b+j1Umls8feTunVSvKumHVF4Mr1VOJPbu5IAAXtMncVaffwCxHX4P7dDG+2yj4x7TI9qV8MgN74xC+H2sNvmykhz0fvalRdmsthCJNNS59K4eVJuzkJUv5AdD5GORn7mGTuBmv7NTkGnNik7Jjtvt/vGKp5oUN8I+YKZWAuUuSVeWRFh9JocV1SFjYMw3i7NPbIKDcGcU3GxLY2FHOQZiJxeSSooDb+LvHyJOJHWwtqkLKGNywA/enqGjUuqvF4e1yChAty1umNFo7d5zvMmw420l+7RwK/2fTfl7JcgfTlccFPtBbtHhauRveL3jhqFgh6thUqipQIsFliAstTT2GuQ5k+HaThxayqHAP5R4nxYCYavORXbZSz5B9FXIIn8cuDV0evG7kHfVW7ZzBXDEQXtIZGX77hTheL6vsygTp1sFRintgSl5/cw23/7bMfBjgNWTFRtuCY9Q4ZAJbL/uhobWSThdnrvtJHmDsKsBA5nzd5CjiDHsEO2iL1HY0OWYdspVdStcUTBMixmoL1SKzH/D3rITMAPVGruV/elAOZLCn9uY/QwICMttENHVfciNvRl1xOITY+j8kJ5AzJV9xab2TOAclM0B82GQZk/WyGhwSOGhVxXv5d6qIHI/XeAcvMzhlZ2wgu2eRs+7AznqoIHySveLF3/gD70sWDr+88Hkdxzwj/Gvx9FwlcbMMhDoNJWTi/dTgiBKdbZ1ZZqZ4v2hvp9SwwzyoBS3Ob26tNMLz2cEyO4/EOUB0VFdRd3lyi28yIStgwr1/32jcV6biyLoPqjdcOB0gK8BnubxcSMfhBkehJ4xgQc0XtsoK8nhn69TgX+qqnMSIZYqwW8K05iPwwmz+694QgfhcS6yZDTuKThA/ZFV/HxBHMe5uyU8U/aDe0xN8g84e/GziJ5IyIdD0fEzcZ6XMLjXWXSKRP2NHsHfvDSP25A20MaopJYM/8jROcbFAynPC2YctBC3UAO9kcAl2toxN1a762ubgzgK51h51wuIHfa6kM0BozIYIFw2gUDaIfXa4tY/RhL1n+vsVzJGjznv9BVIcVY18OnqtqizEmQNwZibiT6gMvNG+Znah4xtAibBOEtiDvdta94B3+Dw9JmY6C2S9mD2JXSQg5N0jVX9c9EDbBMPm46Dq5tWLh7a2ydHOfFlZKKWB19vmMjcBM41qKcDwzjTAOJxzkkHvcX6ocu5NHPH6d6cqJpGGfR6HX3wEyA+UpWq4LzTFxNRrM6HH7ezWoNwWttYzVk9u1wcJnir5oZcKyDFVVt6ZdIqPIr24tEpqJgYW4al+s1CEw7Bh38SV1js4QaA18F51S0SVcYWTO8D2WY7nSkm1ZiF4z6HVdV5eqdr4h5A9FYff3vnUp/EMDmSnMWuLrgXXkVndsFqiz4vvrejncpxQiw9RJE3AbdaPkwWLAOdUq3wn7/Wk2bY9IbtYeDKUoChms+G1t0M5KLo8DecHs1UNb6VNPkeSEaLqx8Tlf01kL68oFGE+8pUsztF2KuX3f4Rg0OO0cf+kRZjVvGYYBT6qNj0pv4e0TcZL/eO9Y4rRk+48PVTVzyx3Rnk+WI8odlVeOXyThrMTFgzUKPdnhrORJOMDpGCOhYLtbZd3mwVIIlnzSXWkLE+e6Ie3hW6X8xfEI5G6AYHmsFe1J87sJzBPNhKW5w5J0lnfitajXvkdW0XIoM2fHhgP5O4O/LvpkIftjSs9A9FyiASZ2tSQysPenHl46xj9Rqm5CLRR6piti580VdQcHSkvZF+dXH/SPCrOngr6VdjrKXx0T/WiezhXXHD9LyXpHIDK1lpgxxcSpEEckZLEUSGFvaP5lf79bo0Nm7/AyCUrTPGu2pfl1uHDWCLKsRJI16FwS2R0EyjNmbhueTbEP+d+D2WtBlYEBKSOjMuJMsHkzohVKwYqsYy/X1XFuAijlJRnH72UDRe2FtohI/oQ8uWpPnC0gaJEATzg5y61KWWoNjBL917p/hqmweh2RvLML4EiATZsV5OsU3mXo+p8uBWu7jUmQwpJRulPM/Fv3ScoB+vtgUyKpo44R2MdMAOKgsd64fWweYTN0xvxEKkl1xGWxuaGAjxOC0fbeSAYSaAo2L3NHdFi9sNag1uNdBPDtiNC9Pyny3wlBYKMX0534g4vkM5T++BMaT/avS5RkJw3t5SNVmvSVLc7HjT7GuzGkSMdg8sotg/7xJ7RnkQc/nwEbJL47WbF5hYX0NjDhSjaM6Sh22t7Q9Pcn8VgDeVi6RO4m1HR1DGJ2PYCJV+8TTOaQ4WV55j1AiwiKr/axVqcILLlg8wdsUNrr/Oi85Dm512fsxlReeQrMB/lFPenr0u8WyVi3cKEXwtPlFaZgoqVs06KDHAcP+5gEfCdgrawuKCdkoMHV2BX+TinVCRE5Nu4m99iG0Ccta5kq2fOfS8ll9uQYDB2uvBe9LGdjd74xL86Scein4W3LAwpoaSr3YC6a/HTj4XDMaiqXrTIsDBC2N0RWtIsMZVKD/UgkpanZK/bWs9S5zNYl5g2FJi9MbS4G6DfYGgzqAydbpMr1vpzlxbaH193sCNLM7MkbrT1MA25KLI3DfE2jF9Me+oWYYei6O9trVCcVUcfOQTfS6D8w0tufLmn1cRUYd2XCZ4LFhEgVCEtWtl/WwX8T/lMVFAy2pvClqBzW3tDLjMTWkJRfLXyf70V5B8IXgpfduo9Aqac/BeQ5bbHvVnLykMN+q7MYoYkwtl3S5cQGCVyvCDh7YEOLCMnBhxSxu1JrktikpZDWWz4GUd1V0kucsyPv+H0mUvDhehBhS+NnNPI6l/h3+1BygyQ81R/lWD1WRJroR50sb9onoVeI5vQpY3BXQKJdZTLvqlIwwuPVfmlpsZA+GaDrTmxo+nwowaizyqqi2rvHZjLyAd+sUhzkc15s3fZ5pb7UVHRKtDHX6WuCXktJqoDiLJkvKDtoG+aZ9fTazIl8biE2+/X+dU/fimG6dUU+nnvO2JkfuRw86yy2OiU1s0kDKr+tH7pE3dKg+BlzPUviTEGMnVkKcdtIG4MdojhyC2m0ff3PlYTVzDiDgkSaYo7UkWlY1mWPJOxI/2sqzyTz68fy3i2nElMOlgoZ0TCga/q4EQ5FUO5faoGOm9lYQcy1nLGIWw5GfwojiL9ZQ0SCU89AYwnr0txu7vF6mBlmh2j59oseHh2LMhqt0W4pe5Nf18iZIWA6edou3u0izyG2J5gKbCfX9iotNgyQm1Ao8TIddREZ8FYw8L6H673Op6vR+PZPJYT6h4xUFn34OFJ4q8bzv0U48Hh9/qpThwz7hNOWWyK0xmeQzzC2ZtpRyiQQxNQrK/Af6SdISLHMys5UWSK6+biLZiuwi19Hc11+GANvg68AWxIQ8gbWGFODdBmZ2vlH1tbqZ6hJL0CU20KOAZmHF3jOMdeM/rWrRqFuSWu+4NpthMSY4cErC4A3gQyJ5d/QsFlWpLUkaxo+KGkfpATjnf1fZ7HPVOaxXGx3egJUvzUuvP7mNOzJlImU02Xhe6R0KYBQu/Jg9vZOAdW3OxJO1suwWlOzP3VhRcRyfkagollWas5XRbkEXh6ztDAFZJ7rLiI5HeszgXb7u5kQDiILAkevJ0JkSPpb/+4y7XUfwnLvEn9zj1gwdeI37/+TTkZKGXDM4RgnyhNE9VawAB5VMTLLM9ZkzOcwa+vWy+qZFF7+x7rjwWTMylCUgrnTIM5OiTZHeNh3QpxpcuK6GLIwFMlGAwLvwPhbiP6MhKZLU3IV1AdtVMVyGDTLpn5yGLPYDWiP3NrGR9O+F83/ehY3x5+wxzAyMtOd9dCMKkpaZsgDclsWnRdAKDoW5RUA1j7Y20duvgxwzcUxVqfWs/h0R72/q8ZYZEY7HpiB7dyKjqtVe1ASg7204wgljemWjpmgaQf4MDQBxtrD+lWWMSisrY2bFAejRgCq1D629gx7tsiu/FRTx3ugbSf6RgdiTTisSWwrN/8yxia7lxsEIgcAspOpG80lMfE50NSSt8Spmq8ZbtzAYK/ckppJsLLDlEm/37TxM+AS45xIO7xSpg05gO70g5ptN+im6IyhSl/RdzzKli/GNKMmLHNF80n5n2lE37dW9IcA8qogWbDsuosv02vFgsDgx32yZCunS8eE0xzcOzBUhc5DGesZpRrlXa5uFDE8e8LM+6kSnCppmrIKCTnMUGrKa50FAfc456yO7YnczclJbue8tYYDYbzbTImFFEtNs1Tv3ztU8cX5HZoqdyBcglDj9wf7AkNWfG5QjZkh2KBJYHvSFYHCtZQ/QTcjsQ/hGRonT0v4MXrwuCuu/BQKmdq9afytotti5aFSUzFVNPVCrFggGlxQJaPrHUYdvF1PInmYpqsYAxaf9LnVdURA56sfbsGg30apTi54GJo8Ft0VCXzLP8zMeHUZLdTTS8QDp8OwbPpQC8VmldytNm++Fdbm6HZ5svsML/+gq3wZzamk1XdrAZHAgc00XHBsTW7ydVCny7PNvAAcKYF4FaBzDY7IeIHSGWyijvKAYUCMSkv5Juz7U/vNOoj4Vad5+7dXzMPlLGgE2bPyIaJOYZlJ+ZP7NaAWyI1hCtic6IpI6cBhgzVURNlZ67cjN6g+zA+BtypzcL2pgO9tr7aPsdu3XH561RgDdw3OBag01MTpTR8P4eUgDgtjpWy7Fl6q0pJqQ9DkEWhNMK9r6Nsv+JEfcSaqYh5sxNzh0B9C6AFW+NwHlrZC7HU+m3cR5bdpQgGEtRTGxXnllM1NsqyXhhdk8b05P8tpmIi5PhytK4ec25SVIyfX1lTc9QqPRYm//a9hFCkVSgeyKc8dd3gx5BTlorcphS8XvWi4MUVkmxtGXhuJKqTNgBAfR9l1geLlYcvWMtoHRMTybK6pXOggZJpZ6HmXG35JZ7jXQquUck6jjTT5DuBwTn0d2ylSWjmMiSAk5IQaRFWGvHN+3vbIryZCCrr3okDgE5zOfyyI6B3MhkZPAnpBNhC6rhK9g1wBOtJPkTqRGmnNCTJW/O0l1hX4a8o0svBxr3wsu3/y3Xv8uzEwdXCwBSCPZb/90BYMjGuAfBGFzV0fOGDMVO/3WMSN/kuhG/ABTCnb/At4UQHMT8lyJKn8dDvdOY9P9+s5JzFTSm+PU7HpIpfIpEos7Aq5XqZehYoaL2LZ2m4MzHX7ZX+cpLhJHZ/iHG7Amrp0p39H83DWmA7UtDKZ9isY/pG+gc/FfYSoP+jJ68/qr9FJcqI22hCGO0IhwvkW9CkwRIp502tZQDcYLfjW1i7xL0WXhXWgoBcGxFxMBxGh4ylDx8lO9mtPG+XY9RiwpKfCakg5l7+XNTpHocyL9rP6tvzFCk4DQwDl71Tr2Zk2UkHJ6akyI/A2y/NKgfuXt2a+LdwhCv0XQI4ROm1fXDwLzWgLjXf2hXwuRZdwj3K/7adgYH4k9kHjXWyxASxVPVyCHMj+CGslfV6Jwmt8XH1R0g9I93YfyyhMejr8V697I+l1i18wItjHHPlB0wdNqX3UtTGJU3J2REp/i764QIjk57wItrbAH6qnrIe71ln6yd+zW3GJVhae8sJLKZSjFL9pQg8DFI3hJQroXmu8Nyt2CcT/MKAgamE70Sg6tXkWwBR1W+sVyS+2cpg6wSvybOqGTPglIWIvHzkMFyaZcOpszlKcPJiTkYrN391tluqMs2u68fyV1sY7mcCszZVHwHTG3a5A2TN7XMCoZAqijh8pVHZkjR5VoFfjxcdiX1MYSbrdMfgEnXJ8JrwtG1Dv9KgLbftRrk9/5n2snJ5Cy6O7w6+9PcEv2BzX0JlgXeKA/uw5DU7SyYOUQI0OJ/NKMMVgBZPIHtLmAMSlMhvQBfLpR/fjY7Of4Bd/hx9WPhbjJj4BVoxTcN12KDFoIQtpHac9hXwhTXIfieyeNH72b9ywAPk96TE6TE/QBgGBdOpgba7edu2hwBK5a1t6IbSa5UoeANmGBJCN1U5LrCOD/9CCBG9VK2kw6UP5LHcb6Sqy0kgZjZjNAKdujfWk/Ac6AkutTydAc09vNo69YMWntXpjgzuOK6Axu0Sw/MEsn4R02Xk80F7/vwY2QTVeR1sdkJeDjnEpe0ib4SQGeCJ60gUiAW5ZeGGl9j9STcvkitWEBSsGp2scoBaY26zcOFgBSumLO/TUKiheixI1/8Y8OF2yAAQYi9iRf34QeKISIroF8VE7oDugl1wc01GpqUU9FMLYGsir3ZsqaRtxzUuvrman8EvhdBzaOFV2FhlXhUHo59TvZVBqsO3cQsGtU+8DGQXyMN8v2N4GnYBu0l/X/JwdOB65IJ5HZdz4c5RIqeF6az3pE/P716k3/F5DDoLjDJdvdt+LjYRwQwiwvHiqeiHIMel7B5GV6vlwr3e9gfspw+IvEtJf2sUzQfNiReaxSdTj/VbJZ5uGpYqOfjNWPXVOjONd+0KVd3Kb8C8gmrn3O6ZqgtJdFfiuAiLOUFk8hZCaP3jA11eZx+CxQJerVmAffM6wxYU/yPCL/GEkhVxmwVNz2iBGYS4sXjTFQOeVlI1cXuB//B5m6dwkFBqL3a+WIY0Dv7O7lNxP09VO/6Uewkenpj4vTwvpLjYONhIJatzfptw6AMuk47IhKjPpzRqvXaCnOWuXesqq5MgiF9cAHOM2TDnrqR8nh+OyKBGEGe1BWo7NFjpkmyY0cPNooFEXh+UQ47m8lu4mfb0F1uiU5FMYRiXTdVh587pt1uW2REFq/JJP7nYRO7blarkVZ0RmpJTyfebenMeZ2z0aIqXbcapSVJFXOk+8sCDs0CQgAYy1iYeOAOT8EJbaxXZbfyM4gmvSLHDwOkod7YPxB0n2C87oidQ1fr+jvdTZfwpXf+nz35MG2G87TrGX8Rqbc7Wya1vgzqtOCAkECD49Pcpyp9r2XL3TNhgdR9V43a6LNn0fUqvHuQavr7VharyXmRAxJVUTOT6QVQNWnWcYQJR/xPM11T6zbXIsx9ZY4wAo/8FtZ6o7b/95HhuL52yReyDNZ8FzYsJTSVBnDCq9cMtUW5l2nSyyXo4nAy90HCn1IH7YLO3sqD/mIVE2lY1mhNrqCtdipDC4F3bdUTQP4pvRjrDKOSW84EkzllIj94YsSnRMCqTORL0JkQVkIf0eJP74dEZU23RJh0KKkA7XOzlnF2g7+emsKDpoFoD/YIHGZg+vKxHjS7uaKZ8k3TkwRPnhz/MQhl+frSD3U5iPKmE0RWc0qmF4Bm3hDr2SqLKyoOT5BE1TZL1/pqpUYBNijaNlrfp8V/aXoofOiC5pY6ZzP2YBKdPGIw4fqLFHJWxouuEzzv/+41NBGBRyt99ZPtjJq6HMLSSTdPI6ul8F+eRklYy1C6/bdydupPM1jcQdPzGPeLuHwd9yrwZPjPRuH1R4Ma1e7+Dj0854nhpAERVkeZbjxgY8vKZb1KsCjL6fbgydsfw1FXpfvVkYhaRBeILwgdnV76s4CvYJtpfWiX5iOBbaMZx4zKTHxwGQMq8nR7iykrlMeR6MiuxslRATf454HGOvC1gXHOb9oyPcLngUGKOmiomF3c3VfSsKz+AXLtyzBwIqDf55mwTo2WcLJ4N4dT2JcnJWEqVPuYUfMSR2ev2j6dbJBv+41zprhXSs1eitq/ayuR7kQ+hrIEJsCgNqjtwCKv2aobjEBi3xaJjaPlWCR8FsQ/wFbzRVvGoeSo+nWWZK37T1oDZl7S4oZef30sNtf9hfKoaRKukjx1yMv1rmbvyDy2t0+PKSazSuVNwDgPCjFu6G2V75SQAb8gLKG2k3ZBb4IFNVnXpoWKgyOQA+aG5Ht/0YK81XytZMNTJqQmDLm+lPLUJ3epmNTzKJSJxENzZiqL/irEN7s1xXrwp6NgnCmSu82Sh4/ZOmFSBBD4pwV8G4vqcxDvaITO3eyxCMLKMiU9xjsAXRVnT15SL3otb7NcaTE70qUTD06OWrVoea60+vH+sfzl7SrnSssVZODLk3t7oocbBXGjaLIgdOYa8bSYweBkUR8+Dr5nSBxvpLcCqemZvJeCUN4nyKFE8hcr/SMJiWhdQS2FzASgOaoRWBjEt8rnDDxDgLAub3lbu6wcRePmku8DQ+97AhsFVX15CaFN82/+KpzfSH6XDctO04tUHMb66MeKCzQq7GmjwDhUZH7SWdeNEalGXRsDS2jv/c1+ypC6kQ5KXXtRbhHQpgnOPIdkFDlc2WDZAQWautRRx+eTvKjM/YyH+h3eaaBuBRkp6dUY/8Z0dexQBHDoYlDD8xXkeWMJ9ku7cD1GxSjjgrlvDwku02aZpxBY/+i3CGTvjWIEfMZGzw1l0XnG+kCZrjBmX+YoNfXdKSWSmYTjRL7S+kundVIPiFtVOoqy9w5tquWMEh2syTZb4AW9nPvCkOK642xFKawz+FzXiBGsT1zAX/UOuN97wmxTmvdx2g/DoOgkm5VUL82GJbHx4dK71KztmhYkrECDyU1uSOwfxu/8MP3hR94fob732HIJkEUrqzqweZNUqK0lU3ukUqxXPdrpuIJNWLXB1sYs2h+vPPA2lNCCJnjJiiO2b1CpABN46Y4qhQFHz47fYfxmAmeX/+cP3AKYetEfUquu1XHulAXFjBrsvwYIQjQoBLMy6mJtKQPYqZV51aT/voynk95gNQ98QZMChmV1HCPjcSFleicNomHWaZdnLweVQ8OBZVgJ36XtP5tPTvoX2shrezE5fDZZDzwGLbZpog5GYzqe/aFOnmUeGfIHO8LdengicPYM2BGc/RkMxbPhsWOuG4gMgrxBzP4NeWnvTlO8PsWRzqrg7tq8TdlX+W9pJN80FHO8IAKQRxZuaQEIl2vuJAeU9ZiwrvCIks6rjzLJCLFT4q3nHPpzuWQ4JvzVZGGjFb1pcvr4t6VeQ1+aLwqcij8/ws9WwDx4N2ksSaQkxOtC1VgoHbqbdmw4rPbg09BOuTv6EiBtEwahWc/IE3IHFGNvGYcDVzT6cYjVbSYCpmb0M/NzpNb4gu7KPycd1VWoLsznz1peHfqtlLJBI7+bbIovH4CPbeIUnYpLIOGe83BPJQlP2rG/Sq94lABgzl41k4psbiFEZG+GCWntKviwxzR6UaWK4FZZZ0joRJ4iI7b1hQJtjHUJvSQ7kpWw8hajCZDkrbFN0EWGcI71U24iXUe5frdsSoVD4lK7t/LzjS2NbSGBS1LUF3nom0wmzq+kvWkqcKDuP3J2LRsH0t1V5TKHqrcnq+tXbpeL42XgFXUqTWxNq9npyGH6e6Yo7filIrjPuNSJ8pR9ZtRkzfpVPmIPXoeHtuds3l5yoM9G43PfIkI82TdtnyNfnBvVtTVAXE9Xy7IxLRfKZthOF4kA9qfvzQm23xRBEnCEGpptgA8CyIrGjFiVlccwb/H/8IPmZAuYXWi72jJEvt6NvpD68y8kcgeeYmYnyneRAzCkqJih1A64crAlDrL2ChRJBm4LV/5TViBKDh1bFJ55fEz1+62OGcoVziMJRt+yEWm1yPct7I1b+NnsUDm2sDI0e/PeIMekIFetDanST/fQI2ZQTGlqTxAAv5+TmbngihokpOfdvnMERYvNJcd0wRwyGQfIqy71nIAx9D5Tlm1tu4RK7OurhN5d1hZP+KswrLIjODRGZnhIE8euiGro9Ip7/DavHAj2Oi9XiNkGphMfrWB8pJAFTXe8C/wmiVPlY0HNoq1lfx+bl/HPlwH1cLiW5N+jw/SvAs7AVwY821+lJpK46h4x6GzyUPRTVBi0j+nWxbAFjwju7OQEsffZbrC4rcezESl7FXND+fPziKxNcCDVxLAc3+Q2Mdm9XFxDQqJuWYbgQxdyS0mVY835q8WXWa/bQC4jwFunmFtHVnLz490Dcv2mrzzNtsf+SU9aXqA8Jm7ZlHYsvR3JpBfkE7yGNUmNeOmJlW0olhWtxhzSsJT8XLqLTaFLCMmsP2XkoX+66bOgfO6FENpnk2sihGISjUP63kw1hKm/SdW+t7EE4ahMz4AIP5VBd4hXhIkSGuqw768sFXAbfpvuKKtTOBOAeL87w7WsicIroohclYU/6aEA/VhEQYOQiq2Oyihe4YySVOIULXpPpIlgd3sCXiHnOL0e6rxq1ZV7mpwwIjO5nlhmKfp1mMLquMe8y/WXXFN3JY+zYvNqCfvqPUdfhUJOX00S5I1LQjTIcWdRv7aTqx7+qm2rNr7s5dyvGW9VKlmJ+AKuzHqy9KHnVBXXugZmpEZm69MlRGpJPjTtShFMBm2aLLeDYnPP8P1d2cIerwzjs+Rj+O7sqe98O6vZZTqpFBOphMhElV0VykUtSR4GmA86BpG2/dGBRaXrFT75BJhX1vCpDtlI3hgHqhDv9LYJL37im9VGJKKZpmMIvuDw3WEFOLPZRk+p88WrfmjLz1QbwkYw2+9uzTP4u5P5/uWyyxn/U9gQeS1yVhOj5gGCctSl3ZsbTLCzRENMkL8UvA4aRUKdx6zGttegx+UaykSCXvxK6+uk1gK9lBWpLtTW7CQa4PhxsZF3SYLFvosal3Uwsr8FZn2cvKxH7SUpVUofEcgzij4E/FSqEk/L+F4vc1q2mZiklCiY3xCFpmL8hW+m6I0WCgKGKHLDXw0Nle/3IhJ7CKIQZJwu5P84vqX+0pInyRQ4o6CcVUL3/sR4cafnThC3I87ZWzK3c+OHt3CTPU1mDK4wJJXFkYciGtRwu/at0L2k34dpenxnVqCDA9nOItgWvNjnj615/Zn+4rhRAoXLMB/zePJLSSiOuPt2BaufLd+sdzDyl7oaN3PLhks7QxYVU/J96rJIM8rdV+g72mbej/0sRLnRLkrooWttf0cY0OWJwyJ9vkZkDOCBlqTKjLk6VuCuWcGVEkMk96TZQR+L0vArZJG1ah9WwbyiMExhyH/YcpzvLyx8Zsu2DoScvHzdqiuOXEdIZYMXf48nYMPzuYxDYAPtGzfzT4IgO5+EeTzu7+HkTAHKJJ70Z3bpq1zH/xLWLd74+BD2rbltbFY/v9MyevEkfBWH5PXqoKV/mPDIF2FiePpHuM+X9/zwL50K0KCIIgkHFUpVBJIf/NqJTfu3Zp098VLGu3SoL7zG37H4byEmCqix9sJtSlCyM/5ZMFKzg4Gz2NTGDUNBozkIGMUCBmvBL+zlc6KR7aDT6CjtmJtDzLAKE7qIv1YemuB/v3cfgUAXQK9M3HPsutNVklsfkwOxhuxKaPFKfFVfu/pse332iKxt1T1xuXSngrORtAL7RAN6sTqvFJjNKBZdD2C5Er8yUn1S/x259fFyRJihZxY4d0ZaXjsiOQOMAG5DL6+ntNHwPSQ1X26wYDQ6HhAALjME1hVJmQEPgtmXdWjqIQPoy8a+6fCTLMOP1fEOCX6AhTKfrpvgsWdCOmZxooopWtkjL3/90HoVB4ylB3FaE2QL2gjqYVn5TDdEIsGHZYI88I+UQ3/yM2Ag0yAiXnIQ/jc4V0sMoGWots8GynJzsZEqiDSYyV+uRJAaIaqqOj9XqJhvr95i6CTWdlhZjIUDiLGq98E6RQgaX0iyU0UVso4oHYwfXFvSvJrtAHJueAEtE5c93lmYZ4aO6FPSSqzQj3euSpmvnLGBq65pHEqNUkxWXiwa2uBXt80oFz20jUkMPDF2NqxoLnxq60oahhhEw6Hqb4m1IGViDrmR04lWcmG5gf3s1Vx2iTQsx/Po6AmQ0NigWQjRFKXsXDhtlbsS8/a218xzNdc/7RWMkTzjOzJP6IAbIstOMT0PecnPy6nkPR2vBWKCGFW+6BHJVnKGHNBiv++yZY9lS/8a3lGqNit5PZp+jqTeBw+pEAA4XdTPsHhUwn6ene4y3Xvkckcum4ElVQkRUVA2u+70O52jvhdiEY7u9YiL90kYSOMymwKb/ZCN4AknRIWAlVxA8B1gTEQZia2spvrCdeDecvYajvO4EvmYPe6TFBQJV+U7a9NaqUu9EcKDsQWt027fvC0IpO28jmox2l2eauWCwub7RPX4I5/6D3hjxJfhWVmtsp3+h/OFhdORPbjshnOdGoXW5Jj1ky/OKhbSPSPvKUrlu9KCICPVnNe2I47r2ME07KhkQGk+118y+ClGhIelZ4zOlWcm5EW2w5qCFTwLB2ivbwg5D1vau51hOZecdGUog6N0PcrmWeVfueZKrKfwiN+oN7EuoTnTuXSYkzWWN91jOqR6ew5xQyesiLDqqj2VwY8qZXejrjbSd6h6455z/h9WtDJa/folLgDyb4Nx9Heypvlp6mKxGlTgW94shWmAC7Yv4JC0vEa9U9kbZdJQuJzdFm+deolUt2xZpvGUUZgBefpXeNHsFDJap/w3qo4I/rd+dBCGeKj9JhHsTsNsJrtJb3oeeiIVjl/QIz1C/0dBUCkbcfqzRUcCN2OqhMycVdkwwhbSzNH/CtViUZL4Obx8b1yLq4WpUVcRXQ4wQoJtL60+/ePc944wGrwzU3jdGXSffl1NJSQgVnHm5R6at2iJe34ULcyFFwAprTYCYQVeLa9ZK3dAcfbQjZ5SAFY5UbgBchHKlqcT1OSx6QGYP6nDb/16s7R558UH7ISnAFAw2ntzOwwwEbgdA6QPhh62kbUa5MzMkLi4XiPIPoKV5P9boXOUsgPolPpLW3pGmAmHc2QwH7ZxC7qChuyOyLpxO1gRGqeirQbo1opAwWdq4WJ+k2tPetvoxap+zXfY475NtJTkHYMxawo4f/ZK1EugXjl5Y+tL1dQzIDuCFYH3o3LEOey9vY3C71cV7BcEaDPpG/FP4CqJKQrkWxGWtlpC5ZkrIWJULFqVLOHlA9b+jifCPkShn/UW/V46iWVA+dJslXVCrA4OD4Gg/2B5SdZIImfKVn1Q0xCWnm9gzX8CCIUy/TakCrLv7eYC6PxgUqrf7s3V+j+QDFH34guOsp+jBhIxxNUETs+ZjZwhtZInaVv25EQQloqOxnJSTjIn/QcuYes5dhu6e8sQjWa808zcXSZMnenptIxt8s6LiAqz4fxXxphm5accVA1M9r6LsLICCYyXtjWqPPLBribVL8fexntikXqXStd9h/lMfMb2WFmBvPUTjhlWkrmiXan4Mn6CZPAEWZ+piJQbdziSyyKjNx6e1Y5vid7lq3/2+q9Am9cy5m0eNq6gGeSUQXUchcdybMaD1TNIMBmSvNph4S44fGLhzFNaxb0X13JDG8Rb9EJ4G75o4q8MkXWEDyj+5XnyfauHpb1RQYsvKqP4CZx1fe2JyeY7p1DJ+LR4TVUihtkTt1vVVxhQaEChAc8Md0Q/yaQofc6GH9AdhdfWn+8SE70WaEXSFqZ9bd+NDb0zEp1hKvVdwz6H5xRb+U1Q0JzYS6F1cZoqYYYEKznIEjBwFsFkgTYMW2EMbJ8cDhAkgHlTEuOR9jeq+FXJvCiXtjwiUBS+9gyEJJfBf0kw/AmGdVuUXwDvNwDUiePaH9YbiK+t26iOSAMFhCAQF69jyyfjC2LBkfrWod3hf+y6K/o7xqOS6wxWQXZV9wW9wclXKvIEQM8heVydB/pDyNc+VIbgJjm+CKroj0XGiexPQwEwYFq1X1ybmYXRxrYiT6Zxi5YX2CHfTFki5lDZSXL56ciTvX65pN291njEDikMWljvfe/YbhiB+PAfEdRfqetadLGpwDZ+mqlfa/oHzUtbgFBVJYnGnUM0d2+oBLMKk5OgTxpIr1d9daQAKKsqngMaSlH2NIlzg8zxQZ7fgKsnPmpYG/BWLrkiGDW5Q2w2rUlFHSZl3ag9v8EGFMVFEC5HbudIwaNsGhiI/nhys9QeGPYzvIRH1/31s36lcoF9UXYdOGxHPjwt7aGKJgijYwpOc/HV1xPQBwroZigrMLoahDdwoREex8idvly1WAB7R+qBJTm9H9WQjbqIkLY4Sq6zk7fpx6dUboZt7Yc3IloJLY2Cay8k3+hZYrAEIoFejqUXvBCi8xvOBodJ1MoO5HX4Q63cujZh+oz+M1koil5d7YGk7+9KctnEIKWcRJPgKb0QOEh2VeGIN0iy7PZgnAmkiJysXc8U+5nAVzLIHAe3oJ9SYjnplbDqMeplSoem8VY1808H86auGN0LPrEhxDohaF4F/zgpnlHSXAmVpJnd4WbP04qRZ6WyI3lRIKt1PDSLlaWsE4OvfSbaSWULqEeYaRRtHosSEVaY+en4iCPVxAjcdIGZleodQGcmiNiyk203LZT5onadQeRQVXk/Rex8S4Jnc31sE7Rs8nL+lAvjwKRe5+Cg5rWg/GzcpiPyv+neqb9fS3lUmRUCQK1gva7Hi3oNItvpS1AKpz3sThTe+Wgqd9Hm8XmNBNxuaOve8nt8pW1cW/lsk59Auy6balL8wLhgfzdVO+OzhxYwfqcR1+CYJp5pTV0El3hmJ965a7zB5OiOXJA47PiCjRXsM1mb1GMA7p2UC9Pz00LeDUusdCyMiYUHxoiK2Ls27n5vTSV3U47fkUwV5u9rK2MjD5KjT0C+aVoc8xA+guyCqEOC5ZLJpdklDiQYrjAw5tZr8xXDbvYdUTuuXLGIiywjn2+5VLBcfK1oUHilkJXAsMW9+Qbi3j/yPYdYGD/UK51r/PXu0/cewedXxXJ2qU4LCqP6ohNPAIZ4ljSZZK5ZGhylZGnKCHA/cj8fp6kmaAzQCK7eI6ybufQVtCCqJEAgfoSO854t8hUJvYhDGk6h5kRdH/E5W/mbPB8JIZ2kiAPJhWyNOrMe+A+EV3EEsr03MDclo2eFra69YguPt4Cs9YnwGHgZ9E7KTDBDXrOW14DAtGWX689G1aT745+rwQpQA53gASCWsEyk5ig0/mh5b4Zb6lHKjrB6g9VhZtbCaC8G5kvoBUaI7QWFZwI879Mc6htxXAIkb+5XmLuJy7SB/0wvBvj3zPRFTpKz5TNbOShAN8qCNBNIpM8TWncZELaM1jTQ/DCeF6zRujZMeAazo+AL+doLIv/35YN1zvwrSXI0H87rgF/tCo0oLQk5At4coHePtmFBFwCj6ratubAIRwBxX4duBiAj3itkjiPbir2ZW4jNTOUqg6Gw/fu3qq7NEFOBNbPMZ73x3yVPCRyTU6WPauH7C/GT7lPTJ34nqvAy7/bo2+eM/aGzJUb5Pt0quuscyjuFPSySFR/8ejCQ0lkm1s2nFHEUhwtra0hcNUEMPXz/10Su2we65bpzrsjlgcdTsGlD8CSfCiFMd46SOGqFQFunaOH0hTnDfFhAr5MxLTGhs+I0mF5l0MNkWK9XlZAqyk32ZMMO5G9ij1LseZwJxZHHnzDBgopRO/tTf/")
---像tupian一样loadlayout生成的自定义布局,可以用变量直接传到下面使用
---我封装的生成布局函数有
---SJX.text 文本
---SJX.button 按钮
---SJX.switch 开关
---SJX.radio 单选
---SJX.check 多选
---SJX.seek 拉条
---SJX.edit("输入框ID") 输入框
---SJX.getedit("输入框ID") 获取输入框返回字符串
---SJX.setedit("输入框ID","内容")设置输入框内容
---示例都在下面
---其他布局等待后续更新或者你们自己写
function apex(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end 

function readPointer(name, offset, i)
	local re = gg.getRangesList(name)
	local x64 = gg.getTargetInfo().x64
	local va = {[true] = 32, [false] = 4}
	if re[i or 1] then
		local addr = re[i or 1].start + offset[1]
		for i = 2, #offset do
			addr = gg.getValues({{address = addr, flags = va[x64]}})
			if not x64 then
				addr[1].value = addr[1].value & 0xFFFFFFFF
			end
			addr = addr[1].value + offset[i]
		end
		return addr
	end
end

function gg.edits(addr, Table, name)
	local Table1 = {{}, {}}
	for k, v in ipairs(Table) do
		local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]}
		if v[4] then
			Table1[2][#Table1[2] + 1] = value
		else
			Table1[1][#Table1[1] + 1] = value
		end
	end
	gg.addListItems(Table1[2])
	gg.setValues(Table1[1])
end


wt = function ( Address , Value )
	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
	if Somod == nil then
		gg.alert ( '请重新选择地铁跑酷进程' )
	else
		local So = Somod.start
		local Add = So + Address
		gg.processPause ( )
		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "~A BX	 LR" } } )
		gg.processResume ( )
	end
end
j = { }
xgz = { }
ZY = 'Main'
gg.toast ( 'K_ON' )
gg.clearResults ( ) sj = { } xgz = { } gg.toast ( "神罚" )
function S_Pointer ( t_So , t_Offset , _bit )
	local function getRanges ( )
		local ranges = { }
		local t = gg.getRangesList ( '^/data/*.so*$' )
		for i , v in pairs ( t ) do
			if v.type : sub ( 2 , 2 ) == 'w' then
				table.insert ( ranges , v )
			end
		end
		return ranges
	end
	local function Get_Address ( N_So , Offset , ti_bit )
		local ti = gg.getTargetInfo ( )
		local S_list = getRanges ( )
		local t = { }
		local _t
		local _S = nil
		if ti_bit then
			_t = 32
		else
			_t = 4
		end
		for i in pairs ( S_list ) do
			local _N = S_list [ i ].internalName : gsub ( '^.*/' , '' )
			if N_So [ 1 ] == _N and N_So [ 2 ] == S_list [ i ].state then
				_S = S_list [ i ]
				break
			end
		end
		if _S then
			t [ # t + 1 ] = { }
			t [ # t ].address = _S.start + Offset [ 1 ]
			t [ # t ].flags = _t
			if # Offset ~= 1 then
				for i = 2 , # Offset do
					local S = gg.getValues ( t )
					t = { }
					for _ in pairs ( S ) do
						if not ti.x64 then
							S [ _ ].value = S [ _ ].value & 0xFFFFFFFF
						end
						t [ # t + 1 ] = { }
						t [ # t ].address = S [ _ ].value + Offset [ i ]
						t [ # t ].flags = _t
					end
				end
			end
			_S = t [ # t ].address
		end
		return _S
	end

	local _A = string.format ( '0x%X' , Get_Address ( t_So , t_Offset , _bit ) )
	return _A
end

local nc = { }
local so = gg.getRangesList ( "libil2cpp.so" )
for i = 1 , # so do
	nc [ i ] = so [ i ].state
	if nc [ i ] == "Xa" then
		nc = i break
	end
end

function fastsearch ( search , write )
	gg.setVisible ( false )
	gg.clearResults ( )
	gg.setRanges ( search [ 1 ] [ 3 ] )
	gg.searchNumber ( search [ 1 ] [ 1 ] , search [ 1 ] [ 2 ] )
	if gg.getResultsCount ( ) == 0 then
		gg.toast ( "Not Found" )
		return false
	else
		local result = gg.getResults ( gg.getResultsCount ( ) )
		gg.clearResults ( )
		for i = 2 , # search do
			local mtp = { }
			for w , r in ipairs ( result ) do
				mtp [ # mtp + 1 ] = { address = r.address + search [ i ] [ 2 ] , flags = search [ i ] [ 3 ] }
			end
			mtp = gg.getValues ( mtp )
			local hook = { }
			for w , r in ipairs ( mtp ) do
				if r.value == search [ i ] [ 1 ] then
					hook [ # hook + 1 ] = result [ w ]
				end
			end
			result = hook
		end
		if # result > 0 then
			local tb = { { } , { } }
			for i , v in ipairs ( result ) do
				--- 遍历每个结果
				for _ , vv in ipairs ( write ) do
					local p = { address = v.address + vv [ 2 ] , flags = vv [ 3 ] , value = vv [ 1 ] , freeze = vv [ 4 ] }
					if vv [ 4 ] then
						--- true 就是冻结
						table.insert ( tb [ 2 ] , p )
					else
						table.insert ( tb [ 1 ] , p )
					end
				end
			end
			gg.addListItems ( tb [ 2 ] )
			gg.setValues ( tb [ 1 ] )
			gg.toast ( "修改成功, 共修改" ..( # tb [ 1 ] + # tb [ 2 ] ) .."条结果" )
		else
			gg.toast ( "Not Found" )
		end
	end
end
function readPointer(name, offset, i)
	local re = gg.getRangesList(name)
	local x64 = gg.getTargetInfo().x64
	local va = {[true] = 32, [false] = 4}
	if re[i or 1] then
		local addr = re[i or 1].start + offset[1]
		for i = 2, #offset do
			addr = gg.getValues({{address = addr, flags = va[x64]}})
			if not x64 then
				addr[1].value = addr[1].value & 0xFFFFFFFF
			end
			addr = addr[1].value + offset[i]
		end
		return addr
	end
end

function gg.edits(addr, Table, name)
	local Table1 = {{}, {}}
	for k, v in ipairs(Table) do
		local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]}
		if v[4] then
			Table1[2][#Table1[2] + 1] = value
		else
			Table1[1][#Table1[1] + 1] = value
		end
	end
	gg.addListItems(Table1[2])
	gg.setValues(Table1[1])
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 ( "搜索失败" , false )
			return false
		end
	else
		gg.toast ( "搜索失败" )
		return false
	end
end

ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end

function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
	data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end

JFYx32 = function ( Address , Value )
	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
	if Somod == nil then
		gg.alert ( '请重新选择地铁跑酷进程' )
	else
		local So = Somod.start
		local Add = So + Address
		gg.processPause ( )
		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "~A BX	 LR" } } )
		gg.processResume ( )
	end
end

gg.clearResults ( ) sj = { } xgz = { } 
function BYCY ( FUNCTIONADD , TYPE , VALUE )
	local SOMOD = gg.getRangesList ( "il2cpp.so" )
	if SOMOD [ 1 ] == nil then
		_error ( )
	else
		gg.setValues ( { { address = SOMOD [ 1 ].start + FUNCTIONADD , flags = TYPE , value = VALUE } } )
		gg.setValues ( { { address = SOMOD [ 1 ].start + FUNCTIONADD + 4 , flags = TYPE , value = "1EFF2FE1r" } } )
	end
end

function _error ( )
	gg.alert ( [[
   开启失败


   失败原因:进程存储太小!
   
   
   解决方案:刷新进程后重启开启
]] )
	gg.setProcessX ( )
end

function BYCYA ( FUNCTIONADD , TYPE , VALUE )
	local SOMOD = gg.getRangesList ( "il2cpp.so" )
	if SOMOD [ 1 ] == nil then
		_error ( )
	else
		gg.setValues ( { { address = SOMOD [ 1 ].start + FUNCTIONADD , flags = TYPE , value = VALUE } } )
		gg.setValues ( { { address = SOMOD [ 1 ].start + FUNCTIONADD + 4 , flags = TYPE , value = "1EFF2FE1r" } } )
	end
end

function _error ( )
	gg.alert ( [[开启失败]] )
	gg.alert ( "❤️请选择大于▶️300mb◀️内存的地铁跑酷进程确保脚本安全运行❤️" )
end
DWORD = gg.TYPE_DWORD DOUBLE = gg.TYPE_DOUBLE FLOAT = gg.TYPE_FLOAT WORD = gg.TYPE_WORD BYTE = gg.TYPE_BYTE XOR = gg.TYPE_XOR QWORD = gg.TYPE_QWORD
function nc_offset ( addr , tablex , tt )
	for i , v in ipairs ( tablex ) do
		if v [ 4 ] == true then
			gg.addListItems ( { { address = addr + v [ 3 ] , flags = v [ 2 ] , value = v [ 1 ] , freeze = v [ 4 ] } } )
		else
			gg.setValues ( { { address = addr + v [ 3 ] , flags = v [ 2 ] , value = v [ 1 ] } } )
		end
	end
	gg.toast ( ( tt or "" ).."开启成功" )
end

function getso ( So_name )
	return gg.getRangesList ( So_name ) [ 1 ].start
end

function BaAdd ( add )
	t = gg.getValues ( { [ 1 ] = { address = add , flags = 4 } } ) return t [ 1 ].value & 0xFFFFFFFF
end

function readPointer ( Add , Item )
	for i = 1 , ( # Item -1 ) do
		Add = BaAdd ( Add + Item [ i ] )
	end
	return Add + Item [ # Item ]
end

function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end

function getnc ( Name , nc )
	local t = gg.getRangesList ( Name )
	for i , v in ipairs ( t ) do
		if v.state == nc then
			return v.start
		end
	end
end

function luoxuell ( Search , Get , Type , Range , Name )
	gg.clearResults ( ) gg.setRanges ( Range ) gg.setVisible ( false )
	if Search [ 1 ] [ 1 ] ~= false then
		gg.searchAddress ( Search [ 1 ] [ 1 ] , 0xFFFFFFFF , Search [ 1 ] [ 4 ] or Type , gg.SIGN_EQUAL , Search [ 1 ] [ 5 ] or 1 , Search [ 1 ] [ 6 ] or -1 )
	end
	gg.searchNumber ( Search [ 1 ] [ 2 ] , Search [ 1 ] [ 4 ] or Type , false , gg.SIGN_EQUAL , Search [ 1 ] [ 5 ] or 1 , Search [ 1 ] [ 6 ] or -1 )
	local count = gg.getResultCount ( )
	local result = gg.getResults ( count ) gg.clearResults ( )
	local data = { }
	local base = Search [ 1 ] [ 3 ]
	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 = Search [ k ] [ 3 ] or Type
			end
			tmp = gg.getValues ( tmp )
			for i , v in ipairs ( tmp ) do
				if v.flags == 16 or v.flags == 64 then
					values = tostring ( v.value ) : sub ( 1 , 6 ) num = tostring ( num ) : sub ( 1 , 6 )
				else
					values = v.value
				end
				if tostring ( values ) ~= 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
			local t , t_ = { } , { }
			local base = Search [ 1 ] [ 3 ]
			for i = 1 , # data do
				for k , w in ipairs ( Get ) do
					offset = w [ 2 ] - base
					if w [ 1 ] == false then
						t_ [ # t_ + 1 ] = { } t_ [ # t_ ].address = data [ i ] + offset t_ [ # t_ ].flags = Type th_ = ( th_ ) and th_ + 1 or 1
					else
						t [ # t + 1 ] = { } t [ # t ].address = data [ i ] + offset t [ # t ].flags = w [ 3 ] or Type t [ # t ].value = w [ 1 ] tg_ = ( tg_ ) and tg_ + 1 or 1
						if ( w [ 4 ] == true ) then
							local item = { } item [ # item + 1 ] = t [ # t ] item [ # item ].freeze = w [ 4 ] gg.addListItems ( item )
						end
					end
				end
			end
			tg = ( tg_ ) and "\n已修改"..tg_.."条数据" or "" th = ( th_ ) and "\n已获取"..th_.."条数据" or "" gg.setValues ( t ) t_ = gg.getValues ( t_ ) gg.loadResults ( t_ ) gg.alert ( "\n"..Name.."搜索成功!\n偏移到"..# data.."条数据"..tg..th ) tg_ , th_ = nil , nil
		else
			gg.toast ( "\n"..Name.."开启失败" , false ) return false
		end
	else
		gg.toast ( Name.."开启失败" ) return false
	end
end

function search ( ss , lx , nc , dz1 , dz2 )
	if ss ~= nil then
		if lx ~= nil then
			if nc == nil then
				nc = 32
			end
			gg.setRanges ( nc )
			if dz1 == nil then
				dz1 = "-1"
			end
			if dz2 == nil then
				dz1 = "0"
			end
			gg.searchNumber ( ss , lx , false , gg.SIGN_EQUAL , dz1 , dz2 ) sl = gg.getResultCount ( )
			if sl ~= 0 then
				sj = gg.getResults ( sl ) gg.toast ( "♥️️️搜索到 "..sl.." 个结果♥️️️" ) gg.clearResults ( )
			else
				gg.toast ( "未搜索到结果" )
			end
		else
			gg.toast ( "无搜索值类型" )
		end
	else
		gg.toast ( "无需搜索值" )
	end
end

function py1 ( value , lx , py )
	if # sj ~= nil then
		z1 = { } z2 = { }
		for i = 1 , # sj do
			z1 [ 1 ] = { } z1 [ 1 ].address = sj [ i ].address + py z1 [ 1 ].flags = lx z1 = gg.getValues ( z1 )
			if z1 [ 1 ].value == value then
				z2 [ # z2 + 1 ] = { } z2 [ # z2 ] = sj [ i ]
			end
		end
		sj = z2 z1 = { } z2 = { } gg.toast ( "共偏移 "..# sj.." 个数据" )
	else
		gg.toast ( "没有搜索数据" )
	end
end

function py2 ( value , lx , py )
	if # sj ~= nil then
		z1 = { } z2 = { }
		for i = 1 , # sj do
			z1 [ 1 ] = { } z1 [ 1 ].address = sj [ i ].address + py z1 [ 1 ].flags = lx z1 = gg.getValues ( z1 )
			if z1 [ 1 ].value ~= value then
				z2 [ # z2 + 1 ] = { } z2 [ # z2 ] = sj [ i ]
			end
		end
		sj = z2 z1 = { } z2 = { } gg.toast ( "共偏移 "..# sj.." 个数据" )
	else
		gg.toast ( "没有搜索数据" )
	end
end

function xg1 ( value , lx , py , dj )
	if # sj ~= nil then
		z = { }
		for i = 1 , # sj do
			z [ i ] = { } z [ i ].address = sj [ i ].address + py z [ i ].flags = lx z [ i ].value = value
			if dj == true then
				z [ i ].freeze = true
			end
		end
		if dj == true then
			gg.addListItems ( z )
		else
			gg.clearList ( ) gg.setValues ( z )
		end
		gg.toast ( "️共修改 "..# z.." 个数据️" )
	else
		gg.toast ( "没有搜索数据" )
	end
end

function xg2 ( bz , value , lx , py , dj )
	if # bz ~= nil then
		z = { }
		for i = 1 , # bz do
			z [ i ] = { } z [ i ].address = bz [ i ].address + py z [ i ].flags = lx z [ i ].value = value
			if dj == true then
				z [ i ].freeze = true
			end
		end
		if dj == true then
			gg.addListItems ( z )
		else
			gg.clearList ( ) gg.setValues ( z )
		end
		gg.toast ( "❣️共修改 "..# z.." 个数据❣️" )
	else
		gg.toast ( "♥️️️没有搜索数据♥️️️" )
	end
end

function bc ( bz )
	if sj ~= nil then
		_ENV [ bz ] = sj
	else
		gg.toast ( "无数据" )
	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.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 )
				end
			end
			if xgjg == true then
				gg.toast ( qmnb [ 2 ] [ "name" ] .."开启成功,共修改" ..xgsl .."条数据" )
			else
				gg.toast ( qmnb [ 2 ] [ "name" ] .."开启失败" )
			end
		end
	end
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function readWrite(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] 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=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=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 local t,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "\n已修改"..tg_.."条数据" or "" th=(th_) and "\n已获取"..th_.."条数据" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.alert("\n"..Name.."搜索成功!\n偏移到"..#data.."条数据"..tg..th) tg_,th_=nil,nil else gg.toast("\n"..Name.."开启失败",false) return false end else gg.toast(Name.."开启失败") return false end end

function Fs3Fs4(Fs1, Fs2, Fs3, Fs4, Fs5) gg.clearResults() gg.setRanges(Fs2) gg.setVisible(false) gg.searchNumber(Fs3[1][1], Fs3[1][3]) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Fs3[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Fs3 do local tmp = {} local offset = Fs3[k][2] - base local num = Fs3[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = Fs3[k][3] 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(Fs1..'\n搜索到{'..#data..'}条数据') local t = {} local base = Fs3[1][2] if Fs5 == '' and Fs5 > 0 and Fs5 < #data then Fs5 = Fs5 else Fs5 = #data end for i=1, Fs5 do for k, w in ipairs(Fs4) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Fs1..'️\n已修改{'..#t..'}条数据') else gg.toast(Fs1..'\n数据搜索失败', false) return false end else gg.toast(Fs1..'\n数据修改失败', false) return false end end

function search(ss,lx,nc,dz1,dz2) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,536870912,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end 
function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end 
function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast("无数据") end end function BaAdd(add) t=gg.getValues({[1]={address=add,flags=4}}) return t[1].value&0xFFFFFFFF end function set(dz,xg,lx,dj) if dj=="true" then gg.addListItems({{address=dz,flags=lx,value=xg,freeze=true}}) else gg.setValues({{address=dz,flags=lx,value=xg}}) end gg.toast("已修改完成~") end

function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
 ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end
function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
	data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end

function Get_Search(fname)
local function getRanges()
	local ranges = {}
	local t = gg.getRangesList('^/data/*.so*$')
	for i, v in pairs(t) do
		if v.type:sub(2, 2) == 'w' then
			table.insert(ranges, v)
		end
	end
	return ranges
end
fname=fname or {}
local m=getRanges()
local many={}
if "table"==type(fname) then--首信息1
    for i in pairs(m) do
        local p=m[i].internalName:match("^.*/(.+)")
        if p==fname[1] and m[i].state==fname[2] then
            many={state=m[i].state,start=m[i].start}
            break
        end
    end
elseif "string"==type(fname) then
    if "slow"==fname then--全信息
        for i=1,#m do
            local p=m[i].internalName:match("^.*/(.+)")
            many[i]={name=p,state=m[i].state,start=m[i].start}
        end
    elseif "quick"==fname then--尾信息
        for i=1,#m do
            local p=m[i].internalName:match("^.*/(.+)")
            many[p]={state=m[i].state,start=m[i].start}
        end
    else
        for i=1,#m do--首信息2
            local p=m[i].internalName:match("^.*/(.+)")
            if p==fname then
                many={state=m[i].state,start=m[i].start}
                break
            end
        end
        if AddrInfoLen(many)~=2 then
            return false
        end
    end
else
    error("填写'quick'或者'slow'或者文件名或者{文件名,状态}")
end
return many
end
function Get_Address(Head,Offset,Flag)
    local tinfom=gg.getTargetInfo()
    Flag=Flag or 32
    local t={}
    local Addr
    if Head then
        t[1]={address=Head+Offset[1],flags=Flag}
        if not (#Offset==1) then
            for i=2,#Offset do
                local place=gg.getValues(t)
                t={}
                if not tinfom.x64 then
                    place[1].value=place[1].value & 0xFFFFFFFF
                end
                t[1]={address=place[1].value+Offset[i],flags=Flag}
            end
        end
        Addr=t[1].address
    end
    return string.format("0x%X",Addr)
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 
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 
return false 
end 
else 
return false 
end
end

JFYx32 = function ( Address , Value )
	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
	if Somod == nil then
		gg.alert ( '请重新选择地铁跑酷进程' )
	else
		local So = Somod.start
		local Add = So + Address
		gg.processPause ( )
		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "~A BX	 LR" } } )
		gg.processResume ( )
	end
end

function readPointer(name, offset, i)
	local re = gg.getRangesList(name)
	local x64 = gg.getTargetInfo().x64
	local va = {[true] = 32, [false] = 4}
	if re[i or 1] then
		local addr = re[i or 1].start + offset[1]
		for i = 2, #offset do
			addr = gg.getValues({{address = addr, flags = va[x64]}})
			if not x64 then
				addr[1].value = addr[1].value & 0xFFFFFFFF
			end
			addr = addr[1].value + offset[i]
		end
		return addr
	end
end

function gg.edits(addr, Table, name)
	local Table1 = {{}, {}}
	for k, v in ipairs(Table) do
		local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]}
		if v[4] then
			Table1[2][#Table1[2] + 1] = value
		else
			Table1[1][#Table1[1] + 1] = value
		end
	end
	gg.addListItems(Table1[2])
	gg.setValues(Table1[1])
end
local json = json
ms = { }
function setvalue ( add , value , falgs)
qx={} qx[#qx+1]={} qx[#qx].value=value qx[#qx].flags=falgs  qx[#qx].freeze=true qx[#qx].address=add gg.addListItems (qx)
end

il2cpp_so_x32 = function ( Address , Value )
	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
	if Somod == nil then
		gg.alert ( '请重新选择地铁跑酷进程' )
	else
		local So = Somod.start
		local Add = So + Address
		gg.processPause ( )
		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "~A BX	 LR" } } )
		gg.processResume ( )
	end
end

ms = { }
function setvalue ( add , value , falgs , dj )
	local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
	if dj == true then
		WY [ 1 ].freeze = true gg.addListItems ( WY )
	else
		gg.setValues ( WY )
	end
end

function ms.ss ( num , ty , nc )
	local GGNUMBER_1 = num
	local GGNUMBER_2 = ty
	local GGNUMBER_3 = false
	local GGNUMBER_4 = gg.SIGN_EQUAL
	local GGNUMBER_5 = 0x3000000
	local GGNUMBER_6 = 0xFFFFFFFF
	local GGNUMBER_7 = 0
	gg.clearResults ( )
	gg.setRanges ( nc )
	gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
	Result = gg.getResults ( gg.getResultCount ( ) )
end

function ms.py ( num , py , ty )
	if ( Result and # Result ~= 0 ) then
		t = { }
		for i , v in ipairs ( Result ) do
			t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
		end
		t = gg.getValues ( t )
		for i , v in ipairs ( t ) do
			if v.value ~= num then
				Result [ i ] = nil
			end
		end
		local MS = { }
		for i , v in pairs ( Result ) do
			MS [ # MS + 1 ] = v
		end
		Result = MS
	end
end

function ms.bc ( )
data = { }
	if Result == nil or # Result == 0 then
		gg.alert ( "开启失败" )
	else
		for i , v in pairs ( Result ) do
			data [ # data + 1 ] = v.address
		end
	end
	Result = nil
end

function ms.edit ( nn , off , ty , dj )
	if ( Result ) then
		ms.bc ( )
	end
	if # data > 0 then
		for i , v in ipairs ( data ) do
			setvalue ( v + off , nn , ty , dj or false )
		end
		gg.toast ( Name.."成功" )
	end
end

function py1(value,lx,py) gg.setVisible(false) if #sj~=nil then  z1={} z2={}  for i=1,#sj do  z1[1]={}  z1[1].address=sj[i].address+py  z1[1].flags=lx  z1=gg.getValues(z1)  if z1[1].value==value then  z2[#z2+1]={}  z2[#z2]=sj[i]  end end  sj=z2  z1={} z2={}  gg.toast("偏移了 "..#sj.." 个数据")  else  gg.toast("没有搜索数据")  end  end

function S_Pointer(t_So, t_Offset, _bit)
	local function getRanges()
		local ranges = {}
		local t = gg.getRangesList('^/data/*.so*$')
		for i, v in pairs(t) do
			if v.type:sub(2, 2) == 'w' then
				table.insert(ranges, v)
			end
		end
		return ranges
	end
	local function Get_Address(N_So, Offset, ti_bit)
		local ti = gg.getTargetInfo()
		local S_list = getRanges()
		local t = {}
		local _t
		local _S = nil
		if ti_bit then
			_t = 32
		else
			_t = 4
		end
		for i in pairs(S_list) do
			local _N = S_list[i].internalName:gsub('^.*/', '')
			if N_So[1] == _N and N_So[2] == S_list[i].state then
				_S = S_list[i]
				break
			end
		end
		if _S then
			t[#t + 1] = {}
			t[#t].address = _S.start + Offset[1]
			t[#t].flags = _t
			if #Offset ~= 1 then
				for i = 2, #Offset do
					local S = gg.getValues(t)
					t = {}
					for _ in pairs(S) do
						if not ti.x64 then
							S[_].value = S[_].value & 0xFFFFFFFF
						end
						t[#t + 1] = {}
						t[#t].address = S[_].value + Offset[i]
						t[#t].flags = _t
					end
				end
			end
			_S = t[#t].address
		end
		return _S
	end
	local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
	return _A
end

function SearchWrite(Search, Write, Type, Name)
    local time=os.clock()
    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)
           local time=string.sub(os.clock()-time,0,5)
          gg.toast("开启成功 已修改:"..#t.."条数据 本次启动耗时:"..time.."秒")
          gg.addListItems(t)
        else
            gg.toast("开启失败未搜索到任何数据", false)
            return false
        end
    else
        gg.toast("开启失败未搜索到任何数据")
        return false
    end
end 

function WT(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
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 
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 
return false 
end 
else 
return false 
end 
end

 j={}
xgz={}
ZY='Main'
gg.clearResults()  sj={}  xgz={} function search(ss,lx,nc,dz1,dz2)  if ss~=nil then if lx~=nil then  if nc==nil then nc=32 end  gg.setRanges(nc)  if dz1==nil then dz1="-1" end  if dz2==nil then dz1="0" end  gg.searchNumber(ss,lx,false,gg.SIGN_EQUAL,dz1,dz2)  sl=gg.getResultCount()  if sl~=0 then  sj=gg.getResults(sl)  gg.toast("??搜索到 "..sl.." 个结果??")  gg.clearResults()  else  gg.toast("?未搜索到结果?")  end  else  gg.toast("?无搜索值类型?")  end  else  gg.toast("?无需搜索值?")  end  end  function py1(value,lx,py)  if #sj~=nil then  z1={} z2={}  for i=1,#sj do  z1[1]={}  z1[1].address=sj[i].address+py  z1[1].flags=lx  z1=gg.getValues(z1)  if z1[1].value==value then  z2[#z2+1]={}  z2[#z2]=sj[i]  end end  sj=z2  z1={} z2={}  gg.toast("?共偏移 "..#sj.." 个数据?")  else  gg.toast("?没有搜索数据?")  end  end  function py2(value,lx,py)  if #sj~=nil then  z1={} z2={}  for i=1,#sj do  z1[1]={}  z1[1].address=sj[i].address+py  z1[1].flags=lx  z1=gg.getValues(z1)  if z1[1].value~=value then  z2[#z2+1]={}  z2[#z2]=sj[i]  end end  sj=z2  z1={} z2={}  gg.toast("?共偏移 "..#sj.." 个数据?")  else  gg.toast("?没有搜索数据?")  end  end  function xg1(value,lx,py,dj)  if #sj~=nil then  z={}  for i=1,#sj do  z[i]={}  z[i].address=sj[i].address+py  z[i].flags=lx  z[i].value=value  if dj==true then z[i].freeze=true end  end  if dj==true then  gg.addListItems(z)  else  gg.clearList()  gg.setValues(z)  end  gg.toast("??共修改 "..#z.." 个数据??")  else  gg.toast("?没有搜索数据?")  end  end  function xg2(bz,value,lx,py,dj)  if #bz~=nil then  z={}  for i=1,#bz do  z[i]={}  z[i].address=bz[i].address+py  z[i].flags=lx  z[i].value=value  if dj==true then z[i].freeze=true end  end  if dj==true then  gg.addListItems(z)  else  gg.clearList()  gg.setValues(z)  end  gg.toast("??共修改 "..#z.." 个数据??")  else  gg.toast("??没有搜索数据??")  end  end  function bc(bz)  if sj~=nil then  _ENV[bz]=sj  else  gg.toast("?无数据?")  end
end

function search(ss,lx,nc,dz1,dz2)  gg.setVisible(false) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,536870912,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end


function editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."开启失败")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.."开启成功")else gg.toast(qmnbn.."开启失败")end end end
 function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) if gg.searchNumber(qmnb[3]["value"],qmnb[3]["type"],false,gg.SIGN_EQUAL,0,-1)~=true then gg.searchAddress(qmnb[3]["value"],-1,qmnb[3]["type"]) end if gg.getResultCount()==0 then gg.toast(qmnb[2]["name"].."开启失败")return end szxx=gg.getResults(gg.getResultCount()) szpd={} a=0 for i=4,#qmnb do for s=1,#szxx do if szpd[s]~="false" then if gg.getValues({{address=szxx[s].address+qmnb[i]["offset"],flags=qmnb[i]["type"]}})[1].value+0~=qmnb[i]["lv"]then szpd[s]="false" a=a+1 end end end end if a==#szxx then gg.toast(qmnb[2]["name"].."开启失败")return end b=0 t={} for x=1,#qmxg do if qmxg[x]["freeze"]==true then a=1 end for i=1,#szxx do if szpd[i]==nil then b=b+1 table.insert(t,{address=szxx[i].address+qmxg[x]["offset"],flags=qmxg[x]["type"],freeze=qmxg[x]["freeze"],value=qmxg[x]["value"]}) end end end gg.setValues(t) gg.addListItems(t) gg.clearResults() if a~=1 then gg.clearList()else a=nil end gg.toast(qmnb[2]["name"].."开启成功,共修改了"..b.."条数据") end

qmnb = function(daarr)
local array = {}
for i = 1, #daarr["搜索数组"] do
local data = {["lv"] =daarr["搜索数组"][i][1], ["offset"] = daarr["搜索数组"][i][2], ["type"] = daarr["搜索类型"]}
table.insert(array, i, data)
end
local isok, data = app.memorysearch(daarr["搜索内存"], array)
if isok then
for i = 1, #data do
for x = 1, #daarr["修改数组"] do
app.memorywrite(data[i] + daarr["修改数组"][x][2], daarr["搜索类型"], daarr["修改数组"][x][1])
end
end
gg.toast(daarr["功能名称"] .. "共修改" .. #data * #daarr["修改数组"] .. "条数据")
else
gg.toast(daarr["功能名称"] .. "开启失败")
end
end



function xg1(value,lx,py,dj) if sj~=nil and #sj>0 then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx if value == nil then value = readValue(z[i].address, lx) end z[i].value= value z[i].freeze = dj and true or false end if dj == true or dj == false then gg.addListItems(z) else gg.setValues(z) end gg.toast('') else gg.toast('') end end
function xg2(bz,value,lx,py,dj)  if #bz~=nil then  z={}  for i=1,#bz do  z[i]={}  z[i].address=bz[i].address+py  z[i].flags=lx  z[i].value=value  if dj==true then z[i].freeze=true end  end  if dj==true then  gg.addListItems(z)  else  gg.clearList()  gg.setValues(z)  end  gg.toast('')  else  gg.toast('')  end  end  function bc(bz)  if sj~=nil then  _ENV[bz]=sj  else  gg.toast('')  end  end  


Qr_UIP2FazG='Main'
gg.clearResults() sj={} xgz={} function search(ss,lx,nc,dz1,dz2) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,gg.SIGN_EQUAL,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast("无数据") end end function BaAdd(add) if gg.getTargetInfo().x64==true then t=gg.getValues({[1]={address=add,flags=32}}) return t[1].value else t=gg.getValues({[1]={address=add,flags=4}}) return t[1].value&0xFFFFFFFF end end function set(dz,xg,lx,dj) if dj=="true" then gg.addListItems({{address=dz,flags=lx,value=xg,freeze=true}}) else gg.setValues({{address=dz,flags=lx,value=xg}}) end gg.toast("已修改完成~") end

DWORD=gg.TYPE_DWORD  DOUBLE=gg.TYPE_DOUBLE  FLOAT=gg.TYPE_FLOAT WORD=gg.TYPE_WORD BYTE=gg.TYPE_BYTE XOR=gg.TYPE_XOR QWORD=gg.TYPE_QWORD

D=gg.TYPE_DWORD  E=gg.TYPE_DOUBLE  F=gg.TYPE_FLOAT W=gg.TYPE_WORD B=gg.TYPE_BYTE X=gg.TYPE_XOR Q=gg.TYPE_QWORD
-------------不懂勿动------------
悬浮窗文字="仙神全防"

菜单名称={--菜单名
	--可删可减没有限制
	{"公告","仙神"},--1
	{"防封","防封专区"},--3
	{"刷号","刷号专区"},--4
	{"竞赛","竞赛专区"},--6
    {"音乐","音乐专区"},--5
	{"其他","其他功能"},--8

}


悬浮窗图标 = "https://pan.axxpan.com/api/v3/file/get/49586/Cache_49147bc9de5b9e98.jpg?sign=udksJYJsYalvr5RwBDgawchNiaeUW7xpl2f3oru6txk%3D%3A0"
神极星 ="https://pan.axxpan.com/api/v3/file/get/49586/Cache_49147bc9de5b9e98.jpg?sign=udksJYJsYalvr5RwBDgawchNiaeUW7xpl2f3oru6txk%3D%3A0"


SJX.menu(
    
	
	{{	
	SJX.box({"必须看[点击展开]",---box示例 可以删掉
SJX.text("神罚收徒3r把我的毕生所学交给你,帮忙做脚本1.5r","#00FFEC","12sp"),
     }),
SJX.button("选择进程",
function ()
gg.setConfig("隐藏辅助", 23)
gg.setConfig("运行守护", 2)
gg.setConfig("冻结间隔", 0)
gg.setProcessX()
end,
function ()
end),
SJX.box({"必看[点击展开]",---box示例 可以删掉
SJX.text("仙神官方群916011224")
     }),
SJX.button("练习扣字",
function()
function y(k)
nb=""
zm="qwertyuopasdfghjkzxcvbnm"
for i=1,k do
sj=math.random(1,#zm)
sc=zm:sub(sj,sj)
s2=math.random(1,2)
if s2==2 then 
sc=string.upper(sc)
end
nb=nb..sc
end
return nb
end

yt=gg.prompt({"输入开始难度","输入多少关卡","是否开始倒计时","倒计时秒数"},
{1,0,true,999999999},
{"text","text","checkbox","text"})
if yt==nil then os.Exit()  end

for g=yt[1],yt[1]+yt[2] do
nr=y(g)
sj=os.time()+0
ui=gg.prompt({"请在输入栏里面输入:"..nr},{},{"text"})
if ui==nil then gg.alert("闯关失败\n\n最好成绩:"..g.."关") Main0()  end
if sj<os.time()-yt[4] and yt[3] then gg.alert("时间到期:已经过去"..os.time()-sj.."秒\n\n闯关失败\n\n最好成绩:"..g.."关") Main0()  end
if ui[1]~=nr then gg.alert("闯关失败\n\n最好成绩:"..g.."关") Main0()  end
gg.toast("第"..g.."关闯关成功")
end

if gg.alert("闯关成功","超级简单")==2 then 
bb=""
for hl=1,9 do
 for ll=1,hl do
  bb=bb..hl.."x"..ll.."="..hl*ll.." "
end
bb=bb.."\n"
end
print(bb)
end
end,
function()
end),
SJX.text("公告","#dd35EAE4","15sp"),
SJX.text("1.为什么我点击了功能却没有效果?\n--回答:请您点击'选择进程'后重新使用功能哦~\n2.为什么我老是闪退?\n--回答:您可以使用'麦当劳框架'等具有防闪性能的框架哦~\n3.刷完后我应该怎么做?\n--回答:您可以点击'保存数据'后立马退出科技哦~\n4.为什么我刷完号之后道具赛被封了?\n--回答:您可能使用的是全火类似的功能,建议你一个一个的弄这样可以避免刷完后道具赛被封掉了哦~(注:人物和滑板如果全部满了是肯定封号的)~\n5.为什么我…\n--回答:…\n\n\n感谢您对诗雅的支持哦~","#00FFEC","12sp"),
            SJX.check({---一个check只能放3个多了站不下
                {
					"加入我们",
					function()
gg.QQgroup("916011224")
					end,
					
				    function()
				    
				    end
				},
				}),
			
					
	},{
	
	SJX.switch("独家防闪",
function()
function CHENYANG(Address,AFV)
   local address=0
   for index,offset in ipairs(Address)do
      if index==1 then
         address=offset
      else
         address=gg.getValues({{address=address+offset,flags=4}})[1].value
      end
   end
   local Value,Freeze={},{}
   for index,value in ipairs(AFV)do
      local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true}
      if value[4]then
         Freeze[#Freeze+1]=VALUE
      else
         Value[#Value+1]=VALUE
      end
   end
   gg.setValues(Value)
   gg.addListItems(Freeze)
end
CHENYANG(
{gg.getRangesList('libil2cpp.so')[2].start},
{
{-1,4,0x17AB10,true},
{-1,4,0x17AB18,true},
{-1,4,0x17AB20,true},
{-1,4,0x17AB28,true},
{-1,4,0x17AB30,true},
})
gg.clearResults()
	gg.setRanges(8)
	gg.searchNumber("778923875", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
	gg.searchNumber("778923875", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
	gg.getResults(100)
	gg.editAll("-9999", gg.TYPE_DWORD)
gg.alert("独家防闪成功")
string.toMusic('独家防闪成功') 
end,
function()
end),
SJX.switch("去除封号弹窗",
function()
function byXa(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
   开启失败


   失败原因:进程存储太小!
   
   
   解决方案:刷新进程后重启开启
]])
end


byXa(0x25de0a8,4,"000000E3r")
gg.alert("去除封号弹窗成功")
string.toMusic('去除封号弹窗成功')
end,
					function()
						
					end),
SJX.switch("过新手教程",
function()
function CYC(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
   开启失败


   失败原因:进程存储太小!
   
   
   解决方案:刷新进程后重启开启
]])
end
CYC(0x89109c,4,"~A MOV	 R0, #1")--秋情抓取
gg.alert("新手教程已跳跃,直接结算即可")
string.toMusic('新手教程已跳跃,直接结算即可')
end,
					function()
						
					end),
SJX.text("防封区域","#FFFFFF","20sp"),
SJX.switch("防环境\n登录界面必开",
function ()
function S_Pointer(t_So, t_Offset, _bit)
	local function getRanges()
		local ranges = {}
		local t = gg.getRangesList('^/data/*.so*$')
		for i, v in pairs(t) do
			if v.type:sub(2, 2) == 'w' then
				table.insert(ranges, v)
			end
		end
		return ranges
	end
	local function Get_Address(N_So, Offset, ti_bit)
		local ti = gg.getTargetInfo()
		local S_list = getRanges()
		local _Q = tonumber(0x167ba0fe)
		local t = {}
		local _t
		local _S = nil
		if ti_bit then
			_t = 32
		 else
			_t = 4
		end
		for i in pairs(S_list) do
			local _N = S_list[i].internalName:gsub('^.*/', '')
			if N_So[1] == _N and N_So[2] == S_list[i].state then
				_S = S_list[i]
				break
			end
		end
		if _S then
			t[#t + 1] = {}
			t[#t].address = _S.start + Offset[1]
			t[#t].flags = _t
			if #Offset ~= 1 then
				for i = 2, #Offset do
					local S = gg.getValues(t)
					t = {}
					for _ in pairs(S) do
						if not ti.x64 then
							S[_].value = S[_].value & 0xFFFFFFFF
						end
						t[#t + 1] = {}
						t[#t].address = S[_].value + Offset[i]
						t[#t].flags = _t
					end
				end
			end
			_S = t[#t].address
			
		end
		return _S
	end
	local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
	return _A
end



local t = {"libtersafe2.so", "Cd"}
local tt = {0x3FDF8}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})

local t = {"libtersafe2.so", "Cd"}
local tt = {0x3FE64}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})

local t = {"libtersafe2.so", "Cd"}
local tt = {0x3FE6C}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})

local t = {"libtersafe2.so", "Cd"}
local tt = {0x3FE74}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})

local t = {"libtersafe2.so", "Cd"}
local tt = {0x3FE80}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})

local t = {"libtersafe2.so", "Cd"}
local tt = {0x3FE84}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})

local t = {"libtersafe2.so", "Cd"}
local tt = {0x3FE88}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})

local t = {"libtersafe2.so", "Cd"}
local tt = {0x3FE8C}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})

local t = {"libtersafe2.so", "Cd"}
local tt = {0x3FF94}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})

local t = {"libtersafe2.so", "Cd"}
local tt = {0x3FFD8}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})

local gg=gg
local t={"libtersafe2.so:bss", "Cb"}
local tt={0x49FC}
local ttt=S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})
gg.alert("防环境成功")
string.toMusic('防环境成功')
end,			
function ()
end),		
SJX.switch("cb防",
function()
--libBugly-ext.so + 0x57C
local addr = readPointer("libBugly-ext.so", {1404}, 3)
gg.edits(addr, {{0, 4, 0, true}, {0, 4, 0, true}})

--libtersafe2.so:bss + 0x1678
local addr = readPointer("libtersafe2.so:bss", {5752}, 1)
gg.edits(addr, {{0, 4, 0, true}, {0, 4, 0, true}})

--libtersafe2.so:bss + 0x173C
local addr = readPointer("libtersafe2.so:bss", {5948}, 1)
gg.edits(addr, {{0, 4, 0, true}, {0, 4, 0, true}})

--libtersafe2.so:bss + 0x1748
local addr = readPointer("libtersafe2.so:bss", {5960}, 1)
gg.edits(addr, {{0, 4, 0, true}, {0, 4, 0, true}})
 gg.alert("成功")
string.toMusic('cb防成功')
end,
					function ()
					end),
					SJX.switch("独家全防\n登录界面必开",
function()
function S_Pointer(t_So, t_Offset, _bit)
	local function getRanges()
		local ranges = {}
		local t = gg.getRangesList('^/data/*.so*$')
		for i, v in pairs(t) do
			if v.type:sub(2, 2) == 'w' then
				table.insert(ranges, v)
			end
		end
		return ranges
	end
	local function Get_Address(N_So, Offset, ti_bit)
		local ti = gg.getTargetInfo()
		local S_list = getRanges()
		local t = {}
		local _t
		local _S = nil
		if ti_bit then
			_t = 32
		else
			_t = 4
		end
		for i in pairs(S_list) do
			local _N = S_list[i].internalName:gsub('^.*/', '')
			if N_So[1] == _N and N_So[2] == S_list[i].state then
				_S = S_list[i]
				break
			end
		end
		if _S then
			t[#t + 1] = {}
			t[#t].address = _S.start + Offset[1]
			t[#t].flags = _t
			if #Offset ~= 1 then
				for i = 2, #Offset do
					local S = gg.getValues(t)
					t = {}
					for _ in pairs(S) do
						if not ti.x64 then
							S[_].value = S[_].value & 0xFFFFFFFF
						end
						t[#t + 1] = {}
						t[#t].address = S[_].value + Offset[i]
						t[#t].flags = _t
					end
				end
			end
			_S = t[#t].address
		end
		return _S
	end
	local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
	return _A
end
	
	local t={"libtersafe2.so:bss", "Cb"}
	local tt={0x37C8}
	local ttt=S_Pointer(t, tt)
	gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})
    
	local t={"libtersafe2.so:bss", "Cb"}
	local tt={0x49FC}
	local ttt=S_Pointer(t, tt)
	gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})
	
    local t = {"libtersafe2.so:bss", "Cb"}
    local tt = {0x37D0}
    local ttt = S_Pointer(t, tt)
    gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})
 gg.alert("独家全防第一套成功")
string.toMusic('独家全第一套防成功')
end,
					function()
						
					end),
SJX.switch("独家全防二\n登录界面必开",
function()
local gg=gg
local t={"libtersafe2.so:bss", "Cb"}
local tt={0x49FC}
local ttt=S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}})
gg.clearResults()
gg.setRanges(8)
gg.searchNumber("778923875", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.searchNumber("778923875", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(100)
gg.editAll("-9999", gg.TYPE_DWORD)
 gg.alert("独家全防第二套成功")
string.toMusic('独家全第二套防成功')
end,
					function()
						
					end),
	
		},{
		
		SJX.text("刷号配置(不建议用装扮全火)","#dd35EAE4","15sp"),
            SJX.check({---一个check只能放3个多了站不下
                {
					"装扮全火",
					function()
gg.setValues({{address=gg.getRangesList("il2cpp.so")[1].start+0x887e24,flags=4,value="~A MOV	 R0, #1"}})
gg.setValues({{address=gg.getRangesList("il2cpp.so")[1].start+0x887e24+4,flags=4,value="~A BX	 LR"}})
toMusic('人物全解开启成功')
					
gg.setValues({{address=gg.getRangesList("il2cpp.so")[1].start+0x888e24,flags=4,value="~A MOV	 R0, #1"}})
gg.setValues({{address=gg.getRangesList("il2cpp.so")[1].start+0x888e24+4,flags=4,value="~A BX	 LR"}})
toMusic('滑板全解开启成功')
					
gg.setValues({{address=gg.getRangesList("il2cpp.so")[1].start+0x8b1a4c,flags=4,value="~A MOV	 R0, #1"}})
gg.setValues({{address=gg.getRangesList("il2cpp.so")[1].start+0x8b1a4c+4,flags=4,value="~A BX	 LR"}})
toMusic('背饰全解开启成功')
					end,
					
				    function()
				    
				    end
				},
				{
					"荣耀之路",
					function()
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
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
return false
end
else
return false
end
end																		
gg.setRanges(32)																	
local dataType = 4
local tb1 = {{257, 0x0}, {1, -0x28}, {1, -0x34}, {1, -0x3C}}
local tb2 = {{0, -0x20},{0, -0x2C},{1800, -0x30, true}}
SearchWrite(tb1, tb2, dataType)
	string.toMusic('荣耀之路全部解锁')
gg.alert("隐藏内容全部调出")
					end,
					
				    function()
				    
				    end
				},
				}),
				SJX.text("刷号区域","#FFFFFF","20sp"),--空文本可用于换行,sp调整距离
		 	 SJX.button("备份数据",
	function ()
function YY(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end

YY(0x8ac99b14,4,'~A MOV R0, #1')
string.toMusic("备份数据开启成功")		
end,
"http://vip.wskig.top/view.php/d681b31440ce242545d56508faaa43f7.png"),
SJX.button("十抽宝物",
function ()	
function CY(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
   开启失败


   失败原因:进程存储太小!
   
   
   解决方案:刷新进程后重启开启
]])
end

CY(0x267ee4c,4,"FA0500EAr")
gg.alert("十抽宝物开启成功")
ring.toMusic('十抽宝物开启成功')
end,
"http://vip.wskig.top/view.php/154c26758253cc0c485c8ef02ac88623.png"),

SJX.button("十抽全饰",
function ()
local il2cppmod=gg.getRangesList('il2cpp.so')

                gg.setValues({{address=il2cppmod[1].start+0x267ee4c,flags=4,value='~A B -0x683CC4'}})
                gg.setValues({{address=il2cppmod[1].start+0x267ee4c+4,flags=4,value='~A bx lr'}})
gg.alert(os.date'️十抽全饰开启成功') 
string.toMusic('十抽全饰开启成功')
end,
"http://vip.wskig.top/view.php/4258adfc9519780898945b37e7f36ea3.png"),

SJX.button("荣耀之路",
function ()
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
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
return false
end
else
return false
end
end																		
gg.setRanges(32)																	
local dataType = 4
local tb1 = {{257, 0x0}, {1, -0x28}, {1, -0x34}, {1, -0x3C}}
local tb2 = {{0, -0x20},{0, -0x2C},{1800, -0x30, true}}
SearchWrite(tb1, tb2, dataType)
	string.toMusic('荣耀之路全部解锁')
gg.alert("隐藏内容全部调出")
end,
"http://vip.wskig.top/view.php/fa738b59960735841a275185689c3512.png"),

SJX.text("替换机制","#FFFFFF","20sp"),--空文本可用于换行,sp调整距离
SJX.radio({--单选表可无限添加
			
				{
					"人物",
					function()
Bynq(0x1865844,4,"~A MOV R0, #10")
	end}, 
	{
					"人物",
					function()
Bynq(0x1865844,4,"~A MOV R0, #10")
					end},
					
				{"滑板",
					function()
Bynq(0x1865844,4,"~A MOV R0, #12")
					end}, 
                  {"背饰",
					function()
Bynq(0x1865844,4,"~A MOV R0, #14")
					end
				}, {
				"头像",
					function()
Bynq(0x1865844,4,"~A MOV R0, #9")
					end
}, 
			}),

	
			SJX.edit("输入代码"),--传入的作为提示也作为他的ID
			SJX.button("锁定",
				function()
	string.toMusic("替换开启成功")
	Bynq(0x18659f8,4,"~A MOV R0, #"..SJX.getedit("输入代码").."")
	Bynq(0x1865bac,4,"~A MOV R0, #"..SJX.getedit("输入代码").."")
	Bynq(0x1865d60,4,"~A MOV R0, #"..SJX.getedit("输入代码").."")
	Bynq(0x1865e38,4,"~A MOV R0, #"..SJX.getedit("输入代码").."")
				--注意返回字符串 如果计算需要tonumber
				end),
 
 SJX.box({"其他刷号功能[点击展开]",---box示例 可以删掉
 SJX.button("修改炫跑卡等级",
function ()
function LY(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end


LY(0x8b2a94,4,"~A MOV R0, #"..gg.prompt({"请输入修改等级"},{""},{"修改等级"})[1])
end,
					function ()
					end),
					SJX.button("修改金币",
function()
function ByHh(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end


ByHh(0x8739d8,4,"~A MOVW R0, #"..gg.prompt({"请输入你想要改的金币 so写法不会封号"},{""},{"so写法不会封号"})[1])
gg.alert("修改成功")
print("修改成功")
end,
					function ()
					end),
					SJX.button("修改钥匙",
function ()
function LY(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end


LY(0x873d84,4,"~A MOVW R0, #"..gg.prompt({"请输入修改钥匙"},{""},{"修改钥匙"})[1])
---林云制作 删字没m
end,
					function ()
					end),
				     }),	
           SJX.box({"刷号功能[点击展开]",---box示例 可以删掉

SJX.switch("人物",
function()
function CY(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
   开启失败


   失败原因:进程存储太小!
   
   
   解决方案:刷新进程后重启开启
]])
end

CY(0x887e24,4,"0100A0E3r")
					gg.alert("获取成功")
end,
					function ()
					end),
SJX.switch("滑板",
function()
function CY(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
   开启失败


   失败原因:进程存储太小!
   
   
   解决方案:刷新进程后重启开启
]])
end

CY(0x888e24,4,"0100A0E3r")
gg.alert("获取成功")
					end,
					function ()
					end),
					SJX.switch("背饰",
function()
function CY(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
   开启失败


   失败原因:进程存储太小!
   
   
   解决方案:刷新进程后重启开启
]])
end

CY(0x8b1a4c,4,"0100A0E3r")
					end,
					function ()
					end),
SJX.switch("皮肤",
					function()
function CY(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
   开启失败


   失败原因:进程存储太小!
   
   
   解决方案:刷新进程后重启开启
]])
end

CY(0x87a938,4,"~A MOV R0, #1")
		string.toMusic("皮肤开启成功")
					end,
					function ()
					end),
		SJX.switch("滑板技能",
					function()
		function LG(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end

LG(0x2173a38,4,'~A MOV R0, #1')
					end,
					function ()
					end),
SJX.switch("头像框",
					function()
function CYC(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end		
					
CYC(0x2cf3b98,4,"~A MOV	 R0, #1")--头像框
string.toMusic("头像框全解开启成功")
					end,
					function ()
					end),
	SJX.switch("跳过支付",	
					function()
So_X32 = function ( Address , Value )
	local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ]
	if Somod == nil then
		gg.alert ( '请重新选择地铁跑酷进程' )
	else
		local So = Somod.start
		local Add = So + Address
		gg.processPause ( )
		gg.setValues ( { { address = Add , flags = 4 , value = Value } } )
		gg.setValues ( { { address = Add + 4 , flags = 4 , value = "1EFF2FE1r" } } )
		gg.processResume ( )
	end
end
So_X32 ( 0xac8ac8 , "~A B	 +0x10314" )
		string.toMusic("跳过支付开启成功")			
					end,
					function ()
					end),
SJX.switch("超长名",
"超长名",
					function()
local il2cppmod=gg.getRangesList('il2cpp.so')
gg.setValues({{address=il2cppmod[1].start+0x268d2a8,flags=4,value='0100A0E3r'}})
gg.setValues({{address=il2cppmod[1].start+0x268d2a8+4,flags=4,value='~A BX LR'}})
gg.setValues({{address=il2cppmod[1].start+0x268d2a8,flags=4,value='~A B	 +0x00000148'}})
string.toMusic("超长名开启成功")		
						end,
					function ()
					end),
SJX.switch("等级修改",
					function()
CY = gg.prompt({'请输入需要的人物等级,改太高会进不去游戏\n推荐改520'},{[1]=520},{[1]='number'})[1]
if not CY then return end
CYC(0x8775f4,4,"~A MOVW	 R0, #"..CY.."")
string.toMusic("等级修改成功")		
					end,
					function ()
					end),
SJX.switch("十倍得分+微博",
					function()
function CYC(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end					
					
CYC(0x2ae0de4,4,"~A MOV	 R0, #1")--十倍得分
CYC(0x27fbb74,4,"~A MOV	 R0, #1")--微博
string.toMusic("修改成功")
end,
					function ()
					end),
     }),
		},{
		
	SJX.text("竞赛【诗҉雅҉】","#dd35EAE4","15sp"),
SJX.box({"道具赛功能",---box示例 可以删掉
SJX.switch("防至道具" ,
function()
wt( 0x27c2380 , "E3A00001h" )
string.toMusic("防至道具成功")
end),
SJX.switch("自动聚能" ,
function()
co = gg.prompt({"相机","校服","扇子","卫衣"}, {}, {'checkbox',"checkbox","checkbox","checkbox"})
if co == nil then Main() end
if co[1] == true then
        Name = "相机自动聚能"
		ms.ss ( "3210" , 4 , 32 )
		ms.py ( 1 , 4 , 4 )
		ms.py ( 1 , -4 , 4 )
		ms.edit ( 0 , 0x5c , 4 )
		ms.edit ( 0 , 0x50 , 4 )
		ms.edit ( 2 , 0x4c , 4 )
		ms.edit ( 0 , 0x74 , 4 )
		ms.edit ( 0 , 0x6c , 4 )
	    gg.alert("相机聚能成功")
         end
if co[2] == true then
        Name = "校服自动聚能"
		ms.ss ( "3110" , 4 , 32 )
		ms.py ( 1 , 4 , 4 )
		ms.py ( 1 , -4 , 4 )
		ms.edit ( 0 , 0x5c , 4 )
		ms.edit ( 0 , 0x50 , 4 )
		ms.edit ( 2 , 0x4c , 4 )
		ms.edit ( 0 , 0x74 , 4 )
		ms.edit ( 0 , 0x6c , 4 )
		gg.alert("校服聚能成功")
        end
if co[3] == true then
        gg.clearResults()
		Name = "扇子自动聚能"
		ms.ss ( "2910" , 4 , 32 )
		ms.py ( 1 , 4 , 4 )
		ms.py ( 1 , -4 , 4 )
		ms.edit ( 0 , 0x5c , 4 )
		ms.edit ( 0 , 0x50 , 4 )
		ms.edit ( 2 , 0x4c , 4 )
		ms.edit ( 0 , 0x74 , 4 )
		ms.edit ( 0 , 0x6c , 4 )
        gg.alert("扇子聚能成功")
        end
if co[4] == true then
       gg.clearResults()
		Name = "卫衣自动聚能"
		ms.ss ( "3310" , 4 , 32 )
		ms.py ( 1 , 4 , 4 )
		ms.py ( 1 , -4 , 4 )
		ms.edit ( 0 , 0x5c , 4 )
		ms.edit ( 0 , 0x50 , 4 )
		ms.edit ( 2 , 0x4c , 4 )
		ms.edit ( 0 , 0x74 , 4 )
		ms.edit ( 0 , 0x6c , 4 )
        gg.alert("卫衣聚能成功")
        end
end),
SJX.switch("滑板提速" ,
function()
WT(0xedd584,4,"~A MOV R0, #1")
string.toMusic("滑板提速至40")
end,
function()
WT(0xedd584,4,"~A MOV R0, #0")
string.toMusic("恢复成功")
end),
SJX.switch("滑板定人",
function()
search(300,16,32)
py1(1,4,0x4)
py1(1,4,-0x4)
xg1(0,4,0x34)
xg1(0,4,0x24)
xg1(0,16,0x20)
toMusic('滑板定人开启成功')
gg.alert("滑板定人开启成功")
end,
function()
search(300,16,32)
py1(1,4,0x4)
py1(1,4,-0x4)
xg1(0,4,0x34)
xg1(0,4,0x24)
xg1(2000,16,0x20)
gg.toast("关闭成功")
toMusic('关闭成功')
end),
SJX.switch("直接结算" ,
function()
gg.alert("打完一局就要关闭,下局再开启")
wt(0x9e62e8,'~A MOVW R0, #1')
wt(0x9e62e8+4,'~A BX LR')
gg.toast("开启成功")
end,
function()
wt(0x9e62e8,'~A MOVW R0, #0')
wt(0x9e62e8+4,'~A BX LR')
gg.toast("关闭成功")
end),
SJX.switch("时间结算",
function()
local a = gg.prompt({"延迟时间[50;60]"},{1},{"number",})
d=1000
gg.sleep(a[1]*d)
if a[1] then
wt(0x9e62e8,'~A MOVW R0, #1')
wt(0x9e62e8+4,'~A BX LR')
gg.toast("开启成功")
end
end,
function()
wt(0x9e62e8,'~A MOVW R0, #0')
wt(0x9e62e8+4,'~A BX LR')
gg.toast("关闭成功")
end,
function()
wt(0x1690218,'~A MOVW R0, #0')
wt(0x1690218+4,'~A BX LR')
gg.toast("关闭成功")
end),
SJX.switch("结算得分",
function()
XC = gg.prompt({'请输入需要修改的结算得分\n推荐改1000[1;9999]'},{[1]=1000},{[1]='number'})[1]
if not XC then return end
WT(0x2a3fe40,4,"~A MOVW	 R0, #"..XC.."")
toMusic("开启成功")
end),
SJX.switch("锁定道具",
function()
local j_1 = { "道具类型"..[[
			
æ—  = 0
导弹 = 1
蓝泡 = 2
护盾 = 4
香蕉 = 8
ç« é±¼ = 16
眩晕 = 32
绿泡 = 64
狗子 = 128
能量 = 256
乌龟 = 272
云雾 = 288
净化 = 320
磁铁 = 384
			]] }
local f_2
local y_3 = { "text" }
local Prompt = gg.prompt ( j_1 , f_2 , y_3 )
if Prompt == nil then
	return
else
	wt ( 0x9ccba8 , "~A MOV	 R0, #" ..Prompt [ 1 ] )
	gg.alert ("锁定道具成功")
	gg.toast("Done✔️")
end
toMusic('锁定道具开启成功')
end),
SJX.switch("滑板无限时长",
function()                
search(1300, 16, 32)
py1(1000, 16, 24)
py1(6000, 16, 96)
xg1(0, 16, 100)
xg1(0, 16, 84)
xg1(10000000, 16, 80)
gg.alert("滑板无限时长成功")
end,
function ()      
end),       
      }),      	
      SJX.box({"分数赛与无尽",---box示例 可以删掉
SJX.switch("分数成倍",
function()
XC = gg.prompt({'请输入需要修改的倍增分数\n推荐改250[1;800]'},{[1]=250},{[1]='number'})[1]
if not XC then return end
WT(0x878Da8,4,"~A MOVW	 R0, #"..XC.."")
string.toMusic("超级倍增开启成功") 
end),
SJX.switch("跳跃起飞",
function()
WT(0x2DF18BC,4,"~A BX LR")
string.toMusic("跳跃起飞开启成功")
end),
SJX.switch("速度起飞",
function()
ByWzProMax_More=gg.prompt({"自定义速度"},{"20"},{"number"})
if ByWzProMax_More==nil then Main0() end
local t = {"libunity.so:bss", "Cb"}
local tt = {0x91A0, 0x14, 0x3C, 0xEC}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = ByWzProMax_More[1], freeze = true}})
string.toMusic("速度起飞开启成功")   
end),
SJX.switch("第一视角",
function()
WT (0x1c3e750,4,"~A BX LR" )
string.toMusic("第一视角开启成功")   
end),
SJX.switch("美化人物",
function()
function CY(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function _error()
gg.alert([[
   开启失败


   失败原因:进程存储太小!
   
   
   解决方案:刷新进程后重启开启
]])
end

CQ = gg.prompt({''},{[1]=50},{[1]='number'})[1]
if not CQ then return end
CY(0x29e51ac,4,"~A MOV R0, #"..CQ.."")
string.toMusic("美化人物成功")   
end),
SJX.switch("上帝视角",
function()
local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x94FCC, 0x5C, 0x58, 0x10, 0x68}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x9D834, 0x5C, 0x108, 0x10, 0x68}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x9E360, 0x5C, 0x120, 0x10, 0x18}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0xA064C, 0x5C, 0x0, 0xD0, 0x68}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0xA2004, 0x5C, 0x0, 0x10, 0xB8}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0xA824C, 0x5C, 0x60, 0x10, 0x18}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0xAAB98, 0x5C, 0x100, 0x18, 0x108}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0xAAFD8, 0x5C, 0x0, 0x10, 0x68}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0xAB7DC, 0x5C, 0x110, 0xD4, 0x108}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0xABC90, 0x5C, 0xB0, 0x10, 0x68}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0xAC0A8, 0x5C, 0x80, 0x18, 0x108}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0xACB34, 0x5C, 0x78, 0xD0, 0x68}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0xACBE4, 0x5C, 0x0, 0x10, 0x18}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0xAD6B4, 0x5C, 0xF0, 0xD0, 0x68}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0xADA28, 0x5C, 0x0, 0x18, 0x108}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = -100, freeze = true}})

local t = {"libtersafe2.so", "Cd"}
local tt = {0x347F8, 0xFF, 0xDC, 0x104}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})

local t = {"libtersafe2.so", "Cd"}
local tt = {0x347F8, 0xFF, 0xDC, 0x10C}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})

local t = {"libil2cpp.so", "Cd"}
local tt = {0x1A1150, 0x5C, 0x0, 0x18, 0x104}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})

local t = {"libil2cpp.so", "Cd"}
local tt = {0x1A1150, 0x5C, 0x0, 0x18, 0x10C}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})

local t = {"libil2cpp.so", "Cd"}
local tt = {0x27FD78, 0x28, 0x74, 0x18, 0x104}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})

local t = {"libil2cpp.so", "Cd"}
local tt = {0x27FD78, 0x28, 0x74, 0x18, 0x10C}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x149DC, 0x28, 0x74, 0x18, 0x104}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x149DC, 0x28, 0x74, 0x18, 0x10C}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})

local t = {"libil2cpp.so:bss", "Cb"}
local tt = {0x94D28, 0x5C, 0xC0, 0x18, 0x104}
local ttt = S_Pointer(t, tt)
gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})
string.toMusic("上帝视角开启成功")   
end),
       }),         
		 	
	    },{
	  SJX.text("音乐区域","#FFFFFF","20sp"),--空文本可用于换行,sp调整距离
SJX.button("搜索音乐",
function()
WTYY()
end,


function ()
end),
SJX.switch("停止音乐",
function ()
 gg.toast("已停止音乐")
for i=1,100 do
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end
sp="关闭成功"
end,


function ()
end),
SJX.box({"推荐歌曲",---box示例 可以删掉
SJX.switch("Me",
function ()
 	gg.playMusic('https://music.163.com/song/media/outer/url?id=1990363532.mp3')
end,
function ()
end),
SJX.switch("旧金山",
function ()
gg.playMusic("http://music.163.com/song/media/outer/url?id=2024109979.mp3")       
end,


function ()
end),
SJX.switch("回忆拼好",
function ()
 	gg.playMusic("http://music.163.com/song/media/outer/url?id=1403318151.mp3")				
end,


function ()
end),
SJX.switch("爱人错过",
function ()
gg.playMusic("http://music.163.com/song/media/outer/url?id=1972445487")
end,


function ()
end),
SJX.switch("心如止水",
function ()
 	gg.playMusic("http://music.163.com/song/media/outer/url?id=1928002636.mp3")
end,


function ()
end),
SJX.switch("凭什么觉得 I LOVE YOU",
function ()
 	gg.playMusic("http://music.163.com/song/media/outer/url?id=2020310968.mp3")
end,


function ()
end),
SJX.switch("月亮之矢",
function ()
gg.playMusic("http://music.163.com/song/media/outer/url?id=419375250.mp3")		
end,


function ()
end),
SJX.switch("篝火旁",
function ()
 	gg.playMusic("http://music.163.com/song/media/outer/url?id=518725853.mp3")
end,


function ()
end),
SJX.switch("心做",
function ()
 	gg.playMusic('http://music.163.com/song/media/outer/url?id=2008921547.mp3')
end,

function ()
end),
SJX.switch("catch",
function ()
 	gg.playMusic('http://music.163.com/song/media/outer/url?id=26286214.mp3')
end,

SJX.switch("拉个勾说永远爱我",
function ()
 	gg.playMusic("http://music.163.com/song/media/outer/url?id=1969373959.mp3")
end,


function ()
end),

function ()
end),
SJX.switch("清空",
function ()
 	gg.playMusic("https://out.zxglife.top/view.php/8745c4542def50d29e8c9a63b330ed2a.mp3")
end,


function ()
end),
SJX.switch("压迫感",
function ()
 	gg.playMusic("https://out.zxglife.top/view.php/f923557b0bb36ab3968503202964db1b.mp3")
end,

SJX.switch("Walk",
function ()
gg.playMusic('http://music.163.com/song/media/outer/url?id=1873321491.mp3')
end,


function ()
end),

function ()
end),
SJX.switch("不问别离",
function ()
 	gg.playMusic("https://out.zxglife.top/view.php/c92f3eb063ae9ee9ff28018bb3b8f847.mp3")
end,


function ()
end),
SJX.switch("Maple暖枫-时落叶影",
function ()
 	gg.playMusic("https://out.zxglife.top/down.php/718197266dd3bad8fc0c59182beb6017.mid")
end,


function ()
end),
SJX.switch("你看到了我",
function ()
 	gg.playMusic('http://music.163.com/song/media/outer/url?id=1377530437.mp3')
end,
function ()
end),
SJX.switch("nightcruising",
function ()
 	gg.playMusic("https://out.zxglife.top/view.php/f22c860d17cbb2f5718cbd5a9b68ae42.mp3")
end,


function ()
end),

SJX.switch("Neeva",
function ()
gg.playMusic("https://out.zxglife.top/view.php/16fa44c6165f5828dff9cfd7cecb84d9.mp3")
end,
function ()
end),		
     }),	  
		},{
SJX.box({"买家须知[点击展开]",---box示例 可以删掉
		SJX.text("请注意  :\n仙神代理价格表  : 低级代理5元\n中级代理8元\n终级代理15元","#FFFFFF","15sp"),
		     }),
SJX.button("退出脚本",tuic),

				SJX.button("加入Q群",
				function ()
				gg.toast("正在跳转")
gg.QQgroup("913152989")				
				end
				)		},
	
})	








bloc = luajava.getBlock()
bloc('join')
--------------神罚---------------
--神罚制作
----------------神罚牛逼----------
--二改请有自知之明