Вопрос PaintTraverse

Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
как через паинттраверс рисовать в меню? он только в матче рисует, не надо предлагать панораму, там всё очень сложно :D
 
🤡
Пользователь
Статус
Оффлайн
Регистрация
28 Апр 2014
Сообщения
127
Реакции[?]
163
Поинты[?]
21K
Насколько я помню, надо включить консоль старую, не панорамную.
А вообще, паинттравес есть и у Панорамы. Может ты хукнул панорамный пайнт. Например в доте есть DotaDashboard - чисто меню панарама, а есть DotaHUD или как-то так, это уже ингейм панорама. Кароч, может ты хукнул что-то не то.

Без кода или более уточняющих ответов - трудно помочь.
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
779
Реакции[?]
331
Поинты[?]
63K
Насколько я помню, надо включить консоль старую, не панорамную.
А вообще, паинттравес есть и у Панорамы. Может ты хукнул панорамный пайнт. Например в доте есть DotaDashboard - чисто меню панарама, а есть DotaHUD или как-то так, это уже ингейм панорама. Кароч, может ты хукнул что-то не то.

Без кода или более уточняющих ответов - трудно помочь.
в панораме еще есть такое понятие как TopLevelWindow, можно топлевел окно создавать и рисовать хоть в меню хоть в игре хоть где угодно.(панорамная консоль - это как раз один из этих самых топ левел окошек.).
но панорама говно просто хотя бы потому, что слишком слишком много оффсетов индексов сиг и прочей хуйни нужно обновлять по кд.
 
🤡
Пользователь
Статус
Оффлайн
Регистрация
28 Апр 2014
Сообщения
127
Реакции[?]
163
Поинты[?]
21K
в панораме еще есть такое понятие как TopLevelWindow, можно топлевел окно создавать и рисовать хоть в меню хоть в игре хоть где угодно.(панорамная консоль - это как раз один из этих самых топ левел окошек.).
но панорама говно просто хотя бы потому, что слишком слишком много оффсетов индексов сиг и прочей хуйни нужно обновлять по кд.
Ну панорама оффсеты эт залупа, согласен.

Про TopLevelWindows знаю, ибо пришлось кое-что делать с панорамой и ковырял.
Однако UIPanel имеет каждый свой PaintTraverse, поэтому я и подумал, что он мог чот не то хукнуть. А ваще, вроде ты писал как-то раз про RunFrame из UIEngine которое можно юзать для отрисовки.

А вообще, дх11 в игре есть, зачем тебе еще чот. Пошел аймгуи скачал и сидишь пастишь, profit??
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
Без кода или более уточняющих ответов - трудно помочь.
55 функа вмт, VGUI_Panel010

panel = reinterpret_cast<IVPanel*>(util::get_interface("vgui2.dll", "VGUI_Panel010"));
panel_vmt = new VMT(panel);
panel_vmt->HookVMT(hookedPaintTraverse, 55);
panel_vmt->ApplyVMT(panel);
 
🤡
Пользователь
Статус
Оффлайн
Регистрация
28 Апр 2014
Сообщения
127
Реакции[?]
163
Поинты[?]
21K
55 функа вмт, VGUI_Panel010

panel = reinterpret_cast<IVPanel*>(util::get_interface("vgui2.dll", "VGUI_Panel010"));
panel_vmt = new VMT(panel);
panel_vmt->HookVMT(hookedPaintTraverse, 55);
panel_vmt->ApplyVMT(panel);
А на какой панели ты рисуешь? На сколько я помню, там была чот типо RenderSystemTopPanel или кого того, она рисовалась везде (меню && ингейм)
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
А на какой панели ты рисуешь? На сколько я помню, там была чот типо RenderSystemTopPanel или кого того, она рисовалась везде (меню && ингейм)
Как я понял - есть 2 панели: RenderSystemTopPanel и staticPanel, обе есть и в меню и в игре. Я попробовал рисовать на обоих:

C++:
    static VPANEL game_panel;
    static VPANEL menu_panel;

    if ( !game_panel && !strcmp( ecx->GetName( vpanel ), "RenderSystemTopPanel" ) && global::g_iGameMode != EGameMode::INVALID ) {
        game_panel = vpanel;
    }

    if ( !menu_panel && !strcmp( ecx->GetName( vpanel ), "staticPanel" ) ) {
        menu_panel = vpanel;
    }

    if ( menu_panel ) {
        surface->PushMakeCurrent( menu_panel, true );
        surface->DrawSetColor( 0, 255, 0, 255 );
        surface->DrawLine( 0, 1080 / 1.7, 1920, 1080 / 1.7 );
        surface->PopMakeCurrent( menu_panel );
    }

    if ( game_panel ) {
        surface->PushMakeCurrent( game_panel, false );
        surface->DrawSetColor( 255, 255, 0, 255 );
        surface->DrawLine( 0, 1080 / 2, 1920, 1080 / 2 );
        surface->PopMakeCurrent( game_panel );
    }
Но рисует только в игре.
 
Сверху Снизу