Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Гайд CUserCmdManager

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
27 Апр 2025
Сообщения
93
Реакции
6
1. Получение:
"48 8B 0D ? ? ? ? E8 ? ? ? ? 48 8B CF 48 8B F0" @client.dll + relative(3,7) + dereference
Или же офсетом: 0x2028C10 + dereference

2. Классы:
CUserCmdManager:
Expand Collapse Copy
class CUserCmdManager {
public:
    CUserCmdSplit* arrSplits[64];

    CUserCmdSplit* GetUserCmdSplit(int nPlayerSlot = 0) {
        if (nPlayerSlot < 0 || nPlayerSlot >= 64) {
            warning() << _("CUserCmdManager->GetUserCmdSplit(): player slot ") << nPlayerSlot << _(" out of range");
            return nullptr;
        }

        return arrSplits[nPlayerSlot];
    }

    CUserCmd* GetUserCmd(int nPlayerSlot, std::uint32_t nSequenceNumber) {
        CUserCmdSplit* pSplit = GetUserCmdSplit(nPlayerSlot);
        if (invalid(pSplit))
            return nullptr;

        return pSplit->GetUserCmd(nSequenceNumber);
    }

    CUserCmd* GetCurrentUserCmd(int nPlayerSlot = 0) {
        CUserCmdSplit* pSplit = GetUserCmdSplit(nPlayerSlot);
        if (invalid(pSplit))
            return nullptr;

        return pSplit->GetCurrentUserCmd();
    }
};
CUserCmdSplit:
Expand Collapse Copy
class CUserCmdSplit {
public:
  CUserCmd arrUserCmd[150];
  std::uint32_t nSequenceNumber;
  double dTimeStamp;

  CUserCmd* GetUserCmd(std::uint32_t nSequenceNumber) {
    return &arrUserCmd[nSequenceNumber % 150U];
  }

  CUserCmd* GetCurrentUserCmd() {
    return &arrUserCmd[nSequenceNumber % 150U];
  }
};

Важно:
Нельзя использовать до вызова крейтмува(5 индекс), тк менеджер инициализируется в начале него

Так же скажу, что кроме 0 Сплита больше не будет, ведь остальные есть только на сервере
 
Последнее редактирование:
Назад
Сверху Снизу