コード例 #1
0
            /// <summary>
            /// Constructor.
            /// </summary>
            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);
            }
コード例 #2
0
            /// <summary>
            /// Constructor.
            /// </summary>
            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);
            }