LagCompensation: stable
This commit is contained in:
parent
7efd502829
commit
699deab40a
@ -4,12 +4,6 @@
|
|||||||
{
|
{
|
||||||
"Signatures"
|
"Signatures"
|
||||||
{
|
{
|
||||||
"CBaseEntity::PhysicsTouchTriggers"
|
|
||||||
{
|
|
||||||
"library" "server"
|
|
||||||
"linux" "@_ZN11CBaseEntity20PhysicsTouchTriggersEPK6Vector"
|
|
||||||
}
|
|
||||||
|
|
||||||
"::UTIL_Remove"
|
"::UTIL_Remove"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
@ -22,12 +16,6 @@
|
|||||||
"linux" "@_ZN12CCSGameRules12RestartRoundEv"
|
"linux" "@_ZN12CCSGameRules12RestartRoundEv"
|
||||||
}
|
}
|
||||||
|
|
||||||
"CBaseEntity::InvalidatePhysicsRecursive"
|
|
||||||
{
|
|
||||||
"library" "server"
|
|
||||||
"linux" "@_ZN11CBaseEntity26InvalidatePhysicsRecursiveEi"
|
|
||||||
}
|
|
||||||
|
|
||||||
"GetAbsOrigin"
|
"GetAbsOrigin"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
@ -40,21 +28,6 @@
|
|||||||
"linux" "@_ZN11CBaseEntity12SetAbsOriginERK6Vector"
|
"linux" "@_ZN11CBaseEntity12SetAbsOriginERK6Vector"
|
||||||
}
|
}
|
||||||
|
|
||||||
// CBaseEntity::GetAbsAngles is inlined
|
|
||||||
// so we use CBaseEntity::EyeAngles
|
|
||||||
// which does -> return GetAbsAngles();
|
|
||||||
"GetAbsAngles"
|
|
||||||
{
|
|
||||||
"library" "server"
|
|
||||||
"linux" "@_ZN11CBaseEntity9EyeAnglesEv"
|
|
||||||
}
|
|
||||||
|
|
||||||
"SetAbsAngles"
|
|
||||||
{
|
|
||||||
"library" "server"
|
|
||||||
"linux" "@_ZN11CBaseEntity12SetAbsAnglesERK6QAngle"
|
|
||||||
}
|
|
||||||
|
|
||||||
"SetLocalAngles"
|
"SetLocalAngles"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
@ -64,21 +37,6 @@
|
|||||||
|
|
||||||
"Functions"
|
"Functions"
|
||||||
{
|
{
|
||||||
"CBaseEntity__PhysicsTouchTriggers"
|
|
||||||
{
|
|
||||||
"signature" "CBaseEntity::PhysicsTouchTriggers"
|
|
||||||
"callconv" "thiscall"
|
|
||||||
"return" "void"
|
|
||||||
"this" "entity"
|
|
||||||
"arguments"
|
|
||||||
{
|
|
||||||
"pPrevAbsOrigin"
|
|
||||||
{
|
|
||||||
"type" "vectorptr"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
"UTIL_Remove"
|
"UTIL_Remove"
|
||||||
{
|
{
|
||||||
"signature" "::UTIL_Remove"
|
"signature" "::UTIL_Remove"
|
||||||
@ -100,21 +58,6 @@
|
|||||||
"return" "void"
|
"return" "void"
|
||||||
"this" "ignore"
|
"this" "ignore"
|
||||||
}
|
}
|
||||||
|
|
||||||
"CBaseEntity__InvalidatePhysicsRecursive"
|
|
||||||
{
|
|
||||||
"signature" "CBaseEntity::InvalidatePhysicsRecursive"
|
|
||||||
"callconv" "thiscall"
|
|
||||||
"return" "void"
|
|
||||||
"this" "entity"
|
|
||||||
"arguments"
|
|
||||||
{
|
|
||||||
"nChangeFlags"
|
|
||||||
{
|
|
||||||
"type" "int"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ public Plugin myinfo =
|
|||||||
name = "LagCompensation",
|
name = "LagCompensation",
|
||||||
author = "BotoX",
|
author = "BotoX",
|
||||||
description = "",
|
description = "",
|
||||||
version = "0.0",
|
version = "0.1",
|
||||||
url = ""
|
url = ""
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -51,7 +51,6 @@ EntityLagData g_aEntityLagData[MAX_ENTITIES];
|
|||||||
int g_iNumEntities = 0;
|
int g_iNumEntities = 0;
|
||||||
bool g_bCleaningUp = false;
|
bool g_bCleaningUp = false;
|
||||||
|
|
||||||
Handle g_hPhysicsTouchTriggers;
|
|
||||||
Handle g_hGetAbsOrigin;
|
Handle g_hGetAbsOrigin;
|
||||||
Handle g_hSetAbsOrigin;
|
Handle g_hSetAbsOrigin;
|
||||||
Handle g_hSetLocalAngles;
|
Handle g_hSetLocalAngles;
|
||||||
@ -68,16 +67,6 @@ public void OnPluginStart()
|
|||||||
if(!hGameData)
|
if(!hGameData)
|
||||||
SetFailState("Failed to load LagCompensation gamedata.");
|
SetFailState("Failed to load LagCompensation gamedata.");
|
||||||
|
|
||||||
// CBaseEntity::PhysicsTouchTriggers
|
|
||||||
StartPrepSDKCall(SDKCall_Entity);
|
|
||||||
if(!PrepSDKCall_SetFromConf(hGameData, SDKConf_Signature, "CBaseEntity::PhysicsTouchTriggers"))
|
|
||||||
{
|
|
||||||
delete hGameData;
|
|
||||||
SetFailState("PrepSDKCall_SetFromConf(hGameData, SDKConf_Signature, \"CBaseEntity::PhysicsTouchTriggers\") failed!");
|
|
||||||
}
|
|
||||||
PrepSDKCall_AddParameter(SDKType_Vector, SDKPass_ByRef);
|
|
||||||
g_hPhysicsTouchTriggers = EndPrepSDKCall();
|
|
||||||
|
|
||||||
// CBaseEntity::GetAbsOrigin
|
// CBaseEntity::GetAbsOrigin
|
||||||
StartPrepSDKCall(SDKCall_Entity);
|
StartPrepSDKCall(SDKCall_Entity);
|
||||||
if(!PrepSDKCall_SetFromConf(hGameData, SDKConf_Signature, "GetAbsOrigin"))
|
if(!PrepSDKCall_SetFromConf(hGameData, SDKConf_Signature, "GetAbsOrigin"))
|
||||||
@ -426,7 +415,7 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
|||||||
if(iRecordIndex < 0)
|
if(iRecordIndex < 0)
|
||||||
iRecordIndex += MAX_RECORDS;
|
iRecordIndex += MAX_RECORDS;
|
||||||
|
|
||||||
RestoreEntityFromRecord(g_aEntityLagData[i].iEntity, client, g_aaLagRecords[i][iRecordIndex]);
|
RestoreEntityFromRecord(g_aEntityLagData[i].iEntity, g_aaLagRecords[i][iRecordIndex]);
|
||||||
g_aEntityLagData[i].bRestore = !g_aEntityLagData[i].iDeleted;
|
g_aEntityLagData[i].bRestore = !g_aEntityLagData[i].iDeleted;
|
||||||
|
|
||||||
#if defined DEBUG
|
#if defined DEBUG
|
||||||
@ -451,7 +440,7 @@ public void OnPostPlayerThinkFunctions()
|
|||||||
if(!g_aEntityLagData[i].bRestore)
|
if(!g_aEntityLagData[i].bRestore)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
RestoreEntityFromRecord(g_aEntityLagData[i].iEntity, 0, g_aEntityLagData[i].RestoreData);
|
RestoreEntityFromRecord(g_aEntityLagData[i].iEntity, g_aEntityLagData[i].RestoreData);
|
||||||
g_aEntityLagData[i].bRestore = false;
|
g_aEntityLagData[i].bRestore = false;
|
||||||
|
|
||||||
#if defined DEBUG
|
#if defined DEBUG
|
||||||
@ -562,17 +551,11 @@ void RecordDataIntoRecord(int iEntity, LagRecord Record)
|
|||||||
Record.flSimulationTime = GetEntPropFloat(iEntity, Prop_Data, "m_flSimulationTime");
|
Record.flSimulationTime = GetEntPropFloat(iEntity, Prop_Data, "m_flSimulationTime");
|
||||||
}
|
}
|
||||||
|
|
||||||
void RestoreEntityFromRecord(int iEntity, int iFilter, LagRecord Record)
|
void RestoreEntityFromRecord(int iEntity, LagRecord Record)
|
||||||
{
|
{
|
||||||
FilterTriggerMoved(iFilter);
|
|
||||||
//BlockSolidMoved(iEntity);
|
|
||||||
|
|
||||||
SDKCall(g_hSetLocalAngles, iEntity, Record.vecAngles);
|
SDKCall(g_hSetLocalAngles, iEntity, Record.vecAngles);
|
||||||
SDKCall(g_hSetAbsOrigin, iEntity, Record.vecOrigin);
|
SDKCall(g_hSetAbsOrigin, iEntity, Record.vecOrigin);
|
||||||
SetEntPropFloat(iEntity, Prop_Data, "m_flSimulationTime", Record.flSimulationTime);
|
SetEntPropFloat(iEntity, Prop_Data, "m_flSimulationTime", Record.flSimulationTime);
|
||||||
|
|
||||||
//BlockSolidMoved(-1);
|
|
||||||
FilterTriggerMoved(-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AddEntityForLagCompensation(int iEntity)
|
bool AddEntityForLagCompensation(int iEntity)
|
||||||
@ -581,7 +564,18 @@ bool AddEntityForLagCompensation(int iEntity)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
if(g_iNumEntities == MAX_ENTITIES)
|
if(g_iNumEntities == MAX_ENTITIES)
|
||||||
|
{
|
||||||
|
char sClassname[64];
|
||||||
|
GetEntityClassname(iEntity, sClassname, sizeof(sClassname));
|
||||||
|
|
||||||
|
char sTargetname[64];
|
||||||
|
GetEntPropString(iEntity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname));
|
||||||
|
|
||||||
|
int iHammerID = GetEntProp(iEntity, Prop_Data, "m_iHammerID");
|
||||||
|
|
||||||
|
PrintToBoth("[%d] OUT OF LAGCOMP SLOTS entity %d (%s)\"%s\"(#%d)", GetGameTickCount(), iEntity, sClassname, sTargetname, iHammerID);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
for(int i = 0; i < g_iNumEntities; i++)
|
for(int i = 0; i < g_iNumEntities; i++)
|
||||||
{
|
{
|
||||||
@ -601,16 +595,16 @@ bool AddEntityForLagCompensation(int iEntity)
|
|||||||
g_aEntityLagData[i].iNotMoving = MAX_RECORDS;
|
g_aEntityLagData[i].iNotMoving = MAX_RECORDS;
|
||||||
g_aEntityLagData[i].bRestore = false;
|
g_aEntityLagData[i].bRestore = false;
|
||||||
|
|
||||||
RecordDataIntoRecord(g_aEntityLagData[i].iEntity, g_aaLagRecords[i][0]);
|
RecordDataIntoRecord(iEntity, g_aaLagRecords[i][0]);
|
||||||
|
|
||||||
{
|
{
|
||||||
char sClassname[64];
|
char sClassname[64];
|
||||||
GetEntityClassname(g_aEntityLagData[i].iEntity, sClassname, sizeof(sClassname));
|
GetEntityClassname(iEntity, sClassname, sizeof(sClassname));
|
||||||
|
|
||||||
char sTargetname[64];
|
char sTargetname[64];
|
||||||
GetEntPropString(g_aEntityLagData[i].iEntity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname));
|
GetEntPropString(iEntity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname));
|
||||||
|
|
||||||
int iHammerID = GetEntProp(g_aEntityLagData[i].iEntity, Prop_Data, "m_iHammerID");
|
int iHammerID = GetEntProp(iEntity, Prop_Data, "m_iHammerID");
|
||||||
|
|
||||||
PrintToBoth("[%d] added entity %d (%s)\"%s\"(#%d) under index %d", GetGameTickCount(), iEntity, sClassname, sTargetname, iHammerID, i);
|
PrintToBoth("[%d] added entity %d (%s)\"%s\"(#%d) under index %d", GetGameTickCount(), iEntity, sClassname, sTargetname, iHammerID, i);
|
||||||
}
|
}
|
||||||
@ -664,17 +658,7 @@ public void OnEntitySpawned(int entity, const char[] classname)
|
|||||||
|
|
||||||
if(iParent == INVALID_ENT_REFERENCE)
|
if(iParent == INVALID_ENT_REFERENCE)
|
||||||
return;
|
return;
|
||||||
/*
|
|
||||||
{
|
|
||||||
char sTargetname[64];
|
|
||||||
GetEntPropString(entity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname));
|
|
||||||
|
|
||||||
char sParentTargetname[64];
|
|
||||||
GetEntPropString(iParent, Prop_Data, "m_iName", sParentTargetname, sizeof(sParentTargetname));
|
|
||||||
|
|
||||||
PrintToBoth("CHECKING %s %s | parent: %s %s", classname, sTargetname, sParentClassname, sParentTargetname);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if(!bGoodParents)
|
if(!bGoodParents)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -682,16 +666,6 @@ public void OnEntitySpawned(int entity, const char[] classname)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
g_aBlockTriggerTouch[entity] = 1;
|
g_aBlockTriggerTouch[entity] = 1;
|
||||||
|
|
||||||
{
|
|
||||||
char sTargetname[64];
|
|
||||||
GetEntPropString(entity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname));
|
|
||||||
|
|
||||||
char sParentTargetname[64];
|
|
||||||
GetEntPropString(iParent, Prop_Data, "m_iName", sParentTargetname, sizeof(sParentTargetname));
|
|
||||||
|
|
||||||
PrintToBoth("added %s %s | parent: %s %s", classname, sTargetname, sParentClassname, sParentTargetname);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnEntityDestroyed(int entity)
|
public void OnEntityDestroyed(int entity)
|
||||||
|
Loading…
Reference in New Issue
Block a user