Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from typing import Any
- from mods_base import build_mod, get_pc, keybind, hook, EInputEvent, SliderOption
- from unrealsdk import find_all
- from unrealsdk.hooks import Type
- from unrealsdk.unreal import BoundFunction, UObject, WrappedStruct
- from ui_utils import show_hud_message
- from threading import Timer
- assert __import__("mods_base").__version_info__ >= (1, 1), "Please update the SDK"
- __version__: str
- __version_info__: tuple[int, ...]
- firstpersoncamera = None
- thirdpersoncamera = None
- orbitcamera = None
- lastCamWasFp = True
- cameraTimer = None
- walkingActive = False
- PickupDistanceSlider: SliderOption = SliderOption("Loot Pickup Distance", 500.0, 450.0, 1000.0, 1.0, False, description="Sets how far away you can be to interact with ground loot.")
- InteractionDistanceSlider: SliderOption = SliderOption("Object Interaction Distance", 430.0, 330.0, 1000.0, 1.0, False, description="Sets how far away you can be to interact with objects.")
- TPCamOffsetXSlider: SliderOption = SliderOption("TP Camera forwards(+)/backwards(-)", -256.0, -500.0, 500.0, 1.0, False, description="Moves the third person camera forwards with positive values and backwards with negative ones.")
- TPCamOffsetYSlider: SliderOption = SliderOption("TP Camera left(-)/right(+)", 0.0, -500.0, 500.0, 1.0, False, description="Moves the third person camera right with positive values and left with negative ones.")
- TPCamOffsetZSlider: SliderOption = SliderOption("TP Camera up(+)/down(-)", -25.0, -500.0, 500.0, 1.0, False, description="Moves the third person camera up with positive values and down with negative ones.")
- OrbitCamOffsetXSlider: SliderOption = SliderOption("Orbit Camera forwards(+)/backwards(-)", -300.0, -500.0, 500.0, 1.0, False, description="Moves the orbit camera forwards with positive values and backwards with negative ones.")
- OrbitCamOffsetYSlider: SliderOption = SliderOption("Orbit Camera left(-)/right(+)", 0.0, -500.0, 500.0, 1.0, False, description="Moves the orbit camera right with positive values and left with negative ones.")
- OrbitCamOffsetZSlider: SliderOption = SliderOption("Orbit Camera up(+)/down(-)", 0.0, -500.0, 500.0, 1.0, False, description="Moves the orbit camera up with positive values and down with negative ones.")
- @keybind("Third Person Mode ADS", event_filter=EInputEvent.IE_Released, description="Switches to Third Person on key release.")
- def thirdPersonModeAim() -> None:
- modeName = get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode.Data.ModeName
- if modeName == "Default" and modeName != "Orbit" and lastCamWasFp == False:
- get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode = thirdpersoncamera
- #lastCamWasFpStr = str(lastCamWasFp)
- #print("lastCamWasFp = " + lastCamWasFpStr)
- #show_hud_message("lastCamWasFp", lastCamWasFpStr, 1.5)
- @keybind("First Person Mode ADS", description= "Switches to First Person on key press.")
- def firstPersonMode() -> None:
- modeName = get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode.Data.ModeName
- if modeName == "ThirdPerson" and modeName != "Orbit" and lastCamWasFp == False:
- get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode = firstpersoncamera
- @keybind("TP-FP Camera Mode Toggle", description="Toggles third person camera mode.")
- def toggleTpFp() -> None:
- global lastCamWasFp
- modeName = get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode.Data.ModeName
- if modeName == "ThirdPerson" and modeName != "Orbit" and lastCamWasFp == False:
- get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode = firstpersoncamera
- lastCamWasFp = True
- elif modeName == "Default" and modeName != "Orbit":
- get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode = thirdpersoncamera
- lastCamWasFp = False
- @keybind("Orbit Camera Mode", description="Toggles orbit camera mode.")
- def orbitMode() -> None:
- global lastCamWasFp
- modeName = get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode.Data.ModeName
- if modeName != "Orbit":
- get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode = orbitcamera
- elif lastCamWasFp == True:
- get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode = firstpersoncamera
- else:
- get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode = thirdpersoncamera
- lastCamWasFp = False
- def backToTp() -> None:
- global lastCamWasFp
- modeName = get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode.Data.ModeName
- if modeName == "Default" and lastCamWasFp == False:
- get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode = thirdpersoncamera
- elif modeName == "Melee" and lastCamWasFp == False:
- get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode = thirdpersoncamera
- elif modeName == "GroundSlamHighExit" and lastCamWasFp == False:
- get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode = thirdpersoncamera
- elif modeName == "Slide" and lastCamWasFp == False:
- get_pc().OakPlayerCameraManager.CameraModesManager.CurrentMode = thirdpersoncamera
- def SetTimer() -> None:
- global cameraTimer
- if cameraTimer and cameraTimer.is_alive():
- print("Timer already running!")
- return
- cameraTimer = Timer(2.0, backToTp)
- cameraTimer.start()
- @hook("/Game/PlayerCharacters/_Shared/_Design/GroundSlam/High/Action_GroundSlam_High_Exit.Action_GroundSlam_High_Exit_C:OnEnd", Type.PRE)
- def GroundSlam(obj: UObject, args: WrappedStruct, _3: Any, _4: BoundFunction) -> None:
- SetTimer()
- @hook("/Game/PlayerCharacters/_Shared/_Design/Sliding/ControlledMove_Global_Sliding.ControlledMove_Global_Sliding_C:OnStop", Type.PRE)
- def slidingStop(obj: UObject, args: WrappedStruct, _3: Any, _4: BoundFunction) -> None:
- SetTimer()
- @hook("/Game/PlayerCharacters/_Shared/_Design/Ladder/Action_ExitLadderTop.Action_ExitLadderTop_C:OnBegin", Type.PRE)
- def exitLadderTop(obj: UObject, args: WrappedStruct, _3: Any, _4: BoundFunction) -> None:
- SetTimer()
- @hook("/Game/PlayerCharacters/_Shared/_Design/Ladder/Action_ExitLadderBottom.Action_ExitLadderBottom_C:OnBegin", Type.PRE)
- def exitLadderBottom(obj: UObject, args: WrappedStruct, _3: Any, _4: BoundFunction) -> None:
- SetTimer()
- @hook("/Game/PlayerCharacters/_Shared/_Design/Ladder/Action_LadderSlideLanding.Action_LadderSlideLanding_C:OnBegin", Type.PRE)
- def ladderSlideLanding(obj: UObject, args: WrappedStruct, _3: Any, _4: BoundFunction) -> None:
- SetTimer()
- @hook("/Game/PlayerCharacters/_Shared/_Design/Melee/Action_Melee_Base.Action_Melee_Base_C:OnEnd", Type.PRE)
- def Action_Melee_Base_C_OnEnd(obj: UObject, args: WrappedStruct, _3: Any, _4: BoundFunction) -> None:
- SetTimer()
- @keybind("Toggle Walking", description="Toggles walking.")
- def toggleWalking() -> None:
- global walkingActive
- if walkingActive == False:
- get_pc().Character.CharacterMovement.MaxWalkSpeed.Value = 200.0
- walkingActive = True
- else:
- get_pc().Character.CharacterMovement.MaxWalkSpeed.Value = 470.0
- walkingActive = False
- @hook("/Script/OakGame.GFxExperienceBar:extFinishedDim", Type.POST)
- def extFinishedDim(obj: UObject, args: WrappedStruct, _3: Any, _4: BoundFunction) -> None:
- global firstpersoncamera, thirdpersoncamera, orbitcamera
- firstpersoncamera = None
- thirdpersoncamera = None
- orbitcamera = None
- for camera in find_all("CameraMode")[1:]:
- if camera.Data.ModeName == "ThirdPerson":
- thirdpersoncamera = camera
- elif camera.Data.ModeName == "Default":
- firstpersoncamera = camera
- elif camera.Data.ModeName == "Orbit":
- orbitcamera = camera
- # Loot pickup, item card and object interaction distance Values
- try:
- pickupvalue = PickupDistanceSlider.value
- objectvalue = InteractionDistanceSlider.value
- widgets = find_all("BPWidget_GFxItemCard_C")[1:]
- for widget in widgets:
- widget.ShowItemCardDistance = pickupvalue
- widget.HideItemCardDistance = pickupvalue + 2
- get_pc().UseComponent.PickupInteractionDistance = pickupvalue
- get_pc().UseComponent.InteractDistance = objectvalue
- get_pc().UseComponent.LeaveInteractionDistance = objectvalue + 2
- except Exception as e:
- print(f"Could not update distances: {e}")
- # Apply third person camera offset
- try:
- if thirdpersoncamera is not None:
- # Get the third person camera location and add the offsets
- offset = thirdpersoncamera.Behaviors[4].LocationOffset
- offset.x = TPCamOffsetXSlider.value
- offset.y = TPCamOffsetYSlider.value
- offset.z = TPCamOffsetZSlider.value
- except Exception as e:
- print(f"Could not update third person camera offset: {e}")
- # Apply orbit camera offset
- try:
- if orbitcamera is not None:
- # Get the orbit camera location and add the offsets
- offset = orbitcamera.Behaviors[5].LocationOffset
- offset.x = OrbitCamOffsetXSlider.value
- offset.y = OrbitCamOffsetYSlider.value
- offset.z = OrbitCamOffsetZSlider.value
- except Exception as e:
- print(f"Could not update orbit camera offset: {e}")
- build_mod()
Advertisement
Add Comment
Please, Sign In to add comment