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);
|
||||
|
||||
// handle xuid without secure connection
|
||||
utils::hook::nop(0x140C53315, 2);
|
||||
utils::hook::nop(0x140C55EC7, 6);
|
||||
//utils::hook::nop(0x140C53315, 2);
|
||||
//utils::hook::nop(0x140C55EC7, 6);
|
||||
|
||||
utils::hook::jump(game::NET_CompareAdr, 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);
|
||||
}
|
||||
}
|
||||
|
||||
utils::hook::invoke<void>(0x140C55DF0); // SV_InitMP_SetXUIDConfigStrings
|
||||
}
|
||||
|
||||
void reset_mem_stuff_stub(utils::hook::assembler& a)
|
||||
@ -478,9 +476,7 @@ namespace party
|
||||
|
||||
void send_user_info()
|
||||
{
|
||||
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
|
||||
utils::hook::invoke<void>(0x1409B3EB0, 0); // CL_MainMP_SendUserInfoCmd
|
||||
}
|
||||
|
||||
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::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)
|
||||
@ -712,13 +725,7 @@ namespace party
|
||||
utils::hook::set<uint8_t>(0x140B5377E, 0xEB);
|
||||
|
||||
utils::hook::call(0x1409B70A1, cl_initialize_gamestate_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
|
||||
});
|
||||
sv_set_player_info_string_hook.create(0x140C57360, sv_set_player_info_string_stub);
|
||||
|
||||
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) \
|
||||
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<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<int (int clientNum)> SV_ClientMP_GetClientPing{ 0x140C507D0 };
|
||||
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<SessionData* ()> SV_MainMP_GetServerLobby{ 0x140C58DA0 };
|
||||
WEAK symbol<void(int clientNum, svscmd_type type, const char* text)> SV_GameSendServerCommand{ 0x140C54780 };
|
||||
|
Loading…
x
Reference in New Issue
Block a user