Fix session data
This commit is contained in:
parent
f772604bb2
commit
4d7f901371
@ -312,8 +312,8 @@ namespace network
|
|||||||
utils::hook::call(0x1403572B7, cl_dispatch_connectionless_packet_stub);
|
utils::hook::call(0x1403572B7, cl_dispatch_connectionless_packet_stub);
|
||||||
|
|
||||||
// handle xuid without secure connection
|
// handle xuid without secure connection
|
||||||
utils::hook::nop(0x140C53315, 2);
|
//utils::hook::nop(0x140C53315, 2);
|
||||||
utils::hook::nop(0x140C55EC7, 6);
|
//utils::hook::nop(0x140C55EC7, 6);
|
||||||
|
|
||||||
utils::hook::jump(game::NET_CompareAdr, net_compare_address);
|
utils::hook::jump(game::NET_CompareAdr, net_compare_address);
|
||||||
utils::hook::jump(game::NET_CompareBaseAdr, net_compare_address);
|
utils::hook::jump(game::NET_CompareBaseAdr, net_compare_address);
|
||||||
|
@ -460,8 +460,6 @@ namespace party
|
|||||||
memset(&*reinterpret_cast<__int64*>(0x144E3A490 + 8), 0, 0x78680ui64 - 8);
|
memset(&*reinterpret_cast<__int64*>(0x144E3A490 + 8), 0, 0x78680ui64 - 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
utils::hook::invoke<void>(0x140C55DF0); // SV_InitMP_SetXUIDConfigStrings
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset_mem_stuff_stub(utils::hook::assembler& a)
|
void reset_mem_stuff_stub(utils::hook::assembler& a)
|
||||||
@ -478,9 +476,7 @@ namespace party
|
|||||||
|
|
||||||
void send_user_info()
|
void send_user_info()
|
||||||
{
|
{
|
||||||
auto userinfostring = utils::hook::invoke<const char*>(0x1409B2850, 0); // CL_MainMP_GetUserInfoString
|
utils::hook::invoke<void>(0x1409B3EB0, 0); // CL_MainMP_SendUserInfoCmd
|
||||||
auto cmd = utils::string::va("userinfo \"%s\"", userinfostring);
|
|
||||||
utils::hook::invoke<void>(0x140341430, 0, cmd); // CL_Main_AddReliableCommand
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cl_initialize_gamestate_stub(int local_client_num)
|
void cl_initialize_gamestate_stub(int local_client_num)
|
||||||
@ -492,6 +488,23 @@ namespace party
|
|||||||
|
|
||||||
utils::hook::invoke<void>(0x1409B2FA0, local_client_num);
|
utils::hook::invoke<void>(0x1409B2FA0, local_client_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
utils::hook::detour sv_set_player_info_string_hook;
|
||||||
|
void sv_set_player_info_string_stub(int clientNum, const char* xuidString, const char* xnaddrString, const char* natTypeString, const char* npIdString, const char* partyIpString)
|
||||||
|
{
|
||||||
|
uint64_t xuid64{};
|
||||||
|
game::StringToXUID(xuidString, &xuid64);
|
||||||
|
const auto lobby = game::SV_MainMP_GetServerLobby();
|
||||||
|
if (game::Session_FindRegisteredUser(lobby, xuid64) == 0xFFFFFFFFui64)
|
||||||
|
{
|
||||||
|
const auto client = game::svs_clients[clientNum];
|
||||||
|
const auto privateSlot = clientNum < game::SV_GameMP_GetAgentCount();
|
||||||
|
game::Session_RegisterRemotePlayer(0, lobby, xuid64, privateSlot, clientNum, std::atoi(natTypeString), const_cast<char*>(xnaddrString), &client->remoteAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
console::info("Setting client %i XUID to %s\n", clientNum, xuidString);
|
||||||
|
sv_set_player_info_string_hook.invoke<void>(clientNum, xuidString, xnaddrString, natTypeString, npIdString, partyIpString);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void start_map(const std::string& mapname, bool dev)
|
void start_map(const std::string& mapname, bool dev)
|
||||||
@ -712,13 +725,7 @@ namespace party
|
|||||||
utils::hook::set<uint8_t>(0x140B5377E, 0xEB);
|
utils::hook::set<uint8_t>(0x140B5377E, 0xEB);
|
||||||
|
|
||||||
utils::hook::call(0x1409B70A1, cl_initialize_gamestate_stub);
|
utils::hook::call(0x1409B70A1, cl_initialize_gamestate_stub);
|
||||||
|
sv_set_player_info_string_hook.create(0x140C57360, sv_set_player_info_string_stub);
|
||||||
command::add("senduserinfo", []()
|
|
||||||
{
|
|
||||||
auto userinfostring = utils::hook::invoke<const char*>(0x1409B2850, 0); // CL_MainMP_GetUserInfoString
|
|
||||||
auto cmd = utils::string::va("userinfo \"%s\"", userinfostring);
|
|
||||||
utils::hook::invoke<void>(0x140341430, 0, cmd); // CL_Main_AddReliableCommand
|
|
||||||
});
|
|
||||||
|
|
||||||
command::add("map", [](const command::params& args)
|
command::add("map", [](const command::params& args)
|
||||||
{
|
{
|
||||||
|
@ -207,6 +207,10 @@ namespace game
|
|||||||
#define R_AddCmdDrawTextWithCursor(TXT, MC, F, UNK, X, Y, XS, YS, R, C, S, CP, CC) \
|
#define R_AddCmdDrawTextWithCursor(TXT, MC, F, UNK, X, Y, XS, YS, R, C, S, CP, CC) \
|
||||||
AddBaseDrawTextCmd(TXT, MC, F, game::R_GetFontHeight(F), X, Y, XS, YS, R, C, CP, CC, game::R_Font_GetLegacyFontStyle(S), 0, 0, 0, 0)
|
AddBaseDrawTextCmd(TXT, MC, F, game::R_GetFontHeight(F), X, Y, XS, YS, R, C, CP, CC, game::R_Font_GetLegacyFontStyle(S), 0, 0, 0, 0)
|
||||||
|
|
||||||
|
WEAK symbol<std::uint64_t(const SessionData* session, std::uint64_t xuid)> Session_FindRegisteredUser{ 0x140C72A00 };
|
||||||
|
WEAK symbol<std::uint64_t(int localControllerIndex, const SessionData* session, std::uint64_t xuid, bool privateSlot, int clientNum,
|
||||||
|
const int natType, char* xnaddr, const netadr_s* addr)> Session_RegisterRemotePlayer{ 0x140C733E0 };
|
||||||
|
|
||||||
WEAK symbol<std::uint64_t(const void* session, const int clientNum)> Session_GetXuid{ 0x140C72AB0 };
|
WEAK symbol<std::uint64_t(const void* session, const int clientNum)> Session_GetXuid{ 0x140C72AB0 };
|
||||||
WEAK symbol<bool(const SessionData* session, const int memberIndex)> Session_IsHost{ 0x140D9B470 };
|
WEAK symbol<bool(const SessionData* session, const int memberIndex)> Session_IsHost{ 0x140D9B470 };
|
||||||
|
|
||||||
@ -273,6 +277,7 @@ namespace game
|
|||||||
WEAK symbol<void()> SV_CmdsSP_FastRestart_f{ 0x140C12AF0 };
|
WEAK symbol<void()> SV_CmdsSP_FastRestart_f{ 0x140C12AF0 };
|
||||||
WEAK symbol<int (int clientNum)> SV_ClientMP_GetClientPing{ 0x140C507D0 };
|
WEAK symbol<int (int clientNum)> SV_ClientMP_GetClientPing{ 0x140C507D0 };
|
||||||
WEAK symbol<char* (int entNum)> SV_GameMP_GetGuid{ 0x140C12410 };
|
WEAK symbol<char* (int entNum)> SV_GameMP_GetGuid{ 0x140C12410 };
|
||||||
|
WEAK symbol<int ()> SV_GameMP_GetAgentCount{ 0x140C124A0 };
|
||||||
WEAK symbol<void()> SV_MainMP_KillLocalServer{ 0x140C58DF0 };
|
WEAK symbol<void()> SV_MainMP_KillLocalServer{ 0x140C58DF0 };
|
||||||
WEAK symbol<SessionData* ()> SV_MainMP_GetServerLobby{ 0x140C58DA0 };
|
WEAK symbol<SessionData* ()> SV_MainMP_GetServerLobby{ 0x140C58DA0 };
|
||||||
WEAK symbol<void(int clientNum, svscmd_type type, const char* text)> SV_GameSendServerCommand{ 0x140C54780 };
|
WEAK symbol<void(int clientNum, svscmd_type type, const char* text)> SV_GameSendServerCommand{ 0x140C54780 };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user