Added Player think forwards.

This commit is contained in:
David Anderson 2004-02-05 06:31:56 +00:00
parent ef64f83917
commit 24db4c9baf

View File

@ -55,6 +55,8 @@ struct AmxCall {
std::vector<AmxCall> vTouchCallList; std::vector<AmxCall> vTouchCallList;
std::vector<AmxCall> vServerFrameCallList; std::vector<AmxCall> vServerFrameCallList;
std::vector<AmxCall> vCliKillList; std::vector<AmxCall> vCliKillList;
std::vector<AmxCall> vPreThinkList;
std::vector<AmxCall> vPostThinkList;
//This was originally by VexD //This was originally by VexD
//Thank you for an excellent piece of work, VexD! //Thank you for an excellent piece of work, VexD!
@ -2478,8 +2480,21 @@ void ClientUserInfoChanged(edict_t *pEntity, char *infobuffer) {
} }
} }
//(BAILOPAN) - forward this
void PlayerPreThink(edict_t *pEntity) {
if (!vPreThinkList.empty()) {
for(std::vector<AmxCall>::iterator i = vPreThinkList.begin(); i != vPreThinkList.end(); i++) {
cell iRetVal = 0;
AMX_EXEC(&i->pPlugin->amx, &iRetVal, i->iFunctionIdx, 1, ENTINDEX(pEntity));
}
}
RETURN_META(MRES_IGNORED);
}
// This code is to set the model at a specified time. the second part of the code updates the // This code is to set the model at a specified time. the second part of the code updates the
// SetView camera. // SetView camera.
//(BAILOPAN) - now a forward
void PlayerPostThink(edict_t *pEntity) { void PlayerPostThink(edict_t *pEntity) {
if((PlInfo[ENTINDEX(pEntity)].bModeled) && (PlInfo[ENTINDEX(pEntity)].fModelSet != 0) && (PlInfo[ENTINDEX(pEntity)].fModelSet < gpGlobals->time)) { if((PlInfo[ENTINDEX(pEntity)].bModeled) && (PlInfo[ENTINDEX(pEntity)].fModelSet != 0) && (PlInfo[ENTINDEX(pEntity)].fModelSet < gpGlobals->time)) {
(g_engfuncs.pfnSetClientKeyValue)(ENTINDEX(pEntity), (g_engfuncs.pfnGetInfoKeyBuffer)(pEntity), "model", PlInfo[ENTINDEX(pEntity)].szModel); (g_engfuncs.pfnSetClientKeyValue)(ENTINDEX(pEntity), (g_engfuncs.pfnGetInfoKeyBuffer)(pEntity), "model", PlInfo[ENTINDEX(pEntity)].szModel);
@ -2521,6 +2536,13 @@ void PlayerPostThink(edict_t *pEntity) {
break; break;
} }
} }
if (!vPostThinkList.empty()) {
for(std::vector<AmxCall>::iterator i = vPostThinkList.begin(); i != vPostThinkList.end(); i++) {
cell iRetVal = 0;
AMX_EXEC(&i->pPlugin->amx, &iRetVal, i->iFunctionIdx, 1, ENTINDEX(pEntity));
}
}
RETURN_META(MRES_IGNORED); RETURN_META(MRES_IGNORED);
} }
@ -2592,7 +2614,7 @@ BOOL ClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress
PlInfo[ENTINDEX(pEntity)].iRenderMode = 0; PlInfo[ENTINDEX(pEntity)].iRenderMode = 0;
PlInfo[ENTINDEX(pEntity)].fRenderAmt = 0; PlInfo[ENTINDEX(pEntity)].fRenderAmt = 0;
CLIENT_PRINTF(pEntity, print_console, "*** This server is using Vexd's Utility Module.\n"); //CLIENT_PRINTF(pEntity, print_console, "*** This server is using Vexd's Utility Module.\n");
RETURN_META_VALUE(MRES_IGNORED, 0); RETURN_META_VALUE(MRES_IGNORED, 0);
} }
@ -2661,6 +2683,24 @@ void ServerActivate(edict_t *pEdictList, int edictCount, int clientMax) {
vCliKillList.push_back(sNewCall); vCliKillList.push_back(sNewCall);
} }
iFunctionIndex = 0;
if (AMX_FINDPUBLIC(&pCurrent->amx, "PlayerPreThink", &iFunctionIndex) == AMX_ERR_NONE) {
AmxCall sNewCall;
sNewCall.pPlugin = pCurrent;
sNewCall.iFunctionIdx = iFunctionIndex;
vPreThinkList.push_back(sNewCall);
}
iFunctionIndex = 0;
if (AMX_FINDPUBLIC(&pCurrent->amx, "PlayerPostThink", &iFunctionIndex) == AMX_ERR_NONE) {
AmxCall sNewCall;
sNewCall.pPlugin = pCurrent;
sNewCall.iFunctionIdx = iFunctionIndex;
vPostThinkList.push_back(sNewCall);
}
iFunctionIndex = 0; iFunctionIndex = 0;
pCurrent = pCurrent->next; pCurrent = pCurrent->next;
} }
@ -2912,6 +2952,8 @@ C_DLLEXPORT int GetEntityAPI2( DLL_FUNCTIONS *pFunctionTable, int *interfaceVers
gFunctionTable.pfnAddToFullPack = AddToFullPack; gFunctionTable.pfnAddToFullPack = AddToFullPack;
gFunctionTable.pfnServerActivate = ServerActivate; gFunctionTable.pfnServerActivate = ServerActivate;
gFunctionTable.pfnServerDeactivate = ServerDeactivate; gFunctionTable.pfnServerDeactivate = ServerDeactivate;
gFunctionTable.pfnClientKill = ClientKill;
gFunctionTable.pfnPlayerPreThink = PlayerPreThink;
memcpy( pFunctionTable, &gFunctionTable, sizeof( DLL_FUNCTIONS ) ); memcpy( pFunctionTable, &gFunctionTable, sizeof( DLL_FUNCTIONS ) );