Jump to content

Question

Posted

I have been trying to manipulate a game's resource values and other large values but no method seemed to get me anywhere.
and so I dug through the game's files, and I think that the developers made their own numbering system.
the game runs in this system where you are only shown a couple of digits followed by a letter, for example 
1.5A => 1500, 35.2C => 35200000, 46.17L => 46.17E+36, etc. 
image.png.1640c0690be4af1fd8a8ec249da6c87e.png

Through digging I found these are the letters the game uses,
the game engine is unity and the list is written as [public enum UnitType]
normal = 0;A = 1;B = 2;C = 3;D = 4;E = 5;F = 6;G = 7;H = 8;I = 9;J = 10;K = 11;L = 12;M = 13;N = 14;O = 15;P = 16;Q = 17;R = 18;S = 19;T = 20;U = 21;V = 22;W = 23;X = 24;Y = 25;Z = 26;
AA = 27;BB = 28;CC = 29;DD = 30;EE = 31;FF = 32;GG = 33;HH = 34;II = 35;JJ = 36;KK = 37;LL = 38;MM = 39;NN = 40;OO = 41;PP = 42;QQ = 43;RR = 44;SS = 45;TT = 46;UU = 47;VV = 48;WW = 49;XX = 50;YY = 51;ZZ = 52;

and the class they made is called "BigNumber"
"public struct BigNumber

{

    // Fields

    [OdinSerialize]

    public SortedDictionary<UnitType, float> units; 

    // Properties

    public static BigNumber Zero { get; }

    public static BigNumber One { get; }


    // lots of operational methods

}"

and that's it, does anyone know any method I could try?
I used a lot of methods I found on the internet but none worked.
I have found ways to add to these values through items in the store or free gifts, but the values in these methods are not a BigNumber, they are Dword and are limited to the integer limit, while a single upgrade in the game costs values way larger than the integer limit.

relevant info:
Game name: Monster Slayer idle, Developers: Fansipan Limited, Game version: 3.0.14

9 answers to this question

Recommended Posts

  • -1
Posted
1 hour ago, Count_Nosferatu said:

Did you try type Qword (8 byte)?
or Word and Dword (6 byte)?

I tried every type of value available in GG.
I also tested that it might be a float multiplied by 10^x, didn't work. I also thought it might count how many times the resources went over the limit and reset to zero, didn't work. I also tried the encrypted value feature but it either gave me too many results or none. 

  • -1
Posted
1 minute ago, MonkeySAN said:

i dont know if this useful.

IMG_20241113_054136.thumb.jpg.ece0b5916595f2e36b5d1a750035d2a2.jpg

some values are just a simple Dword search and refine.

Yes most of the time I try to look for simple values that indirectly changes the values that I want changed, but this method has limits. 
My current main concern is their numbering system.

  • -1
Posted
5 hours ago, MarkusLanez said:

I tried every type of value available in GG....

Actually, you see a shortened output, only for display on screen.
The full number can be from 217575 to 217584.
It's just in the Dword range.

  • -1
Posted
11 hours ago, MarkusLanez said:

public SortedDictionary<UnitType, float> units;

This indicates that value consists of one or more float values that correspond to units. You might be able to find float value corresponding to currently biggest unit used in particular instance of BigNumber, for that you can try range search (for example, if displayed value is 217.58C, then search "217.57~217.59" or maybe even "216.5~217.6", which should include the target value, but may also find many unrelated ones).

  • -1
Posted

I have tried both ways in the replies above but none of them seemed to get any desirable results. 
 

  • -1
Posted (edited)
31 minutes ago, MarkusLanez said:

I have tried both ways in the replies above but none of them seemed to get any desirable results. 

Have you tried this?
gg.searchNumber("217575~217584", gg.TYPE_DWORD, false, g.SIGN_EQUAL, 0, -1, 0)
Such numbers can be easily converted into the format as in your screenshot.

a = 217575
a = (a + 0.1) / 1000
print(string.format("%.2f",a) ..'K')
a = 217584
a = (a + 0.1) / 1000
print(string.format("%.2f",a) ..'K')

--Script ended:
--217.58K
--217.58K

If such numbers are not found, then they simply do not exist in memory.
They can be encrypted, and are decrypted only for display on screen.
If game is online, there are even more options.

Edited by Count_Nosferatu
  • 2
Posted

I found a way to search for it using group search.

32-bit game: 0~~0D;0D;(UnitType)D;(money whole number)F::13

64-bit game: 0~~0Q;0Q;(UnitType)D;(money whole number)F::21

The K in 217.58K is the UnityType which has a value of 11. The whole number will be 217.

So for an example, if you have 217.58K gold and your game is 64-bit, you have to first pause/freeze your game (important) and search 0~~0Q;0Q;11D;217F::21 and then refine search 11D;217F::5

After that, edit all dwords to the desired UnitType number and you can also modify the float value to 0 - 999 if you want to.

If nothing comes up, you can try 0~~0Q;0Q;11D;216~218F::21 and then you refine search 11D;216~218F::5 and don't forget to pause/freeze your game.

The memory ranges I used for searching was Anonymous and Other.

I made a video of me modifying the gold so you can see.

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.