HELLDIVERS 2

Upload your cheat tables here (No requests)
User avatar
ZoDDeL
Table Makers
Table Makers
Posts: 138
Joined: Mon May 08, 2017 9:37 am
Reputation: 294

Re: HELLDIVERS 2

Post by ZoDDeL »

oddity93 wrote:
Mon May 20, 2024 11:13 am
ZoDDeL wrote:
Mon May 20, 2024 10:31 am
oddity93 wrote:
Mon May 20, 2024 9:35 am
i have these two scripts:
>>>
>>>
i thought i figured out how to whitelist just from looking at the patterns but, no, it just doesnt work and the edited weapon stays bleh...
is there a way to clear these two scripts up? whitelist all weapons in one and all strats in the other?
i'm not sure whose they are, but its from a very colorful table, i believe with at least 3 people having a hand in it
its my script but outdated. you should first get the current one (check my signature for table + guide)
what do you mean with "clear up scripts" ?
i mean to say it seemed a bit redundant, one for weapons and one for strats AND weapons again.

tried to change "code" to "super" since that was the first thing i noticed, and i recognize what // does. (i think)
it just failed to compile. "cant be injected" i think it said. i even moved it in the list to line up with the other whitelisted boomsticks.
i alsochanged rcx+00 to rcx+18 just to see what would happen since i saw:
this
dmg_Super:
mov [rcx+0C],#10 // penetration 1
mov [rcx+10],#10 // penetration 2
mov [rcx+14],#10 // penetration 3
mov [rcx+18],#10 // penetration 4
movd xmm3,[rcx+04]
movd xmm1,[rcx+08]
cvtdq2ps xmm1,xmm1
cvtdq2ps xmm3,xmm3
mulss xmm3, dword ptr [dmg_multiplier]
mulss xmm1, dword ptr [admg_multiplier]
jmp dmg_return
spoiler: rcx+18 did nothing. which was probably to be expected, im no scripter.
i just now nabbed the new table, thanks-! (still new to the "old link has new file" idea. im used to clouds being like that more than forums.)
gave the AIO a go too; infinite nades, stims, and ammo dont seem to be active. no problems otherwise
>>i saw the asterisk but saw no notes
>>>i just realized that "Activating this activates children" was off -_- i'll get back to it tomorrow
sure you can just make a copy of super dmg script or aio script and change values / exclude stuff.
i would not advise to set strategems to super because you will kill yourself with it for sure.

rcx is an register and the +xx number is an offset. its for the addresses (weapon id, dmg, admg,pen1-4,demo,stagger).
no reason to touch this.
usually you want to change value after # or after (float) like:
#777
(float)20

// put infront of a line it so exclude the line or make a comment

nades, stims and ammo act legit (go down to 1 then stick there instead of just being infinite this allows you to pickup ammo, stims, nades)

i delete the old table after i upload a new one.
thats why the comment on download has a date (meanwhile new tables have date in title too)

best go to my table / guide post and read the guide. this explains the asterisk.

Private wrote:
Mon May 20, 2024 11:55 am
T420killz wrote:
Sat May 18, 2024 5:10 pm
here u go @zoddel
This working within 2-3 minutes on mission, not sure how i get wrong. open CE, load script, launch game, active script, close CE. after 2 minute game close say something like hack detected

sorry i'm new to this CE thing :(

i'm looking nothing fancy, just unlimited ammo, health, stamina and unlimited call strategem
check the link in my signature to get the guide how to use this and get my current table.

prebombo wrote:
Mon May 20, 2024 12:33 pm
Hello, thanks for your amazing job to @zoddel, @gir489 and @cfemen for the cheattable. Right now I can only help making it easier to find wepaons in superdamage script, I reorganizated the IDs by classifying them.
There are commented weapons and stratgems because some of them have same ids.
Some IDs are still missing.
(This is my first post)


The table where I got the original code:
viewtopic.php?p=342693#p342693
yeah feel free to edit the order if you like but i wont care much about it because i handle so many scripts(and forks of my swcripts) i need to keep my order. also you can see at my post wich weapons are currently supported and you can search in script with ctrl+f .
i also would suggest you to load my current table (signature) because i rolled back from the design i tried in the table you currently use.

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

User avatar
gir489
RCE Fanatics
RCE Fanatics
Posts: 698
Joined: Mon May 08, 2017 4:08 am
Reputation: 514

Re: HELLDIVERS 2

Post by gir489 »

Been noticing that sometimes when trying to use the Lua script included with the helldivers2_GameGuardActive script, Game Guard will kill the game with 1013. I've investigated why this is, and it was very hard to pin down, because it would only happen the first time I start the game. The 2nd/3rd/4th/Nth time, it wouldn't do it... However, I think I have figured out the reason. When attempting to activate the Run Speed script, it would find too many GetKeyAsyncState functions in the EAT and get stuck in a loop. I have added a User32 discriminator to the call, so it should always find it every time now.

Private
What is cheating?
What is cheating?
Posts: 2
Joined: Mon May 20, 2024 11:02 am
Reputation: 0

Re: HELLDIVERS 2

Post by Private »

ZoDDeL wrote:
Mon May 20, 2024 1:53 pm
Private wrote:
Mon May 20, 2024 11:55 am
T420killz wrote:
Sat May 18, 2024 5:10 pm
here u go @zoddel
This working within 2-3 minutes on mission, not sure how i get wrong. open CE, load script, launch game, active script, close CE. after 2 minute game close say something like hack detected

sorry i'm new to this CE thing :(

i'm looking nothing fancy, just unlimited ammo, health, stamina and unlimited call strategem
check the link in my signature to get the guide how to use this and get my current table.
sorry my bad, managed to get it working just by restarting pc. looks like previous table that didn't work still attach to memory register i think, so gameguard managed to detect it i think :D

AMGcheat
Noobzor
Noobzor
Posts: 6
Joined: Wed Mar 06, 2024 4:56 am
Reputation: 2

Re: HELLDIVERS 2

Post by AMGcheat »

ZoDDeL wrote:
Thu May 16, 2024 12:04 pm
AMGcheat wrote:
Thu May 16, 2024 1:44 am
fallout11 wrote:
Wed May 08, 2024 9:54 pm

[ENABLE]
// unlimited jetpack
aobscanmodule(aob_ToTheSky,game.dll,89 04 B9 83 FD 01)
registersymbol(aob_ToTheSky)

aob_ToTheSky:
nop 3
//----------------------------------
[DISABLE]

Thanks to Gir489 (pretty sure) for this one a while back. It was working as of yesterday (pre-.303 patch).
Hello, I'm new to Cheat Engine. What exactly do I do with this code? Is there a link to a guide somewhere I could follow cause I've been trying to figure it out on my own with Cheat Engine 7.5 but I'm very lost. Any help would be greatly appreciated :cry:
while you have open CE / a table prest ctrl + alt + a
paste this code into the auto assamble window.
click on file (top left corner of the auto assembler window)
click on assign to current cheat table
now your table have an Auto Assemble script. you can rename it by doubleclick on the titel.
save your table with a click on file (top left corner main window of cheat engine)
then click on save or save as
Sorry for the late reply and thank you so much for the response ZoDDeL sir I appreciate all your work :D

I also would like to ask if it's possible to make the sentry/turrets have unlimited ammo? I've learned a bit using CE the past couple of days I'd like to attempt to try to figure out if it's at all possible. Thank you!

oddity93
Noobzor
Noobzor
Posts: 9
Joined: Wed May 08, 2024 8:58 am
Reputation: 0

Re: HELLDIVERS 2

Post by oddity93 »

ZoDDeL wrote:
Mon May 20, 2024 1:53 pm
@ZoD
thanks for the info!
one last thing, hopefully. which part of the scripts cause enemies to not attack? its somewhat stagnant without the swarms of bugs

User avatar
ZoDDeL
Table Makers
Table Makers
Posts: 138
Joined: Mon May 08, 2017 9:37 am
Reputation: 294

Re: HELLDIVERS 2

Post by ZoDDeL »

AMGcheat wrote:
Tue May 21, 2024 1:18 am

Sorry for the late reply and thank you so much for the response ZoDDeL sir I appreciate all your work :D

I also would like to ask if it's possible to make the sentry/turrets have unlimited ammo? I've learned a bit using CE the past couple of days I'd like to attempt to try to figure out if it's at all possible. Thank you!
in theory yes. but very impratical to work with.
in case of my table currently using the third version of no-reload (read based) that only works for player.
the previous no-reload (write based) worked for enemy and player. this one would also work for turrets, drones etc.
but i could not find a way to filter them (compare) so i switched to another opcode/instruction for no-reload.
oddity93 wrote:
Tue May 21, 2024 9:36 am
ZoDDeL wrote:
Mon May 20, 2024 1:53 pm
@ZoD
thanks for the info!
one last thing, hopefully. which part of the scripts cause enemies to not attack? its somewhat stagnant without the swarms of bugs
i dont have a script in my table to make enemies not attack. a while back then i had a script that make most minor enemies to no see the player (i assume like a smoke bomb effect) but i did not update it because its more of a gimmick.

maybe you mean enemies not moving?
then this is part of the speedhack. if the enemies have movespeed multiplier at (float)0 they cannot move anymore.
but the could still jump/charge because that are attacks not basic movement. if you walk close to the bugs they still can attack you if you are in their melee range. and bots just shoot at you.
if you dont like non moving enemies just change the speedhack script / aio script and set the enemy speed multiplier to (float) 1
thats default movement speed. or set it to (float) 0.90 or something similar to slow them down a bit.

rdg1995
What is cheating?
What is cheating?
Posts: 4
Joined: Wed May 01, 2024 1:19 am
Reputation: 0

Re: HELLDIVERS 2

Post by rdg1995 »

ZoDDeL wrote:
Tue May 21, 2024 9:46 am
AMGcheat wrote:
Tue May 21, 2024 1:18 am

Sorry for the late reply and thank you so much for the response ZoDDeL sir I appreciate all your work :D

I also would like to ask if it's possible to make the sentry/turrets have unlimited ammo? I've learned a bit using CE the past couple of days I'd like to attempt to try to figure out if it's at all possible. Thank you!
in theory yes. but very impratical to work with.
in case of my table currently using the third version of no-reload (read based) that only works for player.
the previous no-reload (write based) worked for enemy and player. this one would also work for turrets, drones etc.
but i could not find a way to filter them (compare) so i switched to another opcode/instruction for no-reload.
oddity93 wrote:
Tue May 21, 2024 9:36 am
ZoDDeL wrote:
Mon May 20, 2024 1:53 pm
@ZoD
thanks for the info!
one last thing, hopefully. which part of the scripts cause enemies to not attack? its somewhat stagnant without the swarms of bugs
i dont have a script in my table to make enemies not attack. a while back then i had a script that make most minor enemies to no see the player (i assume like a smoke bomb effect) but i did not update it because its more of a gimmick.

maybe you mean enemies not moving?
then this is part of the speedhack. if the enemies have movespeed multiplier at (float)0 they cannot move anymore.
but the could still jump/charge because that are attacks not basic movement. if you walk close to the bugs they still can attack you if you are in their melee range. and bots just shoot at you.
if you dont like non moving enemies just change the speedhack script / aio script and set the enemy speed multiplier to (float) 1
thats default movement speed. or set it to (float) 0.90 or something similar to slow them down a bit.
hey my bro zoddel do you have the link for your latest CT?
can i have some?

sinner2469
Novice Cheater
Novice Cheater
Posts: 20
Joined: Fri Apr 23, 2021 10:24 am
Reputation: 1

Re: HELLDIVERS 2

Post by sinner2469 »

@ZoDDeL
the super damage no longer affects being able to one shot drone towers and the eye of Sauron Tower which both require hell bombs the old super damage was to be able to one shot both but whatever was changed recently everything else gets one shot except those two things

helldivers2 ZoDDeL 18.may.24 super damage from this one shots drone towers and the eye of Sauron Tower
helldivers2 ZoDDeL 19.may.24 super damage from this does not one shots drone towers and the eye of Sauron Tower

Exemplify1524
Cheater
Cheater
Posts: 34
Joined: Tue Apr 30, 2024 8:37 am
Reputation: 16

Re: HELLDIVERS 2

Post by Exemplify1524 »

ZoDDel's (gir489) modified runspeed and sample pickup scripts.

Run script modifications:
Hold space to run 5x fast (added latest ZoDDels update, so this applies to player in ship too, and to mech too). ENEMIES run 5x SLOWER while pressing. (5x can be changed)
Hold righ mouse button to run 1.5x faster (more comfort in aim mode). (should work only for player and mech)
Dont press nothing you run 1.1 faster (can change) (should work for player and mech)

Sample pickup script modifications:
Hold C (crouch) while taking sample and you will get samples you set in script (ex. 50 + 40 + 10).
Hold Q while taking sample and you will get 1 sample (no cheat mode)
Dont hold anythink while taking sample and you will get value you set in script (+10 by default)

Runspeed have global section connected with sample pickup script.

On start game, take 1 sample so samples structure will be detected.
After that select sample you want to edit by pressing NUM7 = common, NUM8 = rare, NUM9 = SUPER
After that press NUM+ or NUM- to edit selected sample value. in realtime (+1 or -1). If hold Ctrl while pressing - or + then you will get +10 or -10 with 1 keypress.

This is useful if you play with players and you already make 100 samples. But one of the player take one more sample and you get >100 in sum.
Then you can simply select for example RARE samples (press NUM8 to select RARE) and decrease this value by pressing NUM-.

Very small amount of time tested, so feedback (working/not working) (somethink is not comfortable or have idea) is appreciated.
Spoiler

Code: Select all

{ Author            : gir489
  Modder: Anton 11.05.2024

  Press HOTKEY to run faster
}
{$c}
// YOU CAN EDIT SECTION START
#define SPEED_MULTIPLIER_DEFAULT_VALUE 1.1f
#define SPEED_MULTIPLIER_AIM_HOTKEY VK_RBUTTON
#define SPEED_MULTIPLIER_AIM_VALUE 1.5f

#define SPEED_MULTIPLIER_HOTKEY VK_SPACE
#define SPEED_MULTIPLIER_VALUE 5.0f
//GLOBAL TEST START
#define SAMPLE_SELECTOR_HOTKEY_COMMON VK_NUMPAD7
#define SAMPLE_SELECTOR_HOTKEY_RARE VK_NUMPAD8
#define SAMPLE_SELECTOR_HOTKEY_SUPER VK_NUMPAD9
// YOU CAN EDIT SECTION END
int SAMPLE_SELECTED = 0;
#define SAMPLE_SELECTOR_INC_HOTKEY VK_ADD
char SAMPLE_SELECTOR_INC_HOTKEY_LAST_STATE = 0;
#define SAMPLE_SELECTOR_DEC_HOTKEY VK_SUBTRACT
char SAMPLE_SELECTOR_DEC_HOTKEY_LAST_STATE = 0;
#define SAMPLE_SELECTOR_MULT_HOTKEY VK_CONTROL
extern int *SAMPLES_COMMON;
extern int *SAMPLES_RARE;
extern int *SAMPLES_SUPER;
//GLOBAL TEST END


#define NO_OLDNAMES
#include <windows.h>
short GetAsyncKeyState(int);
{$asm}

[ENABLE]
aobscanmodule(aob_RunSpeed,game.dll,F3 41 0F 59 56 0C F3 41 0F 59 56 10 0F 28 E2)
registersymbol(aob_RunSpeed)
alloc(newmem_RunSpeed,1024)
label(return_RunSpeed)

newmem_RunSpeed:
{$ccode pawn_base=r14}
//extern struct Samples *g_samples;
// GLOBAL SECTION START
if (GetAsyncKeyState(SAMPLE_SELECTOR_HOTKEY_COMMON) & 0x8000) {
  SAMPLE_SELECTED = 1;
} else if (GetAsyncKeyState(SAMPLE_SELECTOR_HOTKEY_RARE) & 0x8000) {
  SAMPLE_SELECTED = 2;
} else if (GetAsyncKeyState(SAMPLE_SELECTOR_HOTKEY_SUPER) & 0x8000) {
  SAMPLE_SELECTED = 3;
}

int add_value = 0;
if (GetAsyncKeyState(SAMPLE_SELECTOR_INC_HOTKEY) & 0x8000) {
  if (!SAMPLE_SELECTOR_INC_HOTKEY_LAST_STATE) {
    SAMPLE_SELECTOR_INC_HOTKEY_LAST_STATE = 1;
    add_value = 1;

  }
} else {
  SAMPLE_SELECTOR_INC_HOTKEY_LAST_STATE = 0;
}

if (GetAsyncKeyState(SAMPLE_SELECTOR_DEC_HOTKEY) & 0x8000) {
  if (!SAMPLE_SELECTOR_DEC_HOTKEY_LAST_STATE) {
    SAMPLE_SELECTOR_DEC_HOTKEY_LAST_STATE = 1;
    add_value = -1;
  }
} else {
  SAMPLE_SELECTOR_DEC_HOTKEY_LAST_STATE = 0;
}

if ( (SAMPLE_SELECTED > 0) && (add_value != 0)) {
  if (GetAsyncKeyState(SAMPLE_SELECTOR_MULT_HOTKEY) & 0x8000) {
     add_value *= 10;
  }

  if ((SAMPLE_SELECTED == 1) && (SAMPLES_COMMON != NULL)) {
    *SAMPLES_COMMON += add_value;
  }
  if ((SAMPLE_SELECTED == 2) && (SAMPLES_RARE != NULL)) {
    *SAMPLES_RARE += add_value;
  }
  if ((SAMPLE_SELECTED == 3) && (SAMPLES_SUPER != NULL)) {
    *SAMPLES_SUPER += add_value;
  }
}
// GLOBAL SECTION END


extern float runspeed_mult;

float *pawn_type = (float*)(pawn_base + 0x1C);
float *pawn_type2 = (float*)(pawn_base + 0x20);
float *p_speed_mult = (float*)(pawn_base + 0x0C);



float speed_selector = 0;
// 0x8000 currently held down
// 0x0001 key has been pressed since the last call
// 0x8001 currently held down and has been pressed since the last call
if (GetAsyncKeyState(SPEED_MULTIPLIER_AIM_HOTKEY) & 0x8000) {
  speed_selector = SPEED_MULTIPLIER_AIM_VALUE;
}
if (GetAsyncKeyState(SPEED_MULTIPLIER_HOTKEY) & 0x8000) {
  speed_selector = SPEED_MULTIPLIER_VALUE;
}
if (speed_selector == 0) {
  speed_selector = SPEED_MULTIPLIER_DEFAULT_VALUE;
}




if ((*pawn_type == 30.0f) && (*pawn_type2 == 40.0f)) {
   // playership
   *p_speed_mult = SPEED_MULTIPLIER_DEFAULT_VALUE * speed_selector;
} else if ((*pawn_type == 100.0f) && (*pawn_type2 == 100.0f)) {
  // player
  *p_speed_mult = SPEED_MULTIPLIER_DEFAULT_VALUE * speed_selector;
} else if ((*pawn_type == 10.0f) && (*pawn_type2 == 30.0f)) {
  // mech
  *p_speed_mult = SPEED_MULTIPLIER_DEFAULT_VALUE * speed_selector;
} else if ((*pawn_type == 5.0f) && (*pawn_type2 == 50.0f)) {
  // rescue
  *p_speed_mult = 1.0f * speed_selector;
} else {
  // enemy
  *p_speed_mult = 1.0f / speed_selector;
}


{$asm}
// original code start
mulss xmm2,[r14+0C]
mulss xmm2,[r14+10]
movaps xmm4,xmm2
// original code end
jmp return_RunSpeed

aob_RunSpeed:
  jmp far newmem_RunSpeed
  nop
return_RunSpeed:

[DISABLE]
aob_RunSpeed:
  db F3 41 0F 59 56 0C F3 41 0F 59 56 10 0F 28 E2

unregistersymbol(aob_RunSpeed)
dealloc(newmem_RunSpeed)

{
// ORIGINAL CODE - INJECTION POINT: game.dll+54902E

game.dll+548FCA: EB 08                       - jmp game.dll+548FD4
game.dll+548FCC: 41 0F 28 CC                 - movaps xmm1,xmm12
game.dll+548FD0: F3 0F 5D CA                 - minss xmm1,xmm2
game.dll+548FD4: 48 8B 44 24 68              - mov rax,[rsp+68]
game.dll+548FD9: F3 44 0F 10 1D 7A BB A9 00  - movss xmm11,[game.dll+FE4B5C]
game.dll+548FE2: 41 0F 28 C4                 - movaps xmm0,xmm12
game.dll+548FE6: 4C 8B 6C 24 50              - mov r13,[rsp+50]
game.dll+548FEB: F3 0F 5C C1                 - subss xmm0,xmm1
game.dll+548FEF: 4C 8B 7C 24 40              - mov r15,[rsp+40]
game.dll+548FF4: 4C 8B 65 88                 - mov r12,[rbp-78]
game.dll+548FF8: 44 0F 2F D8                 - comiss xmm11,xmm0
game.dll+548FFC: 77 09                       - ja game.dll+549007
game.dll+548FFE: 45 0F 28 DC                 - movaps xmm11,xmm12
game.dll+549002: F3 44 0F 5D D8              - minss xmm11,xmm0
game.dll+549007: F3 41 0F 10 56 04           - movss xmm2,[r14+04]
game.dll+54900D: F3 41 0F 59 16              - mulss xmm2,[r14]
game.dll+549012: F3 41 0F 10 6E 14           - movss xmm5,[r14+14]
game.dll+549018: F2 0F 10 05 90 BA A9 00     - movsd xmm0,[game.dll+FE4AB0]
game.dll+549020: F3 41 0F 59 56 08           - mulss xmm2,[r14+08]
game.dll+549026: F3 0F 10 98 B8 0C 00 00     - movss xmm3,[rax+00000CB8]
// ---------- INJECTING HERE ----------
game.dll+54902E: F3 41 0F 59 56 0C           - mulss xmm2,[r14+0C]
// ---------- DONE INJECTING  ----------
game.dll+549034: F3 41 0F 59 56 10           - mulss xmm2,[r14+10]
game.dll+54903A: 0F 28 E2                    - movaps xmm4,xmm2
game.dll+54903D: F3 0F 5C E5                 - subss xmm4,xmm5
game.dll+549041: 0F 5A CC                    - cvtps2pd xmm1,xmm4
game.dll+549044: 0F 54 0D D5 EF A9 00        - andps xmm1,[game.dll+FE8020]
game.dll+54904B: 66 0F 2F C1                 - comisd xmm0,xmm1
game.dll+54904F: 77 21                       - ja game.dll+549072
game.dll+549051: F3 41 0F 59 DD              - mulss xmm3,xmm13
game.dll+549056: 44 0F 2F C3                 - comiss xmm8,xmm3
game.dll+54905A: 76 06                       - jna game.dll+549062
game.dll+54905C: 41 0F 28 D0                 - movaps xmm2,xmm8
game.dll+549060: EB 08                       - jmp game.dll+54906A
game.dll+549062: 41 0F 28 D4                 - movaps xmm2,xmm12
game.dll+549066: F3 0F 5D D3                 - minss xmm2,xmm3
game.dll+54906A: F3 0F 59 D4                 - mulss xmm2,xmm4
game.dll+54906E: F3 0F 58 D5                 - addss xmm2,xmm5
game.dll+549072: F3 41 0F 11 56 14           - movss [r14+14],xmm2
game.dll+549078: 43 80 BC 3C AD 58 00 00 00  - cmp byte ptr [r12+r15+000058AD],00
game.dll+549081: F3 44 0F 59 DA              - mulss xmm11,xmm2
game.dll+549086: 75 04                       - jne game.dll+54908C
}
Spoiler

Code: Select all

{ Game   : helldivers2.exe
  Version:
  Date   : 2024-04-30
  Author : ZoDDeL
  Mod by : Anton v5
  Tested on: .304 path

  If hold CHEAT_ALL_HOTKEY while taking sample it will override all 3 counters to specified (edit section)
  If take sample and dont hold CHEAT_ALL_HOTKEY you receive HOTKEY_NOT_PRESSED_ADD_VALUE of sample type you taken
  You can edit #define section values below
  For debugging purposes you can open DebugViewPP tool and take some samples. you will receive messages.
}
{$c}
  // YOU CAN EDIT SECTION START
  #define CHEAT_ALL_HOTKEY 'C'   // take sample while holding it and you will get what you set
  // Keep common + rare + super sum below or equal to 100. For example you can specify 50+40+10 = 100
  #define HOTKEY_PRESSED_COMMON_SAMPLE_COUNT_REDEFINE 45
  #define HOTKEY_PRESSED_RARE_SAMPLE_COUNT_REDEFINE 30
  #define HOTKEY_PRESSED_SUPER_SAMPLE_COUNT_REDEFINE 10
  // if hotkey is not pressed and player take sample it will add specified value (game default is 1)
  #define HOTKEY_NOT_PRESSED_ADD_VALUE 10

  #define SECRET_HOTKEY 'Q' // if take sample while holding this, you will receive +1 samples (no cheat mode)
  // YOU CAN EDIT SECTION END

  #define NO_OLDNAMES
  #include <windows.h>
  extern __cdecl int sprintf(char *, char *, ...);
  extern __cdecl void OutputDebugStringA(const char* lpOutputString);
  short GetAsyncKeyState(int);
  char debug_string[400];
  typedef struct {
    int common;
    int rare;
    int super;
  } Samples;
  int *SAMPLES_COMMON;
  int *SAMPLES_RARE;
  int *SAMPLES_SUPER;

void show_bits_sprintf(int *rdx_value, char *buffer) {
  unsigned int mask = 0x80000000; // Маска для старшего бита
  int i;

  for (i = 0; i < 32; ++i) {
    // Проверяем, установлен ли бит
    if (*rdx_value & mask) {
      sprintf(buffer + i, "1");
    } else {
      sprintf(buffer + i, "0");
    }

    mask >>= 1; // Сдвигаем маску на один бит вправо
  }

  sprintf(buffer + 32, "\0"); // Добавляем завершающий нуль-символ
}
{$asm}

[ENABLE]
aobscanmodule(samples_inject,game.dll,48 8D 14 41 48 8B 43 40 4B 8D 0C 89 44 01 7C 90 04) // should be unique
alloc(samples_newmem,$2000)
label(samples_return)

samples_newmem:


  // original code start
  lea rdx,[rcx+rax*2]
  mov rax,[rbx+40]
  lea rcx,[r9+r9*4]
  // add [rax+rdx*4+04],r15d
  // original code end

  /*
  cmp rdx,0
  je samples_common
  cmp rdx,1
  je samples_rare
  cmp rdx,2
  je samples_super
samples_common: // when you pickup common
  mov [rax+rdx*4+04],#49 // common sample
  mov [rax+rdx*4+04+4],#30 // rare sample
  mov [rax+rdx*4+04+8],#20 // super sample
  jmp samples_return

samples_rare: // when you pickup rare
  mov [rax+rdx*4+04-4],#49 // common sample
  mov [rax+rdx*4+04],#30 // rare sample
  mov [rax+rdx*4+04+4],#20 // super sample
  jmp samples_return

samples_super: // when you pickup super
  mov [rax+rdx*4+04-8],#49 // common sample
  mov [rax+rdx*4+04-4],#30 // rare sample
  mov [rax+rdx*4+04],#20 // super sample
  jmp samples_return
  */
{$ccode base1=rax rdx=rdx}
  // calculate base_address of samples structure
  // rdx 0 = base+4
  // rdx 1 = base+4+4-4 = base+4
  // rdx 2 = base+8+4-8 = base+4
  // Samples* samples = (Samples*)(base1 + sample_type*4 + 4 - sample_type*4 );
  short sample_type = rdx % 10; // for common samples can be 0 20 or 60 (zero at the end). Rare 1 or 21.  Super 2 or 22
  short sample_unk = (int)(rdx / 10);
  int *picked_up_sample_counter = (int*)(base1 + rdx*4 + 4);
  //Samples* samples = (Samples*)(base1 + 4);
  Samples* samples = (Samples*)(base1 + rdx*4 + 4 - sample_type*4);
  SAMPLES_COMMON = &samples->common;
  SAMPLES_RARE = &samples->rare;
  SAMPLES_SUPER = &samples->super;

  int samples_count_now = samples->common + samples->rare + samples->super;

  sprintf(debug_string, "Samples: Taken type: %d | counts %d + %d + %d = %d. Unknown value is %d", sample_type, samples->common, samples->rare, samples->super, samples_count_now, sample_unk);
  OutputDebugStringA(debug_string);
  /*
  OutputDebugStringA("Samples: sample_type RDX  bits:");
  show_bits_sprintf(&sample_type, &debug_string);
  OutputDebugStringA(debug_string);
  */
  /*
  OutputDebugStringA("Samples: sample amount r15d bits:");
  show_bits_sprintf(&taken_sample_amount_r15d, &debug_string);
  OutputDebugStringA(debug_string);
  */

  // Already more than maxed out, restore max counts and exit
  if (samples_count_now > 100) {
    samples->common = HOTKEY_PRESSED_COMMON_SAMPLE_COUNT_REDEFINE;
    samples->rare = HOTKEY_PRESSED_RARE_SAMPLE_COUNT_REDEFINE;
    samples->super = HOTKEY_PRESSED_SUPER_SAMPLE_COUNT_REDEFINE;
    sprintf(debug_string, "Samples: count is >100. Restoring to maximum: %d %d %d", samples->common, samples->rare, samples->super);
    OutputDebugStringA(debug_string);
    goto end_section;
  }

  // Max all if hotkey pressed
  if (GetAsyncKeyState(CHEAT_ALL_HOTKEY) & 0x8000) {
    samples->common = HOTKEY_PRESSED_COMMON_SAMPLE_COUNT_REDEFINE;
    samples->rare = HOTKEY_PRESSED_RARE_SAMPLE_COUNT_REDEFINE;
    samples->super = HOTKEY_PRESSED_SUPER_SAMPLE_COUNT_REDEFINE;
    sprintf(debug_string, "Samples: hotkey pressed. Sample counts just set to maximum: %d %d %d", samples->common, samples->rare, samples->super);
    OutputDebugStringA(debug_string);
    goto end_section;
  }

  int value_to_add = 1;
  if (GetAsyncKeyState(SECRET_HOTKEY) & 0x8000) {
    sprintf(debug_string, "Samples: secret hotkey pressed. Samples piclup will be default(1)");
    OutputDebugStringA(debug_string);
  } else {
    value_to_add = HOTKEY_NOT_PRESSED_ADD_VALUE;
    int add_limit = 100 - samples_count_now;
    if (add_limit == 0) {
      sprintf(debug_string, "Samples: limit reached %d. No additional samples will be added", add_limit);
      OutputDebugStringA(debug_string);
    } else if (add_limit < 0) {
      samples->common = 50;
      samples->rare = 40;
      samples->super = 10;
      sprintf(debug_string, "Samples: count is more than allowed: %d. No additional samples will be added. Sample counts are set to maximum: %d %d %d", samples_count_now, samples->common, samples->rare, samples->super);
      OutputDebugStringA(debug_string);
    } else if (value_to_add > add_limit) {
      value_to_add = add_limit;
      sprintf(debug_string, "Samples: too much samples already collected. Add value is clamped to %d/%d", value_to_add, HOTKEY_NOT_PRESSED_ADD_VALUE);
      OutputDebugStringA(debug_string);
    } else {
      sprintf(debug_string, "Samples: will add %d of type %d", value_to_add, sample_type);
      OutputDebugStringA(debug_string);
    }
  }

  *picked_up_sample_counter += value_to_add;
  /*
  if (sample_type == 0) {
     samples->common += value_to_add;
  }
  if (sample_type == 1) {
     samples->rare += value_to_add;
  }
  if (sample_type == 2) {
     samples->super += value_to_add;
  }
  */

  /*
  samples->common += value_to_add+1;
  samples->rare += value_to_add+2;
  samples->super += value_to_add+3;
  */
  /*
  // hardcoded limit guard
  samples_count_now = samples->common + samples->rare + samples->super;
  if (samples_count_now > 100) {
    samples->common = 50;
    samples->rare = 40;
    samples->super = 10;
    sprintf(debug_string, "Samples: Hardcoded guard. Samples SUM is >100: %d. Sample counts are reset to maximum allowed: %d %d %d", samples_count_now, samples->common, samples->rare, samples->super);
    OutputDebugStringA(debug_string);
  }
  */

/*
  // output debug. you can look in DebugViewPP tool https://github.com/CobaltFusion/DebugViewPP
  sprintf(debug_string, "Samples out: common %d | rare %d | super %d", samples->common, samples->rare, samples->super);
  OutputDebugStringA(debug_string);
*/
end_section:
{$asm}
jmp samples_return

samples_inject:
jmp far samples_newmem
nop 3

samples_return:
registersymbol(samples_inject)

[DISABLE]

samples_inject:
  db 48 8D 14 41 48 8B 43 40 4B 8D 0C 89 44 01 7C 90 04

unregistersymbol(samples_inject)
dealloc(samples_newmem)

{
// ORIGINAL CODE - INJECTION POINT: game.dll+608B8F

game.dll+608B68: 41 FF C0        - inc r8d
game.dll+608B6B: 45 3B C1        - cmp r8d,r9d
game.dll+608B6E: 72 E0           - jb game.dll+608B50
game.dll+608B70: B8 FF FF FF FF  - mov eax,FFFFFFFF
game.dll+608B75: 48 8B 74 24 48  - mov rsi,[rsp+48]
game.dll+608B7A: 48 8B 6C 24 40  - mov rbp,[rsp+40]
game.dll+608B7F: 48 8B 7C 24 50  - mov rdi,[rsp+50]
game.dll+608B84: 44 8B C8        - mov r9d,eax
game.dll+608B87: 41 8D 4E FF     - lea ecx,[r14-01]
game.dll+608B8B: 4B 8D 04 89     - lea rax,[r9+r9*4]
// ---------- INJECTING HERE ----------
game.dll+608B8F: 48 8D 14 41     - lea rdx,[rcx+rax*2]
// ---------- DONE INJECTING  ----------
game.dll+608B93: 48 8B 43 40     - mov rax,[rbx+40]
game.dll+608B97: 4B 8D 0C 89     - lea rcx,[r9+r9*4]
game.dll+608B9B: 44 01 7C 90 04  - add [rax+rdx*4+04],r15d
game.dll+608BA0: BA 94 4C 74 92  - mov edx,92744C94
game.dll+608BA5: 48 8B 43 40     - mov rax,[rbx+40]
game.dll+608BA9: 4C 8D 04 C8     - lea r8,[rax+rcx*8]
game.dll+608BAD: 48 8B 43 30     - mov rax,[rbx+30]
game.dll+608BB1: 4A 8B 0C C8     - mov rcx,[rax+r9*8]
game.dll+608BB5: 8B 49 10        - mov ecx,[rcx+10]
game.dll+608BB8: E8 63 13 49 00  - call game.dll+A99F20
}

Exemplify1524
Cheater
Cheater
Posts: 34
Joined: Tue Apr 30, 2024 8:37 am
Reputation: 16

Re: HELLDIVERS 2

Post by Exemplify1524 »

Add samples not while taking sample seems like work only if you host. If you not host, samples taken not while you actually take samples are shown but excluded from finish rewards (tested only on 1 game. other 2 games me was host)

But as game process it is very good. It is not so obvious for other players that you are cheating. They say GG when finishing. But they can see sum of samples you taken after the game on ship stats.

sinner2469
Novice Cheater
Novice Cheater
Posts: 20
Joined: Fri Apr 23, 2021 10:24 am
Reputation: 1

Re: HELLDIVERS 2

Post by sinner2469 »

@gir489
the super damage no longer affects being able to one shot drone towers and the eye of Sauron Tower which both require hell bombs the old super damage was to be able to one shot both but whatever was changed recently everything else gets one shot except those two thing
sorry for the double post but didint know who to toss this to gir or zod with this

User avatar
ZoDDeL
Table Makers
Table Makers
Posts: 138
Joined: Mon May 08, 2017 9:37 am
Reputation: 294

Re: HELLDIVERS 2

Post by ZoDDeL »

sinner2469 wrote:
Tue May 21, 2024 4:31 pm
@ZoDDeL
the super damage no longer affects being able to one shot drone towers and the eye of Sauron Tower which both require hell bombs the old super damage was to be able to one shot both but whatever was changed recently everything else gets one shot except those two things

helldivers2 ZoDDeL 18.may.24 super damage from this one shots drone towers and the eye of Sauron Tower
helldivers2 ZoDDeL 19.may.24 super damage from this does not one shots drone towers and the eye of Sauron Tower
sinner2469 wrote:
Tue May 21, 2024 6:38 pm
@gir489
the super damage no longer affects being able to one shot drone towers and the eye of Sauron Tower which both require hell bombs the old super damage was to be able to one shot both but whatever was changed recently everything else gets one shot except those two thing
sorry for the double post but didint know who to toss this to gir or zod with this
its my script.

(ctrl+f) search for>>>
dmg_Super:

then change the value in this line>>>
mov [rcx+1C],#50 // writes demolition value

previous i had the value at #100
i took it down to 50 because the demo value has an effect on destroyable objects.
too low = nothing happens
too high = object gets deleted without any effect
optimal value = object explodes or splits up with a deying animation.

some objects dont trigger mission completeten if the value is too high.
so change it and try yourself.
Last edited by ZoDDeL on Wed May 22, 2024 3:22 am, edited 1 time in total.

User avatar
gir489
RCE Fanatics
RCE Fanatics
Posts: 698
Joined: Mon May 08, 2017 4:08 am
Reputation: 514

Re: HELLDIVERS 2

Post by gir489 »

Allow Vaults To Work In Solo seems to have unintended side effects of causing the pellican to extract if you open a vault then get into the pellican. It will leave without waiting for the other X number of players left, because it thinks X = total from the JMP scenario I overrided it with the vault. I'll have to find a way to not cause this, but for now, I've moved the Allow Vaults To Work In Solo script into Extra Scripts.

EDIT: I just realized, my past self must've called it "In Solo" because I knew of this side effect while reversing the function...

shunter6669
Novice Cheater
Novice Cheater
Posts: 18
Joined: Fri Oct 25, 2019 9:22 am
Reputation: 2

Re: HELLDIVERS 2

Post by shunter6669 »

ZoDDeL wrote:
Tue May 21, 2024 9:46 am
AMGcheat wrote:
Tue May 21, 2024 1:18 am

Sorry for the late reply and thank you so much for the response ZoDDeL sir I appreciate all your work :D

I also would like to ask if it's possible to make the sentry/turrets have unlimited ammo? I've learned a bit using CE the past couple of days I'd like to attempt to try to figure out if it's at all possible. Thank you!
in theory yes. but very impratical to work with.
in case of my table currently using the third version of no-reload (read based) that only works for player.
the previous no-reload (write based) worked for enemy and player. this one would also work for turrets, drones etc.
but i could not find a way to filter them (compare) so i switched to another opcode/instruction for no-reload.
oddity93 wrote:
Tue May 21, 2024 9:36 am
ZoDDeL wrote:
Mon May 20, 2024 1:53 pm
@ZoD
thanks for the info!
one last thing, hopefully. which part of the scripts cause enemies to not attack? its somewhat stagnant without the swarms of bugs
i dont have a script in my table to make enemies not attack. a while back then i had a script that make most minor enemies to no see the player (i assume like a smoke bomb effect) but i did not update it because its more of a gimmick.

maybe you mean enemies not moving?
then this is part of the speedhack. if the enemies have movespeed multiplier at (float)0 they cannot move anymore.
but the could still jump/charge because that are attacks not basic movement. if you walk close to the bugs they still can attack you if you are in their melee range. and bots just shoot at you.
if you dont like non moving enemies just change the speedhack script / aio script and set the enemy speed multiplier to (float) 1
thats default movement speed. or set it to (float) 0.90 or something similar to slow them down a bit.
Can you readd or re share the v2. that one allowed alot tof the strats to also hav inf ammo like autocannon and EAT

JKTrigger
Noobzor
Noobzor
Posts: 8
Joined: Wed May 22, 2024 8:17 am
Reputation: 0

Re: HELLDIVERS 2

Post by JKTrigger »

Appreciate your work. It's just that if I want to customize the weapon damage, I need to change it on the CE every time I start the game. Is there any way to save the results of my last modification and load them with one click on the next startup? :?

Post Reply

Who is online

Users browsing this forum: Amsxure, Baidu [Spider], BigBossJ, darkselfbr1, Google [Bot], Google Adsense [Bot], gunderful753, liquidxearo1, makrinthor, Sarevok, Seipherwood, SemrushBot, sepphiex, Timmehh, vegetaz, WingBoard2