From 8112fbe161ea9f194dbf9038196306ae7de005ce Mon Sep 17 00:00:00 2001 From: Borja Ferrer Date: Sat, 26 Nov 2005 20:38:58 +0000 Subject: [PATCH] fixed bug at21983 --- dlls/engine/amxxapi.cpp | 4 ++-- dlls/engine/engine.cpp | 4 ++-- dlls/engine/engine.h | 1 - dlls/engine/forwards.cpp | 21 ++++++++++++++------- dlls/engine/moduleconfig.h | 24 ++++++++++++------------ 5 files changed, 30 insertions(+), 24 deletions(-) diff --git a/dlls/engine/amxxapi.cpp b/dlls/engine/amxxapi.cpp index 9cee50ce..bb5c0628 100755 --- a/dlls/engine/amxxapi.cpp +++ b/dlls/engine/amxxapi.cpp @@ -49,7 +49,6 @@ void OnAmxxAttach() MF_AddNatives(global_Natives); memset(glinfo.szLastLights, 0x0, 128); memset(glinfo.szRealLights, 0x0, 128); - glinfo.bLights = false; glinfo.fNextLights = 0; glinfo.bCheckLights = false; } @@ -203,7 +202,7 @@ void ServerDeactivate() { memset(glinfo.szLastLights, 0x0, 128); memset(glinfo.szRealLights, 0x0, 128); - glinfo.bLights = false; + glinfo.bCheckLights = false; glinfo.fNextLights = 0; // Reset all forwarding function tables (so that forwards won't be called before plugins are initialized) @@ -218,6 +217,7 @@ void ServerDeactivate() g_pFunctionTable->pfnThink=NULL; // "pfn_think", "register_think" g_pFunctionTable->pfnStartFrame=NULL; // "server_frame","ServerFrame" g_pFunctionTable->pfnTouch=NULL; // "pfn_touch","vexd_pfntouch" + g_pFunctionTable_Post->pfnStartFrame = NULL; // "set_lights" ClearHooks(); diff --git a/dlls/engine/engine.cpp b/dlls/engine/engine.cpp index bc7f7bea..b642df60 100755 --- a/dlls/engine/engine.cpp +++ b/dlls/engine/engine.cpp @@ -559,15 +559,15 @@ static cell AMX_NATIVE_CALL set_view(AMX *amx, cell *params) { static cell AMX_NATIVE_CALL set_lights(AMX *amx, cell *params) { int iLength; char *szLights = MF_GetAmxString(amx, params[1], 0, &iLength); + g_pFunctionTable_Post->pfnStartFrame = StartFrame_Post; if (FStrEq(szLights, "#OFF")) { - glinfo.bLights = false; + glinfo.bCheckLights = false; memset(glinfo.szLastLights, 0x0, 128); (g_engfuncs.pfnLightStyle)(0, (char *)glinfo.szRealLights); return 1; } - glinfo.bLights = true; glinfo.bCheckLights = true; //Reset LastLights diff --git a/dlls/engine/engine.h b/dlls/engine/engine.h index 6c27d927..ae6a9206 100755 --- a/dlls/engine/engine.h +++ b/dlls/engine/engine.h @@ -108,7 +108,6 @@ struct PlayerInfo { }; struct GlobalInfo { - bool bLights; float fNextLights; char *szLastLights[128]; char *szRealLights[128]; diff --git a/dlls/engine/forwards.cpp b/dlls/engine/forwards.cpp index b903432b..21fb523a 100755 --- a/dlls/engine/forwards.cpp +++ b/dlls/engine/forwards.cpp @@ -109,13 +109,6 @@ void KeyValue(edict_t *pEntity, KeyValueData *pkvd) void StartFrame() { - if (glinfo.bCheckLights) { - if (!FStrEq((const char*)glinfo.szLastLights, "")) { - (g_engfuncs.pfnLightStyle)(0, (char *)glinfo.szLastLights); - glinfo.fNextLights = gpGlobals->time + 1; - } - } - if (StartFrameForward != -1) MF_ExecuteForward(StartFrameForward); else if (VexdServerForward != -1) @@ -124,6 +117,20 @@ void StartFrame() RETURN_META(MRES_IGNORED); } +void StartFrame_Post() +{ + if (glinfo.bCheckLights) + { + if (glinfo.fNextLights < gpGlobals->time) + { + (g_engfuncs.pfnLightStyle)(0, (char *)glinfo.szLastLights); + glinfo.fNextLights = gpGlobals->time + 1; + } + } + + RETURN_META(MRES_IGNORED); +} + void CmdStart(const edict_t *player, const struct usercmd_s *_cmd, unsigned int random_seed) { unsigned int i = 0; diff --git a/dlls/engine/moduleconfig.h b/dlls/engine/moduleconfig.h index d1df9081..97a72443 100755 --- a/dlls/engine/moduleconfig.h +++ b/dlls/engine/moduleconfig.h @@ -54,12 +54,12 @@ // (wd) are Will Day's notes // - GetEntityAPI2 functions // #define FN_GameDLLInit GameDLLInit /* pfnGameInit() */ -//#define FN_DispatchSpawn Spawn /* pfnSpawn() */ -//#define FN_DispatchThink Think /* pfnThink() */ -// #define FN_DispatchUse Use /* pfnUse() */ -//#define FN_DispatchTouch pfnTouch /* pfnTouch() */ +// #define FN_DispatchSpawn Spawn /* pfnSpawn() */ +// #define FN_DispatchThink Think /* pfnThink() */ +// #define FN_DispatchUse Use /* pfnUse() */ +// #define FN_DispatchTouch pfnTouch /* pfnTouch() */ // #define FN_DispatchBlocked DispatchBlocked /* pfnBlocked() */ -//#define FN_DispatchKeyValue KeyValue /* pfnKeyValue() */ +// #define FN_DispatchKeyValue KeyValue /* pfnKeyValue() */ // #define FN_DispatchSave DispatchSave /* pfnSave() */ // #define FN_DispatchRestore DispatchRestore /* pfnRestore() */ // #define FN_DispatchObjectCollsionBox DispatchObjectCollsionBox /* pfnSetAbsBox() */ @@ -70,15 +70,15 @@ // #define FN_ResetGlobalState ResetGlobalState /* pfnResetGlobalState() */ #define FN_ClientConnect ClientConnect /* pfnClientConnect() (wd) Client has connected */ #define FN_ClientDisconnect ClientDisconnect /* pfnClientDisconnect() (wd) Player has left the game */ -//#define FN_ClientKill ClientKill /* pfnClientKill() (wd) Player has typed "kill" */ +// #define FN_ClientKill ClientKill /* pfnClientKill() (wd) Player has typed "kill" */ // #define FN_ClientPutInServer ClientPutInServer /* pfnClientPutInServer() (wd) Client is entering the game */ // #define FN_ClientCommand ClientCommand /* pfnClientCommand() (wd) Player has sent a command (typed or from a bind) */ // #define FN_ClientUserInfoChanged ClientUserInfoChanged /* pfnClientUserInfoChanged() (wd) Client has updated their setinfo structure */ #define FN_ServerActivate ServerActivate /* pfnServerActivate() (wd) Server is starting a new map */ #define FN_ServerDeactivate ServerDeactivate /* pfnServerDeactivate() (wd) Server is leaving the map (shutdown or changelevel); SDK2 */ -//#define FN_PlayerPreThink PlayerPreThink /* pfnPlayerPreThink() */ +// #define FN_PlayerPreThink PlayerPreThink /* pfnPlayerPreThink() */ // #define FN_PlayerPostThink PlayerPostThink /* pfnPlayerPostThink() */ -//#define FN_StartFrame StartFrame /* pfnStartFrame() */ +// #define FN_StartFrame StartFrame /* pfnStartFrame() */ // #define FN_ParmsNewLevel ParmsNewLevel /* pfnParmsNewLevel() */ // #define FN_ParmsChangeLevel ParmsChangeLevel /* pfnParmsChangeLevel() */ // #define FN_GetGameDescription GetGameDescription /* pfnGetGameDescription() Returns string describing current .dll. E.g. "TeamFotrress 2" "Half-Life" */ @@ -96,7 +96,7 @@ // #define FN_CreateBaseline CreateBaseline /* pfnCreateBaseline() Tweak entity baseline for network encoding allows setup of player baselines too.; (wd) SDK2 */ // #define FN_RegisterEncoders RegisterEncoders /* pfnRegisterEncoders() Callbacks for network encoding; (wd) SDK2 */ // #define FN_GetWeaponData GetWeaponData /* pfnGetWeaponData() (wd) SDK2 */ -//#define FN_CmdStart CmdStart /* pfnCmdStart() (wd) SDK2 */ +// #define FN_CmdStart CmdStart /* pfnCmdStart() (wd) SDK2 */ // #define FN_CmdEnd CmdEnd /* pfnCmdEnd() (wd) SDK2 */ // #define FN_ConnectionlessPacket ConnectionlessPacket /* pfnConnectionlessPacket() (wd) SDK2 */ // #define FN_GetHullBounds GetHullBounds /* pfnGetHullBounds() (wd) SDK2 */ @@ -129,8 +129,8 @@ // #define FN_ServerActivate_Post ServerActivate_Post // #define FN_ServerDeactivate_Post ServerDeactivate_Post // #define FN_PlayerPreThink_Post PlayerPreThink_Post -//#define FN_PlayerPostThink_Post PlayerPostThink_Post -// #define FN_StartFrame_Post StartFrame_Post +// #define FN_PlayerPostThink_Post PlayerPostThink_Post +#define FN_StartFrame_Post StartFrame_Post // #define FN_ParmsNewLevel_Post ParmsNewLevel_Post // #define FN_ParmsChangeLevel_Post ParmsChangeLevel_Post // #define FN_GetGameDescription_Post GetGameDescription_Post @@ -280,7 +280,7 @@ // #define FN_SetPhysicsKeyValue SetPhysicsKeyValue // #define FN_GetPhysicsInfoString GetPhysicsInfoString // #define FN_PrecacheEvent PrecacheEvent -//#define FN_PlaybackEvent PlaybackEvent +// #define FN_PlaybackEvent PlaybackEvent // #define FN_SetFatPVS SetFatPVS // #define FN_SetFatPAS SetFatPAS // #define FN_CheckVisibility CheckVisibility