Terraria 1.4 [Steam] [UPDATED]

9

951753

Noobzor
Joined
Jul 18, 2017
Messages
8
Sir Cancerlot said:
I can't get the player pointer cheats to work (CE 7.1)
All values are ?? and the adress of username is ????????
None of the scripts can be enabled
beguiler said:
Yeah same here. Can't get it to work in either GoG 1.4 or Steam 1.4.0.2. It doesn't look like an AMD/Intel Problem. The address and code do enable but I get no player pointer. Tried setting a breakpoint at the address in question but it never actually breaks. Tried both Journey mode and Classic then getting hit by something (since it is the DrawLife function) but it didn't break. So it's like it is not actually hitting the code. BTW new characters so that might also be a factor but I don't have an old character anymore to load.
Using CE 7.0 the player pointer works just fine. Intel CPU, Steam 1.4.0.2.
 
E

EphenSteve

What is cheating?
Joined
Mar 22, 2017
Messages
4
Made a couple things for 1.4.0.2 for AMD but I can't remember how to update the old stuff. I know how to dissect an area for the player stats from health but I haven't learned how to utilize any of the named areas values... any tips and I can try to help resurrect these for AMD Users.

*Updated with okami_x's "Player" script that was updated by beguiler that also works for AMD
*Fixed Max Minions (sorry had it so you had to wear the tiki armor)
Added some extra's I found in the the memory area.

Let me know if this works.


Let me know if there is anything I can try to make because this can be some motivation for me or others to learn more.
 

Attachments

B

beguiler

Expert Cheater
Joined
Mar 19, 2017
Messages
73
951753 said:
Using CE 7.0 the player pointer works just fine. Intel CPU, Steam 1.4.0.2.
I couldn't get it to work even with CE 7.0 so I changed the script to the following:
Code:
<i>
</i>{ Game   : Terraria.exe
  Version: 
  Date   : 2020-05-16
  Author : Okami-x
  
}
//original - couldn't get this to work for me 
//define(address,Terraria.GameContent.UI.ClassicPlayerResourcesDisplaySet::DrawLife+513)
//define(bytes,DB 80 90 03 00 00)
//On Mouse Over HP Bar - alt method but requires to put mouse over HP to get address
//define(address,Terraria.GameContent.UI.CommonResourceBarMethods::DrawLifeMouseOver+34)
//define(bytes,8b 87 90 03 00 00)
//Player.Update - better method all you have to do is move character and it will get the address
define(address,Terraria.Player::Update+F31E)
define(bytes,8B 80 90 03 00 00)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000)
label(code)
label(return)
label(player_ptr)
registersymbol(player_ptr)

newmem:

code:
// Player.update
  mov [player_ptr],eax
  mov eax,[eax+00000390]
//MouseOver HP Bar
//  mov [player_ptr],edi
//  mov eax,[edi+00000390]
//original
//  mov [player_ptr],eax
//  fild dword ptr [eax+00000390]
  jmp return

player_ptr:
dd 0

address:
  jmp newmem
  nop
return:

[DISABLE]

address:
  db bytes
  // fild dword ptr [eax+00000390]

dealloc(newmem)
unregistersymbol(player_ptr)
To use it just select all and copy it, then open the My Player Pointer Script select all and paste. Worked for me with GoG v1.4 and Steam v1.4.0.2, both on AMD.
 
9

951753

Noobzor
Joined
Jul 18, 2017
Messages
8
2x faster respawn time
Code:
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      45
      <Description>"2x faster respawn time"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

aobscan(INJECT,FF 8E 2C 03 00 00 83) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
//dec [esi+0000032C]
  sub [esi+0000032C],2
  jmp return

INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db FF 8E 2C 03 00 00

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1C205583

1C20555C: 7E 08                 -  jle 1C205566
1C20555E: FF 8E 2C 03 00 00     -  dec [esi+0000032C]
1C205564: EB 54                 -  jmp 1C2055BA
1C205566: 8B 46 04              -  mov eax,[esi+04]
1C205569: 3B 05 10 0E 4F 01     -  cmp eax,[014F0E10]
1C20556F: 74 09                 -  je 1C20557A
1C205571: 83 3D A4 0E 4F 01 02  -  cmp dword ptr [014F0EA4],02
1C205578: 75 40                 -  jne 1C2055BA
1C20557A: C6 86 FB 05 00 00 01  -  mov byte ptr [esi+000005FB],01
1C205581: EB 37                 -  jmp 1C2055BA
// ---------- INJECTING HERE ----------
1C205583: FF 8E 2C 03 00 00     -  dec [esi+0000032C]
// ---------- DONE INJECTING  ----------
1C205589: 83 BE 2C 03 00 00 00  -  cmp dword ptr [esi+0000032C],00
1C205590: 7F 28                 -  jg 1C2055BA
1C205592: A1 10 0E 4F 01        -  mov eax,[014F0E10]
1C205597: 3B 46 04              -  cmp eax,[esi+04]
1C20559A: 75 1E                 -  jne 1C2055BA
1C20559C: A1 9C 5C E1 03        -  mov eax,[03E15C9C]
1C2055A1: 83 B8 90 00 00 00 00  -  cmp dword ptr [eax+00000090],00
1C2055A8: 7E 07                 -  jle 1C2055B1
1C2055AA: C6 05 7A 10 4F 01 01  -  mov byte ptr [014F107A],01
1C2055B1: 8B CE                 -  mov ecx,esi
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
4x faster respawn time
Code:
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      46
      <Description>"4x faster respawn time"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

aobscan(INJECT,FF 8E 2C 03 00 00 83) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
//dec [esi+0000032C]
  sub [esi+0000032C],4
  jmp return

INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db FF 8E 2C 03 00 00

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 1C205583

1C20555C: 7E 08                 -  jle 1C205566
1C20555E: FF 8E 2C 03 00 00     -  dec [esi+0000032C]
1C205564: EB 54                 -  jmp 1C2055BA
1C205566: 8B 46 04              -  mov eax,[esi+04]
1C205569: 3B 05 10 0E 4F 01     -  cmp eax,[014F0E10]
1C20556F: 74 09                 -  je 1C20557A
1C205571: 83 3D A4 0E 4F 01 02  -  cmp dword ptr [014F0EA4],02
1C205578: 75 40                 -  jne 1C2055BA
1C20557A: C6 86 FB 05 00 00 01  -  mov byte ptr [esi+000005FB],01
1C205581: EB 37                 -  jmp 1C2055BA
// ---------- INJECTING HERE ----------
1C205583: FF 8E 2C 03 00 00     -  dec [esi+0000032C]
// ---------- DONE INJECTING  ----------
1C205589: 83 BE 2C 03 00 00 00  -  cmp dword ptr [esi+0000032C],00
1C205590: 7F 28                 -  jg 1C2055BA
1C205592: A1 10 0E 4F 01        -  mov eax,[014F0E10]
1C205597: 3B 46 04              -  cmp eax,[esi+04]
1C20559A: 75 1E                 -  jne 1C2055BA
1C20559C: A1 9C 5C E1 03        -  mov eax,[03E15C9C]
1C2055A1: 83 B8 90 00 00 00 00  -  cmp dword ptr [eax+00000090],00
1C2055A8: 7E 07                 -  jle 1C2055B1
1C2055AA: C6 05 7A 10 4F 01 01  -  mov byte ptr [014F107A],01
1C2055B1: 8B CE                 -  mov ecx,esi
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
I do not recommend respawning too fast, as it might create annoying situations where you get perpetually ganked by monsters.
 
X

x410x

What is cheating?
Joined
Sep 17, 2019
Messages
1
beguiler said:
951753 said:
Using CE 7.0 the player pointer works just fine. Intel CPU, Steam 1.4.0.2.
I couldn't get it to work even with CE 7.0 so I changed the script to the following:
Code:
<i>
</i>{ Game   : Terraria.exe
  Version: 
  Date   : 2020-05-16
  Author : Okami-x
  
}
//original - couldn't get this to work for me 
//define(address,Terraria.GameContent.UI.ClassicPlayerResourcesDisplaySet::DrawLife+513)
//define(bytes,DB 80 90 03 00 00)
//On Mouse Over HP Bar - alt method but requires to put mouse over HP to get address
//define(address,Terraria.GameContent.UI.CommonResourceBarMethods::DrawLifeMouseOver+34)
//define(bytes,8b 87 90 03 00 00)
//Player.Update - better method all you have to do is move character and it will get the address
define(address,Terraria.Player::Update+F31E)
define(bytes,8B 80 90 03 00 00)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000)
label(code)
label(return)
label(player_ptr)
registersymbol(player_ptr)

newmem:

code:
// Player.update
  mov [player_ptr],eax
  mov eax,[eax+00000390]
//MouseOver HP Bar
//  mov [player_ptr],edi
//  mov eax,[edi+00000390]
//original
//  mov [player_ptr],eax
//  fild dword ptr [eax+00000390]
  jmp return

player_ptr:
dd 0

address:
  jmp newmem
  nop
return:

[DISABLE]

address:
  db bytes
  // fild dword ptr [eax+00000390]

dealloc(newmem)
unregistersymbol(player_ptr)

{
To use it just select all and copy it, then open the My Player Pointer Script select all and paste. Worked for me with GoG v1.4 and Steam v1.4.0.2, both on AMD.
I cant get ether one to work for me, i'm on steam 1.4.0.2 and CE7.1. I get the same thing you got for the intel one, i can enable it but nothing works. I am running a 8700k too so i thought it should be fine. I tried yours but it almost looks like your paste got cut off since it ends in a { . I tried it regardless but i can not enable it and CE has this to say https://drive.google.com/uc?id=1PmzVUdPbRWfT7FgkMciN6zcDuVE1boWT . I Most other things in the table seem to work, its just the player pointer.
 
B

beguiler

Expert Cheater
Joined
Mar 19, 2017
Messages
73
x410x said:
I cant get ether one to work for me, i'm on steam 1.4.0.2 and CE7.1. I get the same thing you got for the intel one, i can enable it but nothing works. I am running a 8700k too so i thought it should be fine. I tried yours but it almost looks like your paste got cut off since it ends in a { . I tried it regardless but i can not enable it and CE has this to say . I Most other things in the table seem to work, its just the player pointer.
Whoops, that end { was not suppose to be there that was the start of a block of comments. I edit my post and removed it.

For some reason I also get that error from time to time. What I end up doing is reattaching CE to the terraria.exe process and it usually just starts working. Worst case just close CE then start it again while leaving Terraria running and try it again.

Though I am having a weird issue. I have made 3 new characters now under journey mode and 3 worlds, but after leaving a while and coming back the 3 characters couldn't be loaded. I ended up deleting them. And the worlds I generated were no longer Journey but classic. Not sure what is going on there. so be sure to back up your saves or only use some new throw away ones for now.

Edit: The issue with my saves looks like it's from swtiching between Steam and GoG builds.
 
O

okami_x

Expert Cheater
Joined
May 25, 2018
Messages
62
For the people that can't get the table to work.

It is not rare for the game not to load all symbols properly. I also get the ?? in my player pointer from time to time but if you wait some time, move around, maybe enter the world again it should work fine. I have tested this with CE 7.0 and CE 7.1 as well as my personalized CE. All of them work.

My suggestion is that you attach CE to the game on the Main menu screen before selecting single-player/multiplayer. Then once you are in your world try to enable the scripts. I always do this and i don't get any problems.

If it doesn't work it must be a problem with your version of the game (Assuming you have Intel CPU). The table is for the Steam 1.4.0.2.

I don't have a GOG version of the game to test the scripts, but it is possible for GOG version to be the problem.

I'm thinking of creating a discord server to explain how to do everything in the table and address some common issues.
If you think the discord server is a good idea let me know or send me a private message.
 
K

KoshyKofea

What is cheating?
Joined
May 18, 2020
Messages
0
Yo uh, we're going to need a new thing for the journeys end update
 
A

Anglican

Expert Cheater
Joined
Mar 14, 2017
Messages
98
I tried everything in that and still nothing. But I am on a I7 2600 cpu though. But other scripts works just the player pointers.

Would install the tmodloader help?
 
B

beguiler

Expert Cheater
Joined
Mar 19, 2017
Messages
73
Anglican said:
I tried everything in that and still nothing. But I am on a I7 2600 cpu though. But other scripts works just the player pointers.

Would install the tmodloader help?
Found out the reason okami_x's player script doesn't work for me. I use the interface setting of "fancy" for HP and Mana display. Since the code calls from UI.ClassicPlayerResources, it never gets called for the other interface types. So you can get it to work by switching to classic mode for HP and mana bars in the settings of terraria.
 
S

shadow1246421

What is cheating?
Joined
May 18, 2020
Messages
1
This is super cool
 
darkdex52

darkdex52

Expert Cheater
Joined
Apr 30, 2017
Messages
58
Found a pretty big problem with "Infinite Buff Timer". If you get with a nasty debuff, it will also last for 2 days. Got frozen by a monster, debuff says "2d" lol
 
Darkedone02

Darkedone02

Expert Cheater
Joined
Mar 2, 2017
Messages
616
beguiler said:
951753 said:
Using CE 7.0 the player pointer works just fine. Intel CPU, Steam 1.4.0.2.
I couldn't get it to work even with CE 7.0 so I changed the script to the following:
Code:
{ Game   : Terraria.exe
  Version: 
  Date   : 2020-05-16
  Author : Okami-x
  
}
//original - couldn't get this to work for me 
//define(address,Terraria.GameContent.UI.ClassicPlayerResourcesDisplaySet::DrawLife+513)
//define(bytes,DB 80 90 03 00 00)
//On Mouse Over HP Bar - alt method but requires to put mouse over HP to get address
//define(address,Terraria.GameContent.UI.CommonResourceBarMethods::DrawLifeMouseOver+34)
//define(bytes,8b 87 90 03 00 00)
//Player.Update - better method all you have to do is move character and it will get the address
define(address,Terraria.Player::Update+F31E)
define(bytes,8B 80 90 03 00 00)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000)
label(code)
label(return)
label(player_ptr)
registersymbol(player_ptr)

newmem:

code:
// Player.update
  mov [player_ptr],eax
  mov eax,[eax+00000390]
//MouseOver HP Bar
//  mov [player_ptr],edi
//  mov eax,[edi+00000390]
//original
//  mov [player_ptr],eax
//  fild dword ptr [eax+00000390]
  jmp return

player_ptr:
dd 0

address:
  jmp newmem
  nop
return:

[DISABLE]

address:
  db bytes
  // fild dword ptr [eax+00000390]

dealloc(newmem)
unregistersymbol(player_ptr)
To use it just select all and copy it, then open the My Player Pointer Script select all and paste. Worked for me with GoG v1.4 and Steam v1.4.0.2, both on AMD.
this does not work with me, and I have intel.
 
G

GuyMoose

What is cheating?
Joined
May 18, 2020
Messages
1
beguiler said:
Anglican said:
I tried everything in that and still nothing. But I am on a I7 2600 cpu though. But other scripts works just the player pointers.

Would install the tmodloader help?
Found out the reason okami_x's player script doesn't work for me. I use the interface setting of "fancy" for HP and Mana display. Since the code calls from UI.ClassicPlayerResources, it never gets called for the other interface types. So you can get it to work by switching to classic mode for HP and mana bars in the settings of terraria.
This fixed it for me finally. I tried both the original and the script someone else posted, after changing it to classic it finally worked! Thank you so muchy!
 
B

beguiler

Expert Cheater
Joined
Mar 19, 2017
Messages
73
this does not work with me, and I have intel.
Yeah the code I wrote is for AMD, but to make sure it's an intel/amd difference, first start Terraria then wait till the main menu is on the screen, then start CE and attach it to Terraria. From there try to run the script again. If you attach earlier than that I have run into issues of CE not finding it. You should be able to enable the script at the main menu. Then verify that it works and getting the data after loading your character.

If that doesn't work then there is probably a difference in the offset. So press memory view on the main CE window, there in the top part with all the code, right click and select go to address. In the box type "Terraria.Player::Update" (without quotes) and that will bring you to the beginning of the function. Now right click and go to address and type in "Terraria.Player::Update+F31E". That alignment will probably be wrong so scroll up till the code updates and kind of refreshes itself. From there scroll up or down to a line that is close to +F31E and find the line that matches the bytes:
Code:
Terraria.Player::Update+F31E - 8B 80 90030000        - mov eax,[eax+00000390]
                          ^__This will be different
Once you find that you can just change the code from
assert(Terraria.Player::Update+F31E" .... to assert(Terraria.Player::Update+XXXX .... where XXXX is the offset you found.
 
Top