Пользователь
- Статус
- Оффлайн
- Регистрация
- 20 Янв 2022
- Сообщения
- 218
- Реакции
- 45
step 1:
dump music kit items:
step 2 ->
where are u adding items:
set music id ->
result ->
PoC:
dump music kit items:
C++:
uto& GetMusickits() { return *reinterpret_cast<CUtlMap<int, CMusicKit*>*>((uintptr_t)(this) + 0x4D8); }
class CMusicKit {
public:
int32_t nID; // 0x0000
int32_t nRarity; // 0x0004
char* sName; // 0x0008
char* sNameLocToken; // 0x0010
char* sLocDescription; // 0x0018
char* sPedestalDisplayModel; // 0x0020
char* sInventoryImage; // 0x0028
char pad_0030[16]; // 0x0030
}; // Size: 0x0040
for (const auto& it : vecMusickit) {
CMusicKit* pMusicKit = it.m_value;
if (!pMusicKit) continue;
if (strstr(pMusicKit->sNameLocToken, "valve_cs2_01")) continue;
Skin music;
music.id = pMusicKit->nID;
music.name = CLocalize::Get()->FindSafe(pMusicKit->sNameLocToken);
music.rarity = std::clamp<int>(static_cast<int>(pMusicKit->nRarity - 1), 0, (pMusicKit->nRarity == 7) ? 7 : 6);
std::string path = "file://{images}/";
path += pMusicKit->sInventoryImage;
path += "_png.vtex";
music.path = path;
music.spinner_id = GenerateSpinnerID(pMusicKit->sName, "");
music_kits.skins.push_back(music);
}
where are u adding items:
C++:
CEconItem* pItem = CEconItem::CreateInstance();
if (pItem) {
CCSPlayerInventory* pInventory = CCSPlayerInventory::GetInstance();
auto highestIDs = pInventory->GetHighestIDs();
pItem->m_ulID = highestIDs.first + 1;
pItem->m_unInventory = 1 << 30;
pItem->m_unAccountID = uint32_t(pInventory->GetOwner().m_id);
pItem->m_unDefIndex = equipment->GetSelectedType()->def_idx; //def idx == 1314
pItem->m_nQuality = equipment->GetSelectedType()->quality;
pItem->m_nRarity = 3;//default rarity for music kit
pItem->SetMusicKitId(equipment->GetSelectedType()->skins[skin_idx].id);
pInventory->AddEconItem(pItem);
equipment->added_item = pItem;
Globals->should_update = false;
CCSInventoryManager::GetInstance()->EquipItemInLoadout(0,
equipment->GetSelectedType()->slot, pItem->m_ulID); // 0 -> global class loadout, slot loadout is 54(auto equip in my changer)
Globals->should_update = true;
}
C++:
void SetMusicKitId(int id) { SetDynamicAttributeValue(166, &id); }
PoC:
Последнее редактирование:
