From 4457b0d8792e88b245f09200d397fe5703a0fe91 Mon Sep 17 00:00:00 2001 From: Twilight Suzuka Date: Tue, 14 Mar 2006 02:50:30 +0000 Subject: [PATCH] Obsolete due to update --- dlls/arrayx/Array.dsp | 108 -- dlls/arrayx/Array.ncb | Bin 109568 -> 0 bytes dlls/arrayx/Array.sln | 18 - dlls/arrayx/Array.vcproj | 151 -- dlls/arrayx/CArray.h | 734 --------- dlls/arrayx/CHashtable.h | 375 ----- dlls/arrayx/CKeytable.h | 703 -------- dlls/arrayx/amxxmodule.cpp | 3078 ------------------------------------ dlls/arrayx/amxxmodule.h | 2241 -------------------------- dlls/arrayx/array.cpp | 31 - dlls/arrayx/element.h | 210 --- dlls/arrayx/moduleconfig.h | 463 ------ dlls/arrayx/osdefs.h | 60 - 13 files changed, 8172 deletions(-) delete mode 100644 dlls/arrayx/Array.dsp delete mode 100644 dlls/arrayx/Array.ncb delete mode 100644 dlls/arrayx/Array.sln delete mode 100644 dlls/arrayx/Array.vcproj delete mode 100644 dlls/arrayx/CArray.h delete mode 100644 dlls/arrayx/CHashtable.h delete mode 100644 dlls/arrayx/CKeytable.h delete mode 100644 dlls/arrayx/amxxmodule.cpp delete mode 100644 dlls/arrayx/amxxmodule.h delete mode 100644 dlls/arrayx/array.cpp delete mode 100644 dlls/arrayx/element.h delete mode 100644 dlls/arrayx/moduleconfig.h delete mode 100644 dlls/arrayx/osdefs.h diff --git a/dlls/arrayx/Array.dsp b/dlls/arrayx/Array.dsp deleted file mode 100644 index af9b5a01..00000000 --- a/dlls/arrayx/Array.dsp +++ /dev/null @@ -1,108 +0,0 @@ -# Microsoft Developer Studio Project File - Name="Array" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=ARRAY - WIN32 RELEASE -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "Array.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "Array.mak" CFG="ARRAY - WIN32 RELEASE" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "Array - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 2 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ARRAY_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /vmg /vms /GX /ZI /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ARRAY_EXPORTS" /D "_WINDLL" /D "_AFXDLL" /U "DLLEXPORT" /FR /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 /nologo /dll /machine:I386 -# SUBTRACT LINK32 /incremental:yes -# Begin Target - -# Name "Array - Win32 Release" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\amxxmodule.cpp -# SUBTRACT CPP /Z -# End Source File -# Begin Source File - -SOURCE=.\array.cpp -# SUBTRACT CPP /Z /u -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\amxxmodule.h -# End Source File -# Begin Source File - -SOURCE=.\CArray.h -# End Source File -# Begin Source File - -SOURCE=.\CHashtable.h -# End Source File -# Begin Source File - -SOURCE=.\CKeytable.h -# End Source File -# Begin Source File - -SOURCE=.\element.h -# End Source File -# Begin Source File - -SOURCE=.\moduleconfig.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# Begin Source File - -SOURCE="..\module\Judy-1.0.1\src\Judy.lib" -# End Source File -# End Group -# End Target -# End Project diff --git a/dlls/arrayx/Array.ncb b/dlls/arrayx/Array.ncb deleted file mode 100644 index 6b281a3b772242d19271fc2fc14b8fcff5a709b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109568 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 diff --git a/dlls/arrayx/Array.sln b/dlls/arrayx/Array.sln deleted file mode 100644 index b132f8b1..00000000 --- a/dlls/arrayx/Array.sln +++ /dev/null @@ -1,18 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Array", "Array.vcproj", "{11B6F2E4-A603-4559-8E64-FFBF9541E238}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {11B6F2E4-A603-4559-8E64-FFBF9541E238}.Release.ActiveCfg = Release|Win32 - {11B6F2E4-A603-4559-8E64-FFBF9541E238}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/dlls/arrayx/Array.vcproj b/dlls/arrayx/Array.vcproj deleted file mode 100644 index f73a03b5..00000000 --- a/dlls/arrayx/Array.vcproj +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dlls/arrayx/CArray.h b/dlls/arrayx/CArray.h deleted file mode 100644 index f35ad395..00000000 --- a/dlls/arrayx/CArray.h +++ /dev/null @@ -1,734 +0,0 @@ -Pvoid_t MasterArray = (Pvoid_t) NULL; //Create the control array - -//Create an array that stores whether or not indices are used. -Pvoid_t MasterArray_Binary = (Pvoid_t) NULL; - -void DeleteMasterArray(void); - -Word_t NewArray(Word_t Index, Word_t reserve = 0); -PPvoid_t Find_Array(Word_t Index, Word_t disable_check = 1, AMX *amx = 0); -void DeleteArray(Word_t Index); -void ClearArray(Word_t Index); - -template -void Array_Set(PPvoid_t Array, char* Index, Type value); - -PPvoid_t Array_Get(AMX* amx, PPvoid_t Array, Word_t Index, int ignore_error = 0); -void DeleteCell(Pvoid_t* Array, Word_t Index); - -void Delete_MasterArray(void) -{ - Word_t - Index = 0, - success = 0; - J1F(success, MasterArray_Binary, Index); - while( success ) - { - DeleteArray( Index ); //Delete array. - J1F(success, MasterArray_Binary, Index); //Get next array - } -} - -Word_t NewArray(Word_t Index, Word_t reserve) -{ - Word_t success; //Dummy for macros. - J1T(success, MasterArray_Binary, Index); //Check if bit is already set. - - if (success && reserve) - return Index; //If the bit is set but it's 'reserved', return the index. - - //Only do this if the bit is not set. - J1FE(success, MasterArray_Binary, Index); - J1S(success, MasterArray_Binary, Index); - - PPvoid_t Array = JudyLIns(&MasterArray, Index, PJE0); - *Array = (PWord_t) NULL; - - return Index; -} - -PPvoid_t Find_Array(Word_t Index, Word_t disable_check, AMX *amx) -{ - Word_t success; - J1T(success, MasterArray_Binary, Index); - if (success || disable_check) - { //Bit is valid - if(!success) - NewArray(Index); - - return JudyLGet( MasterArray, Index, PJE0); - } - MF_LogError(amx,AMX_ERR_NATIVE,"Array %d is invalid", Index); - return NULL; -} - -void DeleteArray(Word_t Index) -{ - int success; - J1T(success, MasterArray_Binary, Index); - if (success) - { //If the bit is set, clear and delete array. - ClearArray(Index); - J1U(success, MasterArray_Binary, Index); - JudyLDel(&MasterArray, Index, PJE0); - } -} - -void ClearArray(Word_t Index) -{ - int success; - J1T(success, MasterArray_Binary, Index); - if (success) //dont bother with unset arrays. - { - PPvoid_t Array = Find_Array(Index); - Word_t index = 0; - PPvoid_t PValue = JudyLFirst(*Array, &index, PJE0); - while (PValue != NULL) - { - element elem_value = *reinterpret_cast(*PValue); - elem_value.delete_element(); - PValue = JudyLNext(*Array, &index, PJE0); - } - JudyLFreeArray(Array, PJE0); - } -} - -static cell AMX_NATIVE_CALL new_array(AMX *amx,cell *params) -{ - return NewArray(params[1], params[2]); -} - -template //This will support input char*, Vector*, int, and cell_real*. -void Array_Set(PPvoid_t Array, int Index, Type value) -{ - PPvoid_t PValue; // pointer to array element value - PValue = JudyLIns(Array, Index, PJE0); - *PValue = reinterpret_cast(value); -} - -PPvoid_t Array_Get(AMX* amx, PPvoid_t Array, int Index, int ignore_error = 0) -{ - PPvoid_t PValue = JudyLGet( *Array, Index, PJE0 ); - if (PValue == NULL && !ignore_error) - MF_LogError(amx, AMX_ERR_NATIVE, "Array index %d is invalid", Index); - return PValue; -} - -void DeleteCell(PPvoid_t Array, Word_t Index) -{ - JudyLDel(Array, Index, PJE0); -} - - -static cell AMX_NATIVE_CALL delete_array(AMX *amx,cell *params) -{ - DeleteArray( params[1] ); - - return 1; -} - -static cell AMX_NATIVE_CALL clear_array(AMX *amx,cell *params) -{ - ClearArray( params[1] ); - - return 1; -} - -static cell AMX_NATIVE_CALL Array_Save(AMX *amx, cell *params) -{ - PPvoid_t Array = Find_Array(params[1], params[3], amx); - if (Array == NULL) return 0; - - int filename_length; - char *file = MF_GetAmxString(amx, params[2], 0, &filename_length); - file = MF_BuildPathname("%s", file); - unlink(file); - FILE *ArrayDB = fopen(file,"w"); - if (!ArrayDB) - return 0; - Word_t Index = 0; - PPvoid_t PValue = JudyLFirst(*Array, &Index, PJE0); - element elem = NULL; - char elem_type = 0; - - int error; - - REAL vector_data[3] = { 0.0, 0.0, 0.0 }; - while (PValue) - { - elem = *reinterpret_cast(*PValue); - elem_type = elem.get_type(); - - if (elem_type < elem_type_int || elem_type > elem_type_vector) - continue; - - fwrite(&Index, sizeof(int), 1, ArrayDB); - fwrite(&elem_type, sizeof(char), 1, ArrayDB); - if (elem_type == elem_type_int) - { - int int_buffer = elem.get_int(error); - fwrite(&int_buffer, sizeof(int), 1, ArrayDB); - } - else if (elem_type == elem_type_real) - { - REAL flo_buffer = elem.get_flo(error); - fwrite(&flo_buffer, sizeof(REAL), 1, ArrayDB); - } - else if (elem_type == elem_type_char) - { - const char* str_buffer = elem.get_str(error); - short buf_len = strlen(str_buffer); - fwrite(&buf_len, sizeof(short), 1, ArrayDB); - fwrite(str_buffer, sizeof(char), buf_len, ArrayDB); - } - else if (elem_type == elem_type_vector) - { - const Vector* vec_buffer = elem.get_vec(error); - fwrite(vec_buffer, sizeof(Vector), 1, ArrayDB); - } - PValue = JudyLNext(*Array, &Index, PJE0); - } - fclose(ArrayDB); - return 1; -} - -static cell AMX_NATIVE_CALL Array_Load(AMX *amx, cell *params) -{ - //params[1]: file - int filename_length; - char *file = MF_GetAmxString(amx, params[1], 0, &filename_length); - file = MF_BuildPathname("%s", file); - FILE *ArrayDB = fopen(file, "a+"); - if (!ArrayDB) - return 0; - - //params[2]: array to create (optional index supplied) - int ArrayIndex = NewArray(params[2], params[3]); - ClearArray(ArrayIndex); //make sure the array is empty. - PPvoid_t Array = Find_Array(ArrayIndex); - while(!feof(ArrayDB)) - { - int index = 0; char type = 0; - element *elem_value = NULL; - fread(&index, sizeof(int), 1, ArrayDB); - if (feof(ArrayDB) || ferror(ArrayDB)) - break; - - fread(&type, sizeof(char), 1, ArrayDB); - - if (type < elem_type_int || type > elem_type_vector) - { - MF_LogError(amx, AMX_ERR_FORMAT, "Error loading array database \"%s\" into array %d. Bad file.", file, ArrayIndex); - return ArrayIndex; - } - else if (type == elem_type_int) - { - int value = 0; fread(&value, sizeof(int), 1, ArrayDB); - elem_value = new element(value); - } - else if (type == elem_type_real) - { - REAL value = 0; fread(&value, sizeof(REAL), 1, ArrayDB); - elem_value = new element(value); - } - else if (type == elem_type_char) - { - short length; fread(&length, sizeof(short), 1, ArrayDB); - char* value = new char[length+1]; fgets(value, length+1, ArrayDB); - elem_value = new element(value); - delete(value); - } - else if (type == elem_type_vector) - { - Vector *value = new Vector(); fread(value, sizeof(Vector), 1, ArrayDB); - elem_value = new element(value); - } - Array_Set(Array,index,elem_value); - } - fclose(ArrayDB); - return ArrayIndex; -} - -static cell AMX_NATIVE_CALL Array_Save_ASCII(AMX *amx, cell *params) -{ - //params[1]: file - int filename_length; - char *inputfile = MF_GetAmxString(amx, params[1], 0, &filename_length); - inputfile = MF_BuildPathname("%s", inputfile); - FILE *ArrayDB = fopen(inputfile, "a+"); - if (!ArrayDB) - return 0; - - char *outputfile = MF_GetAmxString(amx, params[2], 0, &filename_length); - outputfile = MF_BuildPathname("%s", outputfile); - FILE *ReadableDB = fopen(outputfile, "w"); - - char *buffer = "\0"; - char *buffer_two = "\0"; - - while(!feof(ArrayDB)) - { - Word_t index = 0; char type = 0; - fread(&index, sizeof(int), 1, ArrayDB); - if (feof(ArrayDB) || ferror(ArrayDB)) - break; - - fread(&type, sizeof(char), 1, ArrayDB); - - sprintf(buffer, "Index % 11d\tType %7s,", index, elem_types[type]); - if (type < elem_type_int || type > elem_type_vector) - { - MF_LogError(amx, AMX_ERR_FORMAT, "Error loading array database \"%s\" into readable format. Bad file.", inputfile); - return 0; - } - else if (type == elem_type_int) - { - int value = 0; fread(&value, sizeof(int), 1, ArrayDB); - sprintf(buffer, "%s\t\t\tValue: %d\n", buffer, value); - } - else if (type == elem_type_real) - { - REAL value = 0; fread(&value, sizeof(REAL), 1, ArrayDB); - sprintf(buffer, "%s\t\t\tValue: %f\n", buffer, value); - } - else if (type == elem_type_char) - { - short length; fread(&length, sizeof(short), 1, ArrayDB); - char* value = new char[length+1]; fgets(value, length+1, ArrayDB); - sprintf(buffer, "%s Length: %d\tValue: \"%s\"\n", buffer, length, value); - delete value; - } - else if (type == elem_type_vector) - { - Vector *value = new Vector(); fread(value, sizeof(Vector), 1, ArrayDB); - sprintf(buffer, "%s\t\t\tValue: {%f,%f,%f}\n", buffer, (*value).x, (*value).y, (*value).z); - delete value; - } - fwrite(buffer, sizeof(char), strlen(buffer), ReadableDB); - } - fclose(ArrayDB); - fclose(ReadableDB); - return 1; -} - -static cell AMX_NATIVE_CALL Array_SetVector(AMX *amx,cell *params) -{ - PPvoid_t Array = Find_Array(params[1], params[4], amx); - if (Array == NULL) return 0; - - cell *input_vec = MF_GetAmxAddr(amx, params[3]); - Vector *value = new Vector( - amx_ctof(input_vec[0]), - amx_ctof(input_vec[1]), - amx_ctof(input_vec[2]) - ); - int Index = params[2]; - - PPvoid_t PValue = Array_Get(amx, Array, Index, 1); - element *elem_value = NULL; - if ( PValue == NULL ) - elem_value = new element(value); - else - { - elem_value = reinterpret_cast(*PValue); - (*elem_value).set_vec(value); - } - Array_Set(Array,Index,elem_value); - return 1; -} - -static cell AMX_NATIVE_CALL Array_GetVector(AMX *amx, cell *params) -{ - PPvoid_t Array = Find_Array(params[1], params[4], amx); - if (Array == NULL) return 0; - - int Index = params[2]; - PPvoid_t PValue = Array_Get(amx, Array, Index, params[4]); - - cell *vAmx = MF_GetAmxAddr(amx, params[3]); - - if( PValue == NULL ) { - vAmx[0] = amx_ftoc(0); - vAmx[1] = amx_ftoc(0); - vAmx[2] = amx_ftoc(0); - return 0; - } - element elem_value = *reinterpret_cast(*PValue); - int error = 0; - const Vector retr_vec = *elem_value.get_vec(error); - if (error) - elem_value.issue_type_error(amx, params[1], Index); - vAmx[0] = amx_ftoc(retr_vec.x); - vAmx[1] = amx_ftoc(retr_vec.y); - vAmx[2] = amx_ftoc(retr_vec.z); - return 1; -} - -static cell AMX_NATIVE_CALL Array_SetString(AMX *amx,cell *params) -{ - //params[1]: array - PPvoid_t Array = Find_Array(params[1], params[4], amx); - if (Array == NULL) return 0; - - //params[2]: index - int Index = params[2]; - - //params[3]: value - int iLen = 0; - char *value = MF_GetAmxString(amx,params[3],1,&iLen); - - //element that is stored at index - PPvoid_t PValue = Array_Get(amx, Array, Index, 1); - element *elem_value = NULL; - if ( PValue == NULL ) - elem_value = new element(value); - else - { - elem_value = reinterpret_cast(*PValue); - (*elem_value).set_str(value); - } - Array_Set(Array,Index,elem_value); - return 1; -} - -static cell AMX_NATIVE_CALL Array_GetString(AMX *amx,cell *params) -{ - //params[1]: array - PPvoid_t Array = Find_Array(params[1], params[5], amx); - if (Array == NULL) return 0; - - //params[2]: index - int Index = params[2]; - - Pvoid_t * PValue = Array_Get(amx, Array, Index, params[5]); - - //params[3] and params[4] are the return string and length respectively. - - if( PValue == NULL ) return MF_SetAmxString( amx , params[3] , "dne", params[4] ); - - element elem_value = *reinterpret_cast(*PValue); - - int error = 0; - const char* str_out = elem_value.get_str(error); - if (error) - elem_value.issue_type_error(amx, params[1], Index); - return MF_SetAmxString( amx , params[3] , str_out, params[4] ); -} - -static cell AMX_NATIVE_CALL Array_SetFloat(AMX *amx,cell *params) -{ - //params[1]: array - PPvoid_t Array = Find_Array(params[1], params[4], amx); - if (Array == NULL) return 0; - - //params[2]: index - int Index = params[2]; - - //params[3]: value - PPvoid_t PValue = Array_Get(amx, Array, Index, 1); - element *elem_value = NULL; - if ( PValue == NULL ) - elem_value = new element(amx_ctof(params[3])); - else - { - elem_value = reinterpret_cast(*PValue); - (*elem_value).set_flo(amx_ctof(params[3])); - } - Array_Set(Array,Index,elem_value); - - return 1; -} - -static cell AMX_NATIVE_CALL Array_GetFloat(AMX *amx,cell *params) -{ - //params[1]: array - PPvoid_t Array = Find_Array(params[1], params[3], amx); - if (Array == NULL) return 0; - - //params[2]: index - int Index = params[2]; - - PPvoid_t PValue = Array_Get(amx, Array, Index, params[3]); - - if( PValue == NULL ) return amx_ftoc(0.0); - - element elem_value = *reinterpret_cast(*PValue); - - int error = 0; - cell retr_float = amx_ftoc(elem_value.get_flo(error)); - if (error) - elem_value.issue_type_error(amx, params[1], Index); - return retr_float; -} - -static cell AMX_NATIVE_CALL Array_SetInt(AMX *amx,cell *params) -{ - //params[1]: array - PPvoid_t Array = Find_Array(params[1], params[3], amx); - if (Array == NULL) return 0; - - //params[2]: index - int Index = params[2]; - - PPvoid_t PValue = Array_Get(amx, Array, Index, 1); - element *elem_value = NULL; - if ( PValue == NULL ) - elem_value = new element(params[3]); - else - { - elem_value = reinterpret_cast(*PValue); - (*elem_value).set_int(params[3]); - } - Array_Set(Array,Index,elem_value); - - return 1; -} - -static cell AMX_NATIVE_CALL Array_GetInt(AMX *amx,cell *params) -{ - //params[1]: array - PPvoid_t Array = Find_Array(params[1], params[3], amx); - if (Array == NULL) return 0; - - //params[2]: index - int Index = params[2]; - - Pvoid_t * PValue = Array_Get(amx, Array, Index, params[3]); - - if( PValue == NULL ) return 0; - - element elem_value = *reinterpret_cast(*PValue); - - int error = 0; - cell retr_int = elem_value.get_int(error); - if (error) - elem_value.issue_type_error(amx, params[1], Index); - return retr_int; -} - -static cell AMX_NATIVE_CALL array_size(AMX *amx,cell *params) -{ - Pvoid_t * Array = Find_Array(params[1],params[4],amx); - if (Array == NULL) return 0; - - return JudyLCount( *Array, params[2], params[3],PJE0); -} - -static cell AMX_NATIVE_CALL array_count(AMX *amx,cell *params) -{ - return JudyLCount( MasterArray, params[1], params[2],PJE0); -} - -static cell AMX_NATIVE_CALL array_memory(AMX *amx,cell *params) -{ - Pvoid_t * Array = Find_Array(params[1],params[2],amx); - if (Array == NULL) return 0; - - return JudyLMemUsed(*Array); -} - -static cell AMX_NATIVE_CALL delete_cell(AMX *amx,cell *params) -{ - Pvoid_t * Array = Find_Array(params[1]); - if (Array == NULL) return 0; - - DeleteCell( Array, params[2] ); - - return 1; -} - -static cell AMX_NATIVE_CALL array_next(AMX *amx,cell *params) -{ - PPvoid_t Array = Find_Array(params[1],params[4],amx); - if (Array == NULL) return 0; - - Word_t Index = Word_t(params[2]); - cell *success = MF_GetAmxAddr(amx, params[3]); - - PPvoid_t pointer; - pointer = JudyLNext(*Array, &Index, PJE0); - - *success = (pointer == NULL) ? 0 : 1; - return cell(Index); -} - -static cell AMX_NATIVE_CALL array_prev(AMX *amx,cell *params) -{ - PPvoid_t Array = Find_Array(params[1],params[4],amx); - if (Array == NULL) return 0; - - Word_t Index = Word_t(params[2]); - cell *success = MF_GetAmxAddr(amx, params[3]); - - PPvoid_t pointer; - pointer = JudyLPrev(*Array, &Index, PJE0); - - *success = (pointer == NULL) ? 0 : 1; - return cell(Index); -} - -static cell AMX_NATIVE_CALL array_first(AMX *amx,cell *params) -{ - PPvoid_t Array = Find_Array(params[1],params[4],amx); - if (Array == NULL) return 0; - - Word_t Index = Word_t(params[2]); - cell *success = MF_GetAmxAddr(amx, params[3]); - - PPvoid_t pointer; - pointer = JudyLFirst(*Array, &Index, PJE0); - - *success = (pointer == NULL) ? 0 : 1; - return cell(Index); -} - -static cell AMX_NATIVE_CALL array_last(AMX *amx,cell *params) -{ - PPvoid_t Array = Find_Array(params[1],params[4],amx); - if (Array == NULL) return 0; - - Word_t Index = Word_t(params[2]); - cell *success = MF_GetAmxAddr(amx, params[3]); - - PPvoid_t pointer; - pointer = JudyLLast(*Array, &Index, PJE0); - - *success = (pointer == NULL) ? 0 : 1; - return cell(Index); -} - -static cell AMX_NATIVE_CALL array_nextempty(AMX *amx,cell *params) -{ - PPvoid_t Array = Find_Array(params[1],params[4],amx); - if (Array == NULL) return 0; - - Word_t Index = (Word_t)params[2]; - - cell *success = MF_GetAmxAddr(amx, params[3]); - *success = JudyLNextEmpty(*Array, &Index, PJE0); - - return (cell)Index; -} - -static cell AMX_NATIVE_CALL array_prevempty(AMX *amx,cell *params) -{ - PPvoid_t Array = Find_Array(params[1],params[4],amx); - if (Array == NULL) return 0; - - Word_t Index = (Word_t)params[2]; - - cell *success = MF_GetAmxAddr(amx, params[3]); - *success = JudyLPrevEmpty(*Array, &Index, PJE0); - - return (cell)Index; -} - -static cell AMX_NATIVE_CALL array_firstempty(AMX *amx,cell *params) -{ - PPvoid_t Array = Find_Array(params[1],params[4],amx); - if (Array == NULL) return 0; - - Word_t Index = (Word_t)params[2]; - - cell *success = MF_GetAmxAddr(amx, params[3]); - *success = JudyLFirstEmpty(*Array, &Index, PJE0); - - return (cell)Index; -} - -static cell AMX_NATIVE_CALL array_lastempty(AMX *amx,cell *params) -{ - PPvoid_t Array = Find_Array(params[1],params[4],amx); - if (Array == NULL) return 0; - - Word_t Index = (Word_t)params[2]; - - cell *success = MF_GetAmxAddr(amx, params[3]); - *success = JudyLLastEmpty(*Array, &Index, PJE0); - - return (cell)Index; -} - -static cell AMX_NATIVE_CALL array_isempty(AMX *amx,cell *params) -{ - PPvoid_t Array = Find_Array(params[1],params[3],amx); - if (Array == NULL) return 0; - - PPvoid_t pointer; - pointer = JudyLGet(*Array, params[2], PJE0); - - return (pointer == NULL) ? 1 : 0; -} - -static cell AMX_NATIVE_CALL array_isfilled(AMX *amx,cell *params) -{ - //params[1]: array - PPvoid_t Array = Find_Array(params[1],params[3],amx); - if (Array == NULL) return 0; - - //params[2]: index - PPvoid_t pointer; - pointer = JudyLGet(*Array, params[2], PJE0); - - return (pointer != NULL) ? 1 : 0; -} - -static cell AMX_NATIVE_CALL Array_ByCount(AMX *amx,cell *params) -{ - PPvoid_t Array = Find_Array(params[1],params[4],amx); - if (Array == NULL) return 0; - - Word_t Index = Word_t(params[3]); - cell *success = MF_GetAmxAddr(amx, params[4]); - - PPvoid_t pointer; - pointer = JudyLByCount(*Array, params[2], &Index, PJE0); - - *success = (pointer == NULL) ? 0 : 1; - return cell(Index); -} - -AMX_NATIVE_INFO array_exports[] = { - { "array_set_string", Array_SetString }, - { "array_get_string", Array_GetString }, - - { "array_set_int", Array_SetInt }, - { "array_get_int", Array_GetInt }, - - { "array_set_float", Array_SetFloat }, - { "array_get_float", Array_GetFloat }, - - { "array_set_vector", Array_SetVector }, - { "array_get_vector", Array_GetVector }, - - { "array_isempty", array_isempty }, - { "array_isfilled", array_isfilled }, - - { "array_remove", delete_cell }, - - { "array_create", new_array }, - { "array_delete", delete_array }, - { "array_clear", clear_array }, - - { "array_size", array_size }, - { "array_count", array_count }, - { "array_memory", array_memory }, - - { "array_nextempty", array_nextempty }, - { "array_prevempty", array_prevempty }, - { "array_firstempty", array_firstempty }, - { "array_lastempty", array_lastempty }, - { "array_next", array_next }, - { "array_prev", array_prev }, - { "array_first", array_first }, - { "array_last", array_last }, - - { "array_save", Array_Save }, - { "array_load", Array_Load }, - - { "array_get_nth", Array_ByCount }, - - { "array_save_ascii", Array_Save_ASCII }, - - { NULL, NULL } -}; \ No newline at end of file diff --git a/dlls/arrayx/CHashtable.h b/dlls/arrayx/CHashtable.h deleted file mode 100644 index 61e477b0..00000000 --- a/dlls/arrayx/CHashtable.h +++ /dev/null @@ -1,375 +0,0 @@ -#if !defined _JUDYHS_ENABLED_ -#define _JUDYHS_ENABLED_ - -Pvoid_t MasterHashtable = (Pvoid_t) NULL; //Create the new array - -//Create an array that stores whether or not indices are used. -Pvoid_t MasterHashtable_Binary = (Pvoid_t) NULL; - -void Delete_MasterHashtable(void); - -Word_t New_Hashtable(Word_t Index, Word_t reserve = 0); -Pvoid_t* Find_Hashtable(Word_t Index, Word_t disable_check = 1, AMX *amx = 0); -void Delete_Hashtable(Word_t Index); -void Clear_Hashtable(Word_t Index); - -template -void Hashtable_Set(PPvoid_t Hashtable, char *Index, Word_t Length, Type value); - -PPvoid_t Hashtable_Get(AMX* amx, Pvoid_t Hashtable, char *Index, int ignore_error = 0); - -void Delete_MasterHashtable(void) -{ - Word_t - Index = 0, - success; - J1F(success, MasterHashtable_Binary, Index); - while( success ) - { - Delete_Hashtable(Index); - J1F(success, MasterHashtable_Binary, Index); - } -} - -Word_t New_Hashtable(Word_t Index, Word_t reserve) -{ - Word_t success; //Dummy for macros. - J1T(success, MasterHashtable_Binary, Index); - - if (success && reserve) - return Index; //If the bit is set but it's 'reserved', return the index. - - //Only do this if the bit is not set or not reserved. - J1FE(success, MasterHashtable_Binary, Index); - J1S(success, MasterHashtable_Binary, Index); - - PPvoid_t Hashtable = JudyLIns(&MasterHashtable, Index, PJE0); - *Hashtable = (PWord_t) NULL; - - return Index; -} - -PPvoid_t Find_Hashtable(Word_t Index, Word_t disable_check, AMX* amx) -{ - Word_t success; - J1T(success, MasterHashtable_Binary, Index); - if (success || disable_check) - { //Bit is valid - if(!success) - New_Hashtable(Index); - - return JudyLGet(MasterHashtable, Index, PJE0); - } - MF_LogError(amx,AMX_ERR_NATIVE,"Hashtable %d is invalid.", Index); - return NULL; -} - -void Delete_Hashtable(Word_t Index) -{ - int success; - J1T(success, MasterHashtable_Binary, Index); - if (success) - { //If the bit was set, clear, unset and delist hashtable. - Clear_Hashtable(Index); - J1U(success, MasterHashtable_Binary, Index); - JudyLDel(&MasterHashtable, Index, PJE0); - } -} - -void Clear_Hashtable(Word_t Index) -{ - int success; - J1T(success, MasterHashtable_Binary, Index); - if (success) //dont bother with unset hashtables. - { - PPvoid_t Hashtable = Find_Hashtable(Index); - JHSFA(success, *Hashtable); - } -} - -template //This will support input char*, Vector*, int, and cell_real*. -void Hashtable_Set(PPvoid_t Hashtable, char* Index, Type value) -{ - int Len = strlen(Index)+1; - PPvoid_t PValue = JudyHSIns(Hashtable, Index, Len, PJE0); - *PValue = reinterpret_cast(value); -} - -PPvoid_t Hashtable_Get(AMX* amx,PPvoid_t Hashtable, char *Index, int ignore_error = 0) -{ - PPvoid_t PValue = JudyHSGet(*Hashtable, Index, strlen(Index)+1); - if (PValue == NULL && !ignore_error) - MF_LogError(amx, AMX_ERR_NATIVE, "Hashtable get on index \"%s\" is invalid", Index); - return PValue; -} - -static cell AMX_NATIVE_CALL Hashtable_Create(AMX *amx, cell *params) -{ - return New_Hashtable(params[1],params[2]); -} - -static cell AMX_NATIVE_CALL Hashtable_Delete(AMX *amx, cell *params) -{ - Delete_Hashtable( params[1] ); - - return 1; -} - -static cell AMX_NATIVE_CALL Hashtable_Clear(AMX *amx, cell *params) -{ - Clear_Hashtable( params[1] ); - - return 1; -} - -static cell AMX_NATIVE_CALL Hashtable_SetVector(AMX *amx,cell *params) -{ - PPvoid_t Hashtable = Find_Hashtable(params[1], params[4], amx); - if (Hashtable == NULL) return 0; - - cell *input_vec = MF_GetAmxAddr(amx, params[3]); - Vector *value = new Vector( - amx_ctof(input_vec[0]), - amx_ctof(input_vec[1]), - amx_ctof(input_vec[2]) - ); - int strlen; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlen); - - PPvoid_t PValue = Hashtable_Get(amx, Hashtable, Index, 1); - element *elem_value = NULL; - if ( PValue == NULL ) - elem_value = new element(value); - else - { - elem_value = reinterpret_cast(*PValue); - (*elem_value).set_vec(value); - } - Hashtable_Set(Hashtable,Index,elem_value); - return 1; -} - - -static cell AMX_NATIVE_CALL Hashtable_GetVector(AMX *amx, cell *params) -{ - PPvoid_t Hashtable = Find_Hashtable(params[1], params[4], amx); - if (Hashtable == NULL) return 0; - - int strlen; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlen); - PPvoid_t PValue = Hashtable_Get(amx, Hashtable, Index, params[4]); - - cell *vAmx = MF_GetAmxAddr(amx, params[3]); - - if( PValue == NULL ) { - vAmx[0] = amx_ftoc(0); - vAmx[1] = amx_ftoc(0); - vAmx[2] = amx_ftoc(0); - return 0; - } - element elem_value = *reinterpret_cast(*PValue); - int error = 0; - const Vector retr_vec = *elem_value.get_vec(error); - if (error) - elem_value.issue_type_error(amx, params[1], Index); - vAmx[0] = amx_ftoc(retr_vec.x); - vAmx[1] = amx_ftoc(retr_vec.y); - vAmx[2] = amx_ftoc(retr_vec.z); - return 1; -} - -static cell AMX_NATIVE_CALL Hashtable_SetString(AMX *amx,cell *params) -{ - //params[1]: hashtable - PPvoid_t Hashtable = Find_Hashtable(params[1], params[4], amx); - if (Hashtable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - - //params[3]: value - int iLen = 0; - char *value = MF_GetAmxString(amx,params[3],1,&iLen); - - PPvoid_t PValue = Hashtable_Get(amx, Hashtable, Index, 1); - element *elem_value = NULL; - if ( PValue == NULL ) - elem_value = new element(value); - else - { - elem_value = reinterpret_cast(*PValue); - (*elem_value).set_str(value); - } - Hashtable_Set(Hashtable,Index,elem_value); - - return 1; -} - -static cell AMX_NATIVE_CALL Hashtable_GetString(AMX *amx,cell *params) -{ - //params[1]: hashtable - PPvoid_t Hashtable = Find_Hashtable(params[1], params[5], amx); - if (Hashtable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - - Pvoid_t * PValue = Hashtable_Get(amx, Hashtable, Index, params[5]); - - //params[3] and params[4] are the return string and length respectively. - - - if( PValue == NULL ) - return MF_SetAmxString(amx, params[3] , "dne", params[4] ); - - element elem_value = *reinterpret_cast(*PValue); - - int error = 0; - if (error) - elem_value.issue_type_error(amx, params[1], Index); - const char* str_out = elem_value.get_str(error); - return MF_SetAmxString( amx , params[3] , str_out, params[4] ); -} - -static cell AMX_NATIVE_CALL Hashtable_SetFloat(AMX *amx,cell *params) -{ - //params[1]: hashtable - PPvoid_t Hashtable = Find_Hashtable(params[1], params[4], amx); - if (Hashtable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - //params[3]: value - PPvoid_t PValue = Hashtable_Get(amx, Hashtable, Index, 1); - element *elem_value = NULL; - if ( PValue == NULL ) - elem_value = new element(amx_ctof(params[3])); - else - { - elem_value = reinterpret_cast(*PValue); - (*elem_value).set_flo(amx_ctof(params[3])); - } - Hashtable_Set(Hashtable,Index,elem_value); - - return 1; -} - -static cell AMX_NATIVE_CALL Hashtable_GetFloat(AMX *amx,cell *params) -{ - //params[1]: hashtable - PPvoid_t Hashtable = Find_Hashtable(params[1], params[3], amx); - if (Hashtable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - - PPvoid_t PValue = Hashtable_Get(amx, Hashtable, Index, params[3]); - - if( PValue == NULL ) return amx_ftoc(0.0); - - element elem_value = *reinterpret_cast(*PValue); - - int error = 0; - cell retr_float = amx_ftoc(elem_value.get_flo(error)); - if (error) - elem_value.issue_type_error(amx, params[1], Index); - return retr_float; -} - -static cell AMX_NATIVE_CALL Hashtable_SetInt(AMX *amx,cell *params) -{ - //params[1]: hashtable - PPvoid_t Hashtable = Find_Hashtable(params[1], params[4], amx); - if (Hashtable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - - PPvoid_t PValue = Hashtable_Get(amx, Hashtable, Index, 1); - element *elem_value = NULL; - if ( PValue == NULL ) - elem_value = new element(params[3]); - else - { - elem_value = reinterpret_cast(*PValue); - (*elem_value).set_int(params[3]); - } - Hashtable_Set(Hashtable,Index,elem_value); - - return 1; -} - -static cell AMX_NATIVE_CALL Hashtable_GetInt(AMX *amx,cell *params) -{ - //params[1]: hashtable - PPvoid_t Hashtable = Find_Hashtable(params[1], params[3], amx); - if (Hashtable == NULL) return 0; - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - - Pvoid_t * PValue = Hashtable_Get(amx, Hashtable, Index, params[3]); - - if( PValue == NULL ) return 0; - - element elem_value = *reinterpret_cast(*PValue); - - int error = 0; - cell retr_int = elem_value.get_int(error); - if (error) - elem_value.issue_type_error(amx, params[1], Index); - return retr_int; -} - -static cell AMX_NATIVE_CALL Hashtable_Memory(AMX *amx,cell *params) -{ - Pvoid_t * Array = Find_Hashtable(params[1],params[2],amx); - if (Array == NULL) return 0; - - return JudyLMemUsed(*Array); -} - - -static cell AMX_NATIVE_CALL Hashtable_Remove(AMX *amx,cell *params) -{ - //params[1]: hashtable - PPvoid_t Hashtable = Find_Hashtable(params[1], 0, amx); - if (Hashtable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - JudyHSDel(Hashtable, Index, strlength+1, PJE0 ); - - return 1; -} - -AMX_NATIVE_INFO hashtable_exports[] = { - { "hashtable_set_str", Hashtable_SetString }, - { "hashtable_get_str", Hashtable_GetString }, - - { "hashtable_set_vec", Hashtable_SetVector }, - { "hashtable_get_vec", Hashtable_GetVector }, - - { "hashtable_set_int", Hashtable_SetInt }, - { "hashtable_get_int", Hashtable_GetInt }, - - { "hashtable_set_float", Hashtable_SetFloat }, - { "hashtable_get_float", Hashtable_GetFloat }, - - { "hashtable_memory", Hashtable_Memory }, - - { "hashtable_remove", Hashtable_Remove }, - - { "hashtable_create", Hashtable_Create }, - { "hashtable_delete", Hashtable_Delete }, - { "hashtable_clear", Hashtable_Clear }, - { NULL, NULL } -}; - -#endif \ No newline at end of file diff --git a/dlls/arrayx/CKeytable.h b/dlls/arrayx/CKeytable.h deleted file mode 100644 index 43281968..00000000 --- a/dlls/arrayx/CKeytable.h +++ /dev/null @@ -1,703 +0,0 @@ -#if !defined _JUDYSL_ENABLED_ -#define _JUDYSL_ENABLED_ - -#define MAXLINELEN 1024 - -Pvoid_t MasterKeytable = (Pvoid_t) NULL; //Create the control array - -//Create an array that stores whether or not indices are used. -Pvoid_t MasterKeytable_Binary = (Pvoid_t) NULL; - -void Delete_MasterKeytable(void); - -Word_t New_Keytable(Word_t Index, Word_t reserve = 0); -PPvoid_t Find_Keytable(Word_t Index, Word_t disable_check = 1, AMX *amx = 0); -void Delete_Keytable(Word_t Index); -void Clear_Keytable(Word_t Index); - -template -void Keytable_Set(PPvoid_t Keytable, char *Index, Type value); - -PPvoid_t Keytable_Get(AMX* amx, Pvoid_t Keytable, char *Index, int ignore_error = 0); - - -void Delete_MasterKeytable(void) -{ - Word_t - Index = 0, - success; - J1F(success, MasterKeytable_Binary, Index); - while( success ) - { - Delete_Keytable(Index); - J1F(success, MasterKeytable_Binary, Index); - } -} - -Word_t New_Keytable(Word_t Index, Word_t reserve) -{ - Word_t success; //Dummy for macros. - J1T(success, MasterKeytable_Binary, Index); - - if (success && reserve) - return Index; //If the bit is set but it's 'reserved', return the index. - - //Only do this if the bit is not set or not reserved. - J1FE(success, MasterKeytable_Binary, Index); - J1S(success, MasterKeytable_Binary, Index); - - PPvoid_t Keytable = JudyLIns(&MasterKeytable, Index, PJE0); - *Keytable = (PWord_t) NULL; - - return Index; -} - -PPvoid_t Find_Keytable(Word_t Index, Word_t disable_check, AMX* amx) -{ - Word_t success; - J1T(success, MasterKeytable_Binary, Index); - if (success || disable_check) - { //Bit is valid - if(!success) - New_Keytable(Index); - - return JudyLGet(MasterKeytable, Index, PJE0); - } - MF_LogError(amx, AMX_ERR_NATIVE, "Keytable \"%s\" is invalid", Index); - return NULL; -} - -void Delete_Keytable(Word_t Index) -{ - int success; - J1T(success, MasterKeytable_Binary, Index); - if (success) - { //If the bit was set, clear and delete keytable. - Clear_Keytable(Index); - J1U(success, MasterKeytable_Binary, Index); - JudyLDel(&MasterKeytable, Index, PJE0); - } -} - -void Clear_Keytable(Word_t Index) -{ - int success; - J1T(success, MasterKeytable_Binary, Index); - if (success) //dont bother with unset Keytables. - { - PPvoid_t Keytable = Find_Keytable(Index); - char *Key = ""; - PPvoid_t PValue = JudySLFirst(*Keytable, Key, PJE0); - while (PValue != NULL) - { - element elem_value = *reinterpret_cast(*PValue); - elem_value.delete_element(); - PValue = JudySLNext(*Keytable, Key, PJE0); - } - JudySLFreeArray(Keytable, PJE0); - } -} - - -static cell AMX_NATIVE_CALL Keytable_Save(AMX *amx, cell *params) -{ - PPvoid_t Keytable = Find_Keytable(params[1], params[3], amx); - if (Keytable == NULL) return 0; - - int filename_length; - char *file = MF_GetAmxString(amx, params[2], 0, &filename_length); - file = MF_BuildPathname("%s", file); - unlink(file); - FILE *KeytableDB = fopen(file,"w"); - if (!KeytableDB) - return 0; - char* Key = new char[1024]; Key[0] = '\0'; - PPvoid_t PValue = JudySLFirst(*Keytable, reinterpret_cast(Key), PJE0); - element elem = NULL; - char elem_type = 0; - - int error; - - REAL vector_data[3] = { 0.0, 0.0, 0.0 }; - while (PValue) - { - elem = *reinterpret_cast(*PValue); - elem_type = elem.get_type(); - - if (elem_type < elem_type_int || elem_type > elem_type_vector) - continue; - - short key_len = strlen(Key); - fwrite(&key_len, sizeof(short), 1, KeytableDB); - fwrite(Key, sizeof(char), key_len, KeytableDB); - fwrite(&elem_type, sizeof(char), 1, KeytableDB); - if (elem_type == elem_type_int) - { - int int_buffer = elem.get_int(error); - fwrite(&int_buffer, sizeof(int), 1, KeytableDB); - } - else if (elem_type == elem_type_real) - { - REAL flo_buffer = elem.get_flo(error); - fwrite(&flo_buffer, sizeof(REAL), 1, KeytableDB); - } - else if (elem_type == elem_type_char) - { - const char* str_buffer = elem.get_str(error); - short buf_len = strlen(str_buffer); - fwrite(&buf_len, sizeof(short), 1, KeytableDB); - fwrite(str_buffer, sizeof(char), buf_len, KeytableDB); - } - else if (elem_type == elem_type_vector) - { - const Vector* vec_buffer = elem.get_vec(error); - fwrite(vec_buffer, sizeof(Vector), 1, KeytableDB); - } - PValue = JudySLNext(*Keytable, Key, PJE0); - } - fclose(KeytableDB); - return 1; -} - -static cell AMX_NATIVE_CALL Keytable_Load(AMX *amx, cell *params) -{ - //params[1]: file - int filename_length; - char *file = MF_GetAmxString(amx, params[1], 0, &filename_length); - file = MF_BuildPathname("%s", file); - FILE *KeytableDB = fopen(file, "a+"); - if (!KeytableDB) - return 0; - - //params[2]: keytable to create (optional index supplied) - int KeytableIndex = New_Keytable(params[2], params[3]); - Clear_Keytable(KeytableIndex); //make sure the keytable is empty. - PPvoid_t Keytable = Find_Keytable(KeytableIndex); - while(!feof(KeytableDB)) - { - char* index = ""; char type = 0; short index_len; - element *elem_value = NULL; - fread(&index_len, sizeof(short), 1, KeytableDB); - index = new char[index_len+1]; - fgets(index, index_len+1, KeytableDB); - if (feof(KeytableDB) || ferror(KeytableDB)) - break; - fread(&type, sizeof(char), 1, KeytableDB); - if (type < elem_type_int || type > elem_type_vector) - { - MF_LogError(amx, AMX_ERR_FORMAT, "Error loading keytable database \"%s\" into keytable %d. Bad file.", file, KeytableIndex); - return KeytableIndex; - } - else if (type == elem_type_int) - { - int value = 0; fread(&value, sizeof(int), 1, KeytableDB); - elem_value = new element(value); - } - else if (type == elem_type_real) - { - REAL value = 0; fread(&value, sizeof(REAL), 1, KeytableDB); - elem_value = new element(value); - } - else if (type == elem_type_char) - { - short length; fread(&length, sizeof(short), 1, KeytableDB); - char* value = new char[length+1]; fgets(value, length+1, KeytableDB); - elem_value = new element(value); - delete(value); - } - else if (type == elem_type_vector) - { - Vector *value = new Vector(); fread(value, sizeof(Vector), 1, KeytableDB); - elem_value = new element(value); - } - Keytable_Set(Keytable,index,elem_value); - delete (index); - } - fclose(KeytableDB); - return KeytableIndex; -} - -static cell AMX_NATIVE_CALL Keytable_Save_ASCII(AMX *amx, cell *params) -{ - //params[1]: file - int filename_length; - char *inputfile = MF_GetAmxString(amx, params[1], 0, &filename_length); - inputfile = MF_BuildPathname("%s", inputfile); - FILE *KeytableDB = fopen(inputfile, "a+"); - if (!KeytableDB) - return 0; - - char *outputfile = MF_GetAmxString(amx, params[2], 0, &filename_length); - outputfile = MF_BuildPathname("%s", outputfile); - FILE *ReadableDB = fopen(outputfile, "w"); - - char *buffer = "\0"; - - while(!feof(KeytableDB)) - { - char* key = NULL; char type = 0; short key_len; - fread(&key_len, sizeof(short), 1, KeytableDB); - key = new char[key_len+1]; - fgets(key, key_len+1, KeytableDB); - if (feof(KeytableDB) || ferror(KeytableDB)) - break; - fread(&type, sizeof(char), 1, KeytableDB); - - sprintf(buffer, "Key %-32s Length %3d, Type %7s", key, key_len, elem_types[type]); - if (type < elem_type_int || type > elem_type_vector) - { - MF_LogError(amx, AMX_ERR_FORMAT, "Error loading array database \"%s\" into readable format. Bad file.", inputfile); - return 0; - } - else if (type == elem_type_int) - { - int value = 0; fread(&value, sizeof(int), 1, KeytableDB); - fprintf(ReadableDB, "%s\t\t\t\tValue: %d\n", buffer, value); - } - else if (type == elem_type_real) - { - REAL value = 0; fread(&value, sizeof(REAL), 1, KeytableDB); - fprintf(ReadableDB, "%s\t\t\t\tValue: %f\n", buffer, value); - } - else if (type == elem_type_char) - { - short length; fread(&length, sizeof(short), 1, KeytableDB); - char* value = new char[length+1]; fgets(value, length+1, KeytableDB); - fprintf(ReadableDB, "%s Length %3d\tValue: \"%s\"\n", buffer, length, value); - delete value; - } - else if (type == elem_type_vector) - { - Vector *value = new Vector(); fread(value, sizeof(Vector), 1, KeytableDB); - fprintf(ReadableDB, "%s\t\t\t\tValue: {%f,%f,%f}\n", buffer, (*value).x, (*value).y, (*value).z); - delete value; - } - } - fclose(KeytableDB); - fclose(ReadableDB); - return 1; -} - -template //This will support input char*, Vector*, int, and cell_real*. -void Keytable_Set(PPvoid_t Keytable, char* Index, Type value) -{ - PPvoid_t PValue; // pointer to keytable element value - PValue = JudySLIns(Keytable, Index, PJE0); - *PValue = reinterpret_cast(value); -} - -PPvoid_t Keytable_Get(AMX* amx, PPvoid_t Keytable, char *Index, int ignore_error = 0) -{ - PPvoid_t PValue = JudySLGet( *Keytable, Index, PJE0 ); - if (PValue == NULL && !ignore_error) - MF_LogError(amx, AMX_ERR_NATIVE, "Keytable get on key \"%s\" is invalid", Index); - return PValue; -} - -static cell AMX_NATIVE_CALL Keytable_Create(AMX *amx, cell *params) -{ - return New_Keytable(params[1],params[2]); -} - -static cell AMX_NATIVE_CALL Keytable_Delete(AMX *amx, cell *params) -{ - Delete_Keytable( params[1] ); - - return 1; -} - -static cell AMX_NATIVE_CALL Keytable_Clear(AMX *amx, cell *params) -{ - Clear_Keytable( params[1] ); - - return 1; -} - -static cell AMX_NATIVE_CALL Keytable_SetVector(AMX *amx,cell *params) -{ - PPvoid_t Keytable = Find_Keytable(params[1], params[4], amx); - if (Keytable == NULL) return 0; - - cell *input_vec = MF_GetAmxAddr(amx, params[3]); - Vector *value = new Vector( - amx_ctof(input_vec[0]), - amx_ctof(input_vec[1]), - amx_ctof(input_vec[2]) - ); - int strlen; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlen); - - PPvoid_t PValue = Keytable_Get(amx, Keytable, Index, 1); - element *elem_value = NULL; - if ( PValue == NULL ) - elem_value = new element(value); - else - { - elem_value = reinterpret_cast(*PValue); - (*elem_value).set_vec(value); - } - Keytable_Set(Keytable,Index,elem_value); - return 1; -} - -static cell AMX_NATIVE_CALL Keytable_GetVector(AMX *amx, cell *params) -{ - PPvoid_t Keytable = Find_Keytable(params[1], params[4], amx); - if (Keytable == NULL) return 0; - - int strlen; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlen); - PPvoid_t PValue = Keytable_Get(amx, Keytable, Index, params[4]); - - cell *vAmx = MF_GetAmxAddr(amx, params[3]); - - if( PValue == NULL ) { - vAmx[0] = amx_ftoc(0); - vAmx[1] = amx_ftoc(0); - vAmx[2] = amx_ftoc(0); - return 0; - } - element elem_value = *reinterpret_cast(*PValue); - int error = 0; - const Vector retr_vec = *elem_value.get_vec(error); - if (error) - elem_value.issue_type_error(amx, params[1], Index); - vAmx[0] = amx_ftoc(retr_vec.x); - vAmx[1] = amx_ftoc(retr_vec.y); - vAmx[2] = amx_ftoc(retr_vec.z); - return 1; -} - -static cell AMX_NATIVE_CALL Keytable_SetString(AMX *amx,cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], params[4], amx); - if (Keytable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - - //params[3]: value - int iLen = 0; - char *value = MF_GetAmxString(amx,params[3],1,&iLen); - - PPvoid_t PValue = Keytable_Get(amx, Keytable, Index, 1); - element *elem_value = NULL; - if ( PValue == NULL ) - elem_value = new element(value); - else - { - elem_value = reinterpret_cast(*PValue); - (*elem_value).set_str(value); - } - Keytable_Set(Keytable,Index,elem_value); - - return 1; -} - -static cell AMX_NATIVE_CALL Keytable_GetString(AMX *amx,cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], params[5], amx); - if (Keytable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - - Pvoid_t * PValue = Keytable_Get(amx, Keytable, Index, params[5]); - - //params[3] and params[4] are the return string and length respectively. - - - if( PValue == NULL ) - return MF_SetAmxString(amx, params[3] , "dne", params[4] ); - - element elem_value = *reinterpret_cast(*PValue); - - int error = 0; - if (error) - elem_value.issue_type_error(amx, params[1], Index); - const char* str_out = elem_value.get_str(error); - return MF_SetAmxString( amx , params[3] , str_out, params[4] ); -} - -static cell AMX_NATIVE_CALL Keytable_SetFloat(AMX *amx,cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], params[4], amx); - if (Keytable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - //params[3]: value - PPvoid_t PValue = Keytable_Get(amx, Keytable, Index, 1); - element *elem_value = NULL; - if ( PValue == NULL ) - elem_value = new element(amx_ctof(params[3])); - else - { - elem_value = reinterpret_cast(*PValue); - (*elem_value).set_flo(amx_ctof(params[3])); - } - Keytable_Set(Keytable,Index,elem_value); - - return 1; -} - -static cell AMX_NATIVE_CALL Keytable_GetFloat(AMX *amx,cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], params[3], amx); - if (Keytable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - - PPvoid_t PValue = Keytable_Get(amx, Keytable, Index, params[3]); - - if( PValue == NULL ) return amx_ftoc(0.0); - - element elem_value = *reinterpret_cast(*PValue); - - int error = 0; - cell retr_float = amx_ftoc(elem_value.get_flo(error)); - if (error) - elem_value.issue_type_error(amx, params[1], Index); - return retr_float; -} - - -static cell AMX_NATIVE_CALL Keytable_SetInt(AMX *amx,cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], params[4], amx); - if (Keytable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - - PPvoid_t PValue = Keytable_Get(amx, Keytable, Index, 1); - element *elem_value = NULL; - if ( PValue == NULL ) - elem_value = new element(params[3]); - else - { - elem_value = reinterpret_cast(*PValue); - (*elem_value).set_int(params[3]); - } - Keytable_Set(Keytable,Index,elem_value); - - return 1; -} - -static cell AMX_NATIVE_CALL Keytable_GetInt(AMX *amx,cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], params[3], amx); - if (Keytable == NULL) return 0; - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - - Pvoid_t * PValue = Keytable_Get(amx, Keytable, Index, params[3]); - - if( PValue == NULL ) return 0; - - element elem_value = *reinterpret_cast(*PValue); - - int error = 0; - cell retr_int = elem_value.get_int(error); - if (error) - elem_value.issue_type_error(amx, params[1], Index); - return retr_int; -} - -static cell AMX_NATIVE_CALL Keytable_Memory(AMX *amx,cell *params) -{ - Pvoid_t * Keytable = Find_Keytable(params[1],params[2],amx); - if (Keytable == NULL) return 0; - - return JudyLMemUsed(*Keytable); -} - -static cell AMX_NATIVE_CALL Keytable_Remove(AMX *amx,cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], 0, amx); - if (Keytable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - //Have to delete the element - PPvoid_t PValue = JudySLGet(*Keytable, Index, PJE0); - if (PValue == NULL) return 1; - element elem_value = *reinterpret_cast(*PValue); - elem_value.delete_element(); - - JudySLDel(Keytable, Index, PJE0 ); - return 1; -} - -static cell AMX_NATIVE_CALL Keytable_Next(AMX *amx,cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], params[5], amx); - if (Keytable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - //params[3], params[4]: return key and length - - PPvoid_t pointer; - pointer = JudySLNext(*Keytable, Index, PJE0); - - if (pointer == NULL) { - MF_SetAmxString(amx, params[3], "dne", 0); - return 0; - } - MF_SetAmxString(amx, params[3], Index, params[4]); - return 1; -} - -static cell AMX_NATIVE_CALL Keytable_Prev(AMX *amx,cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], params[5], amx); - if (Keytable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - //params[3], params[4]: return key and length - - PPvoid_t pointer; - pointer = JudySLPrev(*Keytable, Index, PJE0); - - if (pointer == NULL) { - MF_SetAmxString(amx, params[3], "dne", 0); - return 0; - } - MF_SetAmxString(amx, params[3], Index, params[4]); - return 1; -} - - -static cell AMX_NATIVE_CALL Keytable_First(AMX *amx,cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], params[5], amx); - if (Keytable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - //params[3], params[4]: return key and length - - PPvoid_t pointer; - pointer = JudySLFirst(*Keytable, Index, PJE0); - - if (pointer == NULL) { - MF_SetAmxString(amx, params[3], "dne", 0); - return 0; - } - MF_SetAmxString(amx, params[3], Index, params[4]); - return 1; -} - -static cell AMX_NATIVE_CALL Keytable_Last(AMX *amx,cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], params[5], amx); - if (Keytable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - //params[3], params[4]: return key and length - - PPvoid_t pointer; - pointer = JudySLLast(*Keytable, Index, PJE0); - - if (pointer == NULL) { - MF_SetAmxString(amx, params[3], "dne", 0); - return 0; - } - MF_SetAmxString(amx, params[3], Index, params[4]); - return 1; -} - -static cell AMX_NATIVE_CALL Key_IsEmpty(AMX *amx, cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], params[3], amx); - if (Keytable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - - PPvoid_t pointer = JudySLGet(*Keytable, Index, PJE0); - - return (pointer == NULL) ? 1 : 0; -} - -static cell AMX_NATIVE_CALL Key_IsFilled(AMX *amx, cell *params) -{ - //params[1]: keytable - PPvoid_t Keytable = Find_Keytable(params[1], params[3], amx); - if (Keytable == NULL) return 0; - - //params[2]: key - int strlength; - char *Index = MF_GetAmxString(amx, params[2], 0, &strlength); - - PPvoid_t pointer = JudySLGet(*Keytable, Index, PJE0); - - return (pointer != NULL) ? 1 : 0; -} - -AMX_NATIVE_INFO keytable_exports[] = { - { "keytable_set_string", Keytable_SetString }, - { "keytable_get_string", Keytable_GetString }, - - { "keytable_set_vector", Keytable_SetVector }, - { "keytable_get_vector", Keytable_GetVector }, - - { "keytable_set_int", Keytable_SetInt }, - { "keytable_get_int", Keytable_GetInt }, - - { "keytable_set_float", Keytable_SetFloat }, - { "keytable_get_float", Keytable_GetFloat }, - - { "keytable_isempty", Key_IsEmpty }, - { "keytable_isfilled", Key_IsFilled }, - - { "keytable_memory", Keytable_Memory }, - - { "keytable_remove", Keytable_Remove }, - - { "keytable_create", Keytable_Create }, - { "keytable_delete", Keytable_Delete }, - { "keytable_clear", Keytable_Clear }, - - { "keytable_next", Keytable_Next }, - { "keytable_prev", Keytable_Prev }, - { "keytable_first", Keytable_First }, - { "keytable_last", Keytable_Last }, - - { "keytable_save", Keytable_Save }, - { "keytable_load", Keytable_Load }, - - { "keytable_save_ascii", Keytable_Save_ASCII }, - - { NULL, NULL } -}; - -#endif \ No newline at end of file diff --git a/dlls/arrayx/amxxmodule.cpp b/dlls/arrayx/amxxmodule.cpp deleted file mode 100644 index e374e441..00000000 --- a/dlls/arrayx/amxxmodule.cpp +++ /dev/null @@ -1,3078 +0,0 @@ -/* AMX Mod X -* -* by the AMX Mod X Development Team -* originally developed by OLO -* -* Parts Copyright (C) 2001-2003 Will Day -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at -* your option) any later version. -* -* This program is distributed in the hope that it will be useful, but -* WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software Foundation, -* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -* -* In addition, as a special exception, the author gives permission to -* link the code of this program with the Half-Life Game Engine ("HL -* Engine") and Modified Game Libraries ("MODs") developed by Valve, -* L.L.C ("Valve"). You must obey the GNU General Public License in all -* respects for all of the code used other than the HL Engine and MODs -* from Valve. If you modify this file, you may extend this exception -* to your version of the file, but you are not obligated to do so. If -* you do not wish to do so, delete this exception statement from your -* version. -* -* Description: AMX Mod X Module Interface Functions -*/ - -#include -#include -#include -#include -#include -#include "amxxmodule.h" - -/************* METAMOD SUPPORT *************/ -#ifdef USE_METAMOD - -enginefuncs_t g_engfuncs; -globalvars_t *gpGlobals; - -DLL_FUNCTIONS *g_pFunctionTable; -DLL_FUNCTIONS *g_pFunctionTable_Post; -enginefuncs_t *g_pengfuncsTable; -enginefuncs_t *g_pengfuncsTable_Post; -NEW_DLL_FUNCTIONS *g_pNewFunctionsTable; -NEW_DLL_FUNCTIONS *g_pNewFunctionsTable_Post; - -// GetEntityAPI2 functions -static DLL_FUNCTIONS g_EntityAPI_Table = -{ -#ifdef FN_GameDLLInit - FN_GameDLLInit, -#else - NULL, -#endif -#ifdef FN_DispatchSpawn - FN_DispatchSpawn, -#else - NULL, -#endif -#ifdef FN_DispatchThink - FN_DispatchThink, -#else - NULL, -#endif -#ifdef FN_DispatchUse - FN_DispatchUse, -#else - NULL, -#endif -#ifdef FN_DispatchTouch - FN_DispatchTouch, -#else - NULL, -#endif -#ifdef FN_DispatchBlocked - FN_DispatchBlocked, -#else - NULL, -#endif -#ifdef FN_DispatchKeyValue - FN_DispatchKeyValue, -#else - NULL, -#endif -#ifdef FN_DispatchSave - FN_DispatchSave, -#else - NULL, -#endif -#ifdef FN_DispatchRestore - FN_DispatchRestore, -#else - NULL, -#endif -#ifdef FN_DispatchObjectCollsionBox - FN_DispatchObjectCollsionBox, -#else - NULL, -#endif -#ifdef FN_SaveWriteFields - FN_SaveWriteFields, -#else - NULL, -#endif -#ifdef FN_SaveReadFields - FN_SaveReadFields, -#else - NULL, -#endif -#ifdef FN_SaveGlobalState - FN_SaveGlobalState, -#else - NULL, -#endif -#ifdef FN_RestoreGlobalState - FN_RestoreGlobalState, -#else - NULL, -#endif -#ifdef FN_ResetGlobalState - FN_ResetGlobalState, -#else - NULL, -#endif -#ifdef FN_ClientConnect - FN_ClientConnect, -#else - NULL, -#endif -#ifdef FN_ClientDisconnect - FN_ClientDisconnect, -#else - NULL, -#endif -#ifdef FN_ClientKill - FN_ClientKill, -#else - NULL, -#endif -#ifdef FN_ClientPutInServer - FN_ClientPutInServer, -#else - NULL, -#endif -#ifdef FN_ClientCommand - FN_ClientCommand, -#else - NULL, -#endif -#ifdef FN_ClientUserInfoChanged - FN_ClientUserInfoChanged, -#else - NULL, -#endif -#ifdef FN_ServerActivate - FN_ServerActivate, -#else - NULL, -#endif -#ifdef FN_ServerDeactivate - FN_ServerDeactivate, -#else - NULL, -#endif -#ifdef FN_PlayerPreThink - FN_PlayerPreThink, -#else - NULL, -#endif -#ifdef FN_PlayerPostThink - FN_PlayerPostThink, -#else - NULL, -#endif -#ifdef FN_StartFrame - FN_StartFrame, -#else - NULL, -#endif -#ifdef FN_ParmsNewLevel - FN_ParmsNewLevel, -#else - NULL, -#endif -#ifdef FN_ParmsChangeLevel - FN_ParmsChangeLevel, -#else - NULL, -#endif -#ifdef FN_GetGameDescription - FN_GetGameDescription, -#else - NULL, -#endif -#ifdef FN_PlayerCustomization - FN_PlayerCustomization, -#else - NULL, -#endif -#ifdef FN_SpectatorConnect - FN_SpectatorConnect, -#else - NULL, -#endif -#ifdef FN_SpectatorDisconnect - FN_SpectatorDisconnect, -#else - NULL, -#endif -#ifdef FN_SpectatorThink - FN_SpectatorThink, -#else - NULL, -#endif -#ifdef FN_Sys_Error - FN_Sys_Error, -#else - NULL, -#endif -#ifdef FN_PM_Move - FN_PM_Move, -#else - NULL, -#endif -#ifdef FN_PM_Init - FN_PM_Init, -#else - NULL, -#endif -#ifdef FN_PM_FindTextureType - FN_PM_FindTextureType, -#else - NULL, -#endif -#ifdef FN_SetupVisibility - FN_SetupVisibility, -#else - NULL, -#endif -#ifdef FN_UpdateClientData - FN_UpdateClientData, -#else - NULL, -#endif -#ifdef FN_AddToFullPack - FN_AddToFullPack, -#else - NULL, -#endif -#ifdef FN_CreateBaseline - FN_CreateBaseline, -#else - NULL, -#endif -#ifdef FN_RegisterEncoders - FN_RegisterEncoders, -#else - NULL, -#endif -#ifdef FN_GetWeaponData - FN_GetWeaponData, -#else - NULL, -#endif -#ifdef FN_CmdStart - FN_CmdStart, -#else - NULL, -#endif -#ifdef FN_CmdEnd - FN_CmdEnd, -#else - NULL, -#endif -#ifdef FN_ConnectionlessPacket - FN_ConnectionlessPacket, -#else - NULL, -#endif -#ifdef FN_GetHullBounds - FN_GetHullBounds, -#else - NULL, -#endif -#ifdef FN_CreateInstancedBaselines - FN_CreateInstancedBaselines, -#else - NULL, -#endif -#ifdef FN_InconsistentFile - FN_InconsistentFile, -#else - NULL, -#endif -#ifdef FN_AllowLagCompensation - FN_AllowLagCompensation -#else - NULL -#endif -}; // g_EntityAPI2_Table - -// GetEntityAPI2_Post functions -static DLL_FUNCTIONS g_EntityAPI_Post_Table = -{ -#ifdef FN_GameDLLInit_Post - FN_GameDLLInit_Post, -#else - NULL, -#endif -#ifdef FN_DispatchSpawn_Post - FN_DispatchSpawn_Post, -#else - NULL, -#endif -#ifdef FN_DispatchThink_Post - FN_DispatchThink_Post, -#else - NULL, -#endif -#ifdef FN_DispatchUse_Post - FN_DispatchUse_Post, -#else - NULL, -#endif -#ifdef FN_DispatchTouch_Post - FN_DispatchTouch_Post, -#else - NULL, -#endif -#ifdef FN_DispatchBlocked_Post - FN_DispatchBlocked_Post, -#else - NULL, -#endif -#ifdef FN_DispatchKeyValue_Post - FN_DispatchKeyValue_Post, -#else - NULL, -#endif -#ifdef FN_DispatchSave_Post - FN_DispatchSave_Post, -#else - NULL, -#endif -#ifdef FN_DispatchRestore_Post - FN_DispatchRestore_Post, -#else - NULL, -#endif -#ifdef FN_DispatchObjectCollsionBox_Post - FN_DispatchObjectCollsionBox_Post, -#else - NULL, -#endif -#ifdef FN_SaveWriteFields_Post - FN_SaveWriteFields_Post, -#else - NULL, -#endif -#ifdef FN_SaveReadFields_Post - FN_SaveReadFields_Post, -#else - NULL, -#endif -#ifdef FN_SaveGlobalState_Post - FN_SaveGlobalState_Post, -#else - NULL, -#endif -#ifdef FN_RestoreGlobalState_Post - FN_RestoreGlobalState_Post, -#else - NULL, -#endif -#ifdef FN_ResetGlobalState_Post - FN_ResetGlobalState_Post, -#else - NULL, -#endif -#ifdef FN_ClientConnect_Post - FN_ClientConnect_Post, -#else - NULL, -#endif -#ifdef FN_ClientDisconnect_Post - FN_ClientDisconnect_Post, -#else - NULL, -#endif -#ifdef FN_ClientKill_Post - FN_ClientKill_Post, -#else - NULL, -#endif -#ifdef FN_ClientPutInServer_Post - FN_ClientPutInServer_Post, -#else - NULL, -#endif -#ifdef FN_ClientCommand_Post - FN_ClientCommand_Post, -#else - NULL, -#endif -#ifdef FN_ClientUserInfoChanged_Post - FN_ClientUserInfoChanged_Post, -#else - NULL, -#endif -#ifdef FN_ServerActivate_Post - FN_ServerActivate_Post, -#else - NULL, -#endif -#ifdef FN_ServerDeactivate_Post - FN_ServerDeactivate_Post, -#else - NULL, -#endif -#ifdef FN_PlayerPreThink_Post - FN_PlayerPreThink_Post, -#else - NULL, -#endif -#ifdef FN_PlayerPostThink_Post - FN_PlayerPostThink_Post, -#else - NULL, -#endif -#ifdef FN_StartFrame_Post - FN_StartFrame_Post, -#else - NULL, -#endif -#ifdef FN_ParmsNewLevel_Post - FN_ParmsNewLevel_Post, -#else - NULL, -#endif -#ifdef FN_ParmsChangeLevel_Post - FN_ParmsChangeLevel_Post, -#else - NULL, -#endif -#ifdef FN_GetGameDescription_Post - FN_GetGameDescription_Post, -#else - NULL, -#endif -#ifdef FN_PlayerCustomization_Post - FN_PlayerCustomization_Post, -#else - NULL, -#endif -#ifdef FN_SpectatorConnect_Post - FN_SpectatorConnect_Post, -#else - NULL, -#endif -#ifdef FN_SpectatorDisconnect_Post - FN_SpectatorDisconnect_Post, -#else - NULL, -#endif -#ifdef FN_SpectatorThink_Post - FN_SpectatorThink_Post, -#else - NULL, -#endif -#ifdef FN_Sys_Error_Post - FN_Sys_Error_Post, -#else - NULL, -#endif -#ifdef FN_PM_Move_Post - FN_PM_Move_Post, -#else - NULL, -#endif -#ifdef FN_PM_Init_Post - FN_PM_Init_Post, -#else - NULL, -#endif -#ifdef FN_PM_FindTextureType_Post - FN_PM_FindTextureType_Post, -#else - NULL, -#endif -#ifdef FN_SetupVisibility_Post - FN_SetupVisibility_Post, -#else - NULL, -#endif -#ifdef FN_UpdateClientData_Post - FN_UpdateClientData_Post, -#else - NULL, -#endif -#ifdef FN_AddToFullPack_Post - FN_AddToFullPack_Post, -#else - NULL, -#endif -#ifdef FN_CreateBaseline_Post - FN_CreateBaseline_Post, -#else - NULL, -#endif -#ifdef FN_RegisterEncoders_Post - FN_RegisterEncoders_Post, -#else - NULL, -#endif -#ifdef FN_GetWeaponData_Post - FN_GetWeaponData_Post, -#else - NULL, -#endif -#ifdef FN_CmdStart_Post - FN_CmdStart_Post, -#else - NULL, -#endif -#ifdef FN_CmdEnd_Post - FN_CmdEnd_Post, -#else - NULL, -#endif -#ifdef FN_ConnectionlessPacket_Post - FN_ConnectionlessPacket_Post, -#else - NULL, -#endif -#ifdef FN_GetHullBounds_Post - FN_GetHullBounds_Post, -#else - NULL, -#endif -#ifdef FN_CreateInstancedBaselines_Post - FN_CreateInstancedBaselines_Post, -#else - NULL, -#endif -#ifdef FN_InconsistentFile_Post - FN_InconsistentFile_Post, -#else - NULL, -#endif -#ifdef FN_AllowLagCompensation - FN_AllowLagCompensation, -#else - NULL, -#endif -}; // g_EntityAPI2_Table - -static enginefuncs_t g_EngineFuncs_Table = -{ -#ifdef FN_PrecacheModel - FN_PrecacheModel, -#else - NULL, -#endif -#ifdef FN_PrecacheSound - FN_PrecacheSound, -#else - NULL, -#endif -#ifdef FN_SetModel - FN_SetModel, -#else - NULL, -#endif -#ifdef FN_ModelIndex - FN_ModelIndex, -#else - NULL, -#endif -#ifdef FN_ModelFrames - FN_ModelFrames, -#else - NULL, -#endif -#ifdef FN_SetSize - FN_SetSize, -#else - NULL, -#endif -#ifdef FN_ChangeLevel - FN_ChangeLevel, -#else - NULL, -#endif -#ifdef FN_GetSpawnParms - FN_GetSpawnParms, -#else - NULL, -#endif -#ifdef FN_SaveSpawnParms - FN_SaveSpawnParms, -#else - NULL, -#endif -#ifdef FN_VecToYaw - FN_VecToYaw, -#else - NULL, -#endif -#ifdef FN_VecToAngles - FN_VecToAngles, -#else - NULL, -#endif -#ifdef FN_MoveToOrigin - FN_MoveToOrigin, -#else - NULL, -#endif -#ifdef FN_ChangeYaw - FN_ChangeYaw, -#else - NULL, -#endif -#ifdef FN_ChangePitch - FN_ChangePitch, -#else - NULL, -#endif -#ifdef FN_FindEntityByString - FN_FindEntityByString, -#else - NULL, -#endif -#ifdef FN_GetEntityIllum - FN_GetEntityIllum, -#else - NULL, -#endif -#ifdef FN_FindEntityInSphere - FN_FindEntityInSphere, -#else - NULL, -#endif -#ifdef FN_FindClientInPVS - FN_FindClientInPVS, -#else - NULL, -#endif -#ifdef FN_EntitiesInPVS - FN_EntitiesInPVS, -#else - NULL, -#endif -#ifdef FN_MakeVectors - FN_MakeVectors, -#else - NULL, -#endif -#ifdef FN_AngleVectors - FN_AngleVectors, -#else - NULL, -#endif -#ifdef FN_CreateEntity - FN_CreateEntity, -#else - NULL, -#endif -#ifdef FN_RemoveEntity - FN_RemoveEntity, -#else - NULL, -#endif -#ifdef FN_CreateNamedEntity - FN_CreateNamedEntity, -#else - NULL, -#endif -#ifdef FN_MakeStatic - FN_MakeStatic, -#else - NULL, -#endif -#ifdef FN_EntIsOnFloor - FN_EntIsOnFloor, -#else - NULL, -#endif -#ifdef FN_DropToFloor - FN_DropToFloor, -#else - NULL, -#endif -#ifdef FN_WalkMove - FN_WalkMove, -#else - NULL, -#endif -#ifdef FN_SetOrigin - FN_SetOrigin, -#else - NULL, -#endif -#ifdef FN_EmitSound - FN_EmitSound, -#else - NULL, -#endif -#ifdef FN_EmitAmbientSound - FN_EmitAmbientSound, -#else - NULL, -#endif -#ifdef FN_TraceLine - FN_TraceLine, -#else - NULL, -#endif -#ifdef FN_TraceToss - FN_TraceToss, -#else - NULL, -#endif -#ifdef FN_TraceMonsterHull - FN_TraceMonsterHull, -#else - NULL, -#endif -#ifdef FN_TraceHull - FN_TraceHull, -#else - NULL, -#endif -#ifdef FN_TraceModel - FN_TraceModel, -#else - NULL, -#endif -#ifdef FN_TraceTexture - FN_TraceTexture, -#else - NULL, -#endif -#ifdef FN_TraceSphere - FN_TraceSphere, -#else - NULL, -#endif -#ifdef FN_GetAimVector - FN_GetAimVector, -#else - NULL, -#endif -#ifdef FN_ServerCommand - FN_ServerCommand, -#else - NULL, -#endif -#ifdef FN_ServerExecute - FN_ServerExecute, -#else - NULL, -#endif -#ifdef FN_engClientCommand - FN_engClientCommand, -#else - NULL, -#endif -#ifdef FN_ParticleEffect - FN_ParticleEffect, -#else - NULL, -#endif -#ifdef FN_LightStyle - FN_LightStyle, -#else - NULL, -#endif -#ifdef FN_DecalIndex - FN_DecalIndex, -#else - NULL, -#endif -#ifdef FN_PointContents - FN_PointContents, -#else - NULL, -#endif -#ifdef FN_MessageBegin - FN_MessageBegin, -#else - NULL, -#endif -#ifdef FN_MessageEnd - FN_MessageEnd, -#else - NULL, -#endif -#ifdef FN_WriteByte - FN_WriteByte, -#else - NULL, -#endif -#ifdef FN_WriteChar - FN_WriteChar, -#else - NULL, -#endif -#ifdef FN_WriteShort - FN_WriteShort, -#else - NULL, -#endif -#ifdef FN_WriteLong - FN_WriteLong, -#else - NULL, -#endif -#ifdef FN_WriteAngle - FN_WriteAngle, -#else - NULL, -#endif -#ifdef FN_WriteCoord - FN_WriteCoord, -#else - NULL, -#endif -#ifdef FN_WriteString - FN_WriteString, -#else - NULL, -#endif -#ifdef FN_WriteEntity - FN_WriteEntity, -#else - NULL, -#endif -#ifdef FN_CVarRegister - FN_CVarRegister, -#else - NULL, -#endif -#ifdef FN_CVarGetFloat - FN_CVarGetFloat, -#else - NULL, -#endif -#ifdef FN_CVarGetString - FN_CVarGetString, -#else - NULL, -#endif -#ifdef FN_CVarSetFloat - FN_CVarSetFloat, -#else - NULL, -#endif -#ifdef FN_CVarSetString - FN_CVarSetString, -#else - NULL, -#endif -#ifdef FN_AlertMessage - FN_AlertMessage, -#else - NULL, -#endif -#ifdef FN_EngineFprintf - FN_EngineFprintf, -#else - NULL, -#endif -#ifdef FN_PvAllocEntPrivateData - FN_PvAllocEntPrivateData, -#else - NULL, -#endif -#ifdef FN_PvEntPrivateData - FN_PvEntPrivateData, -#else - NULL, -#endif -#ifdef FN_FreeEntPrivateData - FN_FreeEntPrivateData, -#else - NULL, -#endif -#ifdef FN_SzFromIndex - FN_SzFromIndex, -#else - NULL, -#endif -#ifdef FN_AllocString - FN_AllocString, -#else - NULL, -#endif -#ifdef FN_GetVarsOfEnt - FN_GetVarsOfEnt, -#else - NULL, -#endif -#ifdef FN_PEntityOfEntOffset - FN_PEntityOfEntOffset, -#else - NULL, -#endif -#ifdef FN_EntOffsetOfPEntity - FN_EntOffsetOfPEntity, -#else - NULL, -#endif -#ifdef FN_IndexOfEdict - FN_IndexOfEdict, -#else - NULL, -#endif -#ifdef FN_PEntityOfEntIndex - FN_PEntityOfEntIndex, -#else - NULL, -#endif -#ifdef FN_FindEntityByVars - FN_FindEntityByVars, -#else - NULL, -#endif -#ifdef FN_GetModelPtr - FN_GetModelPtr, -#else - NULL, -#endif -#ifdef FN_RegUserMsg - FN_RegUserMsg, -#else - NULL, -#endif -#ifdef FN_AnimationAutomove - FN_AnimationAutomove, -#else - NULL, -#endif -#ifdef FN_GetBonePosition - FN_GetBonePosition, -#else - NULL, -#endif -#ifdef FN_FunctionFromName - FN_FunctionFromName, -#else - NULL, -#endif -#ifdef FN_NameForFunction - FN_NameForFunction, -#else - NULL, -#endif -#ifdef FN_ClientPrintf - FN_ClientPrintf, -#else - NULL, -#endif -#ifdef FN_ServerPrint - FN_ServerPrint, -#else - NULL, -#endif -#ifdef FN_Cmd_Args - FN_Cmd_Args, -#else - NULL, -#endif -#ifdef FN_Cmd_Argv - FN_Cmd_Argv, -#else - NULL, -#endif -#ifdef FN_Cmd_Argc - FN_Cmd_Argc, -#else - NULL, -#endif -#ifdef FN_GetAttachment - FN_GetAttachment, -#else - NULL, -#endif -#ifdef FN_CRC32_Init - FN_CRC32_Init, -#else - NULL, -#endif -#ifdef FN_CRC32_ProcessBuffer - FN_CRC32_ProcessBuffer, -#else - NULL, -#endif -#ifdef FN_CRC32_ProcessByte - FN_CRC32_ProcessByte, -#else - NULL, -#endif -#ifdef FN_CRC32_Final - FN_CRC32_Final, -#else - NULL, -#endif -#ifdef FN_RandomLong - FN_RandomLong, -#else - NULL, -#endif -#ifdef FN_RandomFloat - FN_RandomFloat, -#else - NULL, -#endif -#ifdef FN_SetView - FN_SetView, -#else - NULL, -#endif -#ifdef FN_Time - FN_Time, -#else - NULL, -#endif -#ifdef FN_CrosshairAngle - FN_CrosshairAngle, -#else - NULL, -#endif -#ifdef FN_LoadFileForMe - FN_LoadFileForMe, -#else - NULL, -#endif -#ifdef FN_FreeFile - FN_FreeFile, -#else - NULL, -#endif -#ifdef FN_EndSection - FN_EndSection, -#else - NULL, -#endif -#ifdef FN_CompareFileTime - FN_CompareFileTime, -#else - NULL, -#endif -#ifdef FN_GetGameDir - FN_GetGameDir, -#else - NULL, -#endif -#ifdef FN_Cvar_RegisterVariable - FN_Cvar_RegisterVariable, -#else - NULL, -#endif -#ifdef FN_FadeClientVolume - FN_FadeClientVolume, -#else - NULL, -#endif -#ifdef FN_SetClientMaxspeed - FN_SetClientMaxspeed, -#else - NULL, -#endif -#ifdef FN_CreateFakeClient - FN_CreateFakeClient, -#else - NULL, -#endif -#ifdef FN_RunPlayerMove - FN_RunPlayerMove, -#else - NULL, -#endif -#ifdef FN_NumberOfEntities - FN_NumberOfEntities, -#else - NULL, -#endif -#ifdef FN_GetInfoKeyBuffer - FN_GetInfoKeyBuffer, -#else - NULL, -#endif -#ifdef FN_InfoKeyValue - FN_InfoKeyValue, -#else - NULL, -#endif -#ifdef FN_SetKeyValue - FN_SetKeyValue, -#else - NULL, -#endif -#ifdef FN_SetClientKeyValue - FN_SetClientKeyValue, -#else - NULL, -#endif -#ifdef FN_IsMapValid - FN_IsMapValid, -#else - NULL, -#endif -#ifdef FN_StaticDecal - FN_StaticDecal, -#else - NULL, -#endif -#ifdef FN_PrecacheGeneric - FN_PrecacheGeneric, -#else - NULL, -#endif -#ifdef FN_GetPlayerUserId - FN_GetPlayerUserId, -#else - NULL, -#endif -#ifdef FN_BuildSoundMsg - FN_BuildSoundMsg, -#else - NULL, -#endif -#ifdef FN_IsDedicatedServer - FN_IsDedicatedServer, -#else - NULL, -#endif -#ifdef FN_CVarGetPointer - FN_CVarGetPointer, -#else - NULL, -#endif -#ifdef FN_GetPlayerWONId - FN_GetPlayerWONId, -#else - NULL, -#endif -#ifdef FN_Info_RemoveKey - FN_Info_RemoveKey, -#else - NULL, -#endif -#ifdef FN_GetPhysicsKeyValue - FN_GetPhysicsKeyValue, -#else - NULL, -#endif -#ifdef FN_SetPhysicsKeyValue - FN_SetPhysicsKeyValue, -#else - NULL, -#endif -#ifdef FN_GetPhysicsInfoString - FN_GetPhysicsInfoString, -#else - NULL, -#endif -#ifdef FN_PrecacheEvent - FN_PrecacheEvent, -#else - NULL, -#endif -#ifdef FN_PlaybackEvent - FN_PlaybackEvent, -#else - NULL, -#endif -#ifdef FN_SetFatPVS - FN_SetFatPVS, -#else - NULL, -#endif -#ifdef FN_SetFatPAS - FN_SetFatPAS, -#else - NULL, -#endif -#ifdef FN_CheckVisibility - FN_CheckVisibility, -#else - NULL, -#endif -#ifdef FN_DeltaSetField - FN_DeltaSetField, -#else - NULL, -#endif -#ifdef FN_DeltaUnsetField - FN_DeltaUnsetField, -#else - NULL, -#endif -#ifdef FN_DeltaAddEncoder - FN_DeltaAddEncoder, -#else - NULL, -#endif -#ifdef FN_GetCurrentPlayer - FN_GetCurrentPlayer, -#else - NULL, -#endif -#ifdef FN_CanSkipPlayer - FN_CanSkipPlayer, -#else - NULL, -#endif -#ifdef FN_DeltaFindField - FN_DeltaFindField, -#else - NULL, -#endif -#ifdef FN_DeltaSetFieldByIndex - FN_DeltaSetFieldByIndex, -#else - NULL, -#endif -#ifdef FN_DeltaUnsetFieldByIndex - FN_DeltaUnsetFieldByIndex, -#else - NULL, -#endif -#ifdef FN_SetGroupMask - FN_SetGroupMask, -#else - NULL, -#endif -#ifdef FN_engCreateInstancedBaseline - FN_engCreateInstancedBaseline, -#else - NULL, -#endif -#ifdef FN_Cvar_DirectSet - FN_Cvar_DirectSet, -#else - NULL, -#endif -#ifdef FN_ForceUnmodified - FN_ForceUnmodified, -#else - NULL, -#endif -#ifdef FN_GetPlayerStats - FN_GetPlayerStats, -#else - NULL, -#endif -#ifdef FN_AddServerCommand - FN_AddServerCommand, -#else - NULL, -#endif -#ifdef FN_Voice_GetClientListening - FN_Voice_GetClientListening, -#else - NULL, -#endif -#ifdef FN_Voice_SetClientListening - FN_Voice_SetClientListening, -#else - NULL, -#endif -#ifdef FN_GetPlayerAuthId - FN_GetPlayerAuthId -#else - NULL -#endif -}; // g_EngineFuncs_Table - - -static enginefuncs_t g_EngineFuncs_Post_Table = -{ -#ifdef FN_PrecacheModel_Post - FN_PrecacheModel_Post, -#else - NULL, -#endif -#ifdef FN_PrecacheSound_Post - FN_PrecacheSound_Post, -#else - NULL, -#endif -#ifdef FN_SetModel_Post - FN_SetModel_Post, -#else - NULL, -#endif -#ifdef FN_ModelIndex_Post - FN_ModelIndex_Post, -#else - NULL, -#endif -#ifdef FN_ModelFrames_Post - FN_ModelFrames_Post, -#else - NULL, -#endif -#ifdef FN_SetSize_Post - FN_SetSize_Post, -#else - NULL, -#endif -#ifdef FN_ChangeLevel_Post - FN_ChangeLevel_Post, -#else - NULL, -#endif -#ifdef FN_GetSpawnParms_Post - FN_GetSpawnParms_Post, -#else - NULL, -#endif -#ifdef FN_SaveSpawnParms_Post - FN_SaveSpawnParms_Post, -#else - NULL, -#endif -#ifdef FN_VecToYaw_Post - FN_VecToYaw_Post, -#else - NULL, -#endif -#ifdef FN_VecToAngles_Post - FN_VecToAngles_Post, -#else - NULL, -#endif -#ifdef FN_MoveToOrigin_Post - FN_MoveToOrigin_Post, -#else - NULL, -#endif -#ifdef FN_ChangeYaw_Post - FN_ChangeYaw_Post, -#else - NULL, -#endif -#ifdef FN_ChangePitch_Post - FN_ChangePitch_Post, -#else - NULL, -#endif -#ifdef FN_FindEntityByString_Post - FN_FindEntityByString_Post, -#else - NULL, -#endif -#ifdef FN_GetEntityIllum_Post - FN_GetEntityIllum_Post, -#else - NULL, -#endif -#ifdef FN_FindEntityInSphere_Post - FN_FindEntityInSphere_Post, -#else - NULL, -#endif -#ifdef FN_FindClientInPVS_Post - FN_FindClientInPVS_Post, -#else - NULL, -#endif -#ifdef FN_EntitiesInPVS_Post - FN_EntitiesInPVS_Post, -#else - NULL, -#endif -#ifdef FN_MakeVectors_Post - FN_MakeVectors_Post, -#else - NULL, -#endif -#ifdef FN_AngleVectors_Post - FN_AngleVectors_Post, -#else - NULL, -#endif -#ifdef FN_CreateEntity_Post - FN_CreateEntity_Post, -#else - NULL, -#endif -#ifdef FN_RemoveEntity_Post - FN_RemoveEntity_Post, -#else - NULL, -#endif -#ifdef FN_CreateNamedEntity_Post - FN_CreateNamedEntity_Post, -#else - NULL, -#endif -#ifdef FN_MakeStatic_Post - FN_MakeStatic_Post, -#else - NULL, -#endif -#ifdef FN_EntIsOnFloor_Post - FN_EntIsOnFloor_Post, -#else - NULL, -#endif -#ifdef FN_DropToFloor_Post - FN_DropToFloor_Post, -#else - NULL, -#endif -#ifdef FN_WalkMove_Post - FN_WalkMove_Post, -#else - NULL, -#endif -#ifdef FN_SetOrigin_Post - FN_SetOrigin_Post, -#else - NULL, -#endif -#ifdef FN_EmitSound_Post - FN_EmitSound_Post, -#else - NULL, -#endif -#ifdef FN_EmitAmbientSound_Post - FN_EmitAmbientSound_Post, -#else - NULL, -#endif -#ifdef FN_TraceLine_Post - FN_TraceLine_Post, -#else - NULL, -#endif -#ifdef FN_TraceToss_Post - FN_TraceToss_Post, -#else - NULL, -#endif -#ifdef FN_TraceMonsterHull_Post - FN_TraceMonsterHull_Post, -#else - NULL, -#endif -#ifdef FN_TraceHull_Post - FN_TraceHull_Post, -#else - NULL, -#endif -#ifdef FN_TraceModel_Post - FN_TraceModel_Post, -#else - NULL, -#endif -#ifdef FN_TraceTexture_Post - FN_TraceTexture_Post, -#else - NULL, -#endif -#ifdef FN_TraceSphere_Post - FN_TraceSphere_Post, -#else - NULL, -#endif -#ifdef FN_GetAimVector_Post - FN_GetAimVector_Post, -#else - NULL, -#endif -#ifdef FN_ServerCommand_Post - FN_ServerCommand_Post, -#else - NULL, -#endif -#ifdef FN_ServerExecute_Post - FN_ServerExecute_Post, -#else - NULL, -#endif -#ifdef FN_engClientCommand_Post - FN_engClientCommand_Post, -#else - NULL, -#endif -#ifdef FN_ParticleEffect_Post - FN_ParticleEffect_Post, -#else - NULL, -#endif -#ifdef FN_LightStyle_Post - FN_LightStyle_Post, -#else - NULL, -#endif -#ifdef FN_DecalIndex_Post - FN_DecalIndex_Post, -#else - NULL, -#endif -#ifdef FN_PointContents_Post - FN_PointContents_Post, -#else - NULL, -#endif -#ifdef FN_MessageBegin_Post - FN_MessageBegin_Post, -#else - NULL, -#endif -#ifdef FN_MessageEnd_Post - FN_MessageEnd_Post, -#else - NULL, -#endif -#ifdef FN_WriteByte_Post - FN_WriteByte_Post, -#else - NULL, -#endif -#ifdef FN_WriteChar_Post - FN_WriteChar_Post, -#else - NULL, -#endif -#ifdef FN_WriteShort_Post - FN_WriteShort_Post, -#else - NULL, -#endif -#ifdef FN_WriteLong_Post - FN_WriteLong_Post, -#else - NULL, -#endif -#ifdef FN_WriteAngle_Post - FN_WriteAngle_Post, -#else - NULL, -#endif -#ifdef FN_WriteCoord_Post - FN_WriteCoord_Post, -#else - NULL, -#endif -#ifdef FN_WriteString_Post - FN_WriteString_Post, -#else - NULL, -#endif -#ifdef FN_WriteEntity_Post - FN_WriteEntity_Post, -#else - NULL, -#endif -#ifdef FN_CVarRegister_Post - FN_CVarRegister_Post, -#else - NULL, -#endif -#ifdef FN_CVarGetFloat_Post - FN_CVarGetFloat_Post, -#else - NULL, -#endif -#ifdef FN_CVarGetString_Post - FN_CVarGetString_Post, -#else - NULL, -#endif -#ifdef FN_CVarSetFloat_Post - FN_CVarSetFloat_Post, -#else - NULL, -#endif -#ifdef FN_CVarSetString_Post - FN_CVarSetString_Post, -#else - NULL, -#endif -#ifdef FN_AlertMessage_Post - FN_AlertMessage_Post, -#else - NULL, -#endif -#ifdef FN_EngineFprintf_Post - FN_EngineFprintf_Post, -#else - NULL, -#endif -#ifdef FN_PvAllocEntPrivateData_Post - FN_PvAllocEntPrivateData_Post, -#else - NULL, -#endif -#ifdef FN_PvEntPrivateData_Post - FN_PvEntPrivateData_Post, -#else - NULL, -#endif -#ifdef FN_FreeEntPrivateData_Post - FN_FreeEntPrivateData_Post, -#else - NULL, -#endif -#ifdef FN_SzFromIndex_Post - FN_SzFromIndex_Post, -#else - NULL, -#endif -#ifdef FN_AllocString_Post - FN_AllocString_Post, -#else - NULL, -#endif -#ifdef FN_GetVarsOfEnt_Post - FN_GetVarsOfEnt_Post, -#else - NULL, -#endif -#ifdef FN_PEntityOfEntOffset_Post - FN_PEntityOfEntOffset_Post, -#else - NULL, -#endif -#ifdef FN_EntOffsetOfPEntity_Post - FN_EntOffsetOfPEntity_Post, -#else - NULL, -#endif -#ifdef FN_IndexOfEdict_Post - FN_IndexOfEdict_Post, -#else - NULL, -#endif -#ifdef FN_PEntityOfEntIndex_Post - FN_PEntityOfEntIndex_Post, -#else - NULL, -#endif -#ifdef FN_FindEntityByVars_Post - FN_FindEntityByVars_Post, -#else - NULL, -#endif -#ifdef FN_GetModelPtr_Post - FN_GetModelPtr_Post, -#else - NULL, -#endif -#ifdef FN_RegUserMsg_Post - FN_RegUserMsg_Post, -#else - NULL, -#endif -#ifdef FN_AnimationAutomove_Post - FN_AnimationAutomove_Post, -#else - NULL, -#endif -#ifdef FN_GetBonePosition_Post - FN_GetBonePosition_Post, -#else - NULL, -#endif -#ifdef FN_FunctionFromName_Post - FN_FunctionFromName_Post, -#else - NULL, -#endif -#ifdef FN_NameForFunction_Post - FN_NameForFunction_Post, -#else - NULL, -#endif -#ifdef FN_ClientPrintf_Post - FN_ClientPrintf_Post, -#else - NULL, -#endif -#ifdef FN_ServerPrint_Post - FN_ServerPrint_Post, -#else - NULL, -#endif -#ifdef FN_Cmd_Args_Post - FN_Cmd_Args_Post, -#else - NULL, -#endif -#ifdef FN_Cmd_Argv_Post - FN_Cmd_Argv_Post, -#else - NULL, -#endif -#ifdef FN_Cmd_Argc_Post - FN_Cmd_Argc_Post, -#else - NULL, -#endif -#ifdef FN_GetAttachment_Post - FN_GetAttachment_Post, -#else - NULL, -#endif -#ifdef FN_CRC32_Init_Post - FN_CRC32_Init_Post, -#else - NULL, -#endif -#ifdef FN_CRC32_ProcessBuffer_Post - FN_CRC32_ProcessBuffer_Post, -#else - NULL, -#endif -#ifdef FN_CRC32_ProcessByte_Post - FN_CRC32_ProcessByte_Post, -#else - NULL, -#endif -#ifdef FN_CRC32_Final_Post - FN_CRC32_Final_Post, -#else - NULL, -#endif -#ifdef FN_RandomLong_Post - FN_RandomLong_Post, -#else - NULL, -#endif -#ifdef FN_RandomFloat_Post - FN_RandomFloat_Post, -#else - NULL, -#endif -#ifdef FN_SetView_Post - FN_SetView_Post, -#else - NULL, -#endif -#ifdef FN_Time_Post - FN_Time_Post, -#else - NULL, -#endif -#ifdef FN_CrosshairAngle_Post - FN_CrosshairAngle_Post, -#else - NULL, -#endif -#ifdef FN_LoadFileForMe_Post - FN_LoadFileForMe_Post, -#else - NULL, -#endif -#ifdef FN_FreeFile_Post - FN_FreeFile_Post, -#else - NULL, -#endif -#ifdef FN_EndSection_Post - FN_EndSection_Post, -#else - NULL, -#endif -#ifdef FN_CompareFileTime_Post - FN_CompareFileTime_Post, -#else - NULL, -#endif -#ifdef FN_GetGameDir_Post - FN_GetGameDir_Post, -#else - NULL, -#endif -#ifdef FN_Cvar_RegisterVariable_Post - FN_Cvar_RegisterVariable_Post, -#else - NULL, -#endif -#ifdef FN_FadeClientVolume_Post - FN_FadeClientVolume_Post, -#else - NULL, -#endif -#ifdef FN_SetClientMaxspeed_Post - FN_SetClientMaxspeed_Post, -#else - NULL, -#endif -#ifdef FN_CreateFakeClient_Post - FN_CreateFakeClient_Post, -#else - NULL, -#endif -#ifdef FN_RunPlayerMove_Post - FN_RunPlayerMove_Post, -#else - NULL, -#endif -#ifdef FN_NumberOfEntities_Post - FN_NumberOfEntities_Post, -#else - NULL, -#endif -#ifdef FN_GetInfoKeyBuffer_Post - FN_GetInfoKeyBuffer_Post, -#else - NULL, -#endif -#ifdef FN_InfoKeyValue_Post - FN_InfoKeyValue_Post, -#else - NULL, -#endif -#ifdef FN_SetKeyValue_Post - FN_SetKeyValue_Post, -#else - NULL, -#endif -#ifdef FN_SetClientKeyValue_Post - FN_SetClientKeyValue_Post, -#else - NULL, -#endif -#ifdef FN_IsMapValid_Post - FN_IsMapValid_Post, -#else - NULL, -#endif -#ifdef FN_StaticDecal_Post - FN_StaticDecal_Post, -#else - NULL, -#endif -#ifdef FN_PrecacheGeneric_Post - FN_PrecacheGeneric_Post, -#else - NULL, -#endif -#ifdef FN_GetPlayerUserId_Post - FN_GetPlayerUserId_Post, -#else - NULL, -#endif -#ifdef FN_BuildSoundMsg_Post - FN_BuildSoundMsg_Post, -#else - NULL, -#endif -#ifdef FN_IsDedicatedServer_Post - FN_IsDedicatedServer_Post, -#else - NULL, -#endif -#ifdef FN_CVarGetPointer_Post - FN_CVarGetPointer_Post, -#else - NULL, -#endif -#ifdef FN_GetPlayerWONId_Post - FN_GetPlayerWONId_Post, -#else - NULL, -#endif -#ifdef FN_Info_RemoveKey_Post - FN_Info_RemoveKey_Post, -#else - NULL, -#endif -#ifdef FN_GetPhysicsKeyValue_Post - FN_GetPhysicsKeyValue_Post, -#else - NULL, -#endif -#ifdef FN_SetPhysicsKeyValue_Post - FN_SetPhysicsKeyValue_Post, -#else - NULL, -#endif -#ifdef FN_GetPhysicsInfoString_Post - FN_GetPhysicsInfoString_Post, -#else - NULL, -#endif -#ifdef FN_PrecacheEvent_Post - FN_PrecacheEvent_Post, -#else - NULL, -#endif -#ifdef FN_PlaybackEvent_Post - FN_PlaybackEvent_Post, -#else - NULL, -#endif -#ifdef FN_SetFatPVS_Post - FN_SetFatPVS_Post, -#else - NULL, -#endif -#ifdef FN_SetFatPAS_Post - FN_SetFatPAS_Post, -#else - NULL, -#endif -#ifdef FN_CheckVisibility_Post - FN_CheckVisibility_Post, -#else - NULL, -#endif -#ifdef FN_DeltaSetField_Post - FN_DeltaSetField_Post, -#else - NULL, -#endif -#ifdef FN_DeltaUnsetField_Post - FN_DeltaUnsetField_Post, -#else - NULL, -#endif -#ifdef FN_DeltaAddEncoder_Post - FN_DeltaAddEncoder_Post, -#else - NULL, -#endif -#ifdef FN_GetCurrentPlayer_Post - FN_GetCurrentPlayer_Post, -#else - NULL, -#endif -#ifdef FN_CanSkipPlayer_Post - FN_CanSkipPlayer_Post, -#else - NULL, -#endif -#ifdef FN_DeltaFindField_Post - FN_DeltaFindField_Post, -#else - NULL, -#endif -#ifdef FN_DeltaSetFieldByIndex_Post - FN_DeltaSetFieldByIndex_Post, -#else - NULL, -#endif -#ifdef FN_DeltaUnsetFieldByIndex_Post - FN_DeltaUnsetFieldByIndex_Post, -#else - NULL, -#endif -#ifdef FN_SetGroupMask_Post - FN_SetGroupMask_Post, -#else - NULL, -#endif -#ifdef FN_engCreateInstancedBaseline_Post - FN_engCreateInstancedBaseline_Post, -#else - NULL, -#endif -#ifdef FN_Cvar_DirectSet_Post - FN_Cvar_DirectSet_Post, -#else - NULL, -#endif -#ifdef FN_ForceUnmodified_Post - FN_ForceUnmodified_Post, -#else - NULL, -#endif -#ifdef FN_GetPlayerStats_Post - FN_GetPlayerStats_Post, -#else - NULL, -#endif -#ifdef FN_AddServerCommand_Post - FN_AddServerCommand_Post, -#else - NULL, -#endif -#ifdef FN_Voice_GetClientListening_Post - FN_Voice_GetClientListening_Post, -#else - NULL, -#endif -#ifdef FN_Voice_SetClientListening_Post - FN_Voice_SetClientListening_Post, -#else - NULL, -#endif -#ifdef FN_GetPlayerAuthId_Post - FN_GetPlayerAuthId_Post -#else - NULL -#endif -}; // g_EngineFuncs_Post_Table - - -static NEW_DLL_FUNCTIONS g_NewFuncs_Table = -{ -#ifdef FN_OnFreeEntPrivateData - FN_OnFreeEntPrivateData, -#else - NULL, -#endif -#ifdef FN_GameShutdown - FN_GameShutdown, -#else - NULL, -#endif -#ifdef FN_ShouldCollide - ShouldCollide, -#else - NULL, -#endif -}; - - -static NEW_DLL_FUNCTIONS g_NewFuncs_Post_Table = -{ -#ifdef FN_OnFreeEntPrivateData_Post - FN_OnFreeEntPrivateData_Post, -#else - NULL, -#endif -#ifdef FN_GameShutdown_Post - FN_GameShutdown_Post, -#else - NULL, -#endif -#ifdef FN_ShouldCollide_Post - ShouldCollide_Post, -#else - NULL, -#endif -}; - -// Global variables from metamod. These variable names are referenced by -// various macros. -meta_globals_t *gpMetaGlobals; // metamod globals -gamedll_funcs_t *gpGamedllFuncs; // gameDLL function tables -mutil_funcs_t *gpMetaUtilFuncs; // metamod utility functions - - -plugin_info_t Plugin_info = { - META_INTERFACE_VERSION, - MODULE_NAME, - MODULE_VERSION, - MODULE_DATE, - MODULE_AUTHOR, - MODULE_URL, - MODULE_LOGTAG, - PT_ANYTIME, - PT_ANYTIME -}; - -/* -C_DLLEXPORT int GetEntityAPI(DLL_FUNCTIONS *pFunctionTable, int interfaceVersion) -{ - LOG_DEVELOPER(PLID, "called: GetEntityAPI; version=%d", interfaceVersion); - if(!pFunctionTable) { - LOG_ERROR(PLID, "GetEntityAPI called with null pFunctionTable"); - return(FALSE); - } - else if(interfaceVersion != INTERFACE_VERSION) { - LOG_ERROR(PLID, "GetEntityAPI version mismatch; requested=%d ours=%d", interfaceVersion, INTERFACE_VERSION); - return(FALSE); - } - memcpy(pFunctionTable, &g_EntityAPI_Table, sizeof( DLL_FUNCTIONS ) ); - - return (TRUE); -} - -C_DLLEXPORT int GetEntityAPI_Post(DLL_FUNCTIONS *pFunctionTable, int interfaceVersion) -{ - LOG_DEVELOPER(PLID, "called: GetEntityAPI_Post; version=%d", interfaceVersion); - if(!pFunctionTable) { - LOG_ERROR(PLID, "GetEntityAPI_Post called with null pFunctionTable"); - return(FALSE); - } - else if(interfaceVersion != INTERFACE_VERSION) { - LOG_ERROR(PLID, "GetEntityAPI_Post version mismatch; requested=%d ours=%d", interfaceVersion, INTERFACE_VERSION); - return(FALSE); - } - memcpy(pFunctionTable, &g_EntityAPI_Post_Table, sizeof( DLL_FUNCTIONS ) ); - - return(TRUE); -} -*/ - -C_DLLEXPORT int GetEntityAPI2(DLL_FUNCTIONS *pFunctionTable, int *interfaceVersion) -{ - LOG_DEVELOPER(PLID, "called: GetEntityAPI2; version=%d", *interfaceVersion); - if(!pFunctionTable) { - LOG_ERROR(PLID, "GetEntityAPI2 called with null pFunctionTable"); - return(FALSE); - } - else if(*interfaceVersion != INTERFACE_VERSION) { - LOG_ERROR(PLID, - "GetEntityAPI2 version mismatch; requested=%d ours=%d", - *interfaceVersion, INTERFACE_VERSION); - //! Tell engine what version we had, so it can figure out who is - //! out of date. - *interfaceVersion = INTERFACE_VERSION; - return(FALSE); - } - memcpy(pFunctionTable, &g_EntityAPI_Table, sizeof(DLL_FUNCTIONS)); - g_pFunctionTable=pFunctionTable; - return(TRUE); -} - -C_DLLEXPORT int GetEntityAPI2_Post(DLL_FUNCTIONS *pFunctionTable, int *interfaceVersion) -{ - LOG_DEVELOPER(PLID, "called: GetEntityAPI2_Post; version=%d", *interfaceVersion); - if(!pFunctionTable) { - LOG_ERROR(PLID, "GetEntityAPI2_Post called with null pFunctionTable"); - return(FALSE); - } - else if(*interfaceVersion != INTERFACE_VERSION) { - LOG_ERROR(PLID, "GetEntityAPI2_Post version mismatch; requested=%d ours=%d", *interfaceVersion, INTERFACE_VERSION); - //! Tell engine what version we had, so it can figure out who is out of date. - *interfaceVersion = INTERFACE_VERSION; - return(FALSE); - } - memcpy( pFunctionTable, &g_EntityAPI_Post_Table, sizeof( DLL_FUNCTIONS ) ); - g_pFunctionTable_Post=pFunctionTable; - return(TRUE); -} - -C_DLLEXPORT int GetEngineFunctions(enginefuncs_t *pengfuncsFromEngine, int *interfaceVersion) -{ - LOG_DEVELOPER(PLID, "called: GetEngineFunctions; version=%d", - *interfaceVersion); - if(!pengfuncsFromEngine) { - LOG_ERROR(PLID, - "GetEngineFunctions called with null pengfuncsFromEngine"); - return(FALSE); - } - else if(*interfaceVersion != ENGINE_INTERFACE_VERSION) { - LOG_ERROR(PLID, - "GetEngineFunctions version mismatch; requested=%d ours=%d", - *interfaceVersion, ENGINE_INTERFACE_VERSION); - // Tell metamod what version we had, so it can figure out who is - // out of date. - *interfaceVersion = ENGINE_INTERFACE_VERSION; - return(FALSE); - } - memcpy(pengfuncsFromEngine, &g_EngineFuncs_Table, sizeof(enginefuncs_t)); - g_pengfuncsTable=pengfuncsFromEngine; - return TRUE; -} - -C_DLLEXPORT int GetEngineFunctions_Post(enginefuncs_t *pengfuncsFromEngine, int *interfaceVersion) -{ - LOG_DEVELOPER(PLID, "called: GetEngineFunctions_Post; version=%d", *interfaceVersion); - if(!pengfuncsFromEngine) { - LOG_ERROR(PLID, "GetEngineFunctions_Post called with null pengfuncsFromEngine"); - return(FALSE); - } - else if(*interfaceVersion != ENGINE_INTERFACE_VERSION) { - LOG_ERROR(PLID, "GetEngineFunctions_Post version mismatch; requested=%d ours=%d", *interfaceVersion, ENGINE_INTERFACE_VERSION); - // Tell metamod what version we had, so it can figure out who is out of date. - *interfaceVersion = ENGINE_INTERFACE_VERSION; - return(FALSE); - } - memcpy(pengfuncsFromEngine, &g_EngineFuncs_Post_Table, sizeof(enginefuncs_t)); - g_pengfuncsTable_Post=pengfuncsFromEngine; - return TRUE; - -} - -C_DLLEXPORT int GetNewDLLFunctions(NEW_DLL_FUNCTIONS *pNewFunctionTable, - int *interfaceVersion) -{ - LOG_DEVELOPER(PLID, "called: GetNewDLLFunctions; version=%d", - *interfaceVersion); - if(!pNewFunctionTable) { - LOG_ERROR(PLID, - "GetNewDLLFunctions called with null pNewFunctionTable"); - return(FALSE); - } - else if(*interfaceVersion != NEW_DLL_FUNCTIONS_VERSION) { - LOG_ERROR(PLID, - "GetNewDLLFunctions version mismatch; requested=%d ours=%d", - *interfaceVersion, NEW_DLL_FUNCTIONS_VERSION); - //! Tell engine what version we had, so it can figure out who is - //! out of date. - *interfaceVersion = NEW_DLL_FUNCTIONS_VERSION; - return(FALSE); - } - memcpy(pNewFunctionTable, &g_NewFuncs_Table, sizeof(NEW_DLL_FUNCTIONS)); - g_pNewFunctionsTable=pNewFunctionTable; - return TRUE; -} - -C_DLLEXPORT int GetNewDLLFunctions_Post( NEW_DLL_FUNCTIONS *pNewFunctionTable, int *interfaceVersion ) -{ - LOG_DEVELOPER(PLID, "called: GetNewDLLFunctions_Post; version=%d", *interfaceVersion); - if(!pNewFunctionTable) { - LOG_ERROR(PLID, "GetNewDLLFunctions_Post called with null pNewFunctionTable"); - return(FALSE); - } - else if(*interfaceVersion != NEW_DLL_FUNCTIONS_VERSION) { - LOG_ERROR(PLID, "GetNewDLLFunctions_Post version mismatch; requested=%d ours=%d", *interfaceVersion, NEW_DLL_FUNCTIONS_VERSION); - //! Tell engine what version we had, so it can figure out who is out of date. - *interfaceVersion = NEW_DLL_FUNCTIONS_VERSION; - return(FALSE); - } - memcpy(pNewFunctionTable, &g_NewFuncs_Post_Table, sizeof(NEW_DLL_FUNCTIONS)); - g_pNewFunctionsTable_Post=pNewFunctionTable; - return TRUE; -} - - -static META_FUNCTIONS g_MetaFunctions_Table = -{ - NULL, - NULL, - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post -}; - -C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -{ - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); - return(FALSE); - } - - gpMetaUtilFuncs = pMetaUtilFuncs; - - *pPlugInfo = &Plugin_info; - - // Check for interface version compatibility. - if(!FStrEq(ifvers, Plugin_info.ifvers)) { - int mmajor=0, mminor=0, pmajor=0, pminor=0; - LOG_MESSAGE(PLID, "WARNING: meta-interface version mismatch; requested=%s ours=%s", - Plugin_info.logtag, ifvers); - // If plugin has later interface version, it's incompatible (update - // metamod). - sscanf(ifvers, "%d:%d", &mmajor, &mminor); - sscanf(META_INTERFACE_VERSION, "%d:%d", &pmajor, &pminor); - if(pmajor > mmajor || (pmajor==mmajor && pminor > mminor)) { - LOG_ERROR(PLID, "metamod version is too old for this module; update metamod"); - return(FALSE); - } - // If plugin has older major interface version, it's incompatible - // (update plugin). - else if(pmajor < mmajor) { - LOG_ERROR(PLID, "metamod version is incompatible with this module; please find a newer version of this module"); - return(FALSE); - } - // Minor interface is older, but this is guaranteed to be backwards - // compatible, so we warn, but we still accept it. - else if(pmajor==mmajor && pminor < mminor) - LOG_MESSAGE(PLID, "WARNING: metamod version is newer than expected; consider finding a newer version of this module"); - else - LOG_ERROR(PLID, "unexpected version comparison; metavers=%s, mmajor=%d, mminor=%d; plugvers=%s, pmajor=%d, pminor=%d", ifvers, mmajor, mminor, META_INTERFACE_VERSION, pmajor, pminor); - } - -#ifdef FN_META_QUERY - return FN_META_QUERY(); -#endif // FN_META_QUERY - - return 1; -} - - -C_DLLEXPORT int Meta_Attach(PLUG_LOADTIME now, META_FUNCTIONS *pFunctionTable, meta_globals_t *pMGlobals, gamedll_funcs_t *pGamedllFuncs) -{ - if(now > Plugin_info.loadable) { - LOG_ERROR(PLID, "Can't load module right now"); - return(FALSE); - } - if(!pMGlobals) { - LOG_ERROR(PLID, "Meta_Attach called with null pMGlobals"); - return(FALSE); - } - gpMetaGlobals=pMGlobals; - if(!pFunctionTable) { - LOG_ERROR(PLID, "Meta_Attach called with null pFunctionTable"); - return(FALSE); - } - - memcpy(pFunctionTable, &g_MetaFunctions_Table, sizeof(META_FUNCTIONS)); - gpGamedllFuncs=pGamedllFuncs; - - // Let's go. - -#ifdef FN_META_ATTACH - FN_META_ATTACH(); -#endif // FN_META_ATTACH - - return TRUE; -} - -C_DLLEXPORT int Meta_Detach(PLUG_LOADTIME now, PL_UNLOAD_REASON reason) -{ - if(now > Plugin_info.unloadable && reason != PNL_CMD_FORCED) { - LOG_ERROR(PLID, "Can't unload plugin right now"); - return(FALSE); - } - -#ifdef FN_META_DETACH - return FN_META_DETACH(); -#endif // FN_META_DETACH - return TRUE; -} - - - -#ifdef __linux__ -// linux prototype -C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - -#else -#ifdef _MSC_VER -// MSVC: Simulate __stdcall calling convention -C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) -{ - __asm // Prolog - { - // Save ebp - push ebp - // Set stack frame pointer - mov ebp, esp - // Allocate space for local variables - // The MSVC compiler gives us the needed size in __LOCAL_SIZE. - sub esp, __LOCAL_SIZE - // Push registers - push ebx - push esi - push edi - } -#else // _MSC_VER -#ifdef __GNUC__ -// GCC can also work with this -C_DLLEXPORT void __stdcall GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) -{ -#else // __GNUC__ -// compiler not known -#error There is no support (yet) for your compiler. Please use MSVC or GCC compilers or contact the AMX Mod X dev team. -#endif // __GNUC__ -#endif // _MSC_VER -#endif // __linux__ - - // ** Function core <-- - memcpy(&g_engfuncs, pengfuncsFromEngine, sizeof(enginefuncs_t)); - gpGlobals = pGlobals; - // NOTE! Have to call logging function _after_ copying into g_engfuncs, so - // that g_engfuncs.pfnAlertMessage() can be resolved properly, heh. :) - UTIL_LogPrintf("[%s] dev: called: GiveFnptrsToDll\n", Plugin_info.logtag); - // --> ** Function core - -#ifdef _MSC_VER - // Epilog - if (sizeof(int*) == 8) - { // 64 bit - __asm - { - // Pop registers - pop edi - pop esi - pop ebx - // Restore stack frame pointer - mov esp, ebp - // Restore ebp - pop ebp - // 2 * sizeof(int*) = 16 on 64 bit - ret 16 - } - } - else - { // 32 bit - __asm - { - // Pop registers - pop edi - pop esi - pop ebx - // Restore stack frame pointer - mov esp, ebp - // Restore ebp - pop ebp - // 2 * sizeof(int*) = 8 on 32 bit - ret 8 - } - } -#endif // #ifdef _MSC_VER -} - -#endif // #ifdef USE_METAMOD - -/************* AMXX Stuff *************/ - -// *** Globals *** -// Module info -static amxx_module_info_s g_ModuleInfo = -{ - MODULE_NAME, - MODULE_AUTHOR, - MODULE_VERSION, -#ifdef MODULE_RELOAD_ON_MAPCHANGE - 1, -#else // MODULE_RELOAD_ON_MAPCHANGE - 0, -#endif // MODULE_RELOAD_ON_MAPCHANGE - MODULE_LOGTAG -}; - -// Storage for the requested functions -PFN_ADD_NATIVES g_fn_AddNatives; -PFN_BUILD_PATHNAME g_fn_BuildPathname; -PFN_BUILD_PATHNAME_R g_fn_BuildPathnameR; -PFN_GET_AMXADDR g_fn_GetAmxAddr; -PFN_PRINT_SRVCONSOLE g_fn_PrintSrvConsole; -PFN_GET_MODNAME g_fn_GetModname; -PFN_GET_AMXSCRIPTNAME g_fn_GetAmxScriptName; -PFN_GET_AMXSCRIPT g_fn_GetAmxScript; -PFN_FIND_AMXSCRIPT_BYAMX g_fn_FindAmxScriptByAmx; -PFN_FIND_AMXSCRIPT_BYNAME g_fn_FindAmxScriptByName; -PFN_SET_AMXSTRING g_fn_SetAmxString; -PFN_GET_AMXSTRING g_fn_GetAmxString; -PFN_GET_AMXSTRINGLEN g_fn_GetAmxStringLen; -PFN_FORMAT_AMXSTRING g_fn_FormatAmxString; -PFN_COPY_AMXMEMORY g_fn_CopyAmxMemory; -PFN_LOG g_fn_Log; -PFN_LOG_ERROR g_fn_LogErrorFunc; -PFN_RAISE_AMXERROR g_fn_RaiseAmxError; -PFN_REGISTER_FORWARD g_fn_RegisterForward; -PFN_EXECUTE_FORWARD g_fn_ExecuteForward; -PFN_PREPARE_CELLARRAY g_fn_PrepareCellArray; -PFN_PREPARE_CHARARRAY g_fn_PrepareCharArray; -PFN_PREPARE_CELLARRAY_A g_fn_PrepareCellArrayA; -PFN_PREPARE_CHARARRAY_A g_fn_PrepareCharArrayA; -PFN_IS_PLAYER_VALID g_fn_IsPlayerValid; -PFN_GET_PLAYER_NAME g_fn_GetPlayerName; -PFN_GET_PLAYER_IP g_fn_GetPlayerIP; -PFN_IS_PLAYER_INGAME g_fn_IsPlayerIngame; -PFN_IS_PLAYER_BOT g_fn_IsPlayerBot; -PFN_IS_PLAYER_AUTHORIZED g_fn_IsPlayerAuthorized; -PFN_GET_PLAYER_TIME g_fn_GetPlayerTime; -PFN_GET_PLAYER_PLAYTIME g_fn_GetPlayerPlayTime; -PFN_GET_PLAYER_CURWEAPON g_fn_GetPlayerCurweapon; -PFN_GET_PLAYER_TEAM g_fn_GetPlayerTeam; -PFN_GET_PLAYER_TEAMID g_fn_GetPlayerTeamID; -PFN_GET_PLAYER_DEATHS g_fn_GetPlayerDeaths; -PFN_GET_PLAYER_MENU g_fn_GetPlayerMenu; -PFN_GET_PLAYER_KEYS g_fn_GetPlayerKeys; -PFN_IS_PLAYER_ALIVE g_fn_IsPlayerAlive; -PFN_GET_PLAYER_FRAGS g_fn_GetPlayerFrags; -PFN_IS_PLAYER_CONNECTING g_fn_IsPlayerConnecting; -PFN_IS_PLAYER_HLTV g_fn_IsPlayerHLTV; -PFN_GET_PLAYER_ARMOR g_fn_GetPlayerArmor; -PFN_GET_PLAYER_HEALTH g_fn_GetPlayerHealth; -#ifdef MEMORY_TEST -PFN_ALLOCATOR g_fn_Allocator; -PFN_REALLOCATOR g_fn_Reallocator; -PFN_DEALLOCATOR g_fn_Deallocator; -#endif -PFN_AMX_EXEC g_fn_AmxExec; -PFN_AMX_EXECV g_fn_AmxExecv; -PFN_AMX_ALLOT g_fn_AmxAllot; -PFN_AMX_FINDPUBLIC g_fn_AmxFindPublic; -PFN_LOAD_AMXSCRIPT g_fn_LoadAmxScript; -PFN_UNLOAD_AMXSCRIPT g_fn_UnloadAmxScript; -PFN_REAL_TO_CELL g_fn_RealToCell; -PFN_CELL_TO_REAL g_fn_CellToReal; -PFN_REGISTER_SPFORWARD g_fn_RegisterSPForward; -PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName; -PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward; -PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File; -PFN_AMX_FINDNATIVE g_fn_AmxFindNative; -PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags; -PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict; -PFN_FORMAT g_fn_Format; -PFN_REGISTERFUNCTION g_fn_RegisterFunction; -PFN_REQ_FNPTR g_fn_RequestFunction; -PFN_AMX_PUSH g_fn_AmxPush; - -// *** Exports *** -C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo) -{ - // check parameters - if (!interfaceVersion || !moduleInfo) - return AMXX_PARAM; - - // check interface version - if (*interfaceVersion != AMXX_INTERFACE_VERSION) - { - // Tell amxx core our interface version - *interfaceVersion = AMXX_INTERFACE_VERSION; - return AMXX_IFVERS; - } - - // copy module info - memcpy(moduleInfo, &g_ModuleInfo, sizeof(amxx_module_info_s)); - -#ifdef FN_AMXX_QUERY - FN_AMXX_QUERY(); -#endif // FN_AMXX_QUERY - // Everything ok :) - return AMXX_OK; -} - -// request function -#define REQFUNC(name, fptr, type) if ((fptr = (type)reqFnptrFunc(name)) == 0) return AMXX_FUNC_NOT_PRESENT -// request optional function -#define REQFUNC_OPT(name, fptr, type) fptr = (type)reqFnptrFunc(name) - -C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc) -{ - // Check pointer - if (!reqFnptrFunc) - return AMXX_PARAM; - - g_fn_RequestFunction = reqFnptrFunc; - - // Req all known functions - // Misc - REQFUNC("BuildPathname", g_fn_BuildPathname, PFN_BUILD_PATHNAME); - REQFUNC("BuildPathnameR", g_fn_BuildPathnameR, PFN_BUILD_PATHNAME_R); - REQFUNC("PrintSrvConsole", g_fn_PrintSrvConsole, PFN_PRINT_SRVCONSOLE); - REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME); - REQFUNC("Log", g_fn_Log, PFN_LOG); - REQFUNC("LogError", g_fn_LogErrorFunc, PFN_LOG_ERROR); - REQFUNC("MergeDefinitionFile", g_fn_MergeDefinition_File, PFN_MERGEDEFINITION_FILE); - REQFUNC("Format", g_fn_Format, PFN_FORMAT); - REQFUNC("RegisterFunction", g_fn_RegisterFunction, PFN_REGISTERFUNCTION); - - // Amx scripts - REQFUNC("GetAmxScript", g_fn_GetAmxScript, PFN_GET_AMXSCRIPT); - REQFUNC("FindAmxScriptByAmx", g_fn_FindAmxScriptByAmx, PFN_FIND_AMXSCRIPT_BYAMX); - REQFUNC("FindAmxScriptByName", g_fn_FindAmxScriptByName, PFN_FIND_AMXSCRIPT_BYNAME); - REQFUNC("LoadAmxScript", g_fn_LoadAmxScript, PFN_LOAD_AMXSCRIPT); - REQFUNC("UnloadAmxScript", g_fn_UnloadAmxScript, PFN_UNLOAD_AMXSCRIPT); - REQFUNC("GetAmxScriptName", g_fn_GetAmxScriptName, PFN_GET_AMXSCRIPTNAME); - - // String / mem in amx scripts support - REQFUNC("SetAmxString", g_fn_SetAmxString, PFN_SET_AMXSTRING); - REQFUNC("GetAmxString", g_fn_GetAmxString, PFN_GET_AMXSTRING); - REQFUNC("GetAmxStringLen", g_fn_GetAmxStringLen, PFN_GET_AMXSTRINGLEN); - REQFUNC("FormatAmxString", g_fn_FormatAmxString, PFN_FORMAT_AMXSTRING); - REQFUNC("CopyAmxMemory", g_fn_CopyAmxMemory, PFN_COPY_AMXMEMORY); - REQFUNC("GetAmxAddr", g_fn_GetAmxAddr, PFN_GET_AMXADDR); - - REQFUNC("amx_Exec", g_fn_AmxExec, PFN_AMX_EXEC); - REQFUNC("amx_Execv", g_fn_AmxExecv, PFN_AMX_EXECV); - REQFUNC("amx_FindPublic", g_fn_AmxFindPublic, PFN_AMX_FINDPUBLIC); - REQFUNC("amx_Allot", g_fn_AmxAllot, PFN_AMX_ALLOT); - REQFUNC("amx_FindNative", g_fn_AmxFindNative, PFN_AMX_FINDNATIVE); - - // Natives / Forwards - REQFUNC("AddNatives", g_fn_AddNatives, PFN_ADD_NATIVES); - REQFUNC("RaiseAmxError", g_fn_RaiseAmxError, PFN_RAISE_AMXERROR); - REQFUNC("RegisterForward", g_fn_RegisterForward, PFN_REGISTER_FORWARD); - REQFUNC("RegisterSPForward", g_fn_RegisterSPForward, PFN_REGISTER_SPFORWARD); - REQFUNC("RegisterSPForwardByName", g_fn_RegisterSPForwardByName, PFN_REGISTER_SPFORWARD_BYNAME); - REQFUNC("UnregisterSPForward", g_fn_UnregisterSPForward, PFN_UNREGISTER_SPFORWARD); - REQFUNC("ExecuteForward", g_fn_ExecuteForward, PFN_EXECUTE_FORWARD); - REQFUNC("PrepareCellArray", g_fn_PrepareCellArray, PFN_PREPARE_CELLARRAY); - REQFUNC("PrepareCharArray", g_fn_PrepareCharArray, PFN_PREPARE_CHARARRAY); - REQFUNC("PrepareCellArrayA", g_fn_PrepareCellArrayA, PFN_PREPARE_CELLARRAY_A); - REQFUNC("PrepareCharArrayA", g_fn_PrepareCharArrayA, PFN_PREPARE_CHARARRAY_A); - // Player - REQFUNC("IsPlayerValid", g_fn_IsPlayerValid, PFN_IS_PLAYER_VALID); - REQFUNC("GetPlayerName", g_fn_GetPlayerName, PFN_GET_PLAYER_NAME); - REQFUNC("GetPlayerIP", g_fn_GetPlayerIP, PFN_GET_PLAYER_IP); - REQFUNC("IsPlayerInGame", g_fn_IsPlayerIngame, PFN_IS_PLAYER_INGAME); - REQFUNC("IsPlayerBot", g_fn_IsPlayerBot, PFN_IS_PLAYER_BOT); - REQFUNC("IsPlayerAuthorized", g_fn_IsPlayerAuthorized, PFN_IS_PLAYER_AUTHORIZED); - REQFUNC("GetPlayerTime", g_fn_GetPlayerTime, PFN_GET_PLAYER_TIME); - REQFUNC("GetPlayerPlayTime", g_fn_GetPlayerPlayTime, PFN_GET_PLAYER_PLAYTIME); - REQFUNC("GetPlayerCurweapon", g_fn_GetPlayerCurweapon, PFN_GET_PLAYER_CURWEAPON); - REQFUNC("GetPlayerTeamID", g_fn_GetPlayerTeamID, PFN_GET_PLAYER_TEAMID); - REQFUNC("GetPlayerTeam",g_fn_GetPlayerTeam, PFN_GET_PLAYER_TEAM); - REQFUNC("GetPlayerDeaths", g_fn_GetPlayerDeaths, PFN_GET_PLAYER_DEATHS); - REQFUNC("GetPlayerMenu", g_fn_GetPlayerMenu, PFN_GET_PLAYER_MENU); - REQFUNC("GetPlayerKeys", g_fn_GetPlayerKeys, PFN_GET_PLAYER_KEYS); - REQFUNC("IsPlayerAlive", g_fn_IsPlayerAlive, PFN_IS_PLAYER_ALIVE); - REQFUNC("GetPlayerFrags", g_fn_GetPlayerFrags, PFN_GET_PLAYER_FRAGS); - REQFUNC("IsPlayerConnecting", g_fn_IsPlayerConnecting, PFN_IS_PLAYER_CONNECTING); - REQFUNC("IsPlayerHLTV", g_fn_IsPlayerHLTV, PFN_IS_PLAYER_HLTV); - REQFUNC("GetPlayerArmor", g_fn_GetPlayerArmor, PFN_GET_PLAYER_ARMOR); - REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH); - REQFUNC("GetPlayerFlags", g_fn_GetPlayerFlags, PFN_GETPLAYERFLAGS); - REQFUNC("GetPlayerEdict", g_fn_GetPlayerEdict, PFN_GET_PLAYER_EDICT); - REQFUNC("amx_Push", g_fn_AmxPush, PFN_AMX_PUSH); - -#ifdef MEMORY_TEST - // Memory - REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR); - REQFUNC_OPT("Reallocator", g_fn_Reallocator, PFN_REALLOCATOR); - REQFUNC_OPT("Deallocator", g_fn_Deallocator, PFN_DEALLOCATOR); -#endif - - REQFUNC("CellToReal", g_fn_CellToReal, PFN_CELL_TO_REAL); - REQFUNC("RealToCell", g_fn_RealToCell, PFN_REAL_TO_CELL); - -#ifdef FN_AMXX_ATTACH - FN_AMXX_ATTACH(); -#endif // FN_AMXX_ATACH - - return AMXX_OK; -} - -C_DLLEXPORT int AMXX_Detach() -{ -#ifdef FN_AMXX_DETACH - FN_AMXX_DETACH(); -#endif // FN_AMXX_DETACH - - return AMXX_OK; -} - -C_DLLEXPORT int AMXX_PluginsLoaded() -{ -#ifdef FN_AMXX_PLUGINSLOADED - FN_AMXX_PLUGINSLOADED(); -#endif // FN_AMXX_PLUGINSLOADED - return AMXX_OK; -} - -// Advanced MF functions -void MF_Log(const char *fmt, ...) -{ - // :TODO: Overflow possible here - char msg[3072]; - va_list arglst; - va_start(arglst, fmt); - vsprintf(msg, fmt, arglst); - va_end(arglst); - - g_fn_Log("[%s] %s", MODULE_LOGTAG, msg); -} - -void MF_LogError(AMX *amx, int err, const char *fmt, ...) -{ - // :TODO: Overflow possible here - char msg[3072]; - va_list arglst; - va_start(arglst, fmt); - vsprintf(msg, fmt, arglst); - va_end(arglst); - - g_fn_LogErrorFunc(amx, err, "[%s] %s", MODULE_LOGTAG, msg); -} - - -#ifdef _DEBUG -// validate macros -// Makes sure compiler reports errors when macros are invalid -void ValidateMacros_DontCallThis_Smiley() -{ - MF_BuildPathname("str", "str", 0); - MF_BuildPathnameR(NULL, 0, "%d", 0); - MF_FormatAmxString(NULL, 0, 0, NULL); - MF_GetAmxAddr(NULL, 0); - MF_PrintSrvConsole("str", "str", 0); - MF_GetModname(); - MF_GetScriptName(0); - MF_GetScriptAmx(0); - MF_FindScriptByAmx(NULL); - MF_FindScriptByName("str"); - MF_SetAmxString(NULL, 0, "str", 0); - MF_GetAmxString(NULL, 0, 0, 0); - MF_GetAmxStringLen(NULL); - MF_CopyAmxMemory(NULL, NULL, 0); - MF_Log("str", "str", 0); - MF_LogError(NULL, 0, NULL); - MF_RaiseAmxError(NULL, 0); - MF_RegisterForward("str", (ForwardExecType)0, 0, 0, 0); - MF_ExecuteForward(0, 0, 0); - MF_PrepareCellArray(NULL, 0); - MF_PrepareCharArray(NULL, 0); - MF_PrepareCellArrayA(NULL, 0, true); - MF_PrepareCharArrayA(NULL, 0, true); - MF_IsPlayerValid(0); - MF_GetPlayerName(0); - MF_GetPlayerIP(0); - MF_IsPlayerIngame(0); - MF_IsPlayerBot(0); - MF_IsPlayerAuthorized(0); - MF_GetPlayerTime(0); - MF_GetPlayerPlayTime(0); - MF_GetPlayerCurweapon(0); - MF_GetPlayerTeamID(0); - MF_GetPlayerTeam(0); - MF_GetPlayerDeaths(0); - MF_GetPlayerMenu(0); - MF_GetPlayerKeys(0); - MF_IsPlayerAlive(0); - MF_GetPlayerFrags(0); - MF_IsPlayerConnecting(0); - MF_IsPlayerHLTV(0); - MF_GetPlayerArmor(0); - MF_GetPlayerHealth(0); - MF_AmxExec(0, 0, 0); - MF_AmxExecv(0, 0, 0, 0, 0); - MF_AmxFindPublic(0, 0, 0); - MF_AmxAllot(0, 0, 0, 0); - MF_LoadAmxScript(0, 0, 0, 0, 0); - MF_UnloadAmxScript(0, 0); - MF_RegisterSPForward(0, 0, 0, 0, 0, 0); - MF_RegisterSPForwardByName(0, 0, 0, 0, 0, 0); - MF_UnregisterSPForward(0); - MF_GetPlayerFrags(0); - MF_GetPlayerEdict(0); - MF_Format("", 4, "str"); - MF_RegisterFunction(NULL, ""); -} -#endif - -#ifdef MEMORY_TEST - -/************* MEMORY *************/ -// undef all defined macros -#undef new -#undef delete -#undef malloc -#undef calloc -#undef realloc -#undef free - -const unsigned int m_alloc_unknown = 0; -const unsigned int m_alloc_new = 1; -const unsigned int m_alloc_new_array = 2; -const unsigned int m_alloc_malloc = 3; -const unsigned int m_alloc_calloc = 4; -const unsigned int m_alloc_realloc = 5; -const unsigned int m_alloc_delete = 6; -const unsigned int m_alloc_delete_array = 7; -const unsigned int m_alloc_free = 8; - -const char *g_Mem_CurrentFilename = "??"; -int g_Mem_CurrentLine = 0; -const char *g_Mem_CurrentFunc = "??"; - -const char *Mem_MakeSourceFile(const char *sourceFile) -{ - static char buffer[512]; - static size_t pos = 0; - if (!pos) - { - // init - buffer[0] = '['; - strcpy(buffer + 1, MODULE_NAME); - pos = strlen(MODULE_NAME) + 1; - buffer[pos++] = ']'; - } - - // convert from absolute path to [modulename]filename - const char *ptr = strrchr(sourceFile, '\\'); - if (ptr) - ptr++; - else - { - ptr = strrchr(sourceFile, '/'); - if (ptr) - ptr++; - else - ptr = sourceFile; - } - strcpy(buffer + pos, ptr); - return buffer; -} - -void Mem_SetOwner(const char *filename, int line, const char *function) -{ - g_Mem_CurrentFilename = filename; - g_Mem_CurrentLine = line; - g_Mem_CurrentFunc = function; -} - -void Mem_ResetGlobals() -{ - Mem_SetOwner("??", 0, "??"); -} - -// raw (re/de)allocators -void * Mem_Allocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, - const unsigned int allocationType, const size_t reportedSize) -{ - if (g_fn_Allocator) - return g_fn_Allocator(Mem_MakeSourceFile(sourceFile), sourceLine, sourceFunc, allocationType, reportedSize); - else - return malloc(reportedSize); -} - -void * Mem_Reallocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, - const unsigned int reallocationType, const size_t reportedSize, void *reportedAddress) -{ - if (g_fn_Reallocator) - return g_fn_Reallocator(Mem_MakeSourceFile(sourceFile), sourceLine, sourceFunc, reallocationType, reportedSize, reportedAddress); - else - return realloc(reportedAddress, reportedSize); -} - -void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, - const unsigned int deallocationType, void *reportedAddress) -{ - // If you you get user breakpoint here, something failed :) - // - invalid pointer - // - alloc type mismatch ( for example - // char *a = new char[5]; delete char; - // ) - // - The allocation unit is damaged (for example - // char *a = new char[5]; a[6] = 8; - // ) - // - break on dealloc flag set (somehow) - - if (g_fn_Deallocator) - g_fn_Deallocator(Mem_MakeSourceFile(sourceFile), sourceLine, sourceFunc, deallocationType, reportedAddress); - else - free(reportedAddress); -} - -// new and delete operators -void *operator new(size_t reportedSize) -{ - if (reportedSize == 0) - reportedSize = 1; - void *ptr = Mem_Allocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_new, reportedSize); - // :TODO: Handler support ? - if (ptr) - return ptr; - - // allocation failed - return NULL; -} - -void *operator new[](size_t reportedSize) -{ - if (reportedSize == 0) - reportedSize = 1; - void *ptr = Mem_Allocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_new_array, reportedSize); - // :TODO: Handler support ? - if (ptr) - return ptr; - - // allocation failed - return NULL; -} - -// Microsoft memory tracking operators -void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine) -{ - if (reportedSize == 0) - reportedSize = 1; - void *ptr = Mem_Allocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_new, reportedSize); - // :TODO: Handler support ? - if (ptr) - return ptr; - - // allocation failed - return NULL; -} -void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine) -{ - if (reportedSize == 0) - reportedSize = 1; - void *ptr = Mem_Allocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_new_array, reportedSize); - // :TODO: Handler support ? - if (ptr) - return ptr; - - // allocation failed - return NULL; -} - -void operator delete(void *reportedAddress) -{ - if (!reportedAddress) - return; - - Mem_Deallocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_delete, reportedAddress); -} - -void operator delete[](void *reportedAddress) -{ - if (!reportedAddress) - return; - - Mem_Deallocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_delete_array, reportedAddress); -} - -#else - -#if !defined NO_ALLOC_OVERRIDES && !defined MEMORY_TEST && !defined WIN32 -void * ::operator new(size_t size) { - return(calloc(1, size)); -} - -void * ::operator new[](size_t size) { - return(calloc(1, size)); -} - -void ::operator delete(void * ptr) { - if(ptr) - free(ptr); -} - -void ::operator delete[](void * ptr) { - if(ptr) - free(ptr); -} -#endif - -#endif //MEMORY_TEST - -/************* stuff from dlls/util.cpp *************/ -// must come here because cbase.h declares it's own operator new - -#ifdef USE_METAMOD - -// Selected portions of dlls/util.cpp from SDK 2.1. -// Functions copied from there as needed... -// And modified to avoid buffer overflows (argh). - -/*** -* -* Copyright (c) 1999, 2000 Valve LLC. All rights reserved. -* -* This product contains software technology licensed from Id -* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc. -* All Rights Reserved. -* -* Use, distribution, and modification of this source code and/or resulting -* object code is restricted to non-commercial enhancements to products from -* Valve LLC. All other use, distribution, or modification is prohibited -* without written permission from Valve LLC. -* -****/ -/* - -===== util.cpp ======================================================== - - Utility code. Really not optional after all. - -*/ - -#include -#include "sdk_util.h" -#include - -#include // for strncpy(), etc - -#include "osdep.h" // win32 vsnprintf, etc - -char* UTIL_VarArgs( char *format, ... ) -{ - va_list argptr; - static char string[1024]; - - va_start (argptr, format); - vsnprintf (string, sizeof(string), format, argptr); - va_end (argptr); - - return string; -} - - -//========================================================= -// UTIL_LogPrintf - Prints a logged message to console. -// Preceded by LOG: ( timestamp ) < message > -//========================================================= -void UTIL_LogPrintf( char *fmt, ... ) -{ - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - - // Print to server console - ALERT( at_logged, "%s", string ); -} - - -void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, - const char *pMessage) -{ - if ( !pEntity ) - return; - - MESSAGE_BEGIN( MSG_ONE, SVC_TEMPENTITY, NULL, ENT(pEntity->pev) ); - WRITE_BYTE( TE_TEXTMESSAGE ); - WRITE_BYTE( textparms.channel & 0xFF ); - - WRITE_SHORT( FixedSigned16( textparms.x, 1<<13 ) ); - WRITE_SHORT( FixedSigned16( textparms.y, 1<<13 ) ); - WRITE_BYTE( textparms.effect ); - - WRITE_BYTE( textparms.r1 ); - WRITE_BYTE( textparms.g1 ); - WRITE_BYTE( textparms.b1 ); - WRITE_BYTE( textparms.a1 ); - - WRITE_BYTE( textparms.r2 ); - WRITE_BYTE( textparms.g2 ); - WRITE_BYTE( textparms.b2 ); - WRITE_BYTE( textparms.a2 ); - - WRITE_SHORT( FixedUnsigned16( textparms.fadeinTime, 1<<8 ) ); - WRITE_SHORT( FixedUnsigned16( textparms.fadeoutTime, 1<<8 ) ); - WRITE_SHORT( FixedUnsigned16( textparms.holdTime, 1<<8 ) ); - - if ( textparms.effect == 2 ) - WRITE_SHORT( FixedUnsigned16( textparms.fxTime, 1<<8 ) ); - - if ( strlen( pMessage ) < 512 ) - { - WRITE_STRING( pMessage ); - } - else - { - char tmp[512]; - strncpy( tmp, pMessage, 511 ); - tmp[511] = 0; - WRITE_STRING( tmp ); - } - MESSAGE_END(); -} - -short FixedSigned16( float value, float scale ) -{ - int output; - - output = (int) (value * scale); - - if ( output > 32767 ) - output = 32767; - - if ( output < -32768 ) - output = -32768; - - return (short)output; -} - -unsigned short FixedUnsigned16( float value, float scale ) -{ - int output; - - output = (int) (value * scale); - if ( output < 0 ) - output = 0; - if ( output > 0xFFFF ) - output = 0xFFFF; - - return (unsigned short)output; -} -#endif // USE_METAMOD diff --git a/dlls/arrayx/amxxmodule.h b/dlls/arrayx/amxxmodule.h deleted file mode 100644 index 0a000d20..00000000 --- a/dlls/arrayx/amxxmodule.h +++ /dev/null @@ -1,2241 +0,0 @@ -/* - * AMX Mod X Module Interface Functions - * This file may be freely used -*/ - -// prevent double include -#ifndef __AMXXMODULE_H__ -#define __AMXXMODULE_H__ - -// config -#include "moduleconfig.h" - -// metamod include files -#ifdef USE_METAMOD -#include -#include -#include "osdep.h" -#endif // #ifdef USE_METAMOD - -// DLL Export -#undef DLLEXPORT -#ifndef __linux__ -#define DLLEXPORT __declspec(dllexport) -#else -#define DLLEXPORT -#define LINUX -#endif - -#undef C_DLLEXPORT -#define C_DLLEXPORT extern "C" DLLEXPORT - -// ***** AMXX stuff ***** - -// module interface version was 1 -// 2 - added logtag to struct (amxx1.1-rc1) -// 3 - added new tagAMX structure (amxx1.5) -#define AMXX_INTERFACE_VERSION 3 - -// amxx module info -struct amxx_module_info_s -{ - const char *name; - const char *author; - const char *version; - int reload; // reload on mapchange when nonzero - const char *logtag; // added in version 2 -}; - -// return values from functions called by amxx -#define AMXX_OK 0 /* no error */ -#define AMXX_IFVERS 1 /* interface version */ -#define AMXX_PARAM 2 /* Invalid parameter */ -#define AMXX_FUNC_NOT_PRESENT 3 /* Function not present */ - -// *** Small stuff *** -// The next section is copied from the amx.h file -// Copyright (c) ITB CompuPhase, 1997-2005 - -#if defined HAVE_STDINT_H - #include -#else - #if defined __LCC__ || defined __DMC__ || defined LINUX - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. - */ - #if defined __MACH__ - #include - typedef unsigned short int uint16_t; - typedef unsigned long int uint32_t; - #elif defined __FreeBSD__ - #include - #else - typedef short int int16_t; - typedef unsigned short int uint16_t; - #if defined SN_TARGET_PS2 - typedef int int32_t; - typedef unsigned int uint32_t; - #else - typedef long int int32_t; - typedef unsigned long int uint32_t; - #endif - #if defined __WIN32__ || defined _WIN32 || defined WIN32 - typedef __int64 int64_t; - typedef unsigned __int64 uint64_t; - #define HAVE_I64 - #elif defined __GNUC__ - typedef long long int64_t; - typedef unsigned long long uint64_t; - #define HAVE_I64 - #endif - #endif - #endif - #define HAVE_STDINT_H -#endif -#if defined _LP64 || defined WIN64 || defined _WIN64 - #if !defined __64BIT__ - #define __64BIT__ - #endif -#endif - -/* calling convention for native functions */ -#if !defined AMX_NATIVE_CALL - #define AMX_NATIVE_CALL -#endif -/* calling convention for all interface functions and callback functions */ -#if !defined AMXAPI - #if defined STDECL - #define AMXAPI __stdcall - #elif defined CDECL - #define AMXAPI __cdecl - #else - #define AMXAPI - #endif -#endif -#if !defined AMXEXPORT - #define AMXEXPORT -#endif - -#if !defined PAWN_CELL_SIZE - #define PAWN_CELL_SIZE 32 /* by default, use 32-bit cells */ -#endif -#if PAWN_CELL_SIZE==16 - typedef uint16_t ucell; - typedef int16_t cell; -#elif PAWN_CELL_SIZE==32 - typedef uint32_t ucell; - typedef int32_t cell; -#define REAL float -#elif PAWN_CELL_SIZE==64 - typedef uint64_t ucell; - typedef int64_t cell; -#define REAL double -#else - #error Unsupported cell size (PAWN_CELL_SIZE) -#endif - -#define UNPACKEDMAX ((1 << (sizeof(cell)-1)*8) - 1) -#define UNLIMITED (~1u >> 1) - -struct tagAMX; -typedef cell (AMX_NATIVE_CALL *AMX_NATIVE)(struct tagAMX *amx, cell *params); -typedef int (AMXAPI *AMX_CALLBACK)(struct tagAMX *amx, cell index, - cell *result, cell *params); -typedef int (AMXAPI *AMX_DEBUG)(struct tagAMX *amx); -#if !defined _FAR - #define _FAR -#endif - -#if defined _MSC_VER - #pragma warning(disable:4103) /* disable warning message 4103 that complains - * about pragma pack in a header file */ - #pragma warning(disable:4100) /* "'%$S' : unreferenced formal parameter" */ -#endif - - -/* Some compilers do not support the #pragma align, which should be fine. Some - * compilers give a warning on unknown #pragmas, which is not so fine... - */ -#if (defined SN_TARGET_PS2 || defined __GNUC__) && !defined AMX_NO_ALIGN - #define AMX_NO_ALIGN -#endif - -#if defined __GNUC__ - #define PACKED __attribute__((packed)) -#else - #define PACKED -#endif - -#if !defined AMX_NO_ALIGN - #if defined LINUX || defined __FreeBSD__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ - #endif - #endif -#endif - -typedef struct { - const char _FAR *name PACKED; - AMX_NATIVE func PACKED; -} AMX_NATIVE_INFO; - -#define AMX_USERNUM 4 - -/* The AMX structure is the internal structure for many functions. Not all - * fields are valid at all times; many fields are cached in local variables. - */ -typedef struct tagAMX { - unsigned char _FAR *base PACKED; /* points to the AMX header plus the code, optionally also the data */ - unsigned char _FAR *data PACKED; /* points to separate data+stack+heap, may be NULL */ - AMX_CALLBACK callback PACKED; - AMX_DEBUG debug PACKED; /* debug callback */ - /* for external functions a few registers must be accessible from the outside */ - cell cip PACKED; /* instruction pointer: relative to base + amxhdr->cod */ - cell frm PACKED; /* stack frame base: relative to base + amxhdr->dat */ - cell hea PACKED; /* top of the heap: relative to base + amxhdr->dat */ - cell hlw PACKED; /* bottom of the heap: relative to base + amxhdr->dat */ - cell stk PACKED; /* stack pointer: relative to base + amxhdr->dat */ - cell stp PACKED; /* top of the stack: relative to base + amxhdr->dat */ - int flags PACKED; /* current status, see amx_Flags() */ - /* user data */ - long usertags[AMX_USERNUM] PACKED; - //okay userdata[3] in AMX Mod X is for the CPlugin * pointer - //we're also gonna set userdata[2] to a special debug structure - void _FAR *userdata[AMX_USERNUM] PACKED; - /* native functions can raise an error */ - int error PACKED; - /* passing parameters requires a "count" field */ - int paramcount; - /* the sleep opcode needs to store the full AMX status */ - cell pri PACKED; - cell alt PACKED; - cell reset_stk PACKED; - cell reset_hea PACKED; - cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */ - /* support variables for the JIT */ - int reloc_size PACKED; /* required temporary buffer for relocations */ - long code_size PACKED; /* estimated memory footprint of the native code */ -} PACKED AMX; - -enum { - AMX_ERR_NONE, - /* reserve the first 15 error codes for exit codes of the abstract machine */ - AMX_ERR_EXIT, /* forced exit */ - AMX_ERR_ASSERT, /* assertion failed */ - AMX_ERR_STACKERR, /* stack/heap collision */ - AMX_ERR_BOUNDS, /* index out of bounds */ - AMX_ERR_MEMACCESS, /* invalid memory access */ - AMX_ERR_INVINSTR, /* invalid instruction */ - AMX_ERR_STACKLOW, /* stack underflow */ - AMX_ERR_HEAPLOW, /* heap underflow */ - AMX_ERR_CALLBACK, /* no callback, or invalid callback */ - AMX_ERR_NATIVE, /* native function failed */ - AMX_ERR_DIVIDE, /* divide by zero */ - AMX_ERR_SLEEP, /* go into sleepmode - code can be restarted */ - AMX_ERR_INVSTATE, /* invalid state for this access */ - - AMX_ERR_MEMORY = 16, /* out of memory */ - AMX_ERR_FORMAT, /* invalid file format */ - AMX_ERR_VERSION, /* file is for a newer version of the AMX */ - AMX_ERR_NOTFOUND, /* function not found */ - AMX_ERR_INDEX, /* invalid index parameter (bad entry point) */ - AMX_ERR_DEBUG, /* debugger cannot run */ - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ -}; - -#if !defined AMX_NO_ALIGN - #if defined __linux__ - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif -#endif - - -// ***** declare functions ***** - -#ifdef USE_METAMOD -void UTIL_LogPrintf( char *fmt, ... ); -void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); -short FixedSigned16( float value, float scale ); -unsigned short FixedUnsigned16( float value, float scale ); - -#ifdef FN_META_QUERY -void FN_META_QUERY(void); -#endif // FN_META_QUERY - -#ifdef FN_META_ATTACH -void FN_META_ATTACH(void); -#endif // FN_META_ATTACH - -#ifdef FN_META_DETACH -void FN_META_DETACH(void); -#endif // FN_META_DETACH - - - - - -#ifdef FN_GameDLLInit -void FN_GameDLLInit(void); -#endif // FN_GameDLLInit - -#ifdef FN_DispatchSpawn -int FN_DispatchSpawn(edict_t *pent); -#endif // FN_DispatchSpawn - -#ifdef FN_DispatchThink -void FN_DispatchThink(edict_t *pent); -#endif // FN_DispatchThink - -#ifdef FN_DispatchUse -void FN_DispatchUse(edict_t *pentUser, edict_t *pentOther); -#endif // FN_DispatchUse - -#ifdef FN_DispatchTouch -void FN_DispatchTouch(edict_t *pentTouched, edict_t *pentOther); -#endif // FN_DispatchTouch - -#ifdef FN_DispatchBlocked -void FN_DispatchBlocked(edict_t *pentBlocked, edict_t *pentOther); -#endif // FN_DispatchBlocked - -#ifdef FN_DispatchKeyValue -void FN_DispatchKeyValue(edict_t *pentKeyvalue, KeyValueData *pkvd); -#endif // FN_DispatchKeyValue - -#ifdef FN_DispatchSave -void FN_DispatchSave(edict_t *pent, SAVERESTOREDATA *pSaveData); -#endif // FN_DispatchSave - -#ifdef FN_DispatchRestore -int FN_DispatchRestore(edict_t *pent, SAVERESTOREDATA *pSaveData, int globalEntity); -#endif // FN_DispatchRestore - -#ifdef FN_DispatchObjectCollsionBox -void FN_DispatchObjectCollsionBox(edict_t *pent); -#endif // FN_DispatchObjectCollsionBox - -#ifdef FN_SaveWriteFields -void FN_SaveWriteFields(SAVERESTOREDATA *pSaveData, const char *pname, void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount); -#endif // FN_SaveWriteFields - -#ifdef FN_SaveReadFields -void FN_SaveReadFields(SAVERESTOREDATA *pSaveData, const char *pname, void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount); -#endif // FN_SaveReadFields - -#ifdef FN_SaveGlobalState -void FN_SaveGlobalState(SAVERESTOREDATA *pSaveData); -#endif // FN_SaveGlobalState - -#ifdef FN_RestoreGlobalState -void FN_RestoreGlobalState(SAVERESTOREDATA *pSaveData); -#endif // FN_RestoreGlobalState - -#ifdef FN_ResetGlobalState -void FN_ResetGlobalState(void); -#endif // FN_ResetGlobalState - -#ifdef FN_ClientConnect -BOOL FN_ClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ]); -#endif // FN_ClientConnect - -#ifdef FN_ClientDisconnect -void FN_ClientDisconnect(edict_t *pEntity); -#endif // FN_ClientDisconnect - -#ifdef FN_ClientKill -void FN_ClientKill(edict_t *pEntity); -#endif // FN_ClientKill - -#ifdef FN_ClientPutInServer -void FN_ClientPutInServer(edict_t *pEntity); -#endif // FN_ClientPutInServer - -#ifdef FN_ClientCommand -void FN_ClientCommand(edict_t *pEntity); -#endif // FN_ClientCommand - -#ifdef FN_ClientUserInfoChanged -void FN_ClientUserInfoChanged(edict_t *pEntity, char *infobuffer); -#endif // FN_ClientUserInfoChanged - -#ifdef FN_ServerActivate -void FN_ServerActivate(edict_t *pEdictList, int edictCount, int clientMax); -#endif // FN_ServerActivate - -#ifdef FN_ServerDeactivate -void FN_ServerDeactivate(void); -#endif // FN_ServerDeactivate - -#ifdef FN_PlayerPreThink -void FN_PlayerPreThink(edict_t *pEntity); -#endif // FN_PlayerPreThink - -#ifdef FN_PlayerPostThink -void FN_PlayerPostThink(edict_t *pEntity); -#endif // FN_PlayerPostThink - -#ifdef FN_StartFrame -void FN_StartFrame(void); -#endif // FN_StartFrame - -#ifdef FN_ParmsNewLevel -void FN_ParmsNewLevel(void); -#endif // FN_ParmsNewLevel - -#ifdef FN_ParmsChangeLevel -void FN_ParmsChangeLevel(void); -#endif // FN_ParmsChangeLevel - -#ifdef FN_GetGameDescription -const char *FN_GetGameDescription(void); -#endif // FN_GetGameDescription - -#ifdef FN_PlayerCustomization -void FN_PlayerCustomization(edict_t *pEntity, customization_t *pCust); -#endif // FN_PlayerCustomization - -#ifdef FN_SpectatorConnect -void FN_SpectatorConnect(edict_t *pEntity); -#endif // FN_SpectatorConnect - -#ifdef FN_SpectatorDisconnect -void FN_SpectatorDisconnect(edict_t *pEntity); -#endif // FN_SpectatorDisconnect - -#ifdef FN_SpectatorThink -void FN_SpectatorThink(edict_t *pEntity); -#endif // FN_SpectatorThink - -#ifdef FN_Sys_Error -void FN_Sys_Error(const char *error_string); -#endif // FN_Sys_Error - -#ifdef FN_PM_Move -void FN_PM_Move(struct playermove_s *ppmove, int server); -#endif // FN_PM_Move - -#ifdef FN_PM_Init -void FN_PM_Init(struct playermove_s *ppmove); -#endif // FN_PM_Init - -#ifdef FN_PM_FindTextureType -char FN_PM_FindTextureType(char *name); -#endif // FN_PM_FindTextureType - -#ifdef FN_SetupVisibility -void FN_SetupVisibility(edict_t *pViewEntity, edict_t *pClient, unsigned char **pvs, unsigned char **pas); -#endif // FN_SetupVisibility - -#ifdef FN_UpdateClientData -void FN_UpdateClientData(const struct edict_s *ent, int sendweapons, struct clientdata_s *cd); -#endif // FN_UpdateClientData - -#ifdef FN_AddToFullPack -int FN_AddToFullPack(struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet); -#endif // FN_AddToFullPack - -#ifdef FN_CreateBaseline -void FN_CreateBaseline(int player, int eindex, struct entity_state_s *baseline, struct edict_s *entity, int playermodelindex, vec3_t player_mins, vec3_t player_maxs); -#endif // FN_CreateBaseline - -#ifdef FN_RegisterEncoders -void FN_RegisterEncoders(void); -#endif // FN_RegisterEncoders - -#ifdef FN_GetWeaponData -int FN_GetWeaponData(struct edict_s *player, struct weapon_data_s *info); -#endif // FN_GetWeaponData - -#ifdef FN_CmdStart -void FN_CmdStart(const edict_t *player, const struct usercmd_s *cmd, unsigned int random_seed); -#endif // FN_CmdStart - -#ifdef FN_CmdEnd -void FN_CmdEnd(const edict_t *player); -#endif // FN_CmdEnd - -#ifdef FN_ConnectionlessPacket -int FN_ConnectionlessPacket(const struct netadr_s *net_from, const char *args, char *response_buffer, int *response_buffer_size); -#endif // FN_ConnectionlessPacket - -#ifdef FN_GetHullBounds -int FN_GetHullBounds(int hullnumber, float *mins, float *maxs); -#endif // FN_GetHullBounds - -#ifdef FN_CreateInstancedBaselines -void FN_CreateInstancedBaselines(void); -#endif // FN_CreateInstancedBaselines - -#ifdef FN_InconsistentFile -int FN_InconsistentFile(const edict_t *player, const char *filename, char *disconnect_message); -#endif // FN_InconsistentFile - -#ifdef FN_AllowLagCompensation -int FN_AllowLagCompensation(void); -#endif // FN_AllowLagCompensation - - - - -#ifdef FN_GameDLLInit_Post -void FN_GameDLLInit_Post(void); -#endif // FN_GameDLLInit_Post - -#ifdef FN_DispatchSpawn_Post -int FN_DispatchSpawn_Post(edict_t *pent); -#endif // FN_DispatchSpawn_Post - -#ifdef FN_DispatchThink_Post -void FN_DispatchThink_Post(edict_t *pent); -#endif // FN_DispatchThink_Post - -#ifdef FN_DispatchUse_Post -void FN_DispatchUse_Post(edict_t *pentUser, edict_t *pentOther); -#endif // FN_DispatchUse_Post - -#ifdef FN_DispatchTouch_Post -void FN_DispatchTouch_Post(edict_t *pentTouched, edict_t *pentOther); -#endif // FN_DispatchTouch_Post - -#ifdef FN_DispatchBlocked_Post -void FN_DispatchBlocked_Post(edict_t *pentBlocked, edict_t *pentOther); -#endif // FN_DispatchBlocked_Post - -#ifdef FN_DispatchKeyValue_Post -void FN_DispatchKeyValue_Post(edict_t *pentKeyvalue, KeyValueData *pkvd); -#endif // FN_DispatchKeyValue_Post - -#ifdef FN_DispatchSave_Post -void FN_DispatchSave_Post(edict_t *pent, SAVERESTOREDATA *pSaveData); -#endif // FN_DispatchSave_Post - -#ifdef FN_DispatchRestore_Post -int FN_DispatchRestore_Post(edict_t *pent, SAVERESTOREDATA *pSaveData, int globalEntity); -#endif // FN_DispatchRestore_Post - -#ifdef FN_DispatchObjectCollsionBox_Post -void FN_DispatchObjectCollsionBox_Post(edict_t *pent); -#endif // FN_DispatchObjectCollsionBox_Post - -#ifdef FN_SaveWriteFields_Post -void FN_SaveWriteFields_Post(SAVERESTOREDATA *pSaveData, const char *pname, void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount); -#endif // FN_SaveWriteFields_Post - -#ifdef FN_SaveReadFields_Post -void FN_SaveReadFields_Post(SAVERESTOREDATA *pSaveData, const char *pname, void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount); -#endif // FN_SaveReadFields_Post - -#ifdef FN_SaveGlobalState_Post -void FN_SaveGlobalState_Post(SAVERESTOREDATA *pSaveData); -#endif // FN_SaveGlobalState_Post - -#ifdef FN_RestoreGlobalState_Post -void FN_RestoreGlobalState_Post(SAVERESTOREDATA *pSaveData); -#endif // FN_RestoreGlobalState_Post - -#ifdef FN_ResetGlobalState_Post -void FN_ResetGlobalState_Post(void); -#endif // FN_ResetGlobalState_Post - -#ifdef FN_ClientConnect_Post -BOOL FN_ClientConnect_Post(edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ]); -#endif // FN_ClientConnect_Post - -#ifdef FN_ClientDisconnect_Post -void FN_ClientDisconnect_Post(edict_t *pEntity); -#endif // FN_ClientDisconnect_Post - -#ifdef FN_ClientKill_Post -void FN_ClientKill_Post(edict_t *pEntity); -#endif // FN_ClientKill_Post - -#ifdef FN_ClientPutInServer_Post -void FN_ClientPutInServer_Post(edict_t *pEntity); -#endif // FN_ClientPutInServer_Post - -#ifdef FN_ClientCommand_Post -void FN_ClientCommand_Post(edict_t *pEntity); -#endif // FN_ClientCommand_Post - -#ifdef FN_ClientUserInfoChanged_Post -void FN_ClientUserInfoChanged_Post(edict_t *pEntity, char *infobuffer); -#endif // FN_ClientUserInfoChanged_Post - -#ifdef FN_ServerActivate_Post -void FN_ServerActivate_Post(edict_t *pEdictList, int edictCount, int clientMax); -#endif // FN_ServerActivate_Post - -#ifdef FN_ServerDeactivate_Post -void FN_ServerDeactivate_Post(void); -#endif // FN_ServerDeactivate_Post - -#ifdef FN_PlayerPreThink_Post -void FN_PlayerPreThink_Post(edict_t *pEntity); -#endif // FN_PlayerPreThink_Post - -#ifdef FN_PlayerPostThink_Post -void FN_PlayerPostThink_Post(edict_t *pEntity); -#endif // FN_PlayerPostThink_Post - -#ifdef FN_StartFrame_Post -void FN_StartFrame_Post(void); -#endif // FN_StartFrame_Post - -#ifdef FN_ParmsNewLevel_Post -void FN_ParmsNewLevel_Post(void); -#endif // FN_ParmsNewLevel_Post - -#ifdef FN_ParmsChangeLevel_Post -void FN_ParmsChangeLevel_Post(void); -#endif // FN_ParmsChangeLevel_Post - -#ifdef FN_GetGameDescription_Post -const char *FN_GetGameDescription_Post(void); -#endif // FN_GetGameDescription_Post - -#ifdef FN_PlayerCustomization_Post -void FN_PlayerCustomization_Post(edict_t *pEntity, customization_t *pCust); -#endif // FN_PlayerCustomization_Post - -#ifdef FN_SpectatorConnect_Post -void FN_SpectatorConnect_Post(edict_t *pEntity); -#endif // FN_SpectatorConnect_Post - -#ifdef FN_SpectatorDisconnect_Post -void FN_SpectatorDisconnect_Post(edict_t *pEntity); -#endif // FN_SpectatorDisconnect_Post - -#ifdef FN_SpectatorThink_Post -void FN_SpectatorThink_Post(edict_t *pEntity); -#endif // FN_SpectatorThink_Post - -#ifdef FN_Sys_Error_Post -void FN_Sys_Error_Post(const char *error_string); -#endif // FN_Sys_Error_Post - -#ifdef FN_PM_Move_Post -void FN_PM_Move_Post(struct playermove_s *ppmove, int server); -#endif // FN_PM_Move_Post - -#ifdef FN_PM_Init_Post -void FN_PM_Init_Post(struct playermove_s *ppmove); -#endif // FN_PM_Init_Post - -#ifdef FN_PM_FindTextureType_Post -char FN_PM_FindTextureType_Post(char *name); -#endif // FN_PM_FindTextureType_Post - -#ifdef FN_SetupVisibility_Post -void FN_SetupVisibility_Post(edict_t *pViewEntity, edict_t *pClient, unsigned char **pvs, unsigned char **pas); -#endif // FN_SetupVisibility_Post - -#ifdef FN_UpdateClientData_Post -void FN_UpdateClientData_Post(const struct edict_s *ent, int sendweapons, struct clientdata_s *cd); -#endif // FN_UpdateClientData_Post - -#ifdef FN_AddToFullPack_Post -int FN_AddToFullPack_Post(struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet); -#endif // FN_AddToFullPack_Post - -#ifdef FN_CreateBaseline_Post -void FN_CreateBaseline_Post(int player, int eindex, struct entity_state_s *baseline, struct edict_s *entity, int playermodelindex, vec3_t player_mins, vec3_t player_maxs); -#endif // FN_CreateBaseline_Post - -#ifdef FN_RegisterEncoders_Post -void FN_RegisterEncoders_Post(void); -#endif // FN_RegisterEncoders_Post - -#ifdef FN_GetWeaponData_Post -int FN_GetWeaponData_Post(struct edict_s *player, struct weapon_data_s *info); -#endif // FN_GetWeaponData_Post - -#ifdef FN_CmdStart_Post -void FN_CmdStart_Post(const edict_t *player, const struct usercmd_s *cmd, unsigned int random_seed); -#endif // FN_CmdStart_Post - -#ifdef FN_CmdEnd_Post -void FN_CmdEnd_Post(const edict_t *player); -#endif // FN_CmdEnd_Post - -#ifdef FN_ConnectionlessPacket_Post -int FN_ConnectionlessPacket_Post(const struct netadr_s *net_from, const char *args, char *response_buffer, int *response_buffer_size); -#endif // FN_ConnectionlessPacket_Post - -#ifdef FN_GetHullBounds_Post -int FN_GetHullBounds_Post(int hullnumber, float *mins, float *maxs); -#endif // FN_GetHullBounds_Post - -#ifdef FN_CreateInstancedBaselines_Post -void FN_CreateInstancedBaselines_Post(void); -#endif // FN_CreateInstancedBaselines_Post - -#ifdef FN_InconsistentFile_Post -int FN_InconsistentFile_Post(const edict_t *player, const char *filename, char *disconnect_message); -#endif // FN_InconsistentFile_Post - -#ifdef FN_AllowLagCompensation_Post -int FN_AllowLagCompensation_Post(void); -#endif // FN_AllowLagCompensation_Post - - - -#ifdef FN_PrecacheModel -int FN_PrecacheModel(char *s); -#endif // FN_PrecacheModel - -#ifdef FN_PrecacheSound -int FN_PrecacheSound(char *s); -#endif // FN_PrecacheSound - -#ifdef FN_SetModel -void FN_SetModel(edict_t *e, const char *m); -#endif // FN_SetModel - -#ifdef FN_ModelIndex -int FN_ModelIndex(const char *m); -#endif // FN_ModelIndex - -#ifdef FN_ModelFrames -int FN_ModelFrames(int modelIndex); -#endif // FN_ModelFrames - -#ifdef FN_SetSize -void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); -#endif // FN_SetSize - -#ifdef FN_ChangeLevel -void FN_ChangeLevel(char *s1, char *s2); -#endif // FN_ChangeLevel - -#ifdef FN_GetSpawnParms -void FN_GetSpawnParms(edict_t *ent); -#endif // FN_GetSpawnParms - -#ifdef FN_SaveSpawnParms -void FN_SaveSpawnParms(edict_t *ent); -#endif // FN_SaveSpawnParms - -#ifdef FN_VecToYaw -float FN_VecToYaw(const float *rgflVector); -#endif // FN_VecToYaw - -#ifdef FN_VecToAngles -void FN_VecToAngles(const float *rgflVectorIn, float *rgflVectorOut); -#endif // FN_VecToAngles - -#ifdef FN_MoveToOrigin -void FN_MoveToOrigin(edict_t *ent, const float *pflGoal, float dist, int iMoveType); -#endif // FN_MoveToOrigin - -#ifdef FN_ChangeYaw -void FN_ChangeYaw(edict_t *ent); -#endif // FN_ChangeYaw - -#ifdef FN_ChangePitch -void FN_ChangePitch(edict_t *ent); -#endif // FN_ChangePitch - -#ifdef FN_FindEntityByString -edict_t *FN_FindEntityByString(edict_t *pEdictStartSearchAfter, const char *pszField, const char *pszValue); -#endif // FN_FindEntityByString - -#ifdef FN_GetEntityIllum -int FN_GetEntityIllum(edict_t *pEnt); -#endif // FN_GetEntityIllum - -#ifdef FN_FindEntityInSphere -edict_t *FN_FindEntityInSphere(edict_t *pEdictStartSearchAfter, const float *org, float rad); -#endif // FN_FindEntityInSphere - -#ifdef FN_FindClientInPVS -edict_t *FN_FindClientInPVS(edict_t *pEdict); -#endif // FN_FindClientInPVS - -#ifdef FN_EntitiesInPVS -edict_t *FN_EntitiesInPVS(edict_t *pplayer); -#endif // FN_EntitiesInPVS - -#ifdef FN_MakeVectors -void FN_MakeVectors(const float *rgflVector); -#endif // FN_MakeVectors - -#ifdef FN_AngleVectors -void FN_AngleVectors(const float *rgflVector, float *forward, float *right, float *up); -#endif // FN_AngleVectors - -#ifdef FN_CreateEntity -edict_t *FN_CreateEntity(void); -#endif // FN_CreateEntity - -#ifdef FN_RemoveEntity -void FN_RemoveEntity(edict_t *e); -#endif // FN_RemoveEntity - -#ifdef FN_CreateNamedEntity -edict_t *FN_CreateNamedEntity(int className); -#endif // FN_CreateNamedEntity - -#ifdef FN_MakeStatic -void FN_MakeStatic(edict_t *ent); -#endif // FN_MakeStatic - -#ifdef FN_EntIsOnFloor -int FN_EntIsOnFloor(edict_t *ent); -#endif // FN_EntIsOnFloor - -#ifdef FN_DropToFloor -int FN_DropToFloor(edict_t *ent); -#endif // FN_DropToFloor - -#ifdef FN_WalkMove -int FN_WalkMove(edict_t *ent, float yaw, float dist, int iMode); -#endif // FN_WalkMove - -#ifdef FN_SetOrigin -void FN_SetOrigin(edict_t *e, const float *rgflOrigin); -#endif // FN_SetOrigin - -#ifdef FN_EmitSound -void FN_EmitSound(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch); -#endif // FN_EmitSound - -#ifdef FN_EmitAmbientSound -void FN_EmitAmbientSound(edict_t *entity, float *pos, const char *samp, float vol, float attenuation, int fFlags, int pitch); -#endif // FN_EmitAmbientSound - -#ifdef FN_TraceLine -void FN_TraceLine(const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr); -#endif // FN_TraceLine - -#ifdef FN_TraceToss -void FN_TraceToss(edict_t *pent, edict_t *pentToIgnore, TraceResult *ptr); -#endif // FN_TraceToss - -#ifdef FN_TraceMonsterHull -int FN_TraceMonsterHull(edict_t *pEdict, const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr); -#endif // FN_TraceMonsterHull - -#ifdef FN_TraceHull -void FN_TraceHull(const float *v1, const float *v2, int fNoMonsters, int hullNumber, edict_t *pentToSkip, TraceResult *ptr); -#endif // FN_TraceHull - -#ifdef FN_TraceModel -void FN_TraceModel(const float *v1, const float *v2, int hullNumber, edict_t *pent, TraceResult *ptr); -#endif // FN_TraceModel - -#ifdef FN_TraceTexture -const char *FN_TraceTexture(edict_t *pTextureEntity, const float *v1, const float *v2 ); -#endif // FN_TraceTexture - -#ifdef FN_TraceSphere -void FN_TraceSphere(const float *v1, const float *v2, int fNoMonsters, float radius, edict_t *pentToSkip, TraceResult *ptr); -#endif // FN_TraceSphere - -#ifdef FN_GetAimVector -void FN_GetAimVector(edict_t *ent, float speed, float *rgflReturn); -#endif // FN_GetAimVector - -#ifdef FN_ServerCommand -void FN_ServerCommand(char *str); -#endif // FN_ServerCommand - -#ifdef FN_ServerExecute -void FN_ServerExecute(void); -#endif // FN_ServerExecute - -#ifdef FN_engClientCommand -void FN_engClientCommand(edict_t *pEdict, char *szFmt, ...); -#endif // FN_engClientCommand - -#ifdef FN_ParticleEffect -void FN_ParticleEffect(const float *org, const float *dir, float color, float count); -#endif // FN_ParticleEffect - -#ifdef FN_LightStyle -void FN_LightStyle(int style, char *val); -#endif // FN_LightStyle - -#ifdef FN_DecalIndex -int FN_DecalIndex(const char *name); -#endif // FN_DecalIndex - -#ifdef FN_PointContents -int FN_PointContents(const float *rgflVector); -#endif // FN_PointContents - -#ifdef FN_MessageBegin -void FN_MessageBegin(int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -#endif // FN_MessageBegin - -#ifdef FN_MessageEnd -void FN_MessageEnd(void); -#endif // FN_MessageEnd - -#ifdef FN_WriteByte -void FN_WriteByte(int iValue); -#endif // FN_WriteByte - -#ifdef FN_WriteChar -void FN_WriteChar(int iValue); -#endif // FN_WriteChar - -#ifdef FN_WriteShort -void FN_WriteShort(int iValue); -#endif // FN_WriteShort - -#ifdef FN_WriteLong -void FN_WriteLong(int iValue); -#endif // FN_WriteLong - -#ifdef FN_WriteAngle -void FN_WriteAngle(float flValue); -#endif // FN_WriteAngle - -#ifdef FN_WriteCoord -void FN_WriteCoord(float flValue); -#endif // FN_WriteCoord - -#ifdef FN_WriteString -void FN_WriteString(const char *sz); -#endif // FN_WriteString - -#ifdef FN_WriteEntity -void FN_WriteEntity(int iValue); -#endif // FN_WriteEntity - -#ifdef FN_CVarRegister -void FN_CVarRegister(cvar_t *pCvar); -#endif // FN_CVarRegister - -#ifdef FN_CVarGetFloat -float FN_CVarGetFloat(const char *szVarName); -#endif // FN_CVarGetFloat - -#ifdef FN_CVarGetString -const char *FN_CVarGetString(const char *szVarName); -#endif // FN_CVarGetString - -#ifdef FN_CVarSetFloat -void FN_CVarSetFloat(const char *szVarName, float flValue); -#endif // FN_CVarSetFloat - -#ifdef FN_CVarSetString -void FN_CVarSetString(const char *szVarName, const char *szValue); -#endif // FN_CVarSetString - -#ifdef FN_AlertMessage -void FN_AlertMessage(ALERT_TYPE atype, char *szFmt, ...); -#endif // FN_AlertMessage - -#ifdef FN_EngineFprintf -void FN_EngineFprintf(FILE *pfile, char *szFmt, ...); -#endif // FN_EngineFprintf - -#ifdef FN_PvAllocEntPrivateData -void *FN_PvAllocEntPrivateData(edict_t *pEdict, int32 cb); -#endif // FN_PvAllocEntPrivateData - -#ifdef FN_PvEntPrivateData -void *FN_PvEntPrivateData(edict_t *pEdict); -#endif // FN_PvEntPrivateData - -#ifdef FN_FreeEntPrivateData -void FN_FreeEntPrivateData(edict_t *pEdict); -#endif // FN_FreeEntPrivateData - -#ifdef FN_SzFromIndex -const char *FN_SzFromIndex(int iString); -#endif // FN_SzFromIndex - -#ifdef FN_AllocString -int FN_AllocString(const char *szValue); -#endif // FN_AllocString - -#ifdef FN_GetVarsOfEnt -struct entvars_s *FN_GetVarsOfEnt(edict_t *pEdict); -#endif // FN_GetVarsOfEnt - -#ifdef FN_PEntityOfEntOffset -edict_t *FN_PEntityOfEntOffset(int iEntOffset); -#endif // FN_PEntityOfEntOffset - -#ifdef FN_EntOffsetOfPEntity -int FN_EntOffsetOfPEntity(const edict_t *pEdict); -#endif // FN_EntOffsetOfPEntity - -#ifdef FN_IndexOfEdict -int FN_IndexOfEdict(const edict_t *pEdict); -#endif // FN_IndexOfEdict - -#ifdef FN_PEntityOfEntIndex -edict_t *FN_PEntityOfEntIndex(int iEntIndex); -#endif // FN_PEntityOfEntIndex - -#ifdef FN_FindEntityByVars -edict_t *FN_FindEntityByVars(struct entvars_s *pvars); -#endif // FN_FindEntityByVars - -#ifdef FN_GetModelPtr -void *FN_GetModelPtr(edict_t *pEdict); -#endif // FN_GetModelPtr - -#ifdef FN_RegUserMsg -int FN_RegUserMsg(const char *pszName, int iSize); -#endif // FN_RegUserMsg - -#ifdef FN_AnimationAutomove -void FN_AnimationAutomove(const edict_t *pEdict, float flTime); -#endif // FN_AnimationAutomove - -#ifdef FN_GetBonePosition -void FN_GetBonePosition(const edict_t *pEdict, int iBone, float *rgflOrigin, float *rgflAngles); -#endif // FN_GetBonePosition - -#ifdef FN_FunctionFromName -unsigned long FN_FunctionFromName(const char *pName); -#endif // FN_FunctionFromName - -#ifdef FN_NameForFunction -const char *FN_NameForFunction(unsigned long function); -#endif // FN_NameForFunction - -#ifdef FN_ClientPrintf -void FN_ClientPrintf(edict_t *pEdict, PRINT_TYPE ptype, const char *szMsg); -#endif // FN_ClientPrintf - -#ifdef FN_ServerPrint -void FN_ServerPrint(const char *szMsg); -#endif // FN_ServerPrint - -#ifdef FN_Cmd_Args -const char *FN_Cmd_Args(void); -#endif // FN_Cmd_Args - -#ifdef FN_Cmd_Argv -const char *FN_Cmd_Argv(int argc); -#endif // FN_Cmd_Argv - -#ifdef FN_Cmd_Argc -int FN_Cmd_Argc(void); -#endif // FN_Cmd_Argc - -#ifdef FN_GetAttachment -void FN_GetAttachment(const edict_t *pEdict, int iAttachment, float *rgflOrigin, float *rgflAngles ); -#endif // FN_GetAttachment - -#ifdef FN_CRC32_Init -void FN_CRC32_Init(CRC32_t *pulCRC); -#endif // FN_CRC32_Init - -#ifdef FN_CRC32_ProcessBuffer -void FN_CRC32_ProcessBuffer(CRC32_t *pulCRC, void *p, int len); -#endif // FN_CRC32_ProcessBuffer - -#ifdef FN_CRC32_ProcessByte -void FN_CRC32_ProcessByte(CRC32_t *pulCRC, unsigned char ch); -#endif // FN_CRC32_ProcessByte - -#ifdef FN_CRC32_Final -CRC32_t FN_CRC32_Final(CRC32_t pulCRC); -#endif // FN_CRC32_Final - -#ifdef FN_RandomLong -long FN_RandomLong(long lLow, long lHigh); -#endif // FN_RandomLong - -#ifdef FN_RandomFloat -float FN_RandomFloat(float flLow, float flHigh); -#endif // FN_RandomFloat - -#ifdef FN_SetView -void FN_SetView(const edict_t *pClient, const edict_t *pViewent); -#endif // FN_SetView - -#ifdef FN_Time -float FN_Time(void); -#endif // FN_Time - -#ifdef FN_CrosshairAngle -void FN_CrosshairAngle(const edict_t *pClient, float pitch, float yaw); -#endif // FN_CrosshairAngle - -#ifdef FN_LoadFileForMe -byte *FN_LoadFileForMe(char *filename, int *pLength); -#endif // FN_LoadFileForMe - -#ifdef FN_FreeFile -void FN_FreeFile(void *buffer); -#endif // FN_FreeFile - -#ifdef FN_EndSection -void FN_EndSection(const char *pszSectionName); -#endif // FN_EndSection - -#ifdef FN_CompareFileTime -int FN_CompareFileTime(char *filename1, char *filename2, int *iCompare); -#endif // FN_CompareFileTime - -#ifdef FN_GetGameDir -void FN_GetGameDir(char *szGetGameDir); -#endif // FN_GetGameDir - -#ifdef FN_Cvar_RegisterVariable -void FN_Cvar_RegisterVariable(cvar_t *variable); -#endif // FN_Cvar_RegisterVariable - -#ifdef FN_FadeClientVolume -void FN_FadeClientVolume(const edict_t *pEdict, int fadePercent, int fadeOutSeconds, int holdTime, int fadeInSeconds); -#endif // FN_FadeClientVolume - -#ifdef FN_SetClientMaxspeed -void FN_SetClientMaxspeed(const edict_t *pEdict, float fNewMaxspeed); -#endif // FN_SetClientMaxspeed - -#ifdef FN_CreateFakeClient -edict_t *FN_CreateFakeClient(const char *netname); -#endif // FN_CreateFakeClient - -#ifdef FN_RunPlayerMove -void FN_RunPlayerMove(edict_t *fakeclient, const float *viewangles, float forwardmove, float sidemove, float upmove, unsigned short buttons, byte impulse, byte msec); -#endif // FN_RunPlayerMove - -#ifdef FN_NumberOfEntities -int FN_NumberOfEntities(void); -#endif // FN_NumberOfEntities - -#ifdef FN_GetInfoKeyBuffer -char *FN_GetInfoKeyBuffer(edict_t *e); -#endif // FN_GetInfoKeyBuffer - -#ifdef FN_InfoKeyValue -char *FN_InfoKeyValue(char *infobuffer, char *key); -#endif // FN_InfoKeyValue - -#ifdef FN_SetKeyValue -void FN_SetKeyValue(char *infobuffer, char *key, char *value); -#endif // FN_SetKeyValue - -#ifdef FN_SetClientKeyValue -void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -#endif // FN_SetClientKeyValue - -#ifdef FN_IsMapValid -int FN_IsMapValid(char *filename); -#endif // FN_IsMapValid - -#ifdef FN_StaticDecal -void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); -#endif // FN_StaticDecal - -#ifdef FN_PrecacheGeneric -int FN_PrecacheGeneric(char *s); -#endif // FN_PrecacheGeneric - -#ifdef FN_GetPlayerUserId -int FN_GetPlayerUserId(edict_t *e ); -#endif // FN_GetPlayerUserId - -#ifdef FN_BuildSoundMsg -void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -#endif // FN_BuildSoundMsg - -#ifdef FN_IsDedicatedServer -int FN_IsDedicatedServer(void); -#endif // FN_IsDedicatedServer - -#ifdef FN_CVarGetPointer -cvar_t *FN_CVarGetPointer(const char *szVarName); -#endif // FN_CVarGetPointer - -#ifdef FN_GetPlayerWONId -unsigned int FN_GetPlayerWONId(edict_t *e); -#endif // FN_GetPlayerWONId - -#ifdef FN_Info_RemoveKey -void FN_Info_RemoveKey( char *s, const char *key); -#endif // FN_Info_RemoveKey - -#ifdef FN_GetPhysicsKeyValue -const char *FN_GetPhysicsKeyValue(const edict_t *pClient, const char *key); -#endif // FN_GetPhysicsKeyValue - -#ifdef FN_SetPhysicsKeyValue -void FN_SetPhysicsKeyValue(const edict_t *pClient, const char *key, const char *value); -#endif // FN_SetPhysicsKeyValue - -#ifdef FN_GetPhysicsInfoString -const char *FN_GetPhysicsInfoString( const edict_t *pClient); -#endif // FN_GetPhysicsInfoString - -#ifdef FN_PrecacheEvent -unsigned short FN_PrecacheEvent(int type, const char *psz); -#endif // FN_PrecacheEvent - -#ifdef FN_PlaybackEvent -void FN_PlaybackEvent(int flags, const edict_t *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2); -#endif // FN_PlaybackEvent - -#ifdef FN_SetFatPVS -unsigned char *FN_SetFatPVS(float *org); -#endif // FN_SetFatPVS - -#ifdef FN_SetFatPAS -unsigned char *FN_SetFatPAS(float *org); -#endif // FN_SetFatPAS - -#ifdef FN_CheckVisibility -int FN_CheckVisibility(const edict_t *entity, unsigned char *pset); -#endif // FN_CheckVisibility - -#ifdef FN_DeltaSetField -void FN_DeltaSetField(struct delta_s *pFields, const char *fieldname); -#endif // FN_DeltaSetField - -#ifdef FN_DeltaUnsetField -void FN_DeltaUnsetField(struct delta_s *pFields, const char *fieldname); -#endif // FN_DeltaUnsetField - -#ifdef FN_DeltaAddEncoder -void FN_DeltaAddEncoder(char *name, void (*conditionalencode)( struct delta_s *pFields, const unsigned char *from, const unsigned char *to ) ); -#endif // FN_DeltaAddEncoder - -#ifdef FN_GetCurrentPlayer -int FN_GetCurrentPlayer(void); -#endif // FN_GetCurrentPlayer - -#ifdef FN_CanSkipPlayer -int FN_CanSkipPlayer(const edict_t *player); -#endif // FN_CanSkipPlayer - -#ifdef FN_DeltaFindField -int FN_DeltaFindField(struct delta_s *pFields, const char *fieldname); -#endif // FN_DeltaFindField - -#ifdef FN_DeltaSetFieldByIndex -void FN_DeltaSetFieldByIndex(struct delta_s *pFields, int fieldNumber); -#endif // FN_DeltaSetFieldByIndex - -#ifdef FN_DeltaUnsetFieldByIndex -void FN_DeltaUnsetFieldByIndex(struct delta_s *pFields, int fieldNumber); -#endif // FN_DeltaUnsetFieldByIndex - -#ifdef FN_SetGroupMask -void FN_SetGroupMask(int mask, int op); -#endif // FN_SetGroupMask - -#ifdef FN_engCreateInstancedBaseline -int FN_engCreateInstancedBaseline(int classname, struct entity_state_s *baseline); -#endif // FN_engCreateInstancedBaseline - -#ifdef FN_Cvar_DirectSet -void FN_Cvar_DirectSet(struct cvar_s *var, char *value); -#endif // FN_Cvar_DirectSet - -#ifdef FN_ForceUnmodified -void FN_ForceUnmodified(FORCE_TYPE type, float *mins, float *maxs, const char *filename); -#endif // FN_ForceUnmodified - -#ifdef FN_GetPlayerStats -void FN_GetPlayerStats(const edict_t *pClient, int *ping, int *packet_loss); -#endif // FN_GetPlayerStats - -#ifdef FN_AddServerCommand -void FN_AddServerCommand(char *cmd_name, void (*function) (void)); -#endif // FN_AddServerCommand - -#ifdef FN_Voice_GetClientListening -qboolean FN_Voice_GetClientListening(int iReceiver, int iSender); -#endif // FN_Voice_GetClientListening - -#ifdef FN_Voice_SetClientListening -qboolean FN_Voice_SetClientListening(int iReceiver, int iSender, qboolean bListen); -#endif // FN_Voice_SetClientListening - -#ifdef FN_GetPlayerAuthId -const char *FN_GetPlayerAuthId(edict_t *e); -#endif // FN_GetPlayerAuthId - - - - - - -#ifdef FN_PrecacheModel_Post -int FN_PrecacheModel_Post(char *s); -#endif // FN_PrecacheModel_Post - -#ifdef FN_PrecacheSound_Post -int FN_PrecacheSound_Post(char *s); -#endif // FN_PrecacheSound_Post - -#ifdef FN_SetModel_Post -void FN_SetModel_Post(edict_t *e, const char *m); -#endif // FN_SetModel_Post - -#ifdef FN_ModelIndex_Post -int FN_ModelIndex_Post(const char *m); -#endif // FN_ModelIndex_Post - -#ifdef FN_ModelFrames_Post -int FN_ModelFrames_Post(int modelIndex); -#endif // FN_ModelFrames_Post - -#ifdef FN_SetSize_Post -void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); -#endif // FN_SetSize_Post - -#ifdef FN_ChangeLevel_Post -void FN_ChangeLevel_Post(char *s1, char *s2); -#endif // FN_ChangeLevel_Post - -#ifdef FN_GetSpawnParms_Post -void FN_GetSpawnParms_Post(edict_t *ent); -#endif // FN_GetSpawnParms_Post - -#ifdef FN_SaveSpawnParms_Post -void FN_SaveSpawnParms_Post(edict_t *ent); -#endif // FN_SaveSpawnParms_Post - -#ifdef FN_VecToYaw_Post -float FN_VecToYaw_Post(const float *rgflVector); -#endif // FN_VecToYaw_Post - -#ifdef FN_VecToAngles_Post -void FN_VecToAngles_Post(const float *rgflVectorIn, float *rgflVectorOut); -#endif // FN_VecToAngles_Post - -#ifdef FN_MoveToOrigin_Post -void FN_MoveToOrigin_Post(edict_t *ent, const float *pflGoal, float dist, int iMoveType); -#endif // FN_MoveToOrigin_Post - -#ifdef FN_ChangeYaw_Post -void FN_ChangeYaw_Post(edict_t *ent); -#endif // FN_ChangeYaw_Post - -#ifdef FN_ChangePitch_Post -void FN_ChangePitch_Post(edict_t *ent); -#endif // FN_ChangePitch_Post - -#ifdef FN_FindEntityByString_Post -edict_t *FN_FindEntityByString_Post(edict_t *pEdictStartSearchAfter, const char *pszField, const char *pszValue); -#endif // FN_FindEntityByString_Post - -#ifdef FN_GetEntityIllum_Post -int FN_GetEntityIllum_Post(edict_t *pEnt); -#endif // FN_GetEntityIllum_Post - -#ifdef FN_FindEntityInSphere_Post -edict_t *FN_FindEntityInSphere_Post(edict_t *pEdictStartSearchAfter, const float *org, float rad); -#endif // FN_FindEntityInSphere_Post - -#ifdef FN_FindClientInPVS_Post -edict_t *FN_FindClientInPVS_Post(edict_t *pEdict); -#endif // FN_FindClientInPVS_Post - -#ifdef FN_EntitiesInPVS_Post -edict_t *FN_EntitiesInPVS_Post(edict_t *pplayer); -#endif // FN_EntitiesInPVS_Post - -#ifdef FN_MakeVectors_Post -void FN_MakeVectors_Post(const float *rgflVector); -#endif // FN_MakeVectors_Post - -#ifdef FN_AngleVectors_Post -void FN_AngleVectors_Post(const float *rgflVector, float *forward, float *right, float *up); -#endif // FN_AngleVectors_Post - -#ifdef FN_CreateEntity_Post -edict_t *FN_CreateEntity_Post(void); -#endif // FN_CreateEntity_Post - -#ifdef FN_RemoveEntity_Post -void FN_RemoveEntity_Post(edict_t *e); -#endif // FN_RemoveEntity_Post - -#ifdef FN_CreateNamedEntity_Post -edict_t *FN_CreateNamedEntity_Post(int className); -#endif // FN_CreateNamedEntity_Post - -#ifdef FN_MakeStatic_Post -void FN_MakeStatic_Post(edict_t *ent); -#endif // FN_MakeStatic_Post - -#ifdef FN_EntIsOnFloor_Post -int FN_EntIsOnFloor_Post(edict_t *ent); -#endif // FN_EntIsOnFloor_Post - -#ifdef FN_DropToFloor_Post -int FN_DropToFloor_Post(edict_t *ent); -#endif // FN_DropToFloor_Post - -#ifdef FN_WalkMove_Post -int FN_WalkMove_Post(edict_t *ent, float yaw, float dist, int iMode); -#endif // FN_WalkMove_Post - -#ifdef FN_SetOrigin_Post -void FN_SetOrigin_Post(edict_t *e, const float *rgflOrigin); -#endif // FN_SetOrigin_Post - -#ifdef FN_EmitSound_Post -void FN_EmitSound_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch); -#endif // FN_EmitSound_Post - -#ifdef FN_EmitAmbientSound_Post -void FN_EmitAmbientSound_Post(edict_t *entity, float *pos, const char *samp, float vol, float attenuation, int fFlags, int pitch); -#endif // FN_EmitAmbientSound_Post - -#ifdef FN_TraceLine_Post -void FN_TraceLine_Post(const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr); -#endif // FN_TraceLine_Post - -#ifdef FN_TraceToss_Post -void FN_TraceToss_Post(edict_t *pent, edict_t *pentToIgnore, TraceResult *ptr); -#endif // FN_TraceToss_Post - -#ifdef FN_TraceMonsterHull_Post -int FN_TraceMonsterHull_Post(edict_t *pEdict, const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr); -#endif // FN_TraceMonsterHull_Post - -#ifdef FN_TraceHull_Post -void FN_TraceHull_Post(const float *v1, const float *v2, int fNoMonsters, int hullNumber, edict_t *pentToSkip, TraceResult *ptr); -#endif // FN_TraceHull_Post - -#ifdef FN_TraceModel_Post -void FN_TraceModel_Post(const float *v1, const float *v2, int hullNumber, edict_t *pent, TraceResult *ptr); -#endif // FN_TraceModel_Post - -#ifdef FN_TraceTexture_Post -const char *FN_TraceTexture_Post(edict_t *pTextureEntity, const float *v1, const float *v2 ); -#endif // FN_TraceTexture_Post - -#ifdef FN_TraceSphere_Post -void FN_TraceSphere_Post(const float *v1, const float *v2, int fNoMonsters, float radius, edict_t *pentToSkip, TraceResult *ptr); -#endif // FN_TraceSphere_Post - -#ifdef FN_GetAimVector_Post -void FN_GetAimVector_Post(edict_t *ent, float speed, float *rgflReturn); -#endif // FN_GetAimVector_Post - -#ifdef FN_ServerCommand_Post -void FN_ServerCommand_Post(char *str); -#endif // FN_ServerCommand_Post - -#ifdef FN_ServerExecute_Post -void FN_ServerExecute_Post(void); -#endif // FN_ServerExecute_Post - -#ifdef FN_engClientCommand_Post -void FN_engClientCommand_Post(edict_t *pEdict, char *szFmt, ...); -#endif // FN_engClientCommand_Post - -#ifdef FN_ParticleEffect_Post -void FN_ParticleEffect_Post(const float *org, const float *dir, float color, float count); -#endif // FN_ParticleEffect_Post - -#ifdef FN_LightStyle_Post -void FN_LightStyle_Post(int style, char *val); -#endif // FN_LightStyle_Post - -#ifdef FN_DecalIndex_Post -int FN_DecalIndex_Post(const char *name); -#endif // FN_DecalIndex_Post - -#ifdef FN_PointContents_Post -int FN_PointContents_Post(const float *rgflVector); -#endif // FN_PointContents_Post - -#ifdef FN_MessageBegin_Post -void FN_MessageBegin_Post(int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -#endif // FN_MessageBegin_Post - -#ifdef FN_MessageEnd_Post -void FN_MessageEnd_Post(void); -#endif // FN_MessageEnd_Post - -#ifdef FN_WriteByte_Post -void FN_WriteByte_Post(int iValue); -#endif // FN_WriteByte_Post - -#ifdef FN_WriteChar_Post -void FN_WriteChar_Post(int iValue); -#endif // FN_WriteChar_Post - -#ifdef FN_WriteShort_Post -void FN_WriteShort_Post(int iValue); -#endif // FN_WriteShort_Post - -#ifdef FN_WriteLong_Post -void FN_WriteLong_Post(int iValue); -#endif // FN_WriteLong_Post - -#ifdef FN_WriteAngle_Post -void FN_WriteAngle_Post(float flValue); -#endif // FN_WriteAngle_Post - -#ifdef FN_WriteCoord_Post -void FN_WriteCoord_Post(float flValue); -#endif // FN_WriteCoord_Post - -#ifdef FN_WriteString_Post -void FN_WriteString_Post(const char *sz); -#endif // FN_WriteString_Post - -#ifdef FN_WriteEntity_Post -void FN_WriteEntity_Post(int iValue); -#endif // FN_WriteEntity_Post - -#ifdef FN_CVarRegister_Post -void FN_CVarRegister_Post(cvar_t *pCvar); -#endif // FN_CVarRegister_Post - -#ifdef FN_CVarGetFloat_Post -float FN_CVarGetFloat_Post(const char *szVarName); -#endif // FN_CVarGetFloat_Post - -#ifdef FN_CVarGetString_Post -const char *FN_CVarGetString_Post(const char *szVarName); -#endif // FN_CVarGetString_Post - -#ifdef FN_CVarSetFloat_Post -void FN_CVarSetFloat_Post(const char *szVarName, float flValue); -#endif // FN_CVarSetFloat_Post - -#ifdef FN_CVarSetString_Post -void FN_CVarSetString_Post(const char *szVarName, const char *szValue); -#endif // FN_CVarSetString_Post - -#ifdef FN_AlertMessage_Post -void FN_AlertMessage_Post(ALERT_TYPE atype, char *szFmt, ...); -#endif // FN_AlertMessage_Post - -#ifdef FN_EngineFprintf_Post -void FN_EngineFprintf_Post(FILE *pfile, char *szFmt, ...); -#endif // FN_EngineFprintf_Post - -#ifdef FN_PvAllocEntPrivateData_Post -void *FN_PvAllocEntPrivateData_Post(edict_t *pEdict, long cb); -#endif // FN_PvAllocEntPrivateData_Post - -#ifdef FN_PvEntPrivateData_Post -void *FN_PvEntPrivateData_Post(edict_t *pEdict); -#endif // FN_PvEntPrivateData_Post - -#ifdef FN_FreeEntPrivateData_Post -void FN_FreeEntPrivateData_Post(edict_t *pEdict); -#endif // FN_FreeEntPrivateData_Post - -#ifdef FN_SzFromIndex_Post -const char *FN_SzFromIndex_Post(int iString); -#endif // FN_SzFromIndex_Post - -#ifdef FN_AllocString_Post -int FN_AllocString_Post(const char *szValue); -#endif // FN_AllocString_Post - -#ifdef FN_GetVarsOfEnt_Post -struct entvars_s *FN_GetVarsOfEnt_Post(edict_t *pEdict); -#endif // FN_GetVarsOfEnt_Post - -#ifdef FN_PEntityOfEntOffset_Post -edict_t *FN_PEntityOfEntOffset_Post(int iEntOffset); -#endif // FN_PEntityOfEntOffset_Post - -#ifdef FN_EntOffsetOfPEntity_Post -int FN_EntOffsetOfPEntity_Post(const edict_t *pEdict); -#endif // FN_EntOffsetOfPEntity_Post - -#ifdef FN_IndexOfEdict_Post -int FN_IndexOfEdict_Post(const edict_t *pEdict); -#endif // FN_IndexOfEdict_Post - -#ifdef FN_PEntityOfEntIndex_Post -edict_t *FN_PEntityOfEntIndex_Post(int iEntIndex); -#endif // FN_PEntityOfEntIndex_Post - -#ifdef FN_FindEntityByVars_Post -edict_t *FN_FindEntityByVars_Post(struct entvars_s *pvars); -#endif // FN_FindEntityByVars_Post - -#ifdef FN_GetModelPtr_Post -void *FN_GetModelPtr_Post(edict_t *pEdict); -#endif // FN_GetModelPtr_Post - -#ifdef FN_RegUserMsg_Post -int FN_RegUserMsg_Post(const char *pszName, int iSize); -#endif // FN_RegUserMsg_Post - -#ifdef FN_AnimationAutomove_Post -void FN_AnimationAutomove_Post(const edict_t *pEdict, float flTime); -#endif // FN_AnimationAutomove_Post - -#ifdef FN_GetBonePosition_Post -void FN_GetBonePosition_Post(const edict_t *pEdict, int iBone, float *rgflOrigin, float *rgflAngles); -#endif // FN_GetBonePosition_Post - -#ifdef FN_FunctionFromName_Post -unsigned long FN_FunctionFromName_Post(const char *pName); -#endif // FN_FunctionFromName_Post - -#ifdef FN_NameForFunction_Post -const char *FN_NameForFunction_Post(unsigned long function); -#endif // FN_NameForFunction_Post - -#ifdef FN_ClientPrintf_Post -void FN_ClientPrintf_Post(edict_t *pEdict, PRINT_TYPE ptype, const char *szMsg); -#endif // FN_ClientPrintf_Post - -#ifdef FN_ServerPrint_Post -void FN_ServerPrint_Post(const char *szMsg); -#endif // FN_ServerPrint_Post - -#ifdef FN_Cmd_Args_Post -const char *FN_Cmd_Args_Post(void); -#endif // FN_Cmd_Args_Post - -#ifdef FN_Cmd_Argv_Post -const char *FN_Cmd_Argv_Post(int argc); -#endif // FN_Cmd_Argv_Post - -#ifdef FN_Cmd_Argc_Post -int FN_Cmd_Argc_Post(void); -#endif // FN_Cmd_Argc_Post - -#ifdef FN_GetAttachment_Post -void FN_GetAttachment_Post(const edict_t *pEdict, int iAttachment, float *rgflOrigin, float *rgflAngles ); -#endif // FN_GetAttachment_Post - -#ifdef FN_CRC32_Init_Post -void FN_CRC32_Init_Post(CRC32_t *pulCRC); -#endif // FN_CRC32_Init_Post - -#ifdef FN_CRC32_ProcessBuffer_Post -void FN_CRC32_ProcessBuffer_Post(CRC32_t *pulCRC, void *p, int len); -#endif // FN_CRC32_ProcessBuffer_Post - -#ifdef FN_CRC32_ProcessByte_Post -void FN_CRC32_ProcessByte_Post(CRC32_t *pulCRC, unsigned char ch); -#endif // FN_CRC32_ProcessByte_Post - -#ifdef FN_CRC32_Final_Post -CRC32_t FN_CRC32_Final_Post(CRC32_t pulCRC); -#endif // FN_CRC32_Final_Post - -#ifdef FN_RandomLong_Post -long FN_RandomLong_Post(long lLow, long lHigh); -#endif // FN_RandomLong_Post - -#ifdef FN_RandomFloat_Post -float FN_RandomFloat_Post(float flLow, float flHigh); -#endif // FN_RandomFloat_Post - -#ifdef FN_SetView_Post -void FN_SetView_Post(const edict_t *pClient, const edict_t *pViewent); -#endif // FN_SetView_Post - -#ifdef FN_Time_Post -float FN_Time_Post(void); -#endif // FN_Time_Post - -#ifdef FN_CrosshairAngle_Post -void FN_CrosshairAngle_Post(const edict_t *pClient, float pitch, float yaw); -#endif // FN_CrosshairAngle_Post - -#ifdef FN_LoadFileForMe_Post -byte *FN_LoadFileForMe_Post(char *filename, int *pLength); -#endif // FN_LoadFileForMe_Post - -#ifdef FN_FreeFile_Post -void FN_FreeFile_Post(void *buffer); -#endif // FN_FreeFile_Post - -#ifdef FN_EndSection_Post -void FN_EndSection_Post(const char *pszSectionName); -#endif // FN_EndSection_Post - -#ifdef FN_CompareFileTime_Post -int FN_CompareFileTime_Post(char *filename1, char *filename2, int *iCompare); -#endif // FN_CompareFileTime_Post - -#ifdef FN_GetGameDir_Post -void FN_GetGameDir_Post(char *szGetGameDir); -#endif // FN_GetGameDir_Post - -#ifdef FN_Cvar_RegisterVariable_Post -void FN_Cvar_RegisterVariable_Post(cvar_t *variable); -#endif // FN_Cvar_RegisterVariable_Post - -#ifdef FN_FadeClientVolume_Post -void FN_FadeClientVolume_Post(const edict_t *pEdict, int fadePercent, int fadeOutSeconds, int holdTime, int fadeInSeconds); -#endif // FN_FadeClientVolume_Post - -#ifdef FN_SetClientMaxspeed_Post -void FN_SetClientMaxspeed_Post(const edict_t *pEdict, float fNewMaxspeed); -#endif // FN_SetClientMaxspeed_Post - -#ifdef FN_CreateFakeClient_Post -edict_t *FN_CreateFakeClient_Post(const char *netname); -#endif // FN_CreateFakeClient_Post - -#ifdef FN_RunPlayerMove_Post -void FN_RunPlayerMove_Post(edict_t *fakeclient, const float *viewangles, float forwardmove, float sidemove, float upmove, unsigned short buttons, byte impulse, byte msec); -#endif // FN_RunPlayerMove_Post - -#ifdef FN_NumberOfEntities_Post -int FN_NumberOfEntities_Post(void); -#endif // FN_NumberOfEntities_Post - -#ifdef FN_GetInfoKeyBuffer_Post -char *FN_GetInfoKeyBuffer_Post(edict_t *e); -#endif // FN_GetInfoKeyBuffer_Post - -#ifdef FN_InfoKeyValue_Post -char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -#endif // FN_InfoKeyValue_Post - -#ifdef FN_SetKeyValue_Post -void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -#endif // FN_SetKeyValue_Post - -#ifdef FN_SetClientKeyValue_Post -void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -#endif // FN_SetClientKeyValue_Post - -#ifdef FN_IsMapValid_Post -int FN_IsMapValid_Post(char *filename); -#endif // FN_IsMapValid_Post - -#ifdef FN_StaticDecal_Post -void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); -#endif // FN_StaticDecal_Post - -#ifdef FN_PrecacheGeneric_Post -int FN_PrecacheGeneric_Post(char *s); -#endif // FN_PrecacheGeneric_Post - -#ifdef FN_GetPlayerUserId_Post -int FN_GetPlayerUserId_Post(edict_t *e ); -#endif // FN_GetPlayerUserId_Post - -#ifdef FN_BuildSoundMsg_Post -void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -#endif // FN_BuildSoundMsg_Post - -#ifdef FN_IsDedicatedServer_Post -int FN_IsDedicatedServer_Post(void); -#endif // FN_IsDedicatedServer_Post - -#ifdef FN_CVarGetPointer_Post -cvar_t *FN_CVarGetPointer_Post(const char *szVarName); -#endif // FN_CVarGetPointer_Post - -#ifdef FN_GetPlayerWONId_Post -unsigned int FN_GetPlayerWONId_Post(edict_t *e); -#endif // FN_GetPlayerWONId_Post - -#ifdef FN_Info_RemoveKey_Post -void FN_Info_RemoveKey_Post( char *s, const char *key); -#endif // FN_Info_RemoveKey_Post - -#ifdef FN_GetPhysicsKeyValue_Post -const char *FN_GetPhysicsKeyValue_Post(const edict_t *pClient, const char *key); -#endif // FN_GetPhysicsKeyValue_Post - -#ifdef FN_SetPhysicsKeyValue_Post -void FN_SetPhysicsKeyValue_Post(const edict_t *pClient, const char *key, const char *value); -#endif // FN_SetPhysicsKeyValue_Post - -#ifdef FN_GetPhysicsInfoString_Post -const char *FN_GetPhysicsInfoString_Post( const edict_t *pClient); -#endif // FN_GetPhysicsInfoString_Post - -#ifdef FN_PrecacheEvent_Post -unsigned short FN_PrecacheEvent_Post(int type, const char *psz); -#endif // FN_PrecacheEvent_Post - -#ifdef FN_PlaybackEvent_Post -void FN_PlaybackEvent_Post(int flags, const edict_t *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2); -#endif // FN_PlaybackEvent_Post - -#ifdef FN_SetFatPVS_Post -unsigned char *FN_SetFatPVS_Post(float *org); -#endif // FN_SetFatPVS_Post - -#ifdef FN_SetFatPAS_Post -unsigned char *FN_SetFatPAS_Post(float *org); -#endif // FN_SetFatPAS_Post - -#ifdef FN_CheckVisibility_Post -int FN_CheckVisibility_Post(const edict_t *entity, unsigned char *pset); -#endif // FN_CheckVisibility_Post - -#ifdef FN_DeltaSetField_Post -void FN_DeltaSetField_Post(struct delta_s *pFields, const char *fieldname); -#endif // FN_DeltaSetField_Post - -#ifdef FN_DeltaUnsetField_Post -void FN_DeltaUnsetField_Post(struct delta_s *pFields, const char *fieldname); -#endif // FN_DeltaUnsetField_Post - -#ifdef FN_DeltaAddEncoder_Post -void FN_DeltaAddEncoder_Post(char *name, void (*conditionalencode)( struct delta_s *pFields, const unsigned char *from, const unsigned char *to ) ); -#endif // FN_DeltaAddEncoder_Post - -#ifdef FN_GetCurrentPlayer_Post -int FN_GetCurrentPlayer_Post(void); -#endif // FN_GetCurrentPlayer_Post - -#ifdef FN_CanSkipPlayer_Post -int FN_CanSkipPlayer_Post(const edict_t *player); -#endif // FN_CanSkipPlayer_Post - -#ifdef FN_DeltaFindField_Post -int FN_DeltaFindField_Post(struct delta_s *pFields, const char *fieldname); -#endif // FN_DeltaFindField_Post - -#ifdef FN_DeltaSetFieldByIndex_Post -void FN_DeltaSetFieldByIndex_Post(struct delta_s *pFields, int fieldNumber); -#endif // FN_DeltaSetFieldByIndex_Post - -#ifdef FN_DeltaUnsetFieldByIndex_Post -void FN_DeltaUnsetFieldByIndex_Post(struct delta_s *pFields, int fieldNumber); -#endif // FN_DeltaUnsetFieldByIndex_Post - -#ifdef FN_SetGroupMask_Post -void FN_SetGroupMask_Post(int mask, int op); -#endif // FN_SetGroupMask_Post - -#ifdef FN_engCreateInstancedBaseline_Post -int FN_engCreateInstancedBaseline_Post(int classname, struct entity_state_s *baseline); -#endif // FN_engCreateInstancedBaseline_Post - -#ifdef FN_Cvar_DirectSet_Post -void FN_Cvar_DirectSet_Post(struct cvar_s *var, char *value); -#endif // FN_Cvar_DirectSet_Post - -#ifdef FN_ForceUnmodified_Post -void FN_ForceUnmodified_Post(FORCE_TYPE type, float *mins, float *maxs, const char *filename); -#endif // FN_ForceUnmodified_Post - -#ifdef FN_GetPlayerStats_Post -void FN_GetPlayerStats_Post(const edict_t *pClient, int *ping, int *packet_loss); -#endif // FN_GetPlayerStats_Post - -#ifdef FN_AddServerCommand_Post -void FN_AddServerCommand_Post(char *cmd_name, void (*function)(void)); -#endif // FN_AddServerCommand_Post - -#ifdef FN_Voice_GetClientListening_Post -qboolean FN_Voice_GetClientListening_Post(int iReceiver, int iSender); -#endif // FN_Voice_GetClientListening_Post - -#ifdef FN_Voice_SetClientListening_Post -qboolean FN_Voice_SetClientListening_Post(int iReceiver, int iSender, qboolean bListen); -#endif // FN_Voice_SetClientListening_Post - -#ifdef FN_GetPlayerAuthId_Post -const char *FN_GetPlayerAuthId_Post(edict_t *e); -#endif // FN_GetPlayerAuthId - - - - -#ifdef FN_OnFreeEntPrivateData -void FN_OnFreeEntPrivateData(edict_t *pEnt); -#endif // FN_OnFreeEntPrivateData - -#ifdef FN_GameShutdown -void FN_GameShutdown(void); -#endif // FN_GameShutdown - -#ifdef FN_ShouldCollide -int FN_ShouldCollide(edict_t *pentTouched, edict_t *pentOther); -#endif // FN_ShouldCollide - - - - - -#ifdef FN_OnFreeEntPrivateData_Post -void FN_OnFreeEntPrivateData_Post(edict_t *pEnt); -#endif // FN_OnFreeEntPrivateData_Post - -#ifdef FN_GameShutdown_Post -void FN_GameShutdown_Post(void); -#endif // FN_GameShutdown_Post - -#ifdef FN_ShouldCollide_Post -int FN_ShouldCollide_Post(edict_t *pentTouched, edict_t *pentOther); -#endif // FN_ShouldCollide_Post - -#endif // USE_METAMOD - - -#ifdef FN_AMXX_QUERY -void FN_AMXX_QUERY(void); -#endif // FN_AMXX_QUERY - -#ifdef FN_AMXX_ATTACH -void FN_AMXX_ATTACH(void); -#endif // FN_AMXX_ATTACH - -#ifdef FN_AMXX_DETACH -void FN_AMXX_DETACH(void); -#endif // FN_AMXX_DETACH - -#ifdef FN_AMXX_PLUGINSLOADED -void FN_AMXX_PLUGINSLOADED(void); -#endif // FN_AMXX_PLUGINSLOADED - -// *** Types *** -typedef void* (*PFN_REQ_FNPTR)(const char * /*name*/); - -// ***** Module funcs stuff ***** -enum ForwardExecType -{ - ET_IGNORE = 0, // Ignore return vaue - ET_STOP, // Stop on PLUGIN_HANDLED - ET_STOP2, // Stop on PLUGIN_HANDLED, continue on other values, return biggest return value - ET_CONTINUE, // Continue; return biggest return value -}; - -enum ForwardParam -{ - FP_DONE = -1, // specify this as the last argument - // only tells the function that there are no more arguments - FP_CELL, // normal cell - FP_FLOAT, // float; used as normal cell though - FP_STRING, // string - FP_STRINGEX, // string; will be updated to the last function's value - FP_ARRAY, // array; use the return value of prepareArray. -}; - - -typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); -typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); -typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); -typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); -typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -typedef const char * (*PFN_GET_MODNAME) (void); -typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); -typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); -typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); -typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); -typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); -typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); -typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -typedef char * (*PFN_FORMAT_AMXSTRING) (AMX * /*amx*/, cell * /*params*/, int /*startParam*/, int * /*pLen*/); -typedef void (*PFN_COPY_AMXMEMORY) (cell * /*dest*/, const cell * /*src*/, int /*len*/); -typedef void (*PFN_LOG) (const char * /*fmt*/, ...); -typedef void (*PFN_LOG_ERROR) (AMX * /*amx*/, int /*err*/, const char * /*fmt*/, ...); -typedef int (*PFN_RAISE_AMXERROR) (AMX * /*amx*/, int /*error*/); -typedef int (*PFN_REGISTER_FORWARD) (const char * /*funcname*/, ForwardExecType /*exectype*/, ... /*paramtypes terminated by PF_DONE*/); -typedef int (*PFN_EXECUTE_FORWARD) (int /*id*/, ... /*params*/); -typedef cell (*PFN_PREPARE_CELLARRAY) (cell * /*ptr*/, unsigned int /*size*/); -typedef cell (*PFN_PREPARE_CHARARRAY) (char * /*ptr*/, unsigned int /*size*/); -typedef cell (*PFN_PREPARE_CELLARRAY_A) (cell * /*ptr*/, unsigned int /*size*/, bool /*copyBack*/); -typedef cell (*PFN_PREPARE_CHARARRAY_A) (char * /*ptr*/, unsigned int /*size*/, bool /*copyBack*/); -typedef int (*PFN_IS_PLAYER_VALID) (int /*id*/); -typedef const char * (*PFN_GET_PLAYER_NAME) (int /*id*/); -typedef const char * (*PFN_GET_PLAYER_IP) (int /*id*/); -typedef int (*PFN_IS_PLAYER_INGAME) (int /*id*/); -typedef int (*PFN_IS_PLAYER_BOT) (int /*id*/); -typedef int (*PFN_IS_PLAYER_AUTHORIZED) (int /*id*/); -typedef float (*PFN_GET_PLAYER_TIME) (int /*id*/); -typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/); -typedef int (*PFN_GETPLAYERFLAGS) (int /* id*/); -typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/); -typedef const char * (*PFN_GET_PLAYER_TEAM) (int /*id*/); -typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/); -typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/); -typedef int (*PFN_GET_PLAYER_MENU) (int /*id*/); -typedef int (*PFN_GET_PLAYER_KEYS) (int /*id*/); -typedef int (*PFN_IS_PLAYER_ALIVE) (int /*id*/); -typedef int (*PFN_GET_PLAYER_FRAGS) (int /*id*/); -typedef int (*PFN_IS_PLAYER_CONNECTING) (int /*id*/); -typedef int (*PFN_IS_PLAYER_HLTV) (int /*id*/); -typedef int (*PFN_GET_PLAYER_ARMOR) (int /*id*/); -typedef int (*PFN_GET_PLAYER_HEALTH) (int /*id*/); -#ifdef USE_METAMOD -typedef edict_t * (*PFN_GET_PLAYER_EDICT) (int /*id*/); -#else -typedef void * (*PFN_GET_PLAYER_EDICT) (int /*id*/); -#endif - -#ifdef MEMORY_TEST -typedef void * (*PFN_ALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/); -typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); -typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); -#endif -typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); -typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); -typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); -typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); -typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); -typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); -typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); -typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); -typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); -typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); -typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/); -typedef void (*PFN_REGISTERFUNCTION) (void * /*pfn*/, const char * /*desc*/); -typedef int (*PFN_AMX_PUSH) (AMX * /*amx*/, cell /*value*/); - -extern PFN_ADD_NATIVES g_fn_AddNatives; -extern PFN_BUILD_PATHNAME g_fn_BuildPathname; -extern PFN_BUILD_PATHNAME_R g_fn_BuildPathnameR; -extern PFN_GET_AMXADDR g_fn_GetAmxAddr; -extern PFN_PRINT_SRVCONSOLE g_fn_PrintSrvConsole; -extern PFN_GET_MODNAME g_fn_GetModname; -extern PFN_GET_AMXSCRIPTNAME g_fn_GetAmxScriptName; -extern PFN_GET_AMXSCRIPT g_fn_GetAmxScript; -extern PFN_FIND_AMXSCRIPT_BYAMX g_fn_FindAmxScriptByAmx; -extern PFN_FIND_AMXSCRIPT_BYNAME g_fn_FindAmxScriptByName; -extern PFN_SET_AMXSTRING g_fn_SetAmxString; -extern PFN_GET_AMXSTRING g_fn_GetAmxString; -extern PFN_GET_AMXSTRINGLEN g_fn_GetAmxStringLen; -extern PFN_FORMAT_AMXSTRING g_fn_FormatAmxString; -extern PFN_COPY_AMXMEMORY g_fn_CopyAmxMemory; -extern PFN_LOG g_fn_Log; -extern PFN_LOG_ERROR g_fn_LogErrorFunc; -extern PFN_RAISE_AMXERROR g_fn_RaiseAmxError; -extern PFN_REGISTER_FORWARD g_fn_RegisterForward; -extern PFN_EXECUTE_FORWARD g_fn_ExecuteForward; -extern PFN_PREPARE_CELLARRAY g_fn_PrepareCellArray; -extern PFN_PREPARE_CHARARRAY g_fn_PrepareCharArray; -extern PFN_PREPARE_CELLARRAY_A g_fn_PrepareCellArrayA; -extern PFN_PREPARE_CHARARRAY_A g_fn_PrepareCharArrayA; -extern PFN_IS_PLAYER_VALID g_fn_IsPlayerValid; -extern PFN_GET_PLAYER_NAME g_fn_GetPlayerName; -extern PFN_GET_PLAYER_IP g_fn_GetPlayerIP; -extern PFN_IS_PLAYER_INGAME g_fn_IsPlayerIngame; -extern PFN_IS_PLAYER_BOT g_fn_IsPlayerBot; -extern PFN_IS_PLAYER_AUTHORIZED g_fn_IsPlayerAuthorized; -extern PFN_GET_PLAYER_TIME g_fn_GetPlayerTime; -extern PFN_GET_PLAYER_PLAYTIME g_fn_GetPlayerPlayTime; -extern PFN_GET_PLAYER_CURWEAPON g_fn_GetPlayerCurweapon; -extern PFN_GET_PLAYER_TEAMID g_fn_GetPlayerTeamID; -extern PFN_GET_PLAYER_DEATHS g_fn_GetPlayerDeaths; -extern PFN_GET_PLAYER_MENU g_fn_GetPlayerMenu; -extern PFN_GET_PLAYER_KEYS g_fn_GetPlayerKeys; -extern PFN_IS_PLAYER_ALIVE g_fn_IsPlayerAlive; -extern PFN_GET_PLAYER_FRAGS g_fn_GetPlayerFrags; -extern PFN_IS_PLAYER_CONNECTING g_fn_IsPlayerConnecting; -extern PFN_IS_PLAYER_HLTV g_fn_IsPlayerHLTV; -extern PFN_GET_PLAYER_ARMOR g_fn_GetPlayerArmor; -extern PFN_GET_PLAYER_HEALTH g_fn_GetPlayerHealth; -extern PFN_AMX_EXEC g_fn_AmxExec; -extern PFN_AMX_ALLOT g_fn_AmxAllot; -extern PFN_AMX_FINDPUBLIC g_fn_AmxFindPublic; -extern PFN_LOAD_AMXSCRIPT g_fn_LoadAmxScript; -extern PFN_UNLOAD_AMXSCRIPT g_fn_UnloadAmxScript; -extern PFN_REAL_TO_CELL g_fn_RealToCell; -extern PFN_CELL_TO_REAL g_fn_CellToReal; -extern PFN_REGISTER_SPFORWARD g_fn_RegisterSPForward; -extern PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName; -extern PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward; -extern PFN_MERGEDEFINITION_FILE g_fn_MergeDefinition_File; -extern PFN_AMX_FINDNATIVE g_fn_AmxFindNative; -extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags; -extern PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict; -extern PFN_FORMAT g_fn_Format; -extern PFN_GET_PLAYER_TEAM g_fn_GetPlayerTeam; -extern PFN_REGISTERFUNCTION g_fn_RegisterFunction; -extern PFN_REQ_FNPTR g_fn_RequestFunction; -extern PFN_AMX_PUSH g_fn_AmxPush; - -#ifdef MAY_NEVER_BE_DEFINED -// Function prototypes for intellisense and similar systems -// They understand #if 0 so we use #ifdef MAY_NEVER_BE_DEFINED -int MF_AddNatives (const AMX_NATIVE_INFO *list) { } -char * MF_BuildPathname (const char * format, ...) { } -char * MF_BuildPathnameR (char *buffer, size_t maxlen, const char *fmt, ...) { } -cell * MF_GetAmxAddr (AMX * amx, cell offset) { } -void MF_PrintSrvConsole (char * format, ...) { } -const char * MF_GetModname (void) { } -const char * MF_GetScriptName (int id) { } -AMX * MF_GetScriptAmx (int id) { } -int MF_FindScriptByAmx (const AMX * amx) { } -int MF_FindScriptByAmx (const char * name) { } -int MF_SetAmxString (AMX * amx, cell amx_addr, const char * source , int max ) { } -char * MF_GetAmxString (AMX * amx, cell amx_addr, int bufferId, int * pLen) { } -int MF_GetAmxStringLen (const cell *ptr) { } -char * MF_FormatAmxString (AMX * amx, cell * params, int startParam, int * pLen) { } -void MF_CopyAmxMemory (cell * dest, const cell * src, int len) { } -void MF_Log (const char * fmt, ...) { } -void MF_LogError (AMX * amx, int err, const char *fmt, ...) { } -int MF_RaiseAmxError (AMX * amx, int error) { } -int MF_RegisterForward (const char * funcname, ForwardExecType exectype, ...) { } -int MF_ExecuteForward (int id, ...) { } -cell MF_PrepareCellArray (cell * ptr, unsigned int size) { } -cell MF_PrepareCharArray (char * ptr, unsigned int size) { } -cell MF_PrepareCellArrayA (cell * ptr, unsigned int size, bool copyBack) { } -cell MF_PrepareCharArrayA (char * ptr, unsigned int size, bool copyBack) { } -int MF_IsPlayerValid (int id) { } -const char * MF_GetPlayerName (int id) { } -const char * MF_GetPlayerIP (int id) { } -int MF_IsPlayerIngame (int id) { } -int MF_IsPlayerBot (int id) { } -int MF_IsPlayerAuthorized (int id) { } -float MF_GetPlayerTime (int id) { } -float MF_GetPlayerPlayTime (int id) { } -int MF_GetPlayerCurweapon (int id) { } -const char * MF_GetPlayerTeam (int id) { } -int MF_GetPlayerTeamID (int id) { } -int MF_GetPlayerDeaths (int id) { } -int MF_GetPlayerMenu (int id) { } -int MF_GetPlayerKeys (int id) { } -int MF_IsPlayerAlive (int id) { } -int MF_GetPlayerFrags (int id) { } -int MF_IsPlayerConnecting (int id) { } -int MF_IsPlayerHLTV (int id) { } -int MF_GetPlayerArmor (int id) { } -int MF_GetPlayerHealth (int id) { } -REAL amx_ctof (cell x) { } -cell amx_ftoc (float x) { } -int MF_RegisterSPForwardByName (AMX * amx, const char *str, ...) { } -int MF_RegisterSPForward (AMX * amx, int func, ...) { } -void MF_UnregisterSPForward (int id) { } -int MF_GetPlayerFlags (int id) { } -edict_t* MF_GetPlayerEdict (int id) { } -const char * MF_Format (const char *fmt, ...) { } -void MF_RegisterFunction (void *pfn, const char *description) { } -void * MF_RequestFunction (const char *description) { } -int MF_AmxPush (AMX *amx, cell *params) { } -int MF_AmxExec (AMX *amx, cell *retval, int idx) { } -#endif // MAY_NEVER_BE_DEFINED - -#define MF_AddNatives g_fn_AddNatives -#define MF_BuildPathname g_fn_BuildPathname -#define MF_BuildPathnameR g_fn_BuildPathnameR -#define MF_FormatAmxString g_fn_FormatAmxString -#define MF_GetAmxAddr g_fn_GetAmxAddr -#define MF_PrintSrvConsole g_fn_PrintSrvConsole -#define MF_GetModname g_fn_GetModname -#define MF_GetScriptName g_fn_GetAmxScriptName -#define MF_GetScriptAmx g_fn_GetAmxScript -#define MF_FindScriptByAmx g_fn_FindAmxScriptByAmx -#define MF_FindScriptByName g_fn_FindAmxScriptByName -#define MF_SetAmxString g_fn_SetAmxString -#define MF_GetAmxString g_fn_GetAmxString -#define MF_GetAmxStringLen g_fn_GetAmxStringLen -#define MF_CopyAmxMemory g_fn_CopyAmxMemory -void MF_Log(const char *fmt, ...); -void MF_LogError(AMX *amx, int err, const char *fmt, ...); -#define MF_RaiseAmxError g_fn_RaiseAmxError -#define MF_RegisterForward g_fn_RegisterForward -#define MF_ExecuteForward g_fn_ExecuteForward -#define MF_PrepareCellArray g_fn_PrepareCellArray -#define MF_PrepareCharArray g_fn_PrepareCharArray -#define MF_PrepareCellArrayA g_fn_PrepareCellArrayA -#define MF_PrepareCharArrayA g_fn_PrepareCharArrayA -#define MF_IsPlayerValid g_fn_IsPlayerValid -#define MF_GetPlayerName g_fn_GetPlayerName -#define MF_GetPlayerIP g_fn_GetPlayerIP -#define MF_IsPlayerIngame g_fn_IsPlayerIngame -#define MF_IsPlayerBot g_fn_IsPlayerBot -#define MF_IsPlayerAuthorized g_fn_IsPlayerAuthorized -#define MF_GetPlayerTime g_fn_GetPlayerTime -#define MF_GetPlayerPlayTime g_fn_GetPlayerPlayTime -#define MF_GetPlayerCurweapon g_fn_GetPlayerCurweapon -#define MF_GetPlayerTeam g_fn_GetPlayerTeam -#define MF_GetPlayerTeamID g_fn_GetPlayerTeamID -#define MF_GetPlayerDeaths g_fn_GetPlayerDeaths -#define MF_GetPlayerMenu g_fn_GetPlayerMenu -#define MF_GetPlayerKeys g_fn_GetPlayerKeys -#define MF_IsPlayerAlive g_fn_IsPlayerAlive -#define MF_GetPlayerFrags g_fn_GetPlayerFrags -#define MF_IsPlayerConnecting g_fn_IsPlayerConnecting -#define MF_IsPlayerHLTV g_fn_IsPlayerHLTV -#define MF_GetPlayerArmor g_fn_GetPlayerArmor -#define MF_GetPlayerHealth g_fn_GetPlayerHealth -#define MF_AmxExec g_fn_AmxExec -#define MF_AmxExecv g_fn_AmxExecv -#define MF_AmxFindPublic g_fn_AmxFindPublic -#define MF_AmxAllot g_fn_AmxAllot -#define MF_AmxFindNative g_fn_AmxFindNative -#define MF_LoadAmxScript g_fn_LoadAmxScript -#define MF_UnloadAmxScript g_fn_UnloadAmxScript -#define MF_MergeDefinitionFile g_fn_MergeDefinition_File -#define amx_ctof g_fn_CellToReal -#define amx_ftoc g_fn_RealToCell -#define MF_RegisterSPForwardByName g_fn_RegisterSPForwardByName -#define MF_RegisterSPForward g_fn_RegisterSPForward -#define MF_UnregisterSPForward g_fn_UnregisterSPForward -#define MF_GetPlayerFlags g_fn_GetPlayerFlags -#define MF_GetPlayerEdict g_fn_GetPlayerEdict -#define MF_Format g_fn_Format -#define MF_RegisterFunction g_fn_RegisterFunction -#define MF_RequestFunction g_fn_RequestFunction; -#define MF_AmxPush g_fn_AmxPush - -#ifdef MEMORY_TEST -/*** Memory ***/ -void *operator new(size_t reportedSize); -void *operator new[](size_t reportedSize); -void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine); -void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine); -void operator delete(void *reportedAddress); -void operator delete[](void *reportedAddress); - -// Allocation types -extern const unsigned int m_alloc_unknown; -extern const unsigned int m_alloc_new; -extern const unsigned int m_alloc_new_array; -extern const unsigned int m_alloc_malloc; -extern const unsigned int m_alloc_calloc; -extern const unsigned int m_alloc_realloc; -extern const unsigned int m_alloc_delete; -extern const unsigned int m_alloc_delete_array; -extern const unsigned int m_alloc_free; - -// To be called before new / delete -void Mem_SetOwner(const char *filename, int line, const char *function); -// Actual allocator -void * Mem_Allocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, - const unsigned int allocationType, const size_t reportedSize); -void * Mem_Reallocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, - const unsigned int reallocationType, const size_t reportedSize, void *reportedAddress); -void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, - const unsigned int deallocationType, void *reportedAddress); - -// memory macros -#ifndef __FUNCTION__ -#define __FUNCTION__ "??" -#endif - -// call Mem_SetOwner, followed by the actual new operator -#define new (Mem_SetOwner(__FILE__,__LINE__,__FUNCTION__),false) ? NULL : new -// call Mem_SetOwner, followed by the actual delete operator -#define delete (Mem_SetOwner(__FILE__,__LINE__,__FUNCTION__),false) ? Mem_SetOwner("",0,"") : delete -#define malloc(sz) Mem_Allocator (__FILE__,__LINE__,__FUNCTION__,m_alloc_malloc,sz) -#define calloc(sz) Mem_Allocator (__FILE__,__LINE__,__FUNCTION__,m_alloc_calloc,sz) -#define realloc(ptr,sz) Mem_Reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr) -#define free(ptr) Mem_Deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr) - -#endif //MEMORY_TEST - -#endif // #ifndef __AMXXMODULE_H__ diff --git a/dlls/arrayx/array.cpp b/dlls/arrayx/array.cpp deleted file mode 100644 index 0547fb42..00000000 --- a/dlls/arrayx/array.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "osdefs.h" -#include -#include -#include "amxxmodule.h" - -#ifdef __WIN32__ -#define JU_WIN -#endif - -#define JUDYERROR_NOTEST 1 -#include - -#include "element.h" - -#include "CKeytable.h" -#include "CArray.h" -#include "CHashtable.h" - -void OnAmxxAttach() -{ - MF_AddNatives(array_exports); - MF_AddNatives(keytable_exports); - MF_AddNatives(hashtable_exports); -} - -void OnAmxxDetach() -{ - Delete_MasterArray(); - Delete_MasterKeytable(); - Delete_MasterHashtable(); -} diff --git a/dlls/arrayx/element.h b/dlls/arrayx/element.h deleted file mode 100644 index a4e1a777..00000000 --- a/dlls/arrayx/element.h +++ /dev/null @@ -1,210 +0,0 @@ -/**************************************************************************** -* element.h -* This class acts as sort of an interface for storing values in the judy -* arrays. By storing an 'element' with error handling and type checking, -* crashes and errors are less likely. In addition, by storing the type of -* data it is also possible to save or load from a file. -****************************************************************************/ - -#if !defined(_CLASSDEF_ELEMENT_) -#define _CLASSDEF_ELEMENT_ - -const Vector* null_vec = new Vector(); - -enum { - elem_type_none, //only used on init. - elem_type_int, - elem_type_real, - elem_type_char, - elem_type_vector -}; - -const char* elem_types[] = -{ - "-NO VALUE-", - "INTEGER", - "FLOAT", - "STRING", - "VECTOR" -}; - -class element -{ -public: - void set_int(int Value); - void set_flo(REAL Value); - void set_str(char* Value); - void set_vec(Vector* Value); - - element (int Value) { set_int(Value); } - element (REAL Value) { set_flo(Value); } - element (char* Value) { set_str(Value); } - element (Vector* Value) { set_vec(Value); } - element(void); - - REAL get_flo(int &error); - int get_int(int &error); - const char* get_str(int &error); - const Vector* get_vec(int &error); - - int get_type(void); - Pvoid_t get_ptr(void); - - virtual ~element(); - - void delete_element(void) { clear(); element::~element(); } - - char* get_elem_as_string(void); - - //This is handy because it takes all the data needed and issues the error. - void issue_type_error(AMX *amx, int Keytable, char* Index); - void issue_type_error(AMX *amx, int Array, int Index); -private: - Pvoid_t element_ptr; //Contains a pointer to whatever data is actually stored. - void clear(void); - char element_type; -}; - -Pvoid_t element::get_ptr(void) -{ - return element_ptr; -} - -void element::issue_type_error(AMX *amx, int Keytable, char* Index) -{ - MF_LogError(amx, AMX_ERR_NATIVE, - "Function attempted to read NON-%s value at key \"%s\" in keytable %d, actual value: %s", - elem_types[element_type], Index, Keytable, get_elem_as_string()); -} - -void element::issue_type_error(AMX *amx, int Array, int Index) -{ - MF_LogError(amx, AMX_ERR_NATIVE, - "Function attempted to read NON-%s value at index %d in array %d, actual value: %s", - elem_types[element_type], Index, Array, get_elem_as_string()); -} - -char* element::get_elem_as_string(void) -{ - char* value = ""; - Vector vector_val; - int error; //Is not checked. - switch (element_type) - { - case elem_type_int: - sprintf(value, "%d", get_int(error)); - break; - case elem_type_real: - sprintf(value, "%f", get_int(error)); - break; - case elem_type_char: - sprintf(value, "\"%s\"", get_str(error)); - break; - case elem_type_vector: - vector_val = *get_vec(error); - sprintf(value, "{%f,%f,%f}", vector_val.x, vector_val.y, vector_val.z); - break; - default: - sprintf(value, "-NO VALUE-"); - } - return value; -} - -REAL element::get_flo(int &error) -{ - if (element_type == elem_type_real) - return *reinterpret_cast(element_ptr); - error = 1; - return 0; -} - -int element::get_int(int &error) -{ - if (element_type == elem_type_int) - return reinterpret_cast(element_ptr); - error = 1; - return 0; -} - -const char* element::get_str(int &error) -{ - if (element_type == elem_type_char) - return reinterpret_cast(element_ptr); - error = 1; - return ""; -} - -const Vector* element::get_vec(int &error) -{ - if (element_type == elem_type_vector) - return reinterpret_cast(element_ptr); - error = 1; - return null_vec; -} - -int element::get_type(void) -{ - return element_type; -} - -element::element() { } -void element::set_int(int Value) -{ - clear(); - element_type = elem_type_int; - element_ptr = reinterpret_cast(Value); - //Don't need to make it a pointer to an int here. -} -void element::set_flo(REAL Value) -{ - clear(); - element_type = elem_type_real; - element_ptr = new REAL(Value); -} -void element::set_str(char* Value) -{ - clear(); - element_type = elem_type_char; - char *string_val = new char[strlen(Value)+1]; - strcpy(string_val,Value); - element_ptr = reinterpret_cast(string_val); -} -void element::set_vec(Vector* Value) -{ - clear(); - element_type = elem_type_vector; - element_ptr = reinterpret_cast(Value); -} - -element::~element() -{ - //do nothing here or else data WILL be lost. -} - -void element::clear() -{ - //This function intelligently creates a pointer x, - //which will be of correct type and then deletes it. - - if (element_type == elem_type_real) - { - REAL *real_val = reinterpret_cast(element_ptr); - delete real_val; - //This is actually a pointer to the float/double. - } - else if (element_type == elem_type_char) - { - char *char_val = reinterpret_cast(element_ptr); - delete char_val; - //Again, cast a pointer. - } - else if (element_type == elem_type_vector) - { - Vector *vector_val = reinterpret_cast(element_ptr); - delete vector_val; - //And again. - } - element_ptr = NULL; //Null the address as well. (Used for ints too.) -} - -#endif // !defined(_CLASSDEF_ELEMENT_) diff --git a/dlls/arrayx/moduleconfig.h b/dlls/arrayx/moduleconfig.h deleted file mode 100644 index 5b49ee1b..00000000 --- a/dlls/arrayx/moduleconfig.h +++ /dev/null @@ -1,463 +0,0 @@ -// Configuration - -#ifndef __MODULECONFIG_H__ -#define __MODULECONFIG_H__ - -// Module info -#define MODULE_NAME "Array" -#define MODULE_VERSION "1.65" -#define MODULE_AUTHOR "Rukia and Anpheus" -#define MODULE_URL "www.alphapoint.org/rcr" -#define MODULE_LOGTAG "ARRAY" -// If you want the module not to be reloaded on mapchange, remove / comment out the next line -#define MODULE_RELOAD_ON_MAPCHANGE - -#ifdef __DATE__ -#define MODULE_DATE __DATE__ -#else // __DATE__ -#define MODULE_DATE "Unknown" -#endif // __DATE__ - -// metamod plugin? -//#define USE_METAMOD - -// - AMXX Init functions -// Also consider using FN_META_* -// AMXX query -//#define FN_AMXX_QUERY OnAmxxQuery -// AMXX attach -// Do native functions init here (MF_AddNatives) -#define FN_AMXX_ATTACH OnAmxxAttach -// AMXX dettach -#define FN_AMXX_DETTACH OnAmxxDettach -// All plugins loaded -// Do forward functions init here (MF_RegisterForward) -// #define FN_AMXX_PLUGINSLOADED OnPluginsLoaded - -/**** METAMOD ****/ -// If your module doesn't use metamod, you may close the file now :) -#ifdef USE_METAMOD -// ---- -// Hook Functions -// Uncomment these to be called -// You can also change the function name - -// - Metamod init functions -// Also consider using FN_AMXX_* -// Meta query -//#define FN_META_QUERY OnMetaQuery -// Meta attach -//#define FN_META_ATTACH OnMetaAttach -// Meta dettach -//#define FN_META_DETTACH OnMetaDettach - -// (wd) are Will Day's notes -// - GetEntityAPI2 functions -// #define FN_GameDLLInit GameDLLInit /* pfnGameInit() */ -// #define FN_DispatchSpawn DispatchSpawn /* pfnSpawn() */ -// #define FN_DispatchThink DispatchThink /* pfnThink() */ -// #define FN_DispatchUse DispatchUse /* pfnUse() */ -// #define FN_DispatchTouch DispatchTouch /* pfnTouch() */ -// #define FN_DispatchBlocked DispatchBlocked /* pfnBlocked() */ -// #define FN_DispatchKeyValue DispatchKeyValue /* pfnKeyValue() */ -// #define FN_DispatchSave DispatchSave /* pfnSave() */ -// #define FN_DispatchRestore DispatchRestore /* pfnRestore() */ -// #define FN_DispatchObjectCollsionBox DispatchObjectCollsionBox /* pfnSetAbsBox() */ -// #define FN_SaveWriteFields SaveWriteFields /* pfnSaveWriteFields() */ -// #define FN_SaveReadFields SaveReadFields /* pfnSaveReadFields() */ -// #define FN_SaveGlobalState SaveGlobalState /* pfnSaveGlobalState() */ -// #define FN_RestoreGlobalState RestoreGlobalState /* pfnRestoreGlobalState() */ -// #define FN_ResetGlobalState ResetGlobalState /* pfnResetGlobalState() */ -// #define FN_ClientConnect ClientConnect /* pfnClientConnect() (wd) Client has connected */ -// #define FN_ClientDisconnect ClientDisconnect /* pfnClientDisconnect() (wd) Player has left the game */ -// #define FN_ClientKill ClientKill /* pfnClientKill() (wd) Player has typed "kill" */ -// #define FN_ClientPutInServer ClientPutInServer /* pfnClientPutInServer() (wd) Client is entering the game */ -// #define FN_ClientCommand ClientCommand /* pfnClientCommand() (wd) Player has sent a command (typed or from a bind) */ -// #define FN_ClientUserInfoChanged ClientUserInfoChanged /* pfnClientUserInfoChanged() (wd) Client has updated their setinfo structure */ -// #define FN_ServerActivate ServerActivate /* pfnServerActivate() (wd) Server is starting a new map */ -// #define FN_ServerDeactivate ServerDeactivate /* pfnServerDeactivate() (wd) Server is leaving the map (shutdown or changelevel); SDK2 */ -// #define FN_PlayerPreThink PlayerPreThink /* pfnPlayerPreThink() */ -// #define FN_PlayerPostThink PlayerPostThink /* pfnPlayerPostThink() */ -// #define FN_StartFrame StartFrame /* pfnStartFrame() */ -// #define FN_ParmsNewLevel ParmsNewLevel /* pfnParmsNewLevel() */ -// #define FN_ParmsChangeLevel ParmsChangeLevel /* pfnParmsChangeLevel() */ -// #define FN_GetGameDescription GetGameDescription /* pfnGetGameDescription() Returns string describing current .dll. E.g. "TeamFotrress 2" "Half-Life" */ -// #define FN_PlayerCustomization PlayerCustomization /* pfnPlayerCustomization() Notifies .dll of new customization for player. */ -// #define FN_SpectatorConnect SpectatorConnect /* pfnSpectatorConnect() Called when spectator joins server */ -// #define FN_SpectatorDisconnect SpectatorDisconnect /* pfnSpectatorDisconnect() Called when spectator leaves the server */ -// #define FN_SpectatorThink SpectatorThink /* pfnSpectatorThink() Called when spectator sends a command packet (usercmd_t) */ -// #define FN_Sys_Error Sys_Error /* pfnSys_Error() Notify game .dll that engine is going to shut down. Allows mod authors to set a breakpoint. SDK2 */ -// #define FN_PM_Move PM_Move /* pfnPM_Move() (wd) SDK2 */ -// #define FN_PM_Init PM_Init /* pfnPM_Init() Server version of player movement initialization; (wd) SDK2 */ -// #define FN_PM_FindTextureType PM_FindTextureType /* pfnPM_FindTextureType() (wd) SDK2 */ -// #define FN_SetupVisibility SetupVisibility /* pfnSetupVisibility() Set up PVS and PAS for networking for this client; (wd) SDK2 */ -// #define FN_UpdateClientData UpdateClientData /* pfnUpdateClientData() Set up data sent only to specific client; (wd) SDK2 */ -// #define FN_AddToFullPack AddToFullPack /* pfnAddToFullPack() (wd) SDK2 */ -// #define FN_CreateBaseline CreateBaseline /* pfnCreateBaseline() Tweak entity baseline for network encoding allows setup of player baselines too.; (wd) SDK2 */ -// #define FN_RegisterEncoders RegisterEncoders /* pfnRegisterEncoders() Callbacks for network encoding; (wd) SDK2 */ -// #define FN_GetWeaponData GetWeaponData /* pfnGetWeaponData() (wd) SDK2 */ -// #define FN_CmdStart CmdStart /* pfnCmdStart() (wd) SDK2 */ -// #define FN_CmdEnd CmdEnd /* pfnCmdEnd() (wd) SDK2 */ -// #define FN_ConnectionlessPacket ConnectionlessPacket /* pfnConnectionlessPacket() (wd) SDK2 */ -// #define FN_GetHullBounds GetHullBounds /* pfnGetHullBounds() (wd) SDK2 */ -// #define FN_CreateInstancedBaselines CreateInstancedBaselines /* pfnCreateInstancedBaselines() (wd) SDK2 */ -// #define FN_InconsistentFile InconsistentFile /* pfnInconsistentFile() (wd) SDK2 */ -// #define FN_AllowLagCompensation AllowLagCompensation /* pfnAllowLagCompensation() (wd) SDK2 */ - -// - GetEntityAPI2_Post functions -// #define FN_GameDLLInit_Post GameDLLInit_Post -// #define FN_DispatchSpawn_Post DispatchSpawn_Post -// #define FN_DispatchThink_Post DispatchThink_Post -// #define FN_DispatchUse_Post DispatchUse_Post -// #define FN_DispatchTouch_Post DispatchTouch_Post -// #define FN_DispatchBlocked_Post DispatchBlocked_Post -// #define FN_DispatchKeyValue_Post DispatchKeyValue_Post -// #define FN_DispatchSave_Post DispatchSave_Post -// #define FN_DispatchRestore_Post DispatchRestore_Post -// #define FN_DispatchObjectCollsionBox_Post DispatchObjectCollsionBox_Post -// #define FN_SaveWriteFields_Post SaveWriteFields_Post -// #define FN_SaveReadFields_Post SaveReadFields_Post -// #define FN_SaveGlobalState_Post SaveGlobalState_Post -// #define FN_RestoreGlobalState_Post RestoreGlobalState_Post -// #define FN_ResetGlobalState_Post ResetGlobalState_Post -// #define FN_ClientConnect_Post ClientConnect_Post -// #define FN_ClientDisconnect_Post ClientDisconnect_Post -// #define FN_ClientKill_Post ClientKill_Post -// #define FN_ClientPutInServer_Post ClientPutInServer_Post -// #define FN_ClientCommand_Post ClientCommand_Post -// #define FN_ClientUserInfoChanged_Post ClientUserInfoChanged_Post -// #define FN_ServerActivate_Post ServerActivate_Post -// #define FN_ServerDeactivate_Post ServerDeactivate_Post -// #define FN_PlayerPreThink_Post PlayerPreThink_Post -// #define FN_PlayerPostThink_Post PlayerPostThink_Post -// #define FN_StartFrame_Post StartFrame_Post -// #define FN_ParmsNewLevel_Post ParmsNewLevel_Post -// #define FN_ParmsChangeLevel_Post ParmsChangeLevel_Post -// #define FN_GetGameDescription_Post GetGameDescription_Post -// #define FN_PlayerCustomization_Post PlayerCustomization_Post -// #define FN_SpectatorConnect_Post SpectatorConnect_Post -// #define FN_SpectatorDisconnect_Post SpectatorDisconnect_Post -// #define FN_SpectatorThink_Post SpectatorThink_Post -// #define FN_Sys_Error_Post Sys_Error_Post -// #define FN_PM_Move_Post PM_Move_Post -// #define FN_PM_Init_Post PM_Init_Post -// #define FN_PM_FindTextureType_Post PM_FindTextureType_Post -// #define FN_SetupVisibility_Post SetupVisibility_Post -// #define FN_UpdateClientData_Post UpdateClientData_Post -// #define FN_AddToFullPack_Post AddToFullPack_Post -// #define FN_CreateBaseline_Post CreateBaseline_Post -// #define FN_RegisterEncoders_Post RegisterEncoders_Post -// #define FN_GetWeaponData_Post GetWeaponData_Post -// #define FN_CmdStart_Post CmdStart_Post -// #define FN_CmdEnd_Post CmdEnd_Post -// #define FN_ConnectionlessPacket_Post ConnectionlessPacket_Post -// #define FN_GetHullBounds_Post GetHullBounds_Post -// #define FN_CreateInstancedBaselines_Post CreateInstancedBaselines_Post -// #define FN_InconsistentFile_Post InconsistentFile_Post -// #define FN_AllowLagCompensation_Post AllowLagCompensation_Post - -// - GetEngineAPI functions -// #define FN_PrecacheModel PrecacheModel -// #define FN_PrecacheSound PrecacheSound -// #define FN_SetModel SetModel -// #define FN_ModelIndex ModelIndex -// #define FN_ModelFrames ModelFrames -// #define FN_SetSize SetSize -// #define FN_ChangeLevel ChangeLevel -// #define FN_GetSpawnParms GetSpawnParms -// #define FN_SaveSpawnParms SaveSpawnParms -// #define FN_VecToYaw VecToYaw -// #define FN_VecToAngles VecToAngles -// #define FN_MoveToOrigin MoveToOrigin -// #define FN_ChangeYaw ChangeYaw -// #define FN_ChangePitch ChangePitch -// #define FN_FindEntityByString FindEntityByString -// #define FN_GetEntityIllum GetEntityIllum -// #define FN_FindEntityInSphere FindEntityInSphere -// #define FN_FindClientInPVS FindClientInPVS -// #define FN_EntitiesInPVS EntitiesInPVS -// #define FN_MakeVectors MakeVectors -// #define FN_AngleVectors AngleVectors -// #define FN_CreateEntity CreateEntity -// #define FN_RemoveEntity RemoveEntity -// #define FN_CreateNamedEntity CreateNamedEntity -// #define FN_MakeStatic MakeStatic -// #define FN_EntIsOnFloor EntIsOnFloor -// #define FN_DropToFloor DropToFloor -// #define FN_WalkMove WalkMove -// #define FN_SetOrigin SetOrigin -// #define FN_EmitSound EmitSound -// #define FN_EmitAmbientSound EmitAmbientSound -// #define FN_TraceLine TraceLine -// #define FN_TraceToss TraceToss -// #define FN_TraceMonsterHull TraceMonsterHull -// #define FN_TraceHull TraceHull -// #define FN_TraceModel TraceModel -// #define FN_TraceTexture TraceTexture -// #define FN_TraceSphere TraceSphere -// #define FN_GetAimVector GetAimVector -// #define FN_ServerCommand ServerCommand -// #define FN_ServerExecute ServerExecute -// #define FN_engClientCommand engClientCommand -// #define FN_ParticleEffect ParticleEffect -// #define FN_LightStyle LightStyle -// #define FN_DecalIndex DecalIndex -// #define FN_PointContents PointContents -// #define FN_MessageBegin MessageBegin -// #define FN_MessageEnd MessageEnd -// #define FN_WriteByte WriteByte -// #define FN_WriteChar WriteChar -// #define FN_WriteShort WriteShort -// #define FN_WriteLong WriteLong -// #define FN_WriteAngle WriteAngle -// #define FN_WriteCoord WriteCoord -// #define FN_WriteString WriteString -// #define FN_WriteEntity WriteEntity -// #define FN_CVarRegister CVarRegister -// #define FN_CVarGetFloat CVarGetFloat -// #define FN_CVarGetString CVarGetString -// #define FN_CVarSetFloat CVarSetFloat -// #define FN_CVarSetString CVarSetString -// #define FN_AlertMessage AlertMessage -// #define FN_EngineFprintf EngineFprintf -// #define FN_PvAllocEntPrivateData PvAllocEntPrivateData -// #define FN_PvEntPrivateData PvEntPrivateData -// #define FN_FreeEntPrivateData FreeEntPrivateData -// #define FN_SzFromIndex SzFromIndex -// #define FN_AllocString AllocString -// #define FN_GetVarsOfEnt GetVarsOfEnt -// #define FN_PEntityOfEntOffset PEntityOfEntOffset -// #define FN_EntOffsetOfPEntity EntOffsetOfPEntity -// #define FN_IndexOfEdict IndexOfEdict -// #define FN_PEntityOfEntIndex PEntityOfEntIndex -// #define FN_FindEntityByVars FindEntityByVars -// #define FN_GetModelPtr GetModelPtr -// #define FN_RegUserMsg RegUserMsg -// #define FN_AnimationAutomove AnimationAutomove -// #define FN_GetBonePosition GetBonePosition -// #define FN_FunctionFromName FunctionFromName -// #define FN_NameForFunction NameForFunction -// #define FN_ClientPrintf ClientPrintf -// #define FN_ServerPrint ServerPrint -// #define FN_Cmd_Args Cmd_Args -// #define FN_Cmd_Argv Cmd_Argv -// #define FN_Cmd_Argc Cmd_Argc -// #define FN_GetAttachment GetAttachment -// #define FN_CRC32_Init CRC32_Init -// #define FN_CRC32_ProcessBuffer CRC32_ProcessBuffer -// #define FN_CRC32_ProcessByte CRC32_ProcessByte -// #define FN_CRC32_Final CRC32_Final -// #define FN_RandomLong RandomLong -// #define FN_RandomFloat RandomFloat -// #define FN_SetView SetView -// #define FN_Time Time -// #define FN_CrosshairAngle CrosshairAngle -// #define FN_LoadFileForMe LoadFileForMe -// #define FN_FreeFile FreeFile -// #define FN_EndSection EndSection -// #define FN_CompareFileTime CompareFileTime -// #define FN_GetGameDir GetGameDir -// #define FN_Cvar_RegisterVariable Cvar_RegisterVariable -// #define FN_FadeClientVolume FadeClientVolume -// #define FN_SetClientMaxspeed SetClientMaxspeed -// #define FN_CreateFakeClient CreateFakeClient -// #define FN_RunPlayerMove RunPlayerMove -// #define FN_NumberOfEntities NumberOfEntities -// #define FN_GetInfoKeyBuffer GetInfoKeyBuffer -// #define FN_InfoKeyValue InfoKeyValue -// #define FN_SetKeyValue SetKeyValue -// #define FN_SetClientKeyValue SetClientKeyValue -// #define FN_IsMapValid IsMapValid -// #define FN_StaticDecal StaticDecal -// #define FN_PrecacheGeneric PrecacheGeneric -// #define FN_GetPlayerUserId GetPlayerUserId -// #define FN_BuildSoundMsg BuildSoundMsg -// #define FN_IsDedicatedServer IsDedicatedServer -// #define FN_CVarGetPointer CVarGetPointer -// #define FN_GetPlayerWONId GetPlayerWONId -// #define FN_Info_RemoveKey Info_RemoveKey -// #define FN_GetPhysicsKeyValue GetPhysicsKeyValue -// #define FN_SetPhysicsKeyValue SetPhysicsKeyValue -// #define FN_GetPhysicsInfoString GetPhysicsInfoString -// #define FN_PrecacheEvent PrecacheEvent -// #define FN_PlaybackEvent PlaybackEvent -// #define FN_SetFatPVS SetFatPVS -// #define FN_SetFatPAS SetFatPAS -// #define FN_CheckVisibility CheckVisibility -// #define FN_DeltaSetField DeltaSetField -// #define FN_DeltaUnsetField DeltaUnsetField -// #define FN_DeltaAddEncoder DeltaAddEncoder -// #define FN_GetCurrentPlayer GetCurrentPlayer -// #define FN_CanSkipPlayer CanSkipPlayer -// #define FN_DeltaFindField DeltaFindField -// #define FN_DeltaSetFieldByIndex DeltaSetFieldByIndex -// #define FN_DeltaUnsetFieldByIndex DeltaUnsetFieldByIndex -// #define FN_SetGroupMask SetGroupMask -// #define FN_engCreateInstancedBaseline engCreateInstancedBaseline -// #define FN_Cvar_DirectSet Cvar_DirectSet -// #define FN_ForceUnmodified ForceUnmodified -// #define FN_GetPlayerStats GetPlayerStats -// #define FN_AddServerCommand AddServerCommand -// #define FN_Voice_GetClientListening Voice_GetClientListening -// #define FN_Voice_SetClientListening Voice_SetClientListening -// #define FN_GetPlayerAuthId GetPlayerAuthId - -// - GetEngineAPI_Post functions -// #define FN_PrecacheModel_Post PrecacheModel_Post -// #define FN_PrecacheSound_Post PrecacheSound_Post -// #define FN_SetModel_Post SetModel_Post -// #define FN_ModelIndex_Post ModelIndex_Post -// #define FN_ModelFrames_Post ModelFrames_Post -// #define FN_SetSize_Post SetSize_Post -// #define FN_ChangeLevel_Post ChangeLevel_Post -// #define FN_GetSpawnParms_Post GetSpawnParms_Post -// #define FN_SaveSpawnParms_Post SaveSpawnParms_Post -// #define FN_VecToYaw_Post VecToYaw_Post -// #define FN_VecToAngles_Post VecToAngles_Post -// #define FN_MoveToOrigin_Post MoveToOrigin_Post -// #define FN_ChangeYaw_Post ChangeYaw_Post -// #define FN_ChangePitch_Post ChangePitch_Post -// #define FN_FindEntityByString_Post FindEntityByString_Post -// #define FN_GetEntityIllum_Post GetEntityIllum_Post -// #define FN_FindEntityInSphere_Post FindEntityInSphere_Post -// #define FN_FindClientInPVS_Post FindClientInPVS_Post -// #define FN_EntitiesInPVS_Post EntitiesInPVS_Post -// #define FN_MakeVectors_Post MakeVectors_Post -// #define FN_AngleVectors_Post AngleVectors_Post -// #define FN_CreateEntity_Post CreateEntity_Post -// #define FN_RemoveEntity_Post RemoveEntity_Post -// #define FN_CreateNamedEntity_Post CreateNamedEntity_Post -// #define FN_MakeStatic_Post MakeStatic_Post -// #define FN_EntIsOnFloor_Post EntIsOnFloor_Post -// #define FN_DropToFloor_Post DropToFloor_Post -// #define FN_WalkMove_Post WalkMove_Post -// #define FN_SetOrigin_Post SetOrigin_Post -// #define FN_EmitSound_Post EmitSound_Post -// #define FN_EmitAmbientSound_Post EmitAmbientSound_Post -// #define FN_TraceLine_Post TraceLine_Post -// #define FN_TraceToss_Post TraceToss_Post -// #define FN_TraceMonsterHull_Post TraceMonsterHull_Post -// #define FN_TraceHull_Post TraceHull_Post -// #define FN_TraceModel_Post TraceModel_Post -// #define FN_TraceTexture_Post TraceTexture_Post -// #define FN_TraceSphere_Post TraceSphere_Post -// #define FN_GetAimVector_Post GetAimVector_Post -// #define FN_ServerCommand_Post ServerCommand_Post -// #define FN_ServerExecute_Post ServerExecute_Post -// #define FN_engClientCommand_Post engClientCommand_Post -// #define FN_ParticleEffect_Post ParticleEffect_Post -// #define FN_LightStyle_Post LightStyle_Post -// #define FN_DecalIndex_Post DecalIndex_Post -// #define FN_PointContents_Post PointContents_Post -// #define FN_MessageBegin_Post MessageBegin_Post -// #define FN_MessageEnd_Post MessageEnd_Post -// #define FN_WriteByte_Post WriteByte_Post -// #define FN_WriteChar_Post WriteChar_Post -// #define FN_WriteShort_Post WriteShort_Post -// #define FN_WriteLong_Post WriteLong_Post -// #define FN_WriteAngle_Post WriteAngle_Post -// #define FN_WriteCoord_Post WriteCoord_Post -// #define FN_WriteString_Post WriteString_Post -// #define FN_WriteEntity_Post WriteEntity_Post -// #define FN_CVarRegister_Post CVarRegister_Post -// #define FN_CVarGetFloat_Post CVarGetFloat_Post -// #define FN_CVarGetString_Post CVarGetString_Post -// #define FN_CVarSetFloat_Post CVarSetFloat_Post -// #define FN_CVarSetString_Post CVarSetString_Post -// #define FN_AlertMessage_Post AlertMessage_Post -// #define FN_EngineFprintf_Post EngineFprintf_Post -// #define FN_PvAllocEntPrivateData_Post PvAllocEntPrivateData_Post -// #define FN_PvEntPrivateData_Post PvEntPrivateData_Post -// #define FN_FreeEntPrivateData_Post FreeEntPrivateData_Post -// #define FN_SzFromIndex_Post SzFromIndex_Post -// #define FN_AllocString_Post AllocString_Post -// #define FN_GetVarsOfEnt_Post GetVarsOfEnt_Post -// #define FN_PEntityOfEntOffset_Post PEntityOfEntOffset_Post -// #define FN_EntOffsetOfPEntity_Post EntOffsetOfPEntity_Post -// #define FN_IndexOfEdict_Post IndexOfEdict_Post -// #define FN_PEntityOfEntIndex_Post PEntityOfEntIndex_Post -// #define FN_FindEntityByVars_Post FindEntityByVars_Post -// #define FN_GetModelPtr_Post GetModelPtr_Post -// #define FN_RegUserMsg_Post RegUserMsg_Post -// #define FN_AnimationAutomove_Post AnimationAutomove_Post -// #define FN_GetBonePosition_Post GetBonePosition_Post -// #define FN_FunctionFromName_Post FunctionFromName_Post -// #define FN_NameForFunction_Post NameForFunction_Post -// #define FN_ClientPrintf_Post ClientPrintf_Post -// #define FN_ServerPrint_Post ServerPrint_Post -// #define FN_Cmd_Args_Post Cmd_Args_Post -// #define FN_Cmd_Argv_Post Cmd_Argv_Post -// #define FN_Cmd_Argc_Post Cmd_Argc_Post -// #define FN_GetAttachment_Post GetAttachment_Post -// #define FN_CRC32_Init_Post CRC32_Init_Post -// #define FN_CRC32_ProcessBuffer_Post CRC32_ProcessBuffer_Post -// #define FN_CRC32_ProcessByte_Post CRC32_ProcessByte_Post -// #define FN_CRC32_Final_Post CRC32_Final_Post -// #define FN_RandomLong_Post RandomLong_Post -// #define FN_RandomFloat_Post RandomFloat_Post -// #define FN_SetView_Post SetView_Post -// #define FN_Time_Post Time_Post -// #define FN_CrosshairAngle_Post CrosshairAngle_Post -// #define FN_LoadFileForMe_Post LoadFileForMe_Post -// #define FN_FreeFile_Post FreeFile_Post -// #define FN_EndSection_Post EndSection_Post -// #define FN_CompareFileTime_Post CompareFileTime_Post -// #define FN_GetGameDir_Post GetGameDir_Post -// #define FN_Cvar_RegisterVariable_Post Cvar_RegisterVariable_Post -// #define FN_FadeClientVolume_Post FadeClientVolume_Post -// #define FN_SetClientMaxspeed_Post SetClientMaxspeed_Post -// #define FN_CreateFakeClient_Post CreateFakeClient_Post -// #define FN_RunPlayerMove_Post RunPlayerMove_Post -// #define FN_NumberOfEntities_Post NumberOfEntities_Post -// #define FN_GetInfoKeyBuffer_Post GetInfoKeyBuffer_Post -// #define FN_InfoKeyValue_Post InfoKeyValue_Post -// #define FN_SetKeyValue_Post SetKeyValue_Post -// #define FN_SetClientKeyValue_Post SetClientKeyValue_Post -// #define FN_IsMapValid_Post IsMapValid_Post -// #define FN_StaticDecal_Post StaticDecal_Post -// #define FN_PrecacheGeneric_Post PrecacheGeneric_Post -// #define FN_GetPlayerUserId_Post GetPlayerUserId_Post -// #define FN_BuildSoundMsg_Post BuildSoundMsg_Post -// #define FN_IsDedicatedServer_Post IsDedicatedServer_Post -// #define FN_CVarGetPointer_Post CVarGetPointer_Post -// #define FN_GetPlayerWONId_Post GetPlayerWONId_Post -// #define FN_Info_RemoveKey_Post Info_RemoveKey_Post -// #define FN_GetPhysicsKeyValue_Post GetPhysicsKeyValue_Post -// #define FN_SetPhysicsKeyValue_Post SetPhysicsKeyValue_Post -// #define FN_GetPhysicsInfoString_Post GetPhysicsInfoString_Post -// #define FN_PrecacheEvent_Post PrecacheEvent_Post -// #define FN_PlaybackEvent_Post PlaybackEvent_Post -// #define FN_SetFatPVS_Post SetFatPVS_Post -// #define FN_SetFatPAS_Post SetFatPAS_Post -// #define FN_CheckVisibility_Post CheckVisibility_Post -// #define FN_DeltaSetField_Post DeltaSetField_Post -// #define FN_DeltaUnsetField_Post DeltaUnsetField_Post -// #define FN_DeltaAddEncoder_Post DeltaAddEncoder_Post -// #define FN_GetCurrentPlayer_Post GetCurrentPlayer_Post -// #define FN_CanSkipPlayer_Post CanSkipPlayer_Post -// #define FN_DeltaFindField_Post DeltaFindField_Post -// #define FN_DeltaSetFieldByIndex_Post DeltaSetFieldByIndex_Post -// #define FN_DeltaUnsetFieldByIndex_Post DeltaUnsetFieldByIndex_Post -// #define FN_SetGroupMask_Post SetGroupMask_Post -// #define FN_engCreateInstancedBaseline_Post engCreateInstancedBaseline_Post -// #define FN_Cvar_DirectSet_Post Cvar_DirectSet_Post -// #define FN_ForceUnmodified_Post ForceUnmodified_Post -// #define FN_GetPlayerStats_Post GetPlayerStats_Post -// #define FN_AddServerCommand_Post AddServerCommand_Post -// #define FN_Voice_GetClientListening_Post Voice_GetClientListening_Post -// #define FN_Voice_SetClientListening_Post Voice_SetClientListening_Post -// #define FN_GetPlayerAuthId_Post GetPlayerAuthId_Post - -// #define FN_OnFreeEntPrivateData OnFreeEntPrivateData -// #define FN_GameShutdown GameShutdown -// #define FN_ShouldCollide ShouldCollide - -// #define FN_OnFreeEntPrivateData_Post OnFreeEntPrivateData_Post -// #define FN_GameShutdown_Post GameShutdown_Post -// #define FN_ShouldCollide_Post ShouldCollide_Post - - -#endif // USE_METAMOD - -#endif // __MODULECONFIG_H__ - diff --git a/dlls/arrayx/osdefs.h b/dlls/arrayx/osdefs.h deleted file mode 100644 index 60d61e68..00000000 --- a/dlls/arrayx/osdefs.h +++ /dev/null @@ -1,60 +0,0 @@ -/* __MSDOS__ set when compiling for DOS (not Windows) - * _Windows set when compiling for any version of Microsoft Windows - * __WIN32__ set when compiling for Windows95 or WindowsNT (32 bit mode) - * __32BIT__ set when compiling in 32-bit "flat" mode (DOS or Windows) - * - * Copyright 1998-2002, ITB CompuPhase, The Netherlands. - * info@compuphase.com. - */ - -#ifndef _OSDEFS_H -#define _OSDEFS_H - -/* Every compiler uses different "default" macros to indicate the mode - * it is in. Throughout the source, we use the Borland C++ macros, so - * the macros of Watcom C/C++ and Microsoft Visual C/C++ are mapped to - * those of Borland C++. - */ -#if defined(__WATCOMC__) -# if defined(__WINDOWS__) || defined(__NT__) -# define _Windows 1 -# endif -# ifdef __386__ -# define __32BIT__ 1 -# endif -# if defined(_Windows) && defined(__32BIT__) -# define __WIN32__ 1 -# endif -#elif defined(_MSC_VER) -# if defined(_WINDOWS) || defined(_WIN32) -# define _Windows 1 -# endif -# ifdef _WIN32 -# define __WIN32__ 1 -# define __32BIT__ 1 -# endif -#endif - -#if defined __linux__ - #include -#endif - -/* Linux NOW has these */ -#if !defined BIG_ENDIAN - #define BIG_ENDIAN 4321 -#endif -#if !defined LITTLE_ENDIAN - #define LITTLE_ENDIAN 1234 -#endif - -/* educated guess, BYTE_ORDER is undefined, i386 is common => little endian */ -#if !defined BYTE_ORDER - #if defined UCLINUX - #define BYTE_ORDER BIG_ENDIAN - #else - #define BYTE_ORDER LITTLE_ENDIAN - #endif -#endif - -#endif /* _OSDEFS_H */ -