илья2 ну вот нафига? pev->weapons передаёт битовую маску, а не десятичное число с номером оружия. WEAPON_NONE и так по-умолчанию имеется у игрока. Вылет происходит на этапе какой-то проверки на нулёвость, которых тонна на сервере и на клиенте. А зачем вообще занимать нулевой Id? Их же 29 или 30 штук доступно.
илья2 номер Id не влияет на слот, занимаемый оружием. Вот так у монтировки:
C++ Source Code:
p->iSlot = 0;
p->iPosition = 0;
p->iId = WEAPON_CROWBAR; // 1
Id у неё 1, а слот нулевой. Пусть у тебя будут кулаки, скажем с Id 16 сразу после снарков. А ты задай им слот 0 и позицию 0. А монтировке слот 0 и позицию 1. Тогда кулаки будут впереди монтировки в механизме переключения оружия.
Ku2zoff писал: функционал выборочного убирания оружия
Дам подсказку. CBasePlayer::RemoveAllItems.
C++ Source Code:
1
int i;
2
CBasePlayerItem *pPendingItem;
3
for (i = 0; i < MAX_ITEM_TYPES; i++)
4
{
5
m_pActiveItem = m_rgpPlayerItems[i];
6
while (m_pActiveItem)
7
{
8
pPendingItem = m_pActiveItem->m_pNext;
9
m_pActiveItem->Drop( );
10
m_pActiveItem = pPendingItem;
11
}
12
m_rgpPlayerItems[i] = NULL;
13
}
14
m_pActiveItem = NULL;
В цикле while надо воткнуть проверку оружия по m_iId или по класснейму. Если пушка из массива не совпадает с целевой, continue, то есть продолжаем перебор массива. Если совпадает, то делаем Drop. Для удобства надо подавать в эту функцию в кач-ве аргумента не только булевую переменную на выброс костюма, но и const char с класснеймом целевого предмета. Типа так:
C++ Source Code:
CBasePlayer *pPlayer;
pPlayer->RemoveAllItems("weapon_crowbar");
Есть ещё функция CBasePlayer::RemovePlayerItem, но она принимает в кач-ве аргумента указатель на класс.
а если поставить несуществующую позицию и слот. оружие удалиться из худа ?
например так:
p->iSlot = -1;
p->iPosition = -1;
или так
p->iSlot = NULL;
p->iPosition = NULL;
Добавлено 06-09-2022 в 13:43:
проверил работает. Надо было самого начала так сделать не догадался малек.
Добавлено 06-09-2022 в 13:47:
все оказывается просто было и не надо было изобретать велосипед
Добавлено 06-09-2022 в 14:11:
вот так это в принципе и работает кулаки которые без костюма находятся на -1 слоте и позиции а когда достаем и одеваем костюм то кулаки уже в костюме ну в общем как в brutal half-life
илья2 писал: а если поставить несуществующую позицию и слот. оружие удалиться из худа ?
А как переключаться на него в таком случае? Можно конечно забиндить на клавишу, как в квейке. Не все об этом знают, но можно.
Добавлено 06-09-2022 в 18:23:
Цитата:
илья2 писал: как убрать оружие с инвентаря игрока ?
Цитата:
илья2 писал: а если поставить несуществующую позицию и слот. оружие удалиться из худа ?
Ты уж определись, убрать оружие из инвентаря (то есть совсем), или из худа. Не забудь сделать bind "клавиша" "weapon_kulaki", чтобы можно было на них переключиться.