All 5 phases of the open-source Decal rebuild: Phase 1: 14 decompiled .NET projects (Interop.*, Adapter, FileService, DecalUtil) Phase 2: 10 native DLLs rewritten as C# COM servers with matching GUIDs - DecalDat, DHS, SpellFilter, DecalInput, DecalNet, DecalFilters - Decal.Core, DecalControls, DecalRender, D3DService Phase 3: C++ shims for Inject.DLL (D3D9 hooking) and LauncherHook.DLL Phase 4: DenAgent WinForms tray application Phase 5: WiX installer and build script 25 C# projects building with 0 errors. Native C++ projects require VS 2022 + Windows SDK (x86). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
104 lines
No EOL
1.3 KiB
C++
104 lines
No EOL
1.3 KiB
C++
extern void (*pfnOldChatMessage)(char*, unsigned long);
|
|
extern void (*pfnOldChatText)(void);
|
|
|
|
bool DispatchChatMessage ( char *pText, long *pdwColor );
|
|
bool DispatchChatText ( char *pText );
|
|
|
|
void __declspec(naked) OnChatMessage(char* pText, long dwColor)
|
|
{
|
|
/* __asm
|
|
{
|
|
//int 3
|
|
|
|
push ecx
|
|
push esi
|
|
|
|
lea esi, dwColor
|
|
push esi
|
|
push pText
|
|
call DispatchChatMessage
|
|
|
|
// Pop the two arguments
|
|
add esp, 8
|
|
|
|
test al, al
|
|
jz dont_kill_text
|
|
|
|
mov esi, pText
|
|
mov BYTE PTR [esi], 0
|
|
|
|
dont_kill_text:
|
|
pop esi
|
|
pop ecx
|
|
|
|
jmp pfnOldChatMessage
|
|
}*/
|
|
|
|
__asm
|
|
{
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 20h
|
|
push esi
|
|
|
|
push ecx
|
|
|
|
lea esi, dwColor
|
|
push esi
|
|
push pText
|
|
call DispatchChatMessage
|
|
|
|
add esp, 8
|
|
|
|
test al, al
|
|
jz dont_kill_text
|
|
|
|
mov DWORD PTR [pText], 0
|
|
|
|
dont_kill_text:
|
|
|
|
pop ecx
|
|
|
|
push dwColor
|
|
push pText
|
|
call pfnOldChatMessage
|
|
|
|
pop esi
|
|
mov esp, ebp
|
|
pop ebp
|
|
retn 8
|
|
}
|
|
}
|
|
|
|
void __declspec(naked) OnChatText()
|
|
{
|
|
__asm
|
|
{
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 0xC
|
|
|
|
call pfnOldChatText
|
|
|
|
mov [ebp-4], ecx
|
|
mov [ebp-8], eax
|
|
|
|
push eax
|
|
|
|
call DispatchChatText
|
|
|
|
mov edx, eax
|
|
mov ecx, [ebp-4]
|
|
mov eax, [ebp-8]
|
|
|
|
test dl, dl
|
|
jz dont_eat_chat_text
|
|
|
|
mov BYTE PTR [eax], 0
|
|
|
|
dont_eat_chat_text:
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret
|
|
}
|
|
} |