<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>13</ID>
      <Description>"[$ASM] Get Money (instance)"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">// there is also another way to set infinite money
// but there is no pointer in that case...
// if so -- check .net -&gt; game - &gt; city configuration ...
// find real instance on: update there and change from false to true (although there doesn't work unlock all option)
// Written on
// 2022.3.7.32821 _ 202310xx
//1.0.11f1 (109.24605) [5256.2000]
// still works on
//1.0.12f1

[ENABLE]
alloc(newmem,2048,Game.Simulation.CitySystem:OnUpdate+8f)
label(returnhere originalcode exit Q savebytes)
registersymbol(Q savebytes)

newmem:
{$try}
pushf
push rcx
push rdx
push rbx
push rbp

// getting first offset
mov rdx,[rbp-10]
and RDX,7FFFFFFF
movsxd rdx,edx
shl rdx,04    // ***** &lt;--+0

// getting to PlayerMoney instance
mov rbx,[rcx]
mov rbx,[rbx+10]
//mov rcx,0000000000159910// changes -- above getting first offset
add rbx,rdx
nop dword ptr [rax]
mov rbx,[rbx]
add rbx,000001C0 // second offset

mov [Q],rbx

pop rbp
pop rbx
pop rdx
pop rcx
popf
originalcode:
{$except}
mov rdx,[rbp-10] // btw original code
nop 3

exit:
jmp returnhere

Q:
dq 00,00 00

savebytes:
          readmem(Game.Simulation.CitySystem:OnUpdate+8f,32)



Game.Simulation.CitySystem:OnUpdate+8f:
jmp newmem
nop 2
returnhere:


 
 
[DISABLE]
dealloc(newmem)
unregistersymbol(Q savebytes)
Game.Simulation.CitySystem:OnUpdate+8f:
readmem(savebytes,32)
//mov rdx,[rbp-10]
//nop 3
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>15</ID>
          <Description>"Game.CityPlayerMoney {BASE}"</Description>
          <ShowAsSigned>1</ShowAsSigned>
          <VariableType>Array of byte</VariableType>
          <ByteLength>0</ByteLength>
          <Address>Q</Address>
          <Offsets>
            <Offset>-10</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>14</ID>
          <Description>"m_Money"</Description>
          <ShowAsSigned>1</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>Q</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>16</ID>
          <Description>"m_Unlimited"</Description>
          <ShowAsSigned>1</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>Q</Address>
          <Offsets>
            <Offset>4</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
