Current weapon ID

Новичок
Статус
Оффлайн
Регистрация
24 Сен 2017
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Шарит кто, как получить id оружия, которое в руках у игрока?
Перечитал кучу топиков, но так и не понял в чем моя ошибка..
мой код на C# :
private static int WeaponID2(int player_index) // индексация с 0
{
int iPlayer = clientDll + EntityBase + player_index * 0x10;
int weaponHandle = BitConverter.ToInt32(ReadMemory((IntPtr)iPlayer + hActiveWeapon, 4), 0);
int weaponEntID = weaponHandle & 0xFFF;
int weaponID = BitConverter.ToInt32(ReadMemory((IntPtr)clientDll + EntityBase + (weaponEntID - 1) * 0x10, 4), 0);
int weapon = BitConverter.ToInt32(ReadMemory((IntPtr)weaponID + 0x2F88, 4), 0);
return weapon;
}

0x2F88 - это m_iItemDefinitionIndex
hActiveWeapon = 0x2EE8

Промежуточные значения:
 
Начинающий
Статус
Оффлайн
Регистрация
5 Окт 2016
Сообщения
25
Реакции[?]
7
Поинты[?]
0
m_iItemDefinitionIndex не актуален уже несколько патчей. ID оружия можно получить так:

class ItemDefinition
{
public:
char pad_0x0000[0x8]; //0x0000
__int32 m_WeaponID; //0x0008
char pad_0x000C[0x48]; //0x000C
char* m_WeaponType; //0x0054
char pad_0x0058[0x15C]; //0x0058
char* m_WeaponName; //0x01B4
char pad_0x01B8[0x24C]; //0x01B8
};//Size=0x0404

int m_weapon = m_local->GetWeapon();
DWORD weapon_offset = ((m_weapon & 0xFFF) - 1) * 0x10;
DWORD Active_Weapon = *(DWORD*)((this->EntityList) + weapon_offset);
BaseCombatWeapon *weapon = (BaseCombatWeapon*)(Active_Weapon);
int weapon_id = weapon->GetWeaponID();

DWORD GetWeaponID()
{
if (!this)return 0;
DWORD WeaponID = 0;
ItemDefinition* m_Item = *(ItemDefinition**)((DWORD)this + 0x32DC + 0x4);
if (!IsValidPtrFull(m_Item))return 0;
WeaponID = m_Item->m_WeaponID;
return WeaponID;
}
 
Сверху Снизу