• Ну и что вы думаете? Мы взяли и создали свой собственный чат, с блекджеком и шлюхами, теперь все легенды в одном месте: даже те 1000 человек, которых мы забанили в старом чате 🫡 Будем публиковать там очень интересные подробности нового дизайна форума, oh yeah

    Вступай и становись легендой, пока это не стало поздно: жмякай на меня, ток не сильно(

Вопрос Панорам0чка

Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
695
Реакции[?]
111
Поинты[?]
74K
Что за приколы с панорамой? Я почему-то не могу получить child`ов у панельки:

C++:
auto ui_engine = IPanoramaUIEngine::GetInterface( )->m_pUIEngine;
for ( const auto& thispanel : ui_engine->GetPanelList( )->slots ) {

    if ( ui_engine->IsValidPanelPointer( thispanel.panel )
         && !util::fast_strcmp( (char*)thispanel.panel->GetNameID( ), "DashboardCore" ) ) {
            for ( short child_idx = 0; child_idx < thispanel.panel->GetChildCount( ); child_idx++ ) {
                auto child = thispanel.panel->GetChild( child_idx );
                if ( ui_engine->IsValidPanelPointer( child ) ) {
                    std::cout << child->GetNameID( ) << std::endl;
                }
            }
        }
    }
Просто проверка IsValidPanelPointer не проходит(то есть child = 0x0), я ваще не могу понять в чем дело, индексы верные(54 и 61 соответственно). thispanel.panel->GetChildCount( ) возвращает 3
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
695
Реакции[?]
111
Поинты[?]
74K
Я нашел решение проблемы, в этой функции(в иде) почему-то неверный оффсет на список чилдов:
1681463652110.png

А в реальности на 0x40 там лежит 0x0, а на 0x30, как я понял список чилдов:
Screenshot_3.png

Ну я и скопировал код из иды и заменил оффсет на 0x30, заработало

C++:
CUIPanel* GetChildRebuild( int a2 ) {
    const auto v2 = Member<std::uintptr_t>( 0x30 );
    if ( v2 && a2 >= 0 && a2 < *reinterpret_cast<std::uintptr_t*>( v2 ) )
        return *reinterpret_cast<CUIPanel**>( v2 + 8 * a2 );
    else
        return 0;
    }
1681463919830.png

Максимально странно, что в самой функции доты неверный оффсет, хотя идб новая. Теперь буду знать что оффсет из оригинальной функции может быть неверный.
 
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
300
Реакции[?]
108
Поинты[?]
57K
Что за приколы с панорамой? Я почему-то не могу получить child`ов у панельки:

C++:
auto ui_engine = IPanoramaUIEngine::GetInterface( )->m_pUIEngine;
for ( const auto& thispanel : ui_engine->GetPanelList( )->slots ) {

    if ( ui_engine->IsValidPanelPointer( thispanel.panel )
         && !util::fast_strcmp( (char*)thispanel.panel->GetNameID( ), "DashboardCore" ) ) {
            for ( short child_idx = 0; child_idx < thispanel.panel->GetChildCount( ); child_idx++ ) {
                auto child = thispanel.panel->GetChild( child_idx );
                if ( ui_engine->IsValidPanelPointer( child ) ) {
                    std::cout << child->GetNameID( ) << std::endl;
                }
            }
        }
    }
Просто проверка IsValidPanelPointer не проходит(то есть child = 0x0), я ваще не могу понять в чем дело, индексы верные(54 и 61 соответственно). thispanel.panel->GetChildCount( ) возвращает 3
Так чилдрены лежат в CUtlVector<CUIPanel*> на 0x28
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
860
Реакции[?]
336
Поинты[?]
68K
на будущее ты всегда можешь панельку в реклассе открыть и потыкать, указатель на панельку какую-нибудь можешь найти в панорама дебагере
с х64дбг подгружаешь доту(без сцилахайдов всяких - дота должна видеть что ты с дебагера), жмёшь ф6, тыкаешь Show Dev Info и адреса видны
1681493731902.png
 
i hate p2cs
Участник
Статус
Оффлайн
Регистрация
18 Окт 2022
Сообщения
626
Реакции[?]
221
Поинты[?]
150K
Никогда не понимал ни доту ни варкрафт, лучше побегать пострелять или попроходить что-то от 1-3лица
 
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
300
Реакции[?]
108
Поинты[?]
57K
на будущее ты всегда можешь панельку в реклассе открыть и потыкать, указатель на панельку какую-нибудь можешь найти в панорама дебагере
с х64дбг подгружаешь доту(без сцилахайдов всяких - дота должна видеть что ты с дебагера), жмёшь ф6, тыкаешь Show Dev Info и адреса видны
Посмотреть вложение 244738
Не волнуйся, он уже знает про -dev
Больше интересно, какого хрена классы представлены uint16_t, а методы типа GetAttribute ни возвращают, ни принимают заявленные значения
Никогда не понимал ни доту ни варкрафт, лучше побегать пострелять или попроходить что-то от 1-3лица
Shooter fan vs MOBA Enjoyer
В игре думать надо, тем и хороша(ну правда 80% людей даже не понимает, что в ней делать + вальв уёбки со своим балансом и 50% системой)
 
Сверху Снизу