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

Гайд CS2 Alt Weapon ID — Получаем индекс пушки без m_pClippingWeapon

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
703
Реакции
21
Здорово, реверсеры. Если вы все еще мучаетесь с m_pClippingWeapon или ищете более стабильный вариант для получения ID активного ствола в руках, притащил вам рабочий метод через m_pWeaponServices. Это база для тех, кто пилит свой external на CS2 и хочет иметь нормальный чекер индекса без лишних костылей.

Логика тут простая: заходим в WeaponServices пешки, вытягиваем хендл активного оружия, а затем через dwEntityList находим нужную пушку. В итоге добираемся до ItemDefinitionIndex через AttributeManager. Метод проверенный, живет дольше, чем прямые линки, которые Valve любят ломать в микро-патчах.

Сам код получения ID:
Код:
Expand Collapse Copy
auto m_pWeaponServices = read<uintptr_t>(playerPawn + Offset.BasePlayerPawn.m_pWeaponServices);
auto activeWeaponHandle = read<uint32_t>(m_pWeaponServices + Offset.BasePlayerPawn.m_hActiveWeapon);
auto entityList = read<uintptr_t>(base + Offset.Client.dwEntityList);
uintptr_t weapon = GetEntityByIndex(entityList, activeWeaponHandle);
auto weaponID = read<uint16_t>(weapon + Offset.EconItem.m_iItemDefinitionIndex + Offset.AttributeContainer.m_Item + Offset.EconEntity.m_AttributeManager);

Вспомогательная функция GetEntityFromHandle:
Код:
Expand Collapse Copy
uintptr_t GetEntityFromHandle(uintptr_t entityListBase, uint32_t handle) {
 if (entityListBase == 0 || handle == 0xFFFFFFFF) return 0;
 uintptr_t listEntry = MemMan.ReadMem<uintptr_t>(entityListBase + 0x10 + 8 * ((handle & 0x7FFF) >> 9));
 if (listEntry == 0) return 0;
 uintptr_t entity = MemMan.ReadMem<uintptr_t>(listEntry + 0x70 * (handle & 0x1FF));
 return entity;
}

Если кому-то лень самому забивать маппинг для неймов в ESP или логах, держите готовый список индексов:
Код:
Expand Collapse Copy
inline std::map<int, std::string> weapon_name_map = {
 {1, "deagle"},
 {2, "elite"},
 {3, "fiveseven"},
 {4, "glock"},
 {7, "ak47"},
 {8, "aug"},
 {9, "awp"},
 {10, "famas"},
 {11, "g3sg1"},
 {13, "galilar"},
 {14, "m249"},
 {16, "m4a1"},
 {17, "mac10"},
 {19, "p90"},
 {24, "ump"},
 {25, "xm1014"},
 {26, "bizon"},
 {27, "mag7"},
 {28, "negev"},
 {29, "sawedoff"},
 {30, "tec9"},
 {31, "taser"},
 {32, "hkp2000"},
 {33, "mp7"},
 {34, "mp9"},
 {35, "nova"},
 {36, "p250"},
 {38, "scar20"},
 {39, "sg556"},
 {40, "ssg08"},
 {42, "knife"},
 {43, "flashbang"},
 {44, "hegrenade"},
 {45, "smokegrenade"},
 {46, "molotov"},
 {47, "decoy"},
 {48, "incgrenade"},
 {49, "c4"},
 {59, "knife"},
 {60, "m4a1_silencer"},
 {61, "usp_silencer"},
 {63, "cz75a"},
 {64, "revolver"},
 {500, "knife"},
 {505, "knife"},
 {506, "knife"},
 {507, "knife"},
 {508, "knife"},
 {509, "knife"},
 {512, "knife"},
 {514, "knife"},
 {515, "knife"},
 {516, "knife"},
 {526, "knife"}
};

Юзайте, пока Габен опять все не перелопатил. Если есть варианты как сократить цепочку чтений, пишите в тред.
 
Назад
Сверху Снизу