Замена Загрузочного Экрана SAMP

vmprotect

Известный
Автор темы
351
192
Попробовал снова заменить загрузочный экран в сампе, но пока безуспешно.

Прикрепляю код ниже. Возможно, проблема в том, что я делаю замену в обычной гташке а не в сампе.

Подскажите, как можно отследить момент рендеринга загрузочного экрана именно в сампе

HOOK LOADSCS:
using CTxdStore__LoadTxd = bool(__cdecl *)(int index, char const* filename);
kthook::kthook_simple<CTxdStore__LoadTxd>CTxdStore__LoadTxd_Hook;

bool CLoadScreen_HOOK(const decltype(CTxdStore__LoadTxd_Hook)& hook, int index, const char* filename) {
    if (strcmp(filename, "loadscs.txd") == 0) {
        std::cout << filename << std::endl;
        return hook.call_trampoline(index, "CUSTOMFOLDER\\LOADSCS.TXD");
    }
    return hook.get_trampoline()(index, filename);
}


void install_hook() {
    CTxdStore__LoadTxd_Hook.set_dest(0x5900D2);
    CTxdStore__LoadTxd_Hook.set_cb(&CLoadScreen_HOOK);
    CTxdStore__LoadTxd_Hook.install();
}
 

Receiver

leet-cheats 👑
Проверенный
620
889
Привет! Есть готовый плагин SR_Team'а выпущенный ещё в 2017 году. Можешь посмотреть его исходный код.
 

vmprotect

Известный
Автор темы
351
192
Привет! Есть готовый плагин SR_Team'а выпущенный ещё в 2017 году. Можешь посмотреть его исходный код.
он использует QT библиотеки и d3d9 для рендера текстуры, разве нельзя просто через хук заменить ?
 

Receiver

leet-cheats 👑
Проверенный
620
889
он использует QT библиотеки и d3d9 для рендера текстуры, разве нельзя просто через хук заменить ?
Библиотеки Qt используются в двух местах: в хуке рендера для сигнала, и для получения имени файла. Это можно спокойно убрать/заменить.
Что касается замены в хуке, то с этим есть проблема. SA:MP хранит собственный загрузочный экран в зашифрованном архиве samp.saa, в файле loadscs.txd.
В теории ты действительно можешь хукнуть загрузку TXD и подменить файл, но не факт. Думаю что SR_Team не с проста сделал именно так.
Кстати, замена экрана загрузки ещё реализована в s0beit. Его исходники есть на просторах, тоже можешь глянуть.