LagCompensation: stable
This commit is contained in:
		
							parent
							
								
									04123d38c6
								
							
						
					
					
						commit
						85c37faf86
					
				@ -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