diff --git a/Changelog.txt b/Changelog.txt new file mode 100644 index 0000000..feb0794 --- /dev/null +++ b/Changelog.txt @@ -0,0 +1,992 @@ +# vim: set tw=75 ft=none : + +Current version: 1.20p35 + +For newer changes, see Metamod-P git repository commit log at: + http://metamod-p.git.sourceforge.net/git/gitweb.cgi?p=metamod-p/metamod-p;a=summary + +--- + +2012/08/08 1.19p34 + - Revert changes in 1.19p33 and start over with 1.19p32 code base + - Fix compiling with latest userspace headers and gcc-4.6 + - Disabled building x86-64 binaries as Valve has dropped x86-64 + linux server support. + +2012/07/27 1.19p33 + - Accumulated fixes and changes over time + - Fixes compiling with latest userspace headers and gcc-4.6 + - (introduced bugs, crashes, do not use) + +2007/08/12 1.19p32 +[Patch: Metamod-P v32 by Jussi Kivilinna] + - Changed GCC optimization flags based on performance monitoring results, + replaced '-O3 -funroll-all-loops' with '-O2'. + - Made 'Fix for engine_api varargs log calls with very long log string' + default on in sources so that MSVC compile is 1:1 with GCC compile. + - Made 'optimizations on META_DEBUG' always on in sources so that MSVC + compile is 1:1 with GCC compile. + - Fixed compiling META_PERFMON build with MSVC. + - Fixed compiling with MSVC fixed by Nikolay "The Storm" Baklicharov. + - [linux] Remake of dynamic linkent code. Parse dlsym function trampoline + instead of parsing ELF structures. + - [linux] Dropped AMD64 support since Valve doesn't support their AMD64 build + anymore and I don't have access to AMD64 machine to port new dynamic + linkent code. Sorry! + +2007/04/05 1.19p31 +[Patch: Metamod-P v31 by Jussi Kivilinna] + - Enabled 'regparam' for internal functions. Means that function arguments are + passed through registers instead of stack, which increases performance. + - Merged in changes from Metamod 1.19 that I didn't initially notice: + - Fixed a bug where plugins could not catch NewDLL calls for GameDLLs that + do not provide NewDLL information. + +2007/04/04 1.19p30 +[Patch: Metamod-P v30 by Jussi Kivilinna] + - Fixed safevoid_vsnprintf() on win32. + +2007/04/02 1.19p29 +[Patch: Metamod-P v29 by Jussi Kivilinna] + - crash fix that didn't work + +2006/03/04 1.19p28 +[Patch: Metamod-P v28 by Jussi Kivilinna] + - Removed use of __VA_ARGS__ (should be easy to port to msvc now). + - Reduced size of extra engineapi function slots from 128 to 16. + - Clean up code, removed use of likely()/unlikely() macros in places where + they don't give extra performance. + - Added MakeRequestID() API + - Added api for using hook tables from plugins (thanks to BAILOPAN) + - Re-enabled fix for engine_api varargs log calls with very long log string. + +2005/08/24 1.18p26 +[Patch: Metamod-P v26 by Jussi Kivilinna] + - Fixed newapi functions not active on mods that don't use newapi. + - [win32] New is_gamedll() code. + - [linux] Fix for buggy DT_HASH in library walker function. + - Following features were removed to improve stability. These changes were + not present in metamod.org version: + - Removed fix for engine_api varargs log calls with very long log + string. + - Removed optimized version of GET_USER_MSG_ID() for metamod-bots. + +2005/08/24 1.18p25 +[Patch: Metamod-P v25 by Jussi Kivilinna] + - Added mutil::IsQueryingClientCvar(). + - Added support for new HLSDK-API functions: + - enginefuncs_t::pfnQueryClientCvarValue() + - NEW_DLL_FUNCTIONS::pfnCvarValue() + - Fixed reloading and unloading of plugins that haven't been loaded + correctly. + - Fixed loading of plugins that needed changelevel to activate. + - Linux x86 and Windows binaries are now compiled for i586 since there is not + performance difference compared to i686. + - Fixes to improve stability on win32. (thanks to Blackhawk) + - Changed to use mingw-gcc 3.4.2rc + - Changed optimization flags, replaced '-O3 -ffast-math' with '-O2'. + - Minor performance tweaks. + - Changed to use mingw-gcc 3.4.2rc, mingw-gcc 3.4.4rc emited extra code + to zero stack memory which lowered performance. + - Changed API hooks to give structure offset to main API hook function + instead of pointer, which increases performance on linux-i586. + - Raised META_INTERFACE_VERSION to "5:12". + - Fixed metamod_version cvar to show "1.18p25" instead of "1.18.0p25". + - [linux] Improved dynamic linkent code. + - [linux] Static linked with libgcc. + +2005/07/27 1.18p24 +[Patch: Metamod-P v24 by Jussi Kivilinna] + - Updated to match latest metamod.org version. + - Removed mm-p-extensions-API, since loading/unloading plugins functions + are included in Metamod 1.18 in mutil-API. + +2005/04/22 1.17.4p23 +[Patch: Metamod-P v23 by Jussi Kivilinna] + - Fixed broken RegMsgList caused by optimization for mm-bots. + - Fixed optimization for mm-bots. + - [linux] Removed ESF-Mod fix. + - [linux] Minor performance tweaks and reduced filesize for linux. + +2005/04/08 1.17.4p22 +[Patch: Metamod-P v22 by Jussi Kivilinna] + - Optimized GET_USER_MSG_ID() function for metamod-bots. + - Minor performance tweaks. + - [linux] Looks for gamedll for Earth Special Forces Mod from 'linuxdlls' + directory after checking 'dlls'. + +2005/03/25 1.17.4p21 +[Patch: Metamod-P v21 by Jussi Kivilinna] + - Fixed 'meta reload' not working on plugins that have failed loading. + - Fixed bug with handling of metamod-plugin-bots, which might have caused + problems depending on order of loaded plugins. See 'call_count' in + 'api_hook.cpp' for details. + - Minor performace tweaks. + - Changed all non-fatal error messages to warning messages. + +2005/03/05 1.17.4p20 +[Patch: Metamod-P v20 by Jussi Kivilinna] + - Fixed bug with metamod.dll not having working relocation: + - Makefile doesn't use 'dllwrap' for linking windows dlls anymore. + - Minor performance tweaks. + - Updated mini-hlsdk to 'official 2.3+patches' version. + - Fixes to improve stability: + - Added fix for broken 'vsnprintf' for win32 and some glibc versions. + - Fixed wrong api-hook function for 'ClientConnect' in 'api_info.cpp'. + - Fixed wrong integer type for CRC32_t in 'hlsdk/common/crc.h'. + - Removed 'metamod_compat-i386.so' from linux binary release. + +2005/02/27 1.17.4p19 +[Patch: Metamod-P v19 by Jussi Kivilinna] + - Performance tweaks mainly for AMD64 (minor for i386). + - Linux-i386 (metamod_i386.so) binary linked against glibc-2.1.3 for better + compatibility. Compiled using gcc-3.3.4-glibc-2.1.3 crosscompiler available + at: http://forums.unitedadmins.com/index.php?showtopic=44048 + - Binaries not linked against libstdc++ anymore for better compatibility + (see: new_baseclass.h). + +2005/02/25 1.17.4p18 +[Patch: Metamod-P v18 by Jussi Kivilinna] + - Fixed AMD64 support. + +2005/02/19 1.17.4p17 +[Patch: Metamod-P v17 by Jussi Kivilinna] + - Renamed 'Metamod All-Mod-Support' to 'Metamod-P'. + - Fixes to improve stability. + - Minor performance tweaks. + - Merged updates from Metamod 1.17.4, + http://www.sourceforge.net/projects/metamod/ + - Added Mod recognition for Brain Bread 1.2, Snow-War 2.0 and + Gangsta Wars 2.7. + +2005/02/13 1.17.3p16 +[Patch: All-Mod-Support v16 by Jussi Kivilinna] + - Fixes to improve stability. + - Minor performance tweaks. + +2005/01/10 1.17.3p15 +[Patch: All-Mod-Support v15 by Jussi Kivilinna] + - New optimization which reduces binary size more than 50%. + - Changed '-march=i586' to '-march=i686'. This means this binary + doesn't work on Pentium/K6 processors. You need PPro/Athlon + or newer. + - Removed 'Active API Hooks' optimization. + - Removed 'memory write detection' code. + +2004/11/27 1.17.3p14 +[Patch: All-Mod-Support v14 by Jussi Kivilinna] + - Remake of new callback API. + +2004/11/27 1.17.3p13 +[Patch: All-Mod-Support v13 by Jussi Kivilinna] + - New callback API for plugins to load/unload other plugins. See + 'mm_pextensions.h'. + - Fixed a minor memory leak when reloading plugins. + - Minor fixes on 'memory write detection'. + - Minor performance tweaks. + - Moved p13 code from osdep.cpp/h to osdep_p.cpp/h + +2004/11/17 1.17.3p12 +[Patch: All-Mod-Support v12 by Jussi Kivilinna] + - Fixed crashing with 'memory write detection' (part of 'Active API Hooks'). + - Improved 'memory write detection' code. + +2004/11/16 1.17.3p11 +[Patch: All-Mod-Support v11 by Jussi Kivilinna] + - Added new 'Active API Hooks' optimization, speeding up handling HLSDK-API + functions that are not hooked by any plugins. + - Added new command 'meta active' to list active hooks. + - [linux] 'metamod_i386.so' is compiled with gcc-3.3.4 now. If that version + doesn't work for you, use 'metamod_compat-i386.so'. + - [linux] gcc-2.95 compiled binary is now 'metamod_compat-i386.so'. + - Merged updates from Metamod 1.17.3, + http://www.sourceforge.net/projects/metamod/ + - Added Mod recognition for Zombie Panic Beta 0.91c, Out Break 1.0, + Operations 1942 v2.0, The Trenches 1.0-Beta, The Ship V0052. + - When reloading plugins honour their load time settings. Does no longer + attempt to reload plugins when the loading after the unloading would + fail due to a load time conflict. + - Fixed only loading one plugin when multiple plugins with the same + prefix were used, e.g. mm_pluginA.dll and mm_pluginB.dll. + - Fixed a minor memory leak when unloading plugins. + - Fixed potential bug initializing plugin incorrectly after unloading + and loading plugins. + +2004/08/31 1.17.2p10 +[Patch: All-Mod-Support v10 by Jussi Kivilinna] + - Merged updates from Metamod 1.17.2, + http://www.sourceforge.net/projects/metamod/ + - Fixed a memory leak the size of the gamedll when extracting a missing + gamedll from the cache file on Windows Steam servers. + Found by Wei Mingzhi. + - Made game directory lookup case-insensitive. + - Added MOD recognition for The Terrorist Revenge 0.2.1, Pirates, + Vikings and Knights Beta 2.1, CSV15 (Counter-Strike 1.5 for Steam), + Adrenaline Gamer 6.5 and up. + - Changed MOD recognition for Adrenaline Gamer 3.x. The 3.x version of + the MOD is now being deprecated and support will be removed from a + future version of Metamod. It can currently still be used by renaming + the game directory from "ag" to "ag3" or by explicitly specifying the + gamedll. + - Improved parsing of plugins.ini file to not report errors on empty + lines and commented out lines that start with whitespace. + - Added "lin32" and "lin64" keywords in addition to "linux" keyword for + plugins.ini file to support using the same file for the same game on + both 32bit and 64bit servers. The "lin32" and "lin64" keywords + override the "linux" keyword when used on the same plugin. Do not + use "linux" when using "lin32" and/or "lin64" keywords for the same + plugin. + +2004/07/28 1.17.1p9 +[Patch: All-Mod-Support v9 by Jussi Kivilinna] + - [linux] Amd64-support. + - [linux] New version of osdep.cpp:is_gamedll(). + - Reads ELF directly and doesn't use external libraries. + - Binary isn't linked with BFD library anymore, reduces filesize to + less than 500kb. + - More optimizations on META_DEBUG macro. + - No more 'fast' compiles, META_DEBUG is optimized enough now. + - Added '+localinfo mm_clientmeta ' setting for disabling 'meta' + client-command. + - Added 'clientmeta' config.ini setting. + +2004/07/04 1.17.1p8 +[Patch: All-Mod-Support v8 by Jussi Kivilinna] + - Fixed memory leak in linux version of osdep.cpp:is_gamedll(). + - Fixes to improve stability. + - Optimizations on META_DEBUG macro. + +2004/06/06 1.17.1p7 +[Patch: All-Mod-Support v7 by Jussi Kivilinna] + - Official support for All-Mod-Support versions at http://koti.mbnet.fi/axh/ + - Merged updates from Metamod 1.17.1, + http://www.sourceforge.net/projects/metamod/ + - Added MOD recognition for Hostile Intent 1.1. + - Added MOD recognition for Natural Selection Beta 3.0. + - Added MOD recognition for CS13. + - Added MOD recognition Rocket Crowbar 2. + - Added MOD recognition Counter-Strike:Condition Zero. + - On Windows Steam servers extract the gamedll file from the cache file + if it is missing in the dlls directory. + - Added Patch-messages. + - Added '+localinfo mm_autodetect ' setting for disabling + autodetection of gamedll. + - Added 'autodetect' config.ini setting. + - Small tweaks and optimizations at various different places. + +2004/05/21 1.17p6 +[Patch: All-Mod-Support v6 by Jussi Kivilinna] + - Tweaks and optimizations on osdep.cpp:is_gamedll(). + - [linux] Added architecture check for i386 and x86-64 to is_gamedll(). + +2004/04/27 1.17p5 +[Patch: All-Mod-Support v5 by Jussi Kivilinna] +2004/04/26 1.17p4 +[Patch: All-Mod-Support v4 by Jussi Kivilinna] + - Amd64-test versions + +2004/04/25 1.17p3 +[Patch: All-Mod-Support v3 by Jussi Kivilinna] + - Automatically searchs for gameDll for new mods that are not included in + internal mod-list. + - [linux] Cleaned up osdep_linkent_linux.cpp, might work with x86-64 build + now (not tested). + +2004/04/24 1.17p2 +[Patch: All-Mod-Support v2 by Jussi Kivilinna] + - Extra functions slots are now passed all the way to the gameDll now too. + - [linux] New method for dlsym hooking, no need for metamod_linkent_tool.so anymore. + - Made mm_* functions in dllapi.cpp and engine_api.cpp static. + - Made mutil_* functions in mutil.cpp static. + +2004/04/22 1.17p1 +[Patch: All-Mod-Support v1 by Jussi Kivilinna] + - Removed dependences on game.dll structures (CBasePlayer). + - Replaced UTIL_ShowMessage with META_UTIL_ShowMessage. + - [win32] Replaced entity linking with PE dll-export-table combining. + - [linux] Replaced entity linking with dlsym hooking. + - Removed entities from linkgame.cpp + - Added 128 extra function slots on enginefuncs_t structure for future engine updates. + +2003/11/15 1.17 + - Added support for recently added routines in the HL Engine: + SequenceGet() + SequencePickSentence() + GetFileSize() + GetApproxWavePlayLen() + IsCareerMatch() + GetLocalizedStringLength() + RegisterTutorMessageShown() + GetTimesTutorMessageShown() + ProcessTutorMessageDecayBuffer() + ConstructTutorMessageDecayBuffer() + ResetTutorMessageDecayData() + - Removed mod recognition and entities for Master-Sword v1.3, at the + request of the Mod's authors. + - Added mod recognition and entities for HL-Rally vBeta 1.0, Kanonball + v1.01, Over Ground vBeta 1.0, Project Timeless vBeta 1.0, Underworld + Bloodline v2.0. + - Additional entities for The Battle Grounds v1.2.1, Firearms v2.8. + - Additional entities "env_rain" and "env_snow" used on some CS maps. + - Added "metamod_version" cvar that can be queried from game browser + clients. + - Added "meta" client command similar to the console command, providing at + this time only "list" and "version" subcommands. + - Introduced basic config file to provide more reliable and more + flexible options passing, in addition to the current +localinfo method. + - Default filename: addons/metamod/config.ini + - Options include: + debuglevel + gamedll + plugins_file + exec_cfg + - Added option "+localinfo mm_configfile " to override default + config.ini pathname. + - Added "meta config" console command to display result of config + file and localinfo options. + - Added "meta require " console command, to exit the server if the + specified plugin is not found loaded and running. Intended for use in + server.cfg or metaexec.cfg. Suggested by Florian Zschocke. + - If a specified override gamedll pathname is invalid, Metamod will now + exit with an appropriate error, rather than falling back to the + auto-detected gamedll. This should provide more useful feedback in such + situations. + - Added GINFO_REALDLL_FULLPATH for mutil GetGameInfo, to return the + (supposed) "real" dllpathname, ie in case gamedll is overridden. Needed + specifically for plugin "SinglePlayer". + - Raised META_INTERFACE_VERSION to 5:10, for GINFO_REALDLL_FULLPATH. + - Now recognizes "/dev/null" as valid for path options (pluginsfile, + execcfg, configini, etc), for when an empty file _is_ desired. + - Fixed loading of plugins.ini to detect duplicate plugins (by full + pathname). + - Added doc/config.ini with comments to document the file. + - Renamed doc/metamod.ini to doc/plugins.ini, and added comments. + - Internal changes: + - Added conf_meta.cpp, conf_meta.h for config file handling. + - Created full_gamedir_path() to centralize code for testing absolute + path, prepending gamedir if necessary, calling realpath, and + normalizing pathnames. + - Most paths are now stored and operated on as fullpathnames, rather + than gamedir-relative pathnames. + - Now using fopen() rather than LOAD_FILE_FOR_ME when reading text + files, in particular due to fullpathnames. + - Errorcheck for absolute paths as mm_execcfg filename, since + servercommand("exec") won't accept absolute pathanmes. + - Added debug messages to valid_gamedir_file(), for checking why it + failed to use a specified (config.ini, localinfo) path. + - Simplified logic in cmd_doplug() to not require re-mapping pcmd to cmd + string. + - Fixed Makefile to always recompile meta_api.cpp for changes in + info_name.h. + - Split lookup_game() into setup_gamedll and lookup_game, to better + organize for storing gamedll->real_pathname. + - Source and documentation files based on the list of supported + game/mods are split into their own files (games.h, + supportedmods.html), so they can be generated from a local database + rather than maintained manually. + - Makefile now using gcc-2.95 explicitly, to avoid using gcc3 at this + time. + +2003/08/02 1.16.2 + - Mod recognition and entities for The Point of No Return v.Beta 4.0. + - Even more entities for The Specialists v.Beta 2.0. + +2003/07/30 1.16.1 + - Mod recognition and entities for Master-Sword v1.3, The Wastes RC 1.2, + and Monkeystrike v1.2. + - Additional entities for Natural Selection v2.0, The Specialists v.Beta + 2.0, Earth's Special Forces v.Beta 1.1, The Battlegrounds v1.2, and + International Online Soccer v2.0. + +2003/05/08 1.16 + - Added support for Server_GetBlendingInterface() in order to allow client + and server to properly coordinate custom player model blending. This + should fix the issue with mismatched hitboxes observed with CS and DOD. + - Mod recognition and entities for International Online Soccer v1.0 and + Morbid Inclination v1.0. + - Added studioapi.{cpp,h} to provide Server_GetBlendingInterface. + +2003/05/03 1.15.3 + - More additional entities for Day of Defeat v1.0. + +2003/05/02 1.15.2 + - Mod recognition and entities for Rival Species vBeta 1.0, Public Enemy + vBeta 1.0, and Bumper Cars vAlpha. + - Additional entities for Day of Defeat v1.0, Sven Coop v2.1, WormsHL + vBeta 3.0, and Natural Selection v1.1. + +2003/04/09 1.15.1 + - Additional entities for Firearms v2.7 and Desert Crisis v1.5. + - Fixed mod recognition for Adrenalinegamer v4.x and later. + +2003/02/12 1.15 + - Additional entities for VampireSlayer Chapter V. + - Fixed entity name "TS_PowerUp" for The Specialists 1.5; should fix + precache error for "models/powerup.mdl". + - Added DLFNAME implementation for win32, provided by Jussi Kivilinna. + Thus, "meta info " will now list registered commands and + registered cvars under win32, rather than just under linux. + - Now dynamically allocating lists of registered commands and registered + cvars, rather than a fixed limit of 1024 (and before that, 512). Based + on code provided by Jussi Kivilinna. + - Console listing of regcmds/regfuncs now also shows currently allocated + list sizes. + - Replaced valid_file() using LOAD_FILE_FOR_ME with valid_gamedir_file() + using stat(). Thus, it should no longer find unintended files under the + "valve" subdirectory. + - Normalize filenames under win32 to use slashes (/) and lowercase chars, + to get rid of mixed-slashes (ie "half-life\cstrike/dlls") and to + simplify pathname comparisons. + - Also, canonicalize filenames under both win32/linux to remove ".." and + redundant "/" path components, to provide more reliable pathname + comparisions. + - If meta_CVarRegister fails to find a corresponding plugin for a cvar, it + now logs only a Debug message rather than an Error message, as a cvar_t + that's malloc'd by a plugin can't be traced back. Problem reported by + Olo. + - In plugin trace, added "classname" to DispatchSpawn output. + - Added is_absolute_path() to centralize the logic, and to be more + OS-precise. + - Split meta_init_gamedll() from meta_load_gamedll() so that the correct + and normalized Gamedir is available earlier in the code. + - #define NAME_MAX and PATH_MAX to the correct win32 constants, rather + than using (inaccurate) internal values. + - Renamed internal classes RegFunc to RegCmd, to provide more easily + associated names. + - Lots of internal file organization changes: + - Removed superfluous symlinks in docs dir. + - Renamed toplevel doc files to *.txt. + - Added Config.mak to toplevel dir, to provide project name and subdirs, + so that toplevel Makefile can be used for multiple projects. + - Added copyrights to Makefiles. + - Added blurbs to engine notes for FunctionFromName and NameForFunction, + based on investigation of singleplayer support. + - In source Makefile, added support for compiling linux-only or + win32-only projects. + - In source Makefile, fixed vdate.o to properly compile for each link. + - Removed tmp files in msvc dir (.ncb, .plg). + - Added copyright/GPL blurb to *.rc files. + - In stub/meta_api.cpp, comment out unused variables rather than doing + "if(var)" to satisfy gcc -Wunused. + - Reduced vers_meta.h to just the version and other common info, and + create info_name.h for module-specific name, desc, etc, so that I'll + only have to edit 1 file when increasing version/date for all the DLLs + distributed with Metamod. + - Made res_meta.rc common among Metamod and the plugins, rather than + having a separate res_plugin.rc. + - In source Makefile, added "--include-dir" args to windres, so it can + find the now common vers_meta.h. + - Source Makefile now copies targets into ../dlls, rather than doing + that only for comprehensive "dlls" targets. + - Added "-fno-exceptions -fno-rtti" to possibly reduce code size, + suggested by Jussi Kivilinna. + - For plugins, renamed ie "mm_wdmisc" to "wdmisc_mm" where it was missed + earlier. + - For plugins, better organized common code, to make it more adaptable + to other plugin projects (ie, singlep). Ie, plugin_query, + plugin_attach, plugin_detach; moved plugin welcome banner to + meta_api.cpp; etc. + - Added tools/stlfilter to help hide -Weffc++ warnings from g++ STL + headers (although not using STL at this time..) + +2003/01/24 1.14.1 + - Properly recognize win32 full pathname from GetGameDir. + - Added "#include " for getcwd() under MSVC. + - Trace plugin: Changed AlertMessage formatting, ie from + "atype=at_console/1" to "atype=at_console(1)". + - Stub plugin: fixed to compile under MSVC again. + +2003/01/23 1.14 + - Fixed to handle new behavior of engine routine GET_GAME_DIR under HL + 1.1.1.1 (CS 1.6) beta, where the routine no longer returns the + fullpathname of the game directory, but now returns only the string + passed to hlds as the argument to "-game" (pointed out by Alfred + Reynolds). + - Added meta-util function GET_GAME_INFO to return various string-based + information about the gamedll (name, description, gamedir fullpathname, + dll fullpathname, dll filename). + - Raised META_INTERFACE_VERSION from 5:8 to 5:9. + - Added FAQ. + - Some docs touchups. + +2003/01/18 1.13.4 + - Additional entities for betas of Counter-Strike 1.6 and TFC from HL + 1.1.1.1. + - Added missing #include "osdep.h" to several files, to make sure things + like win32 vsnprintf are defined. + - In stub plugin, added engine_api.cpp, to provide example framework for + hooking engine routines. + - In trace plugin, changed logtag to all caps. + +2003/01/12 1.13.3 + - Additional entities and updated mod recognition for Earth's Special + Forces Beta 1. + - Mod recognition for Retro Firearms 2.5. + - Increased max allowed plugin functions and max allowed plugin cvars from + 512 to 1024. + - Fixed UTIL_VarArgs and UTIL_LogPrintf (copied from SDK) to use proper + bounds-checking (to help prevent buffer overflows). + - Updated Copyright to include "2001-2003". + +2002/11/26 1.13.2 + - Mod recognition and entities for Azure Sheep v1.0, BuzzyBots v2.3, + Outlawsmod v.Beta 1.5, The Specialists v.Beta 1.0, and StargateTC v.Beta + 2.2. + - Additional entities for The Battle Grounds v.Demo 1.0, Firearms v.2.6.5, + Global Warfare v.Beta 2.0, and Tour of Duty v1.1 Beta. + - Updated mod recognition for Rocket Crowbar v1.9. + - Compiled against HLSDK 2.3. + - Corrected missing "const" in vdate.h (noted by Ravenous BugBlatter + Beast). + +2002/10/06 1.13.1 + - Mod recognition and entities for Digital Paintball v1.0, Dragon Mod Z + v1.7, Holy Wars v.beta2, and OeL Half-Life v4.0. + - Additional entities for Adrenalinegamer Mod v6.0 and Natural Selection + v1.0. + - Corrected a cast in os_safe_call (from Olafur Osvaldsson). + +2002/08/24 1.13 + - New config file names and locations, per the Addon Development Standard + rev 1.00. Default config files are now: + - $gamedir/addons/metamod/plugins.ini + - $gamedir/addons/metamod/exec.cfg + - File "metagame.ini" no longer supported. + - Additional entities for WormsHL beta 2.1. + - Mod recognition (no entities) for Retro Counter-Strike 2.5. + - Added release_notes.html. + - Added function "valid_file" in support_meta.h. + +2002/07/11 1.12.4 + - Additional entities for Day of Defeat beta 3.0 and Tour of Duty 0.9.0. + - Mod recognition and entities for Natural Selection 1.0. + - Added "$pg" string for /usr/bin/ident. + +2002/07/01 1.12.3 + - Mod recognition and entities for Valve's Ricochet mod. + - Additional entities for Tour of Duty 0.8.0. + - Moved common code from LINK_ENTITY_TO_GAME to a function, rather than + duplicating the code in ~2000 expanded macros. Based on code from Jussi + Kivilinna . + +2002/06/04 1.12.2 + - Even more entities for Firearms rc2.6. + +2002/05/29 1.12.1 + - Mod recognition and entities for Desert Crisis 1.1, Tour of Duty 0.6.7, + and Train Hunters beta 1.0. + - Additional entities for GoldenEye 1.9C and Firearms rc2.6. + - Fixed meta-util function GET_PLUGIN_PATH to return the full path as + intended, rather than a partial path. + - Updated Copyright to include "2001-2002". + - Fixed Makefile to not update .tags or .htags by default. + +2002/04/22 1.12.0 + - Updated for HL 1109, which adds one Engine routine: + const char *GetPlayerAuthId(edict_t *e); + - Mod recognition and entities for The Battle Grounds 0.6, Gangwars Beta + 1.0, and WormsHL Beta 2.0 + - Additional entities for Day of Defeat beta 2.0 and Oz 2.5. + - Changed error message "user message registered again" to a debug message + (level 3). + - Fixed compile problem under MSVC with strcasecmp. + - Added meta-util function GET_PLUGIN_PATH, so a plugin can know from + whence it was loaded. + - In trace plugin, added more trace info for EngineFprintf, ServerPrint, + IsMapValid, GetPlayerUserId, GetPlayerWONId, GetPlayerAuthId, + CVarGetFloat, CVarGetString, AllocString, Time, IsDedicatedServer, + GetCurrentPlayer, GetPlayerStats. + +2002/02/08 1.11.2 + - Hopefully complete list of entities for Day of Defeat beta 2.0. + - Don't complain for NULL routines in gamedll's NEW_DLL_FUNCTIONS. Should + solve "Couldn't find api call: dod.dll:ShouldCollide" errors with DoD + b2. + - Changed default for newapi ShouldCollide() from 0 to 1, per Mugsy@DoD's + observations. + +2002/02/03 1.11.1 + - Mod recognition and entities for Snow-War 1.0, and Earth`s Special + Forces version Alpha 2.0. + - Additional entities for Oz 2.4.1, Svencoop 2.0, and partial entities for + Day of Defeat beta 2.0. + - Added check for duplicate UserMsg registration (should help resolve + recent "reached max msgs 256" errors). + - Dropped leading zeroes in version number. + - Tweaked "interface version" log message to help reduce confusion. + - Compiled with updated version of mingw; should help reduce dll filesizes + found in the previous release. + - Some additional debugging in gamedll entity linking. + +2001/12/17 1.11.00 + - Mod recognition and entities for Weapon Wars v0.3. + - Additional entities for version 1.2 of Global Warfare. + - Linux binary linked against glibc-2.1.2 for better compatibility. + - 'meta game' now lists user messages registered by gamedll. + - Added meta-util functions GET_USER_MSG_ID and GET_USER_MSG_NAME, so + plugins that need to know RegUserMsg name/id mappings (like bots) don't + need to be loaded at server startup. + - Raised META_INTERFACE_VERSION from 5:6 to 5:7. + - Fixed NUM_FOR_EDICT error in pfnCenterSay (from Fritz Elfert). + - Re-fixed set_new_handler for MSVC (from Fritz Elfert). + - Fixed meta_AddServerCommand; was registering plugin's command string + rather than local string, causing segfault on plugin unload. + - Changed trace plugin to use GET_USER_MSG_NAME instead of local list. + - Added 'const' to 'char *' arguments in DLOPEN and DLSYM macros. + - Commented out names of unused function paramenters, to satisfy "gcc + -Wunused" without generating MSVC errors. + - Added '#pragma warning(disable: 4390)' to disable "empty controlled + statement" warnings in MSVC. + - Updated MSDN url references. + +2001/09/19 1.10.00 + - Updated for HL SDK 2.2, which adds two Engine routines: + qboolean Voice_GetClientListening)(int iReceiver, int iSender); + qboolean Voice_SetClientListening)(int iReceiver, int iSender, qboolean bListen); + - Mod recognition and entities for "Scientist Hunt" v1.2 and Existence + Beta 1.3. + +2001/08/01 1.09.00 + - Mod recognition and entities for 'Wanted!' v1.5. + - Mod recognition for Adrenalinegamer v3.2 and v4.1 (no special entities). + - Additional entities for version 2.3 of Oz Deathmatch. + - Additional entities for version 1.0 of Wizard Wars. + - Additional meta-utility function CALL_GAME_ENTITY. Raised + META_INTERFACE_VERSION from 5:5 to 5:6. + - Added proper GPL notices. + +2001/07/06 1.08.02 + - Added mod recognition and entities for Gunman Chronicles. + - Added list of supported mods to docs. + - Updated MSVC project/workspace files to match recent source changes. + - Fixed problem with set_new_handler compiling under MSVC. + +2001/06/30 1.08.01 + - Updated for Day of Defeat v1.3. The name of its win32 dll changed (was + mp.dll; now dod.dll). No new entities. + - Added mod recognition and entities for Rocket Crowbar. + - Fixed problem with windows internal DLL version (don't use leading + zeros as compiler will assume it's octal notation). + +2001/06/16 1.08.00 + - Allow specifying/overriding various things on the command line, via + "+localinfo". Fields are: + - mm_gamedll + a bot or other dll, instead of the gamedll based on the gamedir. + Note this is now the preferred method; the "metagame.ini" file is + deprecated, but still recognized for backwards compatibility. + - mm_pluginsfile + a file with the list of mm plugins, instead of "metamod.ini". + - mm_execcfg + a cfg file for mm plugin cvar settings, instead of "metaexec.cfg". + - mm_debug + an initial debug level. + - Examples: + ./hlds_run -game cstrike +localinfo mm_gamedll dlls/pod_bot.so + ./hlds_run -game cstrike +localinfo mm_pluginsfile mylist.ini + ./hlds_run -game cstrike +localinfo mm_execcfg mysettings.cfg + ./hlds_run -game cstrike +localinfo mm_debug 7 + - Don't try exec'ing metaexec.cfg unless it exists. + - Added additional entity for Action Half-Life Beta 4, from list forwarded + from the dev team. + - Added a couple additional entities for Global Warfare, from list + provided by the dev team. + - Moved a couple entities from the "common" list back to the "valve" list, + for better organization. + - Changed logmsg "Plugin '%s' interface version didn't match" from + "Warning:" to "Note:" to reduce confusion. + - Added an optional plugin meta-api routine Meta_Init, to be called prior + to GiveFnptrsToDll, to let the dll know that it's going to be + queried/loaded as a metamod plugin, to allow for DLL's that can be used + as both a metamod plugin _and_ a standalone DLL. Raised + META_INTERFACE_VERSION from 5:4 to 5:5. + - Removed segfault handler under linux, when calling plugin console + command functions, as (a) it masked legitimate segfaults in plugin + commands and produced confusing output ("plugin has been unloaded", when + really it segfaultd), and (b) wasn't necessary since the situation + should be covered by other tests. + - Replaced combo SDK macros with inline funcs, and added ones for + accessing serverinfo and localinfo infokey buffers. + - Unfinished code for event triggers is in the source, but is disabled + (since it's not finished yet). + +2001/06/10 1.07.03 + - improper compile was reporting wrong version number + +2001/06/07 1.07.02 + - added mod recognition and best-guess list of entities for Deathmatch + Classic v1 and Global Warfare Beta 1.0. + - updated entity list with best-guess additions and corrected win32 dll + name for Wasteland Beta 2. + - added additional entities for Frontline Force 1.2a, from list forwarded + from the dev team. + +2001/05/25 1.07.01 + - added complete (hopefully) list of additional entities for Front Line + Force 1.2a/1.3. + - added best-guess list of entities for Day of Defeat b1.1. + - added best-guess list of entities for Science & Industry 0.97 (later + confirmed by SI lead programmer). + - added better guess list of entites for Action Half-Life b4. + - shrunk entity lists for Jailbreak and Judgement to include only + mod-specific entities (rather than common Valve entities which are in a + separate list). + - in THREAD_CREATE inline, replaced "(DWORD (*)(void*)) func" with + "(LPTHREAD_START_ROUTINE) func" to properly compile under MSVC. + - added engine_notes.html with a list of all the engine routines, and some + comments. + - added utils/getents.sh script to pull entity lists from .so files. + +2001/05/08 1.07.00 + - fixed "%s" server-crashing bug. "You should never pass strings with + unknown contents as the format string." Metamod was passing a + preformatted non-constant (thus unknown contents) string as the format + string (and only argument) when handling printf-style varargs engine + functions (in particular, AlertMessage). Ie, don't do: + printf(buf); + Instead do: + printf("%s", buf); + - added some entities for Action Half-Life Beta4, which should help + address crashing on startup, especially with Last Man Standing random + weapons. Note that I don't have an official, complete list of entities + for the mod, so there may still be some instances of crashing. + - added debugging messages for printf-style varargs engine routines, since + we can't rely on trace_mm for this (as the messages are re-written by + metamod before being passed to trace). + - better info in trace plugin's log messages for AlertMessage and + CreateNamedEntity. + - altered debug levels AlertMessage API routines in api_info.cpp + +2001/05/04 1.06.10 + - fixed a couple of entities for HL Paintball. + - added links.html to docs, a set of links/URLs and books that I found + helpful for the project. + - added to META_INTERFACE_VERSION comments to include associated metmaod + version for each change. + - additional data checking in various MPluginList routines. + - added 'const' to various function arguments to more properly reflect + function purpose. + - changed various function macros to inlines, to provide more obvious type + checking, and easier debugging. + - adjusted private/public members of various classes, to try and make them + more proper. + - added new_handler code, for upcoming code additions. + - added MPluginList::find(plid_t id), for upcoming code additions. + - added thread primitives to osdep, for upcoming code additions. + +2001/04/29 1.06.02 + - added entities and mod recognition for VampireSlayer and Open-Source + Jailbreak. + - updated mod recognition for current names of Action Half-Life's DLL/SO + files. + - added some entities for FLF 1.2a, listed on Botman's news page. + - added some docs for Installation and Compiling. + - added build type info (optimized, debugging, etc) to the SpecialBuild + tag in the version info for the win32 DLL. + - disabled SDK's "DBG_" functions, for MSVC win32 debug compiles. + +2001/04/22 1.06.01 + - added some entities for FLF 1.2. + - better info in trace plugin's log messages for + DispatchObjectCollsionBox, SetModel, FindEntityByString, SetOrigin, + EntOffsetOfPEntity, PEntityOfEntIndex. + - fixed missing initialization for "len" in wdmisc. + - added links to sections in html docs. + - for non-critical interface version mismatch, changed from a META_ERROR + to just META_LOG, since it's not, strictly speaking, an error. + +2001/04/17 1.06.00 + - added support for "metaexec.cfg", a commands file to be exec'd after + loading the plugins, for plugin commands and cvars, since autoexec.cfg + is parsed too early (before plugins loaded) and server.cfg is parsed too + late (after ServerActivate). + - better info in trace plugin's log messages for MessageBegin, + WriteString, AlertMessage, RegUserMsg + - to provide more manageable trace log output, throttled trace plugin to 1 + logmsg per second, by default (of course, this can cause log messages to + be lost). Added cvar "trace_unlimit" (0/1) to enable unlimited logging, + as it did previously. + - added centersay meta-utility functions (CENTER_SAY, CENTER_SAY_PARMS, + CENTER_SAY_VARARGS). Raised META_INTERFACE_VERSION from 5:3 to 5:4. + - fixed crash when trying to load typical game DLLs (like standalone-bots) + as metamod plugins. + - fixed segfault on failed plugin attach; was dlclosing plugin + prematurely. + - in wdmisc, added a proof-of-concept for catching certain game events by + doing string matching on all the log messages produced by the game. + Ugly, to be sure, but interesting nonetheless. + - added more entities for HL Paintball, and fixed the linux so name. + - added "-Wno-unused" to CFLAGS when compiling sdk_util.o, to alleviate + the complaints from #including all the extra SDK header files and class + definitions. + - removed GetEntityAPI routine from trace plugin, as it's unnecessary as a + metamod plugin if already providing GetEntityAPI2. + - in trace, moved gMetaFunctionTable declaration to plugin.cpp, so that + meta_api.cpp can be a standard (plugin-independent) sourcefile used in + any plugin. + - updated the docs to include recent new features, as well as some better + discussion of coding details. + +2001/04/06 1.05.00 + - created utility callback functions, for use by plugins, to reduce code + duplication and help simplify some things. Currently, these consist of + only some convenient logging functions (LOG_CONSOLE, LOG_MESSAGE, + LOG_ERROR, LOG_DEVELOPER). + - added "mutil_funcs_t" to Meta_Query, to pass the meta utility function + table. Increased META_INTERFACE_VERSION from 5:2 to 5:3. + - made sure all exported DLL routines (ie routines that are accessed via + dlsym) are both declared _and defined_ as 'extern "C"', so that the C++ + compiler enforces parameter type-matching, rather than considering + routines with mis-matched arguments/types to be overloaded functions... + Note that it's not sufficient to just be declared "C"; it has to defined + this way as well, to make sure the C++ compiler matches it with the + declaration. Otherwise, again, it'll consider it an overloaded + function, and allow it happily without complaint, and cause the + subsequent dlsym to fail. + - created and deployed C_DLLEXPORT macro for declaring/defining functions + 'extern "C" DLLEXPORT'. + - added plugin 'wdmisc' as a basic example, and for my miscellaneous + commands/cvars. + - renamed "mm_stub" and "mm_trace" to "stub_mm" and "trace_mm" to make + plugin name more apparent, and to be more consistent with adminmod_MM. + - had to move plugin_info_t to its own header file, to avoid circular + #include's between meta_api.h and mutil.h. + - in dllapi.cpp and engineapi.cpp, pulled RETURN_API out of META_HANDLE + macro, to make it easier to add code to middle of API routines. + - renamed util_meta.h to support_meta.h, to avoid confusion with mutil.h + - some code cleanup (better 80-column linebreaks). + +2001/04/03 1.02.00 + - added support for Half-Life Paintball + - added "*_mm" and "*_MM" to the list of suffixes to look for when loading + plugins at console. + - log errors when plugin tries to use MRES_SUPERCEDE in a _Post function + (supercede is only relevant in a non-Post function; use OVERRIDE in a + Post function). + - mm_trace: added info to trace log for FindEntityInSphere + - added osdep macro for strcasecmp, for compiling under windows + - fixed a debug log message for GetEngineFunctions_Post + - fixed a couple internal references to engine globals (gpGLobals) + - renamed local SDK API routines to "mm_*" for easier debug breakpoints + - altered debug levels for a couple API routines in api_info.cpp + +2001/04/01 1.01.00 + - replaced use of FStrEQ in most places with !strcasecmp, so that case + doesn't matter for things like console commands ("META LOAD" will now + work in addition to "meta load") and paths (like "-game CSTRIKE"; and + win32 filepaths are case-insignificant anyway). Interestingly, the HL + engine ignores case for console commands ("ADMIN_COMMAND" works), but + cvars are only recognized with matching case ("ADMIN_DEBUG" does not + work). Confusing. + - added "by " when printing author info, to make it a bit clearer + - added a bit more operation info to metamod.html + +2001/03/30 1.00.00 + - released as v1.0, for inclusion with release of Adminmod v2.50. + - added $(VERSFILE) to Makefile and Config.mak, to better insure correct + rebuild on version number changes + - added "i486", "i586", and "i686" to "i386" in the list of prefixes to + look for when loading plugins at console. + - added "MDLL*" and "MNEW" macros in meta_api.h, to be more convenient for + plugins to call GameDLL functions. + - added missing "extern gamedll_funcs_t *gpGamedllFuncs" to meta_api.h + - added handling of gpGamedllFuncs in stub, for example purposes. + - fixed problems with running bots under metagame.ini: + - moved instantiation of Plugins object to before meta_load_gamedll, so + that if gamedll calls engine functions during GiveFnptrsToDll (like + hpb_bot does), META_ENGINE_HANDLE won't crash from a null Plugins object + pointer. + - in GET_FUNC_TABLE_FROM_GAME, memset gamedll.funcs.struct_field, and then + free/null it if the gamedll's GetFuncs call fails, to handle the + situation where the gamedll provides GetNewDLLFunctions(), but doesn't + have anything to return (like hpb_bot does, when the real gamedll + doesn't provide GetNewDLLFunctions). + - add handling of gpGamedllFuncs to mm_stub's Meta_Attach(). + +2001/03/27 1.0-rc5 + - fixed problem with crashing when a plugin failed to load (improper + dereference of null 'info' structure; incomplete fix from rc2). + - added a plugin status "badfile", for plugin files that appear to be + invalid metamod plugins; this is to differentiate from "failed", which + is a valid-looking plugin file (queried) but encountered a failure + attaching/unloading/etc. + - changed "-march=i686" optimization to "-march=i586", and moved this to + only the optimized binaries, and not the debugging binaries. As it + turns out, i686 doesn't work on things like AMD K6-III cpus (I know, go + figure :). + - duplicated functionality of adminmod's "admin.ini", except with a file + named "metagame.ini". This will allow (at least partial) use with game + DLLs that metamod doesn't support yet - "partial" because, although the + game DLL will load, it may not work if it uses entities that metamod + doesn't know about yet. It will also allow use of standalone "bot" + DLLs, which sit between metamod and the gamedll (much like metamod sits + between the engine and the gamedll). + - added console command "meta game" to show information about the loaded + game DLL (to help troubleshoot issues with "metagame.ini"). + +2001/03/25 1.0-rc4 + - split linkfunc.cpp into linkent.h, linkgame.cpp, linkplug.cpp + - split entity lists for mods into separate files, one for each mod; these + are used to build linkgame.cpp + - metamod/mm_trace version info should indicate debugging/optimized compile + - added entity support for Judgement DM + - added "-fno-rtti" to mm_trace gcc cflags, to address problem of + unresolved CSaveRestoreBuffer symbols using older versions of gcc + - lowered debug levels in GetEntityAPI, GetNewDLLFunctions, etc to enable + "+developer" messages (6 -> 3). + - removed "-Werror" from Makefile's default cflags; should only be used + on devl system with edited SDK + +2001/03/18 1.0-rc3 + - central Makefile can now build optimzed as well as debugging targets; + default to compile is debugging; default in 'dlls' dir is optimized + - toplevel Makefile builds release tgz/zip files. TGZ file includes only + linux .so objects, and text files in unix-LF format. ZIP file includes + only win32 .dll objects, and text files in dos-CRLF format, and actual + files rather than symlinks. + - added mod recognition for "judgedm" mod; still need entities list + - added 4 entities for Firearms 2.5 + +2001/03/07 1.0-rc2 + - fixed missing WINAPI in mm_trace GiveFnptrsToDll + - added HTML version of docs + - description field in metamod.ini is now optional: + - uses "name" from plugin info for desc by default + - desc field in metamod.ini will override this + - "meta list" shows just desc, rather than desc and name + - altered debug levels for a couple API routines in api_info.cpp + - added missing "load" cmd in "meta" usage help + - added to "meta load" usage help + - added macros RETURN_META(result) and RETURN_META_VALUE(result, value) to + simplify plugin coding + - added parameter "gamedll_funcs" to meta_attach(), to give each plugin a + copy of the gamedll's API function tables + - raised META_INTERFACE_VERSION to "5:2" + - now load gamedll before plugins (rather than the reverse) so that + it'll have the gamedll func tables to hand to the plugins + - changed trace plugin console commands: + trace_version -> trace version + trace -> trace set + untrace -> trace unset + showtrace -> trace show + - added "trace list " to list all available routines for tracing + - fixed broken trace cvars + - for "meta {load,unload,etc}" console cmd, added matching against plugin + logtag, as well as for "mm_" in plugin file + - handle null 'info' after failed plugin load (ie in "meta info" etc) + - fixed "usage: meta list" errors on some meta commands; was calling + cmd_meta_pluginlist() instead of Plugins->show() + - fixed: unload/attach delayed plugins at changelevel + - now doesn't export newapi if gamedll doesn't provide it + - now doesn't call plugins getnewapi if gamedll doesn't provide it + - fixed incorrect apitable references in MPlugin::show() + +2001/02/08 1.0-rc1 + - fixed unistd.h under MSVC + - fixed S_ISREG under MSVC + - fixed strncasecmp under MSVC + - fixed void svr_meta() returning value + - fixed missing WINAPI in mm_stub GiveFnptrsToDll + - remade MSVC project for metamod + - created MSVC project for mm_stub + - added an example "metamod.ini" to ./docs