Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="utf-8"?>
- <CheatTable>
- <CheatEntries>
- <CheatEntry>
- <ID>87496</ID>
- <Description>"[ Initialize ]"</Description>
- <Options moHideChildren="1"/>
- <LastState/>
- <Color>A96974</Color>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript Async="1">{$STRICT}
- {$lua}
- if syntaxcheck then return end
- function openGameProcess( procName )
- local proc = procName
- if process ~= procName then
- if messageDialog( 'Attempt to open game process?', mtConfirmation, mbYes, mbNo ) == mrYes then
- local processId = getProcessIDFromProcessName( procName )
- if processId == nil then stopExec( "Game is not running." ) end
- openProcess( processId )
- sleep( 100 )
- end
- end
- end
- function stopExec( s )
- error( print( string.format( "\r\n>> %s <<", s ) ) )
- end
- function aobScanEx( aob )
- -- thanks panraven for this function!
- -- https://forum.cheatengine.org/viewtopic.php?t=577536
- -- simplified for my needs
- -- scan the entire memory space: e = nil or '*X*W'
- -- scan only executable code: e = nil or '+X'
- local p, a, n, s, e = nil or '+X', nil or fsmNotAligned, nil or '0', getAddress( process ) or 0x0, ( getAddress( process ) + getModuleSize( process ) ) or 0xffffffffffffffff
- local ms = pb and createMemScan( pb ) or createMemScan()
- local fl = createFoundList( ms )
- ms.firstScan( soExactValue, vtByteArray, nil, aob, nil, s, e, p, a, n, true, false, false, false )
- ms.waitTillDone()
- fl.initialize()
- local result = nil
- if fl ~= nil and fl.getCount() > 0 then
- result = createStringlist()
- for i = 1, fl.getCount() do result.add( fl.getAddress( i - 1 ) ) end
- end
- fl.destroy()
- ms.destroy()
- return result
- end
- function string.fromhex( s )
- return ( s:gsub( '..', function ( cc )
- return string.char( tonumber( cc, 16 ) )
- end ) )
- end
- function aobScanSmall( aob, s, e )
- local i = byteTableToString( readBytes( s, e, true ) ):find( string.fromhex( aob ), 1, true )
- if i == nil then i = 1 end
- return ( s + i - 1 )
- end
- function staticFindObjectEx( sa, sb, sc )
- local StaticFindObject = getAddressSafe( "StaticFindObject" )
- if StaticFindObject == 0x0 then return 0 end
- local s, Class, InOuter, UObject = allocateMemory( 256 ), 0, 0, 0
- if sb == nil and sc == nil then
- writeString( s, sa, true )
- writeBytes( s + #sa * 2, 0 )
- UObject = executeCodeEx( 0, nil, StaticFindObject, 0, -1, s, 1 )
- elseif sc == nil then
- writeString( s, sa, true )
- writeBytes( s + #sa * 2, 0 )
- Class = executeCodeEx( 0, nil, StaticFindObject, 0, -1, s, 1 )
- writeString( s, sb, true )
- writeBytes( s + #sb * 2, 0 )
- UObject = executeCodeEx( 0, nil, StaticFindObject, Class, -1, s, 0 )
- else
- writeString( s, sa, true )
- writeBytes( s + #sa * 2, 0 )
- Class = executeCodeEx( 0, nil, StaticFindObject, 0, -1, s, 1 )
- writeString( s, sb, true )
- writeBytes( s + #sb * 2, 0 )
- InOuter = executeCodeEx( 0, nil, StaticFindObject, 0, -1, s, 1 )
- writeString( s, sc, true )
- writeBytes( s + #sc * 2, 0 )
- UObject = executeCodeEx( 0, nil, StaticFindObject, Class, InOuter, s, 0 )
- end
- deAlloc( s )
- return UObject
- end
- function getOffset( p )
- return readInteger( p + 0x44 )
- end
- function getLocalPlayer()
- local LocalPlayer = 0
- local GEngine = readQword( getAddressSafe( "GEngine" ) )
- local t = staticFindObjectEx( "ObjectProperty", "Engine.Engine", "GameViewport" )
- if t < 1 then stopExec( "'GameViewport' ObjectProperty not found." ) end
- local GameViewport_offset = getOffset( t )
- local GameViewportClient = readQword( GEngine + GameViewport_offset )
- t = staticFindObjectEx( "ObjectProperty", "Engine.GameViewportClient", "World" )
- if t < 1 then stopExec( "'World' ObjectProperty not found." ) end
- local World_offset = getOffset( t )
- local World = readQword( GameViewportClient + World_offset )
- local UEngine_GetFirstGamePlayer = getAddressSafe( "UEngine__GetFirstGamePlayer" )
- if UEngine_GetFirstGamePlayer < 1 then stopExec( "'UEngine__GetFirstGamePlayer' symbol not found." ) end
- LocalPlayer = executeCodeEx( 0, nil, UEngine_GetFirstGamePlayer, GEngine, World )
- return LocalPlayer
- end
- function getPlayerController()
- local PlayerController = 0
- local LocalPlayer = getLocalPlayer()
- if LocalPlayer < 1 then stopExec( "LocalPlayer not found. Are you at least at main menu?" ) end
- local t = staticFindObjectEx( "ObjectProperty", "Engine.Player", "PlayerController" )
- if t < 1 then stopExec( "'PlayerController' ObjectProperty not found." ) end
- local PlayerController_offset = getOffset( t )
- PlayerController = readQword( LocalPlayer + PlayerController_offset )
- return PlayerController
- end
- function getPlayerCharacter()
- local PlayerCharacter = 0
- local PlayerController = getPlayerController()
- if PlayerController < 1 then stopExec( "PlayerController was not yet initialized. Not at main menu?" ) end
- local t = staticFindObjectEx( "ObjectProperty", "Engine.Controller", "Pawn" )
- if t < 1 then stopExec( "'Pawn' ObjectProperty not found." ) end
- local Pawn_offset = getOffset( t )
- PlayerCharacter = readQword( PlayerController + Pawn_offset )
- return PlayerCharacter
- end
- function killTabInConsoleKeys()
- local Default__InputSettings = staticFindObjectEx( "InputSettings", "Engine.Default__InputSettings" )
- local ConsoleKeys_ArrayProperty = staticFindObjectEx( "ArrayProperty", "Engine.InputSettings", "ConsoleKeys" )
- if Default__InputSettings ~= 0x0 then
- if ConsoleKeys_ArrayProperty ~= 0x0 then
- local ConsoleKeys_offset = readInteger( ConsoleKeys_ArrayProperty + 0x44 )
- local ConsoleKeys_Array_addr = readQword( Default__InputSettings + ConsoleKeys_offset )
- local ConsoleKeys_Array_size = readInteger( Default__InputSettings + ConsoleKeys_offset + 8 ) -- array has 2 elements
- writeInteger( ConsoleKeys_Array_addr + ( ConsoleKeys_Array_size - 1 ) * 8 * 3, 0 ) -- each comprised of 3 quads
- end
- end
- end
- function changeConsoleKeyTo( key )
- local Default__InputSettings = staticFindObjectEx( "InputSettings", "Engine.Default__InputSettings" )
- local ConsoleKeys_ArrayProperty = staticFindObjectEx( "ArrayProperty", "Engine.InputSettings", "ConsoleKeys" )
- if Default__InputSettings ~= 0x0 then
- if ConsoleKeys_ArrayProperty ~= 0x0 then
- local ConsoleKeys_offset = readInteger( ConsoleKeys_ArrayProperty + 0x44 )
- local ConsoleKeys_Array_addr = readQword( Default__InputSettings + ConsoleKeys_offset )
- local FName_FName = getAddressSafe( "FName__FName" )
- if FName_FName ~= 0x0 then
- local p = allocateMemory( 256 )
- local s = p + 0x8
- writeString( s, key, true )
- writeBytes( s + #key * 2, 0 )
- local FName_id = executeCodeEx( 0, nil, FName_FName, p, s, 1 )
- if readInteger( FName_id ) ~= 0x0 then
- writeInteger( ConsoleKeys_Array_addr, readInteger( FName_id ) )
- end
- deAlloc( p )
- end
- end
- end
- end
- function Init()
- local sl, t, u = 0, 0, 0
- --** CheatManager-related **--
- local aob_GEngine = "448B45??488D47D8488B0D????????48????48894587E8"
- sl = aobScanEx( aob_GEngine )
- if not sl or sl.Count < 1 then stopExec( "'aob_GEngine' not found." ) end
- t = tonumber( sl[0], 16 )
- t = t + 0x8
- t = t + readInteger( t + 0x3, true ) + 0x7
- unregisterSymbol( "GEngine" )
- registerSymbol( "GEngine", t, true )
- local aob_EngineRef = "??FF48894424??4C8D4C24??48897C24??4C8D05????????48897C2458488D15"
- sl = aobScanEx( aob_EngineRef )
- if not sl or sl.Count < 1 then stopExec( "'aob_EngineRef' not found." ) end
- t = tonumber( sl[0], 16 )
- t = t + 0xBC
- u = t + readInteger( t + 0x1, true ) + 0x5
- unregisterSymbol( "GetTransientPackage" )
- registerSymbol( "GetTransientPackage", u, true )
- t = t + 0x15
- u = t + readInteger( t + 0x3, true ) + 0x7
- unregisterSymbol( "wszNewObject" )
- registerSymbol( "wszNewObject", u, true )
- t = t + 0xA
- u = t + readInteger( t + 0x1, true ) + 0x5
- unregisterSymbol( "FObjectInitializer__AssertIfInConstructor" )
- registerSymbol( "FObjectInitializer__AssertIfInConstructor", u, true )
- t = t + 0x29
- u = t + readInteger( t + 0x1, true ) + 0x5
- unregisterSymbol( "StaticConstructObject_Internal" )
- registerSymbol( "StaticConstructObject_Internal", u, true )
- local aob_StaticFindObject = "48895C24??48897424??5557415441564157??????4883EC60803D????????0045"
- sl = aobScanEx( aob_StaticFindObject )
- if not sl or sl.Count < 1 then stopExec( "'aob_StaticFindObject' not found." ) end
- t = tonumber( sl[0], 16 )
- unregisterSymbol( "StaticFindObject" )
- registerSymbol( "StaticFindObject", t, true )
- local aob_FName__FName = "4883EC??41B801000000488D15????????488D4C24??E8????????4533C9"
- sl = aobScanEx( aob_FName__FName )
- if not sl or sl.Count < 1 then stopExec( "'aob_FName__FName' not found." ) end
- t = tonumber( sl[0], 16 ) + 0x16
- t = t + readInteger( t + 0x1, true ) + 0x5
- unregisterSymbol( "FName__FName" )
- registerSymbol( "FName__FName", t, true )
- local aob_in_APlayerController__PostInitializeComponents = "838B????????1048C74424??4201000048"
- sl = aobScanEx( aob_in_APlayerController__PostInitializeComponents )
- if not sl or sl.Count < 1 then stopExec( "'aob_in_APlayerController__PostInitializeComponents' not found." ) end
- t = tonumber( sl[0], 16 )
- unregisterSymbol( "APlayerController__PostInitializeComponents_hookspot" )
- registerSymbol( "APlayerController__PostInitializeComponents_hookspot", t, true )
- --** UCheatManager execs **--
- local aob_AActor__SetActorEnableCollision = "??????4881EC????????488B05????????48????48898424????????440FB681"
- sl = aobScanEx( aob_AActor__SetActorEnableCollision )
- if not sl or sl.Count < 1 then stopExec( "'aob_AActor__SetActorEnableCollision' not found." ) end
- t = tonumber( sl[0], 16 )
- unregisterSymbol( "AActor__SetActorEnableCollision" )
- registerSymbol( "AActor__SetActorEnableCollision", t, true )
- local aob_UClass__CreateLinkAndAddChildFunctionsToMap = "4585C00F84??????????????5553564157498DAB??FFFFFF4881EC"
- sl = aobScanEx( aob_UClass__CreateLinkAndAddChildFunctionsToMap )
- if not sl or sl.Count < 1 then stopExec( "'aob_UClass__CreateLinkAndAddChildFunctionsToMap' not found." ) end
- t = tonumber( sl[0], 16 )
- unregisterSymbol( "UClass__CreateLinkAndAddChildFunctionsToMap" )
- registerSymbol( "UClass__CreateLinkAndAddChildFunctionsToMap", t, true )
- local aob_UE4CodeGen_Private__ConstructUFunction = "4053564154415641574881EC????????488B05??????????????488984"
- sl = aobScanEx( aob_UE4CodeGen_Private__ConstructUFunction )
- if not sl or sl.Count < 1 then stopExec( "'aob_UE4CodeGen_Private__ConstructUFunction' not found." ) end
- t = tonumber( sl[0], 16 )
- unregisterSymbol( "UE4CodeGen_Private__ConstructUFunction" )
- registerSymbol( "UE4CodeGen_Private__ConstructUFunction", t, true )
- local aob_UE4CodeGen_Private__ConstructUClass = "405641574881EC????????488B05??????????????48898424????????488B01????????????48"
- sl = aobScanEx( aob_UE4CodeGen_Private__ConstructUClass )
- if not sl or sl.Count < 1 then stopExec( "'aob_UE4CodeGen_Private__ConstructUClass' not found." ) end
- t = tonumber( sl[0], 16 )
- unregisterSymbol( "UE4CodeGen_Private__ConstructUClass" )
- registerSymbol( "UE4CodeGen_Private__ConstructUClass", t, true )
- local aob_UEngine__GetFirstGamePlayer = "4883EC??E8????????8378??0074??488B00488B004883C4??C3??C04883C428C3"
- sl = aobScanEx( aob_UEngine__GetFirstGamePlayer )
- if not sl or sl.Count < 1 then stopExec( "'aob_UEngine__GetFirstGamePlayer' not found." ) end
- t = tonumber( sl[0], 16 )
- unregisterSymbol( "UEngine__GetFirstGamePlayer" )
- registerSymbol( "UEngine__GetFirstGamePlayer", t, true )
- local aob_in_AActor_Tick = "F683????????100F84????????4889B424????????45"
- sl = aobScanEx( aob_in_AActor_Tick )
- if not sl or sl.Count < 1 then stopExec( "'aob_in_AActor_Tick' not found." ) end
- t = tonumber( sl[0], 16 )
- unregisterSymbol( "AActor__Tick_hookspot" )
- registerSymbol( "AActor__Tick_hookspot", t, true )
- local aob_Weapon_OnFire = "40534883EC??488B01488BD948896C24"
- sl = aobScanEx( aob_Weapon_OnFire )
- if not sl or sl.Count < 1 then stopExec( "'aob_Weapon_OnFire' not found." ) end
- t = tonumber( sl[0], 16 )
- unregisterSymbol( "Weapon__OnFire" )
- registerSymbol( "Weapon__OnFire", t, true )
- --** caves **--
- -- let's use trampolines: jumping is always done via 5-to-14 bytes traversals
- local gameModule = getAddress( process )
- local offset = 0x500
- t = gameModule + offset
- fullAccess( t, 0x1000 - offset )
- executeCodeEx( 0, nil, getAddressSafe( "RtlZeroMemory" ), t, 0x1000 - offset )
- unregisterSymbol( "Trampolines" )
- registerSymbol( "Trampolines", t, true )
- --** hooks the return from GetGamePlayers **--
- local aob_in_FViewport_Draw = "488B40??4885C074??F680????????0274"
- sl = aobScanEx( aob_in_FViewport_Draw )
- if not sl or sl.Count < 1 then stopExec( "'aob_in_FViewport_Draw' not found." ) end
- t = tonumber( sl[0], 16 )
- unregisterSymbol( "FViewport__Draw_hookspot" )
- registerSymbol( "FViewport__Draw_hookspot", t, true )
- t = allocateMemory( 0x1000 )
- unregisterSymbol( "FViewport__Draw_hook" )
- registerSymbol( "FViewport__Draw_hook", t, true )
- autoAssemble([[
- label( LocalPlayer )
- registersymbol( LocalPlayer )
- label( GameViewportClient )
- registersymbol( GameViewportClient )
- label( Console )
- registersymbol( Console )
- label( PlayerController )
- registersymbol( PlayerController )
- label( CheatManager )
- registersymbol( CheatManager )
- label( PlayerCharacter )
- registersymbol( PlayerCharacter )
- label( DeveloperPerks )
- registersymbol( DeveloperPerks )
- label( FViewport__Draw_hookspot_o )
- registersymbol( FViewport__Draw_hookspot_o )
- FViewport__Draw_hook:
- mov [LocalPlayer],rax
- mov rcx,[rax+70]
- mov [GameViewportClient],rcx
- mov rcx,[rcx+50]
- mov [Console],rcx
- mov rcx,[rax+30]
- test rcx,rcx
- je short @f
- mov [PlayerController],rcx
- mov rdx,[rcx+5A8]
- mov [CheatManager],rdx
- mov rcx,[rcx+488] // if OakCharacter valid (we're in game world)
- test rcx,rcx
- je short @f
- mov [PlayerCharacter],rcx
- mov rcx,[rax+30] // read OakPlayerController
- mov rcx,[rcx+2780] // offset to OakDeveloperPerks
- test rcx,rcx // check if not NULL first
- je short @f
- mov [DeveloperPerks],rcx // store it
- test byte ptr [rcx+C8],40 // flip UWorld_destroy bool
- jne short @f
- or byte ptr [rcx+C8],40
- FViewport__Draw_hookspot_o:
- readmem( FViewport__Draw_hookspot, 7 )
- jmp FViewport__Draw_hookspot+7
- align 10 CC
- LocalPlayer:
- dq 0
- align 10 CC
- GameViewportClient:
- dq 0
- align 10 CC
- Console:
- dq 0
- align 10 CC
- PlayerController:
- dq 0
- align 10 CC
- CheatManager:
- dq 0
- align 10 CC
- PlayerCharacter:
- dq 0
- align 10 CC
- DeveloperPerks:
- dq 0
- align 10 CC
- Trampolines+00:
- jmp far FViewport__Draw_hook
- align 10 CC
- FViewport__Draw_hookspot:
- jmp Trampolines+00
- nop 2
- ]])
- --** allocate memory for the CheatManager inline **--
- t = allocateMemory( 0x1000 )
- unregisterSymbol( "Inline__CheatManager" )
- registerSymbol( "Inline__CheatManager", t, true )
- --** get CheatManager Class via StaticFindObject **--
- t = staticFindObjectEx( "Engine.CheatManager" )
- if t < 1 then stopExec( "'Engine.CheatManager' Class not found." ) end
- unregisterSymbol( "CheatManager_Class" )
- registerSymbol( "CheatManager_Class", t, true )
- local p = staticFindObjectEx( "ObjectProperty", "Engine.PlayerController", "CheatManager" )
- if p < 1 then stopExec( "'CheatManager' ObjectProperty not found." ) end
- p = getOffset( p )
- t = p + 0x8
- p = string.format( "%X", p )
- t = string.format( "%X", t )
- --** assembly **--
- -- note Trampolines+10 is used here, in case you wonder where it is
- autoAssemble([[
- label( APlayerController__AddCheats )
- registersymbol( APlayerController__AddCheats )
- label( APlayerController__PostInitializeComponents_hookspot_o )
- registersymbol( APlayerController__PostInitializeComponents_hookspot_o )
- label( @L00000001 )
- label( @L00000002 )
- label( @L00000003 )
- label( @L00000004 )
- label( @L00000005 )
- label( @L00000006 )
- label( @L00000007 )
- Inline__CheatManager:
- mov rcx,rbx
- call short APlayerController__AddCheats
- APlayerController__PostInitializeComponents_hookspot_o:
- readmem( APlayerController__PostInitializeComponents_hookspot, 7 )
- jmp far APlayerController__PostInitializeComponents_hookspot+7
- align 10 CC
- APlayerController__AddCheats:
- push rbx
- push rsi
- push rdi
- sub rsp,50
- mov rdi,rcx
- mov rax,[rcx]
- call qword ptr [rax+148] // APlayerController::GetWorld
- cmp qword ptr [rdi+]]..p..[[],0 // CheatManager
- mov rsi,rax
- jne @L00000007
- cmp qword ptr [rdi+]]..t..[[],0 // Class
- je @L00000007
- mov rax,CheatManager_Class
- mov rdx,[rdi+]]..t..[[] // Class
- mov rcx,rdx
- test rdx,rdx
- je @L00000007
- @L00000001:
- cmp rcx,rax
- je short @L00000002
- mov rcx,[rcx+30]
- test rcx,rcx
- jne short @L00000001
- add rsp,50
- pop rdi
- pop rsi
- pop rbx
- ret
- @L00000002:
- mov [rsp+78],rbp
- xor ebp,ebp
- mov [rsp+70],rbp
- cmp [rdi+]]..t..[[],rbp // Class
- je short @L00000004
- mov rax,CheatManager_Class
- mov rsi,[rdi+]]..t..[[] // Class
- mov rcx,rsi
- test rsi,rsi
- je short @L00000004
- @L00000003:
- cmp rcx,rax
- je short @L00000005
- mov rcx,[rcx+30]
- test rcx,rcx
- jne short @L00000003
- @L00000004:
- mov rsi,rbp
- @L00000005:
- mov rbx,[rsp+70]
- mov [rsp+80],rbp
- cmp rbx,rbp
- jne short @L00000006
- mov rdx,wszNewObject
- mov rcx,rdi
- call FObjectInitializer__AssertIfInConstructor
- @L00000006:
- mov [rsp+40],bpl
- xor r9d,r9d
- mov [rsp+38],rbp
- mov r8,rbx
- mov [rsp+30],bpl
- mov rdx,rdi
- mov [rsp+28],rbp
- mov rcx,rsi
- mov [rsp+20],ebp
- call StaticConstructObject_Internal
- mov [rdi+]]..p..[[],rax
- mov rcx,rax
- mov rdx,[rax]
- call qword ptr [rdx+408]
- mov rbp,[rsp+78]
- @L00000007:
- add rsp,50
- pop rdi
- pop rsi
- pop rbx
- ret
- align 10 CC
- Trampolines+10:
- jmp far Inline__CheatManager
- align 10 CC
- APlayerController__PostInitializeComponents_hookspot:
- jmp Trampolines+10
- nop 2
- ]])
- local PlayerController = getPlayerController()
- if PlayerController < 1 then stopExec( "PlayerController was not yet initialized. Not at main menu?" ) end
- local APlayerController_AddCheats = getAddressSafe( "APlayerController__AddCheats" )
- if APlayerController_AddCheats == 0x0 then stopExec( "'APlayerController_AddCheats' symbol not found." ) end
- executeCodeEx( 0, nil, APlayerController_AddCheats, PlayerController ) -- I've removed the need for the 0/1 parameter
- --[[
- APlayerController::PostInitializeComponents:
- Wonderlands.exe+26EDD60 - 40 53 - push rbx
- Wonderlands.exe+26EDD62 - 48 83 EC 20 - sub rsp,20 { 32 }
- Wonderlands.exe+26EDD66 - 48 8B D9 - mov rbx,rcx
- Wonderlands.exe+26EDD69 - E8 12B7CBFF - call Wonderlands.exe+23A9480
- Wonderlands.exe+26EDD6E - 8B 43 0C - mov eax,[rbx+0C]
- Wonderlands.exe+26EDD71 - 3B 05 2D9CEB03 - cmp eax,[Wonderlands.exe+65A79A4] { (485739) }
- Wonderlands.exe+26EDD77 - 7D 2C - jnl Wonderlands.exe+26EDDA5
- Wonderlands.exe+26EDD79 - 99 - cdq
- Wonderlands.exe+26EDD7A - 0FB7 D2 - movzx edx,dx
- Wonderlands.exe+26EDD7D - 03 C2 - add eax,edx
- Wonderlands.exe+26EDD7F - 44 8B C0 - mov r8d,eax
- Wonderlands.exe+26EDD82 - 0FB7 C0 - movzx eax,ax
- Wonderlands.exe+26EDD85 - 2B C2 - sub eax,edx
- Wonderlands.exe+26EDD87 - 48 98 - cdqe
- Wonderlands.exe+26EDD89 - 41 C1 F8 10 - sar r8d,10 { 16 }
- Wonderlands.exe+26EDD8D - 49 63 C8 - movsxd rcx,r8d
- Wonderlands.exe+26EDD90 - 48 8D 14 40 - lea rdx,[rax+rax*2]
- Wonderlands.exe+26EDD94 - 48 8B 05 F59BEB03 - mov rax,[Wonderlands.exe+65A7990] { (094EF700) }
- Wonderlands.exe+26EDD9B - 48 8B 0C C8 - mov rcx,[rax+rcx*8]
- Wonderlands.exe+26EDD9F - 48 8D 04 D1 - lea rax,[rcx+rdx*8]
- Wonderlands.exe+26EDDA3 - EB 02 - jmp Wonderlands.exe+26EDDA7
- Wonderlands.exe+26EDDA5 - 33 C0 - xor eax,eax
- Wonderlands.exe+26EDDA7 - 8B 40 08 - mov eax,[rax+08]
- Wonderlands.exe+26EDDAA - C1 E8 1D - shr eax,1D { 29 }
- Wonderlands.exe+26EDDAD - A8 01 - test al,01 { 1 }
- Wonderlands.exe+26EDDAF - 75 19 - jne Wonderlands.exe+26EDDCA
- Wonderlands.exe+26EDDB1 - 48 8B CB - mov rcx,rbx
- Wonderlands.exe+26EDDB4 - E8 8715B1FF - call Wonderlands.exe+21FF340
- Wonderlands.exe+26EDDB9 - 83 F8 03 - cmp eax,03 { 3 }
- Wonderlands.exe+26EDDBC - 74 0C - je Wonderlands.exe+26EDDCA
- Wonderlands.exe+26EDDBE - 48 8B 03 - mov rax,[rbx]
- Wonderlands.exe+26EDDC1 - 48 8B CB - mov rcx,rbx
- Wonderlands.exe+26EDDC4 - FF 90 A8070000 - call qword ptr [rax+000007A8]
- Wonderlands.exe+26EDDCA - 48 8B 03 - mov rax,[rbx]
- Wonderlands.exe+26EDDCD - 48 8B CB - mov rcx,rbx
- Wonderlands.exe+26EDDD0 - FF 90 580D0000 - call qword ptr [rax+00000D58]
- Wonderlands.exe+26EDDD6 - 48 8B 03 - mov rax,[rbx]
- Wonderlands.exe+26EDDD9 - 48 8B CB - mov rcx,rbx
- Wonderlands.exe+26EDDDC - FF 90 B00E0000 - call qword ptr [rax+00000EB0]
- Wonderlands.exe+26EDDE2 - 48 8B CB - mov rcx,rbx
- Wonderlands.exe+26EDDE5 - E8 5615B1FF - call Wonderlands.exe+21FF340
- Wonderlands.exe+26EDDEA - 83 F8 03 - cmp eax,03 { 3 }
- Wonderlands.exe+26EDDED - 75 0C - jne Wonderlands.exe+26EDDFB
- Wonderlands.exe+26EDDEF - 48 8B 03 - mov rax,[rbx]
- Wonderlands.exe+26EDDF2 - 48 8B CB - mov rcx,rbx
- Wonderlands.exe+26EDDF5 - FF 90 B00D0000 - call qword ptr [rax+00000DB0] <------------ it's not the AddCheats call, as the code was not compiled in, but it's after this dynamic call ;)
- Wonderlands.exe+26EDDFB - 83 8B 40060000 10 - or dword ptr [rbx+00000640],10 { 16 }
- Wonderlands.exe+26EDE02 - 48 C7 44 24 30 42010000 - mov qword ptr [rsp+30],00000142 { 322 }
- Wonderlands.exe+26EDE0B - 48 8B 44 24 30 - mov rax,[rsp+30]
- Wonderlands.exe+26EDE10 - 48 89 83 80040000 - mov [rbx+00000480],rax
- Wonderlands.exe+26EDE17 - 48 83 C4 20 - add rsp,20 { 32 }
- Wonderlands.exe+26EDE1B - 5B - pop rbx
- Wonderlands.exe+26EDE1C - C3 - ret
- ]]
- --** restore UCheatManager execs **--
- local aa = staticFindObjectEx( "ObjectProperty", "Engine.Controller", "Pawn" )
- if aa < 1 then stopExec( "'Pawn' ObjectProperty not found." ) end
- aa = getOffset( aa )
- aa = string.format( "%X", aa )
- local ab = staticFindObjectEx( "ObjectProperty", "Engine.Character", "CharacterMovement" )
- if ab < 1 then stopExec( "'CharacterMovement' ObjectProperty not found." ) end
- ab = getOffset( ab )
- ab = string.format( "%X", ab )
- local ac = staticFindObjectEx( "BoolProperty", "Engine.CharacterMovementComponent", "bCheatFlying" )
- if ac < 1 then stopExec( "'bCheatFlying' BoolProperty not found." ) end
- ac = getOffset( ac )
- if (ac % 2 ~= 0) then ac = ac - 0x1 end -- in BL3 this BoolProperty is 0x4B5; I use the 4B4 one with DWORD, rather than 4B5 with BOOL
- ac = string.format( "%X", ac )
- local ad = staticFindObjectEx( "BoolProperty", "Engine.Actor", "bCanBeDamaged" )
- if ad < 1 then stopExec( "'bCanBeDamaged' BoolProperty not found." ) end
- ad = getOffset( ad )
- ad = string.format( "%X", ad )
- t = staticFindObjectEx( "Function", "Engine.CheatManager", "Fly" )
- if t < 1 then stopExec( "'Fly' Function not found." ) end
- t = readQword( t + 0xB0 ) -- get to execFly
- t = t + 0x18 + 0x3 -- offset till the JMP qword ptr [rax+2A0] + 0x3
- t = readInteger( t )
- local ae = t + 0x18 -- execGod is @ execFly+0x18
- ae = string.format( "%X", ae )
- local af = t + 0x10 -- execGhost is @ execFly+0x10
- af = string.format( "%X", af )
- t = allocateMemory( 0x1000 )
- unregisterSymbol( "RebuiltCode" )
- registerSymbol( "RebuiltCode", t, true )
- autoAssemble([[
- label( UCheatManager__Fly )
- registersymbol( UCheatManager__Fly )
- label( UCheatManager__Fly_exit )
- label( UCheatManager__Walk )
- registersymbol( UCheatManager__Walk )
- label( UCheatManager__Walk_exit )
- label( UCheatManager__Ghost )
- registersymbol( UCheatManager__Ghost )
- label( UCheatManager__Ghost_exit )
- label( UCheatManager__God )
- registersymbol( UCheatManager__God )
- label( UCheatManager__God_Null )
- label( UCheatManager__God_On )
- label( UCheatManager__God_Off )
- label( UCheatManager__God_Print )
- label( UCheatManager__PlayersOnly )
- registersymbol( UCheatManager__PlayersOnly )
- label( wszCheatFly )
- label( wszCheatWalk )
- label( wszCheatGhost )
- label( wszCheatGodOn )
- label( wszCheatGodOff )
- label( wszCheatGodNoPawn )
- label( ConstructUFunctions )
- registersymbol( ConstructUFunctions )
- label( Z_Construct_UClass_UCheatManager )
- registersymbol( Z_Construct_UClass_UCheatManager )
- label( Z_Construct_UClass_UCheatManager_Statics_FuncInfo )
- registersymbol( Z_Construct_UClass_UCheatManager_Statics_FuncInfo )
- label( Z_Construct_UFunction_UCheatManager__God )
- registersymbol( Z_Construct_UFunction_UCheatManager__God )
- label( Z_Construct_UFunction_UCheatManager__Ghost )
- registersymbol( Z_Construct_UFunction_UCheatManager__Ghost )
- label( Z_Construct_UFunction_UCheatManager__God_Statics_FuncParams )
- registersymbol( Z_Construct_UFunction_UCheatManager__God_Statics_FuncParams )
- label( Z_Construct_UFunction_UCheatManager__Ghost_Statics_FuncParams )
- registersymbol( Z_Construct_UFunction_UCheatManager__Ghost_Statics_FuncParams )
- label( UFunction__God )
- registersymbol( UFunction__God )
- label( UFunction__Ghost )
- registersymbol( UFunction__Ghost )
- label( pszGod )
- label( pszGhost )
- label( UCheatManager__execGod )
- registersymbol( UCheatManager__execGod )
- label( UCheatManager__execGhost )
- registersymbol( UCheatManager__execGhost )
- RebuiltCode:
- align 10 CC
- UCheatManager__Fly:
- sub rsp,38
- mov rsi,rcx // rcx = CheatManager
- mov rbx,[rcx+20] // rbx <- PlayerController
- mov rbx,[rbx+]]..aa..[[] // rbx <- PlayerCharacter
- test rbx,rbx
- je UCheatManager__Fly_exit
- xorps xmm3,xmm3
- xor r8,r8
- lea rcx,[wszCheatFly]
- mov [rsp+20],rcx // str
- mov rax,FFFFFFFFFFFFFFFF
- @@:
- inc rax
- cmp word ptr [rcx+rax*2],0
- jne short @b
- inc eax
- mov [rsp+28],eax // size with 0-terminator
- lea rdx,[rsp+20] // p -> str|size
- mov rcx,[rsi+20] // rcx <- PlayerController
- mov rax,[rcx]
- call [rax+C70] // APlayerController::ClientMessage
- mov dl,1
- mov rcx,rbx // rbx = PlayerCharacter
- call AActor__SetActorEnableCollision
- mov rax,[rbx+]]..ab..[[] // rax <- CharMovementComponent
- test rax,rax
- je short @f
- or dword ptr [rax+]]..ac..[[],400 // CharacterMovement->bCheatFlying = false;
- mov edx,5
- mov rcx,rax
- mov rax,[rcx]
- call [rax+5A8] // UCharacterMovementComponent::SetMovementMode
- UCheatManager__Fly_exit:
- add rsp,38
- ret
- align 10 CC
- UCheatManager__Walk:
- sub rsp,38
- mov rsi,rcx // rcx = CheatManager
- mov rbx,[rcx+20] // rbx <- PlayerController
- mov rbx,[rbx+]]..aa..[[] // rbx <- PlayerCharacter
- test rbx,rbx
- je UCheatManager__Walk_exit
- xorps xmm3,xmm3
- xor r8,r8
- lea rcx,[wszCheatWalk]
- mov [rsp+20],rcx // str
- mov rax,FFFFFFFFFFFFFFFF
- @@:
- inc rax
- cmp word ptr [rcx+rax*2],0
- jne short @b
- inc eax
- mov [rsp+28],eax // size with 0-terminator
- lea rdx,[rsp+20] // p -> str|size
- mov rcx,[rsi+20] // rcx <- PlayerController
- mov rax,[rcx]
- call [rax+C70] // APlayerController::ClientMessage
- mov dl,1
- mov rcx,rbx // rbx = PlayerCharacter
- call AActor__SetActorEnableCollision
- mov rax,[rbx+]]..ab..[[] // rax <- CharMovementComponent
- test rax,rax
- je short @f
- and dword ptr [rax+]]..ac..[[],FFFFFBFF // CharacterMovement->bCheatFlying = true;
- mov edx,3
- mov rcx,rax
- mov rax,[rcx]
- call [rax+5A8] // UCharacterMovementComponent::SetMovementMode
- UCheatManager__Walk_exit:
- add rsp,38
- ret
- align 10 CC
- UCheatManager__Ghost:
- sub rsp,38
- mov rsi,rcx // rcx = CheatManager
- mov rbx,[rcx+20] // rbx <- PlayerController
- mov rbx,[rbx+]]..aa..[[] // rbx <- PlayerCharacter
- test rbx,rbx
- je UCheatManager__Ghost_exit
- xorps xmm3,xmm3
- xor r8,r8
- lea rcx,[wszCheatGhost]
- mov [rsp+20],rcx // str
- mov rax,FFFFFFFFFFFFFFFF
- @@:
- inc rax
- cmp word ptr [rcx+rax*2],0
- jne short @b
- inc eax
- mov [rsp+28],eax // size with 0-terminator
- lea rdx,[rsp+20] // p -> str|size
- mov rcx,[rsi+20] // rcx <- PlayerController
- mov rax,[rcx]
- call [rax+C70] // APlayerController_ClientMessage
- xor edx,edx
- mov rcx,rbx // rbx = PlayerCharacter
- call AActor__SetActorEnableCollision
- mov rax,[rbx+]]..ab..[[] // rax <- CharMovementComponent
- test rax,rax
- je short @f
- or dword ptr [rax+]]..ac..[[],400 // CharacterMovement->bCheatFlying = false;
- mov edx,5
- mov rcx,rax
- mov rax,[rcx]
- call [rax+5A8] // UCharacterMovementComponent::SetMovementMode
- UCheatManager__Ghost_exit:
- add rsp,38
- ret
- align 10 CC
- UCheatManager__God:
- sub rsp,38
- mov rsi,rcx // rcx = CheatManager
- mov rbx,[rcx+20] // rbx <- PlayerController
- mov rbx,[rbx+]]..aa..[[] // rbx <- PlayerCharacter
- test rbx,rbx
- je UCheatManager__God_Null
- movzx eax,byte ptr [rbx+]]..ad..[[] // Pawn->CanBeDamaged()
- test al,40
- je short UCheatManager__God_Off
- UCheatManager__God_On:
- and al,0xBF // false
- mov byte ptr [rbx+]]..ad..[[],al // Pawn->SetCanBeDamaged(false);
- lea rcx,[wszCheatGodOn]
- jmp short UCheatManager__God_Print
- UCheatManager__God_Off:
- or al,0x40 // true
- mov byte ptr [rbx+]]..ad..[[],al // Pawn->SetCanBeDamaged(true);
- lea rcx,[wszCheatGodOff]
- jmp short UCheatManager__God_Print
- UCheatManager__God_Null:
- lea rcx,[wszCheatGodNoPawn]
- UCheatManager__God_Print:
- xorps xmm3,xmm3
- xor r8,r8
- mov [rsp+20],rcx // str
- mov rax,FFFFFFFFFFFFFFFF
- @@:
- inc rax
- cmp word ptr [rcx+rax*2],0
- jne short @b
- inc eax
- mov [rsp+28],eax // size with 0-terminator
- lea rdx,[rsp+20] // p -> str|size
- mov rcx,[rsi+20] // rcx <- PlayerController
- mov rax,[rcx]
- call [rax+C70] // APlayerController::ClientMessage
- add rsp,38
- ret
- align 10 CC
- UCheatManager__PlayersOnly:
- push rdi
- sub rsp,20
- mov rax,[rcx] // [
- mov rdi,rcx //
- call [rax+148] //
- test byte ptr [rax+830],0x80 // if (GetWorld()->bPlayersOnly
- jne short @f // ||
- mov rax,[rdi] //
- mov rcx,rdi //
- call [rax+148] //
- test [rax+830],0x100 // GetWorld()->bPlayersOnlyPending)
- jne short @f // ]
- mov rax,[rdi] // [
- mov rcx,rdi //
- mov [rsp+30],rbx //
- call [rax+148] // GetWorld()
- mov rdx,[rdi] //
- mov rcx,rdi //
- mov rbx,rax //
- call [rdx+148] // GetWorld()
- mov ecx,[rbx+830] // ->bPlayersOnlyPending
- mov rbx,[rsp+30] //
- not ecx // = !GetWorld()->bPlayersOnlyPending
- xor ecx,[rax+830] //
- and ecx,0x100 //
- xor [rax+830],ecx // ]
- add rsp,20
- pop rdi
- ret
- @@:
- mov rax,[rdi] // [
- mov rcx,rdi //
- call [rax+148] // GetWorld()->bPlayersOnly = false;
- and [rax+830],0xFFFFFF7F // ]
- mov rcx,rdi // [
- mov rax,[rdi] //
- call [rax+148] // GetWorld()->bPlayersOnlyPending = false;
- and [rax+830],0xFFFFFEFF // ]
- add rsp,20
- pop rdi
- ret
- align 10 CC
- UCheatManager__execGod:
- mov rax,[rdx+20]
- xor r8d,r8d
- test rax,rax
- setne r8l
- add r8,rax
- mov [rdx+20],r8
- mov rax,[rcx]
- //jmp qword ptr [rax+2B8]
- jmp qword ptr [rax+]]..ae..[[]
- align 10 CC
- Z_Construct_UFunction_UCheatManager__God:
- sub rsp,28
- mov rax,[UFunction__God]
- test rax,rax
- jne short @f
- lea rdx,[Z_Construct_UFunction_UCheatManager__God_Statics_FuncParams]
- lea rcx,[UFunction__God]
- call UE4CodeGen_Private__ConstructUFunction // UE4CodeGen_Private::ConstructUFunction
- mov rax,[UFunction__God]
- @@:
- add rsp,28
- ret
- align 10 CC
- UCheatManager__execGhost:
- mov rax,[rdx+20]
- xor r8d,r8d
- test rax,rax
- setne r8l
- add r8,rax
- mov [rdx+20],r8
- mov rax,[rcx]
- //jmp qword ptr [rax+2B0]
- jmp qword ptr [rax+]]..af..[[]
- align 10 CC
- Z_Construct_UFunction_UCheatManager__Ghost:
- sub rsp,28
- mov rax,[UFunction__Ghost]
- test rax,rax
- jne short @f
- lea rdx,[Z_Construct_UFunction_UCheatManager__Ghost_Statics_FuncParams]
- lea rcx,[UFunction__Ghost]
- call UE4CodeGen_Private__ConstructUFunction // UE4CodeGen_Private::ConstructUFunction
- mov rax,[UFunction__Ghost]
- @@:
- add rsp,28
- ret
- align 10 CC
- /*
- Z_Construct_UClass_UCheatManager:
- sub rsp,28
- mov rax,[UCheatManager_OuterClass]
- test rax,rax
- jne short @f
- lea rdx,[UCheatManager_GetPrivateStaticClass]
- lea rcx,[UCheatManager_OuterClass]
- call UE4CodeGen_Private__ConstructUClass
- mov rax,[UCheatManager_OuterClass]
- @@:
- add rsp,28
- ret
- */
- Z_Construct_UClass_UCheatManager:
- sub rsp,28
- mov rax,CheatManager_Class
- add rsp,28
- ret
- align 10 CC
- ConstructUFunctions:
- sub rsp,178
- mov r8d,2 // uint32 NumFunctions
- lea rdx,[Z_Construct_UClass_UCheatManager_Statics_FuncInfo] // FClassFunctionLinkInfo* Functions
- //call UCheatManager_GetPrivateStaticClass
- mov rax,CheatManager_Class
- mov rcx,rax // Class Engine.CheatManager
- call UClass__CreateLinkAndAddChildFunctionsToMap // UClass::CreateLinkAndAddChildFunctionsToMap
- add rsp,178
- ret
- align 10 CC
- wszCheatFly:
- dw '[SunBeam]: fly -> ON.',0
- align 10 CC
- wszCheatWalk:
- dw '[SunBeam]: fly/ghost -> OFF.',0
- align 10 CC
- wszCheatGhost:
- dw '[SunBeam]: ghost -> ON.',0
- align 10 CC
- wszCheatGodOn:
- dw '[SunBeam]: god -> ON.',0
- align 10 CC
- wszCheatGodOff:
- dw '[SunBeam]: god -> OFF.',0
- align 10 CC
- wszCheatGodNoPawn:
- dw '[SunBeam]: god -> No APawn* possessed.',0
- align 10 CC
- UFunction__God:
- dq 0
- align 10 CC
- UFunction__Ghost:
- dq 0
- align 10 CC
- pszGod:
- db 'God',0
- align 10 CC
- pszGhost:
- db 'Ghost',0
- align 10 CC
- Z_Construct_UFunction_UCheatManager__God_Statics_FuncParams:
- dq Z_Construct_UClass_UCheatManager // 0x00
- dq pszGod // 0x08
- dq 0x45 // 0x10
- dq 0 // 0x18
- dq 04020600 // 0x20
- dq 0 // 0x28
- dq 0 // 0x30
- dq 0 // 0x38
- dq 0
- align 10 CC
- Z_Construct_UFunction_UCheatManager__Ghost_Statics_FuncParams:
- dq Z_Construct_UClass_UCheatManager // 0x00
- dq pszGhost // 0x08
- dq 0x45 // 0x10
- dq 0 // 0x18
- dq 04020600 // 0x20
- dq 0 // 0x28
- dq 0 // 0x30
- dq 0 // 0x38
- dq 0
- align 10 CC
- Z_Construct_UClass_UCheatManager_Statics_FuncInfo:
- dq Z_Construct_UFunction_UCheatManager__God // 0x00
- dq pszGod // 0x08
- dq Z_Construct_UFunction_UCheatManager__Ghost // 0x10
- dq pszGhost // 0x18
- dq 0
- ]])
- t = getAddressSafe( "ConstructUFunctions" )
- if t == 0x0 then stopExec( "'ConstructUFunctions' not assembled?" ) end
- executeCodeEx( 0, nil, t )
- --* adjust exec functions after creation *--
- t = getAddressSafe( "UFunction__God" )
- if t == 0x0 then stopExec( "'UFunction__God' not assembled?" ) end
- local UFunction_God = readQword( getAddressSafe( "UFunction__God" ) )
- local UCheatManager_execGod = getAddressSafe( "UCheatManager__execGod" )
- writeQword( UFunction_God + 0xB0, UCheatManager_execGod )
- local UFunction_Ghost = readQword( getAddressSafe( "UFunction__Ghost" ) )
- local UCheatManager_execGhost = getAddressSafe( "UCheatManager__execGhost" )
- writeQword( UFunction_Ghost + 0xB0, UCheatManager_execGhost )
- t = staticFindObjectEx( "ObjectProperty", "Engine.PlayerController", "CheatManager" )
- if t < 1 then stopExec( "'CheatManager' ObjectProperty not found." ) end
- local CheatManager_offset = getOffset( t )
- local CheatManager = readQword( PlayerController + CheatManager_offset )
- local mf_CheatManager = readQword( CheatManager )
- -- offset till execFly in the member-functions vtable [execFly->+0x00;execWalk->+0x08;execGhost->+0x10;execGod->+0x18;execPlayersOnly->+0x58]
- t = staticFindObjectEx( "Function", "Engine.CheatManager", "Fly" )
- if t < 1 then stopExec( "'Fly' Function not found." ) end
- t = readQword( t + 0xB0 ) -- to get to execFly
- t = t + 0x18 + 0x3 -- offset till the JMP qword ptr [rax+2A0] + 0x3
- t = readInteger( t )
- t = mf_CheatManager + t -- should be 2A0 at this point
- local UCheatManager_execFly = t + 0x00
- fullAccess( UCheatManager_execFly, 8 )
- writeQword( UCheatManager_execFly, getAddressSafe( "UCheatManager__Fly" ) )
- local UCheatManager_execWalk = t + 0x08
- fullAccess( UCheatManager_execWalk, 8 )
- writeQword( UCheatManager_execWalk, getAddressSafe( "UCheatManager__Walk" ) )
- local UCheatManager_execGhost = t + 0x10
- fullAccess( UCheatManager_execGhost, 8 )
- writeQword( UCheatManager_execGhost, getAddressSafe( "UCheatManager__Ghost" ) )
- local UCheatManager_execGod = t + 0x18
- fullAccess( UCheatManager_execGod, 8 )
- writeQword( UCheatManager_execGod, getAddressSafe( "UCheatManager__God" ) )
- local UCheatManager_execPlayersOnly = t + 0x58
- fullAccess( UCheatManager_execPlayersOnly, 8 )
- writeQword( UCheatManager_execPlayersOnly, getAddressSafe( "UCheatManager__PlayersOnly" ) )
- --** inline UPlayer::Exec so DeveloperPerks functions work **--
- t = allocateMemory( 0x1000 )
- unregisterSymbol( "UPlayer__Exec_hook" )
- registerSymbol( "UPlayer__Exec_hook", t, true )
- local aob_in_UPlayer_Exec = "488D4C24??E8??????????C04883C4??415F415E415D5F5E5D5BC3"
- sl = aobScanEx( aob_in_UPlayer_Exec )
- if not sl or sl.Count < 1 then stopExec( "'aob_in_UPlayer_Exec' not found." ) end
- t = tonumber( sl[0], 16 )
- unregisterSymbol( "UPlayer__Exec_hookspot" )
- registerSymbol( "UPlayer__Exec_hookspot", t, true )
- t = staticFindObjectEx( "ObjectProperty", "BPCont_Player.BPCont_Player_C", "DeveloperPerks" )
- if t < 1 then stopExec( "'DeveloperPerks' ObjectProperty not found." ) end
- t = getOffset( t )
- t = string.format( "%X", t )
- autoAssemble([[
- label( UPlayer__Exec_hookspot_o )
- registersymbol( UPlayer__Exec_hookspot_o )
- label( UPlayer__Exec_hook_exit )
- UPlayer__Exec_hook:
- // [ObjectProperty BPCont_Player.BPCont_Player_C.DeveloperPerks + 0x44] = 0x2780
- // r14 = OakPlayerController
- mov rcx,[r14+]]..t..[[] // adjusted it so it's read directly from the ObjectProperty, hence stable across updates
- test rcx,rcx
- je short @f
- mov rax,[rcx]
- mov r9,rdi
- mov r8,rbp
- mov rdx,rsi
- call qword ptr [rax+220] // UObject::ProcessConsoleExec
- test al,al
- jne short UPlayer__Exec_hook_exit
- UPlayer__Exec_hookspot_o:
- readmem( UPlayer__Exec_hookspot, 5 )
- jmp far UPlayer__Exec_hookspot+5
- UPlayer__Exec_hook_exit:
- jmp far UPlayer__Exec_hookspot+1B
- align 10 CC
- Trampolines+20:
- jmp far UPlayer__Exec_hook
- align 10 CC
- UPlayer__Exec_hookspot:
- jmp Trampolines+20
- ]])
- --** set UFUNC_Exec flag on all DeveloperPerks functions of interest **--
- local UFUNC_Exec = 0x200
- local i = 0x0
- local cmdArr = 0x0
- cmdArr = {
- "GiveCash",
- "GiveEridium",
- "GiveGoldenKeys",
- "GiveLevels",
- "KillEnemies",
- "SpawnAwesomeItems",
- "UnlimitedAmmo",
- "UnlockAllCustomizations"
- }
- for i = 1, #cmdArr do
- t = staticFindObjectEx( "Function", "BP_DevPerks.BP_DevPerks_C", cmdArr[i] )
- if t < 1 then stopExec( "'" .. cmdArr[i] .. "' Function not found." ) end
- writeInteger( t + 0x88, readInteger( t + 0x88 ) | UFUNC_Exec )
- if cmdArr[i] == "SpawnAwesomeItems" then
- unregisterSymbol( "UFunction__SpawnAwesomeItems" )
- registerSymbol( "UFunction__SpawnAwesomeItems", t, true )
- end
- end
- cmdArr = {
- "GetOwnerOakPlayerController",
- "GiveCurrency",
- "GrantLevels",
- "KillAllEnemies",
- "Loaded",
- "OnDeveloperPerkActivated",
- "PerkTypeEnumFunc",
- "ServerGiveCurrency",
- "ServerGrantLevels",
- "ServerKillAllEnemies",
- "ServerSpawnItems",
- "ServerUnlockVehicleParts",
- "SpawnItems",
- "UnlockCustomizations",
- "UnlockVehicleParts"
- }
- for i = 1, #cmdArr do
- t = staticFindObjectEx( "Function", "OakGame.OakDeveloperPerks", cmdArr[i] )
- if t < 1 then stopExec( "'" .. cmdArr[i] .. "' Function not found." ) end
- writeInteger( t + 0x88, readInteger( t + 0x88 ) | UFUNC_Exec )
- end
- --** misc. stuff **--
- -- ZoneMapGlobalData contains the values we'd like to adjust for minimap FogOfDiscovery removal
- t = staticFindObjectEx( "ZoneMapGlobalsData", "ZoneMapGlobals.ZoneMapGlobals" )
- if t < 1 then stopExec( "'ZoneMapGlobalsData' not found." ) end
- unregisterSymbol( "ZoneMapGlobalsData" )
- registerSymbol( "ZoneMapGlobalsData", t, true )
- --** remove Tab from ConsoleKeys**--
- if messageDialog( 'Remove Tab from ConsoleKeys?', mtConfirmation, mbYes, mbNo ) == mrYes then
- killTabInConsoleKeys()
- end
- --** replace Tilde or Tab with a key of your choice **-
- --[[
- [00013646] BackSpace
- [00013647] Tab
- [00013648] Enter
- [00013649] Pause
- [00013650] CapsLock
- [00013651] Escape
- [00013652] SpaceBar
- [00013653] PageUp
- [00013654] PageDown
- [00013655] End
- [00013656] Home
- [00013657] Left
- [00013658] Up
- [00013659] Right
- [00013660] Down
- [00013661] Insert
- [00013662] Delete
- [00013663] Zero
- [00013664] One
- [00013665] Two
- [00013666] Three
- [00013667] Four
- [00013668] Five
- [00013669] Six
- [00013670] Seven
- [00013671] Eight
- [00013672] Nine
- [00013673] A
- [00013674] B
- [00013675] C
- [00013676] D
- [00013677] E
- [00013678] F
- [00013679] G
- [00013680] H
- [00013681] I
- [00013682] J
- [00013683] K
- [00013684] L
- [00013685] M
- [00013686] N
- [00013687] O
- [00013688] P
- [00013689] Q
- [00013690] R
- [00013691] S
- [00013692] T
- [00013693] U
- [00013694] V
- [00013695] W
- [00013696] X
- [00013697] Y
- [00013698] Z
- [00013699] NumPadZero
- [00013700] NumPadOne
- [00013701] NumPadTwo
- [00013702] NumPadThree
- [00013703] NumPadFour
- [00013704] NumPadFive
- [00013705] NumPadSix
- [00013706] NumPadSeven
- [00013707] NumPadEight
- [00013708] NumPadNine
- [00013709] Multiply
- [00013710] Add
- [00013711] Subtract
- [00013712] Decimal
- [00013713] Divide
- [00013714] F1
- [00013715] F2
- [00013716] F3
- [00013717] F4
- [00013718] F5
- [00013719] F6
- [00013720] F7
- [00013721] F8
- [00013722] F9
- [00013723] F10
- [00013724] F11
- [00013725] F12
- [00013726] NumLock
- [00013727] ScrollLock
- [00013728] LeftShift
- [00013729] RightShift
- [00013730] LeftControl
- [00013731] RightControl
- [00013732] LeftAlt
- [00013733] RightAlt
- [00013734] LeftCommand
- [00013735] RightCommand
- [00013736] Semicolon
- [00013737] Equals
- [00013738] Comma
- [00013739] Underscore
- [00013740] Hyphen
- [00013741] Period
- [00013742] Slash
- [00013743] Tilde
- [00013744] LeftBracket
- [00013745] LeftParantheses
- [00013746] Backslash
- [00013747] RightBracket
- [00013748] RightParantheses
- [00013749] Apostrophe
- [00013750] Quote
- [00013751] Asterix
- [00013752] Ampersand
- [00013753] Caret
- [00013754] Dollar
- [00013755] Exclamation
- [00013756] Colon
- [00013757] A_AccentGrave
- [00013758] E_AccentGrave
- [00013759] E_AccentAigu
- [00013760] C_Cedille
- ]]
- if messageDialog( 'Change current ConsoleKey?', mtConfirmation, mbYes, mbNo ) == mrYes then
- synchronize( function()
- local s = inputQuery( "Change ConsoleKey", "Key:", "Backspace" )
- if string.len( s ) ~= 0x0 then changeConsoleKeyTo( s ) end
- end )
- end
- end
- [ENABLE]
- local CEVersion = 7.1
- local processName = "Wonderlands.exe"
- if CEVersion ~= getCEVersion() then
- showMessage( "This table was designed with Cheat Engine " .. CEVersion .. ".\r\nYour Cheat Engine " .. getCEVersion() .. " may work just fine. Try it first.\r\n\r\nIn case it doesn't, then please download version 7.1 ZIP file from the FRF Wonderlands topic.\r\n\r\n7.4 may cause failures with memory allocation, thus [ Initialize ] script won't enable and you'll have to close and reopen the game." )
- end
- openGameProcess( processName )
- local sl, t = 0, 0
- -- get BuildId
- local aob_to_VersionString = "488935????????8935????????C705????????04001400668935"
- sl = aobScanEx( aob_to_VersionString )
- if not sl or sl.Count < 1 then stopExec( "'aob_to_VersionString' not found." ) end
- t = tonumber( sl[0], 16 )
- local BuildId = readString( readQword( t + readInteger( t + 0x3, true ) + 0x7 ), 60000, true )
- -- find the table record by matching strings, rather than direct record description/id
- for i = 0, AddressList.Count - 1 do
- mr = AddressList[i]
- if mr.Parent == nil then
- if string.match( mr.Description, "Version:" ) then
- break
- end
- end
- end
- local TableBuildId = mr.Description
- TableBuildId = string.match( TableBuildId, 'Version: Epic Games Store | (.*)' )
- -- check the two and warn the user
- if TableBuildId ~= BuildId then
- showMessage( "This table is designed for BuildId: \r\n>> " .. TableBuildId .. "\r\n\r\nYours is: \r\n>> " .. BuildId .. "\r\n\r\nThe script will now enable, though I can't guarantee everything will work properly." )
- end
- -- scan time!
- Init()
- [DISABLE]
- -- restore the CheatManager hook
- autoAssemble([[
- APlayerController__PostInitializeComponents_hookspot:
- readmem( APlayerController__PostInitializeComponents_hookspot_o, 7 )
- unregistersymbol( APlayerController__PostInitializeComponents_hookspot_o )
- unregistersymbol( APlayerController__AddCheats )
- ]])
- deAlloc( getAddressSafe( "Inline__CheatManager" ) )
- -- clean-up
- local t = getAddressSafe( "Trampolines" )
- local offset = 0x500
- executeCodeEx( 0, nil, getAddressSafe( "RtlZeroMemory" ), t, 0x1000 - offset )
- unregisterSymbol( "Trampolines" )
- -- unregister everything; I know I could've used "unregistersymbol( * )"
- autoAssemble([[
- unregistersymbol( CheatManager_Class )
- unregistersymbol( Inline__CheatManager )
- unregistersymbol( Weapon__OnFire )
- unregistersymbol( AActor__Tick_hookspot )
- unregistersymbol( UEngine__GetFirstGamePlayer )
- unregistersymbol( UE4CodeGen_Private__ConstructUClass )
- unregistersymbol( UE4CodeGen_Private__ConstructUFunction )
- unregistersymbol( UClass__CreateLinkAndAddChildFunctionsToMap )
- unregistersymbol( AActor__SetActorEnableCollision )
- unregistersymbol( APlayerController__PostInitializeComponents_hookspot )
- unregistersymbol( FName__FName )
- unregistersymbol( StaticFindObject )
- unregistersymbol( StaticConstructObject_Internal )
- unregistersymbol( FObjectInitializer__AssertIfInConstructor )
- unregistersymbol( wszNewObject )
- unregistersymbol( GetTransientPackage )
- unregistersymbol( GEngine )
- ]])
- </AssemblerScript>
- <CheatEntries>
- <CheatEntry>
- <ID>16274</ID>
- <Description>"[ Engine ]"</Description>
- <Options moHideChildren="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <GroupHeader>1</GroupHeader>
- <CheatEntries>
- <CheatEntry>
- <ID>24341</ID>
- <Description>"Kill Tab in ConsoleKeys"</Description>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript Async="1">{$STRICT}
- {$lua}
- if syntaxcheck then return end
- [ENABLE]
- killTabInConsoleKeys()
- return "assert(true)"
- [DISABLE]
- </AssemblerScript>
- </CheatEntry>
- <CheatEntry>
- <ID>24342</ID>
- <Description>"Change ConsoleKey"</Description>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript>{$STRICT}
- {$lua}
- if syntaxcheck then return end
- [ENABLE]
- local s = inputQuery( "Change ConsoleKey", "Key:", "Backspace" )
- if string.len( s ) ~= 0x0 then changeConsoleKeyTo( s ) end
- return "assert(true)"
- [DISABLE]
- </AssemblerScript>
- </CheatEntry>
- <CheatEntry>
- <ID>16267</ID>
- <Description>"Unrestrict CVars"</Description>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript Async="1">[ENABLE]
- aobscanmodule( hkProcessUserConsoleInput, $process, 488B1048????FF5218A8010F )
- registersymbol( hkProcessUserConsoleInput )
- label( hkProcessUserConsoleInput_o )
- registersymbol( hkProcessUserConsoleInput_o )
- alloc( Hook, 0x1000, $process )
- Hook:
- mov byte ptr [rax+18],0
- hkProcessUserConsoleInput_o:
- readmem( hkProcessUserConsoleInput, 6 )
- jmp hkProcessUserConsoleInput+6
- hkProcessUserConsoleInput:
- jmp Hook
- db 90
- [DISABLE]
- hkProcessUserConsoleInput:
- readmem( hkProcessUserConsoleInput_o, 6 )
- dealloc( Hook )
- unregistersymbol( hkProcessUserConsoleInput_o )
- unregistersymbol( hkProcessUserConsoleInput )
- </AssemblerScript>
- </CheatEntry>
- <CheatEntry>
- <ID>16247</ID>
- <Description>"Clear Console (works only with the Console active)"</Description>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript Async="1">{$STRICT}
- {$lua}
- if syntaxcheck then return end
- [ENABLE]
- local Console = getAddressSafe( "Console" )
- if Console ~= nil then
- Console = readQword( Console )
- if Console ~= 0x0 then
- local mf_Console = readQword( Console )
- local UConsole_ClearOutput = readQword( mf_Console + 0x290 )
- executeCode( UConsole_ClearOutput, Console )
- end
- end
- return "assert(true)"
- [DISABLE]
- </AssemblerScript>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>16303</ID>
- <Description>"[ Scripts ]"</Description>
- <Options moHideChildren="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <GroupHeader>1</GroupHeader>
- <CheatEntries>
- <CheatEntry>
- <ID>24025</ID>
- <Description>"God Mode"</Description>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript Async="1">// Trampolines+30
- [ENABLE]
- alloc( AActor__Tick_hook, 0x1000 )
- registersymbol( AActor__Tick_hook )
- label( AActor__Tick_hookspot_o )
- registersymbol( AActor__Tick_hookspot_o )
- AActor__Tick_hook:
- push rax
- mov rax,[PlayerCharacter]
- cmp rax,rbx
- pop rax
- jne short @f
- and byte ptr [rbx+91],BF
- AActor__Tick_hookspot_o:
- readmem( AActor__Tick_hookspot, 7 )
- jmp far AActor__Tick_hookspot+7
- align 10 CC
- Trampolines+30:
- jmp far AActor__Tick_hook
- align 10 CC
- AActor__Tick_hookspot:
- jmp Trampolines+30
- nop 2
- [DISABLE]
- AActor__Tick_hookspot:
- readmem( AActor__Tick_hookspot_o, 7 )
- unregistersymbol( AActor__Tick_hookspot_o )
- dealloc( AActor__Tick_hook )
- unregistersymbol( AActor__Tick_hook )
- {$lua}
- local t = getAddressSafe( "PlayerCharacter" )
- if t ~= nil then
- t = readQword( t )
- if t ~= 0x0 then
- local u = readBytes( t + 0x91 )
- u = u | 0x40
- writeBytes( t + 0x91, u )
- end
- end
- </AssemblerScript>
- </CheatEntry>
- <CheatEntry>
- <ID>11</ID>
- <Description>"Infinite Clip Ammo"</Description>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript Async="1">// Trampolines+40
- [ENABLE]
- alloc( Weapon__OnFire_hook, 0x1000 )
- registersymbol( Weapon__OnFire_hook )
- label( Weapon__OnFire_o )
- registersymbol( Weapon__OnFire_o )
- Weapon__OnFire_hook:
- mov rax,[rcx+1A8] // WeaponAmmoComponent->WeaponPrivate
- test rax,rax
- jne short @f
- mov rax,[rcx+118] // WeaponAmmoComponent->CachedWeapon
- test rax,rax
- je short Weapon__OnFire_o
- @@:
- cmp [rax+4A0],0 // Weapon->WeaponUser
- je short @f
- mov rax,[rax+4A8]
- mov rax,[rax-928] // PlayerController
- cmp rax,[PlayerController]
- jne short @f
- ret // no ammo processing
- Weapon__OnFire_o:
- readmem( Weapon__OnFire, 6 )
- jmp Weapon__OnFire+6
- align 10 CC
- Trampolines+40:
- jmp far Weapon__OnFire_hook
- align 10 CC
- Weapon__OnFire:
- jmp Trampolines+40
- nop 1
- [DISABLE]
- Weapon__OnFire:
- readmem( Weapon__OnFire_o, 6 )
- unregistersymbol( Weapon__OnFire_o )
- dealloc( Weapon__OnFire_hook )
- unregistersymbol( Weapon__OnFire_hook )
- </AssemblerScript>
- </CheatEntry>
- <CheatEntry>
- <ID>24357</ID>
- <Description>"Set Weapon Properties"</Description>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript Async="1">{$STRICT}
- {$lua}
- if syntaxcheck then return end
- [ENABLE]
- -- get active weapon first (can use "Function OakGame.OakCharacter.GetActiveWeapon" as well)
- t = staticFindObjectEx( "Function", "OakGame.OakCharacter", "GetWeapon" )
- if t < 1 then stopExec( "'GetWeapon' Function not found." ) end
- t = readQword( t + 0xB0 )
- if readBytes( t, 0x1 ) == 0xE9 then -- cuz of Denuvo function relocations
- t = t + readInteger( t + 0x1, true ) + 0x5
- end
- t = t + 0x73 -- get to CALL
- execGetWeapon = t + readInteger( t + 0x1, true ) + 0x5 -- now we have execGetWeapon
- local PlayerCharacter = readQword( getAddressSafe( "PlayerCharacter" ) )
- local Weapon = executeCodeEx( 0, nil, execGetWeapon, PlayerCharacter, 0 )
- if Weapon ~= 0x0 then
- --print( string.format( "Weapon:\t\t\t\t\t%X", Weapon ) )
- -- get Sway, Recoil, FireProjectile Component Classes
- WeaponRecoilComponent_Class = staticFindObjectEx( "Class", "GbxWeapon.WeaponRecoilComponent" )
- if t < 1 then stopExec( "'WeaponRecoilComponent' Class not found." ) end
- --print( string.format( "WeaponRecoilComponent Class:\t\t%X", WeaponRecoilComponent_Class ) )
- WeaponSwayComponent_Class = staticFindObjectEx( "Class", "OakGame.WeaponSwayComponent" )
- if t < 1 then stopExec( "'WeaponSwayComponent' Class not found." ) end
- --print( string.format( "WeaponSwayComponent Class:\t\t%X", WeaponSwayComponent_Class ) )
- WeaponHeatComponent_Class = staticFindObjectEx( "Class", "GbxWeapon.WeaponHeatComponent" )
- if t < 1 then stopExec( "'WeaponHeatComponent' Class not found." ) end
- --print( string.format( "WeaponHeatComponent Class:\t\t%X", WeaponHeatComponent_Class ) )
- WeaponChargeComponent_Class = staticFindObjectEx( "Class", "GbxWeapon.WeaponChargeComponent" )
- if t < 1 then stopExec( "'WeaponChargeComponent' Class not found." ) end
- --print( string.format( "WeaponChargeComponent Class:\t\t%X", WeaponChargeComponent_Class ) )
- WeaponFireProjectileComponent_Class = staticFindObjectEx( "Class", "GbxWeapon.WeaponFireProjectileComponent" )
- if t < 1 then stopExec( "'WeaponFireProjectileComponent' Class not found." ) end
- --print( string.format( "WeaponFireProjectileComponent Class:\t\t%X", WeaponFireProjectileComponent_Class ) )
- -- we'll use "Function GbxWeapon.Weapon.GetUseModeComponentByClass"
- t = staticFindObjectEx( "Function", "GbxWeapon.Weapon", "GetUseModeComponentByClass" )
- if t < 1 then stopExec( "'GetUseModeComponentByClass' Function not found." ) end
- t = readQword( t + 0xB0 )
- if readBytes( t, 0x1 ) == 0xE9 then -- cuz of Denuvo function relocations
- t = t + readInteger( t + 0x1, true ) + 0x5
- end
- t = t + 0xB6
- local u = readInteger( t + 0x2 )
- local Weapon_mf = readQword( Weapon )
- local execGetUseModeComponentByClass = readQword( Weapon_mf + u )
- -- get the current weapon's 3 components above by their Classes
- -- how many max. modes are there, 3?
- for i = 0, 2 do
- -- RECOIL
- WeaponRecoilComponent = executeCodeEx( 0, nil, execGetUseModeComponentByClass, Weapon, WeaponRecoilComponent_Class, i )
- -- disable recoil for all weapon modes by 0-ing out the # of Samples (array size = 0)
- if WeaponRecoilComponent ~= 0x0 then
- RecoilPatternData = readQword( WeaponRecoilComponent + 0x1A0 )
- --print( string.format( "RecoilPatternData_Mode0%X:\t\t\t%X", i, RecoilPatternData ) )
- Samples = readQword( RecoilPatternData + 0x30 )
- --print( string.format( "Samples_Mode0%X:\t\t\t\t%X", i, Samples ) )
- NumSamples = RecoilPatternData + 0x38
- --print( string.format( "NumSamples_Mode0%X:\t\t\t%X", i, readInteger( NumSamples ) ) )
- writeInteger( NumSamples, 0 )
- end
- --print( string.format( "WeaponRecoilComponent_Mode0%X:\t\t%X", i, WeaponRecoilComponent ) )
- -- SWAY
- -- disable sway for all weapon modes by 0-ing out the # of Samples (array size = 0)
- WeaponSwayComponent = executeCodeEx( 0, nil, execGetUseModeComponentByClass, Weapon, WeaponSwayComponent_Class, i )
- if WeaponSwayComponent ~= 0x0 then
- SwayPatternData = readQword( WeaponSwayComponent + 0x188 )
- --print( string.format( "SwayPatternData_Mode0%X:\t\t\t%X", i, SwayPatternData ) )
- Samples = readQword( SwayPatternData + 0x30 )
- --print( string.format( "Samples_Mode0%X:\t\t\t\t%X", i, Samples ) )
- NumSamples = SwayPatternData + 0x38
- --print( string.format( "NumSamples_Mode0%X:\t\t\t%X", i, readInteger( NumSamples ) ) )
- writeInteger( NumSamples, 0 )
- end
- --print( string.format( "WeaponSwayComponent_Mode0%X:\t\t%X", i, WeaponSwayComponent ) )
- -- HEAT
- -- kill overheating on firing (weapon still overheats, but you can fire it while overheated; won't reload)
- WeaponHeatComponent = executeCodeEx( 0, nil, execGetUseModeComponentByClass, Weapon, WeaponHeatComponent_Class, i )
- if WeaponHeatComponent ~= 0x0 then
- bCanOverheat = WeaponHeatComponent + 0x1B9
- t = readBytes( bCanOverheat )
- t = t & 0xF7 -- false = and(not(true_val))
- writeBytes( bCanOverheat, t )
- end
- -- CHARGE
- WeaponChargeComponent = executeCodeEx( 0, nil, execGetUseModeComponentByClass, Weapon, WeaponChargeComponent_Class, i )
- if WeaponChargeComponent ~= 0x0 then
- ChargeTime = WeaponChargeComponent + 0x198
- writeFloat( ChargeTime + 0x4, 0.0 ) -- instant charge
- writeFloat( ChargeTime + 0x8, 0.0 ) -- instant charge
- DischargeTime = WeaponChargeComponent + 0x1A4
- writeFloat( DischargeTime + 0x4, 3600.0 ) -- 1h
- writeFloat( DischargeTime + 0x8, 3600.0 ) -- 1h
- end
- -- PROJECTILE
- WeaponFireProjectileComponent = executeCodeEx( 0, nil, execGetUseModeComponentByClass, Weapon, WeaponFireProjectileComponent_Class, i )
- --print( string.format( "WeaponFireProjectileComponent_Mode0%X:\t%X", i, WeaponFireProjectileComponent ) )
- -- adjust several parameters in here
- if WeaponFireProjectileComponent ~= 0x0 then
- FireRate = WeaponFireProjectileComponent + 0x218
- writeFloat( FireRate + 0x4, 20.0 )
- writeFloat( FireRate + 0x8, 20.0 )
- BurstFireDelay = WeaponFireProjectileComponent + 0x230
- writeFloat( BurstFireDelay + 0x4, 0.0 )
- writeFloat( BurstFireDelay + 0x8, 0.0 )
- bAutoBurst = WeaponFireProjectileComponent + 0x23C
- writeBytes( bAutoBurst, 0x1 )
- ShotAmmoCost = WeaponFireProjectileComponent + 0x2E0
- writeInteger( ShotAmmoCost + 0x4, 0 )
- writeInteger( ShotAmmoCost + 0x8, 0 )
- Spread = WeaponFireProjectileComponent + 0x2F0
- writeFloat( Spread + 0x4, 0.0 )
- writeFloat( Spread + 0x8, 0.0 )
- AccuracyImpulse = WeaponFireProjectileComponent + 0x2FC
- writeFloat( AccuracyImpulse + 0x4, 0.0 )
- writeFloat( AccuracyImpulse + 0x8, 0.0 )
- BurstAccuracyImpulseScale = WeaponFireProjectileComponent + 0x308
- writeFloat( BurstAccuracyImpulseScale + 0x4, 0.0 )
- writeFloat( BurstAccuracyImpulseScale + 0x8, 0.0 )
- ProjectileSpeedScale = WeaponFireProjectileComponent + 0x90C
- writeFloat( ProjectileSpeedScale + 0x4, 200.0 )
- writeFloat( ProjectileSpeedScale + 0x8, 200.0 )
- -- might wanna remove the below if too instant-kill-y
- Damage = WeaponFireProjectileComponent + 0x318
- local newDamage = readFloat( Damage + 0x4 ) * 4.0
- writeFloat( Damage + 0x4, newDamage )
- writeFloat( Damage + 0x8, newDamage )
- end
- end
- end
- return "assert(true)"
- [DISABLE]
- </AssemblerScript>
- <Hotkeys>
- <Hotkey>
- <Action>Toggle Activation</Action>
- <Keys>
- <Key>103</Key>
- </Keys>
- <ID>0</ID>
- </Hotkey>
- </Hotkeys>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24109</ID>
- <Description>"[ SpawnAwesomeItems ]"</Description>
- <Options moHideChildren="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>0080FF</Color>
- <GroupHeader>1</GroupHeader>
- <CheatEntries>
- <CheatEntry>
- <ID>24106</ID>
- <Description>"Set All ItemPools To .."</Description>
- <LastState/>
- <Color>808000</Color>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript>{$STRICT}
- {$lua}
- if syntaxcheck then return end
- [ENABLE]
- local UFunction = readQword( getAddressSafe( "UFunction_SpawnAwesomeItems" ) )
- local UScript = readQword( UFunction + 0x48 )
- local addr = inputQuery( "Set All Pools To", "ItemPoolData Address:", string.format( "%X", readQword( UScript + 0x0B ) ) )
- addr = tonumber( addr, 16 )
- local offsets_arr = { 0x0B, 0x14, 0x1D, 0x26, 0x2F, 0x38, 0x41, 0x4A, 0x76, 0x7F, 0x88 }
- for i = 1, #offsets_arr do
- writeQword( UScript + offsets_arr[i], addr )
- end
- return "assert (true)"
- [DISABLE]
- --[[
- default UnrealScript:
- +0x0B: ItemPoolData_1_1 (ItemPool_Artifacts_05_Legendary)
- +0x14: ItemPoolData_1_2 (ItemPool_ClassMods_05_Legendary)
- +0x1D: ItemPoolData_1_3 (ItemPool_GrenadeMods_05_Legendary)
- +0x26: ItemPoolData_1_4 (ItemPool_Shields_05_Legendary)
- +0x2F: ItemPoolData_1_5 (ItemPool_Guns_Legendary)
- +0x38: ItemPoolData_1_6 (ItemPool_Guns_Legendary)
- +0x41: ItemPoolData_1_7 (ItemPool_Guns_Legendary)
- +0x4A: ItemPoolData_1_8 (ItemPool_Guns_Legendary)
- +0x76: ItemPoolData_2_1 (ItemPool_Eridium_Stack)
- +0x7F: ItemPoolData_2_2 (ItemPool_Eridium)
- +0x88: ItemPoolData_2_3 (ItemPool_Money_Rich)
- ]]
- </AssemblerScript>
- </CheatEntry>
- <CheatEntry>
- <ID>24092</ID>
- <Description>"UFunction__SpawnAwesomeItems"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>UFunction__SpawnAwesomeItems</Address>
- <CheatEntries>
- <CheatEntry>
- <ID>24105</ID>
- <Description>"UnrealScript"</Description>
- <LastState Value="" RealAddress="00000000"/>
- <GroupHeader>1</GroupHeader>
- <Address>UFunction__SpawnAwesomeItems+48</Address>
- <Offsets>
- <Offset>0</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24094</ID>
- <Description>"ItemPoolData_1_1 (ItemPool_Guns_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+B</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24095</ID>
- <Description>"ItemPoolData_1_2 (ItemPool_SpellMods_05_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+14</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24096</ID>
- <Description>"ItemPoolData_1_3 (ItemPool_Melee_05_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+1D</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>87501</ID>
- <Description>"ItemPoolData_2_1 (ItemPool_Amulets_05_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+49</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>87506</ID>
- <Description>"ItemPoolData_2_2 (ItemPool_Rings_05_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+52</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>87505</ID>
- <Description>"ItemPoolData_2_3 (ItemPool_Armor_05_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+5B</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>87500</ID>
- <Description>"ItemPoolData_2_4 (ItemPool_Shields_05_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+64</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>87499</ID>
- <Description>"ItemPoolData_3_1 (ItemPool_Guns_VeryRare)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+90</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>87507</ID>
- <Description>"ItemPoolData_3_2 (ItemPool_SpellMods_04_VeryRare)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+99</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>87508</ID>
- <Description>"ItemPoolData_3_3 (ItemPool_Melee_04_VeryRare )"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+A2</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>87498</ID>
- <Description>"ItemPoolData_3_4 (ItemPool_Armor_04_VeryRare )"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+AB</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>87497</ID>
- <Description>"ItemPoolData_3_5 (ItemPool_Amulets_04_VeryRare)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+B4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>87502</ID>
- <Description>"ItemPoolData_3_6 (ItemPool_Shields_04_VeryRare)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+BD</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>87503</ID>
- <Description>"ItemPoolData_3_7 (ItemPool_Rings_04_VeryRare)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+C6</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>3</ID>
- <Description>"[ Debug ]"</Description>
- <Options moHideChildren="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>8EA5F5</Color>
- <GroupHeader>1</GroupHeader>
- <CheatEntries>
- <CheatEntry>
- <ID>24118</ID>
- <Description>"LocalPlayer"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="04F10090"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>LocalPlayer</Address>
- <CheatEntries>
- <CheatEntry>
- <ID>24119</ID>
- <Description>"LocalPlayer"</Description>
- <LastState Value="0000000000000000" RealAddress="04F10090"/>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24120</ID>
- <Description>"[0030] PlayerController"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="04F100C0"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>PlayerController</Address>
- <CheatEntries>
- <CheatEntry>
- <ID>24121</ID>
- <Description>"PlayerController"</Description>
- <LastState Value="0000000000000000" RealAddress="04F100C0"/>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24123</ID>
- <Description>"[0488] Pawn"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000488"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>488</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24124</ID>
- <Description>"Pawn"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24148</ID>
- <Description>"[0091] bCanBeDamaged"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>Byte</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>91</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24149</ID>
- <Description>"[04C8] CharacterMovementComponent"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>4C8</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24150</ID>
- <Description>"CharacterMovementComponent"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24162</ID>
- <Description>"[0274] MaxWalkSpeed"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>274</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24151</ID>
- <Description>"[0004] MaxWalkSpeed_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24165</ID>
- <Description>"[0008] MaxWalkSpeed_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24166</ID>
- <Description>"[0298] MaxFlySpeed"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>298</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24167</ID>
- <Description>"[0004] MaxFlySpeed_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24168</ID>
- <Description>"[0008] MaxFlySpeed_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24164</ID>
- <Description>"[0580] JumpMaxCount"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>580</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24152</ID>
- <Description>"[0584] JumpCurrentCount"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>584</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24354</ID>
- <Description>"[0698] WheeledVehicleMovementComponentNW"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>698</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24355</ID>
- <Description>"WheeledVehicleMovementComponentNW"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24356</ID>
- <Description>"[0230] Mass"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>230</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24353</ID>
- <Description>"[0738] VehicleMaxSpeed"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>738</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24351</ID>
- <Description>"[0784] VehicleSpeed"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>784</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24352</ID>
- <Description>"[079C] VehicleRPM"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>79C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24153</ID>
- <Description>"[0E88] AbilityManagerComponent "</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>E88</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24169</ID>
- <Description>"[0E70] ResourcePoolComponent"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>E70</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24170</ID>
- <Description>"ResourcePoolComponent"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24175</ID>
- <Description>"[[0180]+1*F8+A0] CurrentHealth"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1*F8+A0</Offset>
- <Offset>180</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24177</ID>
- <Description>"[[0180]+1*F8+AC] MaxHealth"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1*F8+AC</Offset>
- <Offset>180</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24174</ID>
- <Description>"[[0180]+1*F8+118] MaxShield"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1*F8+118</Offset>
- <Offset>180</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24173</ID>
- <Description>"[[0180]+1*F8+198] CurrentShield"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1*F8+198</Offset>
- <Offset>180</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24181</ID>
- <Description>"[0E78] OakDamageComponent"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>E78</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24182</ID>
- <Description>"OakDamageComponent"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24183</ID>
- <Description>"[07E8] bPassDamageToParent(1)|bDamageOnlyAppliesToParent(2)|bCanDamageCorpse(4)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>Byte</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>7E8</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24187</ID>
- <Description>"[0820] LastHitBy"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>820</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24186</ID>
- <Description>"[0840] bGodMode(1)|bDemigodMode(2)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>Byte</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>840</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24185</ID>
- <Description>"[0975] bDisableElementalDeaths"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>Byte</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>975</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24184</ID>
- <Description>"[09B0] IgnoreShield"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>Byte</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>9B0</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24188</ID>
- <Description>"[0E98] OakCharacterInventory"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>E98</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24189</ID>
- <Description>"OakCharacterInventory"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24190</ID>
- <Description>"[0228] ??"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>228</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24191</ID>
- <Description>"[[+0000]+0018] Money"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>0+18</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24192</ID>
- <Description>"[[+0040]+0018] Eridium"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>40+18</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24193</ID>
- <Description>"[0230] Size"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>230</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24154</ID>
- <Description>"[0E90] StatusEffectManagerComponent"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>E90</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24179</ID>
- <Description>"[0EA0] OakCharacterBankInventory"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>EA0</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24155</ID>
- <Description>"[10E0] FFYLComponent"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>10E0</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24178</ID>
- <Description>"[12C8] DamageToVehicleFactor"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>12C8</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24194</ID>
- <Description>"[[1518]+0008] CurrentWeapon"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>8</Offset>
- <Offset>1518</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24195</ID>
- <Description>"CurrentWeapon"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24202</ID>
- <Description>"[[0320]+2*8] WeaponRecoilPatternComponent"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>2*8</Offset>
- <Offset>320</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24203</ID>
- <Description>"WeaponRecoilPatternComponent"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24206</ID>
- <Description>"[01A0] RecoilPatternData"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>1A0</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24207</ID>
- <Description>"RecoilPatternData"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24208</ID>
- <Description>"[0030] Samples"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>30</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24209</ID>
- <Description>"Samples"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24211</ID>
- <Description>"[0000] Samples.Samples"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <CheatEntries>
- <CheatEntry>
- <ID>24212</ID>
- <Description>"Samples.Samples"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24213</ID>
- <Description>"[0000] Attr1+0"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>0</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24217</ID>
- <Description>"[0004] Attr1+4"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>4</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24216</ID>
- <Description>"[0008] Attr2+0"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>8</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24215</ID>
- <Description>"[000C] Attr2+4"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24219</ID>
- <Description>"[0010] Attr3+0"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>10</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24220</ID>
- <Description>"[0014] Attr3+4"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>14</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24221</ID>
- <Description>"[0018] Attr4+0"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>18</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24222</ID>
- <Description>"[001C] Attr4+4"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1C</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24214</ID>
- <Description>"[0008] NumSamples"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24204</ID>
- <Description>"[[0320]+3*8] WeaponSwayComponent"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>4*8</Offset>
- <Offset>320</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24205</ID>
- <Description>"WeaponSwayComponent"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24223</ID>
- <Description>"[0188] SwayPatternData"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>188</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24224</ID>
- <Description>"SwayPatternData"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24225</ID>
- <Description>"[0030] Samples"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>30</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24226</ID>
- <Description>"Samples"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24227</ID>
- <Description>"[0000] Samples.Samples"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <CheatEntries>
- <CheatEntry>
- <ID>24228</ID>
- <Description>"Samples.Samples"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24229</ID>
- <Description>"[0000] Attr01+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>0</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24230</ID>
- <Description>"[0004] Attr01+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>4</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24231</ID>
- <Description>"[0008] Attr02+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>8</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24232</ID>
- <Description>"[000C] Attr02+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24233</ID>
- <Description>"[0010] Attr03+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>10</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24234</ID>
- <Description>"[0014] Attr03+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>14</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24235</ID>
- <Description>"[0018] Attr04+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>18</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24236</ID>
- <Description>"[001C] Attr04+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24239</ID>
- <Description>"[0020] Attr05+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>20</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24238</ID>
- <Description>"[0024] Attr05+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>24</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24240</ID>
- <Description>"[0028] Attr06+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>28</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24241</ID>
- <Description>"[002C] Attr06+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>2C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24246</ID>
- <Description>"[0030] Attr07+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>30</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24247</ID>
- <Description>"[0034] Attr07+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>34</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24244</ID>
- <Description>"[0038] Attr08+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>38</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24245</ID>
- <Description>"[003C] Attr08+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>3C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24242</ID>
- <Description>"[0040] Attr09+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>40</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24243</ID>
- <Description>"[0044] Attr09+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>44</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24248</ID>
- <Description>"[0048] Attr10+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>48</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24249</ID>
- <Description>"[004C] Attr10+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>4C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24250</ID>
- <Description>"[0050] Attr11+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>50</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24251</ID>
- <Description>"[0054] Attr11+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>54</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24252</ID>
- <Description>"[0058] Attr12+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>58</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24253</ID>
- <Description>"[005C] Attr12+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>5C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24254</ID>
- <Description>"[0060] Attr13+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>60</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24255</ID>
- <Description>"[0064] Attr13+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>64</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24256</ID>
- <Description>"[0068] Attr14+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>68</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24257</ID>
- <Description>"[006C] Attr14+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>6C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24258</ID>
- <Description>"[0070] Attr15+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>70</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24259</ID>
- <Description>"[0074] Attr15+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>74</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24260</ID>
- <Description>"[0078] Attr16+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>78</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24261</ID>
- <Description>"[007C] Attr16+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>7C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24262</ID>
- <Description>"[0080] Attr17+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>80</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24263</ID>
- <Description>"[0084] Attr17+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>84</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24264</ID>
- <Description>"[0088] Attr18+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>88</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24265</ID>
- <Description>"[008C] Attr18+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>8C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24266</ID>
- <Description>"[0090] Attr19+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>90</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24267</ID>
- <Description>"[0094] Attr19+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>94</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24268</ID>
- <Description>"[0098] Attr20+00"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>98</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24269</ID>
- <Description>"[009C] Attr20+04"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>9C</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24237</ID>
- <Description>"[0008] NumSamples"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24270</ID>
- <Description>"[01A8] Speed"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1A8</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24271</ID>
- <Description>"[01D4] ZoomSmoothingSpeed"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1D4</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24272</ID>
- <Description>"[01D8] ZoomSmoothInTime_OnZoom"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1D8</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24273</ID>
- <Description>"[01DC] ZoomSmoothInTime_OnZoom"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1DC</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24200</ID>
- <Description>"[0470] WeaponFireProjectileComponent"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>470</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24201</ID>
- <Description>"WeaponFireProjectileComponent"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24281</ID>
- <Description>"[0200] WeaponChargeComponent"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>200</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24282</ID>
- <Description>"WeaponChargeComponent"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24284</ID>
- <Description>"[0198] ChargeTime"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>198</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24285</ID>
- <Description>"[0004] ChargeTime_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24286</ID>
- <Description>"[0008] ChargeTime_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24287</ID>
- <Description>"[01A4] DischargeTime"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>1A4</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24288</ID>
- <Description>"[0004] DischargeTime_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24289</ID>
- <Description>"[0008] DischargeTime_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24290</ID>
- <Description>"[01C4] OverchargeHoldTime"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>1C4</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24291</ID>
- <Description>"[0004] OverchargeHoldTime_Current"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24292</ID>
- <Description>"[0008] OverchargeHoldTime_Default"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24274</ID>
- <Description>"[01D0] bChargeBeforeEachUse"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>Byte</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1D0</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24293</ID>
- <Description>"[0218] FireRate"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>218</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24294</ID>
- <Description>"[0004] FireRate_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24295</ID>
- <Description>"[0008] FireRate_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24296</ID>
- <Description>"[0224] AutomaticBurstCount"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>224</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24297</ID>
- <Description>"[0004] AutomaticBurstCount_Current"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24298</ID>
- <Description>"[0008] AutomaticBurstCount_Default"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24299</ID>
- <Description>"[0230] BurstFireDelay"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>230</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24300</ID>
- <Description>"[0004] BurstFireDelay_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24301</ID>
- <Description>"[0008] BurstFireDelay_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24283</ID>
- <Description>"[023C] bAutoBurst"</Description>
- <VariableType>Byte</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>23C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24280</ID>
- <Description>"[025C] MinFireRateScale"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>25C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24302</ID>
- <Description>"[0260] FireRateAccelDuration"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>260</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24303</ID>
- <Description>"[0004] FireRateAccelDuration_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24304</ID>
- <Description>"[0008] FireRateAccelDuration_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24305</ID>
- <Description>"[026C] FireRateDecelDuration"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>26C</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24306</ID>
- <Description>"[0004] FireRateDecelDuration_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24307</ID>
- <Description>"[0008] FireRateDecelDuration_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24279</ID>
- <Description>"[02C8] FireSequenceLength"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>2C8</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24308</ID>
- <Description>"[02E0] ShotAmmoCost"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>2E0</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24309</ID>
- <Description>"[0004] ShotAmmoCost_Current"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24310</ID>
- <Description>"[0008] ShotAmmoCost_Default"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24278</ID>
- <Description>"[02EC] MinShotAmmoCost"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>2EC</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24311</ID>
- <Description>"[02F0] Spread (Accuracy)"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>2F0</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24312</ID>
- <Description>"[0004] AutomaticBurstCount_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24313</ID>
- <Description>"[0008] AutomaticBurstCount_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24314</ID>
- <Description>"[02FC] AccuracyImpulse (Handling)"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>2FC</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24315</ID>
- <Description>"[0004] AccuracyImpulse_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24316</ID>
- <Description>"[0008] AccuracyImpulse_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24317</ID>
- <Description>"[0308] BurstAccuracyImpulseScale (Handling)"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>308</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24318</ID>
- <Description>"[0004] BurstAccuracyImpulseScale_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24319</ID>
- <Description>"[0008] BurstAccuracyImpulseScale_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24320</ID>
- <Description>"[0318] Damage"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>318</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24321</ID>
- <Description>"[0004] Damage_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24322</ID>
- <Description>"[0008] Damage_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24323</ID>
- <Description>"[0368] DamageRadius"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>368</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24324</ID>
- <Description>"[0004] DamageRadius_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24325</ID>
- <Description>"[0008] DamageRadius_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24326</ID>
- <Description>"[03B8] ImpactForce"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>3B8</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24327</ID>
- <Description>"[0004] ImpactForce_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24328</ID>
- <Description>"[0008] ImpactForce_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24277</ID>
- <Description>"[04E8] CurrentBurstShotCount"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>4E8</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24276</ID>
- <Description>"[0520] FireRatePercent"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>520</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24275</ID>
- <Description>"[054C] DamageAmount"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>54C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24343</ID>
- <Description>"[0900] ProjectilesPerShot"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>900</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24344</ID>
- <Description>"[0004] ProjectilesPerShot_Current"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24345</ID>
- <Description>"[0008] ProjectilesPerShot_Default"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24346</ID>
- <Description>"[090C] ProjectileSpeedScale"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>90C</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24347</ID>
- <Description>"[0004] ProjectileSpeedScale_Current"</Description>
- <VariableType>Float</VariableType>
- <Address>+4</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24348</ID>
- <Description>"[0008] ProjectileSpeedScale_Default"</Description>
- <VariableType>Float</VariableType>
- <Address>+8</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24349</ID>
- <Description>"[0948] Range"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>948</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24210</ID>
- <Description>"[0480] WeaponType"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>480</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24197</ID>
- <Description>"[04A0] WeaponUser"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>4A0</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24199</ID>
- <Description>"[0958] OakCharacter (BPWeap_BaseWeapon_C.OakCharacter)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>958</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24198</ID>
- <Description>"[0960] Manufacturer (OakManufacturerData)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>960</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24180</ID>
- <Description>"[1E50] OwnedVehicle"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1E50</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24156</ID>
- <Description>"[2318] bSanctuaryZeroGravity"</Description>
- <VariableType>Byte</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>2318</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24157</ID>
- <Description>"[26C0] GrenadeThrowCooldown"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>26C0</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24158</ID>
- <Description>"[2AC8] PlayerBalanceStateComponent"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>2AC8</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24159</ID>
- <Description>"PlayerBalanceStateComponent"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24160</ID>
- <Description>"[01A4] Level"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1A4</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24161</ID>
- <Description>"[01D8] Experience"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1D8</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24122</ID>
- <Description>"[0510] AcknowledgedPawn"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>510</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24143</ID>
- <Description>"[0528] PlayerCameraManager"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000528"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>528</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24144</ID>
- <Description>"PlayerCameraManager"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24145</ID>
- <Description>"[2BB0] CachedCameraShakeMod"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>2BB0</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24146</ID>
- <Description>"CachedCameraShakeMod"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24147</ID>
- <Description>"[0028] CameraModifier .bExclusive|.bDebug"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>Byte</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>28</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24138</ID>
- <Description>"[05A8] CheatManager"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>5A8</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24333</ID>
- <Description>"[0A91] DifficultySetting"</Description>
- <VariableType>Byte</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>A91</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24361</ID>
- <Description>"[0C60] PlayerGuardianRankComponent"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000C60"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>C60</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24362</ID>
- <Description>"PlayerGuardianRankComponent"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24363</ID>
- <Description>"[0178] GuardianRank"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>178</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24364</ID>
- <Description>"[017C] AvailableTokens"</Description>
- <VariableType>4 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>17C</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24365</ID>
- <Description>"[0180] GuardianExperience"</Description>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>180</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24330</ID>
- <Description>"[0C68] FogOfDiscoveryComponent"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000C68"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>C68</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24331</ID>
- <Description>"FogOfDiscoveryComponent"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24332</ID>
- <Description>"[01A8] PlayerUnfogRadius|VehicleUnfogRadius"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1A8</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24340</ID>
- <Description>"[1638] bInfiniteAmmo"</Description>
- <VariableType>Byte</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1638</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24140</ID>
- <Description>"[1A78] DeveloperPerks"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>1A78</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>23964</ID>
- <Description>"[0058] GameViewportClient"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="04F100A0"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>GameViewportClient</Address>
- <CheatEntries>
- <CheatEntry>
- <ID>24125</ID>
- <Description>"GameViewportClient"</Description>
- <LastState Value="0000000000000000" RealAddress="04F100A0"/>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>GameViewportClient</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24126</ID>
- <Description>"[0050] ViewportConsole"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>50</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>23961</ID>
- <Description>"[0088] World"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000088"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>88</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>24128</ID>
- <Description>"World"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>23938</ID>
- <Description>"[0030] PersistentLevel"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>30</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24129</ID>
- <Description>"[0140] AuthorityGameMode"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>140</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24133</ID>
- <Description>"[0148] GameState"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>+0</Address>
- <Offsets>
- <Offset>148</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>23940</ID>
- <Description>"GameState"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24134</ID>
- <Description>"[06C8] InventoryShopResetPeriod"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>6C8</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24136</ID>
- <Description>"[06DC] ReplicatedSecondsBeforeShopsReset"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>6DC</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24135</ID>
- <Description>"[06E0] LocalSecondsBeforeShopsReset"</Description>
- <VariableType>Float</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>6E0</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24137</ID>
- <Description>"[0758] bInfiniteAmmo"</Description>
- <VariableType>Byte</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>758</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24130</ID>
- <Description>"[0160] Levels"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>160</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24131</ID>
- <Description>"[0170] LevelCollections"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>170</Offset>
- </Offsets>
- </CheatEntry>
- <CheatEntry>
- <ID>24132</ID>
- <Description>"[0190] OwningGameInstance"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>190</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24127</ID>
- <Description>"[0090] GameInstance"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- <Offsets>
- <Offset>90</Offset>
- </Offsets>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24141</ID>
- <Description>"ZoneMapGlobalsData"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address>ZoneMapGlobalsData</Address>
- <CheatEntries>
- <CheatEntry>
- <ID>24142</ID>
- <Description>"ZoneMapGlobalsData"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24336</ID>
- <Description>"[0218] PlayerUnfogRadius"</Description>
- <VariableType>Float</VariableType>
- <Address>+218</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24337</ID>
- <Description>"[021C] VehicleUnfogRadius"</Description>
- <VariableType>Float</VariableType>
- <Address>+21C</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24338</ID>
- <Description>"[0220] DefaultUnfogHeight"</Description>
- <VariableType>Float</VariableType>
- <Address>+220</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>24339</ID>
- <Description>"[0224] DefaultVehicleUnfogHeight"</Description>
- <VariableType>Float</VariableType>
- <Address>+224</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24334</ID>
- <Description>"Mock-Up"</Description>
- <Options moHideChildren="1" moManualExpandCollapse="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <Address/>
- <CheatEntries>
- <CheatEntry>
- <ID>24335</ID>
- <Description>"No description"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>9D9A89</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>+0</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>24078</ID>
- <Description>"[ Not Updated ]"</Description>
- <Options moHideChildren="1"/>
- <LastState Value="" RealAddress="00000000"/>
- <Color>6E6F6F</Color>
- <GroupHeader>1</GroupHeader>
- <CheatEntries>
- <CheatEntry>
- <ID>8</ID>
- <Description>"Unreal Engine 'god' :)"</Description>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript>{$STRICT}
- {$lua}
- if syntaxcheck then return end
- [ENABLE]
- local t = getAddressSafe( "OakPlayerController" )
- t = readQword( t )
- t = readQword( t + 0x488 ) -- OakCharacter
- local u = readBytes( t + 0x91 )
- u = u & 0xBF
- writeBytes( t + 0x91, u )
- [DISABLE]
- local t = getAddressSafe( "OakPlayerController" )
- t = readQword( t )
- t = readQword( t + 0x488 ) -- OakCharacter
- local u = readBytes( t + 0x91 )
- u = u | 0x40
- writeBytes( t + 0x91, u )
- </AssemblerScript>
- </CheatEntry>
- <CheatEntry>
- <ID>10</ID>
- <Description>"Init & Link 'god' UFunction"</Description>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript Async="1">[ENABLE]
- alloc( ZConstructGodThread, 0x1000, Borderlands3.exe )
- registersymbol( ZConstructGodThread )
- CreateThread( ZConstructGodThread )
- label( pReturnFunction )
- label( pszGod )
- label( Z_Construct_UFunction_UCheatManager_God )
- registersymbol( Z_Construct_UFunction_UCheatManager_God )
- label( Z_Construct_UFunction_UCheatManager_God_Statics_FuncParams )
- registersymbol( Z_Construct_UFunction_UCheatManager_God_Statics_FuncParams )
- label( aZ_Construct_UFunction_UCheatManager_God )
- registersymbol( aZ_Construct_UFunction_UCheatManager_God )
- ZConstructGodThread:
- db EB FE
- sub rsp,178
- mov r8d,1
- lea rdx,[aZ_Construct_UFunction_UCheatManager_God]
- mov rcx,[Borderlands3.exe+66026A0]
- call Borderlands3.exe+147F3A0 // UClass::CreateLinkAndAddChildFunctionsToMap
- add rsp,178
- ret
- align 10 CC
- Z_Construct_UFunction_UCheatManager_God:
- sub rsp,28
- mov rax,[pReturnFunction]
- test rax,rax
- jne short @f
- lea rdx,[Z_Construct_UFunction_UCheatManager_God_Statics_FuncParams]
- lea rcx,[pReturnFunction]
- call Borderlands3.exe+14EE340 // UE4CodeGen_Private::ConstructUFunction
- mov rax,[pReturnFunction]
- @@:
- add rsp,28
- ret
- align 10 CC
- pReturnFunction:
- dq 0
- align 10 CC
- pszGod:
- db 'God',0
- align 10 CC
- Z_Construct_UFunction_UCheatManager_God_Statics_FuncParams:
- dq Borderlands3.exe+2661100 // 0x0 - Z_Construct_UClass_UCheatManager
- dq pszGod // 0x8
- dq 0x45 // 0x10
- dq 0 // 0x18
- dq 04020600 // 0x20
- dq 0 // 0x28
- dq 0 // 0x30
- dq 0 // 0x38
- align 10 CC
- aZ_Construct_UFunction_UCheatManager_God:
- dq Z_Construct_UFunction_UCheatManager_God // 0x0
- dq pszGod // 0x8
- align 10 CC
- [DISABLE]
- unregistersymbol( Z_Construct_UFunction_UCheatManager_God )
- unregistersymbol( aZ_Construct_UFunction_UCheatManager_God )
- unregistersymbol( Z_Construct_UFunction_UCheatManager_God_Statics_FuncParams )
- unregistersymbol( ZConstructGodThread )
- dealloc( ZConstructGodThread )
- </AssemblerScript>
- </CheatEntry>
- <CheatEntry>
- <ID>14</ID>
- <Description>"Test_StaticFindUObject"</Description>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript>[ENABLE]
- alloc( UEThread, 0x1000, Borderlands3.exe )
- registersymbol( UEThread )
- CreateThread( UEThread )
- label( UEThreadOff )
- registersymbol( UEThreadOff )
- label( UEThread_loop )
- label( FindUObject_do )
- UEThread:
- sub rsp,28
- UEThread_loop:
- mov rcx,A
- call Sleep
- cmp [UEThreadOff],1
- jne short @f
- add rsp,28
- mov [UEThreadOff],2
- ret
- @@:
- mov rcx,6E // VK_DECIMAL
- call GetAsyncKeyState
- test ax,ax
- je short @f
- call short FindUObject_do
- mov rcx,C8
- call Sleep
- @@:
- jmp short UEThread_loop
- align 10 CC
- FindUObject_do:
- sub rsp,28
- xor r9d,r9d
- lea r8,[szSpawnAwesomeItems]
- mov rax,[OakPlayerController]
- mov rax,[rax+1970]
- mov rdx,[rax+10] // 0x20: BlueprintGeneratedClass BP_DevPerks.BP_DevPerks_C
- mov rcx,[Borderlands3.exe+64D2020] // 0x10: Class CoreUObject.Function
- call Borderlands3.exe+1500B80 // StaticFindObject
- add rsp,28
- ret
- align 10 CC
- szSpawnAwesomeItems:
- db 'S',0,'p',0,'a',0,'w',0,'n',0,'A',0,'w',0,'e',0,'s',0,'o',0,'m',0,'e',0,'I',0,'t',0,'e',0,'m',0,'s',0,0,0
- align 10 CC
- UEThreadOff:
- dd 0
- [DISABLE]
- {$lua}
- if( syntaxcheck == false ) then --actual execution
- local starttime = getTickCount()
- if readInteger( "UEThreadOff" ) == 0 then --could be 2 already
- writeInteger( "UEThreadOff", 1 ) --tell the thread to kill itself
- end
- while( getTickCount() < starttime + 1000 ) and ( readInteger( "UEThreadOff" ) ~= 2 ) do --wait till it has finished
- sleep( 20 )
- end
- if( getTickCount() > starttime + 1000 ) then --could happen when the window is shown
- showMessage( 'Disabling the thread failed!' )
- error( 'Thread disabling failed!' )
- end
- sleep( 1 )
- end
- {$asm}
- unregistersymbol( UEThreadOff )
- unregistersymbol( UEThread )
- dealloc( UEThread )
- </AssemblerScript>
- </CheatEntry>
- <CheatEntry>
- <ID>15</ID>
- <Description>"UFunction SpawnAwesomeItems"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>282DDD80</Address>
- <CheatEntries>
- <CheatEntry>
- <ID>16</ID>
- <Description>"UFlags"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>4 Bytes</VariableType>
- <Address>+88</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>16229</ID>
- <Description>"UFunction_ByteCode"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>Array of byte</VariableType>
- <ByteLength>172</ByteLength>
- <Address>+48</Address>
- <Offsets>
- <Offset>0</Offset>
- </Offsets>
- <CheatEntries>
- <CheatEntry>
- <ID>16230</ID>
- <Description>"ItemPoolData_1_1 (ItemPoolData ItemPool_Artifacts_05_Legendary.ItemPool_Artifacts_05_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+B</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>16231</ID>
- <Description>"ItemPoolData_1_2 (ItemPoolData ItemPool_ClassMods_05_Legendary.ItemPool_ClassMods_05_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+14</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>16232</ID>
- <Description>"ItemPoolData_1_3 (ItemPoolData ItemPool_GrenadeMods_05_Legendary.ItemPool_GrenadeMods_05_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+1D</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>16233</ID>
- <Description>"ItemPoolData_1_4 (ItemPoolData ItemPool_Shields_05_Legendary.ItemPool_Shields_05_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+26</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>16234</ID>
- <Description>"ItemPoolData_1_5 (ItemPoolData ItemPool_Guns_Legendary.ItemPool_Guns_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+2F</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>16235</ID>
- <Description>"ItemPoolData_1_6 (ItemPoolData ItemPool_Guns_Legendary.ItemPool_Guns_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+38</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>16236</ID>
- <Description>"ItemPoolData_1_7 (ItemPoolData ItemPool_Guns_Legendary.ItemPool_Guns_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+41</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>16237</ID>
- <Description>"ItemPoolData_1_8 (ItemPoolData ItemPool_Guns_Legendary.ItemPool_Guns_Legendary)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+4A</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>16238</ID>
- <Description>"ItemPoolData_2_1 (ItemPoolData ItemPool_Eridium_Stack.ItemPool_Eridium_Stack)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+76</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>16239</ID>
- <Description>"ItemPoolData_2_2 (ItemPoolData ItemPool_Eridium.ItemPool_Eridium)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+7F</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>16240</ID>
- <Description>"ItemPoolData_2_3 (ItemPoolData ItemPool_Money_Rich.ItemPool_Money_Rich)"</Description>
- <ShowAsHex>1</ShowAsHex>
- <VariableType>8 Bytes</VariableType>
- <Address>+88</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>16225</ID>
- <Description>"Item Spawner"</Description>
- <Options moHideChildren="1"/>
- <LastState/>
- <Color>FF0000</Color>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript Async="1">[ENABLE]
- alloc( UEThread, 0x1000, Borderlands3.exe )
- registersymbol( UEThread )
- CreateThread( UEThread )
- label( UEThreadOff )
- registersymbol( UEThreadOff )
- label( UEThread_loop )
- label( SpawnItem_do )
- label( iAmount )
- registersymbol( iAmount )
- label( ppItemPoolArr )
- registersymbol( ppItemPoolArr )
- label( pItemPool )
- registersymbol( pItemPool )
- UEThread:
- sub rsp,28
- UEThread_loop:
- mov rcx,A
- call Sleep
- cmp [UEThreadOff],1
- jne short @f
- add rsp,28
- mov [UEThreadOff],2
- ret
- @@:
- mov rcx,6E // VK_DECIMAL
- call GetAsyncKeyState
- test ax,ax
- je short @f
- call short SpawnItem_do
- mov rcx,C8
- call Sleep
- @@:
- jmp short UEThread_loop
- align 10 CC
- SpawnItem_do:
- sub rsp,38
- mov r8d,[iAmount] // item amount
- lea rdx,[ppItemPoolArr] // pointer to pointer to ItemPoolArr
- mov rcx,[OakDeveloperPerks] // UObject
- call Borderlands3.exe+BAF140 // SpawnItems_Internal
- add rsp,38
- ret
- align 10 CC
- iAmount:
- dd 1
- align 10 CC
- ppItemPoolArr:
- dq pItemPool
- dd 1 // dwArrSize (expand this to > 1 if you add more items in pItemPool
- align 10 CC
- pItemPool:
- dq 0
- dq 0
- UEThreadOff:
- dd 0
- [DISABLE]
- {$lua}
- if( syntaxcheck == false ) then --actual execution
- local starttime = getTickCount()
- if readInteger( "UEThreadOff" ) == 0 then --could be 2 already
- writeInteger( "UEThreadOff", 1 ) --tell the thread to kill itself
- end
- while( getTickCount() < starttime + 1000 ) and ( readInteger( "UEThreadOff" ) ~= 2 ) do --wait till it has finished
- sleep( 20 )
- end
- if( getTickCount() > starttime + 1000 ) then --could happen when the window is shown
- showMessage( 'Disabling the thread failed!' )
- error( 'Thread disabling failed!' )
- end
- sleep( 1 )
- end
- {$asm}
- unregistersymbol( pItemPool )
- unregistersymbol( ppItemPoolArr )
- unregistersymbol( iAmount )
- unregistersymbol( UEThreadOff )
- unregistersymbol( UEThread )
- dealloc( UEThread )
- </AssemblerScript>
- <CheatEntries>
- <CheatEntry>
- <ID>16226</ID>
- <Description>"iAmount"</Description>
- <Color>FF8080</Color>
- <VariableType>4 Bytes</VariableType>
- <Address>iAmount</Address>
- </CheatEntry>
- <CheatEntry>
- <ID>16227</ID>
- <Description>"pItemPool"</Description>
- <ShowAsHex>1</ShowAsHex>
- <Color>FF8080</Color>
- <VariableType>8 Bytes</VariableType>
- <Address>pItemPool</Address>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- <CheatEntry>
- <ID>16241</ID>
- <Description>"Assemble execOpenDebugMenu"</Description>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript Async="1">[ENABLE]
- alloc( execOpenDebugMenu, 0x1000, Borderlands3.exe )
- registersymbol( execOpenDebugMenu )
- label( szCheatMenuData )
- label( szGbxCheatSettings )
- label( @L00000001 )
- label( @L00000002 )
- label( @L00000003 )
- label( @L00000004 )
- label( @L00000005 )
- label( @L00000006 )
- execOpenDebugMenu:
- mov [rsp+10],rbp
- mov [rsp+18],rsi
- push rdi
- sub rsp,50
- mov rax,[rcx]
- mov rdi,rcx
- call qword ptr [rax+F88] // this changes
- xor ebp,ebp
- mov rsi,rax
- mov [rsp+40],rbp
- mov [rsp+48],rbp
- test rax,rax
- je @L00000006
- mov rcx,[Borderlands3.exe+687E470] // GConfig
- test rcx,rcx
- je @L00000006
- lea rax,[Borderlands3.exe+688A670] // path to Engine.ini
- lea r9,[rsp+40]
- mov [rsp+20],rax
- lea r8,[szCheatMenuData] // L"CheatMenuData"
- lea rdx,[szGbxCheatSettings] // L"GbxCheatSettings"
- call Borderlands3.exe+158BCB0 // FConfigCacheIni::GetString
- test al,al
- je @L00000005
- cmp [rsp+48],ebp
- mov [rsp+60],rbx
- lea rbx,[Borderlands3.exe+400DB18] // 0
- cmovne rbx,[rsp+40]
- call Borderlands3.exe+1BF5DF50 // GbxUmgMenuData::GetPrivateStaticClass
- mov byte ptr [rsp+30],1
- xor r9d,r9d
- mov [rsp+28],rbp
- mov r8,rbx
- xor edx,edx
- mov [rsp+20],ebp
- mov rcx,rax
- call Borderlands3.exe+16E3260 // StaticLoadObject
- mov rbx,rax
- test rax,rax
- je short @L00000004
- cmp [rax+48],rbp
- je short @L00000002
- call Borderlands3.exe+1BF5DCB0 // GbxUmgMenu::GetPrivateStaticClass
- mov rdx,[rbx+48]
- mov rcx,rdx
- test rdx,rdx
- je short @L00000002
- @L00000001:
- cmp rcx,rax
- je short @L00000003
- mov rcx,[rcx+30]
- test rcx,rcx
- jne short @L00000001
- @L00000002:
- mov rdx,rbp
- @L00000003:
- mov rcx,[rdi+A78] // this changes
- call Borderlands3.exe+2DF2380
- test al,al
- jne short @L00000004
- mov rdx,rbx
- mov rcx,rsi
- call Borderlands3.exe+2E0DBD0
- @L00000004:
- mov rbx,[rsp+60]
- @L00000005:
- mov rcx,[rsp+40]
- test rcx,rcx
- je short @L00000006
- call Borderlands3.exe+1532090 // FMemory::Free
- @L00000006:
- mov rbp,[rsp+68]
- mov rsi,[rsp+70]
- add rsp,50
- pop rdi
- ret
- align 10 CC
- szCheatMenuData:
- db 'C',0,'h',0,'e',0,'a',0,'t',0,'M',0,'e',0,'n',0,'u',0,'D',0,'a',0,'t',0,'a',0,0,0
- align 10 CC
- szGbxCheatSettings:
- db 'G',0,'b',0,'x',0,'C',0,'h',0,'e',0,'a',0,'t',0,'S',0,'e',0,'t',0,'t',0,'i',0,'n',0,'g',0,'s',0,0,0
- [DISABLE]
- dealloc( execOpenDebugMenu )
- unregistersymbol( execOpenDebugMenu )
- </AssemblerScript>
- </CheatEntry>
- <CheatEntry>
- <ID>6</ID>
- <Description>"Restore 'god', 'playersonly', 'fly', 'ghost', 'walk'"</Description>
- <Options moHideChildren="1"/>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript Async="1">{$STRICT}
- {$lua}
- if syntaxcheck then return end
- [ENABLE]
- local gameProcess = "Borderlands3.exe"
- local gameModule = getAddress( gameProcess )
- autoAssemble([[
- alloc( ReCode, 0x1000, Borderlands3.exe )
- registersymbol( ReCode )
- label( UCheatManager_PlayersOnly )
- registersymbol( UCheatManager_PlayersOnly )
- label( UCharacter_ClientCheatWalk_Implementation )
- registersymbol( UCharacter_ClientCheatWalk_Implementation )
- label( UCharacter_ClientCheatFly_Implementation )
- registersymbol( UCharacter_ClientCheatFly_Implementation )
- label( UCharacter_ClientCheatGhost_Implementation )
- registersymbol( UCharacter_ClientCheatGhost_Implementation )
- label( Init )
- registersymbol( Init )
- label( Init_exit )
- label( ConstructUFunctions )
- registersymbol( ConstructUFunctions )
- label( Z_Construct_UClass_UCheatManager_Statics_FuncInfo )
- registersymbol( Z_Construct_UClass_UCheatManager_Statics_FuncInfo )
- label( Z_Construct_UFunction_UCheatManager_God )
- registersymbol( Z_Construct_UFunction_UCheatManager_God )
- label( Z_Construct_UFunction_UCheatManager_Ghost )
- registersymbol( Z_Construct_UFunction_UCheatManager_Ghost )
- label( Z_Construct_UFunction_UCheatManager_God_Statics_FuncParams )
- registersymbol( Z_Construct_UFunction_UCheatManager_God_Statics_FuncParams )
- label( Z_Construct_UFunction_UCheatManager_Ghost_Statics_FuncParams )
- registersymbol( Z_Construct_UFunction_UCheatManager_Ghost_Statics_FuncParams )
- label( UFunction_God )
- registersymbol( UFunction_God )
- label( UFunction_Ghost )
- registersymbol( UFunction_Ghost )
- label( pszGod )
- label( pszGhost )
- label( pszSpawnAwesomeItems )
- CreateThread( Init )
- ReCode:
- UCheatManager_PlayersOnly:
- push rdi
- sub rsp,20
- mov rax,[rcx]
- mov rdi,rcx
- call qword ptr [rax+148] // UCheatManager::GetWorld
- test byte ptr [rax+830],0x80 // bPlayersOnly
- jne short @f
- mov rax,[rdi]
- mov rcx,rdi
- call qword ptr [rax+148] // UCheatManager::GetWorld
- test [rax+830],0x100 // bPlayersOnlyPending
- jne short @f
- mov rax,[rdi]
- mov rcx,rdi
- mov [rsp+30],rbx
- call qword ptr [rax+148] // UCheatManager::GetWorld
- mov rdx,[rdi]
- mov rcx,rdi
- mov rbx,rax
- call qword ptr [rdx+148] // UCheatManager::GetWorld
- mov ecx,[rbx+830] // bPlayersOnlyPending
- mov rbx,[rsp+30]
- not ecx // = !bPlayersOnlyPending
- xor ecx,[rax+830]
- and ecx,0x100
- xor [rax+830],ecx
- add rsp,20
- pop rdi
- ret
- @@:
- mov rax,[rdi]
- mov rcx,rdi
- call qword ptr [rax+148] // UCheatManager::GetWorld
- mov rcx,rdi
- and [rax+830],0xFFFFFF7F // bPlayersOnly = false
- mov rax,[rdi]
- call qword ptr [rax+148] // UCheatManager::GetWorld
- and [rax+830],0xFFFFFEFF // bPlayersOnlyPending = false
- add rsp,20
- pop rdi
- ret
- align 10 CC
- UCharacter_ClientCheatFly_Implementation:
- push rbx
- sub rsp,20
- mov dl,1
- mov rbx,rcx
- call Borderlands3.exe+1F7F1C0 // AActor::SetActorEnableCollision
- mov rax,[rbx+4C8]
- test rax,rax
- je short @f
- or [rax+4B4],400
- xor r8d,r8d
- mov rcx,[rbx+4C8]
- lea edx,[r8+5]
- mov rax,[rcx]
- add rsp,20
- pop rbx
- jmp qword ptr [rax+5A0] // UCharacterMovementComponent::SetMovementMode
- @@:
- add rsp,20
- pop rbx
- ret
- align 10 CC
- UCharacter_ClientCheatGhost_Implementation:
- push rbx
- sub rsp,20
- xor edx,edx
- mov rbx,rcx
- call Borderlands3.exe+1F7F1C0 // AActor::SetActorEnableCollision
- mov rax,[rbx+4C8]
- test rax,rax
- je short @f
- or [rax+4B4],400
- xor r8d,r8d
- mov rcx,[rbx+4C8]
- lea edx,[r8+5]
- mov rax,[rcx]
- add rsp,20
- pop rbx
- jmp qword ptr [rax+5A0] // UCharacterMovementComponent::SetMovementMode
- @@:
- add rsp,20
- pop rbx
- ret
- align 10 CC
- UCharacter_ClientCheatWalk_Implementation:
- push rbx
- sub rsp,20
- mov dl,1
- mov rbx,rcx
- call Borderlands3.exe+1F7F1C0 // AActor::SetActorEnableCollision
- mov rax,[rbx+4C8]
- test rax,rax
- je short @f
- and [rax+4B4],BFF
- xor r8d,r8d
- mov rcx,[rbx+4C8]
- lea edx,[r8+3]
- mov rax,[rcx]
- add rsp,20
- pop rbx
- jmp qword ptr [rax+5A0] // UCharacterMovementComponent::SetMovementMode
- @@:
- add rsp,20
- pop rbx
- ret
- align 10 CC
- Init:
- sub rsp,28
- xor r9d,r9d
- lea r8,[pszSpawnAwesomeItems]
- mov rax,[OakPlayerController]
- mov rax,[rax+1970]
- test rax,rax // if this is NULL by the time the user enables this script, abort
- je short Init_exit
- mov rdx,[rax+10] // 0x20: BlueprintGeneratedClass BP_DevPerks.BP_DevPerks_C
- mov rcx,[Borderlands3.exe+64D6EA0] // 0x10: Class CoreUObject.Function
- call Borderlands3.exe+14F9D80 // StaticFindObject
- test rax,rax
- je short @f
- mov dword ptr [rax+88],4020600 // patch UFunction flags
- @@:
- call ConstructUFunctions
- Init_exit:
- add rsp,28
- ret
- align 10 CC
- ConstructUFunctions:
- sub rsp,178
- mov r8d,2 // uint32 NumFunctions
- lea rdx,[Z_Construct_UClass_UCheatManager_Statics_FuncInfo] // FClassFunctionLinkInfo* Functions
- mov rcx,[Borderlands3.exe+6607640] // Class Engine.CheatManager
- call Borderlands3.exe+14785A0 // UClass::CreateLinkAndAddChildFunctionsToMap
- add rsp,178
- ret
- align 10 CC
- Z_Construct_UFunction_UCheatManager_God:
- sub rsp,28
- mov rax,[UFunction_God]
- test rax,rax
- jne short @f
- lea rdx,[Z_Construct_UFunction_UCheatManager_God_Statics_FuncParams]
- lea rcx,[UFunction_God]
- call Borderlands3.exe+14E7540 // UE4CodeGen_Private::ConstructUFunction
- mov rax,[UFunction_God]
- @@:
- add rsp,28
- ret
- align 10 CC
- Z_Construct_UFunction_UCheatManager_Ghost:
- sub rsp,28
- mov rax,[UFunction_Ghost]
- test rax,rax
- jne short @f
- lea rdx,[Z_Construct_UFunction_UCheatManager_Ghost_Statics_FuncParams]
- lea rcx,[UFunction_Ghost]
- call Borderlands3.exe+14E7540 // UE4CodeGen_Private::ConstructUFunction
- mov rax,[UFunction_Ghost]
- @@:
- add rsp,28
- ret
- align 10 CC
- UFunction_God:
- dq 0
- align 10 CC
- UFunction_Ghost:
- dq 0
- align 10 CC
- pszGod:
- db 'God',0
- align 10 CC
- pszGhost:
- db 'Ghost',0
- align 10 CC
- pszSpawnAwesomeItems:
- db 'S',0,'p',0,'a',0,'w',0,'n',0,'A',0,'w',0,'e',0,'s',0,'o',0,'m',0,'e',0,'I',0,'t',0,'e',0,'m',0,'s',0,0,0
- align 10 CC
- Z_Construct_UFunction_UCheatManager_God_Statics_FuncParams:
- dq Borderlands3.exe+265A7C0 // 0x00 -> Z_Construct_UClass_UCheatManager
- dq pszGod // 0x08
- dq 0x45 // 0x10
- dq 0 // 0x18
- dq 04020600 // 0x20
- dq 0 // 0x28
- dq 0 // 0x30
- dq 0 // 0x38
- dq 0
- align 10 CC
- Z_Construct_UFunction_UCheatManager_Ghost_Statics_FuncParams:
- dq Borderlands3.exe+265A7C0 // 0x00 -> Z_Construct_UClass_UCheatManager
- dq pszGhost // 0x08
- dq 0x45 // 0x10
- dq 0 // 0x18
- dq 04020600 // 0x20
- dq 0 // 0x28
- dq 0 // 0x30
- dq 0 // 0x38
- dq 0
- align 10 CC
- Z_Construct_UClass_UCheatManager_Statics_FuncInfo:
- dq Z_Construct_UFunction_UCheatManager_God // 0x00
- dq pszGod // 0x08
- dq Z_Construct_UFunction_UCheatManager_Ghost // 0x10
- dq pszGhost // 0x18
- dq 0
- ]])
- -- might need some Sleep
- Sleep( 2000 )
- -- restore the execs in God and Ghost UFunctions
- local UFunction_God = readQword( getAddressSafe( "UFunction_God" ) )
- local UFunction_Ghost = readQword( getAddressSafe( "UFunction_Ghost" ) )
- -- UCheatManager::execGod
- local UCheatManager_execGod = gameModule + 0x2689790
- -- UCheatManager::execGhost
- local UCheatManager_execGhost = gameModule + 0x26898D0
- writeQword( UFunction_God + 0xB0, UCheatManager_execGod )
- writeQword( UFunction_Ghost + 0xB0, UCheatManager_execGhost )
- -- patch the UCheatManager functions back in
- -- OakPlayerController
- local OakPlayerController = readQword( getAddressSafe( "OakPlayerController" ) )
- -- OakCheatManager
- local OakCheatManager = readQword( OakPlayerController + 0x5A8 )
- -- member-functions pointer
- local mf_OakCheatManager = readQword( OakCheatManager )
- -- UCheatManager::Fly
- local UCheatManager_Fly = gameModule + 0x20525D0
- -- UCheatManager::Walk
- local UCheatManager_Walk = gameModule + 0x2065930
- -- UCheatManager::Ghost
- local UCheatManager_Ghost = gameModule + 0x2055920
- -- UCheatManager::God
- local UCheatManager_God = gameModule + 0x2055A30
- -- UCheatManager::PlayersOnly
- local UCheatManager_PlayersOnly = getAddressSafe( "UCheatManager_PlayersOnly" )
- fullAccess( mf_OakCheatManager + 0x2A0, 8 )
- writeQword( mf_OakCheatManager + 0x2A0, UCheatManager_Fly )
- fullAccess( mf_OakCheatManager + 0x2A8, 8 )
- writeQword( mf_OakCheatManager + 0x2A8, UCheatManager_Walk )
- fullAccess( mf_OakCheatManager + 0x2B0, 8 )
- writeQword( mf_OakCheatManager + 0x2B0, UCheatManager_Ghost )
- fullAccess( mf_OakCheatManager + 0x2B8, 8 )
- writeQword( mf_OakCheatManager + 0x2B8, UCheatManager_God )
- fullAccess( mf_OakCheatManager + 0x2F8, 8 )
- writeQword( mf_OakCheatManager + 0x2F8, UCheatManager_PlayersOnly )
- -- patch the UOakChararacter ClientCheat functions back in
- -- OakCharacter
- local OakCharacter = readQword( OakPlayerController + 0x488 )
- -- member-functions pointer
- local mf_OakCharacter = readQword( OakCharacter )
- -- ACharacter::ClientCheatWalk_Implementation
- local UCharacter_ClientCheatWalk_Implementation = getAddressSafe( "UCharacter_ClientCheatWalk_Implementation" )
- -- ACharacter::ClientCheatFly_Implementation
- local UCharacter_ClientCheatFly_Implementation = getAddressSafe( "UCharacter_ClientCheatFly_Implementation" )
- -- ACharacter::ClientCheatGhost_Implementation
- local UCharacter_ClientCheatGhost_Implementation = getAddressSafe( "UCharacter_ClientCheatGhost_Implementation" )
- fullAccess( mf_OakCharacter + 0x928, 8 )
- writeQword( mf_OakCharacter + 0x928, UCharacter_ClientCheatWalk_Implementation )
- fullAccess( mf_OakCharacter + 0x930, 8 )
- writeQword( mf_OakCharacter + 0x930, UCharacter_ClientCheatFly_Implementation )
- fullAccess( mf_OakCharacter + 0x938, 8 )
- writeQword( mf_OakCharacter + 0x938, UCharacter_ClientCheatGhost_Implementation )
- [DISABLE]
- {$asm}
- unregistersymbol( UFunction_Ghost )
- unregistersymbol( UFunction_God )
- unregistersymbol( Z_Construct_UFunction_UCheatManager_Ghost_Statics_FuncParams )
- unregistersymbol( Z_Construct_UFunction_UCheatManager_God_Statics_FuncParams )
- unregistersymbol( Z_Construct_UFunction_UCheatManager_Ghost )
- unregistersymbol( Z_Construct_UFunction_UCheatManager_God )
- unregistersymbol( Z_Construct_UClass_UCheatManager_Statics_FuncInfo )
- unregistersymbol( ConstructUFunctions )
- unregistersymbol( UCharacter_ClientCheatGhost_Implementation )
- unregistersymbol( UCharacter_ClientCheatFly_Implementation )
- unregistersymbol( UCharacter_ClientCheatWalk_Implementation )
- unregistersymbol( UCheatManager_PlayersOnly )
- dealloc( ReCode )
- unregistersymbol( ReCode )
- </AssemblerScript>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatEntry>
- </CheatEntries>
- </CheatTable>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement