Initial commit: Complete open-source Decal rebuild
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>
This commit is contained in:
commit
d1442e3747
1382 changed files with 170725 additions and 0 deletions
355
Native/Decal/ACHooks.h
Normal file
355
Native/Decal/ACHooks.h
Normal file
|
|
@ -0,0 +1,355 @@
|
|||
// ACHooks.h: Definition of the ACHooks class
|
||||
|
||||
#ifndef __ACHOOKS_H_
|
||||
#define __ACHOOKS_H_
|
||||
|
||||
|
||||
#include "resource.h" // main symbols
|
||||
#include "Decal.h"
|
||||
#include "DecalManager.h"
|
||||
#include "DecalCP.h"
|
||||
|
||||
// the public key to unencrypt xmls
|
||||
#include "..\include\DecalKey.h"
|
||||
|
||||
// .NET vs VC6.0 Compiler Config
|
||||
#if _MSC_VER > 1200 // .NET
|
||||
#import "..\Include\Inject.tlb"
|
||||
#define IPSite DecalPlugins::IPluginSite
|
||||
#else // Not .Net
|
||||
#include "..\inject\Inject.h"
|
||||
#define IPSite IPluginSite
|
||||
#endif
|
||||
|
||||
struct sMemoryLocation
|
||||
{
|
||||
std::string Name;
|
||||
long Location;
|
||||
};
|
||||
|
||||
// qString struct for internal client strings - this is all cynica_l's work
|
||||
struct qString
|
||||
{
|
||||
void **vTable;
|
||||
char *Data;
|
||||
long MaximumLength;
|
||||
};
|
||||
|
||||
struct qSkill {
|
||||
long vTable;
|
||||
enum eTrainLevel Trained;
|
||||
int TotalXP;
|
||||
int FreePoints;
|
||||
int Clicks;
|
||||
int unk1;
|
||||
int unk2; /* float? percent of total? */
|
||||
float unk3;
|
||||
};
|
||||
|
||||
struct qVital {
|
||||
long vTable;
|
||||
int Clicks;
|
||||
int unk1;
|
||||
int TotalXP;
|
||||
int unk2;
|
||||
};
|
||||
|
||||
struct qAttribute {
|
||||
long vTable;
|
||||
int Clicks;
|
||||
int Start;
|
||||
int TotalXP;
|
||||
};
|
||||
|
||||
struct qPointerList
|
||||
{
|
||||
qPointerList *dd[1];
|
||||
};
|
||||
|
||||
extern "C" bool DispatchChatMessage( char *pText, long *pdwColor );
|
||||
extern "C" bool DispatchChatText( char *pText );
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// ACHooks
|
||||
class ATL_NO_VTABLE cACHooks :
|
||||
public CComObjectRoot,
|
||||
public CComCoClass<cACHooks,&CLSID_ACHooks>,
|
||||
public IConnectionPointContainerImpl<cACHooks>,
|
||||
public IDispatchImpl<IACHooks, &IID_IACHooks, &LIBID_Decal>,
|
||||
public CProxyIACHooksEvents< cACHooks >
|
||||
{
|
||||
public:
|
||||
cACHooks();
|
||||
~cACHooks();
|
||||
|
||||
DECLARE_REGISTRY_RESOURCEID(IDR_ACHooks)
|
||||
|
||||
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
||||
|
||||
BEGIN_COM_MAP(cACHooks)
|
||||
COM_INTERFACE_ENTRY(IDispatch)
|
||||
COM_INTERFACE_ENTRY(IACHooks)
|
||||
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
|
||||
END_COM_MAP()
|
||||
|
||||
BEGIN_CONNECTION_POINT_MAP(cACHooks)
|
||||
CONNECTION_POINT_ENTRY(DIID_IACHooksEvents)
|
||||
END_CONNECTION_POINT_MAP()
|
||||
|
||||
private:
|
||||
long* GetCs(long offs=0) ;
|
||||
void DecryptXML( const char *szPath, std::string &szXML );
|
||||
|
||||
long m_Hooks ;
|
||||
typedef std::map< std::string, sMemoryLocation > LocMap;
|
||||
LocMap m_mLocationList;
|
||||
|
||||
bool m_bDecalRef;
|
||||
bool m_bIdQueueRef;
|
||||
|
||||
bool m_bMismatch;
|
||||
|
||||
bool m_bPrevSelect;
|
||||
long m_lPrevSelect[2];
|
||||
|
||||
bool m_bCurrentSelect;
|
||||
long m_lCurrentSelect[2];
|
||||
|
||||
bool m_bChatMessageAddy;
|
||||
long m_lChatMessageAddy;
|
||||
|
||||
bool m_bMouse;
|
||||
long m_lMouse[4];
|
||||
|
||||
bool m_bCastSpell;
|
||||
long m_lCastSpell;
|
||||
|
||||
bool m_bMoveItem;
|
||||
long m_lMoveItem;
|
||||
|
||||
bool m_bSelectItem;
|
||||
long m_lSelectItem;
|
||||
|
||||
bool m_bUseItem;
|
||||
long m_lUseItem;
|
||||
|
||||
bool m_bAllYourBase;
|
||||
long m_lAllYourBase;
|
||||
bool m_bSetCombatState;
|
||||
long m_lSetCombatState;
|
||||
bool m_bCombatStateOffset;
|
||||
long m_lCombatStateOffset;
|
||||
|
||||
bool m_bChatState;
|
||||
long m_lChatState;
|
||||
|
||||
bool m_bRequestID;
|
||||
long m_lRequestID;
|
||||
|
||||
bool m_bStackCount;
|
||||
long m_lStackCount;
|
||||
|
||||
bool m_bTestFormula;
|
||||
long m_lTestFormula;
|
||||
long m_lTestFormulaVTable;
|
||||
|
||||
bool m_bVendorID;
|
||||
long m_lVendorID;
|
||||
|
||||
bool m_bBusyState;
|
||||
long m_lBusyState;
|
||||
bool m_bBusyStateID;
|
||||
long m_lBusyStateID;
|
||||
|
||||
bool m_bPointerState;
|
||||
long m_lPointerState;
|
||||
|
||||
bool m_bMoveItemEx;
|
||||
long m_lMoveItemEx;
|
||||
|
||||
bool m_bArea3DWidth;
|
||||
long *m_lpArea3DWidth;
|
||||
|
||||
bool m_bArea3DHeight;
|
||||
long *m_lpArea3DHeight;
|
||||
|
||||
bool m_bObjectFromGuid;
|
||||
long m_lObjectFromGuid;
|
||||
long m_lObjectFromGuidClass;
|
||||
|
||||
bool m_bFaceHeading;
|
||||
|
||||
long m_lMovementThingyParent;
|
||||
long m_lMovementThingyOffset;
|
||||
long m_lFaceHeading;
|
||||
|
||||
bool m_bSetAutorun;
|
||||
long m_lSetAutorun;
|
||||
|
||||
bool m_bInternalStringConstructor;
|
||||
bool m_bInternalStringDestructor;
|
||||
bool m_bSendMessageToID;
|
||||
bool m_bSendMessageToName;
|
||||
bool m_bSendMessageToMask;
|
||||
bool m_bLocalChatText;
|
||||
bool m_bLocalChatEmote;
|
||||
|
||||
long m_lInternalStringConstructor;
|
||||
long m_lInternalStringDestructor;
|
||||
long m_lSendMessageToID;
|
||||
long m_lSendMessageToName;
|
||||
long m_lSendMessageToMask;
|
||||
long m_lLocalChatText;
|
||||
long m_lLocalChatEmote;
|
||||
|
||||
long m_lVitalBase;
|
||||
|
||||
bool m_bGetVital;
|
||||
long m_lGetVital;
|
||||
|
||||
bool m_bGetAttribute;
|
||||
long m_lGetAttribute;
|
||||
|
||||
bool m_bGetSkill;
|
||||
long m_lGetSkill;
|
||||
|
||||
bool m_bLogout;
|
||||
long m_lLogout;
|
||||
|
||||
bool m_bSecureTrade_Add;
|
||||
long m_lSecureTrade_Add;
|
||||
bool m_bSecureTrade_Add_Off1;
|
||||
long m_lSecureTrade_Add_Off1;
|
||||
bool m_bSecureTrade_Add_Off2;
|
||||
long m_lSecureTrade_Add_Off2;
|
||||
|
||||
bool m_bGetSkillInfo;
|
||||
long m_lGetSkillInfo, m_lGetSkillInfo_vT;
|
||||
bool m_bGetAttributeInfo;
|
||||
long m_lGetAttributeInfo, m_lGetAttributeInfo_vT;
|
||||
bool m_bGetVitalInfo;
|
||||
long m_lGetVitalInfo, m_lGetVitalInfo_vT;
|
||||
|
||||
bool m_bChatColor;
|
||||
long m_lChatColor;
|
||||
|
||||
bool m_bSelectItemHook;
|
||||
long m_lSelectItemHook;
|
||||
|
||||
bool m_bUstAddItem_Useable;
|
||||
long m_lUstAddItem;
|
||||
long m_lUstAddItem_Off1;
|
||||
long m_lUstAddItem_Off2;
|
||||
|
||||
bool m_bRequestShortcircuit;
|
||||
long m_lRequestShortcircuit1;
|
||||
long m_lRequestShortcircuit2;
|
||||
long m_lRequestShortcircuit3;
|
||||
|
||||
bool m_bToolTextHook;
|
||||
long m_lToolTextHJ;
|
||||
bool m_bToolText2Hook;
|
||||
long m_lToolText2HJ;
|
||||
|
||||
long m_lIdleLoc;
|
||||
bool m_bIdleLoc;
|
||||
|
||||
long m_lSlashDay;
|
||||
bool m_bSlashDay;
|
||||
|
||||
unsigned int m_HooksEx[1];
|
||||
unsigned int m_HookCount;
|
||||
|
||||
CComPtr< IDecal > m_pDecal;
|
||||
|
||||
public:
|
||||
static cACHooks* s_pACHooks;
|
||||
void InternalObjectDestroyed( DWORD dwGuid );
|
||||
void InternalSelectItem( DWORD dwID );
|
||||
void InternalShortcircuit( DWORD dwID );
|
||||
bool InternalChatText( char *szText );
|
||||
bool InternalChatMessage( char *szText, long lColor );
|
||||
void InternalToolText( char *szText, VARIANT_BOOL bError );
|
||||
void InternalToolTextAppend( char *szText, VARIANT_BOOL bError );
|
||||
|
||||
void SetHookEx(enum eAvailableHooksEx HookID);
|
||||
CComPtr< IKitchenSink > m_pIdQueue;
|
||||
|
||||
STDMETHOD(MoveItemEx)(long lObjectID, long lDestinationID);
|
||||
STDMETHOD(get_PointerState)(long *pVal);
|
||||
STDMETHOD(get_BusyStateID)(long *pVal);
|
||||
STDMETHOD(get_BusyState)(long *pVal);
|
||||
STDMETHOD(get_VendorID)(long *pVal);
|
||||
STDMETHOD(get_SelectedStackCount)(long lStackCount, long *pVal);
|
||||
STDMETHOD(put_SelectedStackCount)(long lStackCount, long newVal);
|
||||
STDMETHOD(GetFellowStats)(long lCharID);
|
||||
STDMETHOD(UseItemEx)(long UseThis, long OnThis);
|
||||
STDMETHOD(get_ChatState)(VARIANT_BOOL *pVal);
|
||||
STDMETHOD(get_CombatState)(long *pVal);
|
||||
STDMETHOD(SetCombatState)(long pVal);
|
||||
STDMETHOD(UseItem)(long lObjectID, long lUseState);
|
||||
STDMETHOD(UseItemRaw)(long lObjectID, long lUseState, long lUseMethod);
|
||||
STDMETHOD(UseFociSpell)(long UseThis, long OnThis);
|
||||
STDMETHOD(SelectItem)(long lObjectID);
|
||||
STDMETHOD(MoveItem)(long lObjectID, long lPackID, long lSlot, VARIANT_BOOL bStack);
|
||||
STDMETHOD(CastSpell)(long lSpellID, long lObjectID);
|
||||
STDMETHOD(SetCursorPosition)(long lX, long lY);
|
||||
STDMETHOD(RawChatOut)(BSTR szText, long lColor);
|
||||
STDMETHOD(ChatOut)(BSTR szText, long lColor);
|
||||
STDMETHOD(get_PreviousSelection)(long *pVal);
|
||||
STDMETHOD(put_PreviousSelection)(long newVal);
|
||||
STDMETHOD(get_CurrentSelection)(long *pVal);
|
||||
STDMETHOD(put_CurrentSelection)(long newVal);
|
||||
STDMETHOD(QueryMemLoc)(BSTR bstrName, long *pVal);
|
||||
STDMETHOD(get_Heading)(double *pVal);
|
||||
STDMETHOD(get_Landblock)(long *pVal);
|
||||
STDMETHOD(get_LocationX)(double *pVal);
|
||||
STDMETHOD(get_LocationY)(double *pVal);
|
||||
STDMETHOD(get_LocationZ)(double *pVal);
|
||||
STDMETHOD(DropItem)(long lObjectID);
|
||||
STDMETHOD(get_HooksAvail)(long *pVal) ;
|
||||
STDMETHOD(FaceHeading)(float fHeading, VARIANT_BOOL bUnknown, VARIANT_BOOL *pRetval);
|
||||
STDMETHOD(get_Area3DWidth)(long *pVal);
|
||||
STDMETHOD(get_Area3DHeight)(long *pVal);
|
||||
STDMETHOD(ItemIsKnown)(long lGUID, VARIANT_BOOL* pRetval) ;
|
||||
STDMETHOD(SendTell)(long lPlayerID, BSTR Message);
|
||||
STDMETHOD(SendTellEx)(BSTR Name, BSTR Message);
|
||||
STDMETHOD(SetAutorun)(VARIANT_BOOL bOnOff) ;
|
||||
STDMETHOD(get_Vital)(long Vital, long* pVal);
|
||||
STDMETHOD(get_Attribute)(long Attribute, long* pVal);
|
||||
STDMETHOD(get_Skill)(long Skill, long* pVal);
|
||||
STDMETHOD(LocalChatText)(BSTR Text);
|
||||
STDMETHOD(LocalChatEmote)(BSTR EmoteText);
|
||||
STDMETHOD(get_HooksAvailEx)(enum eAvailableHooksEx HookID, VARIANT_BOOL* pVal);
|
||||
STDMETHOD(Logout)();
|
||||
STDMETHOD(ToolText)(BSTR Text, VARIANT_BOOL bError);
|
||||
STDMETHOD(ToolTextAppend)(BSTR Text, VARIANT_BOOL bError);
|
||||
STDMETHOD(SetIdleTime)( double dIdleTimeout );
|
||||
STDMETHOD(SetDecal)(IUnknown *pDecal);
|
||||
|
||||
STDMETHOD(SecureTrade_Add)(long ItemID, VARIANT_BOOL *pVal);
|
||||
|
||||
STDMETHOD(get_SkillTrainLevel)( eSkill SkillID, eTrainLevel *pVal );
|
||||
STDMETHOD(get_SkillTotalXP)( eSkill SkillID, int *pVal );
|
||||
STDMETHOD(get_SkillFreePoints)( eSkill SkillID, int *pVal );
|
||||
STDMETHOD(get_SkillClicks)( eSkill SkillID, int *pVal );
|
||||
|
||||
STDMETHOD(get_AttributeClicks)( eAttribute AttributeID, int *pVal );
|
||||
STDMETHOD(get_AttributeTotalXP)( eAttribute AttributeID, int *pVal );
|
||||
STDMETHOD(get_AttributeStart)( eAttribute AttributeID, int *pVal );
|
||||
|
||||
STDMETHOD(get_VitalClicks)( eVital VitalID, int *pVal );
|
||||
STDMETHOD(get_VitalTotalXP)( eVital VitalID, int *pVal );
|
||||
|
||||
HRESULT GetSkillInfo(eSkill SkillID, struct qSkill *Skill);
|
||||
HRESULT GetAttributeInfo(eAttribute AttributeID, struct qAttribute *Attribute);
|
||||
HRESULT GetVitalInfo(eVital VitalID, struct qVital *Vital);
|
||||
STDMETHOD(RequestID)(long lObjectID);
|
||||
STDMETHOD(IDQueueAdd)(long lObjectID);
|
||||
STDMETHOD(SetIDFilter)(IKitchenSink* pIDFilter);
|
||||
STDMETHOD(UstAddItem)(long lObjectID);
|
||||
STDMETHOD(SendMessageByMask)(LONG lMask, BSTR szMessage);
|
||||
STDMETHOD(SetDay)(VARIANT_BOOL bDay);
|
||||
};
|
||||
|
||||
#endif // __ACHOOKS_H_
|
||||
Loading…
Add table
Add a link
Reference in a new issue