All pastes #78181 Raw Edit

Something

public cpp v1 · immutable
·published 2006-07-03 21:23 UTC
rendered paste body
int g_nHealthOffset = 0;void UTIL_SetHealth(edict_t *pEntity, int hp){	if (!g_nHealthOffset) return;	*(int *)(pEntity->GetUnknown() + g_nHealthOffset) = hp;	pEntity->m_fStateFlags |= FL_EDICT_CHANGED;}int UTIL_FindOffset(char *ClassName, char *Property){	ServerClass *sc = serverdll->GetAllServerClasses();	while (sc)	{		if (strcmp(sc->GetName(), ClassName) == 0)		{			int NumProps = sc->m_pTable->GetNumProps();			for (int i = 0; i < NumProps; i++)			{				if (strcmp(sc->m_pTable->GetProp(i)->GetName(), Property) == 0)				{					return sc->m_pTable->GetProp(i)->GetOffset() / 4;				}			}			return 0;		}		sc = sc->m_pNext;	}	return 0;}// Run this in CPluginClass::Loadvoid UTIL_PrecacheOffsets(){	g_nHealthOffset = UTIL_FindOffset("CBasePlayer", "m_iHealth");}void UTIL_DumpOffsets(){	FILE *fp = fopen("offsets.txt","w");	if (!fp) return;	ServerClass *sc = serverdll->GetAllServerClasses();	while (sc)	{		int NumProps = sc->m_pTable->GetNumProps();		fprintf(fp, "%s\n", sc->m_pTable->GetName());		for (int i = 0; i < NumProps; i++)		{			SendProp *prop = sc->m_pTable->GetProp(i);			if (prop)				fprintf(fp, "  %5d %s\n", prop->GetOffset() / 4, prop->GetName());		}		sc = sc->m_pNext;	}	fclose(fp);}