Nimbatus

Upload your cheat tables here (No requests)
Post Reply
Sigan
Expert Cheater
Expert Cheater
Posts: 267
Joined: Fri May 26, 2017 1:23 am
Reputation: 124

Nimbatus

Post by Sigan »

Here's a simple cheat table I wrote for Nimbatus.

Thanks to those that helped me in understanding what was going wrong with my scripts, and teaching me a few new lines of code in the process. Have a great day!

*Use at your own risk*

viewtopic.php?p=66104

How to use this cheat table?
  1. Install Cheat Engine
  2. Double-click the .CT file in order to open it.
  3. Click the PC icon in Cheat Engine in order to select the game process.
  4. Keep the list.
  5. Activate the trainer options by checking boxes or setting values from 0 to 1
Attachments
Nimbatus.CT
v0.5.7
(27.23 KiB) Downloaded 279 times

Sigan
Expert Cheater
Expert Cheater
Posts: 267
Joined: Fri May 26, 2017 1:23 am
Reputation: 124

Nimbatus

Post by Sigan »

Trying to update this table to the current version of the game. It's had some updates, and I'd like to play through it all over again.



In the process, I've noticed that it's difficult for me to differentiate the health of the parts of my drone from the health of everything else.



Can someone look at the game code and give me a simple tutorial, or point me in a direction for how to find it? Jumping around methods is confusing to me.

Zanzer
RCE Fanatics
RCE Fanatics
Posts: 1090
Joined: Fri Mar 03, 2017 10:48 pm
Reputation: 3500

Nimbatus

Post by Zanzer »

Resource Pointer

Threat Pointer

Ignore Part Requirement

Unlimited Health

Unlimited Batteries

Unlimited Fuel

Ignore Temperature
Attachments
Nimbatus.CT
1.0.7
(24.12 KiB) Downloaded 149 times

Zanzer
RCE Fanatics
RCE Fanatics
Posts: 1090
Joined: Fri Mar 03, 2017 10:48 pm
Reputation: 3500

Nimbatus

Post by Zanzer »

[USER=6119]@Sigan[/USER]

The DronePart class contains the RootDrone object at offset 0x120.

The RootDrone class contains the DroneData object at offset 0x70.

The DroneData class contains the IsOpponentDrone boolean at offset 0x7D.

Can use [[DronePart+120]+70]+7D to determine if the current part belongs to the player.

Can then use [DronePart+130] to retrieve the HealthPool object, which stores the current part's health.

User avatar
BooBoo
Retired Donor
Retired Donor
Posts: 492
Joined: Sat May 06, 2017 2:28 pm
Reputation: 146

Nimbatus

Post by BooBoo »

Also, there is an enum to filter out the player if you want to use the TakeDamage member function in the HealthPool class.

Sigan
Expert Cheater
Expert Cheater
Posts: 267
Joined: Fri May 26, 2017 1:23 am
Reputation: 124

Nimbatus

Post by Sigan »

BooBoo, post: 136354, member: 3923 wrote:
Also, there is an enum to filter out the player if you want to use the TakeDamage member function in the HealthPool class.




Very cool! I'm not sure how the enum thing works. I'm an amateur compared to Zanzer and, apparently, you :)


Questions for Zanzer, BooBoo, and/or more educated individuals
Now I don't have to work on my table anymore!



I can't help myself... but thanks for doing that, Zanzer!



Zanzer, why do we do "test rcx,rcx?"

[automerge]1590303070[/automerge]

Also, Zanzer, let me ask you something more detailed.



The original code is this:


Code: Select all

// ---------- My injection point ----------

23F411A3B04: F3 0F 10 86 20 02 00 00        -  movss xmm0,[rsi+00000220]

// ---------- Your injection point ----------

23F411A3B0C: F3 0F 5A C0                    -  cvtss2sd xmm0,xmm0

23F411A3B10: F2 0F 5A E8                    -  cvtsd2ss xmm5,xmm0




You did this:

Code: Select all

newmem:

  dd (float)1000

code:

  mov rax,newmem

  movss xmm0,[rax]

  cvtss2sd xmm0,xmm0

  cvtsd2ss xmm5,xmm0

  jmp return


I would have done this:


Code: Select all

newmem:

  dd (float)1000

code:

mov [rsi+220],newmem

movss xmm0,[rsi+00000220]

jmp return


Is there any difference? I don't understand xmm0 registers, so I avoid modifying them entirely. Your opinion?



I don't understand your pointer offsets in the Resources section. I understand when you write things like, resourcePtr->18->30, but you've done resourcePtr->18->0*18+30 and I don't understand that at all :)



Finally, if we add this line:


Code: Select all

 mov byte ptr [rax+DC],1
after the line 21 in the Infinite Health script, it'll ignore temperature for only the player's drone parts. Your ignore temperature script turns it off for everyone.


I haven't received a response, but in the meantime, I've made several scripts and incorporated them into the table Zanzer started. Let me know if something doesn't work, and I'll make the effort to turn it into an AOBscan


Table Description

Player Hook - Invulnerable Drone Parts, No Damage from Temperature, Extreme Heal Rate (Thanks to Zanzer for helping me separate the player from the opponents!)

Engines Hook - No Fuel Use, Engine Force Variable

Dynamic Thrusters - Set a modifier to make them stronger or weaker

Resource Collector - Range

Resource Tanks - Capacity and Drain Speed; pointers for current ores carried

Mission Timer - Ever been to a timed planet? Well, let's freeze that timer. I play casually, and want to get everything - feel me?

Threat Level - Freeze threat to zero; also nests the pointer so you can alter it to whatever you'd like

Resource Pointers - Thanks Zanzer for finding the pointers for resources spent at stores. Just an alternate way to overcome space poverty

Infinite Fuel

Infinite Battery Energy

Mega Shields
- They become impervious, use zero energy, recharge fast, and are set to never be broken

Ignore Part Requirement
Table Color Code

Purple - Main Hook. Once enabled, not necessary to turn off unless editing. Variables are within the script to turn on or off the chosen cheats. Cheats start "On."

Green - Variables. Adjust as desired. In some cases, these simply activate a cheat (All Player Parts Invulnurable: On). In other cases, they're meant to be changed throughout the game as contexts change (Engine Force Variable:75). The Engine Force Variable, for instance, won't affect the game if its corresponding green variable (Enable Engine Force Variable) is not "On." I prefer to do this rather than change pointers directly in my scripts. Sometimes, if you just lock a pointer, the game can crash when contexts change. Others, you'll change a pointer's value and it'll change back as the game code checks it. Doing it this way ensures things work the way I'd like them to, and the blue pointer is there as a check to make sure the script is working.

Light Blue - Script that changes the game in the way it's described, but no pointers are given and no variables are nested underneath.

Blue - Pointers. These can be changed or frozen to increase or decrease. I don't always prefer this, myself, because I'd rather have the script inject my changes. In some cases, though, this is the simplest way to accomplish a goal.
Attachments
Nimbatus.CT
Table v1.1; for Game Version 1.0.8
(67.92 KiB) Downloaded 214 times
Last edited by Sigan on Tue May 26, 2020 10:03 pm, edited 10 times in total.

auzzaue
What is cheating?
What is cheating?
Posts: 2
Joined: Wed Apr 26, 2023 12:37 pm
Reputation: 1

Re: Nimbatus

Post by auzzaue »

Trying to update the table to 1.1.4 and changed all aobscan to aobscanregion
Fly too fast and bumping into a wall still will break your drone part
Nimbatus.CT
1.1.4
(66.08 KiB) Downloaded 116 times

Post Reply