*.inc files to define primitive UE structs and some Fortnite proprietary stuff

This commit is contained in:
ApfelTeeSaft
2026-05-05 07:55:12 +02:00
parent afaf7e6b38
commit 32e9b8ed8a
7 changed files with 1120 additions and 0 deletions
+96
View File
@@ -0,0 +1,96 @@
@echo off
setlocal EnableDelayedExpansion
set CONFIG=%1
if "%CONFIG%"=="" set CONFIG=Release
set OUTDIR=..\bin\%CONFIG%
set OBJDIR=..\obj\%CONFIG%
if not exist "%OUTDIR%" mkdir "%OUTDIR%"
if not exist "%OBJDIR%" mkdir "%OBJDIR%"
set ML_FLAGS=/nologo /W3 /WX /c /Cx /Zi /Fo"%OBJDIR%\\"
if /I "%CONFIG%"=="Debug" (
set ML_FLAGS=%ML_FLAGS% /DDEBUG
) else (
set ML_FLAGS=%ML_FLAGS% /DNDEBUG
)
set LINK_FLAGS=/nologo /DLL /SUBSYSTEM:WINDOWS /MACHINE:X64 /DEBUG
set LINK_FLAGS=%LINK_FLAGS% /DEF:raider.def
set LINK_FLAGS=%LINK_FLAGS% /OUT:"%OUTDIR%\raider.dll"
set LINK_FLAGS=%LINK_FLAGS% /PDB:"%OUTDIR%\raider.pdb"
set LINK_FLAGS=%LINK_FLAGS% /IMPLIB:"%OUTDIR%\raider.lib"
set LIBS=kernel32.lib user32.lib detours.lib
set ASM_FILES=^
raider.asm ^
sdk_globals.asm ^
patterns.asm ^
native.asm ^
util.asm ^
logger.asm ^
hooks.asm ^
ufunctionhooks.asm ^
gui.asm ^
zerogui.asm ^
zeroinput.asm ^
logic\game.asm ^
logic\inventory.asm ^
logic\abilities.asm ^
logic\spawners.asm ^
logic\teams.asm ^
gamemodes\gamemode_base.asm ^
gamemodes\gamemode_solos.asm ^
gamemodes\gamemode_duos.asm ^
gamemodes\gamemode_50v50.asm ^
gamemodes\gamemode_playground.asm ^
gamemodes\gamemode_lategame.asm ^
sdk\sdk_structs.asm ^
sdk\sdk_classes.asm ^
sdk\sdk_fort.asm
set OBJ_LIST=
set ERRORS=0
for %%F in (%ASM_FILES%) do (
set SRC=%%F
set FNAME=%%~nF
set FDIR=%%~dpF
set OBJNAME=!FDIR:logic\=logic_!
set OBJNAME=!OBJNAME:gamemodes\=gm_!
set OBJNAME=!OBJNAME:sdk\=sdk_!
set OBJNAME=!OBJNAME:\=_!
set OBJ=%OBJDIR%\!OBJNAME!!FNAME!.obj
echo [ML64] %%F
ml64.exe %ML_FLAGS% /Fo"!OBJ!" "%%F"
if errorlevel 1 (
echo ERROR: failed to assemble %%F
set /A ERRORS=!ERRORS!+1
) else (
set OBJ_LIST=!OBJ_LIST! "!OBJ!"
)
)
if !ERRORS! GTR 0 (
echo.
echo BUILD FAILED: !ERRORS! file(s) failed to assemble.
exit /b 1
)
echo.
echo [LINK] raider.dll
link.exe %LINK_FLAGS% %OBJ_LIST% %LIBS%
if errorlevel 1 (
echo ERROR: link failed.
exit /b 1
)
echo.
echo BUILD SUCCEEDED: %OUTDIR%\raider.dll
exit /b 0
+122
View File
@@ -0,0 +1,122 @@
; EFortCustomPartType
EFortCustomPartType_Head EQU 0
EFortCustomPartType_Body EQU 1
EFortCustomPartType_Hat EQU 2
EFortCustomPartType_Backpack EQU 3
EFortCustomPartType_Charm EQU 4
EFortCustomPartType_Face EQU 5
EFortCustomPartType_NumTypes EQU 6
; EFortTeam
EFortTeam_HumanCampaign EQU 0
EFortTeam_Monster EQU 1
EFortTeam_HumanPvP_Team1 EQU 2
EFortTeam_HumanPvP_Team2 EQU 3
EFortTeam_Spectator EQU 103
EFortTeam_MAX EQU 104
; EAthenaGamePhase
EAthenaGamePhase_None EQU 0
EAthenaGamePhase_Setup EQU 1
EAthenaGamePhase_Warmup EQU 2
EAthenaGamePhase_Aircraft EQU 3
EAthenaGamePhase_SafeZones EQU 4
EAthenaGamePhase_EndGame EQU 5
EAthenaGamePhase_Count EQU 6
; EClassRepNodeMapping
EClassRepNodeMapping_NotRouted EQU 0
EClassRepNodeMapping_RelevantAllConnections EQU 1
EClassRepNodeMapping_Spatialize_Static EQU 2
EClassRepNodeMapping_Spatialize_Dynamic EQU 3
EClassRepNodeMapping_Spatialize_Dormancy EQU 4
; ESpawnActorCollisionHandlingMethod
ESpawnCollision_Undefined EQU 0
ESpawnCollision_AlwaysSpawn EQU 1
ESpawnCollision_AdjustIfPossibleButAlwaysSpawn EQU 2
ESpawnCollision_AdjustIfPossibleButDontSpawnIfColliding EQU 3
ESpawnCollision_DontSpawnIfColliding EQU 4
; EDynamicBuildingPlacementType
EDynBuildPlace_CountsTowardsBounds EQU 0
EDynBuildPlace_DestroyIfColliding EQU 1
EDynBuildPlace_DestroyAnythingThatCollides EQU 2
; EFortBuildingType
EFortBuildingType_Wall EQU 0
EFortBuildingType_Floor EQU 1
EFortBuildingType_Corner EQU 2
EFortBuildingType_Deco EQU 3
EFortBuildingType_Prop EQU 4
EFortBuildingType_Stairs EQU 5
EFortBuildingType_Roof EQU 6
EFortBuildingType_Pillar EQU 7
EFortBuildingType_SpawnedItem EQU 8
EFortBuildingType_Container EQU 9
EFortBuildingType_Trap EQU 10
EFortBuildingType_None EQU 12
; ETravelType
ETravelType_Absolute EQU 0
ETravelType_Partial EQU 1
ETravelType_Relative EQU 2
; EMontagePlayReturnType
EMontagePlayReturnType_MontageLength EQU 0
EMontagePlayReturnType_Duration EQU 1
; EMovementMode
EMovementMode_None EQU 0
EMovementMode_Walking EQU 1
EMovementMode_NavWalking EQU 2
EMovementMode_Falling EQU 3
EMovementMode_Swimming EQU 4
EMovementMode_Flying EQU 5
EMovementMode_Custom EQU 6
EMovementMode_MAX EQU 7
MOVE_CUSTOM_SKYDIVE EQU 4
; ENetRole
ENetRole_None EQU 0
ENetRole_SimulatedProxy EQU 1
ENetRole_AutonomousProxy EQU 2
ENetRole_Authority EQU 3
; ENetMode
ENetMode_Standalone EQU 0
ENetMode_DedicatedServer EQU 1
ENetMode_ListenServer EQU 2
ENetMode_Client EQU 3
; DLL reason codes
DLL_PROCESS_DETACH EQU 0
DLL_PROCESS_ATTACH EQU 1
DLL_THREAD_ATTACH EQU 2
DLL_THREAD_DETACH EQU 3
; Vtable slot indices
VTABLE_SLOT_ProcessEvent EQU 40h ; = 64 decimal
VTABLE_SLOT_ServerReplicateActors EQU 53h ; = 83 decimal on UReplicationDriver
; Network message type codes (NMT_ values)
NMT_Netspeed EQU 4
NMT_Login EQU 5
NMT_PCSwap EQU 15
; EFortQuickBars
EFortQuickBars_Primary EQU 0
EFortQuickBars_Secondary EQU 1
EFortQuickBars_Count EQU 2
; Misc numeric constants from source
MAXPLAYERS EQU 100
LISTEN_BEACON_PORT EQU 7776
LISTEN_GAME_PORT EQU 7777
REPAIR_AMOUNT EQU 50
BACKPACK_SIZE EQU 100
DEFAULT_NETSPEED EQU 30000
MAX_HEALTH EQU 100
MAX_SHIELD EQU 100
RESPAWN_EXTRA_Z EQU 3000
+269
View File
@@ -0,0 +1,269 @@
; sdk_globals.asm Global UE4 runtime pointers and GObjects
EXTERNDEF Imagebase :QWORD ; base address of FortniteClient-Win64-Shipping.exe
EXTERNDEF ProcessEvent :QWORD ; void (*)(UObject*, UFunction*, void*)
EXTERNDEF FMemory_Malloc :QWORD ; void* (*)(int32 size, int32 alignment)
EXTERNDEF FMemory_Realloc :QWORD ; void* (*)(void* original, int64 count, uint32 alignment)
EXTERNDEF FMemory_Free :QWORD ; void (*)(void* original)
EXTERNDEF FNameToString :QWORD ; void (*)(FName* name, FString& out)
EXTERNDEF GObjects :QWORD ; TUObjectArray* (the global UObject array)
; sdk_globals.asm Global mutable state
EXTERNDEF bTraveled :BYTE ; bool has the server traveled yet?
EXTERNDEF bPlayButton :BYTE ; bool play button clicked?
EXTERNDEF bListening :BYTE ; bool server is listening?
EXTERNDEF bStartedBus :BYTE ; bool battle bus launched?
EXTERNDEF bSpawnedFloorLoot :BYTE ; bool floor loot spawned?
EXTERNDEF HostBeacon :QWORD ; AFortOnlineBeaconHost*
EXTERNDEF ExistingBuildings :QWORD ; pointer to TArray<ABuildingActor*> head (Data ptr)
EXTERNDEF ExistingBuildingsNum :DWORD ; current Num of ExistingBuildings array
EXTERNDEF ExistingBuildingsMax :DWORD ; current Max of ExistingBuildings array
; native.asm Native:: function-pointer table
; Native::Actor
EXTERNDEF Native_Actor_GetNetMode :QWORD
; Native::PlayerController
EXTERNDEF Native_PlayerController_GetPlayerViewPoint :QWORD
EXTERNDEF Native_PlayerController_GetPlayerName :QWORD
; Native::LocalPlayer
EXTERNDEF Native_LocalPlayer_SpawnPlayActor :QWORD
; Native::GC
EXTERNDEF Native_GC_CollectGarbage :QWORD
; Native::AbilitySystemComponent
EXTERNDEF Native_AbilitySystemComponent_GiveAbility :QWORD
EXTERNDEF Native_AbilitySystemComponent_FindAbilitySpecFromHandle :QWORD
EXTERNDEF Native_AbilitySystemComponent_InternalTryActivateAbility :QWORD
; Native::NetDriver
EXTERNDEF Native_NetDriver_TickFlush :QWORD
; Native::ReplicationDriver
EXTERNDEF Native_ReplicationDriver_ServerReplicateActors :QWORD
; Native::NetConnection
EXTERNDEF Native_NetConnection_ReceiveNetGUIDBunch :QWORD
; Native::OnlineSession
EXTERNDEF Native_OnlineSession_KickPlayer :QWORD
; Native::OnlineBeacon
EXTERNDEF Native_OnlineBeacon_NotifyAcceptingConnection :QWORD
; Native::OnlineBeaconHost
EXTERNDEF Native_OnlineBeaconHost_NotifyAcceptingConnection :QWORD
EXTERNDEF Native_OnlineBeaconHost_InitHost :QWORD
EXTERNDEF Native_OnlineBeaconHost_PauseBeaconRequests :QWORD
; Native::World
EXTERNDEF Native_World_NotifyControlMessage :QWORD
EXTERNDEF Native_World_WelcomePlayer :QWORD
EXTERNDEF Native_World_SpawnActor :QWORD
EXTERNDEF Native_World_SpawnPlayActor :QWORD
EXTERNDEF Native_World_NotifyAcceptingConnection :QWORD
EXTERNDEF Native_World_RemoveNetworkActor :QWORD
; Native::Engine
EXTERNDEF Native_Engine_SeamlessTravelHandlerForWorld :QWORD
; Native::GameViewportClient
EXTERNDEF Native_GameViewportClient_PostRender :QWORD
; native.asm InitializeAll entry point
EXTERNDEF Native_InitializeAll :PROC
; patterns.asm Pattern byte arrays and mask strings (.const)
EXTERNDEF Pat_ProcessEvent :BYTE
EXTERNDEF Pat_ProcessEvent_Mask :BYTE
EXTERNDEF Pat_FMemory_Malloc :BYTE
EXTERNDEF Pat_FMemory_Malloc_Mask :BYTE
EXTERNDEF Pat_FMemory_Realloc :BYTE
EXTERNDEF Pat_FMemory_Realloc_Mask:BYTE
EXTERNDEF Pat_FMemory_Free :BYTE
EXTERNDEF Pat_FMemory_Free_Mask :BYTE
EXTERNDEF Pat_FNameToString :BYTE
EXTERNDEF Pat_FNameToString_Mask :BYTE
EXTERNDEF Pat_GObjects :BYTE
EXTERNDEF Pat_GObjects_Mask :BYTE
EXTERNDEF Pat_NetDebug :BYTE
EXTERNDEF Pat_NetDebug_Mask :BYTE
EXTERNDEF Pat_TickFlush :BYTE
EXTERNDEF Pat_TickFlush_Mask :BYTE
EXTERNDEF Pat_GetPlayerViewPoint :BYTE
EXTERNDEF Pat_GetPlayerViewPoint_Mask :BYTE
EXTERNDEF Pat_SpawnPlayActor :BYTE
EXTERNDEF Pat_SpawnPlayActor_Mask :BYTE
EXTERNDEF Pat_CollectGarbage :BYTE
EXTERNDEF Pat_CollectGarbage_Mask :BYTE
EXTERNDEF Pat_GiveAbility :BYTE
EXTERNDEF Pat_GiveAbility_Mask :BYTE
EXTERNDEF Pat_FindAbilitySpec :BYTE
EXTERNDEF Pat_FindAbilitySpec_Mask:BYTE
EXTERNDEF Pat_InternalTryActivate :BYTE
EXTERNDEF Pat_InternalTryActivate_Mask :BYTE
EXTERNDEF Pat_ServerReplicateActors :BYTE
EXTERNDEF Pat_ServerReplicateActors_Mask :BYTE
EXTERNDEF Pat_ReceiveNetGUIDBunch :BYTE
EXTERNDEF Pat_ReceiveNetGUIDBunch_Mask :BYTE
EXTERNDEF Pat_KickPlayer :BYTE
EXTERNDEF Pat_KickPlayer_Mask :BYTE
EXTERNDEF Pat_WelcomePlayer :BYTE
EXTERNDEF Pat_WelcomePlayer_Mask :BYTE
EXTERNDEF Pat_SpawnActor :BYTE
EXTERNDEF Pat_SpawnActor_Mask :BYTE
EXTERNDEF Pat_BeaconNotifyAccept :BYTE
EXTERNDEF Pat_BeaconNotifyAccept_Mask :BYTE
EXTERNDEF Pat_NotifyControlMessage :BYTE
EXTERNDEF Pat_NotifyControlMessage_Mask :BYTE
EXTERNDEF Pat_PostRender :BYTE
EXTERNDEF Pat_PostRender_Mask :BYTE
EXTERNDEF Pat_GetPlayerName :BYTE
EXTERNDEF Pat_GetPlayerName_Mask :BYTE
EXTERNDEF Pat_SeamlessTravel :BYTE
EXTERNDEF Pat_SeamlessTravel_Mask :BYTE
EXTERNDEF Pat_CreateTemporaryItem :BYTE
EXTERNDEF Pat_CreateTemporaryItem_Mask :BYTE
; util.asm Utility functions
EXTERNDEF Utils_FindPattern :PROC ; (Imagebase:QWORD, pattern:PTR BYTE, mask:PTR BYTE, len:DWORD) -> QWORD
EXTERNDEF Utils_Sin :PROC ; (angle:REAL4) -> REAL4 (result in XMM0)
EXTERNDEF Utils_Cos :PROC ; (angle:REAL4) -> REAL4 (result in XMM0)
EXTERNDEF Utils_RotToQuat :PROC ; (rot:PTR FRotator, out_quat:PTR FQuat)
EXTERNDEF Utils_VecToRot :PROC ; (vec:PTR FVector, out_rot:PTR FRotator)
EXTERNDEF Utils_RandomIntInRange :PROC ; (min:DWORD, max:DWORD) -> DWORD
; logger.asm spdlog bridge
EXTERNDEF Logger_Initialize :PROC ; ()
EXTERNDEF Logger_LogInfo :PROC ; (fmt:PTR BYTE, ...)
EXTERNDEF Logger_LogWarn :PROC ; (fmt:PTR BYTE, ...)
EXTERNDEF Logger_LogError :PROC ; (fmt:PTR BYTE, ...)
; hooks.asm All hook implementations
EXTERNDEF Hooks_TickFlush :PROC
EXTERNDEF Hooks_ProcessEventHook :PROC
EXTERNDEF Hooks_LocalPlayerSpawnPlayActor :PROC
EXTERNDEF Hooks_SpawnPlayActor :PROC
EXTERNDEF Hooks_NetDebug :PROC
EXTERNDEF Hooks_GetPlayerViewPoint :PROC
EXTERNDEF Hooks_CollectGarbage :PROC
EXTERNDEF Hooks_GetNetMode :PROC
EXTERNDEF Hooks_SeamlessTravelHandlerForWorld :PROC
EXTERNDEF Hooks_WelcomePlayer :PROC
EXTERNDEF Hooks_KickPlayer :PROC
EXTERNDEF Hooks_World_NotifyControlMessage :PROC
EXTERNDEF Hooks_Beacon_NotifyAcceptingConnection :PROC
EXTERNDEF Hooks_Beacon_NotifyControlMessage :PROC
EXTERNDEF Hooks_PostRender :PROC
EXTERNDEF Hooks_InitNetworkHooks :PROC
; ufunctionhooks.asm UFunction dispatch hooks
EXTERNDEF UFunctionHooks_Initialize :PROC
EXTERNDEF UFunctionHooks_ToHook_Data :QWORD ; base of the hook-registration array
EXTERNDEF UFunctionHooks_ToHook_Num :DWORD ; count of registered hooks
; sdk/sdk_classes.asm UObject / GObjects accessors
EXTERNDEF SDK_GetObjectByIndex :PROC ; (index:DWORD) -> QWORD (UObject*)
EXTERNDEF SDK_FindObject :PROC ; (name:PTR BYTE) -> QWORD (UObject*)
EXTERNDEF SDK_FindClass :PROC ; (name:PTR BYTE) -> QWORD (UClass*)
EXTERNDEF SDK_GetWorld :PROC ; () -> QWORD (UWorld*)
EXTERNDEF SDK_GetEngine :PROC ; () -> QWORD (UFortEngine*)
; sdk/sdk_classes.asm TArray helpers (element-size-agnostic)
EXTERNDEF TArray_Num :PROC ; (arr:PTR TArrayHeader) -> DWORD
EXTERNDEF TArray_GetByIndex :PROC ; (arr:PTR TArrayHeader, idx:DWORD, elem_size:DWORD) -> QWORD
EXTERNDEF TArray_Add :PROC ; (arr:PTR TArrayHeader, elem:PTR BYTE, elem_size:DWORD) -> DWORD
EXTERNDEF TArray_RemoveAt :PROC ; (arr:PTR TArrayHeader, idx:DWORD, elem_size:DWORD)
EXTERNDEF TArray_RemoveSingle :PROC ; (arr:PTR TArrayHeader, elem:PTR BYTE, elem_size:DWORD) -> BYTE
EXTERNDEF TArray_FreeArray :PROC ; (arr:PTR TArrayHeader)
; sdk/sdk_classes.asm FString helpers
EXTERNDEF FString_FromWideChar :PROC ; (out:PTR TArrayHeader, wstr:PTR WORD)
EXTERNDEF FString_Free :PROC ; (str:PTR TArrayHeader)
; sdk/sdk_fort.asm Fortnite-specific helpers
EXTERNDEF FortHelper_GetAbilitySystemComponent :PROC ; (pawn:QWORD) -> QWORD
EXTERNDEF FortHelper_GetWorldInventory :PROC ; (pc:QWORD) -> QWORD
EXTERNDEF FortHelper_GetQuickBars :PROC ; (pc:QWORD) -> QWORD
; logic/game.asm
EXTERNDEF Game_Start :PROC
EXTERNDEF Game_OnReadyToStartMatch :PROC
EXTERNDEF Game_GetDeathCause :PROC ; (report:PTR FFortPlayerDeathReport) -> DWORD (EDeathCause)
; logic/inventory.asm
EXTERNDEF Inventory_Update :PROC ; (pc:QWORD, dirty:DWORD, bRemovedItem:BYTE)
EXTERNDEF Inventory_IsValidGuid :PROC ; (pc:QWORD, guid:PTR FGuid) -> BYTE
EXTERNDEF Inventory_GetEntryInSlot :PROC ; (pc:QWORD, slot:DWORD, item:DWORD, bars:DWORD) -> PTR FFortItemEntry
EXTERNDEF Inventory_AddItemToSlot :PROC ; (pc:QWORD, def:QWORD, slot:DWORD, bars:DWORD, count:DWORD) -> PTR FFortItemEntry
EXTERNDEF Inventory_RemoveItemFromSlot :PROC ; (pc:QWORD, slot:DWORD, bars:DWORD, amount:DWORD)
EXTERNDEF Inventory_IsGuidInInventory :PROC ; (pc:QWORD, guid:PTR FGuid) -> BYTE
EXTERNDEF Inventory_EquipWeaponDefinition :PROC ; (pawn:QWORD, def:QWORD, guid:PTR FGuid)
; logic/abilities.asm
EXTERNDEF Abilities_TryActivateAbility :PROC
EXTERNDEF Abilities_GrantGameplayAbility :PROC ; (pawn:QWORD, abilityClass:QWORD)
EXTERNDEF Abilities_ApplyAbilities :PROC ; (pawn:QWORD)
EXTERNDEF Abilities_ConsumeAllReplicatedData :PROC
; logic/spawners.asm
EXTERNDEF Spawners_SpawnActor :PROC ; (actorClass:QWORD, location:PTR FVector, owner:QWORD) -> QWORD
EXTERNDEF Spawners_SummonPickup :PROC ; (pawn:QWORD, itemDef:QWORD, count:DWORD, loc:PTR FVector) -> QWORD
EXTERNDEF Spawners_SummonPickupFromChest :PROC ; (itemDef:QWORD, count:DWORD, loc:PTR FVector)
EXTERNDEF Spawners_SpawnPickupFromFloor :PROC ; (itemDef:QWORD, count:DWORD, loc:PTR FVector)
EXTERNDEF Spawners_SpawnDeco :PROC ; (tool:QWORD, params:QWORD)
EXTERNDEF Spawners_SpawnBuilding :PROC ; (buildClass:QWORD, transform:PTR FTransform, owner:QWORD) -> QWORD
; logic/teams.asm
EXTERNDEF Team_New :PROC ; (teamPos:DWORD, maxSize:DWORD) -> QWORD (Team*)
EXTERNDEF Team_AddPlayer :PROC ; (team:QWORD, pc:QWORD)
EXTERNDEF Team_Kick :PROC ; (team:QWORD)
EXTERNDEF Team_Num :PROC ; (team:QWORD) -> DWORD
EXTERNDEF Team_InitializePlayer :PROC ; (team:QWORD, pc:QWORD)
EXTERNDEF PlayerTeams_New :PROC ; (maxTeamSize:DWORD) -> QWORD
EXTERNDEF PlayerTeams_GetNextSlot :PROC ; (pt:QWORD) -> DWORD
EXTERNDEF PlayerTeams_FindAvailableSpot :PROC ; (pt:QWORD) -> QWORD (Team*)
EXTERNDEF PlayerTeams_AddPlayerToTeam :PROC ; (pt:QWORD, pc:QWORD)
EXTERNDEF PlayerTeams_AddPlayerToRandomTeam :PROC
; gamemodes/gamemode_base.asm
EXTERNDEF GameModeBase_InitPawn :PROC
EXTERNDEF GameModeBase_LoadPlayer :PROC
EXTERNDEF GameModeBase_Respawn :PROC
EXTERNDEF GameModeBase_OnPlayerDeath :PROC
EXTERNDEF GameModeBase_StartMatch :PROC
; gamemodes/gamemode_solos.asm
EXTERNDEF GameModeSolos_Initialize :PROC
; gamemodes/gamemode_duos.asm
EXTERNDEF GameModeDuos_Initialize :PROC
; gamemodes/gamemode_50v50.asm
EXTERNDEF GameMode50v50_Initialize :PROC
; gamemodes/gamemode_playground.asm
EXTERNDEF GameModePlayground_Initialize :PROC
; gamemodes/gamemode_lategame.asm
EXTERNDEF GameModeLateGame_Initialize :PROC
; gui.asm / zerogui.asm / zeroinput.asm
EXTERNDEF GUI_Tick :PROC
EXTERNDEF ZeroGUI_SetupCanvas :PROC
EXTERNDEF ZeroGUI_Begin :PROC
EXTERNDEF ZeroGUI_End :PROC
EXTERNDEF ZeroInput_Update :PROC
; Windows API
EXTRN AllocConsole :PROC
EXTRN CreateThread :PROC
EXTRN GetModuleHandleA :PROC
EXTRN GetCurrentThread :PROC
EXTRN IsBadReadPtr :PROC
EXTRN GetAsyncKeyState :PROC
EXTRN Sleep :PROC
EXTRN ExitThread :PROC
EXTRN RtlZeroMemory :PROC
; Microsoft Detours
EXTRN DetourTransactionBegin :PROC
EXTRN DetourTransactionCommit :PROC
EXTRN DetourTransactionAbort :PROC
EXTRN DetourUpdateThread :PROC
EXTRN DetourAttach :PROC
EXTRN DetourDetach :PROC
; C runtime helpers
EXTRN memcpy :PROC
EXTRN memmove :PROC
EXTRN memset :PROC
EXTRN memcmp :PROC
+213
View File
@@ -0,0 +1,213 @@
SHADOW_SPACE EQU 32 ; 4 * 8 bytes
STACK_ALIGN_SIZE EQU 16
PROC_ENTER MACRO local_bytes:=<0>
push rbp
mov rbp, rsp
; Compute sub rsp amount: round_up(local_bytes + SHADOW_SPACE, 16)
; If (local_bytes + SHADOW_SPACE) mod 16 == 0, already aligned
; (push rbp above biased by 8; a further sub rsp of a multiple of 16
; keeps alignment correct because entry RSP was already 8-mod-16).
LOCAL _lsz
_lsz = local_bytes + SHADOW_SPACE
IF (_lsz MOD 16) NE 0
_lsz = _lsz + (16 - (_lsz MOD 16))
ENDIF
sub rsp, _lsz
ENDM
; Restores RSP from RBP, pops RBP, returns.
; Caller must pop any callee-saved registers BEFORE invoking this.
PROC_LEAVE MACRO
mov rsp, rbp
pop rbp
ret
ENDM
PROC_ENTER_REGS MACRO regs:VARARG
FOR reg, <regs>
push reg
ENDM
ENDM
PROC_LEAVE_REGS MACRO regs:VARARG
FOR reg, <regs>
pop reg
ENDM
ENDM
CALL_SETUP MACRO extra_stack_qwords:=<0>
LOCAL _extra
_extra = extra_stack_qwords * 8
IF (_extra MOD 16) NE 0
_extra = _extra + 8 ; pad to 16-byte alignment
ENDIF
sub rsp, SHADOW_SPACE + _extra
ENDM
; Restore RSP after a call that used CALL_SETUP.
CALL_TEARDOWN MACRO extra_stack_qwords:=<0>
LOCAL _extra
_extra = extra_stack_qwords * 8
IF (_extra MOD 16) NE 0
_extra = _extra + 8
ENDIF
add rsp, SHADOW_SPACE + _extra
ENDM
NULL_CHECK MACRO reg, label
test reg, reg
jz label
ENDM
CheckNullFatal_M MACRO reg, msg_reg, fatal_label
test reg, reg
jnz @F
lea msg_reg, [fatal_label&_str] ; caller defines label&_str in .const
jmp fatal_label
@@:
ENDM
CheckNullFatalStr_M MACRO reg, str_sym, fatal_label
test reg, reg
jnz @F
lea rcx, str_sym
jmp fatal_label
@@:
ENDM
DETOUR_START_M MACRO
sub rsp, SHADOW_SPACE
call DetourTransactionBegin
; ignore return value (always S_OK in normal use)
mov rcx, DETOUR_ALL_THREADS ; -1 = all threads
call DetourUpdateThread
add rsp, SHADOW_SPACE
ENDM
; sentinel for "all threads" passed to DetourUpdateThread
DETOUR_ALL_THREADS EQU -1
DETOUR_END_M MACRO
sub rsp, SHADOW_SPACE
call DetourTransactionCommit
add rsp, SHADOW_SPACE
ENDM
DetourAttachM MACRO ppOriginal, pHook
sub rsp, SHADOW_SPACE
lea rcx, ppOriginal
lea rdx, pHook
call DetourAttach
add rsp, SHADOW_SPACE
ENDM
DetourDetachM MACRO ppOriginal, pHook
sub rsp, SHADOW_SPACE
lea rcx, ppOriginal
lea rdx, pHook
call DetourDetach
add rsp, SHADOW_SPACE
ENDM
AddressToFunction_M MACRO result_reg, base_reg, offset
mov result_reg, base_reg
add result_reg, offset
ENDM
VtableCall_M MACRO obj_reg, slot, scratch_reg
mov scratch_reg, [obj_reg] ; vtable ptr
call QWORD PTR [scratch_reg + (slot)*8]
ENDM
LOG_INFO_M MACRO fmt_sym
sub rsp, SHADOW_SPACE
lea rcx, fmt_sym
call Logger_LogInfo
add rsp, SHADOW_SPACE
ENDM
LOG_WARN_M MACRO fmt_sym
sub rsp, SHADOW_SPACE
lea rcx, fmt_sym
call Logger_LogWarn
add rsp, SHADOW_SPACE
ENDM
LOG_ERROR_M MACRO fmt_sym
sub rsp, SHADOW_SPACE
lea rcx, fmt_sym
call Logger_LogError
add rsp, SHADOW_SPACE
ENDM
FIND_PATTERN_M MACRO result_reg, pattern_sym, mask_sym, pattern_len
sub rsp, SHADOW_SPACE
mov rcx, [Imagebase]
lea rdx, pattern_sym
lea r8, mask_sym
mov r9d, pattern_len
call Utils_FindPattern
mov result_reg, rax
add rsp, SHADOW_SPACE
ENDM
RESOLVE_RIP_M MACRO result_reg, addr_reg
movsxd result_reg, DWORD PTR [addr_reg + 1] ; sign-extend rel32
add result_reg, addr_reg
add result_reg, 5 ; + size of call instruction
ENDM
SAVE_NONVOL_4 MACRO r0, r1, r2, r3
push r0
push r1
push r2
push r3
ENDM
RESTORE_NONVOL_4 MACRO r3, r2, r1, r0
pop r3
pop r2
pop r1
pop r0
ENDM
STORE_ARG_RCX MACRO
mov [rsp + 8], rcx
ENDM
STORE_ARG_RDX MACRO
mov [rsp + 16], rdx
ENDM
STORE_ARG_R8 MACRO
mov [rsp + 24], r8
ENDM
STORE_ARG_R9 MACRO
mov [rsp + 32], r9
ENDM
BOOL_TRUE MACRO
mov eax, 1
ENDM
BOOL_FALSE MACRO
xor eax, eax
ENDM
ZERO_REG MACRO reg
xor reg, reg
ENDM
LOAD_QWORD_PTR MACRO dst, sym
mov dst, QWORD PTR [sym]
ENDM
STORE_QWORD_PTR MACRO sym, src
mov QWORD PTR [sym], src
ENDM
DEFINE_PEHOOK_M MACRO hook_name, ufunction_sym
hook_name LABEL NEAR
; RCX = UObject* (caller object)
; RDX = UFunction*
; R8 = void* (params struct)
ENDM
+4
View File
@@ -0,0 +1,4 @@
INCLUDE include\enums.inc
INCLUDE include\macros.inc
INCLUDE include\structs.inc
INCLUDE include\externs.inc
+413
View File
@@ -0,0 +1,413 @@
; Primitive Math Structs
FVector STRUCT
X REAL4 ?
Y REAL4 ?
Z REAL4 ?
FVector ENDS ; 0x0C bytes
FVector2D STRUCT
X REAL4 ?
Y REAL4 ?
FVector2D ENDS ; 0x08 bytes
FRotator STRUCT
Pitch REAL4 ?
Yaw REAL4 ?
Roll REAL4 ?
FRotator ENDS ; 0x0C bytes
; FQuat is 16-byte aligned in UE4 (alignas(16))
FQuat STRUCT 16
X REAL4 ?
Y REAL4 ?
Z REAL4 ?
W REAL4 ?
FQuat ENDS ; 0x10 bytes
; FTransform: FQuat(0x10) + FVector(0x0C) + pad4 + FVector(0x0C) + pad4 = 0x30
FTransform STRUCT 16
Rotation FQuat <>
Translation FVector <>
_pad0 DWORD ?
Scale3D FVector <>
_pad1 DWORD ?
FTransform ENDS ; 0x30 bytes
; Core UE4 Structs
FName STRUCT
ComparisonIndex DWORD ?
Number DWORD ?
FName ENDS ; 0x08 bytes
FGuid STRUCT
A DWORD ?
B DWORD ?
C DWORD ?
D DWORD ?
FGuid ENDS ; 0x10 bytes
; Generic TArray header
TArrayHeader STRUCT
Data QWORD ? ; T* pointer
Num DWORD ? ; element count
Max DWORD ? ; allocated capacity
TArrayHeader ENDS ; 0x10 bytes
; FString = TArray<wchar_t>
FString STRUCT
Data QWORD ? ; wchar_t* pointer
Num DWORD ? ; character count (includes null)
Max DWORD ? ; allocated capacity
FString ENDS ; 0x10 bytes
; FText: opaque 0x18 bytes (shared data pointer internally)
FText STRUCT
_opaque BYTE 24 DUP (?)
FText ENDS ; 0x18 bytes
FWeakObjectPtr STRUCT
ObjectIndex DWORD ?
ObjectSerialNumber DWORD ?
FWeakObjectPtr ENDS ; 0x08 bytes
; FObjectKey has identical layout to FWeakObjectPtr
FObjectKey STRUCT
ObjectIndex DWORD ?
ObjectSerialNumber DWORD ?
FObjectKey ENDS ; 0x08 bytes
; Gameplay Tags
FGameplayTag STRUCT
TagName FName <>
FGameplayTag ENDS ; 0x08 bytes
FGameplayTagContainer STRUCT
GameplayTags TArrayHeader <> ; TArray<FGameplayTag> +0x00
ParentTags TArrayHeader <> ; TArray<FGameplayTag> +0x10
FGameplayTagContainer ENDS ; 0x20 bytes
; Network Structs
; FURL: total 0x70
FURL STRUCT
Protocol FString <> ; +0x00
Host FString <> ; +0x10
Port DWORD ? ; +0x20
_pad0 DWORD ? ; +0x24
Map FString <> ; +0x28
RedirectUrl FString <> ; +0x38
Op TArrayHeader <> ; +0x48 TArray<FString>
Portal FString <> ; +0x58
Valid DWORD ? ; +0x68
_pad1 DWORD ? ; +0x6C
FURL ENDS ; 0x70 bytes
; FUniqueNetIdRepl: total 0x28
FUniqueNetIdRepl STRUCT
_wrapper_opaque BYTE 24 DUP (?) ; +0x00 (base+unknown 0x18 bytes)
ReplicationBytes TArrayHeader <> ; +0x18 TArray<BYTE>
FUniqueNetIdRepl ENDS ; 0x28 bytes
; Gameplay Ability System Structs
FGameplayAbilitySpecHandle STRUCT
Handle DWORD ?
FGameplayAbilitySpecHandle ENDS ; 0x04 bytes
; FPredictionKey: total 0x18
FPredictionKey STRUCT
Current WORD ? ; +0x00
Base WORD ? ; +0x02
_pad0 DWORD ? ; +0x04
PackageMap QWORD ? ; +0x08 UPackageMap*
bIsStale BYTE ? ; +0x10
bIsServerInitiated BYTE ? ; +0x11
_pad1 BYTE 6 DUP (?) ; +0x12
FPredictionKey ENDS ; 0x18 bytes
; FGameplayAbilityActivationInfo: total 0x20
FGameplayAbilityActivationInfo STRUCT
ActivationMode BYTE ? ; +0x00
_bitfield BYTE ? ; +0x01
_pad BYTE 6 DUP (?) ; +0x02
PredKey FPredictionKey <> ; +0x08
FGameplayAbilityActivationInfo ENDS ; 0x20 bytes
; FGameplayAbilitySpec: total 0xC8 (base FFastArraySerializerItem=0x0C)
FGameplayAbilitySpec STRUCT
_base BYTE 12 DUP (?) ; +0x00 FFastArraySerializerItem
Handle FGameplayAbilitySpecHandle <> ; +0x0C
Ability QWORD ? ; +0x10 UGameplayAbility*
Level DWORD ? ; +0x18
InputID DWORD ? ; +0x1C
SourceObject QWORD ? ; +0x20 UObject*
ActiveCount BYTE ? ; +0x28
_bitfield BYTE ? ; +0x29 (InputPressed etc.)
_pad0 BYTE 6 DUP (?) ; +0x2A
ActivationInfo FGameplayAbilityActivationInfo <> ; +0x30
NonReplInstances TArrayHeader <> ; +0x50
ReplInstances TArrayHeader <> ; +0x60
GEHandle QWORD ? ; +0x70 (FActiveGameplayEffectHandle partial)
_tail BYTE 80 DUP (?) ; +0x78
FGameplayAbilitySpec ENDS ; 0xC8 bytes
; FGameplayAbilityRepAnimMontage: total 0x30
FGameplayAbilityRepAnimMontage STRUCT
AnimMontage QWORD ? ; +0x00 UAnimMontage*
PlayRate REAL4 ? ; +0x08
Position REAL4 ? ; +0x0C
BlendTime REAL4 ? ; +0x10
NextSectionID BYTE ? ; +0x14
_bitfield BYTE ? ; +0x15 IsStopped/ForcePlayBit/SkipPos
_pad WORD ? ; +0x16
PredictionKey FPredictionKey <> ; +0x18
FGameplayAbilityRepAnimMontage ENDS ; 0x30 bytes
; FGameplayAbilityLocalAnimMontage: total 0x30
FGameplayAbilityLocalAnimMontage STRUCT
AnimMontage QWORD ? ; +0x00 UAnimMontage*
PlayBit BYTE ? ; +0x08
_pad BYTE 7 DUP (?) ; +0x09
PredictionKey FPredictionKey <> ; +0x10
AnimatingAbility QWORD ? ; +0x28 UGameplayAbility*
FGameplayAbilityLocalAnimMontage ENDS ; 0x30 bytes
; FGameplayEventData: total 0xA8
FGameplayEventData STRUCT
EventTag FGameplayTag <> ; +0x00
Instigator QWORD ? ; +0x08 AActor*
Target QWORD ? ; +0x10 AActor*
OptionalObject QWORD ? ; +0x18 UObject*
OptionalObject2 QWORD ? ; +0x20 UObject*
ContextHandle BYTE 24 DUP (?) ; +0x28 FGameplayEffectContextHandle (opaque)
InstigatorTags FGameplayTagContainer <> ; +0x40
TargetTags FGameplayTagContainer <> ; +0x60
EventMagnitude REAL4 ? ; +0x80
_pad DWORD ? ; +0x84
TargetData BYTE 32 DUP (?) ; +0x88 FGameplayAbilityTargetDataHandle (opaque)
FGameplayEventData ENDS ; 0xA8 bytes
; Fortnite-Specific Structs
; FDeathInfo: total 0x20
FDeathInfo STRUCT
FinisherOrDowner QWORD ? ; +0x00 AFortPlayerStateAthena*
bDBNO BYTE ? ; +0x08
DeathCause BYTE ? ; +0x09 EDeathCause
_pad0 WORD ? ; +0x0A
Distance REAL4 ? ; +0x0C
DeathLocation FVector <> ; +0x10
_pad1 DWORD ? ; +0x1C
FDeathInfo ENDS ; 0x20 bytes
; FFortPlayerDeathReport: total 0x50
FFortPlayerDeathReport STRUCT
ServerTimeForRespawn REAL4 ? ; +0x00
ServerTimeForResurrect REAL4 ? ; +0x04
LethalDamage REAL4 ? ; +0x08
_pad DWORD ? ; +0x0C
KillerPlayerState QWORD ? ; +0x10 AFortPlayerState*
KillerPawn QWORD ? ; +0x18 AFortPawn*
DamageCauser QWORD ? ; +0x20 AActor*
_bitfield BYTE ? ; +0x28 bDropped/bNotifyUI
_pad2 BYTE 7 DUP (?) ; +0x29
Tags FGameplayTagContainer <> ; +0x30
FFortPlayerDeathReport ENDS ; 0x50 bytes
; FAircraftFlightInfo / FFlightInfo: total 0x28
FAircraftFlightInfo STRUCT
FlightStartLocation BYTE 12 DUP (?) ; +0x00 FVector_NetQuantize100 (same as FVector layout)
FlightStartRotation FRotator <> ; +0x0C
FlightSpeed REAL4 ? ; +0x18
TimeTillFlightEnd REAL4 ? ; +0x1C
TimeTillDropStart REAL4 ? ; +0x20
TimeTillDropEnd REAL4 ? ; +0x24
FAircraftFlightInfo ENDS ; 0x28 bytes
; FQuickBarSlot: total 0x18
FQuickBarSlot STRUCT
Items TArrayHeader <> ; +0x00 TArray<FGuid>
bEnabled BYTE ? ; +0x10
_pad BYTE 7 DUP (?) ; +0x11
FQuickBarSlot ENDS ; 0x18 bytes
; FQuickBar: total 0x90
FQuickBar STRUCT
CurrentFocusedSlot DWORD ? ; +0x00
PreviousFocusedSlot DWORD ? ; +0x04
SecondaryFocusedSlot DWORD ? ; +0x08
_pad DWORD ? ; +0x0C
Slots TArrayHeader <> ; +0x10 TArray<FQuickBarSlot>
DataDefinition BYTE 16 DUP (?) ; +0x20 FQuickBarData (opaque 0x10)
_unknown BYTE 80 DUP (?) ; +0x30 EquippedItemDefinitions set
SharedVisibleSlotIdx TArrayHeader <> ; +0x80 TArray<int>
FQuickBar ENDS ; 0x90 bytes
; FFortItemEntry: total 0xC8 (base FFastArraySerializerItem=0x0C)
FFortItemEntry STRUCT
_base BYTE 12 DUP (?) ; +0x00 FFastArraySerializerItem
Count DWORD ? ; +0x0C
PreviousCount DWORD ? ; +0x10
_pad0 DWORD ? ; +0x14
ItemDefinition QWORD ? ; +0x18 UFortItemDefinition*
Durability REAL4 ? ; +0x20
Level DWORD ? ; +0x24
LoadedAmmo DWORD ? ; +0x28
_pad1 DWORD ? ; +0x2C
AlterationDefinitions TArrayHeader <> ; +0x30
ItemSource FString <> ; +0x40
ItemGuid FGuid <> ; +0x50
_bool0 BYTE ? ; +0x60 inventory_overflow_date
bIsReplicatedCopy BYTE ? ; +0x61
bIsDirty BYTE ? ; +0x62
_pad2 BYTE 5 DUP (?) ; +0x63
GiftingInfo BYTE 40 DUP (?) ; +0x68 FFortGiftingInfo (opaque 0x28)
StateValues TArrayHeader <> ; +0x90
ParentInventory FWeakObjectPtr <> ; +0xA0
GASpecHandle DWORD ? ; +0xA8 FGameplayAbilitySpecHandle
_pad3 DWORD ? ; +0xAC
AlterationInstances TArrayHeader <> ; +0xB0
GenericAttrValue REAL4 ? ; +0xC0
_pad4 DWORD ? ; +0xC4
FFortItemEntry ENDS ; 0xC8 bytes
; FFortItemList: total 0x170 (base FFastArraySerializer=0xB0)
FFortItemList STRUCT
_base BYTE 176 DUP (?) ; +0x00 FFastArraySerializer (0xB0)
ReplicatedEntries TArrayHeader <> ; +0xB0 TArray<FFortItemEntry>
_unknown0 BYTE 80 DUP (?) ; +0xC0
ItemInstances TArrayHeader <> ; +0x110 TArray<UFortWorldItem*>
_unknown1 BYTE 80 DUP (?) ; +0x120
FFortItemList ENDS ; 0x170 bytes
; Field Offset Constants
; UObject field offsets (base 0x0028 already past vtable)
UOBJECT_Flags EQU 00Ch ; int32 (from UObject base +0x0C, but struct starts at 0 here)
UOBJECT_InternalIndex EQU 010h
UOBJECT_Class EQU 018h
UOBJECT_Name EQU 020h ; FName
UOBJECT_Outer EQU 028h
; UFunction field offsets (UObject base = 0x28 UField 0x30 UStruct 0x80 UFunction 0x70 more)
UFUNC_FunctionFlags EQU 0D0h
UFUNC_NumParms EQU 0D6h
UFUNC_ParmsSize EQU 0D8h
UFUNC_Func EQU 0B0h ; native func ptr at UFunction+0xB0 (0x28 obj + 0x88 struct header)
; TUObjectArray offsets
TUOBJECTARRAY_Objects EQU 000h ; uint8* flat array
TUOBJECTARRAY_MaxElem EQU 008h ; uint32
TUOBJECTARRAY_NumElem EQU 00Ch ; uint32
TUOBJECTARRAY_STRIDE EQU 024 ; 24 bytes per slot
; UNetDriver offsets
UNETDRIVER_ServerConn EQU 078h
UNETDRIVER_ClientConns EQU 080h ; TArray<UNetConnection*>
UNETDRIVER_World EQU 0B8h
UNETDRIVER_ReplDriver EQU 500h
; UNetConnection offsets
UNETCONN_Driver EQU 058h
UNETCONN_ViewTarget EQU 090h
UNETCONN_OwningActor EQU 098h
; AActor offsets
AACTOR_RemoteRole EQU 085h
AACTOR_RepMovement EQU 088h
AACTOR_Owner EQU 108h
AACTOR_Role EQU 118h
AACTOR_Instigator EQU 140h
AACTOR_Children EQU 148h ; TArray<AActor*>
AACTOR_RootComponent EQU 158h
; AFortPlayerControllerAthena offsets (in parent chain)
AFPC_QuickBars EQU 1C38h
AFPC_WorldInventory EQU 1ED8h
AFPC_OutpostInventory EQU 1EE0h
AFPCA_bClientNotifiedOfWin EQU 2BE4h
AFPCA_WarmupPlayerStart EQU 3198h
; AFortPlayerState offsets
AFPS_bHasFinishedLoading EQU 4E0h ; bit2 in uint8
AFPS_bHasStartedPlaying EQU 4E0h ; bit3 in uint8
AFPS_HeroType EQU 528h
AFPS_CharacterGender EQU 7F0h
AFPS_CharacterBodyType EQU 7F1h
AFPS_CharacterParts EQU 7F8h ; UCustomCharacterPart*[6] = 0x30 bytes
AFPS_PlayerTeam EQU 8F0h
AFPS_AbilitySysComp EQU 0B88h
; AFortPlayerStateAthena offsets
AFPSA_DeathInfo EQU 0F40h
AFPSA_TeamIndex EQU 0F60h
AFPSA_KillScore EQU 0F68h
AFPSA_TeamKillScore EQU 0F6Ch
AFPSA_SquadId EQU 10F0h
AFPSA_bIsDisconnected EQU 1674h
; AFortGameModeAthena offsets
AFGMA_bAlwaysDBNO EQU 8E0h
AFGMA_bSafeZoneActive EQU 0B04h
AFGMA_bSafeZonePaused EQU 0B05h
AFGMA_SafeZonePhase EQU 0B20h
AFGMA_SafeZoneIndicator EQU 0B28h
AFGMA_SafeZoneLocations EQU 0B30h ; TArray<FVector>
AFGMA_bAllowSpectate EQU 0B68h
AFGMA_AlivePlayers EQU 950h ; TArray<AFortPlayerControllerAthena*>
; AFortGameStateAthena offsets
AFGSA_WarmupCDStart EQU 14F0h
AFGSA_WarmupCDEnd EQU 14F4h
AFGSA_AircraftStartTime EQU 14F8h
AFGSA_SafeZoneStartTime EQU 14FCh
AFGSA_TotalPlayers EQU 1508h
AFGSA_PlayersLeft EQU 150Ch
AFGSA_WinningPlayerName EQU 1588h
AFGSA_SafeZoneIndicator EQU 15F0h
AFGSA_GamePhase EQU 1B98h
AFGSA_CurrentPlaylist EQU 1BA0h
AFGSA_bSkipAircraft EQU 1BA8h
AFGSA_SafeZonePhase EQU 1BA9h
AFGSA_Aircrafts EQU 1BB8h ; TArray<AFortAthenaAircraft*>
; AFortInventory offsets
AFINV_InventoryType EQU 320h
AFINV_Inventory EQU 328h ; FFortItemList
AFINV_bRequiresLocalUpdate EQU 498h
AFINV_PendingInstances EQU 4B0h
; AFortQuickBars offsets
AFQB_PrimaryQuickBar EQU 318h ; FQuickBar (0x90)
AFQB_SecondaryQuickBar EQU 438h ; FQuickBar (0x90)
; UFortWorldItem offsets
UFWI_bIsTemporaryItem EQU 1D0h
UFWI_OwnerInventory EQU 1D8h
UFWI_ItemEntry EQU 1E0h ; FFortItemEntry (0xC8)
; AFortPickup offsets
AFPU_bRandomRotation EQU 348h
AFPU_PrimaryPickupItemEntry EQU 350h ; FFortItemEntry
AFPU_bPickedUp EQU 4C0h
AFPU_PawnWhoDroppedPickup EQU 4C8h
; AFortAthenaAircraft offsets
AFAA_ExitLocation EQU 384h ; FVector
AFAA_FlightInfo EQU 390h ; FAircraftFlightInfo (0x28)
AFAA_FlightStartTime EQU 3B8h
; UAbilitySystemComponent offsets
UASC_ActivatableAbilities EQU 470h ; FGameplayAbilitySpecContainer
UASC_AllReplInstAbils EQU 588h ; TArray<UGameplayAbility*>
UASC_RepAnimMontageInfo EQU 0AF0h ; FGameplayAbilityRepAnimMontage
UASC_LocalAnimMontageInfo EQU 0B28h ; FGameplayAbilityLocalAnimMontage
; FGameplayAbilitySpecContainer: Items TArray at +0xB0 (base FFastArraySerializer=0xB0)
GASC_Items EQU 0B0h
; ClassRepNodePolicies raw offset on UReplicationDriver
REPDRIVER_ClassRepPolicies EQU 3B8h ; TMap<FObjectKey, EClassRepNodeMapping>
+3
View File
@@ -0,0 +1,3 @@
LIBRARY raider
EXPORTS
DllMain