HackFix: Mimic forwardsys style of pawn calling.
This commit is contained in:
		
							parent
							
								
									803a54b773
								
							
						
					
					
						commit
						97610edda4
					
				| @ -438,6 +438,20 @@ FeatureStatus SDKHooks::GetFeatureStatus(FeatureType type, const char *name) | ||||
| /**
 | ||||
|  * Functions | ||||
|  */ | ||||
| 
 | ||||
| static void CopyEntityVector(const ke::Vector<HookList> &source, ke::Vector<HookList> &destination, int entity) | ||||
| { | ||||
| 	for (size_t iter = 0; iter < source.length(); ++iter) | ||||
| 	{ | ||||
| 		if (source[iter].entity != entity) | ||||
| 		{ | ||||
| 			continue; | ||||
| 		} | ||||
| 
 | ||||
| 		destination.append(source[iter]); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| cell_t SDKHooks::Call(int entity, SDKHookType type, int other) | ||||
| { | ||||
| 	return Call(gamehelpers->ReferenceToEntity(entity), type, gamehelpers->ReferenceToEntity(other)); | ||||
| @ -461,16 +475,13 @@ cell_t SDKHooks::Call(CBaseEntity *pEnt, SDKHookType type, CBaseEntity *pOther) | ||||
| 			continue; | ||||
| 		} | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		int entity = gamehelpers->EntityToBCompatRef(pEnt); | ||||
| 		int other = gamehelpers->EntityToBCompatRef(pOther); | ||||
| 
 | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->PushCell(other); | ||||
| @ -914,14 +925,10 @@ void SDKHooks::Hook_FireBulletsPost(const FireBulletsInfo_t &info) | ||||
| 
 | ||||
| 		const char *weapon = pInfo->GetWeaponName(); | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->PushCell(info.m_iShots); | ||||
| @ -956,14 +963,10 @@ int SDKHooks::Hook_GetMaxHealth() | ||||
| 
 | ||||
| 		cell_t res = Pl_Continue; | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->PushCellByRef(&new_max); | ||||
| @ -1013,14 +1016,10 @@ int SDKHooks::Hook_OnTakeDamage(CTakeDamageInfoHack &info) | ||||
| 
 | ||||
| 		cell_t res, ret = Pl_Continue; | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->PushCellByRef(&attacker); | ||||
| @ -1095,14 +1094,10 @@ int SDKHooks::Hook_OnTakeDamagePost(CTakeDamageInfoHack &info) | ||||
| 
 | ||||
| 		int entity = gamehelpers->EntityToBCompatRef(pEntity); | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->PushCell(info.GetAttacker()); | ||||
| @ -1168,14 +1163,10 @@ bool SDKHooks::Hook_Reload() | ||||
| 		int entity = gamehelpers->EntityToBCompatRef(pEntity); | ||||
| 		cell_t res = Pl_Continue; | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->Execute(&res); | ||||
| @ -1206,14 +1197,10 @@ bool SDKHooks::Hook_ReloadPost() | ||||
| 		int entity = gamehelpers->EntityToBCompatRef(pEntity); | ||||
| 		cell_t origreturn = META_RESULT_ORIG_RET(bool) ? 1 : 0; | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->PushCell(origreturn); | ||||
| @ -1253,14 +1240,10 @@ bool SDKHooks::Hook_ShouldCollide(int collisionGroup, int contentsMask) | ||||
| 		cell_t origRet = ((META_RESULT_STATUS >= MRES_OVERRIDE)?(META_RESULT_OVERRIDE_RET(bool)):(META_RESULT_ORIG_RET(bool))) ? 1 : 0; | ||||
| 		cell_t res = 0; | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->PushCell(collisionGroup); | ||||
| @ -1301,14 +1284,10 @@ void SDKHooks::Hook_Spawn() | ||||
| 		int entity = gamehelpers->EntityToBCompatRef(pEntity); | ||||
| 		cell_t res = Pl_Continue; | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->Execute(&res); | ||||
| @ -1399,14 +1378,10 @@ void SDKHooks::Hook_TraceAttack(CTakeDamageInfoHack &info, const Vector &vecDir, | ||||
| 		int ammotype = info.GetAmmoType(); | ||||
| 		cell_t res, ret = Pl_Continue; | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->PushCellByRef(&attacker); | ||||
| @ -1477,14 +1452,10 @@ void SDKHooks::Hook_TraceAttackPost(CTakeDamageInfoHack &info, const Vector &vec | ||||
| 
 | ||||
| 		int entity = gamehelpers->EntityToBCompatRef(pEntity); | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->PushCell(info.GetAttacker()); | ||||
| @ -1521,14 +1492,10 @@ void SDKHooks::Hook_Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE | ||||
| 		int caller = gamehelpers->EntityToBCompatRef(pCaller); | ||||
| 		cell_t ret = Pl_Continue; | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->PushCell(activator); | ||||
| @ -1564,14 +1531,10 @@ void SDKHooks::Hook_UsePost(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_T | ||||
| 		int activator = gamehelpers->EntityToBCompatRef(pActivator); | ||||
| 		int caller = gamehelpers->EntityToBCompatRef(pCaller); | ||||
| 
 | ||||
| 		ke::Vector<HookList> &pawnlist = vtablehooklist[entry]->hooks; | ||||
| 		ke::Vector<HookList> pawnlist; | ||||
| 		CopyEntityVector(vtablehooklist[entry]->hooks, pawnlist, entity); | ||||
| 		for (entry = 0; entry < pawnlist.length(); ++entry) | ||||
| 		{ | ||||
| 			if (entity != pawnlist[entry].entity) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			IPluginFunction *callback = pawnlist[entry].callback; | ||||
| 			callback->PushCell(entity); | ||||
| 			callback->PushCell(activator); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user