[REQUEST] Farthest Frontier

Ask about cheats/tables for single player games here
panraven
Table Makers
Table Makers
Posts: 124
Joined: Fri Mar 03, 2017 12:03 am
Reputation: 112

Re: [REQUEST] Farthest Frontier

Post by panraven »

Some useless cheats:
get_movementSpeed -- x8 mv spd (apply on character so raider too)
villager_mod_combatStats -- make each villager combat stats with *pct (percentage) +400%
VillagerHealth_set_happiness -- x10 up /10 down
VillagerHealth_set_diet -- ^ ditto
VillagerHealth_eternalSenior (no elder) -- not tested, should age enter no elder stage, so may be no dead by aging?
Sorry lazy to upload a table.
C&P to memory panel, enable mono before activate
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>0</ID>
<Description>"get_movementSpeed"</Description>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>define(cave,get_movementSpeed)

define(h0,spd)
[ENABLE]
//// 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
aobscanRegion(spd, Character.get_movementSpeed+0000,Character.get_movementSpeed+0100, 48 89 5C 24 )

alloc(get_movementSpeed,$1000,spd)
registersymbol(get_movementSpeed)

cave+80:
dq cave, spd

cave+100:
readmem(spd,32)

cave+1f0:
dd (float)8

cave+200: // spd
// add code
mov rax,@f
xchg rax,[rsp]
mov [cave+1f8],rax
readmem(spd,5)
jmp spd+5
@@:
mulss xmm0,[cave+1f0]
jmp qword ptr[cave+1f8]


spd:
jmp cave+200 // check nops



// last 0400

[DISABLE]
{$lua}
if not syntaxcheck and readInteger'get_movementSpeed'and autoAssemble [[
[get_movementSpeed+88]:
readmem(get_movementSpeed+100,32)

]]then return[[

dealloc(get_movementSpeed)
unregistersymbol(get_movementSpeed)
]] end
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>1</ID>
<Description>"villager_mod_combatStats"</Description>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>define(cave,villager_mod_combatStats)

define(h0,stat)
[ENABLE]
{$lua}
ofsItemStats = ofsItemStats or monoAA_GETMONOSTRUCT'ItemStats':gsub('vtable[^\n\r]+','',1)-- del 1st vtable for structure
-- print(tostring(ofsItemStats))
return ofsItemStats
{$asm}
//// 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
aobscanRegion(stat, VillagerHealth.get_health+0000,VillagerHealth.get_health+0100, 0F 29 74 24 ?? 33 D2 F3 0F 10 71 )
aobscanRegion(chk, DamageableComponent.get_maxLife+0000,DamageableComponent.get_maxLife+0100, 48 83 EC ?? 0F 10 99 ?? ?? 00 00)

alloc(villager_mod_combatStats,$1000,stat)
registersymbol(villager_mod_combatStats)

cave+80:
dq cave, stat

cave+100:
readmem(stat,32)

cave+1f0:
dd (float)4
label(modperc)
cave+200: // stat
// add code
push rsi
push rdi
push rax
mov rax,cave+1f0
mov eax,[rax]
mov rsi,chk+07
movsxd rsi,[rsi]
lea rdi,[rcx+rsi+maxLifeModifierPerc]
call modperc
lea rdi,[rcx+rsi+armorModifierPerc]
call modperc
lea rdi,[rcx+rsi+meleeDamageReductionPerc]
call modperc
lea rdi,[rcx+rsi+meleeDamageIncreasePerc]
call modperc
lea rdi,[rcx+rsi+rangedDamageReductionPerc]
call modperc
lea rdi,[rcx+rsi+rangedDamageIncreasePerc]
call modperc
cmp dword ptr[rcx+rsi+meleeBlockChance],(float)0.5
jge short @f
mov dword ptr[rcx+rsi+meleeBlockChance],(float)0.5
@@:
cmp dword ptr[rcx+rsi+rangedBlockChance],(float)0.5
jge short @f
mov dword ptr[rcx+rsi+rangedBlockChance],(float)0.5
@@:
pop rax
pop rdi
pop rsi
readmem(stat,5)
jmp stat+5
modperc:
cmp [rdi],eax
jge short @f
mov [rdi],eax
@@:
ret

stat:
jmp cave+200 // check nops



// last 0400

[DISABLE]
{$lua}
if not syntaxcheck and readInteger'villager_mod_combatStats'and autoAssemble [[
[villager_mod_combatStats+88]:
readmem(villager_mod_combatStats+100,32)

]]then return[[

dealloc(villager_mod_combatStats)
unregistersymbol(villager_mod_combatStats)
]] end
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>2</ID>
<Description>"VillagerHealth_set_happiness"</Description>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>define(cave,VillagerHealth_set_happiness)

define(h0,hpy)
[ENABLE]
//// 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
aobscanRegion(hpy, VillagerHealth.set_happiness+0000, VillagerHealth.set_happiness+0100, 48 8B D9 0F 29 74 24 )
aobscanRegion(chk, VillagerHealth.set_happiness+0000, VillagerHealth.set_happiness+0100, F3 0F 11 73 ?? 48 85 C9 )

alloc(VillagerHealth_set_happiness,$1000,hpy)
registersymbol(VillagerHealth_set_happiness)

cave+80:
dq cave, hpy

cave+100:
readmem(hpy,32)

cave+1f0:
dd (float)10,(float)0.1

cave+200: // hpy
// add code
readmem(hpy,8)
mov rcx,chk+04
movsx rcx,byte ptr[rcx]
push rdi
sub rsp,48
subss xmm1,[rbx+rcx]
movss [rsp],xmm1
mov rdi,cave+1f0
cmp dword ptr[rsp],0
jg short @f
add rdi,4
@@:
mulss xmm1,[rdi]
addss xmm1,[rbx+rcx]
add rsp,48
pop rdi
jmp hpy+8


hpy:
jmp cave+200 // check nops
db 90 90 90



// last 0400

[DISABLE]
{$lua}
if not syntaxcheck and readInteger'VillagerHealth_set_happiness'and autoAssemble [[
[VillagerHealth_set_happiness+88]:
readmem(VillagerHealth_set_happiness+100,32)

]]then return[[

dealloc(VillagerHealth_set_happiness)
unregistersymbol(VillagerHealth_set_happiness)
]] end
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>3</ID>
<Description>"VillagerHealth_set_diet"</Description>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>define(cave,VillagerHealth_set_diet)

define(h0,hpy)
[ENABLE]
//// 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
aobscanRegion(hpy, VillagerHealth.set_diet+0000, VillagerHealth.set_diet+0100, 48 8B D9 0F 29 74 24 )
aobscanRegion(chk, VillagerHealth.set_diet+0000, VillagerHealth.set_diet+0100, F3 0F ?? ?? ?? 48 85 C9 )

alloc(VillagerHealth_set_diet,$1000,hpy)
registersymbol(VillagerHealth_set_diet)

cave+80:
dq cave, hpy

cave+100:
readmem(hpy,32)

cave+1f0:
dd (float)10,(float)0.1

cave+200: // hpy
// add code
readmem(hpy,8)
mov rcx,chk+04
movsx rcx,byte ptr[rcx]
push rdi
sub rsp,48
subss xmm1,[rbx+rcx]
movss [rsp],xmm1
mov rdi,cave+1f0
cmp dword ptr[rsp],0
jg short @f
add rdi,4
@@:
mulss xmm1,[rdi]
addss xmm1,[rbx+rcx]
add rsp,48
pop rdi
jmp hpy+8


hpy:
jmp cave+200 // check nops
db 90 90 90



// last 0400

[DISABLE]
{$lua}
if not syntaxcheck and readInteger'VillagerHealth_set_diet'and autoAssemble [[
[VillagerHealth_set_diet+88]:
readmem(VillagerHealth_set_diet+100,32)

]]then return[[

dealloc(VillagerHealth_set_diet)
unregistersymbol(VillagerHealth_set_diet)
]] end
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>4</ID>
<Description>"VillagerHealth_eternalSenior (no elder)"</Description>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>define(cave,VillagerHealth_eternalSenior)

define(h0,noelder)
[ENABLE]
//// 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
aobscanRegion(noelder,VillagerHealth.GetAgeBracketEnum+0080,VillagerHealth.GetAgeBracketEnum+0180, 8D 41 04 48 83 C4 ?? 5B C3 )

alloc(VillagerHealth_eternalSenior,$1000,noelder)
registersymbol(VillagerHealth_eternalSenior)

cave+80:
dq cave, noelder

cave+100:
readmem(noelder,32)

cave+200: // noelder
// add code
//jmp noelder+0


noelder+02:
db 03
//jmp cave+200 // check nops



// last 0400

[DISABLE]
{$lua}
if not syntaxcheck and readInteger'VillagerHealth_eternalSenior'and autoAssemble [[
[VillagerHealth_eternalSenior+88]:
readmem(VillagerHealth_eternalSenior+100,32)

]]then return[[

dealloc(VillagerHealth_eternalSenior)
unregistersymbol(VillagerHealth_eternalSenior)
]] end
</AssemblerScript>
</CheatEntry>
</CheatEntries>
</CheatTable>

Kerus
Expert Cheater
Expert Cheater
Posts: 89
Joined: Tue Jan 29, 2019 1:28 pm
Reputation: 21

Re: [REQUEST] Farthest Frontier

Post by Kerus »

ndck76 wrote:
Wed Aug 10, 2022 1:28 pm
Game Manager
Image
You can find tons of Options under 'Game Manager'. I did not add to the table because it's just too many with multiple sub 'Children'. Since this is Early Access, many of these will get revised. In future updates (if this script still works), you can simply copy the base address shown in the guide below to access the Game Manager.
Tutorial: Access to Game Manager Step By Step Guide
Image

1). Double click and copy this address

2). Go To Memory View

Image

3). Press 'Ctrl + D' will open Structure Dissect.

4). Paste the address here

Image

5). Go to 'Structures' and Select 'Define New Structure' and just click on the 'Ok' Button
Tutorial: How To Add 'Game Manager' Pointers To The Existing Table & use it for later

Ok so now that you have the base address and had open the 'Game Manager'. Now the next thing is adding the pointers that you want into the existing table. Here's an example.

1). Click on the 'Happiness Manager'

Image

2). Select the pointers that you want to add into the table by using the Shift or Ctrl Key + Using the mouse. After that Right click any of the selected pointers and select 'Add To Address List' or using the shortcut 'A' key

Image

3). Select a pointer and double click on the 'Address' with the P->XXXXXXXXXXX

Image

4). Change the address marked with the red box into [data]

Image

5). It should look like this

Image

And click on the 'Ok' Button. That's it. Do this for the other pointers as well. Just copy and paste the [data] to all those addresses and don't forget to save the table using Ctrl+Alt+S or Ctrl+S or simply going to 'File' and 'Save'
It works and also funny. Civilians produce tons of shit in their houses then forced to abandon their houses.

kanifeli
Cheater
Cheater
Posts: 37
Joined: Sat Nov 21, 2020 1:59 pm
Reputation: 5

Re: [REQUEST] Farthest Frontier

Post by kanifeli »

@ndck76 i am no expert on the scripting for CE but can you tell me what i would have to change to reduce the resources for the script you have on your table? while i like 5k resources i do not like houses ending up with 5k poop hehe.

joeglens
Noobzor
Noobzor
Posts: 6
Joined: Fri Sep 18, 2020 2:25 am
Reputation: 1

Re: [REQUEST] Farthest Frontier

Post by joeglens »

1crash007 wrote:
Wed Aug 10, 2022 4:33 pm
I found some interesting values under VillagerHealth
I had to use .net info to get the values.
But there is alot of information to each villager there.
Under Villager is movement bonuses
Under VillagerInitialSuppliesData is carry capacity.
VillagerStatOverrides has some good stat modifiers like armor and search radius

GameManager doesn't have much from what i see.
How were you able to get pointers for VillagerHealth?

Post Reply

Who is online

Users browsing this forum: No registered users