ENDLESS™ Space 2 (v1.5.60 S5 GOLD-Public)

The main forum for Cheat Table database collections.


Moderator: Table Moderator

Post Reply
User avatar
bbfox
Table Master
Table Master
Journeyman Hacker
Journeyman Hacker
Posts: 369
Joined: Sat Jul 23, 2022 8:59 am
Answers: 0
x 785

ENDLESS™ Space 2 (v1.5.60 S5 GOLD-Public)

Post by bbfox »


Engine: Unity
Environment: All in-game DLCs

A Simple table help to find resources. No other cheats.
Cheat Engine / cheat table scripts:

    □Compact Mode
    □Enable (Enable twice) / 啟用 (請連續啟用二次)
        □Empire, dust, incluence, strategic resource / 帝國,星塵,影響力和戰略資源
            □Enable during main screen / Re-enable if load save / new game
            □於主視窗啟用 / 重新讀檔 / 開新局 必須重新啟用
            □1. Get dust / influence
            □2. Get strategic resources (Active: in empire summary window, click on empire summary again / 於帝國概要中、再點擊帝國概要)
                □2.1 Get HR & Approval
            □3. Auto fill min. resources (afetr 1 & 2 enabled) / 自動設定最小資源值(前二項必須先啟用)
            □Get empire data (Active: click on empire summary / 點擊帝國概要)
        □Max hero available skill points / 英雄可用技能點最大
        □Advanced (use at your own risk)
            □inf ship movement (apply to AI, too) Ctrl-Alt-N
            □Get Data
                □Disable after use / 只在需要時啟用
                □Get colony progress
                □Get ship available movement
                □Get ship HP
                □Get ship sensor
                □Get research target value

How to use this table:
Currently, I haven't found a stable method to correctly obtain the values every time. The following are some points to keep in mind:

  • When clicking on Empire Summary, make sure to stay on the star system management sheet. (not in victory sheet)
  • If the numbers are not captured correctly, you may need to try a few times.
  • I’ve tested it on my two devices and it works fine, but I can’t guarantee it will work 100% of the time.

Old releases

Spoiler
EndlessSpace2.CT
v5 (2024/10/11): revise scripts
(62.43 KiB) Downloaded 135 times
EndlessSpace2.CT
v4: revise scripts
(43.17 KiB) Downloaded 105 times
EndlessSpace2.CT
v3: revise scripts
(48.6 KiB) Downloaded 103 times
EndlessSpace2.CT
v2: revised for v1.5.60 S5 GOLD-Public
(35.13 KiB) Downloaded 653 times
EndlessSpace2.CT
v1: v1.5.48 S5 GOLD-Public
(32.51 KiB) Downloaded 496 times
Attachments
EndlessSpace2.CT
v6 (2024/10/12): revise scripts
(72.05 KiB) Downloaded 900 times
Last edited by bbfox on Sun Oct 13, 2024 4:55 am, edited 7 times in total.

Table is free to use, but need to leave the author's name and source URL: https://opencheattables.com.
Table will not be up-to-date. Feel free to modify it, but leave credit to the source.
Tip me a coffee? https://ko-fi.com/bbfoxmodding


Tags:

J1327
Enchanter
Enchanter
Apprentice Hacker
Apprentice Hacker
Posts: 86
Joined: Mon Jul 25, 2022 5:00 pm
Answers: 0
x 110

Re: ENDLESS™ Space 2 (v1.5.60 S5 GOLD-Public)

Post by J1327 »

About pointers…

Doesn't work with different 'skirmish' / 'new game' settings, because then each time ID's changes to something different. (Reboot also changes stuff)

Currently I didn't find anything unique at surface level, except for 'dust' and 'influence'.

About hero skill points, skill points value increases but doesn’t allow ‘apply’ new selected skills to the hero for some reason.


User avatar
bbfox
Table Master
Table Master
Journeyman Hacker
Journeyman Hacker
Posts: 369
Joined: Sat Jul 23, 2022 8:59 am
Answers: 0
x 785

Re: ENDLESS™ Space 2 (v1.5.60 S5 GOLD-Public)

Post by bbfox »

I tested, it's working in my device.
Because pointers changed every time when you start a new game, scripts needed to be re-enable again to get new address. (reset base address to null)

If the address storing the pointer is not zero, it will assume that the pointer address has already been fetched and will not overwrite it.


Table is free to use, but need to leave the author's name and source URL: https://opencheattables.com.
Table will not be up-to-date. Feel free to modify it, but leave credit to the source.
Tip me a coffee? https://ko-fi.com/bbfoxmodding


J1327
Enchanter
Enchanter
Apprentice Hacker
Apprentice Hacker
Posts: 86
Joined: Mon Jul 25, 2022 5:00 pm
Answers: 0
x 110

Re: ENDLESS™ Space 2 (v1.5.60 S5 GOLD-Public)

Post by J1327 »

I understand what you meant (that part) but I can't... your dust and influence ids (well 'InternalPropertyNameHandle') is (in script 1.):
#52453
#52454

while mine actually,
each time different,
e.g. #52668 (dust example) or #52665...

So, script will always fail to catch pointers based on 'InternalPropertyNameHandle'...
So, and all scripts pointers return 000 no matter if scripts were enabled twice or more.

Image

what i did come up once I realized that won't work for dust and influence... instead relying on "ID" like i said, on surface level, found there is player empire base at RDI (Major empire) ... and no , for unique resources needs yet another approach.

Script to get dust and influence, press at least once on No research queued (not required) ...

ES2MOD.zip
psw:opencheattables.com
(2.52 KiB) Downloaded 173 times

User avatar
bbfox
Table Master
Table Master
Journeyman Hacker
Journeyman Hacker
Posts: 369
Joined: Sat Jul 23, 2022 8:59 am
Answers: 0
x 785

Re: ENDLESS™ Space 2 (v1.5.60 S5 GOLD-Public)

Post by bbfox »

hmm..
ok I got what you mean. Not sure if I can fix it. have to check out.

EDIT: Scripts revised. Still unstable (cannot get actual value in one shot) but can work in my devices. Also created some scripts but these new ones may not work in your environment.


Table is free to use, but need to leave the author's name and source URL: https://opencheattables.com.
Table will not be up-to-date. Feel free to modify it, but leave credit to the source.
Tip me a coffee? https://ko-fi.com/bbfoxmodding


J1327
Enchanter
Enchanter
Apprentice Hacker
Apprentice Hacker
Posts: 86
Joined: Mon Jul 25, 2022 5:00 pm
Answers: 0
x 110

Re: ENDLESS™ Space 2 (v1.5.60 S5 GOLD-Public)

Post by J1327 »

Thanks for try / effort , uhm. Not to worry.
In a mean time...
Not sure about this...
But.. I wrote Quick Research script (One turn)

Should work with research queue system (at least for intel?)
depending on registers and mono attach (filter):

define(ES2MOD_QUICKRESEARCH,ResourceStock:get_Stock+b)
[ENABLE]
//QUICK RESEARCH MOD
alloc(ES2MOD_QUICKRESEARCH_MEM,1,ES2MOD_QUICKRESEARCH)
label(ES2MOD_QUICKRESEARCH_RETURN)
label(ES2MOD_QUICKRESEARCH_MOD)
label(ES2MOD_QUICKRESEARCH_EXIT)
label(ES2MOD_QUICKBUILD)
ES2MOD_QUICKRESEARCH_MEM:

// 0x04 r15 , r14

db 49 39 DE
je ES2MOD_QUICKRESEARCH_EXIT

db 4D 39 F5
je ES2MOD_QUICKRESEARCH_EXIT

db 48 39 C8
jne ES2MOD_QUICKRESEARCH_EXIT


db 4C 39 CA
jne ES2MOD_QUICKBUILD
db 49 83 F8 00
jne ES2MOD_QUICKRESEARCH_EXIT

jmp ES2MOD_QUICKRESEARCH_MOD


ES2MOD_QUICKBUILD:
db 49 83 FD 01
jle ES2MOD_QUICKRESEARCH_EXIT
db 49 83 FE 01
jle ES2MOD_QUICKRESEARCH_EXIT


ES2MOD_QUICKRESEARCH_MOD:
db F3 0F 11 69 18
ES2MOD_QUICKRESEARCH_EXIT:
db F3 0F 10 40 18
jmp ES2MOD_QUICKRESEARCH_RETURN



ES2MOD_QUICKRESEARCH:
jmp ES2MOD_QUICKRESEARCH_MEM
ES2MOD_QUICKRESEARCH_RETURN:

[DISABLE]
dealloc(ES2MOD_QUICKRESEARCH_MEM)
ES2MOD_QUICKRESEARCH:
db F3 0F 10 40 18

---------
So to speak ignores 'Science per turn' and gives instantly research module on next turn.
Edit: also quick build


User avatar
bbfox
Table Master
Table Master
Journeyman Hacker
Journeyman Hacker
Posts: 369
Joined: Sat Jul 23, 2022 8:59 am
Answers: 0
x 785

Re: ENDLESS™ Space 2 (v1.5.60 S5 GOLD-Public)

Post by bbfox »

This game consistently uses floats to store values, and some deliberate handling has been done between functions and the arrays that store these values.

The process involves common variable-passing methods (i.e. stack, registers...). I noticed that when it is called through R11, the target address of the call is specifically replaced in the middle. There may have a chance to figure it out, but even though current methods don't catch the values all at once, usually after trying 1-3 times, it's able to get correct value.

Also, since ship now can move infinitely (no sure it's working for in other devices) ... lazy to spend too much effort on this.

Win skirmish game one time during modify this script.

For hero skill points, I can use it. I always apply all skills when hero at Lv. 1


Table is free to use, but need to leave the author's name and source URL: https://opencheattables.com.
Table will not be up-to-date. Feel free to modify it, but leave credit to the source.
Tip me a coffee? https://ko-fi.com/bbfoxmodding


J1327
Enchanter
Enchanter
Apprentice Hacker
Apprentice Hacker
Posts: 86
Joined: Mon Jul 25, 2022 5:00 pm
Answers: 0
x 110

Re: ENDLESS™ Space 2 (v1.5.60 S5 GOLD-Public)

Post by J1327 »

Yes, and float values -- they stack up from time to time each turn.

I Don't know much about common variable-passing methods they used there.
But I was thinking about somehow creating assembly's separate thread and from there call functions to retrieve values -- in this case also lists.
Yet I can't imagine how it should be alike -- just an idea.

(...)

I managed to get unique resources and manpower.
Filtered through stacks with SHORT ID. (e.g. cmp [rbp-10],0)
also note filtering trough player-> majorempire.
I found that on SimulationProperty_PropertyWithMin:get_Value+b , unique resource values has smaller ids like 1,2,3,4...
Also am comparing against stack function return (cmp [RBP+08],GuiResource:GetStockValue+5e),
So, it might not be stable. I am not trusting stacks.

While,
From your script's only hero skill script works;
I mean sure, your script tries to get pointers but doesn't catch correctly -- probably AI’s values or other stuff.

(I need to get now Inf movement (kind have due invalid pointer at register cmp [r8],0) and invincible ships)
AI movement executing on player's turn behalf.

'cmp [r8],0' : Attempted to write in assembly a VALID POINTER check. Which would be great to have in case of…? Unfortunately, I was defeated at that. For some reason 'VirtualQuery' returns 0 -- which is not what I intend to -- while 'IsBadReadPtr' also returns well... let’s just say function crashes during self-call at 'IsBadReadPtr'. lol. I know that {$try} and {$except} exists and that works well ... yet I choose to try alternative way anyway. Yet another another way would be just do an LUACALL block (not like defense) and do 'readPointer(address)' and deal with returns. Yet that would be jumping from ASM to LUA/ASM or just LUA script and requires user to inject lua dll into …

this is 'infinite' movement script -- note that script causes crash and ce handles silently with TRY and EXCEPT--ish, am just saying needs improvement with comparing pointer at [r8] : (also in order to use this , use previously written get influence and dust which get's player majorempire data)


define(GET_MOVE,Amplitude.Unity.Simulation.Properties.SimulationProperty_PropertyWithMin:get_Value+4)
[ENABLE]
registersymbol(GET_MOVE)
alloc(ES2MOD_MOV,1,GET_MOVE)
label(ES2MOD_MOV_RET ES2MOD_MOV_O ES2MOD_MOV_EXIT)
label(ES2MOD_MOV_MOD_IDLE ES2MOD_MOV_MOD_MOVE)
label(ES2MOD_PTRCHECK)
ES2MOD_MOV:
db 48 89 0C 24
db 48 8B C1
cmp [rbp+D8],Fleet:get_CurrentMovementPoints+21 // IDLE STATE _ 1
je ES2MOD_MOV_MOD_IDLE
cmp [rbp+D8],Fleet:GeneratePathfindingData+4c //IDLE STATE _ 2 + ON _ MOVE 1 + SELECTION _ 1
je ES2MOD_MOV_MOD_MOVE
jmp ES2MOD_MOV_O
ES2MOD_MOV_MOD_IDLE:
// UPDATE MOVEMENT VALUE ON PLAYER SHIP SELECTION. ALSO DESELECT.
db 4C 8B 85 80 00 00 00 // fleet.

ES2MOD_PTRCHECK: // bring in back simple check...
db 4D 85 C0
jz ES2MOD_MOV_EXIT
db 49 81 F8 00 10 00 00
jb ES2MOD_MOV_EXIT
db 48 B8 FF FF FF FF FF FF FF 7F
db 49 39 C0
ja ES2MOD_MOV_EXIT

{$try}
// UPDATE MOVEMENT VALUE ON PLAYER SHIP SELECTION. ALSO DESELECT.
db 49 8B 40 48 // fleet.-> major empire //
db 4C 8B C0
mov rax,[ptr_EMPIRE]
db 4C 39 C0
jne ES2MOD_MOV_EXIT
db 48 8B C1
db C7 40 68 00 00 80 42
db F3 0F 10 40 68
jmp ES2MOD_MOV_RET
{$except}
db F3 0F 10 40 68
jmp ES2MOD_MOV_RET

ES2MOD_MOV_MOD_MOVE:
db F3 0F 10 40 68
jmp ES2MOD_MOV_RET

ES2MOD_MOV_O:
db F3 0F 10 40 68
JMP ES2MOD_MOV_RET

ES2MOD_MOV_EXIT:
db 48 8B C1
mov r8,ptr_EMPIRE

// Give another try :
db 4D 3B 20
db 49 B8 00 00 00 00 00 00 00 00
jne ES2MOD_MOV_O
db C7 40 68 00 00 80 42
db F3 0F 10 40 68
JMP ES2MOD_MOV_RET


GET_MOVE:
JMP ES2MOD_MOV
db 66 90
ES2MOD_MOV_RET:

[DISABLE]
dealloc(ES2MOD_MOV)
GET_MOVE:
db 48 89 0C 24 48 8B C1
unregistersymbol(GET_MOVE)

edit : Ok. I was pushing to 'weak'/small size that is why VirtualQuery didn't work. Minimum requirement 64(100). The problem was I was sending as rd argument too low or too high value into function.


Post Reply