mirror of https://github.com/r4sas/ExtraMirror
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
2.6 KiB
171 lines
2.6 KiB
8 years ago
|
#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
|
||
|
}
|
||
|
}
|