Ok since many people have reported that after they install E[POD]bot the AMX sounds and some menues are disabled, I start to looking for a way to fix that. So I try the old version of RACC that too load metamod and there is no problem with it, all sounds and menues are in place but when E[POD]bot load metamod the sounds and some menues are gone. So I start to think that is from the GiveFnptrsToDll() function but I can't understand where I wrong. If you can help me? Here the function :
Code:
void WINAPI GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals )
{
// get the engine functions from the engine...
memcpy(&g_engfuncs, pengfuncsFromEngine, sizeof(enginefuncs_t));
gpGlobals = pGlobals;
#ifndef __linux__
// This is the new metamod support.
// metamod.dll will be loaded instead of mp.dll if it exists.
// Metamod then will run and load mp.dll, the normal CS-Game-DLL
// It has to be in "default" folder "addons/metamod/dlls/metamod.dll"
// see if metamod exists
if (FileExists (METAMOD_DLL)) //if it exists, load metamod as game DLL (it will load the cs game dll for us)
h_Library = LoadLibrary (METAMOD_DLL);// if so, load the metamod DLL
else //else load normal CS-DLL
h_Library = LoadLibrary (CS_DLL); // else, load the official game DLL
#else
h_Library = dlopen("cstrike/dlls/cs_i386.so", RTLD_NOW);
#endif
if (!h_Library)
{
// Directory error or Unsupported MOD!
ALERT( at_error, "E[POD]bot couldn't find the CounterStrike DLL!" );
fp=fopen("PODERROR.txt","a"); fprintf(fp, "E[POD]bot couldn't find the CounterStrike DLL!\n"); fclose(fp);
}
#ifndef __linux__
h_global_argv = GlobalAlloc(GMEM_SHARE, 1024);
g_argv = (char *)GlobalLock(h_global_argv);
#else
g_argv = (char *)h_global_argv;
#endif
other_GetEntityAPI = (GETENTITYAPI)GetProcAddress(h_Library, "GetEntityAPI");
other_GetNewDLLFunctions = (GETNEWDLLFUNCTIONS)GetProcAddress(h_Library, "GetNewDLLFunctions");
other_GiveFnptrsToDll = (GIVEFNPTRSTODLL)GetProcAddress(h_Library, "GiveFnptrsToDll");
#ifdef _WIN32
LoadSymbols (CS_DLL); // Load exported symbol table
pengfuncsFromEngine->pfnFunctionFromName = pfnFunctionFromName;
pengfuncsFromEngine->pfnNameForFunction = pfnNameForFunction;
#endif
// for engine testing
pengfuncsFromEngine->pfnCmd_Args = pfnCmd_Args;
pengfuncsFromEngine->pfnCmd_Argv = pfnCmd_Argv;
pengfuncsFromEngine->pfnCmd_Argc = pfnCmd_Argc;
pengfuncsFromEngine->pfnPrecacheModel = pfnPrecacheModel;
pengfuncsFromEngine->pfnPrecacheSound = pfnPrecacheSound;
pengfuncsFromEngine->pfnSetModel = pfnSetModel;
pengfuncsFromEngine->pfnModelIndex = pfnModelIndex;
pengfuncsFromEngine->pfnModelFrames = pfnModelFrames;
pengfuncsFromEngine->pfnSetSize = pfnSetSize;
pengfuncsFromEngine->pfnChangeLevel = pfnChangeLevel;
pengfuncsFromEngine->pfnGetSpawnParms = pfnGetSpawnParms;
pengfuncsFromEngine->pfnSaveSpawnParms = pfnSaveSpawnParms;
pengfuncsFromEngine->pfnVecToYaw = pfnVecToYaw;
pengfuncsFromEngine->pfnVecToAngles = pfnVecToAngles;
pengfuncsFromEngine->pfnMoveToOrigin = pfnMoveToOrigin;
pengfuncsFromEngine->pfnChangeYaw = pfnChangeYaw;
pengfuncsFromEngine->pfnChangePitch = pfnChangePitch;
pengfuncsFromEngine->pfnFindEntityByString = pfnFindEntityByString;
pengfuncsFromEngine->pfnGetEntityIllum = pfnGetEntityIllum;
pengfuncsFromEngine->pfnFindEntityInSphere = pfnFindEntityInSphere;
pengfuncsFromEngine->pfnFindClientInPVS = pfnFindClientInPVS;
pengfuncsFromEngine->pfnEntitiesInPVS = pfnEntitiesInPVS;
pengfuncsFromEngine->pfnMakeVectors = pfnMakeVectors;
pengfuncsFromEngine->pfnAngleVectors = pfnAngleVectors;
pengfuncsFromEngine->pfnCreateEntity = pfnCreateEntity;
pengfuncsFromEngine->pfnRemoveEntity = pfnRemoveEntity;
pengfuncsFromEngine->pfnCreateNamedEntity = pfnCreateNamedEntity;
pengfuncsFromEngine->pfnMakeStatic = pfnMakeStatic;
pengfuncsFromEngine->pfnEntIsOnFloor = pfnEntIsOnFloor;
pengfuncsFromEngine->pfnDropToFloor = pfnDropToFloor;
pengfuncsFromEngine->pfnWalkMove = pfnWalkMove;
pengfuncsFromEngine->pfnSetOrigin = pfnSetOrigin;
pengfuncsFromEngine->pfnEmitSound = pfnEmitSound;
pengfuncsFromEngine->pfnEmitAmbientSound = pfnEmitAmbientSound;
pengfuncsFromEngine->pfnTraceLine = pfnTraceLine;
pengfuncsFromEngine->pfnTraceToss = pfnTraceToss;
pengfuncsFromEngine->pfnTraceMonsterHull = pfnTraceMonsterHull;
pengfuncsFromEngine->pfnTraceHull = pfnTraceHull;
pengfuncsFromEngine->pfnTraceModel = pfnTraceModel;
pengfuncsFromEngine->pfnTraceTexture = pfnTraceTexture;
pengfuncsFromEngine->pfnTraceSphere = pfnTraceSphere;
pengfuncsFromEngine->pfnGetAimVector = pfnGetAimVector;
pengfuncsFromEngine->pfnServerCommand = pfnServerCommand;
pengfuncsFromEngine->pfnServerExecute = pfnServerExecute;
pengfuncsFromEngine->pfnClientCommand = pfnClientCommand;
pengfuncsFromEngine->pfnParticleEffect = pfnParticleEffect;
pengfuncsFromEngine->pfnLightStyle = pfnLightStyle;
pengfuncsFromEngine->pfnDecalIndex = pfnDecalIndex;
pengfuncsFromEngine->pfnPointContents = pfnPointContents;
pengfuncsFromEngine->pfnMessageBegin = pfnMessageBegin;
pengfuncsFromEngine->pfnMessageEnd = pfnMessageEnd;
pengfuncsFromEngine->pfnWriteByte = pfnWriteByte;
pengfuncsFromEngine->pfnWriteChar = pfnWriteChar;
pengfuncsFromEngine->pfnWriteShort = pfnWriteShort;
pengfuncsFromEngine->pfnWriteLong = pfnWriteLong;
pengfuncsFromEngine->pfnWriteAngle = pfnWriteAngle;
pengfuncsFromEngine->pfnWriteCoord = pfnWriteCoord;
pengfuncsFromEngine->pfnWriteString = pfnWriteString;
pengfuncsFromEngine->pfnWriteEntity = pfnWriteEntity;
pengfuncsFromEngine->pfnCVarRegister = pfnCVarRegister;
pengfuncsFromEngine->pfnCVarGetFloat = pfnCVarGetFloat;
pengfuncsFromEngine->pfnCVarGetString = pfnCVarGetString;
pengfuncsFromEngine->pfnCVarSetFloat = pfnCVarSetFloat;
pengfuncsFromEngine->pfnCVarSetString = pfnCVarSetString;
pengfuncsFromEngine->pfnPvAllocEntPrivateData = pfnPvAllocEntPrivateData;
pengfuncsFromEngine->pfnPvEntPrivateData = pfnPvEntPrivateData;
pengfuncsFromEngine->pfnFreeEntPrivateData = pfnFreeEntPrivateData;
pengfuncsFromEngine->pfnSzFromIndex = pfnSzFromIndex;
pengfuncsFromEngine->pfnAllocString = pfnAllocString;
pengfuncsFromEngine->pfnGetVarsOfEnt = pfnGetVarsOfEnt;
pengfuncsFromEngine->pfnPEntityOfEntOffset = pfnPEntityOfEntOffset;
pengfuncsFromEngine->pfnEntOffsetOfPEntity = pfnEntOffsetOfPEntity;
pengfuncsFromEngine->pfnIndexOfEdict = pfnIndexOfEdict;
pengfuncsFromEngine->pfnPEntityOfEntIndex = pfnPEntityOfEntIndex;
pengfuncsFromEngine->pfnFindEntityByVars = pfnFindEntityByVars;
pengfuncsFromEngine->pfnGetModelPtr = pfnGetModelPtr;
pengfuncsFromEngine->pfnRegUserMsg = pfnRegUserMsg;
pengfuncsFromEngine->pfnAnimationAutomove = pfnAnimationAutomove;
pengfuncsFromEngine->pfnGetBonePosition = pfnGetBonePosition;
pengfuncsFromEngine->pfnClientPrintf = pfnClientPrintf;
pengfuncsFromEngine->pfnServerPrint = pfnServerPrint;
pengfuncsFromEngine->pfnGetAttachment = pfnGetAttachment;
pengfuncsFromEngine->pfnCRC32_Init = pfnCRC32_Init;
pengfuncsFromEngine->pfnCRC32_ProcessBuffer = pfnCRC32_ProcessBuffer;
pengfuncsFromEngine->pfnCRC32_ProcessByte = pfnCRC32_ProcessByte;
pengfuncsFromEngine->pfnCRC32_Final = pfnCRC32_Final;
pengfuncsFromEngine->pfnRandomLong = pfnRandomLong;
pengfuncsFromEngine->pfnRandomFloat = pfnRandomFloat;
pengfuncsFromEngine->pfnSetView = pfnSetView;
pengfuncsFromEngine->pfnTime = pfnTime;
pengfuncsFromEngine->pfnCrosshairAngle = pfnCrosshairAngle;
pengfuncsFromEngine->pfnLoadFileForMe = pfnLoadFileForMe;
pengfuncsFromEngine->pfnFreeFile = pfnFreeFile;
pengfuncsFromEngine->pfnEndSection = pfnEndSection;
pengfuncsFromEngine->pfnCompareFileTime = pfnCompareFileTime;
pengfuncsFromEngine->pfnGetGameDir = pfnGetGameDir;
pengfuncsFromEngine->pfnCvar_RegisterVariable = pfnCvar_RegisterVariable;
pengfuncsFromEngine->pfnFadeClientVolume = pfnFadeClientVolume;
pengfuncsFromEngine->pfnSetClientMaxspeed = pfnSetClientMaxspeed;
pengfuncsFromEngine->pfnCreateFakeClient = pfnCreateFakeClient;
pengfuncsFromEngine->pfnRunPlayerMove = pfnRunPlayerMove;
pengfuncsFromEngine->pfnNumberOfEntities = pfnNumberOfEntities;
pengfuncsFromEngine->pfnGetInfoKeyBuffer = pfnGetInfoKeyBuffer;
pengfuncsFromEngine->pfnInfoKeyValue = pfnInfoKeyValue;
pengfuncsFromEngine->pfnSetKeyValue = pfnSetKeyValue;
pengfuncsFromEngine->pfnSetClientKeyValue = pfnSetClientKeyValue;
pengfuncsFromEngine->pfnIsMapValid = pfnIsMapValid;
pengfuncsFromEngine->pfnStaticDecal = pfnStaticDecal;
pengfuncsFromEngine->pfnPrecacheGeneric = pfnPrecacheGeneric;
pengfuncsFromEngine->pfnGetPlayerUserId = pfnGetPlayerUserId;
pengfuncsFromEngine->pfnBuildSoundMsg = pfnBuildSoundMsg;
pengfuncsFromEngine->pfnIsDedicatedServer = pfnIsDedicatedServer;
pengfuncsFromEngine->pfnCVarGetPointer = pfnCVarGetPointer;
pengfuncsFromEngine->pfnGetPlayerWONId = pfnGetPlayerWONId;
// end engine testing
// give the engine functions to the other DLL...
(*other_GiveFnptrsToDll)(pengfuncsFromEngine, pGlobals);
}