Add more spoofing options and added clang-format (#1020)
* feat(Spoofing): add spoofing * feat(Spoofing): prepare code for player attach * remove(PlayerAttach): isn't going to work due to netsync architecture * fix(GUI): fix scaling * feat(Project): add clang-format file * feat(Classes): update classes * fix(BlackHole): remove unnecessary cleanup * fix(Formatting): fix formatting for initializer lists * feat(clang-format): Set tab width and 1 space before comment Co-authored-by: Yimura <24669514+Yimura@users.noreply.github.com>
This commit is contained in:
@ -1,14 +1,16 @@
|
||||
#include "player.hpp"
|
||||
|
||||
#include "gta_util.hpp"
|
||||
#include "network/CNetGamePlayer.hpp"
|
||||
#include "services/friends/friends_service.hpp"
|
||||
#include "gta_util.hpp"
|
||||
|
||||
#include <network/Network.hpp>
|
||||
#include <network/RemoteGamerInfoMsg.hpp>
|
||||
|
||||
namespace big
|
||||
{
|
||||
player::player(CNetGamePlayer* net_game_player)
|
||||
: m_net_game_player(net_game_player)
|
||||
player::player(CNetGamePlayer* net_game_player) :
|
||||
m_net_game_player(net_game_player)
|
||||
{
|
||||
m_is_friend = friends_service::is_friend(net_game_player);
|
||||
}
|
||||
@ -71,7 +73,8 @@ namespace big
|
||||
{
|
||||
for (std::uint32_t i = 0; i < gta_util::get_network()->m_game_session_ptr->m_peer_count; i++)
|
||||
{
|
||||
if (gta_util::get_network()->m_game_session_ptr->m_peers[i]->m_peer_data.m_gamer_handle.m_rockstar_id == get_net_data()->m_gamer_handle.m_rockstar_id)
|
||||
if (gta_util::get_network()->m_game_session_ptr->m_peers[i]->m_peer_data.m_gamer_handle.m_rockstar_id
|
||||
== get_net_data()->m_gamer_handle.m_rockstar_id)
|
||||
{
|
||||
return gta_util::get_network()->m_game_session_ptr->m_peers[i];
|
||||
}
|
||||
@ -86,10 +89,11 @@ 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, (int)get_session_player()->m_player_data.m_peer_id_2))
|
||||
return netAddress{ ((netConnectionPeer*)peer)->m_external_ip };
|
||||
if (auto peer = g_pointers->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};
|
||||
|
||||
return { 0 };
|
||||
return {0};
|
||||
}
|
||||
|
||||
uint16_t player::get_port()
|
||||
@ -98,7 +102,8 @@ 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, (int)get_session_player()->m_player_data.m_peer_id_2))
|
||||
if (auto peer = g_pointers->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;
|
||||
|
||||
return 0;
|
||||
|
@ -28,9 +28,9 @@ namespace big
|
||||
explicit player(CNetGamePlayer* net_game_player);
|
||||
~player() = default;
|
||||
|
||||
player(const player&) = default;
|
||||
player(player&&) noexcept = default;
|
||||
player& operator=(const player&) = default;
|
||||
player(const player&) = default;
|
||||
player(player&&) noexcept = default;
|
||||
player& operator=(const player&) = default;
|
||||
player& operator=(player&&) noexcept = default;
|
||||
|
||||
float screen_position_x = -1.f;
|
||||
@ -46,7 +46,7 @@ namespace big
|
||||
[[nodiscard]] class rage::snPeer* get_session_peer();
|
||||
[[nodiscard]] netAddress get_ip_address();
|
||||
[[nodiscard]] uint16_t get_port();
|
||||
|
||||
|
||||
[[nodiscard]] uint8_t id() const;
|
||||
|
||||
[[nodiscard]] bool is_friend() const;
|
||||
@ -55,28 +55,28 @@ namespace big
|
||||
|
||||
std::optional<CommandAccessLevel> command_access_level = std::nullopt;
|
||||
|
||||
bool off_radar = false;
|
||||
bool off_radar = false;
|
||||
bool never_wanted = false;
|
||||
bool semi_godmode = false;
|
||||
|
||||
bool kill_loop = false;
|
||||
bool explosion_loop = false;
|
||||
bool freeze_loop = false;
|
||||
bool ragdoll_loop = false;
|
||||
bool kill_loop = false;
|
||||
bool explosion_loop = false;
|
||||
bool freeze_loop = false;
|
||||
bool ragdoll_loop = false;
|
||||
bool rotate_cam_loop = false;
|
||||
|
||||
rate_limiter m_host_migration_rate_limit{ 2s, 15 };
|
||||
rate_limiter m_play_sound_rate_limit{ 1s, 10 };
|
||||
rate_limiter m_invites_rate_limit{ 10s, 2 };
|
||||
rate_limiter m_host_migration_rate_limit{2s, 15};
|
||||
rate_limiter m_play_sound_rate_limit{1s, 10};
|
||||
rate_limiter m_invites_rate_limit{10s, 2};
|
||||
int m_num_spawned_permanent_vehicles = 0;
|
||||
|
||||
bool m_block_permanent_vehicles = false;
|
||||
|
||||
bool exposed_desync_protection = false;
|
||||
bool is_modder = false;
|
||||
bool block_join = false;
|
||||
int block_join_reason = 0;
|
||||
bool is_spammer = false;
|
||||
bool is_modder = false;
|
||||
bool block_join = false;
|
||||
int block_join_reason = 0;
|
||||
bool is_spammer = false;
|
||||
|
||||
std::optional<std::uint32_t> player_time_value;
|
||||
std::optional<std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds>> player_time_value_received_time;
|
||||
@ -87,6 +87,5 @@ namespace big
|
||||
bool equals(const CNetGamePlayer* net_game_player) const;
|
||||
|
||||
[[nodiscard]] std::string to_lowercase_identifier() const;
|
||||
|
||||
};
|
||||
}
|
@ -1,11 +1,14 @@
|
||||
#include "gta_util.hpp"
|
||||
#include "player_service.hpp"
|
||||
|
||||
#include "gta_util.hpp"
|
||||
|
||||
#include <network/CNetworkPlayerMgr.hpp>
|
||||
|
||||
namespace big
|
||||
{
|
||||
player_service::player_service()
|
||||
: m_self(), m_selected_player(m_dummy)
|
||||
player_service::player_service() :
|
||||
m_self(),
|
||||
m_selected_player(m_dummy)
|
||||
{
|
||||
g_player_service = this;
|
||||
|
||||
@ -65,7 +68,7 @@ namespace big
|
||||
{
|
||||
if (!m_self_ptr || !m_self_ptr->equals(*m_self))
|
||||
{
|
||||
m_self_ptr = std::make_shared<player>(*m_self);
|
||||
m_self_ptr = std::make_shared<player>(*m_self);
|
||||
m_self_ptr->command_access_level = CommandAccessLevel::ADMIN;
|
||||
}
|
||||
|
||||
@ -74,24 +77,27 @@ namespace big
|
||||
|
||||
void player_service::player_join(CNetGamePlayer* net_game_player)
|
||||
{
|
||||
if (net_game_player == nullptr || net_game_player == *m_self) return;
|
||||
if (net_game_player == nullptr || net_game_player == *m_self)
|
||||
return;
|
||||
|
||||
auto plyr = std::make_shared<player>(net_game_player);
|
||||
m_players.insert({
|
||||
plyr->get_name(),
|
||||
std::move(plyr)
|
||||
});
|
||||
m_players.insert({plyr->get_name(), std::move(plyr)});
|
||||
}
|
||||
|
||||
void player_service::player_leave(CNetGamePlayer* net_game_player)
|
||||
{
|
||||
if (net_game_player == nullptr)
|
||||
if (net_game_player == nullptr)
|
||||
return;
|
||||
|
||||
if (m_selected_player && m_selected_player->equals(net_game_player))
|
||||
m_selected_player = m_dummy;
|
||||
|
||||
if (auto it = std::find_if(m_players.begin(), m_players.end(), [net_game_player](const auto& p) { return p.second->id() == net_game_player->m_player_id; }); it != m_players.end())
|
||||
if (auto it = std::find_if(m_players.begin(),
|
||||
m_players.end(),
|
||||
[net_game_player](const auto& p) {
|
||||
return p.second->id() == net_game_player->m_player_id;
|
||||
});
|
||||
it != m_players.end())
|
||||
{
|
||||
if (m_player_to_use_end_session_kick == it->second)
|
||||
m_player_to_use_end_session_kick = std::nullopt;
|
||||
|
@ -5,9 +5,9 @@ namespace big
|
||||
{
|
||||
class player;
|
||||
|
||||
using player_ptr = std::shared_ptr<player>;
|
||||
using player_ptr = std::shared_ptr<player>;
|
||||
using player_entry = std::pair<std::string, player_ptr>;
|
||||
using players = std::multimap<std::string, player_ptr>;
|
||||
using players = std::multimap<std::string, player_ptr>;
|
||||
|
||||
class player_service final
|
||||
{
|
||||
@ -19,13 +19,14 @@ namespace big
|
||||
|
||||
player_ptr m_dummy = std::make_shared<player>(nullptr);
|
||||
player_ptr m_selected_player;
|
||||
|
||||
public:
|
||||
player_service();
|
||||
~player_service();
|
||||
|
||||
player_service(const player_service&) = delete;
|
||||
player_service(player_service&&) noexcept = delete;
|
||||
player_service& operator=(const player_service&) = delete;
|
||||
player_service(const player_service&) = delete;
|
||||
player_service(player_service&&) noexcept = delete;
|
||||
player_service& operator=(const player_service&) = delete;
|
||||
player_service& operator=(player_service&&) noexcept = delete;
|
||||
|
||||
void do_cleanup();
|
||||
@ -41,15 +42,20 @@ namespace big
|
||||
void player_leave(CNetGamePlayer* net_game_player);
|
||||
|
||||
players& players()
|
||||
{ return m_players; }
|
||||
{
|
||||
return m_players;
|
||||
}
|
||||
|
||||
void iterate(const std::function< void(const player_entry &entry)> func)
|
||||
{ for (const auto &iter : m_players) func(iter); }
|
||||
void iterate(const std::function<void(const player_entry& entry)> func)
|
||||
{
|
||||
for (const auto& iter : m_players)
|
||||
func(iter);
|
||||
}
|
||||
|
||||
void set_selected(player_ptr plyr);
|
||||
|
||||
std::optional<player_ptr> m_player_to_use_end_session_kick = std::nullopt;
|
||||
std::optional<player_ptr> m_player_to_use_complaint_kick = std::nullopt;
|
||||
std::optional<player_ptr> m_player_to_use_complaint_kick = std::nullopt;
|
||||
};
|
||||
|
||||
inline player_service* g_player_service{};
|
||||
|
@ -8,10 +8,11 @@ namespace big
|
||||
std::chrono::milliseconds m_time_period;
|
||||
std::chrono::system_clock::time_point m_last_event_time{};
|
||||
std::uint32_t m_num_attempts_allowed = 0;
|
||||
|
||||
public:
|
||||
rate_limiter(std::chrono::milliseconds time_period, std::uint32_t num_allowed_attempts) :
|
||||
m_attempts_allowed_in_time_period(num_allowed_attempts),
|
||||
m_time_period(time_period)
|
||||
m_attempts_allowed_in_time_period(num_allowed_attempts),
|
||||
m_time_period(time_period)
|
||||
{
|
||||
}
|
||||
|
||||
@ -25,7 +26,7 @@ namespace big
|
||||
}
|
||||
else
|
||||
{
|
||||
m_last_event_time = std::chrono::system_clock::now();
|
||||
m_last_event_time = std::chrono::system_clock::now();
|
||||
m_num_attempts_allowed = 1;
|
||||
}
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user