HLFX.Ru Forum Страницы (245): « Первая ... « 233 234 235 236 [237] 238 239 240 241 » ... Последняя »
Показать все 3663 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нубские вопросы от <censored> и других нубов (https://hlfx.ru/forum/showthread.php?threadid=4535)


Отправлено Ku2zoff 04-09-2022 в 14:49:

илья2 ну вот нафига? pev->weapons передаёт битовую маску, а не десятичное число с номером оружия. WEAPON_NONE и так по-умолчанию имеется у игрока. Вылет происходит на этапе какой-то проверки на нулёвость, которых тонна на сервере и на клиенте. А зачем вообще занимать нулевой Id? Их же 29 или 30 штук доступно.


Отправлено Дядя Миша 04-09-2022 в 15:08:

WEAPON_NONE - это 0. Сам подумай, можно ли на ноль что-то вешать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

>> так а раньше почему падало ?
> Потому что говно ваш С++, вот почему


Отправлено илья2 04-09-2022 в 15:15:

Цитата:
Ku2zoff писал:
илья2 А зачем вообще занимать нулевой Id? Их же 29 или 30 штук доступно.
ну как зачем например кулаки поставить с самого начала круто же будет

__________________
Илья


Отправлено Дядя Миша 04-09-2022 в 15:19:

Если оружие невозможно убрать - ему не нужен никакой идентификатор.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

>> так а раньше почему падало ?
> Потому что говно ваш С++, вот почему


Отправлено Ku2zoff 04-09-2022 в 15:21:

илья2 номер Id не влияет на слот, занимаемый оружием. Вот так у монтировки:

C++ Source Code:
p->iSlot = 0;
p->iPosition = 0;
p->iId = WEAPON_CROWBAR; // 1

Id у неё 1, а слот нулевой. Пусть у тебя будут кулаки, скажем с Id 16 сразу после снарков. А ты задай им слот 0 и позицию 0. А монтировке слот 0 и позицию 1. Тогда кулаки будут впереди монтировки в механизме переключения оружия.


Отправлено илья2 04-09-2022 в 15:24:

Цитата:
Дядя Миша писал:
WEAPON_NONE - это 0. Сам подумай, можно ли на ноль что-то вешать.
ладно ты прав нельзя. C чего я подумал что это хорошая идея

Добавлено 04-09-2022 в 18:24:

можно поставить оружие в спавн самого игрока с самого начала будет в полне норм

__________________
Илья


Отправлено Ku2zoff 04-09-2022 в 15:27:

Цитата:
илья2 писал:
можно поставить оружие в спавн самого игрока

game_player_equip и всего делов. Только это мультиплеерная энтить, ей надо сейв/рестор массива даваемых игроку предметов по-хорошему прикрутить.


Отправлено илья2 05-09-2022 в 21:57:

как убрать оружие с инвентаря игрока ? есть ли код для этого ?

__________________
Илья


Отправлено Ku2zoff 06-09-2022 в 02:37:

Энтитя player_weaponstrip. Только она убирает ВСЕ оружия и опционально костюм. Но можно дописать ей функционал выборочного убирания оружия.


Отправлено илья2 06-09-2022 в 08:34:

Цитата:
Ku2zoff писал:
Но можно дописать ей функционал выборочного убирания оружия.
и что надо дописать ?

__________________
Илья


Отправлено Ku2zoff 06-09-2022 в 08:50:

Цитата:
илья2 писал:
и что надо дописать ?

Цитата:
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, но она принимает в кач-ве аргумента указатель на класс.


Отправлено Дядя Миша 06-09-2022 в 08:56:

Помнится для корректного выбрасывания пушки в P2 я довольно много кода дописывал. Там по нормальному не сделаешь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

>> так а раньше почему падало ?
> Потому что говно ваш С++, вот почему


Отправлено Ku2zoff 06-09-2022 в 09:20:

Дядя Миша для выбрасывания да. А для удаления уже всё есть в RemovePlayerItem.


Отправлено илья2 06-09-2022 в 11:11:

а если поставить несуществующую позицию и слот. оружие удалиться из худа ?
например так:

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

https://youtu.be/yP448eB-0eY

__________________
Илья


Отправлено Ku2zoff 06-09-2022 в 11:23:

Цитата:
илья2 писал:
а если поставить несуществующую позицию и слот. оружие удалиться из худа ?

А как переключаться на него в таком случае? Можно конечно забиндить на клавишу, как в квейке. Не все об этом знают, но можно.

Добавлено 06-09-2022 в 18:23:

Цитата:
илья2 писал:
как убрать оружие с инвентаря игрока ?

Цитата:
илья2 писал:
а если поставить несуществующую позицию и слот. оружие удалиться из худа ?

Ты уж определись, убрать оружие из инвентаря (то есть совсем), или из худа. Не забудь сделать bind "клавиша" "weapon_kulaki", чтобы можно было на них переключиться.


Временная зона GMT. Текущее время 18:37. Страницы (245): « Первая ... « 233 234 235 236 [237] 238 239 240 241 » ... Последняя »
Показать все 3663 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2022