|
From: <no...@us...> - 2003-06-19 21:53:03
|
Log Message:
-----------
Update for SendMessageByMask + Various Hooks stuff
Modified Files:
--------------
/cvsroot/decaldev/source/Decal:
ACHooks.h
ACHooks.cpp
Revision Data
-------------
Index: ACHooks.h
===================================================================
RCS file: /cvsroot/decaldev/source/Decal/ACHooks.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- ACHooks.h 19 Jun 2003 12:33:05 -0000 1.40
+++ ACHooks.h 19 Jun 2003 21:53:02 -0000 1.41
@@ -1,5 +1,9 @@
// ACHooks.h: Definition of the ACHooks class
+#ifndef __ACHOOKS_H_
+#define __ACHOOKS_H_
+
+
#include "resource.h" // main symbols
#include "Decal.h"
#include "DecalManager.h"
@@ -180,6 +184,7 @@
bool m_bInternalStringDestructor;
bool m_bSendMessageToID;
bool m_bSendMessageToName;
+ bool m_bSendMessageToMask;
bool m_bLocalChatText;
bool m_bLocalChatEmote;
@@ -187,6 +192,7 @@
long m_lInternalStringDestructor;
long m_lSendMessageToID;
long m_lSendMessageToName;
+ long m_lSendMessageToMask;
long m_lLocalChatText;
long m_lLocalChatEmote;
@@ -310,5 +316,8 @@
STDMETHOD(RequestID)(long lObjectID);
STDMETHOD(IDQueueAdd)(long lObjectID);
STDMETHOD(SetIDFilter)(IKitchenSink* pIDFilter);
- STDMETHOD(USTAddItem)(long lObjectID);
+ STDMETHOD(UstAddItem)(long lObjectID);
+ STDMETHOD(SendMessageByMask)(LONG lMask, BSTR szMessage);
};
+
+#endif // __ACHOOKS_H_
\ No newline at end of file
Index: ACHooks.cpp
===================================================================
RCS file: /cvsroot/decaldev/source/Decal/ACHooks.cpp,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- ACHooks.cpp 19 Jun 2003 12:33:05 -0000 1.53
+++ ACHooks.cpp 19 Jun 2003 21:53:02 -0000 1.54
@@ -4,6 +4,7 @@
#include "ACHooks.h"
#include <math.h>
#include <time.h> /* Heyus 23 March 2003 */
+#include ".\achooks.h"
/*
I believe in VC6, the limit of unnamed variables (_bstr_t("foo")) has been reached,
@@ -33,6 +34,7 @@
void ( __fastcall *pfnInternalStringDestructor)( qString * ) = NULL;
long (*pfnSendMessageToID)( qString *, long ) = NULL;
long (*pfnSendMessageToName)( qString *, qString * ) = NULL;
+long (*pfnSendMessageByMask)( long, qString * ) = NULL;
long (*pfnLocalChatText)( qString * ) = NULL;
long (*pfnLocalChatEmote)( qString * ) = NULL;
qString* ( __fastcall *pfnInternalStringConstructor)( qString *, long, char * ) = NULL;
@@ -77,6 +79,7 @@
m_bChatMessageAddy = false;
m_bSendMessageToID = false;
m_bSendMessageToName = false;
+ m_bSendMessageToMask = false;
m_bLocalChatText = false;
m_bLocalChatEmote = false;
m_bSetAutorun = false;
@@ -520,6 +523,14 @@
pfnSendMessageToName = reinterpret_cast< long(*)(qString *, qString *) >( Val );
}
+ if( QueryMemLoc( BSTRT( "SendMessageToMask" ), &Val ) == S_OK)
+ {
+ m_bSendMessageToMask = true;
+ m_lSendMessageToMask = Val;
+
+ pfnSendMessageByMask = reinterpret_cast< long(*)( long, qString * ) >( Val );
+ }
+
if( QueryMemLoc( BSTRT( "LocalChatText" ), &Val ) == S_OK)
{
m_bLocalChatText = true;
@@ -1429,13 +1440,14 @@
STDMETHODIMP cACHooks::ItemIsKnown(long lGUID, VARIANT_BOOL* pRetval)
{
- if (!m_bObjectFromGuid) {
+ if (!m_bObjectFromGuid)
+ {
*pRetval = VARIANT_FALSE;
return S_FALSE;
}
DWORD dwTemp = m_lObjectFromGuid ;
- DWORD dwClass = *((DWORD*) m_lObjectFromGuidClass) ;
+ DWORD dwClass = *((DWORD*) m_lObjectFromGuidClass);
long lResult = 0;
@@ -1664,22 +1676,21 @@
STDMETHODIMP cACHooks::SecureTrade_Add(long ItemID, VARIANT_BOOL *pVal)
{
void ( __fastcall *Internal_SecureTrade_Add )( struct qPointerList *, int, long );
- struct qPointerList *p;
+ struct qPointerList *p;
VARIANT_BOOL ItemExists;
- HRESULT hr;
if (pVal) /* Should probably return an error code. Tough. */
{
- *pVal = VARIANT_FALSE;
- }
+ *pVal = VARIANT_FALSE;
+ }
+
+ else
+ return E_FAIL;
if ( m_bSecureTrade_Add && m_bSecureTrade_Add_Off1 && m_bSecureTrade_Add_Off2 && m_bCombatState )
- {
- hr = ItemIsKnown(ItemID, &ItemExists);
- if (FAILED(hr))
- {
- return hr;
- }
+ {
+ if( ItemIsKnown(ItemID, &ItemExists) != S_OK )
+ return E_FAIL;
if (ItemExists == VARIANT_FALSE)
{
@@ -2120,6 +2131,9 @@
if( !m_bRequestID )
return S_FALSE;
+ if( m_bIdQueueRef )
+ return m_pIdQueue->AddToQueue( lObjectID );
+
typedef void(*RequestPtr)( long );
RequestPtr pRequest = reinterpret_cast< RequestPtr >( m_lRequestID );
pRequest( lObjectID );
@@ -2147,43 +2161,54 @@
return S_OK;
}
-STDMETHODIMP cACHooks::USTAddItem(long lObjectID)
+STDMETHODIMP cACHooks::UstAddItem(long lObjectID)
{
- VARIANT_BOOL ItemExists;
- HRESULT hr;
+ VARIANT_BOOL ItemExists;
- if ( !m_bUstAddItem_Useable )
- {
- return S_FALSE;
- }
+ if ( !m_bUstAddItem_Useable )
+ return S_FALSE;
- hr = ItemIsKnown(lObjectID, &ItemExists);
- if ( FAILED(hr) )
- {
- return hr;
- }
-
- if ( ItemExists == VARIANT_FALSE )
- {
- return S_FALSE;
- }
-
- //Calculate the THIS pointer
- //DWORD thisPtr = *((long *)(*((long *)(*((long *)0x77A618) + 0x324)) + 0xE0));
- //DWORD tmp;
- //DWORD func = 0x005556C0;
- DWORD thisPtr = *((long *)(*((long *)(*((long *)m_lChatMessageAddy) + m_lUstAddItem_Off1)) + m_lUstAddItem_Off2));
- DWORD tmp;
- DWORD func = (DWORD)m_lUstAddItem;
- __asm
- {
- mov tmp, ecx
- mov ecx, thisPtr
+ if( ItemIsKnown( lObjectID, &ItemExists ) != S_OK )
+ return E_FAIL;
+
+ if( ItemExists == VARIANT_FALSE )
+ return S_FALSE;
+
+ //Calculate the THIS pointer
+ //DWORD thisPtr = *((long *)(*((long *)(*((long *)0x77A618) + 0x324)) + 0xE0));
+ //DWORD tmp;
+ //DWORD func = 0x005556C0;
+
+ DWORD thisPtr = *((long *)(*((long *)(*((long *)m_lChatMessageAddy) + m_lUstAddItem_Off1)) + m_lUstAddItem_Off2));
+ DWORD tmp;
+ DWORD func = (DWORD)m_lUstAddItem;
+
+ __asm
+ {
+ mov tmp, ecx
+ mov ecx, thisPtr
push lObjectID
call func
mov ecx, tmp
- }
- return S_OK;
-}
\ No newline at end of file
+ }
+
+ return S_OK;
+}
+STDMETHODIMP cACHooks::SendMessageByMask( long lMask, BSTR szMessage )
+{
+ if( !(m_bInternalStringConstructor && m_bInternalStringDestructor && m_bSendMessageToMask) )
+ return S_FALSE;
+
+ USES_CONVERSION;
+ char *szText = OLE2A( szMessage );
+
+ long retval;
+ qString Msg;
+ pfnInternalStringConstructor( &Msg, 0, szText );
+ retval = pfnSendMessageByMask( lMask, &Msg );
+ pfnInternalStringDestructor( &Msg );
+
+ return S_OK;
+}
|
|
From: <no...@us...> - 2003-06-19 21:53:12
|
Log Message:
-----------
Update for SendMessageByMask + Various Hooks stuff
Modified Files:
--------------
/cvsroot/decaldev/source/Include:
Decal.idl
Revision Data
-------------
Index: Decal.idl
===================================================================
RCS file: /cvsroot/decaldev/source/Include/Decal.idl,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- Decal.idl 19 Jun 2003 12:33:05 -0000 1.38
+++ Decal.idl 19 Jun 2003 21:53:11 -0000 1.39
@@ -7,7 +7,18 @@
import "oaidl.idl";
import "ocidl.idl";
-/* I'm not 100% sure about this */
+// For SendMessageByMask
+enum eMessageMasks
+{
+ eFellowship = 0x800,
+ eVassals = 0x1000,
+ ePatron = 0x2000,
+ eMonarch = 0x4000,
+ eCovassals = 0x1000000,
+ eAllegiance = 0x2000000,
+ eMasks_DWORD = 0x7FFFFFFF
+};
+
enum eTrainLevel
{
eUntrained = 1,
@@ -173,10 +184,10 @@
eRequestID = 9,
eIDQueueAdd = 10,
eUstAddItem = 11,
+ eSendMessageByMask = 12,
eAvailableHooksEx_DWORD = 0x7FFFFFFF // coerce enums into 4 byte instead of two
};
-
interface IPluginSite2;
@@ -297,7 +308,8 @@
[id(55), helpstring("method RequestID")] HRESULT RequestID([in] long lObjectID);
[id(56), helpstring("method IDQueueAdd")] HRESULT IDQueueAdd([in] long lObjectID);
[id(57), helpstring("method SetIDFilter")] HRESULT SetIDFilter([in] IKitchenSink* pIDFilter);
- [id(58), helpstring("method USTAddItem")] HRESULT USTAddItem([in] long lObjectID);
+ [id(58), helpstring("method UstAddItem")] HRESULT UstAddItem([in] long lObjectID);
+ [id(59), helpstring("method SendMessageByMask")] HRESULT SendMessageByMask([in] LONG lMask, [in] BSTR szMessage);
};
[
|