Borderlands GOTY Enhanced - table v: 1.0.5 CT

Upload your cheat tables here (No requests)
evhybrid
Noobzor
Noobzor
Posts: 14
Joined: Wed Jun 19, 2019 11:17 pm
Reputation: 2

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by evhybrid »

SunBeam wrote:
Sat Oct 05, 2019 11:08 am
^ People in the capacity of just players always assume that any games in a series will have identical functionality available (even if the GFX might be different, you should have lootsploder in ANY BL game, right?). Well, that isn't the case. But then again, I'm not just playing...
Yes, obviously a person who casually plays video games wouldn't have the frame of reference to know exactly what is possible from a mod. Isn't that the whole reason why these type of forums exist? To share and ask questions to those who have experience doing these types of things?

I do commercial construction for a living, I wouldn't expect you to know off the top of your head exactly how much weight a load bearing wall could handle or what specific fire codes a hospital requires but if you asked I would happily explain it to you. Not exactly sure why you feel the need to reply with snide condescending remarks.

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
SunBeam
Administration
Administration
Posts: 3574
Joined: Sun Feb 04, 2018 7:16 pm
Reputation: 2761

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by SunBeam »

^ Welcome to 2021. Wonder if I had posted something like that 10 years ago, would you still necro it? /rhetorical. But yeah, lesson learned: ignorance is bliss. I'm going to do that from now on.

evhybrid
Noobzor
Noobzor
Posts: 14
Joined: Wed Jun 19, 2019 11:17 pm
Reputation: 2

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by evhybrid »

SunBeam wrote:
Mon Apr 19, 2021 5:27 am
^ Welcome to 2021. Wonder if I had posted something like that 10 years ago, would you still necro it? /rhetorical. But yeah, lesson learned: ignorance is bliss. I'm going to do that from now on.
Just recently revisited the game so I replied when I saw it. With your most recent troll of a post its just as relevant in the beginning of 2021 as it was at the end of 2019. The whole point of asking a community of experts what is possible from in-game mods is to gain knowledge and not be ignorant. Sorry if it triggers you that I used the forums for their intended purpose.

If anyone is interested in using the table I can confirm that it still works well. I haven't tried every single feature but the ones I tried worked perfectly. It seems like the fake more players hook is working since when it's on you can't pause the game and when you switch zones there is a countdown. Not entirely sure if it's making enemies stronger or increasing drops but it does seem like there is a lot more money dropping. Still the best table available for Borderlands GOTY edition.

User avatar
SunBeam
Administration
Administration
Posts: 3574
Joined: Sun Feb 04, 2018 7:16 pm
Reputation: 2761

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by SunBeam »

evhybrid wrote:
Sun May 02, 2021 12:49 pm
Still the best table available for Borderlands GOTY edition.
Get used to Tim's tables. They always are :)

User avatar
TheyCallMeTim13
Administration
Administration
Posts: 1632
Joined: Fri Mar 03, 2017 12:31 am
Reputation: 852

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by TheyCallMeTim13 »

Based on what lampuiho posted, I wrote some Lua to start setting the values for some testing. But so far I haven't gotten it to drop legendaries or see any real changes to the drops. The addresses get accessed with a lot of other stuff, so an injection script will take some time. Plus I still need to figure out what values to set them to. And there are addresses that get accessed that have similar values but aren't with the pointers that lampuiho posted. So there's still some things to work out.

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>13701</ID>
      <Description>"-[  Rarity Drops  ]-  ()-&gt;"</Description>
      <Options moHideChildren="1"/>
      <LastState/>
      <Color>008000</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">{$lua}

local DEBUG = DEBUG or false
-- DEBUG = true

local t = translate
local format = string.format
local strE = ''

local minV = 1/2^16

RarityBaseAddr = 'BorderlandsGOTY.exe+25AEDC8'
Rarities = {
	'VeryCommon',
	'VeryCommon_LowerPerPlayer',
	'Common',
	'Uncommon',
	'Uncommoner',
	'Rare',
	'VeryRare',
	'Awesome_VeryCommon',
	'Awesome_Common',
	'Awesome_Uncommon',
	'Awesome_Uncommoner',
	'Awesome_Rare',
	'Awesome_VeryRare',
	'Awesome_Legendary',
}
RarityOffsets = {
	VeryCommon 					= 0x8*0x159B7,
	VeryCommon_LowerPerPlayer 	= 0x8*0x16ADC,
	Common 						= 0x8*0x16ADF,
	Uncommon 					= 0x8*0x159B6,
	Uncommoner 					= 0x8*0x159B5,
	Rare 						= 0x8*0x159BE,
	VeryRare 					= 0x8*0x16AE0,
	Awesome_VeryCommon 			= 0x8*0x16AE1,
	Awesome_Common 				= 0x8*0x16AE2,
	Awesome_Uncommon 			= 0x8*0x16AE3,
	Awesome_Uncommoner 			= 0x8*0x16AE4,
	Awesome_Rare 				= 0x8*0x16AE5,
	Awesome_VeryRare 			= 0x8*0x16AE6,
	Awesome_Legendary 			= 0x8*0x16AE7,
}
RarityPresets = {
	default = {
		100,
		100,
		60,
		20,
		5,
		1.5,
		0.5,
		1,
		1,
		1,
		1,
		1.5,
		0.5,
		0.200000003
	},
	['Legendary 10x'] = 	{
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		2
	},
	['Legendary Only'] = 	{
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		100
	},
	['Purple Only'] = 	{
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		minV,
		100,
		minV
	},
	-- ['Blue Only'] = 	{
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV
	-- },
	-- ['Green Only'] = 	{
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV
	-- },
	-- ['White Only'] = 	{
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV,
	-- 	minV
	-- },
}

function setRarityDrops(values)
	if DEBUG then
		print(strE)
	end
	for i, v in ipairs(Rarities) do
		local offset = format('%x', RarityOffsets[v])
		local addr = '[['..RarityBaseAddr..']+'..offset..']+78'
		if DEBUG then
			print(addr, '  ', values[i], '  ', v, '  ', readFloat(addr))
		end
		writeFloat(addr, values[i])
	end
	return 0
end

function presetRarityDrops(key)
	return setRarityDrops(RarityPresets[key])
end

function resetRarityDrops()
	return presetRarityDrops('default')
end
[ENABLE]
[Disable]
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>13702</ID>
          <Description>"Reset  ()-&gt;"</Description>
          <LastState/>
          <Color>008000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript Async="1">{$lua}
[ENABLE]
if syntaxcheck then return end
presetRarityDrops('default')
if type(mrAutoDisable) == 'function' then
	mrAutoDisable(memrec.ID)
end
[Disable]
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>13703</ID>
          <Description>"Preset: Legendary 10x  ()-&gt;"</Description>
          <LastState/>
          <Color>008000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript Async="1">{$lua}
[ENABLE]
if syntaxcheck then return end
presetRarityDrops('Legendary 10x')
if type(mrAutoDisable) == 'function' then
	mrAutoDisable(memrec.ID)
end
[Disable]
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>13704</ID>
          <Description>"Preset: Legendary Only  ()-&gt;"</Description>
          <LastState/>
          <Color>008000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript Async="1">{$lua}
[ENABLE]
if syntaxcheck then return end
presetRarityDrops('Legendary Only')
if type(mrAutoDisable) == 'function' then
	mrAutoDisable(memrec.ID)
end
[Disable]
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>13705</ID>
          <Description>"Preset: Purple Only  ()-&gt;"</Description>
          <LastState/>
          <Color>008000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript Async="1">{$lua}
[ENABLE]
if syntaxcheck then return end
presetRarityDrops('Purple Only')
if type(mrAutoDisable) == 'function' then
	mrAutoDisable(memrec.ID)
end
[Disable]
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>13706</ID>
          <Description>"DropWeights  {  lampuiho  }"</Description>
          <LastState Value="" RealAddress="00000000"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>13707</ID>
              <Description>"VeryCommon"</Description>
              <LastState Value="0.00001525878906" RealAddress="343F0558"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*159B7</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13708</ID>
              <Description>"VeryCommon_LowerPerPlayer"</Description>
              <LastState Value="0.00001525878906" RealAddress="14B638D8"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*16ADC</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13709</ID>
              <Description>"Common"</Description>
              <LastState Value="0.00001525878906" RealAddress="14B63C18"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*16ADF</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13710</ID>
              <Description>"Uncommon"</Description>
              <LastState Value="0.00001525878906" RealAddress="343F03B8"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*159B6</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13711</ID>
              <Description>"Uncommoner"</Description>
              <LastState Value="0.00001525878906" RealAddress="343F0218"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*159B5</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13712</ID>
              <Description>"Rare"</Description>
              <LastState Value="0.00001525878906" RealAddress="343F06F8"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*159BE</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13713</ID>
              <Description>"VeryRare"</Description>
              <LastState Value="0.00001525878906" RealAddress="14B63DB8"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*16AE0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13714</ID>
              <Description>"Awesome_VeryCommon"</Description>
              <LastState Value="0.00001525878906" RealAddress="14B63F58"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*16AE1</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13715</ID>
              <Description>"Awesome_Common"</Description>
              <LastState Value="0.00001525878906" RealAddress="14B640F8"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*16AE2</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13716</ID>
              <Description>"Awesome_Uncommon"</Description>
              <LastState Value="0.00001525878906" RealAddress="14B64298"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*16AE3</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13717</ID>
              <Description>"Awesome_Uncommoner"</Description>
              <LastState Value="0.00001525878906" RealAddress="14B64438"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*16AE4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13718</ID>
              <Description>"Awesome_Rare"</Description>
              <LastState Value="0.00001525878906" RealAddress="14B645D8"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*16AE5</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13719</ID>
              <Description>"Awesome_VeryRare"</Description>
              <LastState Value="0.00001525878906" RealAddress="14B64778"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*16AE6</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>13720</ID>
              <Description>"Awesome_Legendary"</Description>
              <LastState Value="2" RealAddress="14B64918"/>
              <VariableType>Float</VariableType>
              <Address>BorderlandsGOTY.exe+25AEDC8</Address>
              <Offsets>
                <Offset>78</Offset>
                <Offset>8*16AE7</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

User avatar
TheyCallMeTim13
Administration
Administration
Posts: 1632
Joined: Fri Mar 03, 2017 12:31 am
Reputation: 852

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by TheyCallMeTim13 »

All right so this has the golden key chest in Fyrestone dropping legendaries, but it seems to be the same handgun. So it looks like "VeryRare" is for the legendaries.

Code: Select all

{
	Process				: BorderlandsGOTY.exe  -  (x64)
	Module				: BorderlandsGOTY.exe
	Game Title			: Borderlands GOTY Enhanced
	Game File Version 	: 1.5.0.0
	Game Version		: 1.5.0.0
	CE Version			: 7.2
	Script Version		: 0.0.1
	Date				: 05/03/21
	Author				: TheyCallMeTim13
	Name				: RarityDropHook

	Rarity Drop Hook
}

{$STRICT}

define(address, BorderlandsGOTY.exe+371350)
define(bytes, F3 0F 10 31 48 85 FF)

////
//// ------------------------------ ENABLE ------------------------------
[ENABLE]
aobScanModule(aobRarityDropHook, BorderlandsGOTY.exe, 48xxxxF3xxxxxx48xxxx74xx4Dxxxx74xx49xxxx48)
define(injRarityDropHook, aobRarityDropHook+3)
assert(injRarityDropHook, bytes)
registerSymbol(injRarityDropHook)

alloc(memRarityDropHook, 0x400, injRarityDropHook)

label(fltRarityDropHook)
registerSymbol(fltRarityDropHook)
label(flgRarityDropHook)
registerSymbol(flgRarityDropHook)

label(ptrRarityDropHook)
registerSymbol(ptrRarityDropHook)

label(n_code)
label(o_code)
label(exit)
label(return)

memRarityDropHook:
	fltRarityDropHook:
		dd (float)0.5
		dd (float)10000
	align 10
	flgRarityDropHook:
		db 00
	align 10
	ptrRarityDropHook:
		dq 0
	align 10 CC
	n_code:
		mov [ptrRarityDropHook],rcx
		movss xmm6,[fltRarityDropHook]
		comiss xmm6,[rcx]
		movss xmm6,[rcx]
		jne o_code
			movss xmm6,[fltRarityDropHook+4]
			// movss [rcx],xmm6
	o_code:
		// movss xmm6,[rcx]
		test rdi,rdi
	exit:
		jmp return


////
//// ---------- Injection Point ----------
injRarityDropHook:
	jmp n_code
	nop
	nop
	return:


////
//// ------------------------------ DISABLE ------------------------------
[DISABLE]
////
//// ---------- Injection Point ----------
injRarityDropHook:
	db bytes

unregisterSymbol(injRarityDropHook)

unregisterSymbol(fltRarityDropHook)
unregisterSymbol(flgRarityDropHook)

unregisterSymbol(ptrRarityDropHook)

dealloc(memRarityDropHook)

{
//// Injection Point: BorderlandsGOTY.exe+371350  -  000000013F921350
//// AOB address: 000000013F92134D  -  BorderlandsGOTY.exe+37134D
//// Process: BorderlandsGOTY.exe  -  000000013F5B0000
//// Module: BorderlandsGOTY.exe  -  000000013F5B0000
//// Module Size: 00000000028FA000
BorderlandsGOTY.exe+371317:  41 5E                       -  pop r14                            
BorderlandsGOTY.exe+371319:  C3                          -  ret                                
BorderlandsGOTY.exe+37131A:  CC                          -  int 3                              
BorderlandsGOTY.exe+37131B:  CC                          -  int 3                              
BorderlandsGOTY.exe+37131C:  CC                          -  int 3                              
BorderlandsGOTY.exe+37131D:  CC                          -  int 3                              
BorderlandsGOTY.exe+37131E:  CC                          -  int 3                              
BorderlandsGOTY.exe+37131F:  CC                          -  int 3                              
BorderlandsGOTY.exe+371320:  48 89 5C 24 08              -  mov [rsp+08],rbx                   
BorderlandsGOTY.exe+371325:  48 89 6C 24 10              -  mov [rsp+10],rbp                   
BorderlandsGOTY.exe+37132A:  48 89 74 24 18              -  mov [rsp+18],rsi                   
BorderlandsGOTY.exe+37132F:  48 89 7C 24 20              -  mov [rsp+20],rdi                   
BorderlandsGOTY.exe+371334:  41 56                       -  push r14                           
BorderlandsGOTY.exe+371336:  48 83 EC 40                 -  sub rsp,40                         
BorderlandsGOTY.exe+37133A:  48 8B 79 04                 -  mov rdi,[rcx+04]                   
BorderlandsGOTY.exe+37133E:  49 8B F0                    -  mov rsi,r8                         
BorderlandsGOTY.exe+371341:  48 8B 59 0C                 -  mov rbx,[rcx+0C]                   
BorderlandsGOTY.exe+371345:  4C 8B F2                    -  mov r14,rdx                        
BorderlandsGOTY.exe+371348:  0F29 74 24 30               -  movaps [rsp+30],xmm6               
BorderlandsGOTY.exe+37134D:  48 8B E9                    -  mov rbp,rcx                        <<<--- AOB Starts Here
////  INJECTING START  ----------------------------------------------------------
BorderlandsGOTY.exe+371350:  F3 0F10 31                  -  movss xmm6,[rcx]                   
BorderlandsGOTY.exe+371354:  48 85 FF                    -  test rdi,rdi                       
////  INJECTING END  ----------------------------------------------------------
BorderlandsGOTY.exe+371357:  74 33                       -  je BorderlandsGOTY.exe+37138C      
BorderlandsGOTY.exe+371359:  4D 85 C0                    -  test r8,r8                         
BorderlandsGOTY.exe+37135C:  74 10                       -  je BorderlandsGOTY.exe+37136E      
BorderlandsGOTY.exe+37135E:  49 8B D0                    -  mov rdx,r8                         
BorderlandsGOTY.exe+371361:  48 8B CF                    -  mov rcx,rdi                        
BorderlandsGOTY.exe+371364:  E8 57CDFFFF                 -  call BorderlandsGOTY.exe+36E0C0    
BorderlandsGOTY.exe+371369:  48 85 C0                    -  test rax,rax                       
BorderlandsGOTY.exe+37136C:  75 10                       -  jne BorderlandsGOTY.exe+37137E     
BorderlandsGOTY.exe+37136E:  49 8B D6                    -  mov rdx,r14                        
BorderlandsGOTY.exe+371371:  48 8B CF                    -  mov rcx,rdi                        
BorderlandsGOTY.exe+371374:  E8 47CDFFFF                 -  call BorderlandsGOTY.exe+36E0C0    
BorderlandsGOTY.exe+371379:  48 85 C0                    -  test rax,rax                       
BorderlandsGOTY.exe+37137C:  74 0E                       -  je BorderlandsGOTY.exe+37138C      
BorderlandsGOTY.exe+37137E:  48 8B D0                    -  mov rdx,rax                        
BorderlandsGOTY.exe+371381:  48 8B CF                    -  mov rcx,rdi                        
BorderlandsGOTY.exe+371384:  E8 E717FFFF                 -  call BorderlandsGOTY.exe+362B70    
BorderlandsGOTY.exe+371389:  0F28 F0                     -  movaps xmm6,xmm0                   
BorderlandsGOTY.exe+37138C:  48 85 DB                    -  test rbx,rbx                       
BorderlandsGOTY.exe+37138F:  0F84 8A000000               -  je BorderlandsGOTY.exe+37141F      
//// Template: I2CEA_AOBFullInjectionWithValues
//// Generated with: I2 Cheat Engine Auto Assembler Script Template Generator
//// Code Happy, Code Freely, Be Awesome.
}
EDIT: So this one might affect leveling/XP.

lampuiho
Expert Cheater
Expert Cheater
Posts: 90
Joined: Sun Jul 16, 2017 6:06 am
Reputation: 45

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by lampuiho »

Tim, you need to level up past level 10 to get it to start dropping legendaries if I remember correctly. You should see legendaries lootsplosion once you get to the second map.

User avatar
TheyCallMeTim13
Administration
Administration
Posts: 1632
Joined: Fri Mar 03, 2017 12:31 am
Reputation: 852

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by TheyCallMeTim13 »

lampuiho wrote:
Wed May 05, 2021 10:17 am
Tim, you need to level up past level 10 to get it to start dropping legendaries if I remember correctly. You should see legendaries lootsplosion once you get to the second map.
That's what I started thinking. I'm at 14 but still in the first map. I did get some thing figured out. Got it where lockers always give health Items, the gold key chest gives legendaries, and red chests give purple items.

This hooks the address.

Code: Select all

{
	Process				: BorderlandsGOTY.exe  -  (x64)
	Module				: BorderlandsGOTY.exe
	Game Title			: Borderlands GOTY Enhanced
	Game File Version 	: 1.5.0.0
	Game Version		: 1.5.0.0
	CE Version			: 7.2
	Script Version		: 0.0.1
	Date				: 05/04/21
	Author				: TheyCallMeTim13
	Name				: RarityDropHook

	Rarity Drop Hook
}

{$STRICT}

define(address, BorderlandsGOTY.exe+371395)
define(bytes, F6 43 64 01 48 8D 4B 64)

////
//// ------------------------------ ENABLE ------------------------------
[ENABLE]
aobScanModule(aobRarityDropHook, BorderlandsGOTY.exe, F6xxxxxx48xxxxxx74xx4Cxxxx49xxxxE8xxxxxxxxEBxx48)
define(injRarityDropHook, aobRarityDropHook)
assert(injRarityDropHook, bytes)
registerSymbol(injRarityDropHook)

alloc(memRarityDropHook, 0x400, injRarityDropHook)

label(ptrRarityDropHook)
registerSymbol(ptrRarityDropHook)

label(n_code)
label(o_code)
label(exit)
label(return)

memRarityDropHook:
	ptrRarityDropHook:
		dq 0
	align 10 CC
	n_code:
		mov rcx,[rbx+8]
		test rcx,rcx
		jz o_code
			mov ecx,[rcx+48]
			cmp ecx,6DDD
			jne o_code
				mov [ptrRarityDropHook],rbx
	o_code:
		test byte ptr [rbx+64],01
		lea rcx,[rbx+64]
	exit:
		jmp return


////
//// ---------- Injection Point ----------
injRarityDropHook:
	jmp n_code
	nop
	nop
	nop
	return:


////
//// ------------------------------ DISABLE ------------------------------
[DISABLE]
////
//// ---------- Injection Point ----------
injRarityDropHook:
	db bytes

unregisterSymbol(injRarityDropHook)

unregisterSymbol(ptrRarityDropHook)

dealloc(memRarityDropHook)

{
//// Injection Point: BorderlandsGOTY.exe+371395  -  000000013FA21395
//// AOB address: 000000013FA21395  -  BorderlandsGOTY.exe+371395
//// Process: BorderlandsGOTY.exe  -  000000013F6B0000
//// Module: BorderlandsGOTY.exe  -  000000013F6B0000
//// Module Size: 00000000028FA000
BorderlandsGOTY.exe+371354:  48 85 FF                    -  test rdi,rdi                       
BorderlandsGOTY.exe+371357:  74 33                       -  je BorderlandsGOTY.exe+37138C      
BorderlandsGOTY.exe+371359:  4D 85 C0                    -  test r8,r8                         
BorderlandsGOTY.exe+37135C:  74 10                       -  je BorderlandsGOTY.exe+37136E      
BorderlandsGOTY.exe+37135E:  49 8B D0                    -  mov rdx,r8                         
BorderlandsGOTY.exe+371361:  48 8B CF                    -  mov rcx,rdi                        
BorderlandsGOTY.exe+371364:  E8 57CDFFFF                 -  call BorderlandsGOTY.exe+36E0C0    
BorderlandsGOTY.exe+371369:  48 85 C0                    -  test rax,rax                       
BorderlandsGOTY.exe+37136C:  75 10                       -  jne BorderlandsGOTY.exe+37137E     
BorderlandsGOTY.exe+37136E:  49 8B D6                    -  mov rdx,r14                        
BorderlandsGOTY.exe+371371:  48 8B CF                    -  mov rcx,rdi                        
BorderlandsGOTY.exe+371374:  E8 47CDFFFF                 -  call BorderlandsGOTY.exe+36E0C0    
BorderlandsGOTY.exe+371379:  48 85 C0                    -  test rax,rax                       
BorderlandsGOTY.exe+37137C:  74 0E                       -  je BorderlandsGOTY.exe+37138C      
BorderlandsGOTY.exe+37137E:  48 8B D0                    -  mov rdx,rax                        
BorderlandsGOTY.exe+371381:  48 8B CF                    -  mov rcx,rdi                        
BorderlandsGOTY.exe+371384:  E8 E717FFFF                 -  call BorderlandsGOTY.exe+362B70    
BorderlandsGOTY.exe+371389:  0F28 F0                     -  movaps xmm6,xmm0                   
BorderlandsGOTY.exe+37138C:  48 85 DB                    -  test rbx,rbx                       
BorderlandsGOTY.exe+37138F:  0F84 8A000000               -  je BorderlandsGOTY.exe+37141F      
////  INJECTING START  ----------------------------------------------------------
BorderlandsGOTY.exe+371395:  F6 43 64 01                 -  test byte ptr [rbx+64],01          <<<--- AOB Starts Here
BorderlandsGOTY.exe+371399:  48 8D 4B 64                 -  lea rcx,[rbx+64]                   
////  INJECTING END  ----------------------------------------------------------
BorderlandsGOTY.exe+37139D:  74 0D                       -  je BorderlandsGOTY.exe+3713AC      
BorderlandsGOTY.exe+37139F:  4C 8B C6                    -  mov r8,rsi                         
BorderlandsGOTY.exe+3713A2:  49 8B D6                    -  mov rdx,r14                        
BorderlandsGOTY.exe+3713A5:  E8 26FEFFFF                 -  call BorderlandsGOTY.exe+3711D0    
BorderlandsGOTY.exe+3713AA:  EB 17                       -  jmp BorderlandsGOTY.exe+3713C3     
BorderlandsGOTY.exe+3713AC:  48 8D 8B D8000000           -  lea rcx,[rbx+000000D8]             
BorderlandsGOTY.exe+3713B3:  F6 01 01                    -  test byte ptr [rcx],01             
BorderlandsGOTY.exe+3713B6:  74 31                       -  je BorderlandsGOTY.exe+3713E9      
BorderlandsGOTY.exe+3713B8:  4C 8B C6                    -  mov r8,rsi                         
BorderlandsGOTY.exe+3713BB:  49 8B D6                    -  mov rdx,r14                        
BorderlandsGOTY.exe+3713BE:  E8 BDFEFFFF                 -  call BorderlandsGOTY.exe+371280    
BorderlandsGOTY.exe+3713C3:  0FB6 4B 60                  -  movzx ecx,byte ptr [rbx+60]        
BorderlandsGOTY.exe+3713C7:  85 C9                       -  test ecx,ecx                       
BorderlandsGOTY.exe+3713C9:  74 1B                       -  je BorderlandsGOTY.exe+3713E6      
BorderlandsGOTY.exe+3713CB:  83 E9 01                    -  sub ecx,01                         
BorderlandsGOTY.exe+3713CE:  0F84 9C000000               -  je BorderlandsGOTY.exe+371470      
BorderlandsGOTY.exe+3713D4:  83 E9 01                    -  sub ecx,01                         
BorderlandsGOTY.exe+3713D7:  0F84 8A000000               -  je BorderlandsGOTY.exe+371467      
BorderlandsGOTY.exe+3713DD:  83 F9 01                    -  cmp ecx,01                         
//// Template: I2CEA_AOBFullInjectionWithValues
//// Generated with: I2 Cheat Engine Auto Assembler Script Template Generator
//// Code Happy, Code Freely, Be Awesome.
}
And this will change the value being read.

Code: Select all

{
	Process				: BorderlandsGOTY.exe  -  (x64)
	Module				: BorderlandsGOTY.exe
	Game Title			: Borderlands GOTY Enhanced
	Game File Version 	: 1.5.0.0
	Game Version		: 1.5.0.0
	CE Version			: 7.2
	Script Version		: 0.0.1
	Date				: 05/03/21
	Author				: TheyCallMeTim13
	Name				: RarityDropRedHook

	Rarity Drop Red Hook
}

{$STRICT}

define(address, BorderlandsGOTY.exe+371350)
define(bytes, F3 0F 10 31 48 85 FF)

////
//// ------------------------------ ENABLE ------------------------------
[ENABLE]
aobScanModule(aobRarityDropRedHook, BorderlandsGOTY.exe, 48xxxxF3xxxxxx48xxxx74xx4Dxxxx74xx49xxxx48)
define(injRarityDropRedHook, aobRarityDropRedHook+3)
assert(injRarityDropRedHook, bytes)
registerSymbol(injRarityDropRedHook)

alloc(memRarityDropRedHook, 0x400, injRarityDropRedHook)

label(fltRarityDropRedHook)
registerSymbol(fltRarityDropRedHook)

label(ptrRarityDropRedHook)
registerSymbol(ptrRarityDropRedHook)

label(n_code)
label(o_code)
label(exit)
label(return)

memRarityDropRedHook:
	fltRarityDropRedHook:
		dd (float)100
	align 10
	ptrRarityDropRedHook:
		dq 0
	align 10 CC
	n_code:
		movss xmm6,[rcx]
		push rax
		mov rax,[ptrRarityDropHook]
		add rax,64
		add rax,44
		cmp rax,rcx
		pop rax
		jne o_code
			mov [ptrRarityDropRedHook],rcx
			movss xmm6,[fltRarityDropRedHook]
	o_code:
		// movss xmm6,[rcx]
		test rdi,rdi
	exit:
		jmp return


////
//// ---------- Injection Point ----------
injRarityDropRedHook:
	jmp n_code
	nop
	nop
	return:


////
//// ------------------------------ DISABLE ------------------------------
[DISABLE]
////
//// ---------- Injection Point ----------
injRarityDropRedHook:
	db bytes

unregisterSymbol(injRarityDropRedHook)

unregisterSymbol(fltRarityDropRedHook)

unregisterSymbol(ptrRarityDropRedHook)

dealloc(memRarityDropRedHook)

{
//// Injection Point: BorderlandsGOTY.exe+371350  -  000000013F921350
//// AOB address: 000000013F92134D  -  BorderlandsGOTY.exe+37134D
//// Process: BorderlandsGOTY.exe  -  000000013F5B0000
//// Module: BorderlandsGOTY.exe  -  000000013F5B0000
//// Module Size: 00000000028FA000
BorderlandsGOTY.exe+371317:  41 5E                       -  pop r14                            
BorderlandsGOTY.exe+371319:  C3                          -  ret                                
BorderlandsGOTY.exe+37131A:  CC                          -  int 3                              
BorderlandsGOTY.exe+37131B:  CC                          -  int 3                              
BorderlandsGOTY.exe+37131C:  CC                          -  int 3                              
BorderlandsGOTY.exe+37131D:  CC                          -  int 3                              
BorderlandsGOTY.exe+37131E:  CC                          -  int 3                              
BorderlandsGOTY.exe+37131F:  CC                          -  int 3                              
BorderlandsGOTY.exe+371320:  48 89 5C 24 08              -  mov [rsp+08],rbx                   
BorderlandsGOTY.exe+371325:  48 89 6C 24 10              -  mov [rsp+10],rbp                   
BorderlandsGOTY.exe+37132A:  48 89 74 24 18              -  mov [rsp+18],rsi                   
BorderlandsGOTY.exe+37132F:  48 89 7C 24 20              -  mov [rsp+20],rdi                   
BorderlandsGOTY.exe+371334:  41 56                       -  push r14                           
BorderlandsGOTY.exe+371336:  48 83 EC 40                 -  sub rsp,40                         
BorderlandsGOTY.exe+37133A:  48 8B 79 04                 -  mov rdi,[rcx+04]                   
BorderlandsGOTY.exe+37133E:  49 8B F0                    -  mov rsi,r8                         
BorderlandsGOTY.exe+371341:  48 8B 59 0C                 -  mov rbx,[rcx+0C]                   
BorderlandsGOTY.exe+371345:  4C 8B F2                    -  mov r14,rdx                        
BorderlandsGOTY.exe+371348:  0F29 74 24 30               -  movaps [rsp+30],xmm6               
BorderlandsGOTY.exe+37134D:  48 8B E9                    -  mov rbp,rcx                        <<<--- AOB Starts Here
////  INJECTING START  ----------------------------------------------------------
BorderlandsGOTY.exe+371350:  F3 0F10 31                  -  movss xmm6,[rcx]                   
BorderlandsGOTY.exe+371354:  48 85 FF                    -  test rdi,rdi                       
////  INJECTING END  ----------------------------------------------------------
BorderlandsGOTY.exe+371357:  74 33                       -  je BorderlandsGOTY.exe+37138C      
BorderlandsGOTY.exe+371359:  4D 85 C0                    -  test r8,r8                         
BorderlandsGOTY.exe+37135C:  74 10                       -  je BorderlandsGOTY.exe+37136E      
BorderlandsGOTY.exe+37135E:  49 8B D0                    -  mov rdx,r8                         
BorderlandsGOTY.exe+371361:  48 8B CF                    -  mov rcx,rdi                        
BorderlandsGOTY.exe+371364:  E8 57CDFFFF                 -  call BorderlandsGOTY.exe+36E0C0    
BorderlandsGOTY.exe+371369:  48 85 C0                    -  test rax,rax                       
BorderlandsGOTY.exe+37136C:  75 10                       -  jne BorderlandsGOTY.exe+37137E     
BorderlandsGOTY.exe+37136E:  49 8B D6                    -  mov rdx,r14                        
BorderlandsGOTY.exe+371371:  48 8B CF                    -  mov rcx,rdi                        
BorderlandsGOTY.exe+371374:  E8 47CDFFFF                 -  call BorderlandsGOTY.exe+36E0C0    
BorderlandsGOTY.exe+371379:  48 85 C0                    -  test rax,rax                       
BorderlandsGOTY.exe+37137C:  74 0E                       -  je BorderlandsGOTY.exe+37138C      
BorderlandsGOTY.exe+37137E:  48 8B D0                    -  mov rdx,rax                        
BorderlandsGOTY.exe+371381:  48 8B CF                    -  mov rcx,rdi                        
BorderlandsGOTY.exe+371384:  E8 E717FFFF                 -  call BorderlandsGOTY.exe+362B70    
BorderlandsGOTY.exe+371389:  0F28 F0                     -  movaps xmm6,xmm0                   
BorderlandsGOTY.exe+37138C:  48 85 DB                    -  test rbx,rbx                       
BorderlandsGOTY.exe+37138F:  0F84 8A000000               -  je BorderlandsGOTY.exe+37141F      
//// Template: I2CEA_AOBFullInjectionWithValues
//// Generated with: I2 Cheat Engine Auto Assembler Script Template Generator
//// Code Happy, Code Freely, Be Awesome.
}
Seems to be working so far, but I want to play with some of the other values that run in the "Rarity Drop Hook" code.

User avatar
TheyCallMeTim13
Administration
Administration
Posts: 1632
Joined: Fri Mar 03, 2017 12:31 am
Reputation: 852

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by TheyCallMeTim13 »

lampuiho wrote:
Wed May 05, 2021 10:17 am
Tim, you need to level up past level 10 to get it to start dropping legendaries if I remember correctly. You should see legendaries lootsplosion once you get to the second map.
What addresses are you changing, and what values are you using? I can't seem to get any change with the addresses you posted. I've completed the story missions at this point and tried all kinds of values with all the addresses. The ASM scripts I posted kind of works but I mostly get variations of the same weapons/mods.

User avatar
SunBeam
Administration
Administration
Posts: 3574
Joined: Sun Feb 04, 2018 7:16 pm
Reputation: 2761

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by SunBeam »

Hey, just noticed you do this in your "Rarity Drop Hook" script in your last post:

"
mov ecx,[rcx+48]
cmp ecx,6DDD
"

If that's what I think it is, then the (what's called as) FName id will change when a game updates or UEngine allocates UObjects differently for different users. Just keep this in mind if someone reports the script not working for them :)

BR,
Sun

lampuiho
Expert Cheater
Expert Cheater
Posts: 90
Joined: Sun Jul 16, 2017 6:06 am
Reputation: 45

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by lampuiho »

TheyCallMeTim13 wrote:
Sat May 08, 2021 10:24 pm
lampuiho wrote:
Wed May 05, 2021 10:17 am
Tim, you need to level up past level 10 to get it to start dropping legendaries if I remember correctly. You should see legendaries lootsplosion once you get to the second map.
What addresses are you changing, and what values are you using? I can't seem to get any change with the addresses you posted. I've completed the story missions at this point and tried all kinds of values with all the addresses. The ASM scripts I posted kind of works but I mostly get variations of the same weapons/mods.
Really? Maybe the order the game loads the UObject is different on my machine than yours so the index ends up being different. I deleted the game already. I was getting so many legendaries I had to turn up the value of other entries. :D
The pointer to the UObject table should still be the same though so maybe use a UObject dumper to look for the index of that object first then replace the index in my table with that index?
It is possible for me to make an AoB for you. I do have a script written for another unreal engine game (CastleStorm 2) to search for the UObject directly from the object table. So shouldn't take too much time for me. But I will have to install steam which I don't want to do because my PC died and the Laptop I'm using right now is my professor's.

User avatar
TheyCallMeTim13
Administration
Administration
Posts: 1632
Joined: Fri Mar 03, 2017 12:31 am
Reputation: 852

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by TheyCallMeTim13 »

lampuiho wrote:
Sun May 09, 2021 4:44 am
...
Really? Maybe the order the game loads the UObject is different on my machine than yours so the index ends up being different. I deleted the game already. I was getting so many legendaries I had to turn up the value of other entries. :D
The pointer to the UObject table should still be the same though so maybe use a UObject dumper to look for the index of that object first then replace the index in my table with that index?
It is possible for me to make an AoB for you. I do have a script written for another unreal engine game (CastleStorm 2) to search for the UObject directly from the object table. So shouldn't take too much time for me. But I will have to install steam which I don't want to do because my PC died and the Laptop I'm using right now is my professor's.
Yeah, that's about what I was thinking. It's just weird because the values look right, even the legendaries have the same 0.2 from BL2. I may actually try to dig through some of SunBeam's posts/tutorials again and see if I can figure it out.

And yeah probably best not to install steam on your professor's pc. But thanks for the help.

lampuiho
Expert Cheater
Expert Cheater
Posts: 90
Joined: Sun Jul 16, 2017 6:06 am
Reputation: 45

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by lampuiho »

TheyCallMeTim13 wrote:
Sun May 09, 2021 5:13 am
Yeah, that's about what I was thinking. It's just weird because the values look right, even the legendaries have the same 0.2 from BL2. I may actually try to dig through some of SunBeam's posts/tutorials again and see if I can figure it out.

And yeah probably best not to install steam on your professor's pc. But thanks for the help.
You probably don't need a tutorial for that.

Try this instead, change the hex index of PointerStuff to loop through every UObject and see their names.

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>4626</ID>
      <Description>"PointerStuff"</Description>
      <Options moHideChildren="1"/>
      <LastState Value="" Activated="1" RealAddress="00016AEB"/>
      <GroupHeader>1</GroupHeader>
      <Address>16aeb</Address>
      <CheatEntries>
        <CheatEntry>
          <ID>4632</ID>
          <Description>"UObjVtable"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>8 Bytes</VariableType>
          <Address>BorderlandsGOTY.exe+25AEDC8</Address>
          <Offsets>
            <Offset>0</Offset>
            <Offset>8*(PointerStuff)</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4622</ID>
          <Description>"UObjID2"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>4 Bytes</VariableType>
          <Address>BorderlandsGOTY.exe+25AEDC8</Address>
          <Offsets>
            <Offset>3c</Offset>
            <Offset>8*(PointerStuff)</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4621</ID>
          <Description>"UObjNameID"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>8 Bytes</VariableType>
          <Address>BorderlandsGOTY.exe+25AEDC8</Address>
          <Offsets>
            <Offset>48</Offset>
            <Offset>8*(PointerStuff)</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4587</ID>
          <Description>"UObjName"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>String</VariableType>
          <Length>50</Length>
          <Unicode>0</Unicode>
          <CodePage>0</CodePage>
          <ZeroTerminate>1</ZeroTerminate>
          <Address>BorderlandsGOTY.exe+252CA50</Address>
          <Offsets>
            <Offset>14</Offset>
            <Offset>8*[(UObjNameID)]</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4623</ID>
          <Description>"UObjParentPtr"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>8 Bytes</VariableType>
          <Address>BorderlandsGOTY.exe+25AEDC8</Address>
          <Offsets>
            <Offset>40</Offset>
            <Offset>8*(PointerStuff)</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4624</ID>
          <Description>"UObjParentNameID"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>4 Bytes</VariableType>
          <Address>BorderlandsGOTY.exe+25AEDC8</Address>
          <Offsets>
            <Offset>48</Offset>
            <Offset>40</Offset>
            <Offset>8*(PointerStuff)</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4625</ID>
          <Description>"UObjParentName"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>String</VariableType>
          <Length>50</Length>
          <Unicode>0</Unicode>
          <CodePage>0</CodePage>
          <ZeroTerminate>1</ZeroTerminate>
          <Address>BorderlandsGOTY.exe+252CA50</Address>
          <Offsets>
            <Offset>14</Offset>
            <Offset>8*[(UObjParentNameID)]</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4633</ID>
          <Description>"UObjClassNameID"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>4 Bytes</VariableType>
          <Address>BorderlandsGOTY.exe+25AEDC8</Address>
          <Offsets>
            <Offset>48</Offset>
            <Offset>50</Offset>
            <Offset>8*(PointerStuff)</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4634</ID>
          <Description>"UObjClassName"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>String</VariableType>
          <Length>50</Length>
          <Unicode>0</Unicode>
          <CodePage>0</CodePage>
          <ZeroTerminate>1</ZeroTerminate>
          <Address>BorderlandsGOTY.exe+252CA50</Address>
          <Offsets>
            <Offset>14</Offset>
            <Offset>8*[(UObjClassNameID)]</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

User avatar
TheyCallMeTim13
Administration
Administration
Posts: 1632
Joined: Fri Mar 03, 2017 12:31 am
Reputation: 852

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by TheyCallMeTim13 »

lampuiho wrote:
Sun May 09, 2021 10:11 am
TheyCallMeTim13 wrote:
Sun May 09, 2021 5:13 am
Yeah, that's about what I was thinking. It's just weird because the values look right, even the legendaries have the same 0.2 from BL2. I may actually try to dig through some of SunBeam's posts/tutorials again and see if I can figure it out.

And yeah probably best not to install steam on your professor's pc. But thanks for the help.
You probably don't need a tutorial for that.

Try this instead, change the hex index of PointerStuff to loop through every UObject and see their names.

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>4626</ID>
      <Description>"PointerStuff"</Description>
      <Options moHideChildren="1"/>
      <LastState Value="" Activated="1" RealAddress="00016AEB"/>
      <GroupHeader>1</GroupHeader>
      <Address>16aeb</Address>
      <CheatEntries>
        <CheatEntry>
          <ID>4632</ID>
          <Description>"UObjVtable"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>8 Bytes</VariableType>
          <Address>BorderlandsGOTY.exe+25AEDC8</Address>
          <Offsets>
            <Offset>0</Offset>
            <Offset>8*(PointerStuff)</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4622</ID>
          <Description>"UObjID2"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>4 Bytes</VariableType>
          <Address>BorderlandsGOTY.exe+25AEDC8</Address>
          <Offsets>
            <Offset>3c</Offset>
            <Offset>8*(PointerStuff)</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4621</ID>
          <Description>"UObjNameID"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>8 Bytes</VariableType>
          <Address>BorderlandsGOTY.exe+25AEDC8</Address>
          <Offsets>
            <Offset>48</Offset>
            <Offset>8*(PointerStuff)</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4587</ID>
          <Description>"UObjName"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>String</VariableType>
          <Length>50</Length>
          <Unicode>0</Unicode>
          <CodePage>0</CodePage>
          <ZeroTerminate>1</ZeroTerminate>
          <Address>BorderlandsGOTY.exe+252CA50</Address>
          <Offsets>
            <Offset>14</Offset>
            <Offset>8*[(UObjNameID)]</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4623</ID>
          <Description>"UObjParentPtr"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>8 Bytes</VariableType>
          <Address>BorderlandsGOTY.exe+25AEDC8</Address>
          <Offsets>
            <Offset>40</Offset>
            <Offset>8*(PointerStuff)</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4624</ID>
          <Description>"UObjParentNameID"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>4 Bytes</VariableType>
          <Address>BorderlandsGOTY.exe+25AEDC8</Address>
          <Offsets>
            <Offset>48</Offset>
            <Offset>40</Offset>
            <Offset>8*(PointerStuff)</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4625</ID>
          <Description>"UObjParentName"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>String</VariableType>
          <Length>50</Length>
          <Unicode>0</Unicode>
          <CodePage>0</CodePage>
          <ZeroTerminate>1</ZeroTerminate>
          <Address>BorderlandsGOTY.exe+252CA50</Address>
          <Offsets>
            <Offset>14</Offset>
            <Offset>8*[(UObjParentNameID)]</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4633</ID>
          <Description>"UObjClassNameID"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>4 Bytes</VariableType>
          <Address>BorderlandsGOTY.exe+25AEDC8</Address>
          <Offsets>
            <Offset>48</Offset>
            <Offset>50</Offset>
            <Offset>8*(PointerStuff)</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4634</ID>
          <Description>"UObjClassName"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>String</VariableType>
          <Length>50</Length>
          <Unicode>0</Unicode>
          <CodePage>0</CodePage>
          <ZeroTerminate>1</ZeroTerminate>
          <Address>BorderlandsGOTY.exe+252CA50</Address>
          <Offsets>
            <Offset>14</Offset>
            <Offset>8*[(UObjClassNameID)]</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

So, with that I made this script.

Code: Select all

local DEBUG = DEBUG or false
-- DEBUG = true

local t = translate
local format = string.format
local strE = ''

local strNil = 'nil'
local nl = '\n'

local function toHex(value)
	return format('%X', value or 0)
end
local function padR(str, len, char)
	if str == nil or len == nil then return str end
	if char == nil then char = ' ' end
	return str .. string.rep(char, len - #str)
end

local baseAddr1 = 'BorderlandsGOTY.exe+25AEDC8'
local baseAddr2 = 'BorderlandsGOTY.exe+252CA50'

local BaseIndex = 0x16A00 --0x16000
local MaxIndex =  0x16B00 --0x16AEB

local DumpFileStep = 0x1000


function getUObjData(Index, IncludeParentData)
	local strLen = 20
	local output = padR('Index:', strLen)..'0x'..toHex(Index)..nl

	local UObjVtableAddr = getAddressSafe('[['..baseAddr1..']+'..toHex(8*Index)..']'..'+0')
	local UObjVtableVal = readPointer(UObjVtableAddr) or 0
	local UObjVtable = format('%016X', UObjVtableVal)
	output = output..padR('UObjVtable:', strLen)..UObjVtable..nl

	local UObjID2Addr = getAddressSafe('[['..baseAddr1..']+'..toHex(8*Index)..']'..'+3C')
	local UObjID2Val = readInteger(UObjID2Addr) or 0
	local UObjID2 = format('%08X', UObjID2Val)
	output = output..padR('UObjID2:', strLen)..UObjID2..nl

	local UObjNameIDAddr = getAddressSafe('[['..baseAddr1..']+'..toHex(8*Index)..']'..'+48')
	local UObjNameIDVal = readQword(UObjNameIDAddr) or 0
	local UObjNameID = format('%016X', UObjNameIDVal)
	output = output..padR('UObjNameID:', strLen)..UObjNameID..nl

	local UObjNameAddr = getAddressSafe('[['..baseAddr2..']+'..toHex(8*UObjNameIDVal)..']'..'+14')
	local UObjName = readString(UObjNameAddr, 100) or strNil
	output = output..padR('UObjName:', strLen)..UObjName..nl

	local UObjValueAddr = getAddressSafe('[['..baseAddr1..']+'..toHex(8*Index)..']'..'+78')
	local UObjValue = readFloat(UObjValueAddr) or 0
	output = output..padR('UObjValue:', strLen)..UObjValue..nl

	if IncludeParentData then
		local UObjParentPtrAddr = getAddressSafe('[['..baseAddr1..']+'..toHex(8*Index)..']'..'+40')
		local UObjParentPtrVal = readQword(UObjParentPtrAddr) or 0
		local UObjParentPtr = format('%016X', UObjParentPtrVal)
		output = output..padR('UObjParentPtr:', strLen)..UObjParentPtr..nl

		local UObjParentNameIDAddr = getAddressSafe('[[['..baseAddr1..']+'..toHex(8*Index)..']'..'+40]+48')
		local UObjParentNameIDVal = readInteger(UObjParentNameIDAddr) or 0
		local UObjParentNameID = format('%08X', UObjParentNameIDVal)
		output = output..padR('UObjParentNameID:', strLen)..UObjParentNameID..nl

		local UObjParentNameAddr = getAddressSafe('[['..baseAddr2..']+'..toHex(8*UObjParentNameIDVal)..']'..'+14')
		local UObjParentName = readString(UObjParentNameAddr, 100)
		output = output..padR('UObjParentName:', strLen)..UObjParentName..nl

		local UObjClassNameIDAddr = getAddressSafe('[[['..baseAddr1..']+'..toHex(8*Index)..']'..'+50]+48')
		local UObjClassNameIDVal = readInteger(UObjClassNameIDAddr) or 0
		local UObjClassNameID = format('%08X', UObjClassNameIDVal)
		output = output..padR('UObjClassNameID:', strLen)..UObjClassNameID..nl

		local UObjClassNameAddr = getAddressSafe('[['..baseAddr2..']+'..toHex(8*UObjClassNameIDVal)..']'..'+14')
		local UObjClassName = readString(UObjClassNameAddr, 100) or strNil
		output = output..padR('UObjClassName:', strLen)..UObjClassName..nl
	end

	return output
end

function printUObjData(Index, IncludeParentData)
	print(getUObjData(Index, IncludeParentData))
end

function getAllUObjData(IndexStart, IndexEnd, IncludeParentData)
	if IndexStart == nil then
		IndexStart = BaseIndex
	end
	if IndexEnd == nil then
		IndexEnd = MaxIndex
	end
	local output = ''
	for i = IndexStart, IndexEnd do
		if DEBUG then print(toHex(i)) end
		output = output..nl
		output = output..getUObjData(i, IncludeParentData)
	end
	return output
end

function printAllUObjData(IndexStart, IndexEnd, IncludeParentData)
	print(getAllUObjData(IndexStart, IndexEnd, IncludeParentData))
end

function createDumpFile(IndexStart, IndexEnd, filePath, IncludeParentData)
	if filePath == nil then
		filePath = 'UObjData.txt'
	end
	local output = getAllUObjData(IndexStart, IndexEnd, IncludeParentData)
	local f, err = io.open(filePath, 'w')
	if err then
		print(format('The local file could not be opened, "%s"', fileName))
	elseif f and not err then
		f:write(output)
		f:close()
		print('Dump File Created: ', filePath)
	end
end

function dumpUObjData(IndexStart, IncludeParentData)
	local indexS = IndexStart
	local indexE = indexS + DumpFileStep
	local filePath = 'DumpFile.0x'..toHex(indexS)..'-0x'..toHex(indexE)..'.txt'
	createDumpFile(indexS, indexE, filePath, IncludeParentData)
end

Then running the dump function dumpUObjData I managed to find this:

Code: Select all


Index:              0x16ADF
UObjVtable:         0000000140E44858
UObjID2:            00000055
UObjNameID:         000000000000EDD5
UObjName:           Weight_1_Common
UObjValue:          60.0
UObjParentPtr:      0000000034398330
UObjParentNameID:   0000EDE1
UObjParentName:     Weighting
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AE0
UObjVtable:         0000000140E44858
UObjID2:            0000005A
UObjNameID:         000000000000EDD9
UObjName:           Weight_5_VeryRare
UObjValue:          0.5
UObjParentPtr:      0000000034398330
UObjParentNameID:   0000EDE1
UObjParentName:     Weighting
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AE1
UObjVtable:         0000000140E44858
UObjID2:            0000005B
UObjNameID:         000000000000EDDA
UObjName:           Weight_Awesome_0_VeryCommon
UObjValue:          1.0
UObjParentPtr:      0000000034398330
UObjParentNameID:   0000EDE1
UObjParentName:     Weighting
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AE2
UObjVtable:         0000000140E44858
UObjID2:            0000005C
UObjNameID:         000000000000EDDB
UObjName:           Weight_Awesome_1_Common
UObjValue:          1.0
UObjParentPtr:      0000000034398330
UObjParentNameID:   0000EDE1
UObjParentName:     Weighting
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AE3
UObjVtable:         0000000140E44858
UObjID2:            0000005D
UObjNameID:         000000000000EDDC
UObjName:           Weight_Awesome_2_Uncommon
UObjValue:          1.0
UObjParentPtr:      0000000034398330
UObjParentNameID:   0000EDE1
UObjParentName:     Weighting
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AE4
UObjVtable:         0000000140E44858
UObjID2:            0000005E
UObjNameID:         000000000000EDDD
UObjName:           Weight_Awesome_3_Uncommoner
UObjValue:          1.0
UObjParentPtr:      0000000034398330
UObjParentNameID:   0000EDE1
UObjParentName:     Weighting
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AE5
UObjVtable:         0000000140E44858
UObjID2:            0000005F
UObjNameID:         000000000000EDDE
UObjName:           Weight_Awesome_4_Rare
UObjValue:          1.5
UObjParentPtr:      0000000034398330
UObjParentNameID:   0000EDE1
UObjParentName:     Weighting
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AE6
UObjVtable:         0000000140E44858
UObjID2:            00000060
UObjNameID:         000000000000EDDF
UObjName:           Weight_Awesome_5_VeryRare
UObjValue:          0.5
UObjParentPtr:      0000000034398330
UObjParentNameID:   0000EDE1
UObjParentName:     Weighting
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AE7
UObjVtable:         0000000140E44858
UObjID2:            00000061
UObjNameID:         000000000000EDE0
UObjName:           Weight_Awesome_6_Legendary
UObjValue:          0.20000000298023
UObjParentPtr:      0000000034398330
UObjParentNameID:   0000EDE1
UObjParentName:     Weighting
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AE8
UObjVtable:         0000000140E44858
UObjID2:            00000064
UObjNameID:         000000000000D873
UObjName:           ClassWeightBonus_Brick
UObjValue:          0.0
UObjParentPtr:      0000000033183FB0
UObjParentNameID:   0000EDE2
UObjParentName:     WeightingPlayerCount
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AE9
UObjVtable:         0000000140E44858
UObjID2:            00000065
UObjNameID:         000000000000D874
UObjName:           ClassWeightBonus_Lilith
UObjValue:          0.0
UObjParentPtr:      0000000033183FB0
UObjParentNameID:   0000EDE2
UObjParentName:     WeightingPlayerCount
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AEA
UObjVtable:         0000000140E44858
UObjID2:            00000066
UObjNameID:         000000000000D875
UObjName:           ClassWeightBonus_Mordecai
UObjValue:          0.0
UObjParentPtr:      0000000033183FB0
UObjParentNameID:   0000EDE2
UObjParentName:     WeightingPlayerCount
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AEB
UObjVtable:         0000000140E44858
UObjID2:            00000067
UObjNameID:         000000000000D876
UObjName:           ClassWeightBonus_Roland
UObjValue:          0.0
UObjParentPtr:      0000000033183FB0
UObjParentNameID:   0000EDE2
UObjParentName:     WeightingPlayerCount
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AEC
UObjVtable:         0000000140E44858
UObjID2:            00000068
UObjNameID:         000000000000DACA
UObjName:           Enemy_Damage_PerPlayer
UObjValue:          0.0
UObjParentPtr:      0000000033183FB0
UObjParentNameID:   0000EDE2
UObjParentName:     WeightingPlayerCount
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AED
UObjVtable:         0000000140E44858
UObjID2:            0000006A
UObjNameID:         000000000000DACD
UObjName:           Enemy_HealthBoost_PerPlayer
UObjValue:          0.0
UObjParentPtr:      0000000033183FB0
UObjParentNameID:   0000EDE2
UObjParentName:     WeightingPlayerCount
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition

Index:              0x16AEE
UObjVtable:         0000000140DAD340
UObjID2:            0000000B
UObjNameID:         000000000000DAE7
UObjName:           ExperienceMultipliers
UObjValue:          0.0
UObjParentPtr:      0000000034397340
UObjParentNameID:   0000DBF9
UObjParentName:     gd_Balance_Experience
UObjClassNameID:    000002A2
UObjClassName:      Package

Index:              0x16AEF
UObjVtable:         0000000140E44858
UObjID2:            00000002
UObjNameID:         000000000000DAE6
UObjName:           Experience_ByPlaythrough
UObjValue:          0.0
UObjParentPtr:      00000000331840C0
UObjParentNameID:   0000DAE7
UObjParentName:     ExperienceMultipliers
UObjClassNameID:    000021F9
UObjClassName:      AttributeInitializationDefinition
Sadly it looks like the indexes are the same.

User avatar
SunBeam
Administration
Administration
Posts: 3574
Joined: Sun Feb 04, 2018 7:16 pm
Reputation: 2761

Re: Borderlands GOTY Enhanced - table v: 1.0.4 CT

Post by SunBeam »

TheyCallMeTim13 wrote:
Sun May 09, 2021 4:56 pm
Sadly it looks like the indexes are the same.
I don't see any identical indexes. I don't know what you mean by that statement above. If you're looking for a filtering method, you have it right there: the name :D

Post Reply

Who is online

Users browsing this forum: Bing [Bot], edale, KyleKatarn, vietpham25, yano17