Другое С/С++ Вопрос - Ответ

vmprotect

Известный
396
272
Короче, как сделать, чтобы хук на LoadTxd редиректил в два разных адреса, в зависимости от того, какой txd'шник грузится? типа

Один FONT.TXD - 0x7320B0
Второй zalupa.txd - какой-то другой адрес

С++:
bool __cdecl TestHOOK(const decltype(CTxdStore__LoadTxd_Hook)& hook, int index, const char* filename) {
    if (strcmp(filename, (char*)0x86A648) == 0) {
        return hook.call_trampoline(index, "FONT.TXD"); 
    } else if(strcmp(filename, (char*)0x0000) == 0) {
        return hook.call_trampoline(index, "zalupa.txd");
    }

    return hook.call_trampoline(index, filename);
}
void install_fucking_hook() {
  
    CTxdStore__LoadTxd_Hook.set_dest(0x7320B0);
    CTxdStore__LoadTxd_Hook.set_cb(TestHOOK);
    CTxdStore__LoadTxd_Hook.install();
}

а то я пытался делать в разных функциях, то оно работает только в одном из них а не все, допустим шрифт заменяется а другой txd нет
 
  • Ха-ха
Реакции: hhhaaauuu764

ARMOR

Я креветка
Модератор
5,070
7,425
как можно изменить handling для определенного cvehicle
Кажись у каждого CVehicle есть поле с хендлингом

 

ARMOR

Я креветка
Модератор
5,070
7,425
Короче, как сделать, чтобы хук на LoadTxd редиректил в два разных адреса, в зависимости от того, какой txd'шник грузится? типа

Один FONT.TXD - 0x7320B0
Второй zalupa.txd - какой-то другой адрес

С++:
bool __cdecl TestHOOK(const decltype(CTxdStore__LoadTxd_Hook)& hook, int index, const char* filename) {
    if (strcmp(filename, (char*)0x86A648) == 0) {
        return hook.call_trampoline(index, "FONT.TXD");
    } else if(strcmp(filename, (char*)0x0000) == 0) {
        return hook.call_trampoline(index, "zalupa.txd");
    }

    return hook.call_trampoline(index, filename);
}
void install_fucking_hook() {
 
    CTxdStore__LoadTxd_Hook.set_dest(0x7320B0);
    CTxdStore__LoadTxd_Hook.set_cb(TestHOOK);
    CTxdStore__LoadTxd_Hook.install();
}

а то я пытался делать в разных функциях, то оно работает только в одном из них а не все, допустим шрифт заменяется а другой txd нет
У ктхуков в контексте кажись есть метод для получения указателя на return_address. Можешь попробовать его изменить
 

TokyoQq

Новичок
20
4
Кажись у каждого CVehicle есть поле с хендлингом

при изменении меняется для всей модели а мне надо как то сделать для определеного CVehicle
 
Последнее редактирование:

NikitosikSSS

Новичок
2
0
1. Можно ли как то реализовать функцию увеличение хитбокса? Есть ли в сампе, какая то функция для этого
 

writeline

Новичок
28
9
1744175940428.png


Есть какая либо реализация вывода координат в углу экрана как на скрине?
 
  • Эм
Реакции: Smeruxa

Byte

Потрачен
115
32
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Посмотреть вложение 267454

Есть какая либо реализация вывода координат в углу экрана как на скрине?
SFML Используй


C++:
#include <SFML/Graphics.hpp>
#include <iomanip>
#include <sstream>

std::string formatCoordinates(float x, float y, float z) {
    std::ostringstream oss;
    oss << std::fixed << std::setprecision(6);
    oss << "X: " << x << ", Y: " << y << ", Z: " << z;
    return oss.str();
}

int main() {
    sf::RenderWindow window(sf::VideoMode(800, 600), "Coordinates Display");
    sf::Font font;
    font.loadFromFile("arial.ttf");

    sf::Text coordinatesText;
    coordinatesText.setFont(font);
    coordinatesText.setCharacterSize(24);
    coordinatesText.setFillColor(sf::Color::White);
    coordinatesText.setPosition(600, 550);

    float x = 761.897775f, y = 1526.382080f, z = 12.000000f; // тут передавай свои значения

    while (window.isOpen()) {
        sf::Event event;
        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        coordinatesText.setString(formatCoordinates(x, y, z));

        window.clear(sf::Color::Black);
        window.draw(coordinatesText);
        window.display();
    }

    return 0;
}
 

вайега52

Налуашил состояние
Модератор
3,001
3,137
Кто-нибудь ставил нейкид хуки на линухе х86? Посоветуйте пожалуйста библиотеку, чтобы можно было вытаскивать регистры (можно даже не через саму либу, а через инлайн асм в нейкид функах)