diff --git a/amxmodx/amxmodx.cpp b/amxmodx/amxmodx.cpp index 91371153..768ac3ce 100755 --- a/amxmodx/amxmodx.cpp +++ b/amxmodx/amxmodx.cpp @@ -33,6 +33,7 @@ #include "amxmodx.h" #include "natives.h" #include "debugger.h" +#include "binlog.h" static cell AMX_NATIVE_CALL get_xvar_id(AMX *amx, cell *params) { @@ -1018,10 +1019,18 @@ static cell AMX_NATIVE_CALL register_plugin(AMX *amx, cell *params) /* 3 param * { CPluginMngr::CPlugin* a = g_plugins.findPluginFast(amx); int i; + + char *title = get_amxstring(amx, params[1], 0, i); + char *vers = get_amxstring(amx, params[2], 1, i); + char *author = get_amxstring(amx, params[3], 2, i); + +#if defined BINLOG_ENABLED + g_BinLog.WriteOp(BinLog_Registered, a->getId(), title, vers); +#endif - a->setTitle(get_amxstring(amx, params[1], 0, i)); - a->setVersion(get_amxstring(amx, params[2], 0, i)); - a->setAuthor(get_amxstring(amx, params[3], 0, i)); + a->setTitle(title); + a->setVersion(vers); + a->setAuthor(author); return 1; } diff --git a/amxmodx/binlog.cpp b/amxmodx/binlog.cpp index 39143443..123ba2ed 100644 --- a/amxmodx/binlog.cpp +++ b/amxmodx/binlog.cpp @@ -1,3 +1,4 @@ +#include #include "amxmodx.h" #include "binlog.h" @@ -53,6 +54,42 @@ void BinLog::Close() //dummy function - logs are not kept open } +void BinLog::WriteOp(BinLogOp op, int plug, ...) +{ + FILE *fp = fopen(m_logfile.c_str(), "ab"); + if (!fp) + return; + + unsigned char c = static_cast(op); + time_t t = time(NULL); + float gt = gpGlobals->time; + fwrite(&c, sizeof(char), 1, fp); + fwrite(&t, sizeof(time_t), 1, fp); + fwrite(>, sizeof(float), 1, fp); + fwrite(&plug, sizeof(int), 1, fp); + + va_list ap; + va_start(ap, plug); + + switch (c) + { + case BinLog_Registered: + { + const char *title = va_arg(ap, const char *); + const char *vers = va_arg(ap, const char *); + c = (char)strlen(title); + fwrite(&c, sizeof(char), 1, fp); + fwrite(title, sizeof(char), c+1, fp); + c = (char)strlen(vers); + fwrite(&c, sizeof(char), 1 ,fp); + fwrite(vers, sizeof(char), c+1, fp); + break; + } + }; + + va_end(ap); +} + void BinLog::CacheAllPlugins() { FILE *fp = fopen(m_dbfile.c_str(), "wb"); @@ -78,16 +115,21 @@ void BinLog::CacheAllPlugins() c = 1; else c = 0; + if (c && pl->isDebug()) + c = 2; fwrite(&c, sizeof(char), 1, fp); len = (char)strlen(pl->getName()); fwrite(&len, sizeof(char), 1, fp); len++; fwrite(pl->getName(), sizeof(char), len, fp); - int objcount; + int natives, publics; AMX *amx = pl->getAMX(); - amx_NumNatives(amx, &objcount); + amx_NumNatives(amx, &natives); + amx_NumPublics(amx, &publics); + fwrite(&natives, sizeof(int), 1, fp); + fwrite(&publics, sizeof(int), 1, fp); char name[34]; - for (int i=0; i BinLog_CallPubFunc, // @@ -55,7 +55,7 @@ public: bool Open(); void Close(); void CacheAllPlugins(); - void WriteOp(BinLogOp op, ...); + void WriteOp(BinLogOp op, int plug, ...); private: String m_dbfile; String m_logfile; diff --git a/amxmodx/msvc/amxmodx_mm.sln b/amxmodx/msvc/amxmodx_mm.sln index 56a614aa..2e4049d8 100755 --- a/amxmodx/msvc/amxmodx_mm.sln +++ b/amxmodx/msvc/amxmodx_mm.sln @@ -7,8 +7,10 @@ Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug JITDebug = JITDebug + JITDebugBinLog = JITDebugBinLog JITMemtestRelease = JITMemtestRelease JITRelease = JITRelease + JITReleaseBinLog = JITReleaseBinLog MaximalSpeed = MaximalSpeed MemtestDebug = MemtestDebug MemtestRelease = MemtestRelease @@ -19,10 +21,14 @@ Global {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.Debug.Build.0 = Debug|Win32 {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITDebug.ActiveCfg = JITDebug|Win32 {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITDebug.Build.0 = JITDebug|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITDebugBinLog.ActiveCfg = JITDebugBinLog|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITDebugBinLog.Build.0 = JITDebugBinLog|Win32 {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITMemtestRelease.ActiveCfg = JITMemtestRelease|Win32 {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITMemtestRelease.Build.0 = JITMemtestRelease|Win32 {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITRelease.ActiveCfg = JITRelease|Win32 {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITRelease.Build.0 = JITRelease|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITReleaseBinLog.ActiveCfg = JITReleaseBinLog|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITReleaseBinLog.Build.0 = JITReleaseBinLog|Win32 {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.MaximalSpeed.ActiveCfg = MaximalSpeed|Win32 {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.MaximalSpeed.Build.0 = MaximalSpeed|Win32 {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.MemtestDebug.ActiveCfg = MemtestDebug|Win32 diff --git a/amxmodx/msvc/amxmodx_mm.vcproj b/amxmodx/msvc/amxmodx_mm.vcproj index 38162695..295ceb84 100755 --- a/amxmodx/msvc/amxmodx_mm.vcproj +++ b/amxmodx/msvc/amxmodx_mm.vcproj @@ -580,6 +580,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -608,6 +755,9 @@ + + @@ -646,6 +796,12 @@ Name="VCCLCompilerTool" AssemblerOutput="0"/> + + + @@ -679,6 +835,12 @@ Name="VCCLCompilerTool" AssemblerOutput="4"/> + + + @@ -712,6 +874,12 @@ Name="VCCLCompilerTool" AssemblerOutput="2"/> + + + @@ -757,6 +925,18 @@ + + + + + + @@ -778,6 +958,9 @@ + + @@ -961,6 +1144,18 @@ + + + + + + diff --git a/amxmodx/msvc8/amxmodx_mm.sln b/amxmodx/msvc8/amxmodx_mm.sln new file mode 100644 index 00000000..ea8a5cfa --- /dev/null +++ b/amxmodx/msvc8/amxmodx_mm.sln @@ -0,0 +1,37 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "amxmodx", "amxmodx_mm.vcproj", "{2BF64D1A-AC89-41B0-9D02-FB8CB610F850}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + JITDebug|Win32 = JITDebug|Win32 + JITMemtestRelease|Win32 = JITMemtestRelease|Win32 + JITRelease|Win32 = JITRelease|Win32 + MaximalSpeed|Win32 = MaximalSpeed|Win32 + MemtestDebug|Win32 = MemtestDebug|Win32 + MemtestRelease|Win32 = MemtestRelease|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.Debug|Win32.ActiveCfg = Debug|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.Debug|Win32.Build.0 = Debug|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITDebug|Win32.ActiveCfg = JITDebug|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITDebug|Win32.Build.0 = JITDebug|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITMemtestRelease|Win32.ActiveCfg = JITMemtestRelease|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITMemtestRelease|Win32.Build.0 = JITMemtestRelease|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITRelease|Win32.ActiveCfg = JITRelease|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.JITRelease|Win32.Build.0 = JITRelease|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.MaximalSpeed|Win32.ActiveCfg = MaximalSpeed|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.MaximalSpeed|Win32.Build.0 = MaximalSpeed|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.MemtestDebug|Win32.ActiveCfg = MemtestDebug|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.MemtestDebug|Win32.Build.0 = MemtestDebug|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.MemtestRelease|Win32.ActiveCfg = MemtestRelease|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.MemtestRelease|Win32.Build.0 = MemtestRelease|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.Release|Win32.ActiveCfg = Release|Win32 + {2BF64D1A-AC89-41B0-9D02-FB8CB610F850}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/amxmodx/msvc8/amxmodx_mm.vcproj b/amxmodx/msvc8/amxmodx_mm.vcproj new file mode 100644 index 00000000..dc8ffef3 --- /dev/null +++ b/amxmodx/msvc8/amxmodx_mm.vcproj @@ -0,0 +1,1339 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +