Count_Nosferatu
Contributor-
Posts
128 -
Joined
-
Last visited
-
Days Won
9
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by Count_Nosferatu
-
How do I use gg to see what accesses this address
Count_Nosferatu replied to Xwl522's question in Help
Long tap on desired address, and select "Search Pointer" Or use in script gg.searchPointer() https://gameguardian.net/help/classgg.html#a5eef9aac9f02932a4c67a184edec2bd4 -
The value of one byte can be from 0 to 255 decimal numbers. (0x00 - 0xFF) If the decimal number is greater than 255, then it is already two or more bytes. 256 - 0x01 & 0x00 257 - 0x01 & 0x01 999 - 0x03 & 0xE7
-
Instead of the last line in your script, write: local r = getListItems() gg.clearList() local t for i = 1, #r do t = gg.getValues({{address = r[i].address, flags = gg.TYPE_DWORD}})[1].value if t ~= 670 then return else break end end print(r[i].value) print(r[i].address) Then do whatever you want.
-
RR3 All version. Unlocks events in current ROUND.
Count_Nosferatu replied to Count_Nosferatu's topic in LUA scripts
Hi Guys. Open the script with any text editor, the comments say what needs to be done for new versions of the game. Specifically for version 12.6.1 you need to change: local Events = { -- For RR3 v12.5 'HUAYRA ROYALE (Flashback) - August 20, 2024', 'Ferrari 296 GTB TTC - August 26, 2024', "F1 PIRELLI GP D'ITALIA 2024 (Race Day) - August 27, 2024", 'TRACK DAY: MONZA SP1 (Flashback) - September 1, 2024', 'Acura NSX GT3 LTS - September 6, 2024', 'GT3 Challenge TTC - September 10, 2024', 'Jaguar C-X75 R3 Spec LTS - September 11, 2024', 'F1 SINGAPORE GP 2024 (Race Day) - September 16, 2024', } local Date = { -- For RR3 v12.6 '2024082000', '2024082600', '2024082700', '2024090100', '2024090600', '2024091000', '2024091100', '2024091600', } -
I think the problem is not in the search, but in the memory overflow after execution gg.loadResults(results)
-
For example, look at this part of the code, here you can see the main difference between x32 and x64 local f = {} local f1 = 0 local f2 = 0 local f3 = 0 local b = 0 local d2 = '2;h08;h32;h30;h30;h39::' local d6 = '6;h08;h32;h30;h31;h30::' local d7 = '7;h08;h32;h30;h31;h33::' local bytes = 9 gg.setRanges(gg.REGION_ANONYMOUS) if gg.getTargetInfo().x64 then bytes = 13 gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_OTHER) end gg.searchNumber(d2 ..bytes, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 1) f = gg.getResults(1) f1 = f[1].address gg.toast('\nFound data for item #2') gg.clearResults() gg.searchNumber(d6 ..bytes, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 1) f = gg.getResults(1) f2 = f[1].address gg.toast('\nFound data for item #6') gg.clearResults() gg.searchNumber(d7 ..bytes, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 1) f = gg.getResults(1) f3 = f[1].address gg.toast('\nFound data for item #7') gg.clearResults() if gg.getTargetInfo().x64 then gg.searchNumber(f1 ..';' ..f2 ..';' ..f3 ..'::24', gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1, 1) b = gg.getResultCount() if b == 3 then gg.refineNumber(f1, gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1, 0) b = gg.getResultCount() f = gg.getResults(1) end else gg.searchNumber(f1 ..';' ..f2 ..';' ..f3 ..'::12', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 1) b = gg.getResultCount() if b == 3 then gg.refineNumber(f1, gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) b = gg.getResultCount() f = gg.getResults(1) end end gg.alert('Found first address of items table')
-
My grandfather used to say: "Everything is new, this is long forgotten old."
-
Pointer is jump address. For 32bit programs, address is 4 bytes DWORD. For 64bit programs, address is 8 bytes QWORD
-
I think that the problem has not yet been solved. It is not clear which range should be used. The script finds many ranges with ['type'] = 'rw-p' t = gg.getRangesList('com.ea.games.r3_row*base.apk') for i = 1, #t do if t[i]['type'] == 'rw-p' then print(t[i]) end end script-output.txt
-
Script ended: Script error: luaj.o: /storage/emulated/0/Pictures/Scripts/pointerTest.lua:67 ` if ((a[1].address > v["start"]) and (a[1].address < v["end"])) then` attempt to index ? (a nil value) with key 'address' (field '1')
-
Doesn't really work. It is not clear which of base apk to count from. gg.setRanges(gg.REGION_CODE_APP) t = gg.getRangesList('^/data/*com.ea.games.r3_row*base.apk*$') print('Found ' ..#t ..' results') a = 0 for i = 1, #t do if t[i]['type'] == 'rw-p' then print(t[i]) a = a + 1 end end print('Found ' ..a ..' rw-p results') -- -> Script ended: Found 37 results { -- table(5d5648b) ['end'] = 133868052664320, ['internalName'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['name'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['start'] = 133868052647936, ['state'] = 'O', ['type'] = 'rw-p', } { -- table(f005968) ['end'] = 133868054269952, ['internalName'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['name'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['start'] = 133868054241280, ['state'] = 'O', ['type'] = 'rw-p', } { -- table(cd3f181) ['end'] = 133868055478272, ['internalName'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['name'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['start'] = 133868055474176, ['state'] = 'O', ['type'] = 'rw-p', } { -- table(4995226) ['end'] = 133868055621632, ['internalName'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['name'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['start'] = 133868055617536, ['state'] = 'O', ['type'] = 'rw-p', } { -- table(bb3be67) ['end'] = 133868057997312, ['internalName'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['name'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['start'] = 133868057923584, ['state'] = 'O', ['type'] = 'rw-p', } { -- table(a35a414) ['end'] = 133868058820608, ['internalName'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['name'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['start'] = 133868058816512, ['state'] = 'O', ['type'] = 'rw-p', } { -- table(c4d24bd) ['end'] = 133868059889664, ['internalName'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['name'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['start'] = 133868059885568, ['state'] = 'O', ['type'] = 'rw-p', } { -- table(5386ab2) ['end'] = 133868116672512, ['internalName'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['name'] = '/data/app/com.ea.games.r3_row-etCOPHVNo-lYN2A8uKT50Q==/base.apk', ['start'] = 133868116594688, ['state'] = 'O', ['type'] = 'rw-p', } Found 8 rw-p results
-
Tablet Android 10 x64 with VirtualXposed, script returned this: Script ended: { -- table(8e7fafb) [1] = { -- table(2608718) ['arch'] = 'AArch64', ['end'] = 522830204928, ['internalName'] = '/data/data/io.va.exposed/virtual/data/app/com.ea.games.r3_row/base.apk', ['name'] = '/data/data/io.va.exposed/virtual/data/app/com.ea.games.r3_row/base.apk', ['start'] = 522830127104, ['state'] = 'O', ['type'] = 'rw-p', }, } It's normal ? print(gg.getTargetInfo()) --> --- ['nativeLibraryDir'] = '/data/user/0/io.va.exposed/virtual/data/app/com.ea.games.r3_row/lib', ---
-
RR3 All version. Unlocks events in current ROUND.
Count_Nosferatu commented on Count_Nosferatu's file in LUA scripts
-
View File RR3 All version. Unlocks events in current ROUND. Unlocks events in current ROUND, which have not yet begun. Automatically changes rows count in gg.choice(), depending on the current date. Open source Submitter Count_Nosferatu Submitted 01/16/2024 Category LUA scripts
-
-
is it possible to hide our search values in the script?
Count_Nosferatu replied to _yourram's question in Help
Possible version of your script. Search is done once when script starts. Then it goes into invisible mode and waits for GG icon to be pressed. Until you select “Exit”, all found data in tables will be saved. gg.isVisible(false) gg.clearResults() gg.clearList() -------------Flying cost-------------------- gg.searchNumber( "-8.0004e10",gg.TYPE_FLOAT) -- Why do a refining if you don’t have a group search? gg.refineNumber(' -8.0004e10',gg.TYPE_FLOAT) Fly = gg.getResults(gg.getResultsCount()) gg.clearResults() -------------Energy cost-------------------- gg.searchNumber('55;53', gg.TYPE_FLOAT) -- Refining is needed here. gg.refineNumber('53', gg.TYPE_FLOAT) Energy = gg.getResults(gg.getResultsCount()) gg.clearResults() -------------Water cost-------------------- gg.searchNumber("7018090782024269824",gg.TTYPE_QWORD) -- Why do a refining if you don’t have a group search? gg.refineNumber("7018090782024269824",gg.TTYPE_QWORD) Water = gg.getResults(gg.getResultsCount()) gg.clearResults() ::retr1:: choices = gg.choice({'Engery cost', 'Water cost', 'Exit'}, 0, '\tSelect item cost:\n⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯') if choices == 1 then for i = 1, #Water do gg.setValues({{ address = Water[i].address, flags = gg.TTYPE_QWORD, value = 7018090361117474816 }}) end for i = 1, #Energy do gg.setValues({{ address = Energy[i].address, flags = gg.TYPE_FLOAT, value = 25 }}) end for i = 1, #Fly do gg.setValues({{ address = Fly[i].address, flags = gg.TYPE_FLOAT, value = 0 }}) end gg.toast('Engery cost') end if choices == 2 then for i = 1, #Fly do gg.setValues({{ address = Fly[i].address, flags = gg.TYPE_FLOAT, value = -8.0004e10 }}) end for i = 1, #Energy do gg.setValues({{ address = Energy[i].address, flags = gg.TYPE_FLOAT, value = 53 }}) end for i = 1, #Water do gg.setValues({{ address = Water[i].address, flags = gg.TTYPE_QWORD, value = 7018090782024269824 }}) end gg.toast('Water cost') end if choices == nil or choices == 3 then gg.setVisible(true) os.exit() end while not gg.isVisible() do gg.sleep(100) end gg.setVisible(false) goto retr1 os.exit() -
local resultnumber = {1} print(resultnumber) --> { -- table(d2fd880) --> [1] = 1, --> }
-
See the description of the gg.loadResults() command. https://gameguardian.net/help/classgg.html#ade5f40667e80938ba1678d0623fe7b82 Existing search results will be cleared. After executing gg.loadResults(gg.getListItems()) - "list" table is empty. In the "troll" table, results of last search.gg.searchNumber() and gg.refineNumber() You don't check the number of results found. Maybe it doesn't find anything. PS Script example is clearer if you highlight it as “code”
-
[ DOWNLOADS - REQUEST FOR HUMAN CHECKS ON DOWNLOADS ]
Count_Nosferatu replied to KUMADEIT's question in Website suggestions/Bugs
Like first and then download? I'm already laughing. -
Thank you, Captain Obvious.
-
gg.setVisible(false) -- -- Put Your first process -- while gg.isVisible() == false do if gg.isVisible() == true then break end gg.sleep(100) end gg.setVisible(false) -- -- Put Your second process --
-
gg.setVisible(false) gg.searchNumber('100;140', gg.TYPE_FLOAT) -- ??? -- Do you really want to search for two 4 byte numbers in 512 byte range? gg.refineNumber('100', gg.TYPE_FLOAT) controlvalue = gg.getResults(999) -- ??? -- If you need only first variable, why fill the table with 999 numbers? -- May be need controlvalue = gg.getResults(1) gg.clearResults() choice = gg.choice({'Edit it to 100','Edit it to -1','Edit it back'}) if choice == 0 then -- insert cancel message in command gg.alert() or gg.toast() gg.setVisible(true) os.exit() end if choice == 1 then gg.setVlaues({{ address = controlvalue[1].address, flags = gg.TYPE_FLOAT, value = -100 }}) end if choice == 2 then gg.setVlaues({{ address = controlvalue[1].address, flags = gg.TYPE_FLOAT, value = -1 }}) end if choice == 3 then gg.setVlaues({{ address = controlvalue[1].address, flags = gg.TYPE_FLOAT, value = 100 }}) end gg.setVisible(true) os.exit()
-
-