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

ishi

Известный
493
110
Структура буллет синк, которую кидал бэтмэн:
Дело в том, что входящий BULLET_SYNC имеет измененую структуру
Слегка. Там нужно читать первые 2 байта читать ид игрока. Дальше уже все тоже самое.
по ней я пытаюсь считать, собсна, структуру:
C++:
bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
   if (params->packetId == 206)
   {
     //byte pID;
     uint8_t  byteType;
     byte issuerID;
     uint16_t  sTargetID;
     float  fOrigin[3];
     float  fTarget[3];
     float  fCenter[3];
     uint8_t  byteWeaponID;
     //params->bitStream->Read(pID);
     int btsused = params->bitStream->GetNumberOfBytesUsed();
     fout << "bytes: " << btsused<<"\n";
     params->bitStream->Read(byteType);
     params->bitStream->Read(issuerID);
     params->bitStream->Read(sTargetID);
     params->bitStream->Read(fOrigin);
     params->bitStream->Read(fTarget);
     params->bitStream->Read(fCenter);
     params->bitStream->Read(byteWeaponID);
     fout << "\n" <<"issuer: "<< issuerID << "___" << sTargetID << "___" << byteWeaponID << "\n" <<"from: " << fOrigin[1] << "___" << fOrigin[2] << "___" << fOrigin[3] << "\n"<<"to: " << fTarget[1] << "___" << fTarget[2] << "___" << fTarget[3] << "\n" <<"center: "<< fCenter[1] << "___" <<  fCenter[2] << "___" << fCenter[3] << "\n";
   }
   return true;
};
выдаёт фырню:

issuer: ___256___Њ
from: -8.11872e-025___4.60597e+009___6.28182e+028
to: -1.039e-020___4.31363e-014___0
center: -3.7107e+019___-5.91414e


вопрос: чем заболели координаты, что в них эти плюсы появились, и как их правильно читать-то?
 

Dark_Knight

Me, me and me.
Друг
4,064
2,078
Потому что ты читаешь какую-то хуйню, а точнее issuerID. Что это вообще такое?
Код:
if (params->packetId == PacketEnumeration::ID_BULLET_SYNC) {
        BitStream *bs = params->bitStream;
        stBulletData data;
        byte packetID;
        WORD pID;
        bs->ResetReadPointer();
        bs->Read(packetID);
        if (in)
            bs->Read(pID);
        bs->Read((PCHAR)&data, sizeof(stBulletData));
}
 

ishi

Известный
493
110
Потому что ты читаешь какую-то хуйню, а точнее issuerID. Что это вообще такое?
Код:
if (params->packetId == PacketEnumeration::ID_BULLET_SYNC) {
        BitStream *bs = params->bitStream;
        stBulletData data;
        byte packetID;
        WORD pID;
        bs->ResetReadPointer();
        bs->Read(packetID);
        if (in)
            bs->Read(pID);
        bs->Read((PCHAR)&data, sizeof(stBulletData));
}
Там нужно читать первые 2 байта читать ид игрока. Дальше уже все тоже самое.
однако я пробовал без них, и это не спасло систему
 

p1cador

cerf
Проверенный
220
359
@Снежок есть чудовищный говноцикл, если не умеешь оффсеты считать в битстримах, мне в свое время он очень помог

Код:
for (uint16_t i(0); i < /*РАЗМЕР ПАКЕТА*/; i++)

        {
            bs.ResetReadPointer();
            bs.IgnoreBits(i);
            bs.Read(value);
           msgToChat(0xFFF000FF, "%d) value: %d", i, value);
        }
после его выполнения идешь в чатлог и ищешь более-менее похожие значения, получаешь их оффсет))))))0
я предупреждал, что говнокод, но работает)
 
  • Нравится
Реакции: ishi

ishi

Известный
493
110
@p1cador, @Dark_Knight, спасибо большое. Очень помогли.
Кстати, насчёт переборщика - огромное спасибо, только у меня уже есть настроенный вывод в текстовый документ - просто сменю вывод с чата на файлик, и буду пользоваться х)
У меня не редко возникают проблемы с этими вычислениями, давно нуждался в такой штуке
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,962
@Снежок есть чудовищный говноцикл, если не умеешь оффсеты считать в битстримах, мне в свое время он очень помог

Код:
for (uint16_t i(0); i < /*РАЗМЕР ПАКЕТА*/; i++)

        {
            bs.ResetReadPointer();
            bs.IgnoreBits(i);
            bs.Read(value);
           msgToChat(0xFFF000FF, "%d) value: %d", i, value);
        }
после его выполнения идешь в чатлог и ищешь более-менее похожие значения, получаешь их оффсет))))))0
я предупреждал, что говнокод, но работает)
Хрень полная. Вообще бессмысленно так делать.
 

Dark_Knight

Me, me and me.
Друг
4,064
2,078
Кстати, нельзя читать массив сразу в хуке. Надо каждый элемент читать отдельно.
 
  • Нравится
Реакции: ishi

Jack_Savage

Участник
150
17
Как присобачить CEF к gta sa ?
Пытаюсь уже 6-й день засунуть cef в GTA SA но что то не получается.
Вот как заставить CEF рендерится в окне игры, обрабатывать нажатия на кнопки (на страничке), и тд ?
(Из МТА стибзить не могу потому что не понимаю как оно его там рендерит)
 

Dark_Knight

Me, me and me.
Друг
4,064
2,078
Как присобачить CEF к gta sa ?
Пытаюсь уже 6-й день засунуть cef в GTA SA но что то не получается.
Вот как заставить CEF рендерится в окне игры, обрабатывать нажатия на кнопки (на страничке), и тд ?
(Из МТА стибзить не могу потому что не понимаю как оно его там рендерит)
А может за тебя еще и сходить в туалет посрать?
 

Dark_Knight

Me, me and me.
Друг
4,064
2,078
Я надеюсь, ты хоть смотрел в каком месте происходит вызов иницилизации цефа?