Improve Freecam, increase special ped type from 1 -> 10
This commit is contained in:
parent
8cc4a0513c
commit
be57a02a2e
10
.vscode/c_cpp_properties.json
vendored
10
.vscode/c_cpp_properties.json
vendored
@ -6,10 +6,10 @@
|
||||
"${workspaceFolder}/**",
|
||||
"${PLUGIN_SDK_DIR}/*",
|
||||
"${DIRECTX9_SDK_DIR}/Include/*",
|
||||
// "${PLUGIN_SDK_DIR}/plugin_sa/*",
|
||||
// "${PLUGIN_SDK_DIR}/plugin_sa/game_sa/*",
|
||||
"${PLUGIN_SDK_DIR}/plugin_vc/*",
|
||||
"${PLUGIN_SDK_DIR}/plugin_vc/game_vc/*",
|
||||
"${PLUGIN_SDK_DIR}/plugin_sa/*",
|
||||
"${PLUGIN_SDK_DIR}/plugin_sa/game_sa/*",
|
||||
// "${PLUGIN_SDK_DIR}/plugin_vc/*",
|
||||
// "${PLUGIN_SDK_DIR}/plugin_vc/game_vc/*",
|
||||
"${PLUGIN_SDK_DIR}/shared/*",
|
||||
"${PLUGIN_SDK_DIR}/shared/game/*",
|
||||
"C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.19041.0\\ucrt\\*",
|
||||
@ -20,7 +20,7 @@
|
||||
"IS_PLATFORM_WIN",
|
||||
"_CRT_SECURE_NO_WARNINGS",
|
||||
"_CRT_NON_CONFORMING_SWPRINTFS",
|
||||
"GTAVC",
|
||||
"GTASA",
|
||||
"_DX9_SDK_INSTALLED",
|
||||
"PLUGIN_SGV_10US"
|
||||
],
|
||||
|
34
src/game.cpp
34
src/game.cpp
@ -212,15 +212,21 @@ void SetPlayerMission(std::string& rootkey, std::string& name, std::string& id)
|
||||
player->SetWantedLevel(0);
|
||||
Command<Commands::LOAD_AND_LAUNCH_MISSION_INTERNAL>(std::stoi(id));
|
||||
}
|
||||
else SetHelpMessage("Can't start mission now", false, false, false);
|
||||
else
|
||||
{
|
||||
SetHelpMessage("Can't start mission now", false, false, false);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef GTASA
|
||||
void Game::FreeCam()
|
||||
{
|
||||
int deltaSpeed = m_Freecam::m_fSpeed * (CTimer::m_snTimeInMillisecondsNonClipped -
|
||||
int delta = (CTimer::m_snTimeInMillisecondsNonClipped -
|
||||
CTimer::m_snPreviousTimeInMillisecondsNonClipped);
|
||||
|
||||
int ratio = 1 / (1 + (delta * m_Freecam::m_nMul));
|
||||
int speed = m_Freecam::m_nMul + m_Freecam::m_nMul * ratio * delta;
|
||||
|
||||
if (!m_Freecam::m_bInitDone)
|
||||
{
|
||||
CPlayerPed* player = FindPlayerPed(-1);
|
||||
@ -285,48 +291,48 @@ void Game::FreeCam()
|
||||
|
||||
if (KeyPressed(VK_RCONTROL))
|
||||
{
|
||||
deltaSpeed /= 2;
|
||||
speed /= 2;
|
||||
}
|
||||
|
||||
if (KeyPressed(VK_RSHIFT))
|
||||
{
|
||||
deltaSpeed *= 2;
|
||||
speed *= 2;
|
||||
}
|
||||
|
||||
if (KeyPressed(VK_KEY_I) || KeyPressed(VK_KEY_K))
|
||||
{
|
||||
if (KeyPressed(VK_KEY_K))
|
||||
{
|
||||
deltaSpeed *= -1;
|
||||
speed *= -1;
|
||||
}
|
||||
|
||||
float angle;
|
||||
Command<Commands::GET_CHAR_HEADING>(m_Freecam::m_nPed, &angle);
|
||||
pos.x += deltaSpeed * cos(angle * 3.14159f / 180.0f);
|
||||
pos.y += deltaSpeed * sin(angle * 3.14159f / 180.0f);
|
||||
pos.z += deltaSpeed * 2 * sin(m_Freecam::m_fTotalMouse.y / 3 * 3.14159f / 180.0f);
|
||||
pos.x += speed * cos(angle * 3.14159f / 180.0f);
|
||||
pos.y += speed * sin(angle * 3.14159f / 180.0f);
|
||||
pos.z += speed * 2 * sin(m_Freecam::m_fTotalMouse.y / 3 * 3.14159f / 180.0f);
|
||||
}
|
||||
|
||||
if (KeyPressed(VK_KEY_J) || KeyPressed(VK_KEY_L))
|
||||
{
|
||||
if (KeyPressed(VK_KEY_J))
|
||||
{
|
||||
deltaSpeed *= -1;
|
||||
speed *= -1;
|
||||
}
|
||||
|
||||
float angle;
|
||||
Command<Commands::GET_CHAR_HEADING>(m_Freecam::m_nPed, &angle);
|
||||
angle -= 90;
|
||||
|
||||
pos.x += deltaSpeed * cos(angle * 3.14159f / 180.0f);
|
||||
pos.y += deltaSpeed * sin(angle * 3.14159f / 180.0f);
|
||||
pos.x += speed * cos(angle * 3.14159f / 180.0f);
|
||||
pos.y += speed * sin(angle * 3.14159f / 180.0f);
|
||||
}
|
||||
|
||||
if (CPad::NewMouseControllerState.wheelUp)
|
||||
{
|
||||
if (m_Freecam::m_fFOV > 10.0f)
|
||||
{
|
||||
m_Freecam::m_fFOV -= 2.0f * deltaSpeed;
|
||||
m_Freecam::m_fFOV -= 2.0f * speed;
|
||||
}
|
||||
|
||||
TheCamera.LerpFOV(TheCamera.FindCamFOV(), m_Freecam::m_fFOV, 250, true);
|
||||
@ -337,7 +343,7 @@ void Game::FreeCam()
|
||||
{
|
||||
if (m_Freecam::m_fFOV < 115.0f)
|
||||
{
|
||||
m_Freecam::m_fFOV += 2.0f * deltaSpeed;
|
||||
m_Freecam::m_fFOV += 2.0f * speed;
|
||||
}
|
||||
|
||||
TheCamera.LerpFOV(TheCamera.FindCamFOV(), m_Freecam::m_fFOV, 250, true);
|
||||
@ -543,7 +549,7 @@ Lowers armour, health, stamina etc."))
|
||||
ImGui::Spacing();
|
||||
|
||||
ImGui::SliderFloat("Field of view", &m_Freecam::m_fFOV, 5.0f, 120.0f);
|
||||
ImGui::SliderFloat("Movement Speed", &m_Freecam::m_fSpeed, 0.0f, 0.5f);
|
||||
ImGui::SliderInt("Movement Speed", &m_Freecam::m_nMul, 1, 10);
|
||||
ImGui::Spacing();
|
||||
ImGui::TextWrapped("Press Enter to teleport player to camera location");
|
||||
ImGui::Spacing();
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
struct m_Freecam
|
||||
{
|
||||
static inline bool m_bEnabled;
|
||||
static inline float m_fSpeed = 0.08f;
|
||||
static inline int m_nMul = 1;
|
||||
static inline float m_fFOV = 60.0f;
|
||||
static inline bool m_bInitDone;
|
||||
static inline CPed* m_pPed;
|
||||
|
@ -2,5 +2,5 @@
|
||||
#define MENU_NAME "Cheat Menu"
|
||||
#define MENU_VERSION_NUMBER "3.0"
|
||||
#define MENU_VERSION MENU_VERSION_NUMBER"-beta"
|
||||
#define BUILD_NUMBER "20211002"
|
||||
#define BUILD_NUMBER "20211009"
|
||||
#define MENU_TITLE MENU_NAME " v" MENU_VERSION "(" BUILD_NUMBER ")"
|
||||
|
26
src/ped.cpp
26
src/ped.cpp
@ -81,6 +81,7 @@ void Ped::SpawnPed(std::string& cat, std::string& name, std::string& model)
|
||||
|
||||
CPed* ped;
|
||||
int hplayer;
|
||||
static size_t currentSlot = 1;
|
||||
|
||||
#ifdef GTASA
|
||||
if (m_SpecialPedJson.m_Data.contains(model))
|
||||
@ -91,18 +92,22 @@ void Ped::SpawnPed(std::string& cat, std::string& name, std::string& model)
|
||||
else
|
||||
name = model;
|
||||
|
||||
CStreaming::RequestSpecialChar(1, name.c_str(), PRIORITY_REQUEST);
|
||||
CStreaming::RequestSpecialChar(currentSlot, name.c_str(), PRIORITY_REQUEST);
|
||||
CStreaming::LoadAllRequestedModels(true);
|
||||
|
||||
Command<Commands::CREATE_CHAR>(m_SpawnPed::m_nSelectedPedType + 4, 291, pos.x, pos.y, pos.z + 1, &hplayer);
|
||||
CStreaming::SetSpecialCharIsDeletable(291);
|
||||
Command<Commands::CREATE_CHAR>(m_SpawnPed::m_nSelectedPedType + 4, 290 + currentSlot, pos.x, pos.y, pos.z + 1, &hplayer);
|
||||
CStreaming::SetSpecialCharIsDeletable(290 + currentSlot);
|
||||
|
||||
// SA has 10 slots
|
||||
++currentSlot;
|
||||
if (currentSlot > 10)
|
||||
{
|
||||
currentSlot = 1;
|
||||
}
|
||||
}
|
||||
#elif GTAVC
|
||||
|
||||
if (cat == "Special") // Special model
|
||||
{
|
||||
static size_t currentSlot = 1;
|
||||
|
||||
Command<Commands::LOAD_SPECIAL_CHARACTER>(currentSlot, model.c_str());
|
||||
Command<Commands::LOAD_ALL_MODELS_NOW>();
|
||||
|
||||
@ -197,15 +202,20 @@ void Ped::Draw()
|
||||
if (ImGui::Button("Start gang war", ImVec2(Ui::GetSize(2))))
|
||||
{
|
||||
if (Util::GetLargestGangInZone() == 1)
|
||||
{
|
||||
CGangWars::StartDefensiveGangWar();
|
||||
}
|
||||
else
|
||||
{
|
||||
CGangWars::StartOffensiveGangWar();
|
||||
|
||||
}
|
||||
CGangWars::bGangWarsActive = true;
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("End gang war", ImVec2(Ui::GetSize(2))))
|
||||
{
|
||||
CGangWars::EndGangWar(true);
|
||||
}
|
||||
|
||||
ImGui::Dummy(ImVec2(0, 20));
|
||||
ImGui::TextWrapped("Gang zone density:");
|
||||
@ -236,9 +246,11 @@ void Ped::Draw()
|
||||
ImGui::TextWrapped("You'll need ExGangWars plugin to display some turf colors");
|
||||
ImGui::Spacing();
|
||||
if (ImGui::Button("Download ExGangWars", Ui::GetSize(1)))
|
||||
{
|
||||
ShellExecute(NULL, "open", "https://gtaforums.com/topic/682194-extended-gang-wars/", NULL, NULL,
|
||||
SW_SHOWNORMAL);
|
||||
}
|
||||
}
|
||||
|
||||
ImGui::Spacing();
|
||||
ImGui::Separator();
|
||||
|
@ -280,7 +280,6 @@ int Vehicle::GetRandomTrainIdForModel(int model)
|
||||
void WarpPlayerIntoVehicle(CVehicle *pVeh, int seatId)
|
||||
{
|
||||
CPlayerPed *pPlayer = FindPlayerPed();
|
||||
|
||||
pPlayer->m_bInVehicle = true;
|
||||
pPlayer->m_pVehicle = pVeh;
|
||||
pPlayer->RegisterReference((CEntity**)&pPlayer->m_pVehicle);
|
||||
@ -288,6 +287,8 @@ void WarpPlayerIntoVehicle(CVehicle *pVeh, int seatId)
|
||||
pPlayer->RegisterReference((CEntity**)&pPlayer->m_pObjectiveVehicle);
|
||||
pPlayer->m_dwAction = ePedAction::Driving;
|
||||
pPlayer->m_dwObjective = OBJECTIVE_NO_OBJ;
|
||||
patch::Set<BYTE>(0x7838CD, 1); // player got in car flag
|
||||
Call<0x41D370>(pVeh); // CCarCtrl::RegisterVehicleOfInterest
|
||||
|
||||
if (pVeh->m_passengers[seatId])
|
||||
{
|
||||
@ -296,9 +297,7 @@ void WarpPlayerIntoVehicle(CVehicle *pVeh, int seatId)
|
||||
pVeh->m_passengers[seatId] = pPlayer;
|
||||
pVeh->RegisterReference((CEntity**)&pVeh->m_passengers[seatId]);
|
||||
|
||||
patch::Set<BYTE>(0x7838CD, 1); // player got in car flag
|
||||
Call<0x41D370>(pVeh); // CCarCtrl::RegisterVehicleOfInterest
|
||||
|
||||
// Set player position
|
||||
CWorld::Remove(pPlayer);
|
||||
pPlayer->m_placement.pos.x = pVeh->m_placement.pos.x;
|
||||
pPlayer->m_placement.pos.y = pVeh->m_placement.pos.y;
|
||||
|
Loading…
Reference in New Issue
Block a user