Вернуться   CoderX :: Forums > Основные форумы > Курилка
Войти через OpenID

Курилка Флудим и шутим тут!

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 21.07.2019, 00:24   #1
Новичок
 
Регистрация: 25.08.2016
Сообщений: 21
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
wongerlt пока неопределено
По умолчанию Lineage2 Interlude Draw text to canvas (c++)

Hello,
Maybe someone try to find parameters for this function? from Engine.dll
Код:
?DrawTextToCanvas@UCanvas@@UAEKHHKPBGKKKMHW4L2FontType@@HHKHHHPAV?$TArray@PAVFL2ColorFontInfo@@@@GW4EFontExceptionType@@H@Z
Код:
public: virtual unsigned long __thiscall UCanvas::DrawTextToCanvas(int,int,unsigned long,unsigned short const *,unsigned long,unsigned long,unsigned long,float,int,enum L2FontType,int,int,unsigned long,int,int,int,class TArray<class FL2ColorFontInfo *> *,unsigned short,enum EFontExceptionType,int)
What each parameter mean, maybe someone was facing with it? : confused:

most interesting for me is enum L2FontType, class TArray<class FL2ColorFontInfo *> *, enum EFontExceptionType

all other parameters i think possible to guess.

Thanks for any information.
wongerlt вне форума   Ответить с цитированием
Старый 24.07.2019, 10:21   #2
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Перехватывай эту функцию и смотри, что в нее передается.
Либо используй перехват функций DirectX (Direct3DCreate9), в интернете есть примеры, как с помощью DirectX рисовать что-либо в окне La2
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 26.07.2019, 12:23   #3
Новичок
 
Регистрация: 25.08.2016
Сообщений: 21
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
wongerlt пока неопределено
По умолчанию

Цитата:
Сообщение от ScythLab Посмотреть сообщение
Перехватывай эту функцию и смотри, что в нее передается.
Либо используй перехват функций DirectX (Direct3DCreate9), в интернете есть примеры, как с помощью DirectX рисовать что-либо в окне La2
finally i do it
http://prntscr.com/ok1yqe

Код:
void DrawTextX(int x, int y, const char *text,LPDIRECT3DDEVICE9 pDevice) {
    RECT rct = {x,y,0,0};
    LPD3DXFONT pFont = NULL;
 
    D3DXCreateFont(pDevice, 32, 0, FW_BOLD, 0, FALSE, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, TEXT("Arial"), &pFont);
    if (pFont) {
        pFont->DrawText( NULL, text, -1, &rct, DT_CALCRECT, 0 );
        pFont->DrawText( NULL, text, -1, &rct, DT_LEFT, D3DCOLOR_XRGB(0,255,0) );
        pFont->Release();
    }
 
}

HRESULT APIENTRY myEndScene( LPDIRECT3DDEVICE9 pDevice )
{
    while(!pDevice) {pDevice = pDevice;}   
    
    DrawTextX(100,100,"coderx.ru",pDevice);
    
    return pEndScene( pDevice );
}

PBYTE HookVTable( PDWORD* dwVTable, PBYTE dwHook, INT Index )
{
    DWORD dwOld = 0;
    VirtualProtect((void*)((*dwVTable) + (Index*4) ), 4, PAGE_EXECUTE_READWRITE, &dwOld);
    PBYTE pOrig = ((PBYTE)(*dwVTable)[Index]);
    (*dwVTable)[Index] = (DWORD)dwHook;
    VirtualProtect((void*)((*dwVTable) + (Index*4)), 4, dwOld, &dwOld);
 
    return pOrig;
}
LRESULT CALLBACK MsgProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM  lParam){return DefWindowProc(hwnd, uMsg, wParam, lParam);}
void DX_Init(DWORD* table)
{
    WNDCLASSEXA wc = {sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,GetModuleHandleA(NULL),NULL,NULL,NULL,NULL,"DX",NULL};
    RegisterClassExA(&wc);
    HWND hWnd = CreateWindowA("DX",NULL,WS_OVERLAPPEDWINDOW,100,100,300,300,GetDesktopWindow(),NULL,wc.hInstance,NULL);
    LPDIRECT3D9 pD3D = Direct3DCreate9( D3D_SDK_VERSION );
    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory( &d3dpp, sizeof(d3dpp) );
    d3dpp.Windowed = TRUE;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
    LPDIRECT3DDEVICE9 pd3dDevice;
    pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&pd3dDevice);
    DWORD* pVTable = (DWORD*)pd3dDevice;
    pVTable = (DWORD*)pVTable[0];
 
    table[0]   = pVTable[42];                    
    
 
    DestroyWindow(hWnd);
}
DWORD WINAPI VMT_Patching( LPVOID  Param )
{
    while(1)
    {
    Sleep(100);
    HookVTable((PDWORD*)nm_pD3Ddev, (PBYTE)myEndScene,42);         
    }
    return 1;
}
void D3D9_Interface_Hook()
{
    if(hooked==false) 
    {
        DWORD VTable[3] = {0};
        while(GetModuleHandleA("d3d9.dll")==NULL) 
        {
            Sleep(250);
        }
        DX_Init(VTable);
        pEndScene = (oEndScene)DetourFunction((PBYTE)VTable[0],(PBYTE)myEndScene);     
        while(!nm_pD3Ddev) 
        {
            Sleep(50); 
        }
        pEndScene = (oEndScene)DetourFunction((PBYTE)VTable[0],(PBYTE)pEndScene);    
        *(PDWORD)&pEndScene = VTable[0];
        CreateThread(NULL,0,&VMT_Patching,NULL,0,NULL); 
        hooked = true;
    }        
}
Добавлено через 13 часов 10 минут
L2 Create new dx device when window resize? because when i resize window me draws stop working. how to fix it?

Последний раз редактировалось wongerlt, 26.07.2019 в 12:23. Причина: Добавлено сообщение
wongerlt вне форума   Ответить с цитированием
Старый 27.07.2019, 09:44   #4
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Цитата:
Сообщение от wongerlt Посмотреть сообщение
L2 Create new dx device when window resize? because when i resize window me draws stop working. how to fix it?
не знаю, не работал с dx, но повторное создание контекста должно отловиться с помощью перехваченной функции Direct3DCreate9.
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Курилка


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 14:25.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!