engine can now catch impulses
This commit is contained in:
parent
add9b1126a
commit
aaf8bd7af9
|
@ -90,6 +90,7 @@ AmxCallList preThink;
|
||||||
AmxCallList postThink;
|
AmxCallList postThink;
|
||||||
AmxCallList clientKill;
|
AmxCallList clientKill;
|
||||||
AmxCallList Msgs;
|
AmxCallList Msgs;
|
||||||
|
AmxCallList clientImpulse;
|
||||||
|
|
||||||
meta_globals_t *gpMetaGlobals;
|
meta_globals_t *gpMetaGlobals;
|
||||||
gamedll_funcs_t *gpGamedllFuncs;
|
gamedll_funcs_t *gpGamedllFuncs;
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <extdll.h>
|
#include <extdll.h>
|
||||||
|
#include <usercmd.h>
|
||||||
#include <meta_api.h>
|
#include <meta_api.h>
|
||||||
#include <dllapi.h>
|
#include <dllapi.h>
|
||||||
#include "sdk_util.h"
|
#include "sdk_util.h"
|
||||||
|
@ -3202,6 +3203,23 @@ void MessageEnd(void) {
|
||||||
RETURN_META(result);
|
RETURN_META(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CmdStart(const edict_t *player, const struct usercmd_s *_cmd, unsigned int random_seed)
|
||||||
|
{
|
||||||
|
edict_t *pEntity = (edict_t *)player;
|
||||||
|
struct usercmd_s *cmd = (struct usercmd_s *)_cmd;
|
||||||
|
META_RES result = MRES_IGNORED;
|
||||||
|
cell iResult;
|
||||||
|
|
||||||
|
for (AmxCallList::AmxCall* i = clientImpulse.head; i; i = i->next) {
|
||||||
|
AMX_EXEC(i->amx, &iResult, i->iFunctionIdx, 2, ENTINDEX(pEntity), cmd->impulse);
|
||||||
|
if (iResult & 2) {
|
||||||
|
RETURN_META(MRES_SUPERCEDE);
|
||||||
|
} else if (iResult & 1) {
|
||||||
|
result = MRES_SUPERCEDE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void WriteByte(int iValue) {
|
void WriteByte(int iValue) {
|
||||||
if(GlInfo.bBlocking) {
|
if(GlInfo.bBlocking) {
|
||||||
RETURN_META(MRES_SUPERCEDE);
|
RETURN_META(MRES_SUPERCEDE);
|
||||||
|
@ -3327,6 +3345,9 @@ void ServerActivate( edict_t *pEdictList, int edictCount, int clientMax ){
|
||||||
if (AMX_FINDPUBLIC(amx, "client_kill", &iFunctionIndex) == AMX_ERR_NONE) {
|
if (AMX_FINDPUBLIC(amx, "client_kill", &iFunctionIndex) == AMX_ERR_NONE) {
|
||||||
clientKill.put(amx, iFunctionIndex);
|
clientKill.put(amx, iFunctionIndex);
|
||||||
}
|
}
|
||||||
|
if (AMX_FINDPUBLIC(amx, "client_impulse",&iFunctionIndex) == AMX_ERR_NONE) {
|
||||||
|
clientImpulse.put(amx, iFunctionIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inHookProcess = 0;
|
inHookProcess = 0;
|
||||||
|
@ -3463,7 +3484,7 @@ void ClientPutInServer_Post( edict_t *pEntity ) {
|
||||||
DLL_FUNCTIONS gFunctionTable;
|
DLL_FUNCTIONS gFunctionTable;
|
||||||
|
|
||||||
C_DLLEXPORT int GetEntityAPI2( DLL_FUNCTIONS *pFunctionTable, int *interfaceVersion ){
|
C_DLLEXPORT int GetEntityAPI2( DLL_FUNCTIONS *pFunctionTable, int *interfaceVersion ){
|
||||||
|
gFunctionTable.pfnCmdStart = CmdStart;
|
||||||
gFunctionTable.pfnGameInit = GameInit;
|
gFunctionTable.pfnGameInit = GameInit;
|
||||||
gFunctionTable.pfnStartFrame = StartFrame;
|
gFunctionTable.pfnStartFrame = StartFrame;
|
||||||
gFunctionTable.pfnTouch = Touch;
|
gFunctionTable.pfnTouch = Touch;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user