[Dedicated] Fix frame handler

This commit is contained in:
momo5502 2016-12-12 21:53:54 +01:00
parent 9355b4b7c8
commit f1d90af0d7
4 changed files with 22 additions and 9 deletions

View File

@ -244,7 +244,7 @@ namespace Components
Dedicated::FrameSignal.connect(callback); Dedicated::FrameSignal.connect(callback);
} }
void Dedicated::FrameStub() void Dedicated::FrameHandler()
{ {
auto copy = Dedicated::FrameSignal; auto copy = Dedicated::FrameSignal;
copy(); copy();
@ -252,8 +252,19 @@ namespace Components
copy = Dedicated::FrameOnceSignal; copy = Dedicated::FrameOnceSignal;
Dedicated::FrameOnceSignal.clear(); Dedicated::FrameOnceSignal.clear();
copy(); copy();
}
Utils::Hook::Call<void()>(0x5A8E80)(); __declspec(naked) void Dedicated::FrameStub()
{
__asm
{
pushad
call Dedicated::FrameHandler
popad
push 5A8E80h
retn
}
} }
Dedicated::Dedicated() Dedicated::Dedicated()

View File

@ -26,6 +26,7 @@ namespace Components
static bool SendChat; static bool SendChat;
static void MapRotate(); static void MapRotate();
static void FrameHandler();
static void FrameStub(); static void FrameStub();
static void InitDedicatedServer(); static void InitDedicatedServer();

View File

@ -326,7 +326,7 @@ namespace Components
// increase max port binding attempts from 10 to 100 // increase max port binding attempts from 10 to 100
Utils::Hook::Set<BYTE>(0x4FD48A, 100); Utils::Hook::Set<BYTE>(0x4FD48A, 100);
// increase cl_maxpackets limit to 120 // increase cl_maxpackets limit
Utils::Hook::Set<BYTE>(0x4050A1, 125); Utils::Hook::Set<BYTE>(0x4050A1, 125);
// Parse port as short in Net_AddrToString // Parse port as short in Net_AddrToString

View File

@ -68,7 +68,7 @@ namespace Components
SlowMotion::Delay = delay; SlowMotion::Delay = delay;
// set snapshot num to 1 behind (T6 does this, why shouldn't we?) // set snapshot num to 1 behind (T6 does this, why shouldn't we?)
for (int i = 0; i < *Game::svs_numclients; i++) for (int i = 0; i < *Game::svs_numclients; ++i)
{ {
Game::svs_clients[i].snapNum = (*reinterpret_cast<DWORD*>(0x31D9384)) - 1; Game::svs_clients[i].snapNum = (*reinterpret_cast<DWORD*>(0x31D9384)) - 1;
} }
@ -76,10 +76,11 @@ namespace Components
SlowMotion::SlowMotion() SlowMotion::SlowMotion()
{ {
if (!Dedicated::IsEnabled()) return; if (Dedicated::IsEnabled())
{
SlowMotion::Delay = 0; SlowMotion::Delay = 0;
Utils::Hook(0x5F5FF2, SlowMotion::SetSlowMotion, HOOK_JUMP).install()->quick(); Utils::Hook(0x5F5FF2, SlowMotion::SetSlowMotion, HOOK_JUMP).install()->quick();
Utils::Hook(0x60B38A, SlowMotion::ApplySlowMotionStub, HOOK_CALL).install()->quick(); Utils::Hook(0x60B38A, SlowMotion::ApplySlowMotionStub, HOOK_CALL).install()->quick();
}
} }
} }