View Single Post
voogru
Inspector Javert
Join Date: Oct 2004
Old 01-23-2011 , 05:47   Re: undefined symbol from my own plugin
Reply With Quote #18

Quote:
Originally Posted by sn4k3 View Post
its just for keep things more clean, also if i change class name ...

longer than class name? true but i use also shorter defines. See at code bottom

PHP Code:
//=================================================================================
// Following Constans, define what libs to use on the plugin and thier variables
// Allow disable or enable NO-STATIC Libraries from plugin.
// They will be always avaliable to use, but aren't pre defenied by plugintemplate
// Never change define name
// Comment to disable
//=================================================================================
#define USE_LIB_DOWNLOAD
#define USE_LIB_SOUND
#define USE_LIB_PLAYERMNGR
#define USE_LIB_TIMER
#define USE_LIB_PROFILING
#define USE_LIB_ADMIN
#define USE_LIB_EASYADMIN
#define USE_LIB_LANG
#define USE_LIB_MENU
#define USE_LIB_PROP
#define USE_LIB_VFUNCS
#define USE_LIB_SIGSCAN
 
//=================================================================================
// Define libraries variables to use on plugin
// Never change define name
// l = library
//=================================================================================
#define VAR_LIB_DOWNLOAD    glDownload
#define VAR_LIB_SOUND        glSound
#define VAR_LIB_PLAYERMNGR    glPlayerMngr
#define VAR_LIB_TIMER        glTimer
#define VAR_LIB_PROFILING    glProfiling
#define VAR_LIB_ADMIN        glAdmin
#define VAR_LIB_EASYADMIN    glEasyAdmin
#define VAR_LIB_LANG        glLang
#define VAR_LIB_MENU        glMenu
#define VAR_LIB_HACK        glHack
// Do not touch this three
#define VAR_LIB_PROP        VAR_LIB_HACK->Props
#define VAR_LIB_VFUNCS        VAR_LIB_HACK->VFuncs
#define VAR_LIB_SIGSCAN        VAR_LIB_HACK->SigScan
 
//=================================================================================
// Short and nice typed re-defenitions from libraries variables
// You can change define name to your prefered name
// v = var, l = library
//=================================================================================
#define vlDownload            VAR_LIB_DOWNLOAD
#define vlSound                VAR_LIB_SOUND
#define vlPlayerMngr        VAR_LIB_PLAYERMNGR
#define vlTimer                VAR_LIB_TIMER
#define vlProfiling            VAR_LIB_PROFILING
#define vlAdmin                VAR_LIB_ADMIN
#define vlEasyAdmin            VAR_LIB_EASYADMIN
#define vlLang                VAR_LIB_LANG
#define vlMenu                VAR_LIB_MENU
#define vlHack                VAR_LIB_HACK
#define vlProp                VAR_LIB_PROP
#define vlVFuncs            VAR_LIB_VFUNCS
#define vlVSigscan            VAR_LIB_SIGSCAN 
i do the same for the interfaces:

PHP Code:
//=================================================================================
// Disable or enable interfaces from plugin.
// They will be always avaliable to use, but aren't pre defenied by plugintemplate
// Never change define name
// Comment to disable
//=================================================================================
#define USE_IFACE_BOTMANAGER            // (IBotManager)
#define USE_IFACE_VOICESERVER            // (IVoiceServer)
#define USE_IFACE_GAMEEVENTMANAGER        // (IGameEventManager2)
#define USE_IFACE_EFFECTS                // (IEffects)
#define USE_IFACE_ENGINETRACE            // (IEngineTrace)
#define USE_IFACE_SERVERGAMEENTS        // (IServerGameEnts)
#define USE_IFACE_SERVERCLIENTS            // (IServerGameClients)
#define USE_IFACE_RANDOMSTREAM            // (IUniformRandomStream)
#define USE_IFACE_SOUNDS                // (IEngineSound)
#define USE_IFACE_NETWORKSTRINGTABLE    // (NetworkStringTableContainer)
 
 
//=================================================================================
// Following Constans, define plugin interfaces variables names
// Methods under [] is where interface got used
//=================================================================================
 
#define VAR_IFACE_ENGINE                engine                    // Must use (IVEngineServer)
#define VAR_IFACE_PLAYERINFOMANAGER        playerinfomanager        // Must use (IPlayerInfoManager)
#define VAR_IFACE_SERVERPLUGINHELPERS    helpers                    // Must use (IServerPluginHelpers)
#define VAR_IFACE_ICVAR                    icvar                    // Must use (ICvar)
#define VAR_IFACE_SERVERGAMEDLL            servergamedll            // Must use (IServerGameDLL)
#define VAR_IFACE_FILESYSTEM            filesystem                // Must use (IFileSystem)
#define VAR_IFACE_GLOBALVARS            gpGlobals                // Must use (CGlobalVars)
 
#define VAR_IFACE_BOTMANAGER            botmanager                // Optional (IBotManager)
#define VAR_IFACE_VOICESERVER            voiceserver                // Optional (IVoiceServer)
#define VAR_IFACE_GAMEEVENTMANAGER        gameeventmanager        // Optional (IGameEventManager2)
#define VAR_IFACE_EFFECTS                effects                    // Optional (IEffects)
#define VAR_IFACE_ENGINETRACE            enginetrace                // Optional (IEngineTrace)
#define VAR_IFACE_SERVERGAMEENTS        serverents                // Optional (IServerGameEnts) [GetEntityFromBaseEntity]
#define VAR_IFACE_SERVERCLIENTS            serverclients            // Optional (IServerGameClients) [GetPlayerStatefromEdict, metamod plugin hooks]
#define VAR_IFACE_RANDOMSTREAM            randomStr                // Optional (IUniformRandomStream) [GetEntityOfRandPlayer and GetIndexOfRandPlayer]
#define VAR_IFACE_SOUNDS                esounds                    // Optional (IEngineSound) [EmitSound, PrecacheSound]
#define VAR_IFACE_NETWORKSTRINGTABLE    networkstringtable        // Optional (NetworkStringTableContainer) [Downloads]
 
 
//=================================================================================
// Short and nice typed re-defenitions from interfaces variables
// You can change define name to your prefered name
// v = var, i = interface
//=================================================================================
 
#define viEngine                        VAR_IFACE_ENGINE
#define viPlayerinfomanager                VAR_IFACE_PLAYERINFOMANAGER
#define viHelpers                        VAR_IFACE_SERVERPLUGINHELPERS
#define viICvar                            VAR_IFACE_ICVAR
#define viServerdll                        VAR_IFACE_SERVERGAMEDLL
#define viFilesystem                    VAR_IFACE_FILESYSTEM
#define viGlobals                        VAR_IFACE_GLOBALVARS
 
#define viBotmanager                    VAR_IFACE_BOTMANAGER
#define viVoiceserver                    VAR_IFACE_VOICESERVER
#define viGameeventmanager                VAR_IFACE_GAMEEVENTMANAGER
#define viEffects                        VAR_IFACE_EFFECTS
#define viEnginetrace                    VAR_IFACE_ENGINETRACE
#define viServerclients                    VAR_IFACE_SERVERGAMEENTS
#define viRandomStr                        VAR_IFACE_RANDOMSTREAM
#define viEsounds                        VAR_IFACE_SOUNDS
#define viNetworkstringtable            VAR_IFACE_NETWORKSTRINGTABLE 



Quote:
#define VAR_IFACE_ENGINE engine // Must use (IVEngineServer)
#define VAR_IFACE_PLAYERINFOMANAGER playerinfomanager // Must use (IPlayerInfoManager)
#define VAR_IFACE_SERVERPLUGINHELPERS helpers // Must use (IServerPluginHelpers)
#define VAR_IFACE_ICVAR icvar // Must use (ICvar)
#define VAR_IFACE_SERVERGAMEDLL servergamedll // Must use (IServerGameDLL)
#define VAR_IFACE_FILESYSTEM filesystem // Must use (IFileSystem)
#define VAR_IFACE_GLOBALVARS gpGlobals // Must use (CGlobalVars)


Why would you want to type VAR_IFACE_ENGINE-> every time, instead of just... engine->



I was going to say something else totally useless. I hope you understand that I holding myself back on thick chains.

Instead, I will say something useful in an effort to help you.

Order yourself a copy of this book.

http://www.amazon.com/Effective-Spec...5714164&sr=8-1
voogru is offline