Cvars: Add OnCvarChanged global forward

I really tried to use "cvar_changed" as name, but it bothered me so much to look that weird I could not keep it.
This commit is contained in:
Arkshine 2015-01-16 23:14:15 +01:00
parent 34d91789c4
commit faeaf9259e
6 changed files with 39 additions and 1 deletions

View File

@ -329,6 +329,8 @@ extern int FF_PluginEnd;
extern int FF_InconsistentFile; extern int FF_InconsistentFile;
extern int FF_ClientAuthorized; extern int FF_ClientAuthorized;
extern int FF_ChangeLevel; extern int FF_ChangeLevel;
extern int FF_CvarChanged;
extern bool g_coloredmenus; extern bool g_coloredmenus;
typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); typedef void (*AUTHORIZEFUNC)(int player, const char *authstring);

View File

@ -15,7 +15,16 @@ CDetour *Cvar_DirectSetDetour;
DETOUR_DECL_STATIC2(Cvar_DirectSet, void, struct cvar_s*, var, const char*, value) DETOUR_DECL_STATIC2(Cvar_DirectSet, void, struct cvar_s*, var, const char*, value)
{ {
printf("Cvar_DirectSet - %s -> %s\n", var->name, value); if (var && value)
{
if (strcmp(var->string, value) != 0)
{
if (executeForwards(FF_CvarChanged, reinterpret_cast<cell>(var), var->string, value, var->name) > 0)
{
return;
}
}
}
DETOUR_STATIC_CALL(Cvar_DirectSet)(var, value); DETOUR_STATIC_CALL(Cvar_DirectSet)(var, value);
} }

View File

@ -143,6 +143,7 @@ int FF_PluginEnd = -1;
int FF_InconsistentFile = -1; int FF_InconsistentFile = -1;
int FF_ClientAuthorized = -1; int FF_ClientAuthorized = -1;
int FF_ChangeLevel = -1; int FF_ChangeLevel = -1;
int FF_CvarChanged = -1;
bool ColoredMenus(String & ModName) bool ColoredMenus(String & ModName)
{ {
@ -503,6 +504,7 @@ int C_Spawn(edict_t *pent)
FF_InconsistentFile = registerForward("inconsistent_file", ET_STOP, FP_CELL, FP_STRING, FP_STRINGEX, FP_DONE); FF_InconsistentFile = registerForward("inconsistent_file", ET_STOP, FP_CELL, FP_STRING, FP_STRINGEX, FP_DONE);
FF_ClientAuthorized = registerForward("client_authorized", ET_IGNORE, FP_CELL, FP_DONE); FF_ClientAuthorized = registerForward("client_authorized", ET_IGNORE, FP_CELL, FP_DONE);
FF_ChangeLevel = registerForward("server_changelevel", ET_STOP, FP_STRING, FP_DONE); FF_ChangeLevel = registerForward("server_changelevel", ET_STOP, FP_STRING, FP_DONE);
FF_CvarChanged = registerForward("OnCvarChanged", ET_STOP, FP_CELL, FP_STRING, FP_STRING, FP_STRING, FP_DONE);
#if defined BINLOG_ENABLED #if defined BINLOG_ENABLED
if (!g_BinLog.Open()) if (!g_BinLog.Open())

View File

@ -29,6 +29,7 @@
#include <newmenus> #include <newmenus>
#include <textparse_smc> #include <textparse_smc>
#include <textparse_ini> #include <textparse_ini>
#include <cvars>
/** /**
* Called just after server activation. * Called just after server activation.

23
plugins/include/cvars.inc Normal file
View File

@ -0,0 +1,23 @@
// vim: set ts=4 sw=4 tw=99 noet:
//
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
// Copyright (C) The AMX Mod X Development Team.
//
// This software is licensed under the GNU General Public License, version 3 or higher.
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
// https://alliedmods.net/amxmodx-license
#if defined _cvars_included
#endinput
#endif
#define _cvars_included
/**
* Called when a console variable's value is changed.
*
* @param cvarHandle Handle to the cvar that was changed
* @param oldValue String containing the value of the cvar before it was changed
* @param newValue String containing the new value of the cvar
* @param cvarName String containing the name of the cvar
*/
forward OnCvarChanged(cvarHandle, const oldValue[], const newValue[], const cvarName[]);

View File

@ -245,6 +245,7 @@ scripting_files = [
'include/csstats.inc', 'include/csstats.inc',
'include/cstrike.inc', 'include/cstrike.inc',
'include/csx.inc', 'include/csx.inc',
'include/cvars.inc',
'include/datapack.inc', 'include/datapack.inc',
'include/dbi.inc', 'include/dbi.inc',
'include/dodconst.inc', 'include/dodconst.inc',