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

Гайд How to add keychain/medals/stickers in inventory

Пользователь
Пользователь
Статус
Оффлайн
Регистрация
20 Янв 2022
Сообщения
234
Реакции
55
step 1:
(dump shit)
C++:
Expand Collapse Copy
auto& GetSortedItemDefinitionMap() { return *reinterpret_cast<CUtlMap<int, CEconItemDefinition*>*>((uintptr_t)(this) + 0x128); }
auto& GetKeychains() { return *reinterpret_cast<CUtlMap<int, CKeyChain*>*>((uintptr_t)(this) + 0x4B0); }
auto& GetStickers() { return *reinterpret_cast<CUtlMap<int, CSkiterKit*>*>((uintptr_t)(this) + 0x318); }

const auto& vecStickers = ItemSchema->GetStickers();
const auto& vecKeychain = ItemSchema->GetKeychains();
const auto& vecItems = ItemSchema->GetSortedItemDefinitionMap();

for (const auto& it : vecKeychain) {
        CKeyChain* pKeychain = it.m_value;
        if (!pKeychain) continue;
        if (strstr(pKeychain->m_strInventoryImag2e, "kc_bud2025")) continue;
        if (strstr(pKeychain->m_strInventoryImag2e, "kc_sticker_display_case")) continue;
        Skin charm;
        charm.id = pKeychain->m_nID;
        charm.name = CLocalize::Get()->FindSafe(pKeychain->m_strLocDescription);
        charm.rarity = std::clamp<int>(static_cast<int>(pKeychain->m_nRarity - 1), 0, (pKeychain->m_nRarity == 7) ? 7 : 6) - 1;
        std::string path = "file://{images}/";
        path += pKeychain->m_strInventoryImag2e;
        path += "_png.vtex";
        charm.path = path;
        charm.spinner_id = GenerateSpinnerID(pKeychain->m_strNameLocToken, "");
        charm_type.skins.push_back(charm);
    }

for (const auto& it : vecStickers) {
      CSkiterKit* pSticker = it.m_value;
      if (!pSticker) continue;
      if (strstr(pSticker->name, "default")) continue;
      Skin sticker;
      sticker.id = pSticker->id;
      sticker.name = CLocalize::Get()->FindSafe(pSticker->item_name);
      sticker.rarity = std::clamp<int>(static_cast<int>(pSticker->rarity - 1), 0, (pSticker->rarity == 7) ? 7 : 6);
      std::string path = "file://{images}/";
      path += pSticker->inventory_image;
      path += "_png.vtex";
      sticker.path = path;
      sticker.spinner_id = GenerateSpinnerID(pSticker->name, "");
      sticker_pool.push_back(sticker);
  }

for (const auto& it : vecItems) {
    CEconItemDefinition* pItem = it.m_value;
    if (!pItem) continue;
    const bool IsMedal = pItem->is_medal();
    if (!IsMedal) continue;
    const char* itemBaseName = pItem->m_pszItemBaseName;

    if (!itemBaseName || itemBaseName[0] == '\0') continue;
    if (strstr(pItem->get_simple(), "ollectible")) continue;
    const char* simple = pItem->get_simple2();

    const uint16_t defIdx = pItem->m_nDefIndex;
    DumpedItem_t dumpedItem;
    dumpedItem.m_name = CLocalize::Get()->FindSafe(pItem->m_pszItemBaseName);
    dumpedItem.m_tocken_name = pItem->m_pszItemBaseName;
    dumpedItem.m_defIdx = defIdx;

    dumpedItem.m_rarity = pItem->GetRarity();
    if (simple && simple[0] != '\0') dumpedItem.m_simpleName = simple;  // e.g. weapon_ak47

    dumpedItem.m_unusualItem = true;
    std::string imagePath = "file://{images}/";
    imagePath += dumpedItem.m_simpleName;
    imagePath += "_png.vtex";
    def.path = imagePath;
    def.name = dumpedItem.m_name;
    def.rarity = dumpedItem.m_rarity - 1;
    def.id = defIdx;
    def.unusual = true;
    def.spinner_id = GenerateSpinnerID(dumpedItem.m_simpleName, "");
    if (IsMedal) medal_def.skins.push_back(def);
}
step 2:
equip sticker
C++:
Expand Collapse Copy
void SetStickerSlot1(int id) { SetDynamicAttributeValue(113, &id); }
void SetStickerSlot2(int id) { SetDynamicAttributeValue(117, &id); }
void SetStickerSlot3(int id) { SetDynamicAttributeValue(121, &id); }
void SetStickerSlot4(int id) { SetDynamicAttributeValue(125, &id); }

if (weapon->selected_stickers[0] != 0) pItem->SetStickerSlot1(sticker_pool[weapon->selected_stickers[0]].id);
if (weapon->selected_stickers[1] != 0) pItem->SetStickerSlot2(sticker_pool[weapon->selected_stickers[1]].id);
if (weapon->selected_stickers[2] != 0) pItem->SetStickerSlot3(sticker_pool[weapon->selected_stickers[2]].id);
if (weapon->selected_stickers[3] != 0) pItem->SetStickerSlot4(sticker_pool[weapon->selected_stickers[3]].id);

equip keychain
C++:
Expand Collapse Copy
void SetKeychains(int id) { SetDynamicAttributeValue(299, &id); }
add keychain entity(while equip skin on weapon)

C++:
Expand Collapse Copy
@client.dll $ 44 88 44 24 ? 48 89 54 24 ? 55 53 56 57 41 54 41 55 41 56 41 57 48 8D AC 24
void C_CSWeaponBase::AddKeychain() {
    auto mItem = m_AttributeManager()->m_Item();
    signatures::AddKeychain.GetPtr().Call<char(__fastcall*)(void*, void*)>(this, mItem);
}
in code ->
pWeapon->AddKeychain();
PoC(sticker and keychain):
6ZZiikJ.png

add medal (like music kit and set def_idx from dumped item)
equip medal:
C++:
Expand Collapse Copy
CCSInventoryManager::GetInstance()->EquipItemInLoadout(0, equipment->GetSelectedType()->slot, pItem->m_ulID);//equipment->GetSelectedType()->slot == LOADOUT_SLOT_FLAIR0 == 55
equip medal in game:

C++:
Expand Collapse Copy
int& m_nActiveCoinRank() { return *(int*)(std::uintptr_t(this) + 0x70); }

void CInventory::ApplyMedal() {
    if (!Globals->local_controller || !Globals->local_controller->Get() || !Globals->local_controller->Get()->m_pInventoryServices())
        return;
    CCSPlayerController_InventoryServices* pInventoryService = Globals->local_controller->Get()->m_pInventoryServices();
    CCSPlayerInventory* inventory = CCSPlayerInventory::GetInstance();
    if (!inventory) return;
    C_EconItemView* pTargetCoinItemView = inventory->GetItemInLoadout(0, LOADOUT_SLOT_FLAIR0);
    CEconItemDefinition* pItem = pTargetCoinItemView->GetStaticData();
    if (pItem) {
        if (medals_data.GetSelectedType()->selected_skin != 0)
            pInventoryService->m_nActiveCoinRank() = medals_data.GetSelectedType()->GetSelectedSkin()->id;
        else
            pInventoryService->m_nActiveCoinRank() = pItem->m_nDefIndex;
    }
}
PoC(medal):
vreWBn7.jpeg
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
step 1:
(dump shit)
C++:
Expand Collapse Copy
auto& GetSortedItemDefinitionMap() { return *reinterpret_cast<CUtlMap<int, CEconItemDefinition*>*>((uintptr_t)(this) + 0x128); }
auto& GetKeychains() { return *reinterpret_cast<CUtlMap<int, CKeyChain*>*>((uintptr_t)(this) + 0x4B0); }
auto& GetStickers() { return *reinterpret_cast<CUtlMap<int, CSkiterKit*>*>((uintptr_t)(this) + 0x318); }

const auto& vecStickers = ItemSchema->GetStickers();
const auto& vecKeychain = ItemSchema->GetKeychains();
const auto& vecItems = ItemSchema->GetSortedItemDefinitionMap();

for (const auto& it : vecKeychain) {
        CKeyChain* pKeychain = it.m_value;
        if (!pKeychain) continue;
        if (strstr(pKeychain->m_strInventoryImag2e, "kc_bud2025")) continue;
        if (strstr(pKeychain->m_strInventoryImag2e, "kc_sticker_display_case")) continue;
        Skin charm;
        charm.id = pKeychain->m_nID;
        charm.name = CLocalize::Get()->FindSafe(pKeychain->m_strLocDescription);
        charm.rarity = std::clamp<int>(static_cast<int>(pKeychain->m_nRarity - 1), 0, (pKeychain->m_nRarity == 7) ? 7 : 6) - 1;
        std::string path = "file://{images}/";
        path += pKeychain->m_strInventoryImag2e;
        path += "_png.vtex";
        charm.path = path;
        charm.spinner_id = GenerateSpinnerID(pKeychain->m_strNameLocToken, "");
        charm_type.skins.push_back(charm);
    }

for (const auto& it : vecStickers) {
      CSkiterKit* pSticker = it.m_value;
      if (!pSticker) continue;
      if (strstr(pSticker->name, "default")) continue;
      Skin sticker;
      sticker.id = pSticker->id;
      sticker.name = CLocalize::Get()->FindSafe(pSticker->item_name);
      sticker.rarity = std::clamp<int>(static_cast<int>(pSticker->rarity - 1), 0, (pSticker->rarity == 7) ? 7 : 6);
      std::string path = "file://{images}/";
      path += pSticker->inventory_image;
      path += "_png.vtex";
      sticker.path = path;
      sticker.spinner_id = GenerateSpinnerID(pSticker->name, "");
      sticker_pool.push_back(sticker);
  }

for (const auto& it : vecItems) {
    CEconItemDefinition* pItem = it.m_value;
    if (!pItem) continue;
    const bool IsMedal = pItem->is_medal();
    if (!IsMedal) continue;
    const char* itemBaseName = pItem->m_pszItemBaseName;

    if (!itemBaseName || itemBaseName[0] == '\0') continue;
    if (strstr(pItem->get_simple(), "ollectible")) continue;
    const char* simple = pItem->get_simple2();

    const uint16_t defIdx = pItem->m_nDefIndex;
    DumpedItem_t dumpedItem;
    dumpedItem.m_name = CLocalize::Get()->FindSafe(pItem->m_pszItemBaseName);
    dumpedItem.m_tocken_name = pItem->m_pszItemBaseName;
    dumpedItem.m_defIdx = defIdx;

    dumpedItem.m_rarity = pItem->GetRarity();
    if (simple && simple[0] != '\0') dumpedItem.m_simpleName = simple;  // e.g. weapon_ak47

    dumpedItem.m_unusualItem = true;
    std::string imagePath = "file://{images}/";
    imagePath += dumpedItem.m_simpleName;
    imagePath += "_png.vtex";
    def.path = imagePath;
    def.name = dumpedItem.m_name;
    def.rarity = dumpedItem.m_rarity - 1;
    def.id = defIdx;
    def.unusual = true;
    def.spinner_id = GenerateSpinnerID(dumpedItem.m_simpleName, "");
    if (IsMedal) medal_def.skins.push_back(def);
}
step 2:
equip sticker
C++:
Expand Collapse Copy
void SetStickerSlot1(int id) { SetDynamicAttributeValue(113, &id); }
void SetStickerSlot2(int id) { SetDynamicAttributeValue(117, &id); }
void SetStickerSlot3(int id) { SetDynamicAttributeValue(121, &id); }
void SetStickerSlot4(int id) { SetDynamicAttributeValue(125, &id); }

if (weapon->selected_stickers[0] != 0) pItem->SetStickerSlot1(sticker_pool[weapon->selected_stickers[0]].id);
if (weapon->selected_stickers[1] != 0) pItem->SetStickerSlot2(sticker_pool[weapon->selected_stickers[1]].id);
if (weapon->selected_stickers[2] != 0) pItem->SetStickerSlot3(sticker_pool[weapon->selected_stickers[2]].id);
if (weapon->selected_stickers[3] != 0) pItem->SetStickerSlot4(sticker_pool[weapon->selected_stickers[3]].id);

equip keychain
C++:
Expand Collapse Copy
void SetKeychains(int id) { SetDynamicAttributeValue(299, &id); }
add keychain entity(while equip skin on weapon)

C++:
Expand Collapse Copy
@client.dll $ 44 88 44 24 ? 48 89 54 24 ? 55 53 56 57 41 54 41 55 41 56 41 57 48 8D AC 24
void C_CSWeaponBase::AddKeychain() {
    auto mItem = m_AttributeManager()->m_Item();
    signatures::AddKeychain.GetPtr().Call<char(__fastcall*)(void*, void*)>(this, mItem);
}
in code ->
pWeapon->AddKeychain();
PoC(sticker and keychain):
6ZZiikJ.png

add medal (like music kit and set def_idx from dumped item)
equip medal:
C++:
Expand Collapse Copy
CCSInventoryManager::GetInstance()->EquipItemInLoadout(0, equipment->GetSelectedType()->slot, pItem->m_ulID);//equipment->GetSelectedType()->slot == LOADOUT_SLOT_FLAIR0 == 55
equip medal in game:

C++:
Expand Collapse Copy
int& m_nActiveCoinRank() { return *(int*)(std::uintptr_t(this) + 0x70); }

void CInventory::ApplyMedal() {
    if (!Globals->local_controller || !Globals->local_controller->Get() || !Globals->local_controller->Get()->m_pInventoryServices())
        return;
    CCSPlayerController_InventoryServices* pInventoryService = Globals->local_controller->Get()->m_pInventoryServices();
    CCSPlayerInventory* inventory = CCSPlayerInventory::GetInstance();
    if (!inventory) return;
    C_EconItemView* pTargetCoinItemView = inventory->GetItemInLoadout(0, LOADOUT_SLOT_FLAIR0);
    CEconItemDefinition* pItem = pTargetCoinItemView->GetStaticData();
    if (pItem) {
        if (medals_data.GetSelectedType()->selected_skin != 0)
            pInventoryService->m_nActiveCoinRank() = medals_data.GetSelectedType()->GetSelectedSkin()->id;
        else
            pInventoryService->m_nActiveCoinRank() = pItem->m_nDefIndex;
    }
}
PoC(medal):
vreWBn7.jpeg
хуета
начиная от говно-метода с картинками
заканчивая еще каким то пиздецом
 
хуета
начиная от говно-метода с картинками
заканчивая еще каким то пиздецом
йоу менчик иди быстрее пиши статью лучше моей и расскажи детально как добавить и эквипнуть этот щит смокай зазу в тебе ебать много свэга чувак, нет стоп, в тебе реально дохуя свэга черт возьми чуваак, шмоукай это дерьмицо
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
йоу менчик иди быстрее пиши статью лучше моей и расскажи детально как добавить и эквипнуть этот щит смокай зазу в тебе ебать много свэга чувак, нет стоп, в тебе реально дохуя свэга черт возьми чуваак, шмоукай это дерьмицо
ты на учете в психоневрологическом диспансере стоишь?
 
void C_CSWeaponBase::AddKeychain() {
it is not add_key_chain, it is c_econ_item::add_charm_to_tail_or_reserve
C_EconItemView* pTargetCoinItemView = inventory->GetItemInLoadout(0, LOADOUT_SLOT_FLAIR0);
maybe better to use this
inventory->get_item_in_loadout(..., inventory_services->m_next_free_flair_slot);
and call invalidate_inventory_flair_diffuse
 
Последнее редактирование:
Поделился бы хотя бы классами брелков и стикеров

C++:
Expand Collapse Copy
class c_keychain
{
public:
    int32_t id;
    int32_t rarity;
    int32_t display_seed;
    _pad(0x4);
    int32_t unk;
    _pad(0x4);
    const char* name;
    const char* name_loc_token;
    const char* loc_description;
    const char* pedestal_display_model;
    const char* inventory_image;
    _pad(0x38);
};


C++:
Expand Collapse Copy
class c_stiker_kit
{
public:
    int id;
    int rarity;
    const char* name;
    const char* description_name;
    const char* item_name;
    const char* material_path;
    const char* material_path_no_drips;
    const char* inventory_image;
    _pad(0x18);
};


И шема

C++:
Expand Collapse Copy
    auto& get_keychains() {
        return *reinterpret_cast<c_utl_map<int, c_keychain*>*>((uintptr_t)(this) + 0x4B0);
    }

    auto& get_sticker_kits() {
        return *reinterpret_cast<c_utl_map<int, c_stiker_kit*>*>((uintptr_t)(this) + 0x340);
    }


И еще на всякий класс econ_item


C++:
Expand Collapse Copy
enum e_econ_item_attributes : uint32_t
{
    attribute_paint_kit = 6,
    attribute_paint_seed = 7,
    attribute_paint_wear = 8,
    attribute_stat_track = 80,
    attribute_stat_track_type = 81,
    attribute_sticker_id = 113,
    attribute_sticker_wear = 114,
    attribute_sticker_scale = 115,
    attribute_sticker_rotation = 116,
    attribute_sticker_rotation_x = 278,
    attribute_sticker_rotation_y = 279,
    attribute_music_id = 166,
    attribute_keychain_slot_id_0 = 299,
    attribute_keychain_offset_x = 300,
    attribute_keychain_offset_y = 301,
    attribute_keychain_rotation = 302,
    attribute_keychain_seed = 306,
};


C++:
Expand Collapse Copy
class c_econ_item
{
public:
    void set_dynamic_attribute_value(int index, void* value);
    static c_econ_item* create_shared_object_subclass_econ_item();

public:
    void set_paint_kit(float kit) {
        set_dynamic_attribute_value(attribute_paint_kit, &kit);
    }

    void set_paint_seed(float seed) {
        set_dynamic_attribute_value(attribute_paint_seed, &seed);
    }

    void set_paint_wear(float wear) {
        set_dynamic_attribute_value(attribute_paint_wear, &wear);
    }

    void set_stat_trak(int count) {
        set_dynamic_attribute_value(attribute_stat_track, &count);
    }

    void set_stat_trak_type(int type) {
        set_dynamic_attribute_value(attribute_stat_track_type, &type);
    }

    void set_keychain(int id) {
        set_dynamic_attribute_value(attribute_keychain_slot_id_0, &id);
    }

    void set_keychain_seed(int seed) {
        set_dynamic_attribute_value(attribute_keychain_seed, &seed);
    }

    void set_keychain(float x, float y, float rotation)
    {
        set_dynamic_attribute_value(attribute_keychain_offset_x, &x);
        set_dynamic_attribute_value(attribute_keychain_offset_y, &y);
        set_dynamic_attribute_value(attribute_keychain_rotation, &rotation);
    }

    void set_sticker(int slot, int id) {
        set_dynamic_attribute_value(attribute_sticker_id + (slot * 4), &id);
    }

    void set_sticker(int slot, int id, float wear, float scale, float rotation, float x, float y) {
        set_dynamic_attribute_value(attribute_sticker_id + (slot * 4), &id);
        set_dynamic_attribute_value(attribute_sticker_wear + (slot * 4), &wear);
        set_dynamic_attribute_value(attribute_sticker_scale + (slot * 4), &scale);
        set_dynamic_attribute_value(attribute_sticker_rotation + (slot * 4), &rotation);

        set_dynamic_attribute_value(attribute_sticker_rotation_x + (slot * 2), &x);
        set_dynamic_attribute_value(attribute_sticker_rotation_y + (slot * 2), &y);
    }



public:
    void destruct() {
        return g_memory.call_virtual_func<void>(this, 1);
    }

public:
    _pad(0x10);
    uint64_t id;
    uint64_t original_id;
    void* custom_data_optimized_object;
    uint32_t account_id;
    uint32_t inventory;
    uint16_t def_index;
    uint16_t origin : 5;
    uint16_t quality : 4;
    uint16_t level : 2;
    uint16_t rarity : 4;
    uint16_t dirtybit_in_use : 1;
    int16_t item_set;
    int so_update_frame;
    uint8_t flags;
};



Надеюсь было полезно
 
йоу менчик иди быстрее пиши статью лучше моей и расскажи детально как добавить и эквипнуть этот щит смокай зазу в тебе ебать много свэга чувак, нет стоп, в тебе реально дохуя свэга черт возьми чуваак, шмоукай это дерьмицо
этот броук ряльный даблар абсолютный вайперр черт возьми омагад щит чувак ты ракаешь эту чертову баленсиагу чувак у тебя ряльна дохуя свэга
хуета
начиная от говно-метода с картинками
заканчивая еще каким то пиздецом
не я не пойму а че те не нравится, тип ликнул сам метод, какая разница какой метод с картинками
заканчивая чем?..
 
UPDATE THE TUTORIAL PLEASE SIR, SOMETHING IS WRONG!!!
work fine for me
Поделился бы хотя бы классами брелков и стикеров

C++:
Expand Collapse Copy
class c_keychain
{
public:
    int32_t id;
    int32_t rarity;
    int32_t display_seed;
    _pad(0x4);
    int32_t unk;
    _pad(0x4);
    const char* name;
    const char* name_loc_token;
    const char* loc_description;
    const char* pedestal_display_model;
    const char* inventory_image;
    _pad(0x38);
};


C++:
Expand Collapse Copy
class c_stiker_kit
{
public:
    int id;
    int rarity;
    const char* name;
    const char* description_name;
    const char* item_name;
    const char* material_path;
    const char* material_path_no_drips;
    const char* inventory_image;
    _pad(0x18);
};


И шема

C++:
Expand Collapse Copy
    auto& get_keychains() {
        return *reinterpret_cast<c_utl_map<int, c_keychain*>*>((uintptr_t)(this) + 0x4B0);
    }

    auto& get_sticker_kits() {
        return *reinterpret_cast<c_utl_map<int, c_stiker_kit*>*>((uintptr_t)(this) + 0x340);
    }


И еще на всякий класс econ_item


C++:
Expand Collapse Copy
enum e_econ_item_attributes : uint32_t
{
    attribute_paint_kit = 6,
    attribute_paint_seed = 7,
    attribute_paint_wear = 8,
    attribute_stat_track = 80,
    attribute_stat_track_type = 81,
    attribute_sticker_id = 113,
    attribute_sticker_wear = 114,
    attribute_sticker_scale = 115,
    attribute_sticker_rotation = 116,
    attribute_sticker_rotation_x = 278,
    attribute_sticker_rotation_y = 279,
    attribute_music_id = 166,
    attribute_keychain_slot_id_0 = 299,
    attribute_keychain_offset_x = 300,
    attribute_keychain_offset_y = 301,
    attribute_keychain_rotation = 302,
    attribute_keychain_seed = 306,
};


C++:
Expand Collapse Copy
class c_econ_item
{
public:
    void set_dynamic_attribute_value(int index, void* value);
    static c_econ_item* create_shared_object_subclass_econ_item();

public:
    void set_paint_kit(float kit) {
        set_dynamic_attribute_value(attribute_paint_kit, &kit);
    }

    void set_paint_seed(float seed) {
        set_dynamic_attribute_value(attribute_paint_seed, &seed);
    }

    void set_paint_wear(float wear) {
        set_dynamic_attribute_value(attribute_paint_wear, &wear);
    }

    void set_stat_trak(int count) {
        set_dynamic_attribute_value(attribute_stat_track, &count);
    }

    void set_stat_trak_type(int type) {
        set_dynamic_attribute_value(attribute_stat_track_type, &type);
    }

    void set_keychain(int id) {
        set_dynamic_attribute_value(attribute_keychain_slot_id_0, &id);
    }

    void set_keychain_seed(int seed) {
        set_dynamic_attribute_value(attribute_keychain_seed, &seed);
    }

    void set_keychain(float x, float y, float rotation)
    {
        set_dynamic_attribute_value(attribute_keychain_offset_x, &x);
        set_dynamic_attribute_value(attribute_keychain_offset_y, &y);
        set_dynamic_attribute_value(attribute_keychain_rotation, &rotation);
    }

    void set_sticker(int slot, int id) {
        set_dynamic_attribute_value(attribute_sticker_id + (slot * 4), &id);
    }

    void set_sticker(int slot, int id, float wear, float scale, float rotation, float x, float y) {
        set_dynamic_attribute_value(attribute_sticker_id + (slot * 4), &id);
        set_dynamic_attribute_value(attribute_sticker_wear + (slot * 4), &wear);
        set_dynamic_attribute_value(attribute_sticker_scale + (slot * 4), &scale);
        set_dynamic_attribute_value(attribute_sticker_rotation + (slot * 4), &rotation);

        set_dynamic_attribute_value(attribute_sticker_rotation_x + (slot * 2), &x);
        set_dynamic_attribute_value(attribute_sticker_rotation_y + (slot * 2), &y);
    }



public:
    void destruct() {
        return g_memory.call_virtual_func<void>(this, 1);
    }

public:
    _pad(0x10);
    uint64_t id;
    uint64_t original_id;
    void* custom_data_optimized_object;
    uint32_t account_id;
    uint32_t inventory;
    uint16_t def_index;
    uint16_t origin : 5;
    uint16_t quality : 4;
    uint16_t level : 2;
    uint16_t rarity : 4;
    uint16_t dirtybit_in_use : 1;
    int16_t item_set;
    int so_update_frame;
    uint8_t flags;
};



Надеюсь было полезно
бля внатуре, забыл сорянчик
it is not add_key_chain, it is c_econ_item::add_charm_to_tail_or_reserve

maybe better to use this
inventory->get_item_in_loadout(..., inventory_services->m_next_free_flair_slot);
and call invalidate_inventory_flair_diffuse
yo trashtalking about naming func asffff broooo smoke zaza everyday i feel ur swaaaag
 
этот броук ряльный даблар абсолютный вайперр черт возьми омагад щит чувак ты ракаешь эту чертову баленсиагу чувак у тебя ряльна дохуя свэга
ЧУВАК Я ЖОСКА РАКНУЛ ЭТУ БАЛЕНСИАГУ ЙОУ МЭНЧИК ДАБЛАР ДАБЛАР ШМОУКАЮ ЗАЗУ ЭВРИ ДЭЙ ВО МНЕ ЕБАТЬ МНОГО СВЭГА ЧУВААК ТЫ ЧУВСТВУЕШЬ ЭТОТ СВЭГ??? ПОЧУВСТВУЙ СО МНОЙ И РАКНИ ЭТУ ЧЕРТОВУ БАЛЕНСИАГУ ЧУВАААА
 
Последнее редактирование:
Скрытое содержимое

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.


ЧУВАК Я ЖОСКА РАКНУЛ ЭТУ БАЛЕНСИАГУ ЙОУ МЭНЧИК ДАБЛАР ДАБЛАР ШМОУКАЮ ЗАЗУ ЭВРИ ДЭЙ ВО МНЕ ЕБАТЬ МНОГО СВЭГА ЧУВААК ТЫ ЧУВСТВУЕШЬ ЭТОТ СВЭГ??? ПОЧУВСТВУЙ СО МНОЙ И РАКНИ ЭТУ ЧЕРТОВУ БАЛЕНСИАГУ ЧУВАААА
1771518453292.png
експенсив пеин еври дей саммер 2024 лас анжелес
 
Последнее редактирование:
making incorrect names and uploading them to the public is a dumb thing
yo bro wtf, why u asking about naming? i absolutely think, if it function adding keychain entity, why cant it be called "AddKeychain"?

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.


@mhalaider Михайло здравствуйте, оцените сколько героин злодеев из 10?
 
Назад
Сверху Снизу