Начинающий
Начинающий
- Статус
- Оффлайн
- Регистрация
- 27 Апр 2025
- Сообщения
- 93
- Реакции
- 6
1. Получение:
Или же офсетом: 0x2028C10 + dereference
2. Классы:
Важно:
Нельзя использовать до вызова крейтмува(5 индекс), тк менеджер инициализируется в начале него
Так же скажу, что кроме 0 Сплита больше не будет, ведь остальные есть только на сервере
"48 8B 0D ? ? ? ? E8 ? ? ? ? 48 8B CF 48 8B F0" @client.dll + relative(3,7) + dereferenceИли же офсетом: 0x2028C10 + dereference
2. Классы:
CUserCmdManager:
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:
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 Сплита больше не будет, ведь остальные есть только на сервере
Последнее редактирование: