feat(self): add superman mode (#924)

This commit is contained in:
Johann 2023-02-09 19:17:10 +01:00 committed by GitHub
parent 335e9325b0
commit 94b1917796
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 63 additions and 7 deletions

View File

@ -0,0 +1,41 @@
#include "natives.hpp"
#include "backend/looped_command.hpp"
#include "gta/enums.hpp"
namespace big
{
class superman : looped_command
{
using looped_command::looped_command;
void apply_force(float x, float y, float z)
{
ENTITY::APPLY_FORCE_TO_ENTITY(self::ped, 1, x, y, z, 0, 0, 0, 0, true, true, true, false, true);
}
virtual void on_tick() override
{
if (PAD::IS_CONTROL_PRESSED(0, (int)ControllerInputs::INPUT_JUMP))
apply_force(0, 0, 10);
WEAPON::GIVE_DELAYED_WEAPON_TO_PED(self::ped, rage::joaat("GADGET_PARACHUTE"), 1, 1);
if (!ENTITY::IS_ENTITY_IN_AIR(self::ped) || PED::IS_PED_RAGDOLL(self::ped))
return;
if (PAD::IS_CONTROL_PRESSED(0, (int)ControllerInputs::INPUT_MOVE_UP_ONLY))
apply_force(3, 0, 0);
if (PAD::IS_CONTROL_PRESSED(0, (int)ControllerInputs::INPUT_MOVE_DOWN_ONLY))
apply_force(3, 6, 0);
if (PAD::IS_CONTROL_PRESSED(0, (int)ControllerInputs::INPUT_SPRINT))
apply_force(6, 0, 0);
}
virtual void on_enable() override
{
g_notification_service->push("Superman Controls", "Use the following keys to control the Superman mode:\n'W' / 'S' / 'SPACE' / 'SHIFT'.");
}
};
superman g_superman("superman", "Superman", "Fly like a superman..", g.self.superman);
}

View File

@ -4,6 +4,7 @@
#include "natives.hpp"
#include "script.hpp"
#include "windows.h"
#include "util/is_key_pressed.hpp"
struct key_state
{
@ -25,14 +26,9 @@ inline key_state right_signal_key{ 'L' };
inline key_state left_signal_key{ 'J' };
inline key_state hazzards_key{ 'K' };
bool is_key_pressed(int const v_key)
{
return GetAsyncKeyState(v_key) & 0x8000;
}
void update_key_state(key_state& key_last_tick)
{
if (is_key_pressed(key_last_tick.v_key))
if (big::is_key_pressed(key_last_tick.v_key))
{
switch (key_last_tick.state)
{

View File

@ -286,6 +286,7 @@ namespace big
bool auto_tp = false;
bool super_jump = false;
bool beast_jump = false;
bool superman = false;
// do not save below entries
bool dance_mode = false;
@ -295,7 +296,7 @@ namespace big
noclip, off_radar, super_run, no_collision, unlimited_oxygen, no_water_collision, wanted_level, god_mode, part_water,
proof_bullet, proof_fire, proof_collision, proof_melee, proof_explosion, proof_steam, proof_drown, proof_water,
proof_mask, hide_radar, hide_ammo, selected_hud_component, hud_components_states, force_show_hud_element,
force_show_hud, mobile_radio, fast_respawn, auto_tp, super_jump, beast_jump)
force_show_hud, mobile_radio, fast_respawn, auto_tp, super_jump, beast_jump, superman)
} self{};
struct session

View File

@ -0,0 +1,17 @@
#pragma once
#include "../pointers.hpp"
namespace big
{
inline bool is_key_pressed(std::uint16_t key)
{
if (GetForegroundWindow() == g_pointers->m_hwnd)
{
if (GetAsyncKeyState(key) & 0x8000)
{
return true;
}
}
return false;
}
}

View File

@ -56,6 +56,7 @@ namespace big
components::command_checkbox<"cleanloop">();
components::command_checkbox<"nocollision">();
components::command_checkbox<"mobileradio">();
components::command_checkbox<"superman">();
// TODO: fix this, causes a crash
// ImGui::Checkbox("DANCE_MODE"_T.data(), &g.self.dance_mode);