Null tabled some forwards
Removed pfnUse hook (pointless) Changed a couple native names
This commit is contained in:
@ -1,5 +1,7 @@
|
||||
#include "engine.h"
|
||||
|
||||
BOOL CheckForPublic(const char *publicname);
|
||||
|
||||
int AmxStringToEngine(AMX *amx, cell param, int &len)
|
||||
{
|
||||
char *szString = MF_GetAmxString(amx, param, 0, &len);
|
||||
@ -29,20 +31,71 @@ void OnAmxxAttach()
|
||||
|
||||
void OnPluginsLoaded()
|
||||
{
|
||||
pfnThinkForward = MF_RegisterForward("pfn_think", ET_STOP, FP_CELL, FP_DONE);
|
||||
PlayerPreThinkForward = MF_RegisterForward("client_PreThink", ET_STOP, FP_CELL, FP_DONE);
|
||||
PlayerPostThinkForward = MF_RegisterForward("client_PostThink", ET_STOP, FP_CELL, FP_DONE);
|
||||
ClientKillForward = MF_RegisterForward("client_kill", ET_STOP, FP_CELL, FP_DONE);
|
||||
CmdStartForward = MF_RegisterForward("client_impulse", ET_STOP, FP_CELL, FP_CELL, FP_DONE);
|
||||
StartFrameForward = MF_RegisterForward("server_frame", ET_IGNORE, FP_DONE);
|
||||
DispatchKeyForward = MF_RegisterForward("Dispatch_KeyVal", ET_STOP, FP_CELL, FP_DONE);
|
||||
PlaybackForward = MF_RegisterForward("PlaybackEvent", ET_STOP, FP_CELL, FP_CELL, FP_CELL, FP_FLOAT, FP_ARRAY, FP_ARRAY, FP_FLOAT, FP_FLOAT, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
|
||||
ChangelevelForward = MF_RegisterForward("server_changelevel", ET_STOP, FP_STRING, FP_DONE);
|
||||
SpawnForward = MF_RegisterForward("pfn_spawn", ET_IGNORE, FP_CELL, FP_DONE);
|
||||
DispatchUseForward = MF_RegisterForward("pfn_use", ET_STOP, FP_CELL, FP_CELL, FP_DONE);
|
||||
pfnTouchForward = MF_RegisterForward("pfn_touch", ET_STOP, FP_CELL, FP_CELL, FP_DONE);
|
||||
VexdTouchForward = MF_RegisterForward("vexd_pfntouch", ET_IGNORE, FP_CELL, FP_CELL, FP_DONE);
|
||||
VexdServerForward = MF_RegisterForward("ServerFrame", ET_IGNORE, FP_DONE);
|
||||
g_CameraCount=0;
|
||||
pfnThinkForward = MF_RegisterForward("pfn_think", ET_STOP, FP_CELL, FP_DONE); // done
|
||||
PlayerPreThinkForward = MF_RegisterForward("client_PreThink", ET_STOP, FP_CELL, FP_DONE); // done
|
||||
PlayerPostThinkForward = MF_RegisterForward("client_PostThink", ET_STOP, FP_CELL, FP_DONE); // done
|
||||
ClientKillForward = MF_RegisterForward("client_kill", ET_STOP, FP_CELL, FP_DONE); // done
|
||||
CmdStartForward = MF_RegisterForward("client_impulse", ET_STOP, FP_CELL, FP_CELL, FP_DONE); // done
|
||||
StartFrameForward = MF_RegisterForward("server_frame", ET_IGNORE, FP_DONE); // done
|
||||
DispatchKeyForward = MF_RegisterForward("pfn_keyvalue", ET_STOP, FP_CELL, FP_DONE); // done
|
||||
PlaybackForward = MF_RegisterForward("pfn_playbackevent", ET_STOP, FP_CELL, FP_CELL, FP_CELL, FP_FLOAT, FP_ARRAY, FP_ARRAY, FP_FLOAT, FP_FLOAT, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_DONE); // done
|
||||
SpawnForward = MF_RegisterForward("pfn_spawn", ET_IGNORE, FP_CELL, FP_DONE); // done
|
||||
pfnTouchForward = MF_RegisterForward("pfn_touch", ET_STOP, FP_CELL, FP_CELL, FP_DONE); // done
|
||||
VexdTouchForward = MF_RegisterForward("vexd_pfntouch", ET_IGNORE, FP_CELL, FP_CELL, FP_DONE); // done
|
||||
VexdServerForward = MF_RegisterForward("ServerFrame", ET_IGNORE, FP_DONE); // done
|
||||
// Reset all standard engine callbacks
|
||||
|
||||
// These will be reset through native calls, if need be
|
||||
|
||||
g_pFunctionTable->pfnAddToFullPack=NULL;
|
||||
|
||||
g_pFunctionTable->pfnKeyValue=NULL;
|
||||
if (CheckForPublic("pfn_keyvalue"))
|
||||
g_pFunctionTable->pfnKeyValue=KeyValue;
|
||||
|
||||
g_pengfuncsTable->pfnPlaybackEvent=NULL; // "pfn_playbackevent"
|
||||
if (CheckForPublic("pfn_playbackevent"))
|
||||
g_pengfuncsTable->pfnPlaybackEvent=PlaybackEvent;
|
||||
|
||||
g_pFunctionTable->pfnPlayerPreThink=NULL; // "client_PreThink"
|
||||
if (CheckForPublic("client_PreThink"))
|
||||
g_pFunctionTable->pfnPlayerPreThink=PlayerPreThink;
|
||||
|
||||
g_pFunctionTable->pfnPlayerPostThink=NULL; // "client_PostThink"
|
||||
if (CheckForPublic("client_PostThink"))
|
||||
g_pFunctionTable->pfnPlayerPostThink=PlayerPostThink_Post;
|
||||
|
||||
g_pFunctionTable->pfnSpawn=NULL; // "pfn_spawn"
|
||||
if (CheckForPublic("pfn_spawn"))
|
||||
g_pFunctionTable->pfnSpawn=Spawn;
|
||||
|
||||
g_pFunctionTable->pfnClientKill=NULL; // "client_kill"
|
||||
if (CheckForPublic("client_kill"))
|
||||
g_pFunctionTable->pfnClientKill=ClientKill;
|
||||
|
||||
g_pFunctionTable->pfnCmdStart=NULL; // "client_impulse","register_impulse"
|
||||
if (CheckForPublic("client_impulse"))
|
||||
g_pFunctionTable->pfnCmdStart=CmdStart;
|
||||
|
||||
g_pFunctionTable->pfnThink=NULL; // "pfn_think", "register_think"
|
||||
if (CheckForPublic("pfn_think"))
|
||||
g_pFunctionTable->pfnThink=Think;
|
||||
|
||||
g_pFunctionTable->pfnStartFrame=NULL; // "server_frame","ServerFrame"
|
||||
if (CheckForPublic("server_frame"))
|
||||
g_pFunctionTable->pfnStartFrame=StartFrame;
|
||||
|
||||
if (CheckForPublic("ServerFrame"))
|
||||
g_pFunctionTable->pfnStartFrame=StartFrame;
|
||||
|
||||
|
||||
g_pFunctionTable->pfnTouch=NULL; // "pfn_touch","vexd_pfntouch"
|
||||
if (CheckForPublic("pfn_touch"))
|
||||
g_pFunctionTable->pfnTouch=pfnTouch;
|
||||
|
||||
if (CheckForPublic("vexd_pfntouch"))
|
||||
g_pFunctionTable->pfnTouch=pfnTouch;
|
||||
}
|
||||
|
||||
qboolean Voice_SetClientListening(int iReceiver, int iSender, qboolean bListen)
|
||||
@ -67,6 +120,7 @@ qboolean Voice_SetClientListening(int iReceiver, int iSender, qboolean bListen)
|
||||
|
||||
int AddToFullPack(struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet)
|
||||
{
|
||||
sprintf("%s called\n",__FUNCTION__);
|
||||
if(ent == host) {
|
||||
if(FStrEq(STRING(ent->v.classname), "player")) {
|
||||
if(plinfo[ENTINDEX(ent)].iViewType != CAMERA_NONE) {
|
||||
@ -91,6 +145,15 @@ void ClientDisconnect(edict_t *pEntity)
|
||||
{
|
||||
int id = ENTINDEX(pEntity);
|
||||
|
||||
if (plinfo[ENTINDEX(pEntity)].iViewType != CAMERA_NONE) // Verify that they were originally in a modified view
|
||||
{
|
||||
g_CameraCount--;
|
||||
if (g_CameraCount < 0)
|
||||
g_CameraCount=0;
|
||||
if (g_CameraCount==0)
|
||||
g_pFunctionTable->pfnAddToFullPack=AddToFullPack;
|
||||
}
|
||||
|
||||
plinfo[id].iSpeakFlags = SPEAK_NORMAL;
|
||||
plinfo[id].iViewType = CAMERA_NONE;
|
||||
plinfo[id].iRenderMode = 0;
|
||||
@ -152,3 +215,24 @@ void LightStyle(int style, char *val) {
|
||||
|
||||
RETURN_META(MRES_IGNORED);
|
||||
}
|
||||
|
||||
BOOL CheckForPublic(const char *publicname)
|
||||
{
|
||||
AMX* amx;
|
||||
char blah[64];
|
||||
strncpy(blah,publicname,63);
|
||||
int iFunctionIndex;
|
||||
int i=0;
|
||||
// Loop through all running scripts
|
||||
while((amx=MF_GetScriptAmx(i++))!=NULL)
|
||||
{
|
||||
// Scan for public
|
||||
if (MF_AmxFindPublic(amx, blah, &iFunctionIndex) == AMX_ERR_NONE)
|
||||
{
|
||||
// Public was found.
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE; // no public found in any loaded script
|
||||
}
|
||||
|
Reference in New Issue
Block a user