mirror of
https://github.com/r4sas/ExtraMirror
synced 2025-01-09 06:18:07 +00:00
171 lines
2.6 KiB
C++
171 lines
2.6 KiB
C++
#include "utils.h"
|
|
|
|
PUserMsg UserMsgByName(char* szMsgName)
|
|
{
|
|
PUserMsg Ptr = nullptr;
|
|
Ptr = pUserMsgBase;
|
|
|
|
while (Ptr->next)
|
|
{
|
|
if (!native_strcmp(Ptr->name, szMsgName))
|
|
return Ptr;
|
|
|
|
Ptr = Ptr->next;
|
|
}
|
|
|
|
Ptr->pfn = 0;
|
|
return Ptr;
|
|
}
|
|
|
|
PEventMsg EventMsgByName(char* szMsgName)
|
|
{
|
|
PEventMsg Ptr = nullptr;
|
|
Ptr = pEventMsgBase;
|
|
|
|
while (Ptr->next)
|
|
{
|
|
if (!native_strcmp(Ptr->name, szMsgName))
|
|
return Ptr;
|
|
|
|
Ptr = Ptr->next;
|
|
}
|
|
|
|
Ptr->pfn = 0;
|
|
return Ptr;
|
|
}
|
|
|
|
pfnEventMsgHook HookEventMsg(char *szMsgName, pfnEventMsgHook pfn)
|
|
{
|
|
PEventMsg Ptr = nullptr;
|
|
pfnEventMsgHook Original = nullptr;
|
|
|
|
Ptr = EventMsgByName(szMsgName);
|
|
|
|
if (Ptr->pfn != 0)
|
|
{
|
|
Original = Ptr->pfn;
|
|
Ptr->pfn = pfn;
|
|
}
|
|
else
|
|
{
|
|
MessageBoxA(0, szMsgName, 0, MB_OK | MB_ICONERROR);
|
|
}
|
|
|
|
return Original;
|
|
}
|
|
PEngineMsg EngineMsgByName(char* szMsgName)
|
|
{
|
|
PEngineMsg Ptr = nullptr;
|
|
Ptr = pEngineMsgBase;
|
|
|
|
while (native_strcmp(Ptr->name, OFF_SVC_MESSAGES_P))
|
|
{
|
|
if (!native_strcmp(Ptr->name, szMsgName))
|
|
return Ptr;
|
|
|
|
Ptr++;
|
|
}
|
|
|
|
Ptr->pfn = 0;
|
|
return Ptr;
|
|
}
|
|
|
|
pcmd_t CommandByName(char* szName)
|
|
{
|
|
pcmd_t pCmd = nullptr;
|
|
pCmd = g_Engine.pfnGetCmdList();
|
|
|
|
while (pCmd)
|
|
{
|
|
if (!native_strcmp(pCmd->name, szName))
|
|
return pCmd;
|
|
|
|
pCmd = pCmd->next;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
pfnUserMsgHook HookUserMsg(char *szMsgName, pfnUserMsgHook pfn)
|
|
{
|
|
PUserMsg Ptr = nullptr;
|
|
pfnUserMsgHook Original = nullptr;
|
|
|
|
Ptr = UserMsgByName(szMsgName);
|
|
|
|
if (Ptr->pfn != 0)
|
|
{
|
|
Original = Ptr->pfn;
|
|
Ptr->pfn = pfn;
|
|
}
|
|
else
|
|
{
|
|
MessageBoxA(0, szMsgName, 0, MB_OK | MB_ICONERROR);
|
|
}
|
|
|
|
return Original;
|
|
}
|
|
|
|
pfnEngineMessage HookEngineMsg(char *szMsgName, pfnEngineMessage pfn)
|
|
{
|
|
PEngineMsg Ptr = nullptr;
|
|
pfnEngineMessage Original = nullptr;
|
|
|
|
Ptr = EngineMsgByName(szMsgName);
|
|
|
|
if (Ptr->pfn != 0)
|
|
{
|
|
Original = Ptr->pfn;
|
|
Ptr->pfn = pfn;
|
|
}
|
|
else
|
|
{
|
|
MessageBoxA(0, szMsgName, 0, MB_OK | MB_ICONERROR);
|
|
}
|
|
|
|
return Original;
|
|
}
|
|
|
|
char* native_strcpy(char *dest, const char *src)
|
|
{
|
|
return lstrcpyA(dest, src);
|
|
}
|
|
|
|
char* native_strcat(char *dest, const char *src)
|
|
{
|
|
return lstrcatA(dest, src);
|
|
}
|
|
|
|
int native_strcmp(char *pStr1, char *pStr2)
|
|
{
|
|
return lstrcmpA(pStr1, pStr2);
|
|
}
|
|
|
|
int native_strlen(char *pStr)
|
|
{
|
|
return lstrlenA(pStr);
|
|
}
|
|
|
|
void native_memcpy(void * dst, const void * src, size_t count)
|
|
{
|
|
_asm
|
|
{
|
|
mov edi, [dst]
|
|
mov esi, [src]
|
|
mov ecx, [count]
|
|
rep movsb
|
|
}
|
|
}
|
|
|
|
void native_memset(void *szBuffer, DWORD dwLen, DWORD dwSym)
|
|
{
|
|
_asm
|
|
{
|
|
pushad
|
|
mov edi, [szBuffer]
|
|
mov ecx, [dwLen]
|
|
mov eax, [dwSym]
|
|
rep stosb
|
|
popad
|
|
}
|
|
} |