diff --git a/Project Reboot 3.0/NetDriver.cpp b/Project Reboot 3.0/NetDriver.cpp index 9d50c4f..e8a9f14 100644 --- a/Project Reboot 3.0/NetDriver.cpp +++ b/Project Reboot 3.0/NetDriver.cpp @@ -7,7 +7,7 @@ #include "GameplayStatics.h" #include "KismetMathLibrary.h" #include -#include "Package.h"S +#include "Package.h" #include "AssertionMacros.h" #include "bots.h" #include "gui.h" diff --git a/Project Reboot 3.0/addresses.cpp b/Project Reboot 3.0/addresses.cpp index 0079a72..aba9819 100644 --- a/Project Reboot 3.0/addresses.cpp +++ b/Project Reboot 3.0/addresses.cpp @@ -445,6 +445,8 @@ void Offsets::FindAll() Offsets::ServerReplicateActors = 0x5E; else if (Fortnite_Version >= 15.3 && Engine_Version < 500) // 15.3-18 = 0x5F Offsets::ServerReplicateActors = 0x5F; + else if (Fortnite_Version == 19.40) + Offsets::ServerReplicateActors = 0x65; else if (std::floor(Fortnite_Version) >= 19 && std::floor(Fortnite_Version) <= 20) Offsets::ServerReplicateActors = 0x66; else if (std::floor(Fortnite_Version) >= 21) diff --git a/Project Reboot 3.0/commands.cpp b/Project Reboot 3.0/commands.cpp index f71cd7a..a2044b7 100644 --- a/Project Reboot 3.0/commands.cpp +++ b/Project Reboot 3.0/commands.cpp @@ -2,6 +2,11 @@ #include "FortAthenaAIBotSpawnerData.h" +#include +#include + +std::map Waypoints; + void ServerCheatHook(AFortPlayerControllerAthena* PlayerController, FString Msg) { bool isMsgEmpty = !Msg.Data.Data || Msg.Data.Num() <= 0; @@ -851,6 +856,57 @@ void ServerCheatHook(AFortPlayerControllerAthena* PlayerController, FString Msg) CheatManager = nullptr; SendMessageToConsole(PlayerController, L"Teleported!"); } + else if (Command == "savewaypoint") + { + if (NumArgs < 1) + { + SendMessageToConsole(PlayerController, L"Please provide a phrase to save the waypoint."); + return; + } + + auto Pawn = ReceivingController->GetMyFortPawn(); + + if (!Pawn) + { + SendMessageToConsole(PlayerController, L"No pawn to get location from!"); + return; + } + + auto PawnLocation = Pawn->GetActorLocation(); + Waypoints[Arguments[1]] = PawnLocation; + + SendMessageToConsole(PlayerController, L"Waypoint saved! Use « cheat waypoint (phrase) » to teleport to that location!"); + } + else if (Command == "waypoint") + { + if (NumArgs < 1) + { + SendMessageToConsole(PlayerController, L"Please provide a waypoint phrase to teleport to."); + return; + } + + std::string Phrase = Arguments[1]; + + if (Waypoints.find(Phrase) == Waypoints.end()) + { + SendMessageToConsole(PlayerController, L"A saved waypoint with this phrase was not found!"); + return; + } + + FVector Destination = Waypoints[Phrase]; + + auto Pawn = ReceivingController->GetMyFortPawn(); + + if (Pawn) + { + Pawn->TeleportTo(Destination, Pawn->GetActorRotation()); + SendMessageToConsole(PlayerController, L"Teleported to waypoint!"); + } + else + { + SendMessageToConsole(PlayerController, L"No pawn to teleport!"); + } + } else if (Command == "startaircraft") { GameMode->StartAircraftPhase(); @@ -1004,6 +1060,8 @@ cheat setshield - Sets executing player's shield. cheat applycid - Sets a player's character. cheat spawnpickup - Spawns a pickup at specified player. cheat teleport/tp - Teleports to what the player is looking at. +cheat savewaypoint (phrase/number) - Gets the location of where you are standing and saves it as a waypoint. +cheat waypoint (saved phrase/number) - Teleports the player to the selected existing waypoint. cheat spawnbot - Spawns a bot at the player (experimental). cheat setpickaxe - Set player's pickaxe. Can be either the PID or WID cheat destroytarget - Destroys the actor that the player is looking at. @@ -1017,4 +1075,4 @@ If you want to execute a command on a certain player, surround their name (case SendMessageToConsole(PlayerController, HelpMessage); } -} \ No newline at end of file +} diff --git a/Project Reboot 3.0/finder.h b/Project Reboot 3.0/finder.h index ccda74f..d7d830f 100644 --- a/Project Reboot 3.0/finder.h +++ b/Project Reboot 3.0/finder.h @@ -72,7 +72,10 @@ static inline uint64 FindStaticFindObject(int StringSkip = 1) auto addr = Memcury::Scanner::FindPattern("40 55 53 56 57 41 54 41 55 41 56 41 57 48 8D AC 24 ? ? ? ? 48 81 EC ? ? ? ? 48 8B 05 ? ? ? ? 48 33 C4 48 89 85 ? ? ? ? 45 33 F6 4C 8B E1 45 0F B6 E9 49 8B F8 41 8B C6", false).Get(); if (!addr) - addr = Memcury::Scanner::FindPattern("48 89 5C 24 ? 48 89 74 24 ? 4C 89 64 24 ? 55 41 55 41 57 48 8B EC 48 83 EC 60 45 8A E1 4C 8B E9 48 83 FA").Get(); // 20.00 + addr = Memcury::Scanner::FindPattern("48 89 5C 24 ? 48 89 74 24 ? 4C 89 64 24 ? 55 41 55 41 57 48 8B EC 48 83 EC 60 45 8A E1 4C 8B E9 48 83 FA", false).Get(); // 20.00 + + if (!addr) + addr = Memcury::Scanner::FindPattern("48 89 5C 24 ? 48 89 74 24 ? 4C 89 64 24 ? 55 41 55 41 57 48 8B EC 48 83 EC 50 4C 8B E9").Get(); // 19.40 return addr; }