Dispatch connect packet in the server thread
This commit is contained in:
parent
4b1808c331
commit
c29d9e5806
@ -196,7 +196,10 @@ namespace auth
|
|||||||
std::string final_packet{};
|
std::string final_packet{};
|
||||||
if (game::fragment_handler::handle(target, buffer, final_packet))
|
if (game::fragment_handler::handle(target, buffer, final_packet))
|
||||||
{
|
{
|
||||||
dispatch_connect_packet(target, final_packet);
|
scheduler::once([t = target, p = std::move(final_packet)]
|
||||||
|
{
|
||||||
|
dispatch_connect_packet(t, p);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,6 @@ namespace scheduler
|
|||||||
task_pipeline pipelines[pipeline::count];
|
task_pipeline pipelines[pipeline::count];
|
||||||
|
|
||||||
utils::hook::detour r_end_frame_hook;
|
utils::hook::detour r_end_frame_hook;
|
||||||
utils::hook::detour g_run_frame_hook;
|
|
||||||
utils::hook::detour main_frame_hook;
|
utils::hook::detour main_frame_hook;
|
||||||
|
|
||||||
|
|
||||||
@ -98,9 +97,9 @@ namespace scheduler
|
|||||||
r_end_frame_hook.invoke<void>();
|
r_end_frame_hook.invoke<void>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void server_frame_stub()
|
void g_clear_vehicle_inputs_stub()
|
||||||
{
|
{
|
||||||
g_run_frame_hook.invoke<void>();
|
game::G_ClearVehicleInputs();
|
||||||
execute(pipeline::server);
|
execute(pipeline::server);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,12 +167,14 @@ namespace scheduler
|
|||||||
{
|
{
|
||||||
if (!game::is_server())
|
if (!game::is_server())
|
||||||
{
|
{
|
||||||
r_end_frame_hook.create(0x142272B00_g, r_end_frame_stub);
|
|
||||||
// some func called before R_EndFrame, maybe SND_EndFrame?
|
// some func called before R_EndFrame, maybe SND_EndFrame?
|
||||||
|
r_end_frame_hook.create(0x142272B00_g, r_end_frame_stub);
|
||||||
}
|
}
|
||||||
|
|
||||||
main_frame_hook.create(game::select(0x1420F8E00, 0x1405020E0), main_frame_stub);
|
|
||||||
// Com_Frame_Try_Block_Function
|
// Com_Frame_Try_Block_Function
|
||||||
|
main_frame_hook.create(game::select(0x1420F8E00, 0x1405020E0), main_frame_stub);
|
||||||
|
|
||||||
|
utils::hook::call(game::select(0x14225522E, 0x140538427), g_clear_vehicle_inputs_stub);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pre_destroy() override
|
void pre_destroy() override
|
||||||
|
@ -75,6 +75,9 @@ namespace game
|
|||||||
WEAK symbol<bool(const char* zoneName, int source)> DB_FileExists{0x141420B40};
|
WEAK symbol<bool(const char* zoneName, int source)> DB_FileExists{0x141420B40};
|
||||||
WEAK symbol<void()> DB_ReleaseXAssets{0x1414247C0};
|
WEAK symbol<void()> DB_ReleaseXAssets{0x1414247C0};
|
||||||
|
|
||||||
|
// G
|
||||||
|
WEAK symbol<void()> G_ClearVehicleInputs{0x1423812E0, 0x1405C1200};
|
||||||
|
|
||||||
// Live
|
// Live
|
||||||
WEAK symbol<bool(uint64_t, int*, bool)> Live_GetConnectivityInformation{0x141E0C380};
|
WEAK symbol<bool(uint64_t, int*, bool)> Live_GetConnectivityInformation{0x141E0C380};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user