Цель мода добавить возможность аддонам мигать окном игры когда вы в альт табе и в игре происходит что то важное.
Название луа апи: flashwindow, "из коробки" вызывается при следующих условиях:
- Вы /afk входите в комбат
- Прокает арена/бг
- Прокает лфр
- Вас инвайтят в пати
- Производится реди чек
- Вы получаете сообщение в пм
Скачать:
http://www.mediafire.com/file/blt1uu...indow.zip/file
Установка:
Распаковываете содержимое архива в директорию игры, там где лежит Wow.exe. В дальнейшем запускаете игру через инжектор из архива.
Если у вас название экзешника игры отличается от обычного, например Wowcircle.exe, переименуйте инжектор в Wowcircle_mods.exe, либо сам клиент в Wow.exe.
Исходник
А точнее его c++ частьИсходник инжектора можете найти тут https://forum.wowcircle.com/showthread.php?t=875035PHP код:
#include <Windows.h>
#include "Lua.hpp"
#include "Detours.hpp"
#include <thread>
Detour* detour;
BOOL CALLBACK EnumWindowsProcMy(HWND hwnd, LPARAM lParam)
{
DWORD lpdwProcessId;
GetWindowThreadProcessId(hwnd, &lpdwProcessId);
if (lpdwProcessId == lParam)
{
hWow = hwnd;
return FALSE;
}
return TRUE;
}
inline auto lua_flashwindow(int L)
{
if (hWow && (GetForegroundWindow() != hWow)) {
FLASHWINFO info;
info.cbSize = sizeof(FLASHWINFO);
info.hwnd = hWow;
info.dwFlags = FLASHW_ALL | FLASHW_TIMERNOFG;
info.dwTimeout = 0;
info.uCount = 0;
FlashWindowEx(&info);
lua_pushnumber(L, 1);
return 1;
}
return 0;
}
inline void LoadAddonScript()
{
detour->Detach();
((void(__cdecl*)())detour->Address())();
detour->Attach();
lua_registerfunction("flashwindow", (int)lua_flashwindow);
}
bool run = true;
std::thread thread;
int __stdcall DllMain(HMODULE hModule, DWORD dwReason, LPVOID)
{
switch (dwReason) {
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hModule);
*(int*)0x00D415B8 = 1;
*(int*)0x00D415BC = 0x7FFFFFFF;
detour = new Detour((LPVOID)0x0052A980, &LoadAddonScript);
detour->Attach();
thread = std::thread([] {
auto pID = GetCurrentProcessId();
for (; run && !hWow; Sleep(20))
EnumWindows(EnumWindowsProcMy, pID);
});
break;
case DLL_PROCESS_DETACH:
run = false;
thread.join();
break;
}
return 1;
}
[свернуть]