internal CampaignDatabaseHook()
{
if (!ALFA.SystemInfo.IsRunningInNWN2Server())
{
Logger.Log("CampaignDatabaseHook.CampaignDatabaseHook: Not running in NWN2SERVER.EXE, disabling campaign database integration.");
return;
}
//
// Create delegates.
//
CCodeBase_GetBinaryData_HookDelegate = new CCodeBase_GetBinaryData(GetBinaryDataHook);
CCodeBase_AddBinaryData_HookDelegate = new CCodeBase_AddBinaryData(AddBinaryDataHook);
CCodeBase_GetBinaryData_OriginalDelegate = (CCodeBase_GetBinaryData)Marshal.GetDelegateForFunctionPointer(CCodeBase_GetBinaryData_Offset, typeof(CCodeBase_GetBinaryData));
CCodeBase_AddBinaryData_OriginalDelegate = (CCodeBase_AddBinaryData)Marshal.GetDelegateForFunctionPointer(CCodeBase_AddBinaryData_Offset, typeof(CCodeBase_AddBinaryData));
//
// Install hooks.
//
GetBinaryDataPatch = new CodePatch(
ServerInterop.CCodeBase_GetBinaryData_Call,
Marshal.GetFunctionPointerForDelegate(CCodeBase_GetBinaryData_HookDelegate),
true);
AddBinaryDataPatch = new CodePatch(
ServerInterop.CCodeBase_AddBinaryData_Call,
Marshal.GetFunctionPointerForDelegate(CCodeBase_AddBinaryData_HookDelegate),
true);
}