Программы на C++. Форум разработчиков
Anonymous
Наложение текстур на UV оружия криво в CS2.
Сообщение
Anonymous » 06 мар 2026, 19:40
Я пытался создать InventoryChanger на основе Берсеркера. Все работает, но текстура скина при наложении кривая, как будто у оружия неправильная UV-сетка. Данная проблема возникает абсолютно со всеми скинами. Функция добавления скина (используется в пользовательском интерфейсе)
Код: Выделить всё
void AddSkinToInventory(S::c_dumped_item* item, S::c_dumped_skins* skin) {
if (!item || !skin) return;
CCSPlayerInventory* pInventory = CCSPlayerInventory::GetInstance();
if (!pInventory) return;
CEconItem* pItem = CEconItem::CreateInstance();
if (!pItem) return;
auto highestIDs = pInventory->GetHighestIDs();
pItem->m_ulID = highestIDs.first + 1;
pItem->m_unInventory = 1 m_unAccountID = uint32_t(pInventory->GetOwner().m_id);
pItem->m_unDefIndex = item->m_def_index;
pItem->m_nQuality = 4;
pItem->m_nRarity = skin->m_rarity;
pItem->SetPaintKit(skin->m_id);
pItem->SetPaintSeed(1);
pItem->SetPaintWear(0.001f);
pInventory->AddEconItem(pItem);
auto pInvManager = CCSInventoryManager::GetInstance();
if (pInvManager) {
pInvManager->EquipItemInLoadout(2, item->m_def_index, pItem->m_ulID);
pInvManager->EquipItemInLoadout(3, item->m_def_index, pItem->m_ulID);
}
S::AddEconItemToList(pItem, (float)skin->m_id, 1.f, 0.001f, false);
}
Создание сетки с использованием Paintseed, PaintKit и т. д.
Код: Выделить всё
void ApplyWeaponSkins(C_CSPlayerPawn* pLocalPawn, CCSPlayerInventory* pInventory, C_CS2HudModelWeapon* pHudModelWeapon) {
if (!pLocalPawn || (uintptr_t)pLocalPawn < 0x1000000) return;
if (!pInventory || (uintptr_t)pInventory < 0x1000000) return;
C_CSWeaponBase* pWeapon = pLocalPawn->GetActiveWeaponPlayer();
if (!pWeapon || (uintptr_t)pWeapon < 0x1000000) return;
CGameSceneNode* pWeaponSceneNode = pWeapon->GetGameSceneNode();
if (!pWeaponSceneNode) return;
C_AttributeContainer* pAttributeContainer = &pWeapon->m_AttributeManager();
C_EconItemView* pWeaponItemView = &pAttributeContainer->m_Item();
if (!pWeaponItemView) return;
C_EconItemDefinition* pWeaponDefinition = pWeaponItemView->get_static_data();
if (!pWeaponDefinition || pWeaponDefinition->is_knife(false)) return;
const uint64_t steamID = pInventory->GetOwner().m_id;
const auto nLoadoutSlot = pWeaponDefinition->GetLoadoutSlot();
C_EconItemView* pInLoadout = pInventory->GetItemInLoadout(pWeapon->m_iOriginalTeamNumber(), nLoadoutSlot);
if (!pInLoadout || pInLoadout->m_iItemID() == 0) return;
const uint64_t oldItemID = pWeaponItemView->m_iItemID();
if (oldItemID != pInLoadout->m_iItemID()) {
pWeaponItemView->m_iItemID() = pInLoadout->m_iItemID();
pWeaponItemView->m_iItemIDHigh() = pInLoadout->m_iItemIDHigh();
pWeaponItemView->m_iItemIDLow() = pInLoadout->m_iItemIDLow();
pWeaponItemView->m_iAccountID() = uint32_t(steamID);
pWeaponItemView->m_bDisallowSOCm() = false;
pWeaponItemView->m_bRestoreCustomMaterialAfterPrecache() = true;
pWeapon->UpdateComposite(1);
pWeapon->UpdateCompositeSec(1);
S::clear_hud(pWeaponItemView);
}
}
Подробнее здесь:
https://stackoverflow.com/questions/799 ... ked-in-cs2
1772815254
Anonymous
Я пытался создать InventoryChanger на основе Берсеркера. Все работает, но текстура скина при наложении кривая, как будто у оружия неправильная UV-сетка. Данная проблема возникает абсолютно со всеми скинами. Функция добавления скина (используется в пользовательском интерфейсе) [code]void AddSkinToInventory(S::c_dumped_item* item, S::c_dumped_skins* skin) { if (!item || !skin) return; CCSPlayerInventory* pInventory = CCSPlayerInventory::GetInstance(); if (!pInventory) return; CEconItem* pItem = CEconItem::CreateInstance(); if (!pItem) return; auto highestIDs = pInventory->GetHighestIDs(); pItem->m_ulID = highestIDs.first + 1; pItem->m_unInventory = 1 m_unAccountID = uint32_t(pInventory->GetOwner().m_id); pItem->m_unDefIndex = item->m_def_index; pItem->m_nQuality = 4; pItem->m_nRarity = skin->m_rarity; pItem->SetPaintKit(skin->m_id); pItem->SetPaintSeed(1); pItem->SetPaintWear(0.001f); pInventory->AddEconItem(pItem); auto pInvManager = CCSInventoryManager::GetInstance(); if (pInvManager) { pInvManager->EquipItemInLoadout(2, item->m_def_index, pItem->m_ulID); pInvManager->EquipItemInLoadout(3, item->m_def_index, pItem->m_ulID); } S::AddEconItemToList(pItem, (float)skin->m_id, 1.f, 0.001f, false); } [/code] Создание сетки с использованием Paintseed, PaintKit и т. д. [code]void ApplyWeaponSkins(C_CSPlayerPawn* pLocalPawn, CCSPlayerInventory* pInventory, C_CS2HudModelWeapon* pHudModelWeapon) { if (!pLocalPawn || (uintptr_t)pLocalPawn < 0x1000000) return; if (!pInventory || (uintptr_t)pInventory < 0x1000000) return; C_CSWeaponBase* pWeapon = pLocalPawn->GetActiveWeaponPlayer(); if (!pWeapon || (uintptr_t)pWeapon < 0x1000000) return; CGameSceneNode* pWeaponSceneNode = pWeapon->GetGameSceneNode(); if (!pWeaponSceneNode) return; C_AttributeContainer* pAttributeContainer = &pWeapon->m_AttributeManager(); C_EconItemView* pWeaponItemView = &pAttributeContainer->m_Item(); if (!pWeaponItemView) return; C_EconItemDefinition* pWeaponDefinition = pWeaponItemView->get_static_data(); if (!pWeaponDefinition || pWeaponDefinition->is_knife(false)) return; const uint64_t steamID = pInventory->GetOwner().m_id; const auto nLoadoutSlot = pWeaponDefinition->GetLoadoutSlot(); C_EconItemView* pInLoadout = pInventory->GetItemInLoadout(pWeapon->m_iOriginalTeamNumber(), nLoadoutSlot); if (!pInLoadout || pInLoadout->m_iItemID() == 0) return; const uint64_t oldItemID = pWeaponItemView->m_iItemID(); if (oldItemID != pInLoadout->m_iItemID()) { pWeaponItemView->m_iItemID() = pInLoadout->m_iItemID(); pWeaponItemView->m_iItemIDHigh() = pInLoadout->m_iItemIDHigh(); pWeaponItemView->m_iItemIDLow() = pInLoadout->m_iItemIDLow(); pWeaponItemView->m_iAccountID() = uint32_t(steamID); pWeaponItemView->m_bDisallowSOCm() = false; pWeaponItemView->m_bRestoreCustomMaterialAfterPrecache() = true; pWeapon->UpdateComposite(1); pWeapon->UpdateCompositeSec(1); S::clear_hud(pWeaponItemView); } } [/code] [img]https://i.sstatic.net/BHJ0LNIz.jpg[/img] Подробнее здесь: [url]https://stackoverflow.com/questions/79902403/the-texture-mapping-on-the-weapons-uvs-is-crooked-in-cs2[/url]