Feat ptr cache continued (#1227)

This commit is contained in:
Quentin E. / iDeath
2023-04-14 18:54:07 +02:00
committed by GitHub
parent be5bb50c87
commit 74c3931209
134 changed files with 2490 additions and 1624 deletions

View File

@ -32,7 +32,7 @@ namespace big
inline std::string get_ticket()
{
return g_pointers->m_sc_info->m_ticket;
return g_pointers->m_gta.m_sc_info->m_ticket;
}
};

View File

@ -85,8 +85,8 @@ namespace big
&screen_result.y);
if (success)
{
screen_result.x = static_cast<float>(*g_pointers->m_resolution_x) * screen_result.x;
screen_result.y = static_cast<float>(*g_pointers->m_resolution_y) * screen_result.y;
screen_result.x = static_cast<float>(*g_pointers->m_gta.m_resolution_x) * screen_result.x;
screen_result.y = static_cast<float>(*g_pointers->m_gta.m_resolution_y) * screen_result.y;
}
else
{
@ -193,7 +193,7 @@ namespace big
void context_menu_service::get_entity_closest_to_screen_center()
{
m_pointer = nullptr;
if (const auto replay = *g_pointers->m_replay_interface; replay)
if (const auto replay = *g_pointers->m_gta.m_replay_interface; replay)
{
const auto veh_interface = replay->m_vehicle_interface;
const auto ped_interface = replay->m_ped_interface;
@ -212,7 +212,7 @@ namespace big
const auto temp_pointer = entity.m_entity_ptr;
if (!temp_pointer || !temp_pointer->m_navigation)
continue;
const auto temp_handle = g_pointers->m_ptr_to_handle(temp_pointer);
const auto temp_handle = g_pointers->m_gta.m_ptr_to_handle(temp_pointer);
const auto pos = temp_pointer->m_navigation->get_position();
HUD::GET_HUD_SCREEN_POSITION_FROM_WORLD_POSITION(pos->x,
@ -245,7 +245,7 @@ namespace big
&& reinterpret_cast<CPed*>(m_pointer)->m_vehicle)
{
m_pointer = reinterpret_cast<CPed*>(m_pointer)->m_vehicle;
m_handle = g_pointers->m_ptr_to_handle(m_pointer);
m_handle = g_pointers->m_gta.m_ptr_to_handle(m_pointer);
}
fill_model_bounding_box_screen_space();
}

View File

@ -43,7 +43,7 @@ namespace big
SCRIPT::SET_SCRIPT_WITH_NAME_HASH_AS_NO_LONGER_NEEDED(RAGE_JOAAT("fm_race_creator"));
auto buffer = g_pointers->m_save_json_data(g_pointers->m_main_file_object, nullptr, "to save it to a file I guess?");
auto buffer = g_pointers->m_gta.m_save_json_data(g_pointers->m_gta.m_main_file_object, nullptr, "to save it to a file I guess?");
if (!buffer)
{
@ -69,8 +69,8 @@ namespace big
DATAFILE::DATAFILE_DELETE(0);
sCloudFile* cloud_file = nullptr;
g_pointers->m_load_cloud_file(&cloud_file, buffer.data(), buffer.length(), "to load it from a file I guess?");
g_pointers->m_set_as_active_cloud_file(g_pointers->m_main_file_object, &cloud_file);
g_pointers->m_gta.m_load_cloud_file(&cloud_file, buffer.data(), buffer.length(), "to load it from a file I guess?");
g_pointers->m_gta.m_set_as_active_cloud_file(g_pointers->m_gta.m_main_file_object, &cloud_file);
while (!SCRIPT::HAS_SCRIPT_WITH_NAME_HASH_LOADED(RAGE_JOAAT("fm_race_creator")))
{

View File

@ -23,8 +23,8 @@ namespace big
return false;
const auto rockstar_id = net_player->get_net_data()->m_gamer_handle.m_rockstar_id;
for (std::uint32_t i = 0; i < g_pointers->m_friend_registry->m_friend_count; i++)
if (rockstar_id == g_pointers->m_friend_registry->get(i)->m_rockstar_id)
for (std::uint32_t i = 0; i < g_pointers->m_gta.m_friend_registry->m_friend_count; i++)
if (rockstar_id == g_pointers->m_gta.m_friend_registry->get(i)->m_rockstar_id)
return true;
return false;
}

View File

@ -2,6 +2,14 @@
namespace big
{
cache_file::cache_file(file cache_file) :
m_cache_file(cache_file),
m_data(nullptr),
m_cache_version(0),
m_cache_header()
{
}
cache_file::cache_file(file cache_file, std::uint32_t cache_version) :
m_cache_file(cache_file),
m_data(nullptr),
@ -78,4 +86,9 @@ namespace big
m_cache_header.m_game_version = game_version;
m_cache_header.m_online_version = online_version;
}
}
void cache_file::set_cache_version(std::uint32_t cache_version)
{
m_cache_version = cache_version;
}
}

View File

@ -16,6 +16,12 @@ namespace big
class cache_file final
{
public:
/// <summary>
///
/// </summary>
/// <param name="cache_file">FileMgr file object</param>
cache_file(file cache_file);
/// <summary>
///
/// </summary>
@ -60,6 +66,8 @@ namespace big
/// <param name="online_version">Online Version</param>
void set_header_version(std::uint32_t game_version, float online_version);
void set_cache_version(std::uint32_t cache_version);
private:
file m_cache_file;
@ -68,4 +76,4 @@ namespace big
cache_header m_cache_header;
cache_data m_data;
};
}
}

View File

@ -62,7 +62,7 @@ namespace big
{
m_update_state = eGtaDataUpdateState::WAITING_FOR_SINGLE_PLAYER;
g_fiber_pool->queue_job([this] {
while (*g_pointers->m_game_state != eGameState::Playing)
while (*g_pointers->m_gta.m_game_state != eGameState::Playing)
{
script::get_current()->yield(100ms);
}
@ -70,7 +70,7 @@ namespace big
session::join_type(eSessionType::SOLO);
while (!*g_pointers->m_is_session_started)
while (!*g_pointers->m_gta.m_is_session_started)
{
script::get_current()->yield(100ms);
}

View File

@ -16,11 +16,11 @@ namespace big
{
std::vector<std::string> non_dlc_mounted_devices_names;
uint16_t mounted_devices_len = *g_pointers->m_fidevices_len;
uint16_t mounted_devices_len = *g_pointers->m_gta.m_fidevices_len;
if (mounted_devices_len)
{
auto devices_arr = *(uint64_t*)g_pointers->m_fidevices;
uint8_t** current_device_mount_name_ptr = *(unsigned __int8***)g_pointers->m_fidevices;
auto devices_arr = *(uint64_t*)g_pointers->m_gta.m_fidevices;
uint8_t** current_device_mount_name_ptr = *(unsigned __int8***)g_pointers->m_gta.m_fidevices;
auto device_i = 0;
while (true)
@ -56,9 +56,9 @@ namespace big
constexpr auto yield_increment = 80;
auto i = 1;
while (g_pointers->m_fipackfile_instances[i])
while (g_pointers->m_gta.m_fipackfile_instances[i])
{
auto* rpf = g_pointers->m_fipackfile_instances[i];
auto* rpf = g_pointers->m_gta.m_fipackfile_instances[i];
// its hard coded in the binary?
if (++i >= 3672)
@ -108,7 +108,7 @@ namespace big
cb(rpf_wrapper);
});
g_pointers->m_fipackfile_unmount(default_mount_name);
g_pointers->m_gta.m_fipackfile_unmount(default_mount_name);
}
}
else

View File

@ -71,7 +71,7 @@ namespace big
void hotkey_service::wndproc(eKeyState state, key_t key)
{
if (const auto chat_data = *g_pointers->m_chat_data; chat_data && (chat_data->m_chat_open || chat_data->m_timer_two))
if (const auto chat_data = *g_pointers->m_gta.m_chat_data; chat_data && (chat_data->m_chat_open || chat_data->m_timer_two))
return;
//command executer is opened

View File

@ -28,7 +28,7 @@ namespace big
return;
}
if (*g_pointers->m_is_session_started && gta_util::get_network_player_mgr()->m_local_net_player
if (*g_pointers->m_gta.m_is_session_started && gta_util::get_network_player_mgr()->m_local_net_player
&& gta_util::get_network_player_mgr()->m_local_net_player->m_player_info->m_ped)
{
scr_globals::globalplayer_bd.as<GlobalPlayerBD*>()->Entries[self::id].OrbitalBitset.Set(eOrbitalBitset::kOrbitalCannonActive);
@ -332,7 +332,7 @@ namespace big
if (ENTITY::IS_ENTITY_A_VEHICLE(ent))
{
const auto vehicle = reinterpret_cast<CVehicle*>(g_pointers->m_handle_to_ptr(ent));
const auto vehicle = reinterpret_cast<CVehicle*>(g_pointers->m_gta.m_handle_to_ptr(ent));
if (vehicle)
{
for (const auto& player : g_player_service->players() | std::ranges::views::values)
@ -362,7 +362,7 @@ namespace big
{
for (auto ped : g_player_service->players() | std::ranges::views::values)
{
if (ped && g_pointers->m_ptr_to_handle(ped->get_ped()) == ent)
if (ped && g_pointers->m_gta.m_ptr_to_handle(ped->get_ped()) == ent)
{
g_player_service->set_selected(ped);
}
@ -379,7 +379,7 @@ namespace big
Vector3 entpos = ENTITY::GET_ENTITY_COORDS(entity::get_entity_closest_to_middle_of_screen(), 0);
if (g_player_service->get_selected()->is_valid()
&&ENTITY::DOES_ENTITY_EXIST(g_pointers->m_ptr_to_handle(g_player_service->get_selected()->get_ped())))
&&ENTITY::DOES_ENTITY_EXIST(g_pointers->m_gta.m_ptr_to_handle(g_player_service->get_selected()->get_ped())))
{
toxic::blame_explode_coord(g_player_service->get_selected(), m_ground_pos, eExplosionTag::EXP_TAG_ORBITAL_CANNON, 1.f, TRUE, TRUE, 1.f);

View File

@ -43,7 +43,7 @@ namespace big
{
if (weapon.m_reward_ammo_hash != 0 || weapon.m_throwable)
{
g_pointers->m_give_pickup_rewards(targets, weapon.m_reward_ammo_hash);
g_pointers->m_gta.m_give_pickup_rewards(targets, weapon.m_reward_ammo_hash);
script::get_current()->yield(20ms);
}
}
@ -51,15 +51,15 @@ namespace big
void pickup_service::give_armour(const int targets) const
{
g_pointers->m_give_pickup_rewards(targets, RAGE_JOAAT("REWARD_ARMOUR"));
g_pointers->m_gta.m_give_pickup_rewards(targets, RAGE_JOAAT("REWARD_ARMOUR"));
script::get_current()->yield(20ms);
}
void pickup_service::give_health(const int targets) const
{
g_pointers->m_give_pickup_rewards(targets, RAGE_JOAAT("REWARD_HEALTH"));
g_pointers->m_gta.m_give_pickup_rewards(targets, RAGE_JOAAT("REWARD_HEALTH"));
script::get_current()->yield(20ms);
g_pointers->m_give_pickup_rewards(targets, RAGE_JOAAT("REWARD_HEALTH"));
g_pointers->m_gta.m_give_pickup_rewards(targets, RAGE_JOAAT("REWARD_HEALTH"));
script::get_current()->yield(20ms);
}
@ -69,12 +69,12 @@ namespace big
{
if (weapon.m_reward_hash != 0)
{
g_pointers->m_give_pickup_rewards(targets, weapon.m_reward_hash);
g_pointers->m_gta.m_give_pickup_rewards(targets, weapon.m_reward_hash);
script::get_current()->yield(20ms);
}
}
g_pointers->m_give_pickup_rewards(targets, RAGE_JOAAT("REWARD_PARACHUTE"));
g_pointers->m_gta.m_give_pickup_rewards(targets, RAGE_JOAAT("REWARD_PARACHUTE"));
script::get_current()->yield(20ms);
}
}

View File

@ -119,7 +119,7 @@ namespace big
bool success = false;
rage::rlTaskStatus state{};
if (g_pointers->m_start_get_session_by_gamer_handle(0, &player_handle, 1, &result, 1, &success, &state))
if (g_pointers->m_gta.m_start_get_session_by_gamer_handle(0, &player_handle, 1, &result, 1, &success, &state))
{
while (state.status == 1)
script::get_current()->yield();

View File

@ -89,7 +89,7 @@ namespace big
return get_net_data()->m_external_ip;
if (auto session_player = get_session_player())
if (auto peer = g_pointers->m_get_connection_peer(gta_util::get_network()->m_game_session_ptr->m_net_connection_mgr,
if (auto peer = g_pointers->m_gta.m_get_connection_peer(gta_util::get_network()->m_game_session_ptr->m_net_connection_mgr,
(int)get_session_player()->m_player_data.m_peer_id_2))
return netAddress{((netConnectionPeer*)peer)->m_external_ip};
@ -102,7 +102,7 @@ namespace big
return get_net_data()->m_external_port;
if (auto session_player = get_session_player())
if (auto peer = g_pointers->m_get_connection_peer(gta_util::get_network()->m_game_session_ptr->m_net_connection_mgr,
if (auto peer = g_pointers->m_gta.m_get_connection_peer(gta_util::get_network()->m_game_session_ptr->m_net_connection_mgr,
(int)get_session_player()->m_player_data.m_peer_id_2))
return ((netConnectionPeer*)peer)->m_external_port;

View File

@ -320,7 +320,7 @@ namespace big
const auto vehicle_rotation = ENTITY::GET_ENTITY_ROTATION(vehicle, 0);
bool has_collision = ENTITY::GET_ENTITY_COLLISION_DISABLED(object);
bool is_visible = ENTITY::IS_ENTITY_VISIBLE(object);
CObject* cobject = (CObject*)g_pointers->m_handle_to_ptr(vehicle);
CObject* cobject = (CObject*)g_pointers->m_gta.m_handle_to_ptr(vehicle);
bool is_invincible = misc::has_bit_set(&(int&)cobject->m_damage_bits, 8);
Vector3 rotation;
@ -335,7 +335,7 @@ namespace big
nlohmann::json persist_car_service::get_model_attachments(Vehicle vehicle, bool is_towed_vehicle)
{
const auto replay_interface = *g_pointers->m_replay_interface;
const auto replay_interface = *g_pointers->m_gta.m_replay_interface;
std::vector<nlohmann::json> attached_objects;
@ -346,7 +346,7 @@ namespace big
if (!object_ptr)
continue;
const auto object = g_pointers->m_ptr_to_handle(object_ptr);
const auto object = g_pointers->m_gta.m_ptr_to_handle(object_ptr);
if (!object)
break;
@ -365,7 +365,7 @@ namespace big
nlohmann::json persist_car_service::get_vehicle_attachents(Vehicle vehicle)
{
const auto replay_interface = *g_pointers->m_replay_interface;
const auto replay_interface = *g_pointers->m_gta.m_replay_interface;
const auto vehicle_interface = replay_interface->m_vehicle_interface;
@ -380,7 +380,7 @@ namespace big
if (!vehicle_ptr)
continue;
const auto object = g_pointers->m_ptr_to_handle(vehicle_ptr);
const auto object = g_pointers->m_gta.m_ptr_to_handle(vehicle_ptr);
if (!object)
break;
@ -445,7 +445,7 @@ namespace big
vehicle_json[pearlescent_color_key] = pearlescent_color;
bool has_collision = ENTITY::GET_ENTITY_COLLISION_DISABLED(vehicle);
bool is_visible = ENTITY::IS_ENTITY_VISIBLE(vehicle);
CVehicle* cvehicle = (CVehicle*)g_pointers->m_handle_to_ptr(vehicle);
CVehicle* cvehicle = (CVehicle*)g_pointers->m_gta.m_handle_to_ptr(vehicle);
bool is_invincible = misc::has_bit_set(&(int&)cvehicle->m_damage_bits, 8);
vehicle_json[has_collision_key] = !has_collision;
vehicle_json[is_visible_key] = is_visible;

View File

@ -73,7 +73,7 @@ namespace big
controlled_vehicle new_veh{};
new_veh.handle = veh;
new_veh.ptr = (CVehicle*)g_pointers->m_handle_to_ptr(veh);
new_veh.ptr = (CVehicle*)g_pointers->m_gta.m_handle_to_ptr(veh);
strcpy(new_veh.model_name, HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION(VEHICLE::GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(ENTITY::GET_ENTITY_MODEL(veh))));
new_veh.doorCount = VEHICLE::GET_NUMBER_OF_VEHICLE_DOORS(veh);
new_veh.lockstate = (eVehicleLockState)VEHICLE::GET_VEHICLE_DOOR_LOCK_STATUS(veh);
@ -377,7 +377,7 @@ namespace big
{
if (g_local_player->m_vehicle)
{
if (m_controlled_vehicle.handle != g_pointers->m_ptr_to_handle(g_local_player->m_vehicle))
if (m_controlled_vehicle.handle != g_pointers->m_gta.m_ptr_to_handle(g_local_player->m_vehicle))
m_controlled_vehicle = vehicle_control::update_vehicle(self::veh);
}
}