fix timing issues for csgo.

This commit is contained in:
hermansimensen 2021-03-24 02:11:51 +01:00
parent 1a267e37a9
commit 26d177c05b

View File

@ -214,7 +214,19 @@ public MRESReturn DHook_AddEventThree(Handle hParams)
DHookGetParamString(hParams, 1, event.target, 64);
DHookGetParamString(hParams, 2, event.targetInput, 64);
DHookGetParamObjectPtrString(hParams, 3, 0, ObjectValueType_String, event.variantValue, sizeof(event.variantValue));
event.delay = DHookGetParam(hParams, 4);
int ticks;
if(GetTickInterval() == 0.01)
{
ticks = RoundToNearest(view_as<float>(DHookGetParam(hParams, 4)) / GetTickInterval());
}
else
{
ticks = RoundToCeil(view_as<float>(DHookGetParam(hParams, 4)) / GetTickInterval());
}
event.delay = float(ticks);
event.activator = EntRefToEntIndex(EntityToBCompatRef(view_as<Address>(DHookGetParam(hParams, 5))));
event.caller = EntRefToEntIndex(EntityToBCompatRef(view_as<Address>(DHookGetParam(hParams, 6))));
event.outputID = DHookGetParam(hParams, 7);
@ -321,17 +333,17 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
{
event_t event;
g_aPlayerEvents[client].GetArray(i, event);
if(event.delay < GetTickInterval() * timescale)
event.delay -= 1.0 * timescale;
g_aPlayerEvents[client].SetArray(i, event);
if(event.delay <= -1.0 * timescale)
{
ServiceEvent(event);
g_aPlayerEvents[client].Erase(i);
i--;
}
else
{
event.delay -= GetTickInterval() * timescale;
g_aPlayerEvents[client].SetArray(i, event);
}
}
}