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

Гайд How to add music kit in inventory

Пользователь
Пользователь
Статус
Оффлайн
Регистрация
20 Янв 2022
Сообщения
218
Реакции
45
step 1:
dump music kit items:

C++:
Expand Collapse Copy
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);
    }
step 2 ->
where are u adding items:

C++:
Expand Collapse Copy
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;
}
set music id ->
C++:
Expand Collapse Copy
void SetMusicKitId(int id) { SetDynamicAttributeValue(166, &id); }
result ->
PoC:

gZ7AGYZ.png
 
Последнее редактирование:
Назад
Сверху Снизу