Начинающий
Начинающий
- Статус
- Оффлайн
- Регистрация
- 13 Ноя 2022
- Сообщения
- 132
- Реакции
- 3
помогите пж у меня не работает отоброжение предметов в первой строке у игрока вот код:
там мб могут быть не те оффсеты (но своим профессиональным взглядом скажите я всё верно написал?) если вам это чемто поможет то вот вам оффсеты
C++:
// отрисовка
void draw_container(sdk::base_player_c* player, sdk::math::vec2_t box_pos, sdk::math::vec2_t box_size) {
auto itemList = player->get_inventory()->GetContainer()->itemList();
auto itemListsize = memory::read<uintptr_t>(itemList + 0x18);
for (int i = 0; i < itemListsize; i++) {
auto item = memory::read<uintptr_t>(itemList + 0x20 + (i * 0x8));
if (!memory::is_valid(item))
continue;
auto name1 = memory::read<uintptr_t>(item + 0xA8);
auto name2 = memory::read<sdk::unity::string_c*>(name1 + 0x28);
auto name = name2->m_buffer;
std::wstring wname(name);
std::string utf8name = wchar_to_utf8(wname);
sdk::math::vec2_t text_pos = {
box_pos.x + box_size.x / 2.0f,
box_pos.y + box_size.y + 12.0f
};
render::draw_text_centered(text_pos, utf8name.c_str(), render::c_color{ 1.0f, 1.0f, 1.0f, 1.0f });
}
}
// не ебу как назвать
PlayerInventory* base_player_c::get_inventory() {
uintptr_t enc_inventory_ptr = memory::read<uintptr_t>((uintptr_t)this + 0x2C0);
if (!memory::is_valid(enc_inventory_ptr))
return nullptr;
uint64_t decrypted = PlayerInventoryDec(enc_inventory_ptr);
return reinterpret_cast<PlayerInventory*>(decrypted);
}
ItemContainer* PlayerInventory::GetContainer() {
auto result = memory::read<ItemContainer*>((uintptr_t)this + 0x28); // Container 0
return result;
}
uintptr_t ItemContainer::itemList() {
auto dercipy = memory::read<uintptr_t>((uintptr_t)this + 0x50);
return dercipy;
} // декрипт inline uint64_t PlayerInventoryDec(uint64_t address)
{
uint64_t InputValue = memory::read<uint64_t>(address + 0x18);
uint64_t* rdx = (uint64_t*)&InputValue;
uint32_t r8d = 0x2;
uint32_t eax, ecx, edx;
do {
eax = *(uint32_t*)(rdx);
rdx = (uint64_t*)((uint8_t*)rdx + 0x4);
eax = eax ^ 0xd1393ad7;
eax = eax + 0xd89aeee4;
ecx = eax;
eax = eax << 0xe;
ecx = ecx >> 0x12;
ecx = ecx | eax;
ecx = ecx - 0x3c70786;
*((uint32_t*)rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp::gchandle_get_target(InputValue);
}
Код:
constexpr uint64_t playerNames = 0x3F8;
constexpr uint64_t playerFlags = 0x558;
constexpr uint64_t playerTeam = 0x430;
constexpr uint64_t model = 0xC8;
constexpr uint64_t boneTransforms = 0x50;
constexpr uint64_t ItemContainer = 0x28;
constexpr uint64_t ItemContainer2 = 0x58;
constexpr uint64_t ItemContainer3 = 0x60;
constexpr uint64_t ItemList = 0x50;
constexpr uint64_t itemInfo = 0xA8;
constexpr uint64_t shortname = 0x28;
constexpr uint64_t playerModel = 0x3E0;
constexpr uint64_t movement = 0x438;
constexpr uint64_t groundAngleNew = 0x0;
constexpr uint64_t RendererList = 0x50;
constexpr uint64_t SkinnedMultiMesh = 0x298;
constexpr uint64_t il2cppGCHandleBase = 0xC18B5D0;
constexpr uint64_t BaseNetworkableOffset = 0xBE749E8;
constexpr uint64_t CameraManager = 0x15A80000;
constexpr uint64_t camera_0 = 0x10;
constexpr uint64_t camera_1 = 0x38;
constexpr uint64_t camera_2 = 0x48;
constexpr uint64_t camera_3 = 0x50;
constexpr uint64_t camera_4 = 0x68;
constexpr uint64_t camera_5 = 0x98;
constexpr uint64_t camera_6 = 0xC0;