Force relay connections (#1813)
* feat(protections): add force relay servers * feat(network): add support for non-direct connections * feat(info): add helpful tooltip to prevent unnecessary bug reports
This commit is contained in:
@ -83,17 +83,30 @@ namespace big
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
netAddress player::get_ip_address()
|
||||
rage::netConnectionPeer* player::get_connection_peer()
|
||||
{
|
||||
if (auto session_player = get_session_player())
|
||||
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 peer;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::optional<netAddress> player::get_ip_address()
|
||||
{
|
||||
if (this == g_player_service->get_self().get() && get_net_data())
|
||||
return get_net_data()->m_external_ip;
|
||||
|
||||
if (auto session_player = get_session_player())
|
||||
if (auto peer = g_pointers->m_gta.m_get_peer_address(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{((rage::netPeerAddress*)peer)->m_external_ip};
|
||||
if (auto peer = get_connection_peer())
|
||||
{
|
||||
if (peer->m_peer_address.m_connection_type != 1)
|
||||
return std::nullopt;
|
||||
|
||||
return {0};
|
||||
return peer->m_peer_address.m_external_ip;
|
||||
}
|
||||
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
uint16_t player::get_port()
|
||||
@ -101,10 +114,13 @@ namespace big
|
||||
if (this == g_player_service->get_self().get() && get_net_data())
|
||||
return get_net_data()->m_external_port;
|
||||
|
||||
if (auto session_player = get_session_player())
|
||||
if (auto peer = g_pointers->m_gta.m_get_peer_address(gta_util::get_network()->m_game_session_ptr->m_net_connection_mgr,
|
||||
(int)get_session_player()->m_player_data.m_peer_id_2))
|
||||
return ((rage::netPeerAddress*)peer)->m_external_port;
|
||||
if (auto peer = get_connection_peer())
|
||||
{
|
||||
if (peer->m_peer_address.m_connection_type != 1)
|
||||
return 0;
|
||||
|
||||
return peer->m_peer_address.m_external_port;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ namespace rage
|
||||
class snPlayer;
|
||||
class snPeer;
|
||||
class rlGamerInfo;
|
||||
class netConnectionPeer;
|
||||
}
|
||||
|
||||
namespace big
|
||||
@ -44,7 +45,8 @@ namespace big
|
||||
[[nodiscard]] CPlayerInfo* get_player_info() const;
|
||||
[[nodiscard]] class rage::snPlayer* get_session_player();
|
||||
[[nodiscard]] class rage::snPeer* get_session_peer();
|
||||
[[nodiscard]] netAddress get_ip_address();
|
||||
[[nodiscard]] class rage::netConnectionPeer* get_connection_peer();
|
||||
[[nodiscard]] std::optional<netAddress> get_ip_address();
|
||||
[[nodiscard]] uint16_t get_port();
|
||||
|
||||
[[nodiscard]] uint8_t id() const;
|
||||
|
Reference in New Issue
Block a user