Feat ptr cache continued (#1227)
This commit is contained in:

committed by
GitHub

parent
be5bb50c87
commit
74c3931209
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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")))
|
||||
{
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user