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

AdCKuY_DpO4uLa

Известный
161
219
в plugin sdk есть функция RwTexDictionary *CFileLoader::LoadTexDictionary(char const *filename); , которая позволяет загружать txd файлы из файлов игры, однако RenderWare позволяет делать это и через память, вопрос таков, как загрузить txd файл из памяти, используя ресуры/перевод txd файла в байты?
 

killian228

Новичок
12
0
Как сделать так, чтобы персонаж всегда стоял как на поверхности? Делал так не работает:
C++:
*reinterpret_cast<bool*>(0xB6F5F0 + 0x46C) = 3;
 

kin4stat

mq-team
Всефорумный модератор
2,503
3,689
Как сделать так, чтобы персонаж всегда стоял как на поверхности? Делал так не работает:
C++:
*reinterpret_cast<bool*>(0xB6F5F0 + 0x46C) = 3;

Если хочется прям по адресам:

C++:
std::uint8_t* ped_ptr = FindPlayerPed(-1); // *reinterpret_cast<std::uint8_t**>(0xB6F5F0);

// чтобы выставить
*(ped_ptr + 0x46C) |= 0b11;
*(ped_ptr + 0x40) |= 0b10;

// чтобы убрать
*(ped_ptr + 0x46C) &= ~0b11;
*(ped_ptr + 0x40) &= ~0b10;
 

killian228

Новичок
12
0
При отправке 138 rpc он читает ид игрока и причину выхода и выводит в чат, но получает неправильный ид игрока. Что не так?

C++:
rakhook::on_receive_rpc += [](unsigned char& id, RakNet::BitStream*&& bs) -> bool {
        if (RakNetns) {
            if (id == 138) {
                int PlayerId;
                int Reason;
                bs->Read(PlayerId);
                bs->Read(Reason);
               
                char Buffer[128];
                rakhook::emul_rpc(138, *bs); // эмуляция RPC.
                if (Reason == 0) {
                    sprintf(Buffer, xorstr("%s[%d] Cause left the server: Crash"), g_SAMP->GetPlayerPool()->GetName(PlayerId), PlayerId);
                }
                if (Reason == 1) {
                    sprintf(Buffer, xorstr("%s[%d] Cause left the server: /q"), g_SAMP->GetPlayerPool()->GetName(PlayerId), PlayerId);
                }
                if (Reason == 2) {
                    sprintf(Buffer, xorstr("%s[%d] Cause left the server: Kick/Ban"), g_SAMP->GetPlayerPool()->GetName(PlayerId), PlayerId);
                }
                add_chat_message(-1, Buffer);
            }
        }
        return true;
    };