Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- #include "ExtDll.h"
- #include "MetaApi.h"
- #if !defined __linux__
- #define C_DLLEXPORT extern "C" __declspec ( dllexport )
- #else
- #define C_DLLEXPORT extern "C" __attribute__ ( ( visibility( "default" ) ) )
- #endif
- EngineFunctions_t g_EngineFunctions; GlobalVariables_t * g_pGlobalVariables; DllFunctions_t * g_pDllFunctions; DllFunctions_t * g_pDllFunctions_Post; EngineFunctions_t * g_pEngineFunctions;
- EngineFunctions_t * g_pEngineFunctions_Post; MetaGlobals_t * g_pMetaGlobals; GameDllFunctions_t * g_pGameDllFunctions; MetaUtilFunctions_t * g_pMetaUtilFunctions;
- static PluginInfo_t Plugin_info = {
- "5:13", "Console Variables Manager", "1", __DATE__, "Hattrick (Claudiu HKS)", "http://forums.alliedmods.net/member.php?u=69445", "CONSOLE VARIABLES MANAGER", PT_ANYTIME, PT_ANYTIME
- };
- void trim( char * p ) {
- while( isspace( * p ) )p ++;
- for( size_t i = strlen( p ) - 1; i >=0&&isspace( p[ i ] ); i -- ) p[ i ] = '\0';
- }
- void ServerActivate_Post( Edict_t *, int, int ) {
- static char Game[ 32 ], Location[ 128 ], Line[ 512 ], Variable[ 128 ], Iterator;
- g_EngineFunctions.pfnGetGameDir( Game );
- _snprintf( Location, sizeof Location - 1, "%s/ConVarMan_RemFlags.ini", Game );
- FILE * pFile = fopen( Location, "r" );
- if( pFile ) {
- while( !feof( pFile ) ) {
- Line[ 0 ] = '\0';
- fgets( Line, sizeof Line - 1, pFile );
- trim( Line );
- if( Line[ 0 ] == ';' || !strlen( Line ) ) continue ;
- Iterator = 0;
- while( Line[ Iterator ] != ' ' && Iterator < 127 ) {
- Variable[ Iterator ] = Line[ Iterator ];
- Iterator ++;
- }
- Variable[ Iterator ] = '\0';
- ConsoleVariable_t * pCvar = g_EngineFunctions.pfnCVarGetPointer( Variable );
- if( pCvar && pCvar -> flags & FCVAR_EXTDLL && strstr( Line, "FCVAR_EXTDLL" ) )
- pCvar -> flags &= ~FCVAR_EXTDLL;
- if( pCvar && pCvar -> flags & FCVAR_SERVER && strstr( Line, "FCVAR_SERVER" ) )
- pCvar -> flags &= ~FCVAR_SERVER;
- if( pCvar && pCvar -> flags & FCVAR_UNLOGGED && strstr( Line, "FCVAR_UNLOGGED" ) )
- pCvar -> flags &= ~FCVAR_UNLOGGED;
- if( pCvar && pCvar -> flags & FCVAR_SPONLY && strstr( Line, "FCVAR_SPONLY" ) )
- pCvar -> flags &= ~FCVAR_SPONLY;
- if( pCvar && pCvar -> flags & FCVAR_ARCHIVE && strstr( Line, "FCVAR_ARCHIVE" ) )
- pCvar -> flags &= ~FCVAR_ARCHIVE;
- if( pCvar && pCvar -> flags & FCVAR_USERINFO && strstr( Line, "FCVAR_USERINFO" ) )
- pCvar -> flags &= ~FCVAR_USERINFO;
- if( pCvar && pCvar -> flags & FCVAR_PROTECTED && strstr( Line, "FCVAR_PROTECTED" ) )
- pCvar -> flags &= ~FCVAR_PROTECTED;
- if( pCvar && pCvar -> flags & FCVAR_PRINTABLEONLY && strstr( Line, "FCVAR_PRINTABLEONLY" ) )
- pCvar -> flags &= ~FCVAR_PRINTABLEONLY;
- if( pCvar && pCvar -> flags & FCVAR_CLIENTDLL && strstr( Line, "FCVAR_CLIENTDLL" ) )
- pCvar -> flags &= ~FCVAR_CLIENTDLL;
- }
- fclose( pFile );
- }
- _snprintf( Location, sizeof Location - 1, "%s/ConVarMan_AddFlags.ini", Game );
- FILE * paFile = fopen( Location, "r" );
- if( paFile ) {
- while( !feof( paFile ) ) {
- Line[ 0 ] = '\0';
- fgets( Line, sizeof Line - 1, paFile );
- trim( Line );
- if( Line[ 0 ] == ';' || !strlen( Line ) ) continue ;
- Iterator = 0;
- while( Line[ Iterator ] != ' ' && Iterator < 127 ) {
- Variable[ Iterator ] = Line[ Iterator ];
- Iterator ++;
- }
- Variable[ Iterator ] = '\0';
- ConsoleVariable_t * pCvar = g_EngineFunctions.pfnCVarGetPointer( Variable );
- if( pCvar && !( pCvar -> flags & FCVAR_EXTDLL ) && strstr( Line, "FCVAR_EXTDLL" ) )
- pCvar -> flags |= FCVAR_EXTDLL;
- if( pCvar && !( pCvar -> flags & FCVAR_SERVER ) && strstr( Line, "FCVAR_SERVER" ) )
- pCvar -> flags |= FCVAR_SERVER;
- if( pCvar && !( pCvar -> flags & FCVAR_UNLOGGED ) && strstr( Line, "FCVAR_UNLOGGED" ) )
- pCvar -> flags |= FCVAR_UNLOGGED;
- if( pCvar && !( pCvar -> flags & FCVAR_SPONLY ) && strstr( Line, "FCVAR_SPONLY" ) )
- pCvar -> flags |= FCVAR_SPONLY;
- if( pCvar && !( pCvar -> flags & FCVAR_ARCHIVE ) && strstr( Line, "FCVAR_ARCHIVE" ) )
- pCvar -> flags |= FCVAR_ARCHIVE;
- if( pCvar && !( pCvar -> flags & FCVAR_USERINFO ) && strstr( Line, "FCVAR_USERINFO" ) )
- pCvar -> flags |= FCVAR_USERINFO;
- if( pCvar && !( pCvar -> flags & FCVAR_PROTECTED ) && strstr( Line, "FCVAR_PROTECTED" ) )
- pCvar -> flags |= FCVAR_PROTECTED;
- if( pCvar && !( pCvar -> flags & FCVAR_PRINTABLEONLY ) && strstr( Line, "FCVAR_PRINTABLEONLY" ) )
- pCvar -> flags |= FCVAR_PRINTABLEONLY;
- if( pCvar && !( pCvar -> flags & FCVAR_CLIENTDLL ) && strstr( Line, "FCVAR_CLIENTDLL" ) )
- pCvar -> flags |= FCVAR_CLIENTDLL;
- }
- fclose( paFile );
- }
- do {
- g_pMetaGlobals -> Result = MRES_IGNORED;
- return;
- }
- while( 0 );
- }
- C_DLLEXPORT int GetEntityAPI2_Post(DllFunctions_t *pFunctionTable, int *){
- pFunctionTable->pfnServerActivate=ServerActivate_Post;
- g_pDllFunctions_Post=pFunctionTable;
- return 1;
- }
- static MetaFunctions_t g_MetaFunctions_Table ={
- NULL, NULL, NULL, GetEntityAPI2_Post, NULL, NULL, NULL, NULL
- };
- C_DLLEXPORT int Meta_Query( char *, PluginInfo_t **pPlugInfo, MetaUtilFunctions_t *pMetaUtilFuncs){
- g_pMetaUtilFunctions = pMetaUtilFuncs;
- *pPlugInfo = &Plugin_info;
- return 1;
- }
- C_DLLEXPORT int Meta_Attach(PluginLoadTime_t, MetaFunctions_t *pFunctionTable, MetaGlobals_t *pMGlobals, GameDllFunctions_t *pGamedllFuncs){
- g_pMetaGlobals=pMGlobals;
- memcpy(pFunctionTable,&g_MetaFunctions_Table,sizeof(MetaFunctions_t));
- g_pGameDllFunctions=pGamedllFuncs;
- ConsoleVariable_t Variable = { "console_variables_manager", "1", FCVAR_SERVER | FCVAR_EXTDLL | FCVAR_SPONLY | FCVAR_UNLOGGED };
- g_EngineFunctions.pfnCVarRegister( &Variable );
- g_EngineFunctions.pfnCvar_DirectSet( g_EngineFunctions.pfnCVarGetPointer( Variable.name ), "1" );
- return 1;
- }
- #if defined __linux__
- C_DLLEXPORT void GiveFnptrsToDll( EngineFunctions_t* pengfuncsFromEngine, GlobalVariables_t *pGlobals ) {
- #else
- C_DLLEXPORT __declspec ( naked ) void GiveFnptrsToDll( EngineFunctions_t* pengfuncsFromEngine, GlobalVariables_t *pGlobals ) {
- #endif
- #if !defined __linux__
- __asm {
- push ebp
- mov ebp, esp
- sub esp, __LOCAL_SIZE
- push ebx
- push esi
- push edi
- }
- #endif
- memcpy(&g_EngineFunctions, pengfuncsFromEngine, sizeof(EngineFunctions_t));
- g_pGlobalVariables = pGlobals;
- #if !defined __linux__
- __asm {
- pop edi
- pop esi
- pop ebx
- mov esp, ebp
- pop ebp
- ret 8
- }
- #endif
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement