Support for Post calls added
Now resets functions on map change
This commit is contained in:
parent
2cd6ea9de3
commit
9d3ffda996
|
@ -17,3 +17,128 @@ void ServerActivate(edict_t *pEdictList, int edictCount, int clientMax)
|
||||||
g_player_edicts[i]=pEdictList + i;
|
g_player_edicts[i]=pEdictList + i;
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
#define RESETD(call) \
|
||||||
|
g_pFunctionTable->pfn##call = NULL; \
|
||||||
|
g_pFunctionTable_Post->pfn##call = NULL; \
|
||||||
|
Engine[FM_##call].clear(); \
|
||||||
|
EnginePost[FM_##call].clear();
|
||||||
|
|
||||||
|
#define RESETE(call) \
|
||||||
|
g_pengfuncsTable->pfn##call = NULL; \
|
||||||
|
g_pengfuncsTable_Post->pfn##call = NULL; \
|
||||||
|
Engine[FM_##call].clear(); \
|
||||||
|
EnginePost[FM_##call].clear();
|
||||||
|
|
||||||
|
void OnPluginsLoaded()
|
||||||
|
{
|
||||||
|
// Reset all call lists here.
|
||||||
|
// NULL all function tables
|
||||||
|
RESETE(PrecacheModel);
|
||||||
|
RESETE(PrecacheSound);
|
||||||
|
RESETE(SetModel);
|
||||||
|
RESETE(ModelIndex);
|
||||||
|
RESETE(ModelFrames);
|
||||||
|
RESETE(SetSize);
|
||||||
|
RESETE(ChangeLevel);
|
||||||
|
RESETE(VecToYaw);
|
||||||
|
RESETE(VecToAngles);
|
||||||
|
RESETE(MoveToOrigin);
|
||||||
|
RESETE(ChangeYaw);
|
||||||
|
RESETE(ChangePitch);
|
||||||
|
RESETE(FindEntityByString);
|
||||||
|
RESETE(GetEntityIllum);
|
||||||
|
RESETE(FindEntityInSphere);
|
||||||
|
RESETE(FindClientInPVS);
|
||||||
|
RESETE(EntitiesInPVS);
|
||||||
|
RESETE(MakeVectors);
|
||||||
|
RESETE(AngleVectors);
|
||||||
|
RESETE(CreateEntity);
|
||||||
|
RESETE(RemoveEntity);
|
||||||
|
RESETE(CreateNamedEntity);
|
||||||
|
RESETE(MakeStatic);
|
||||||
|
RESETE(EntIsOnFloor);
|
||||||
|
RESETE(DropToFloor);
|
||||||
|
RESETE(WalkMove);
|
||||||
|
RESETE(SetOrigin);
|
||||||
|
RESETE(EmitSound);
|
||||||
|
RESETE(EmitAmbientSound);
|
||||||
|
RESETE(TraceLine);
|
||||||
|
RESETE(TraceToss);
|
||||||
|
RESETE(TraceMonsterHull);
|
||||||
|
RESETE(TraceHull);
|
||||||
|
RESETE(TraceModel);
|
||||||
|
RESETE(TraceTexture);
|
||||||
|
RESETE(TraceSphere);
|
||||||
|
RESETE(GetAimVector);
|
||||||
|
RESETE(ParticleEffect);
|
||||||
|
RESETE(LightStyle);
|
||||||
|
RESETE(DecalIndex);
|
||||||
|
RESETE(PointContents);
|
||||||
|
RESETE(FreeEntPrivateData);
|
||||||
|
RESETE(SzFromIndex);
|
||||||
|
RESETE(AllocString);
|
||||||
|
RESETE(RegUserMsg);
|
||||||
|
RESETE(AnimationAutomove);
|
||||||
|
RESETE(GetBonePosition);
|
||||||
|
RESETE(GetAttachment);
|
||||||
|
RESETE(SetView);
|
||||||
|
RESETE(Time);
|
||||||
|
RESETE(CrosshairAngle);
|
||||||
|
RESETE(FadeClientVolume);
|
||||||
|
RESETE(SetClientMaxspeed);
|
||||||
|
RESETE(CreateFakeClient);
|
||||||
|
RESETE(RunPlayerMove);
|
||||||
|
RESETE(NumberOfEntities);
|
||||||
|
RESETE(StaticDecal);
|
||||||
|
RESETE(PrecacheGeneric);
|
||||||
|
RESETE(BuildSoundMsg);
|
||||||
|
RESETE(GetPhysicsKeyValue);
|
||||||
|
RESETE(SetPhysicsKeyValue);
|
||||||
|
RESETE(GetPhysicsInfoString);
|
||||||
|
RESETE(PrecacheEvent);
|
||||||
|
RESETE(PlaybackEvent);
|
||||||
|
RESETE(CheckVisibility);
|
||||||
|
RESETE(GetCurrentPlayer);
|
||||||
|
RESETE(CanSkipPlayer);
|
||||||
|
RESETE(SetGroupMask);
|
||||||
|
RESETE(Voice_GetClientListening);
|
||||||
|
RESETE(Voice_SetClientListening);
|
||||||
|
RESETE(MessageBegin);
|
||||||
|
RESETE(WriteCoord);
|
||||||
|
RESETE(WriteAngle);
|
||||||
|
RESETE(InfoKeyValue);
|
||||||
|
RESETE(SetKeyValue);
|
||||||
|
RESETE(SetClientKeyValue);
|
||||||
|
|
||||||
|
RESETD(GameInit);
|
||||||
|
RESETD(Spawn);
|
||||||
|
RESETD(Think);
|
||||||
|
RESETD(Use);
|
||||||
|
RESETD(Touch);
|
||||||
|
RESETD(Blocked);
|
||||||
|
RESETD(KeyValue);
|
||||||
|
RESETD(SetAbsBox);
|
||||||
|
RESETD(ClientConnect);
|
||||||
|
RESETD(ClientDisconnect);
|
||||||
|
RESETD(ClientKill);
|
||||||
|
RESETD(ClientPutInServer);
|
||||||
|
RESETD(ClientCommand);
|
||||||
|
RESETD(ServerDeactivate);
|
||||||
|
RESETD(PlayerPreThink);
|
||||||
|
RESETD(PlayerPostThink);
|
||||||
|
RESETD(StartFrame);
|
||||||
|
RESETD(ParmsNewLevel);
|
||||||
|
RESETD(ParmsChangeLevel);
|
||||||
|
RESETD(GetGameDescription);
|
||||||
|
RESETD(SpectatorConnect);
|
||||||
|
RESETD(SpectatorDisconnect);
|
||||||
|
RESETD(SpectatorThink);
|
||||||
|
RESETD(Sys_Error);
|
||||||
|
RESETD(PM_FindTextureType);
|
||||||
|
RESETD(RegisterEncoders);
|
||||||
|
RESETD(GetHullBounds);
|
||||||
|
RESETD(CreateInstancedBaselines);
|
||||||
|
RESETD(AllowLagCompensation);
|
||||||
|
|
||||||
|
g_pFunctionTable->pfnServerActivate = ServerActivate;
|
||||||
|
}
|
|
@ -17,6 +17,11 @@ int lastFmRes = FMRES_IGNORED;
|
||||||
{ \
|
{ \
|
||||||
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), s)); \
|
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), s)); \
|
||||||
RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult); \
|
RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult); \
|
||||||
|
} \
|
||||||
|
int call##_post (char *s) \
|
||||||
|
{ \
|
||||||
|
FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i), s)); \
|
||||||
|
RETURN_META_VALUE(MRES_IGNORED, (int)mlCellResult); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SIMPLE_INT_HOOK_CONSTSTRING(call) \
|
#define SIMPLE_INT_HOOK_CONSTSTRING(call) \
|
||||||
|
@ -24,6 +29,11 @@ int lastFmRes = FMRES_IGNORED;
|
||||||
{ \
|
{ \
|
||||||
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), s)); \
|
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), s)); \
|
||||||
RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult); \
|
RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult); \
|
||||||
|
} \
|
||||||
|
int call##_post (const char *s) \
|
||||||
|
{ \
|
||||||
|
FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i), s)); \
|
||||||
|
RETURN_META_VALUE(MRES_IGNORED, (int)mlCellResult); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,6 +42,11 @@ int lastFmRes = FMRES_IGNORED;
|
||||||
{ \
|
{ \
|
||||||
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), ENTINDEX(ent))); \
|
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), ENTINDEX(ent))); \
|
||||||
RETURN_META(mswi(lastFmRes)); \
|
RETURN_META(mswi(lastFmRes)); \
|
||||||
|
} \
|
||||||
|
void call##_post (edict_t *ent) \
|
||||||
|
{ \
|
||||||
|
FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i), ENTINDEX(ent))); \
|
||||||
|
RETURN_META(MRES_IGNORED); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SIMPLE_VOID_HOOK_EDICT_EDICT(call) \
|
#define SIMPLE_VOID_HOOK_EDICT_EDICT(call) \
|
||||||
|
@ -39,13 +54,23 @@ int lastFmRes = FMRES_IGNORED;
|
||||||
{ \
|
{ \
|
||||||
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), ENTINDEX(ent), ENTINDEX(entb))); \
|
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), ENTINDEX(ent), ENTINDEX(entb))); \
|
||||||
RETURN_META(mswi(lastFmRes)); \
|
RETURN_META(mswi(lastFmRes)); \
|
||||||
|
} \
|
||||||
|
void call##_post (edict_t *ent,edict_t *entb) \
|
||||||
|
{ \
|
||||||
|
FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i), ENTINDEX(ent), ENTINDEX(entb))); \
|
||||||
|
RETURN_META(MRES_IGNORED); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SIMPLE_VOID_HOOK_VOID(call) \
|
#define SIMPLE_VOID_HOOK_VOID(call) \
|
||||||
void call () \
|
void call (void) \
|
||||||
{ \
|
{ \
|
||||||
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i))); \
|
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i))); \
|
||||||
RETURN_META(mswi(lastFmRes)); \
|
RETURN_META(mswi(lastFmRes)); \
|
||||||
|
} \
|
||||||
|
void call##_post (void) \
|
||||||
|
{ \
|
||||||
|
FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i))); \
|
||||||
|
RETURN_META(MRES_IGNORED); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SIMPLE_INT_HOOK_EDICT(call) \
|
#define SIMPLE_INT_HOOK_EDICT(call) \
|
||||||
|
@ -53,6 +78,11 @@ int lastFmRes = FMRES_IGNORED;
|
||||||
{ \
|
{ \
|
||||||
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), ENTINDEX(pent))); \
|
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), ENTINDEX(pent))); \
|
||||||
RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult); \
|
RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult); \
|
||||||
|
} \
|
||||||
|
int call##_post (edict_t *pent) \
|
||||||
|
{ \
|
||||||
|
FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i), ENTINDEX(pent))); \
|
||||||
|
RETURN_META_VALUE(MRES_IGNORED, (int)mlCellResult); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SIMPLE_INT_HOOK_INT(call) \
|
#define SIMPLE_INT_HOOK_INT(call) \
|
||||||
|
@ -60,6 +90,11 @@ int lastFmRes = FMRES_IGNORED;
|
||||||
{ \
|
{ \
|
||||||
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), v)); \
|
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), v)); \
|
||||||
RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult); \
|
RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult); \
|
||||||
|
} \
|
||||||
|
int call##_post (int v) \
|
||||||
|
{ \
|
||||||
|
FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i), v)); \
|
||||||
|
RETURN_META_VALUE(MRES_IGNORED, (int)mlCellResult); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SIMPLE_INT_HOOK_VOID(call) \
|
#define SIMPLE_INT_HOOK_VOID(call) \
|
||||||
|
@ -67,16 +102,37 @@ int lastFmRes = FMRES_IGNORED;
|
||||||
{ \
|
{ \
|
||||||
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i))); \
|
FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i))); \
|
||||||
RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult); \
|
RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult); \
|
||||||
|
} \
|
||||||
|
int call##_post () \
|
||||||
|
{ \
|
||||||
|
FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i))); \
|
||||||
|
RETURN_META_VALUE(MRES_IGNORED, (int)mlCellResult); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define ENGHOOK(pfnCall) \
|
#define ENGHOOK(pfnCall) \
|
||||||
|
if (post) \
|
||||||
|
{ \
|
||||||
if (engtable->pfn##pfnCall == NULL) \
|
if (engtable->pfn##pfnCall == NULL) \
|
||||||
engtable->pfn##pfnCall = pfnCall
|
engtable->pfn##pfnCall = pfnCall##_post; \
|
||||||
|
} \
|
||||||
|
else \
|
||||||
|
{ \
|
||||||
|
if (engtable->pfn##pfnCall == NULL) \
|
||||||
|
engtable->pfn##pfnCall = pfnCall; \
|
||||||
|
}
|
||||||
|
|
||||||
#define DLLHOOK(pfnCall) \
|
#define DLLHOOK(pfnCall) \
|
||||||
|
if (post) \
|
||||||
|
{ \
|
||||||
if (dlltable->pfn##pfnCall == NULL) \
|
if (dlltable->pfn##pfnCall == NULL) \
|
||||||
dlltable->pfn##pfnCall = pfnCall
|
dlltable->pfn##pfnCall = pfnCall##_post; \
|
||||||
|
} \
|
||||||
|
else \
|
||||||
|
{ \
|
||||||
|
if (dlltable->pfn##pfnCall == NULL) \
|
||||||
|
dlltable->pfn##pfnCall = pfnCall; \
|
||||||
|
}
|
||||||
|
|
||||||
#define FM_ENG_HANDLE(pfnCall, pfnArgs) \
|
#define FM_ENG_HANDLE(pfnCall, pfnArgs) \
|
||||||
register unsigned int i = 0; \
|
register unsigned int i = 0; \
|
||||||
|
@ -95,6 +151,23 @@ int lastFmRes = FMRES_IGNORED;
|
||||||
lastFmRes = fmres; \
|
lastFmRes = fmres; \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
#define FM_ENG_HANDLE_POST(pfnCall, pfnArgs) \
|
||||||
|
register unsigned int i = 0; \
|
||||||
|
clfm(); \
|
||||||
|
int fmres = FMRES_IGNORED; \
|
||||||
|
for (i=0; i<EnginePost[pfnCall].size(); i++) \
|
||||||
|
{ \
|
||||||
|
fmres = MF_ExecuteForward pfnArgs; \
|
||||||
|
if (fmres >= lastFmRes) { \
|
||||||
|
if (retType == FMV_STRING) \
|
||||||
|
mlStringResult = mStringResult; \
|
||||||
|
else if (retType == FMV_CELL) \
|
||||||
|
mlCellResult = mCellResult; \
|
||||||
|
else if (retType == FMV_FLOAT) \
|
||||||
|
mlFloatResult = mFloatResult; \
|
||||||
|
lastFmRes = fmres; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
META_RES mswi(int fmres)
|
META_RES mswi(int fmres)
|
||||||
{
|
{
|
||||||
|
@ -164,6 +237,11 @@ void SetModel(edict_t *e, const char *m)
|
||||||
FM_ENG_HANDLE(FM_SetModel, (Engine[FM_SetModel].at(i), ENTINDEX(e), m));
|
FM_ENG_HANDLE(FM_SetModel, (Engine[FM_SetModel].at(i), ENTINDEX(e), m));
|
||||||
RETURN_META(mswi(lastFmRes));
|
RETURN_META(mswi(lastFmRes));
|
||||||
}
|
}
|
||||||
|
void SetModel_post(edict_t *e, const char *m)
|
||||||
|
{
|
||||||
|
FM_ENG_HANDLE(FM_SetModel, (Engine[FM_SetModel].at(i), ENTINDEX(e), m));
|
||||||
|
RETURN_META(MRES_IGNORED);
|
||||||
|
}
|
||||||
|
|
||||||
// pfnModelIndex
|
// pfnModelIndex
|
||||||
SIMPLE_INT_HOOK_CONSTSTRING(ModelIndex);
|
SIMPLE_INT_HOOK_CONSTSTRING(ModelIndex);
|
||||||
|
@ -180,12 +258,26 @@ void SetSize(edict_t *e, const float *rgflMin, const float *rgflMax)
|
||||||
FM_ENG_HANDLE(FM_SetSize, (Engine[FM_SetSize].at(i), ENTINDEX(e), retvec1, retvec2));
|
FM_ENG_HANDLE(FM_SetSize, (Engine[FM_SetSize].at(i), ENTINDEX(e), retvec1, retvec2));
|
||||||
RETURN_META(mswi(lastFmRes));
|
RETURN_META(mswi(lastFmRes));
|
||||||
}
|
}
|
||||||
|
void SetSize_post(edict_t *e, const float *rgflMin, const float *rgflMax)
|
||||||
|
{
|
||||||
|
cell vec1[3] = {amx_ftoc(rgflMin[0]), amx_ftoc(rgflMin[1]), amx_ftoc(rgflMin[2])};
|
||||||
|
cell vec2[3] = {amx_ftoc(rgflMax[0]), amx_ftoc(rgflMax[1]), amx_ftoc(rgflMax[2])};;
|
||||||
|
cell retvec1 = MF_PrepareCellArray(vec1, 3);
|
||||||
|
cell retvec2 = MF_PrepareCellArray(vec2, 3);
|
||||||
|
FM_ENG_HANDLE(FM_SetSize, (Engine[FM_SetSize].at(i), ENTINDEX(e), retvec1, retvec2));
|
||||||
|
RETURN_META(MRES_IGNORED);
|
||||||
|
}
|
||||||
|
|
||||||
void ChangeLevel(char *s1, char *s2)
|
void ChangeLevel(char *s1, char *s2)
|
||||||
{
|
{
|
||||||
FM_ENG_HANDLE(FM_ChangeLevel, (Engine[FM_ChangeLevel].at(i), s1, s2));
|
FM_ENG_HANDLE(FM_ChangeLevel, (Engine[FM_ChangeLevel].at(i), s1, s2));
|
||||||
RETURN_META(mswi(lastFmRes));
|
RETURN_META(mswi(lastFmRes));
|
||||||
}
|
}
|
||||||
|
void ChangeLevel_post(char *s1, char *s2)
|
||||||
|
{
|
||||||
|
FM_ENG_HANDLE(FM_ChangeLevel, (Engine[FM_ChangeLevel].at(i), s1, s2));
|
||||||
|
RETURN_META(MRES_IGNORED);
|
||||||
|
}
|
||||||
|
|
||||||
float VecToYaw(const float *rgflVector)
|
float VecToYaw(const float *rgflVector)
|
||||||
{
|
{
|
||||||
|
@ -194,6 +286,13 @@ float VecToYaw(const float *rgflVector)
|
||||||
FM_ENG_HANDLE(FM_VecToYaw, (Engine[FM_VecToYaw].at(i), retvec));
|
FM_ENG_HANDLE(FM_VecToYaw, (Engine[FM_VecToYaw].at(i), retvec));
|
||||||
RETURN_META_VALUE(mswi(lastFmRes), mlFloatResult);
|
RETURN_META_VALUE(mswi(lastFmRes), mlFloatResult);
|
||||||
}
|
}
|
||||||
|
float VecToYaw_post(const float *rgflVector)
|
||||||
|
{
|
||||||
|
cell vec[3] = {amx_ftoc(rgflVector[0]), amx_ftoc(rgflVector[1]), amx_ftoc(rgflVector[2])};
|
||||||
|
cell retvec = MF_PrepareCellArray(vec, 3);
|
||||||
|
FM_ENG_HANDLE(FM_VecToYaw, (Engine[FM_VecToYaw].at(i), retvec));
|
||||||
|
RETURN_META_VALUE(MRES_IGNORED, mlFloatResult);
|
||||||
|
}
|
||||||
|
|
||||||
void VecToAngles(const float *rgflVectorIn, float *rgflVectorOut)
|
void VecToAngles(const float *rgflVectorIn, float *rgflVectorOut)
|
||||||
{
|
{
|
||||||
|
@ -204,6 +303,15 @@ void VecToAngles(const float *rgflVectorIn, float *rgflVectorOut)
|
||||||
FM_ENG_HANDLE(FM_VecToAngles, (Engine[FM_VecToAngles].at(i), retvec1, retvec2));
|
FM_ENG_HANDLE(FM_VecToAngles, (Engine[FM_VecToAngles].at(i), retvec1, retvec2));
|
||||||
RETURN_META(mswi(lastFmRes));
|
RETURN_META(mswi(lastFmRes));
|
||||||
}
|
}
|
||||||
|
void VecToAngles_post(const float *rgflVectorIn, float *rgflVectorOut)
|
||||||
|
{
|
||||||
|
cell vec1[3] = {amx_ftoc(rgflVectorIn[0]), amx_ftoc(rgflVectorIn[1]), amx_ftoc(rgflVectorIn[2])};
|
||||||
|
cell vec2[3] = {amx_ftoc(rgflVectorOut[0]), amx_ftoc(rgflVectorOut[1]), amx_ftoc(rgflVectorOut[2])};;
|
||||||
|
cell retvec1 = MF_PrepareCellArray(vec1, 3);
|
||||||
|
cell retvec2 = MF_PrepareCellArray(vec2, 3);
|
||||||
|
FM_ENG_HANDLE(FM_VecToAngles, (Engine[FM_VecToAngles].at(i), retvec1, retvec2));
|
||||||
|
RETURN_META(MRES_IGNORED);
|
||||||
|
}
|
||||||
|
|
||||||
void MoveToOrigin(edict_t *ent, const float *pflGoal, float dist, int iMoveType)
|
void MoveToOrigin(edict_t *ent, const float *pflGoal, float dist, int iMoveType)
|
||||||
{
|
{
|
||||||
|
@ -212,12 +320,24 @@ void MoveToOrigin(edict_t *ent, const float *pflGoal, float dist, int iMoveType)
|
||||||
FM_ENG_HANDLE(FM_MoveToOrigin, (Engine[FM_MoveToOrigin].at(i), ENTINDEX(ent), retvec, dist, iMoveType));
|
FM_ENG_HANDLE(FM_MoveToOrigin, (Engine[FM_MoveToOrigin].at(i), ENTINDEX(ent), retvec, dist, iMoveType));
|
||||||
RETURN_META(mswi(lastFmRes));
|
RETURN_META(mswi(lastFmRes));
|
||||||
}
|
}
|
||||||
|
void MoveToOrigin_post(edict_t *ent, const float *pflGoal, float dist, int iMoveType)
|
||||||
|
{
|
||||||
|
cell vec[3] = {amx_ftoc(pflGoal[0]), amx_ftoc(pflGoal[1]), amx_ftoc(pflGoal[2])};
|
||||||
|
cell retvec = MF_PrepareCellArray(vec, 3);
|
||||||
|
FM_ENG_HANDLE(FM_MoveToOrigin, (Engine[FM_MoveToOrigin].at(i), ENTINDEX(ent), retvec, dist, iMoveType));
|
||||||
|
RETURN_META(MRES_IGNORED);
|
||||||
|
}
|
||||||
|
|
||||||
edict_t *FindEntityByString(edict_t *pEdictStartSearchAfter, const char *pszField, const char *pszValue)
|
edict_t *FindEntityByString(edict_t *pEdictStartSearchAfter, const char *pszField, const char *pszValue)
|
||||||
{
|
{
|
||||||
FM_ENG_HANDLE(FM_FindEntityByString, (Engine[FM_FindEntityByString].at(i), ENTINDEX(pEdictStartSearchAfter), pszField, pszValue));
|
FM_ENG_HANDLE(FM_FindEntityByString, (Engine[FM_FindEntityByString].at(i), ENTINDEX(pEdictStartSearchAfter), pszField, pszValue));
|
||||||
RETURN_META_VALUE(mswi(lastFmRes), INDEXENT2((int)mlCellResult));
|
RETURN_META_VALUE(mswi(lastFmRes), INDEXENT2((int)mlCellResult));
|
||||||
}
|
}
|
||||||
|
edict_t *FindEntityByString_post(edict_t *pEdictStartSearchAfter, const char *pszField, const char *pszValue)
|
||||||
|
{
|
||||||
|
FM_ENG_HANDLE(FM_FindEntityByString, (Engine[FM_FindEntityByString].at(i), ENTINDEX(pEdictStartSearchAfter), pszField, pszValue));
|
||||||
|
RETURN_META_VALUE(MRES_IGNORED, INDEXENT2((int)mlCellResult));
|
||||||
|
}
|
||||||
// pfnGetEntityIllum
|
// pfnGetEntityIllum
|
||||||
SIMPLE_INT_HOOK_EDICT(GetEntityIllum);
|
SIMPLE_INT_HOOK_EDICT(GetEntityIllum);
|
||||||
|
|
||||||
|
@ -305,6 +425,11 @@ SIMPLE_VOID_HOOK_EDICT(SpectatorDisconnect);
|
||||||
// pfnSpectatorThink
|
// pfnSpectatorThink
|
||||||
SIMPLE_VOID_HOOK_EDICT(SpectatorThink);
|
SIMPLE_VOID_HOOK_EDICT(SpectatorThink);
|
||||||
|
|
||||||
|
// pfnCreateInstancedBaselines
|
||||||
|
SIMPLE_VOID_HOOK_VOID(CreateInstancedBaselines);
|
||||||
|
|
||||||
|
// pfnAllowLagCompensation
|
||||||
|
SIMPLE_INT_HOOK_VOID(AllowLagCompensation);
|
||||||
static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
int func = params[1];
|
int func = params[1];
|
||||||
|
@ -318,7 +443,7 @@ static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params)
|
||||||
|
|
||||||
int len, fId=0;
|
int len, fId=0;
|
||||||
const char *funcname = MF_GetAmxString(amx, params[2], 0, &len);
|
const char *funcname = MF_GetAmxString(amx, params[2], 0, &len);
|
||||||
|
LOG_CONSOLE(PLID,"Registering: Function: %s Post: %i Type: %i",funcname,params[3],params[1]);
|
||||||
enginefuncs_t *engtable;
|
enginefuncs_t *engtable;
|
||||||
|
|
||||||
DLL_FUNCTIONS *dlltable;
|
DLL_FUNCTIONS *dlltable;
|
||||||
|
@ -564,11 +689,11 @@ static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params)
|
||||||
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_DONE);
|
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_DONE);
|
||||||
break;
|
break;
|
||||||
//EngFunc_GetClientListening, // bool (int iReceiver, int iSender)
|
//EngFunc_GetClientListening, // bool (int iReceiver, int iSender)
|
||||||
case FM_GetClientListening:
|
case FM_Voice_GetClientListening:
|
||||||
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_DONE);
|
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_DONE);
|
||||||
break;
|
break;
|
||||||
//EngFunc_SetClientListening, // bool (int iReceiver, int iSender, bool Listen)
|
//EngFunc_SetClientListening, // bool (int iReceiver, int iSender, bool Listen)
|
||||||
case FM_SetClientListening:
|
case FM_Voice_SetClientListening:
|
||||||
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_CELL, FP_DONE); // TODO: bool as cell 3rd arg?
|
fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_CELL, FP_DONE); // TODO: bool as cell 3rd arg?
|
||||||
break;
|
break;
|
||||||
//EngFunc_MessageBegin, // void (int msg_dest, int msg_type, const float *pOrigin, edict_t *ed)
|
//EngFunc_MessageBegin, // void (int msg_dest, int msg_type, const float *pOrigin, edict_t *ed)
|
||||||
|
@ -747,10 +872,12 @@ static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params)
|
||||||
//DLLFunc_CreateInstancedBaselines, // void ) ( void );
|
//DLLFunc_CreateInstancedBaselines, // void ) ( void );
|
||||||
case FM_CreateInstancedBaselines:
|
case FM_CreateInstancedBaselines:
|
||||||
fId = MF_RegisterSPForwardByName(amx, funcname, FP_DONE);
|
fId = MF_RegisterSPForwardByName(amx, funcname, FP_DONE);
|
||||||
|
DLLHOOK(CreateInstancedBaselines);
|
||||||
break;
|
break;
|
||||||
//DLLFunc_pfnAllowLagCompensation, // int )( void );
|
//DLLFunc_pfnAllowLagCompensation, // int )( void );
|
||||||
case FM_pfnAllowLagCompensation:
|
case FM_AllowLagCompensation:
|
||||||
fId = MF_RegisterSPForwardByName(amx, funcname, FP_DONE);
|
fId = MF_RegisterSPForwardByName(amx, funcname, FP_DONE);
|
||||||
|
DLLHOOK(AllowLagCompensation);
|
||||||
break;
|
break;
|
||||||
#if 0
|
#if 0
|
||||||
|
|
||||||
|
|
|
@ -81,8 +81,8 @@ enum {
|
||||||
FM_GetCurrentPlayer, //) ( void );
|
FM_GetCurrentPlayer, //) ( void );
|
||||||
FM_CanSkipPlayer, //) ( const edict_t *player );
|
FM_CanSkipPlayer, //) ( const edict_t *player );
|
||||||
FM_SetGroupMask, //) ( int mask, int op );
|
FM_SetGroupMask, //) ( int mask, int op );
|
||||||
FM_GetClientListening, // bool (int iReceiver, int iSender)
|
FM_Voice_GetClientListening, // bool (int iReceiver, int iSender)
|
||||||
FM_SetClientListening, // bool (int iReceiver, int iSender, bool Listen)
|
FM_Voice_SetClientListening, // bool (int iReceiver, int iSender, bool Listen)
|
||||||
FM_MessageBegin, // void (int msg_dest, int msg_type, const float *pOrigin, edict_t *ed)
|
FM_MessageBegin, // void (int msg_dest, int msg_type, const float *pOrigin, edict_t *ed)
|
||||||
FM_WriteCoord, // void (float)
|
FM_WriteCoord, // void (float)
|
||||||
FM_WriteAngle, // void (float)
|
FM_WriteAngle, // void (float)
|
||||||
|
@ -135,7 +135,7 @@ enum {
|
||||||
|
|
||||||
// Create baselines for certain "unplaced" items.
|
// Create baselines for certain "unplaced" items.
|
||||||
FM_CreateInstancedBaselines, // void ) ( void );
|
FM_CreateInstancedBaselines, // void ) ( void );
|
||||||
FM_pfnAllowLagCompensation, // int )( void );
|
FM_AllowLagCompensation, // int )( void );
|
||||||
};
|
};
|
||||||
|
|
||||||
extern CVector<int> Engine[];
|
extern CVector<int> Engine[];
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
//#define FN_AMXX_DETACH OnAmxxDetach
|
//#define FN_AMXX_DETACH OnAmxxDetach
|
||||||
// All plugins loaded
|
// All plugins loaded
|
||||||
// Do forward functions init here (MF_RegisterForward)
|
// Do forward functions init here (MF_RegisterForward)
|
||||||
// #define FN_AMXX_PLUGINSLOADED OnPluginsLoaded
|
#define FN_AMXX_PLUGINSLOADED OnPluginsLoaded
|
||||||
|
|
||||||
/**** METAMOD ****/
|
/**** METAMOD ****/
|
||||||
// If your module doesn't use metamod, you may close the file now :)
|
// If your module doesn't use metamod, you may close the file now :)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user