HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Оружие
Кто знает, как сделать, чтобы в одном слоте было только одно оружие
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 27

Рейтинг



Оружие

Как сделать так, чтобы можно было взять только один автомат, один пистолет, как в кс?
Я сделал так:
В int CBasePlayer::AddPlayerItem( CBasePlayerItem *pItem ) пихнул

C++ Source Code:
if( m_rgpPlayerItems[pItem->iItemSlot()] )
  return FALSE;


Оно работает, НО если я выброшу например глок, возьму дигл, подойду к глоку, то он исчезнет( но не появится у меня )

Как сделать правильно?

Сообщить модератору | IP: Записан
Сообщение: 97402

Старое сообщение 02-05-2012 12:29
- За что?
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2090

Рейтинг



ONeiLL в коде глока в функции навроде Touch поставь проверку свободен ли слот.

__________________
-Brain is dead-

Сообщить модератору | IP: Записан
Сообщение: 97403

Старое сообщение 02-05-2012 13:08
- За что?
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 27

Рейтинг



Я не нашол

Добавлено 02-05-2012 в 18:19:

KiQ , прикол не в этом, просто когда я иду к глоку, то забираю патроны, сам пекаль не берётся, но исчезает
П.С Так со всем оружием

Сообщить модератору | IP: Записан
Сообщение: 97404

Старое сообщение 02-05-2012 14:19
- За что?
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2090

Рейтинг



ну правильно, ты же к нему прикасашься, на стороне глока выполняется код поднятия - берутся патроны и вызывается UTIL_Remove(), но на стороне игрока происходит проверка, и оружие не добавляется. Как то так. Попробуй тут замутить проверку:
weapons.cpp

C++ Source Code:
1
int CBasePlayerWeapon::AddToPlayer( CBasePlayer *pPlayer )
2
{
3
  int bResult = CBasePlayerItem::AddToPlayer( pPlayer );
4
 
5
  pPlayer->pev->weapons |= (1<<m_iId);
6
 
7
  if ( !m_iPrimaryAmmoType )
8
  {
9
    m_iPrimaryAmmoType = pPlayer->GetAmmoIndex( pszAmmo1() );
10
    m_iSecondaryAmmoType = pPlayer->GetAmmoIndex( pszAmmo2() );
11
  }
12
 
13
 
14
  if (bResult)
15
    return AddWeapon( );
16
  return FALSE;
17
}

__________________
-Brain is dead-

Сообщить модератору | IP: Записан
Сообщение: 97429

Старое сообщение 02-05-2012 16:22
- За что?
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 27

Рейтинг



Вот я и не знаю как здесь проверить, как в этой функции узнать, какое оружие я беру?

Сообщить модератору | IP: Записан
Сообщение: 97436

Старое сообщение 02-05-2012 18:18
- За что?
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2090

Рейтинг



ONeiLL смысле, зачем?

__________________
-Brain is dead-

Сообщить модератору | IP: Записан
Сообщение: 97446

Старое сообщение 03-05-2012 04:27
- За что?
PomanoB
Житель форума

Дата регистрации: Aug 2010
Проживает: (void)
Сообщений: 157

Рейтинг



Я бы тут проверку делал:

C++ Source Code:
1
BOOL CGameRules::CanHavePlayerItem( CBasePlayer *pPlayer, CBasePlayerItem *pWeapon )
2
{
3
  // only living players can have items
4
  if ( pPlayer->pev->deadflag != DEAD_NO )
5
    return FALSE;
6
  if( pPlayer->m_rgpPlayerItems[pWeapon->iItemSlot()] ) // <---
7
    return FALSE;                                            //  <---
8
  if ( pWeapon->pszAmmo1() )
9
  {
10
    if ( !CanHaveAmmo( pPlayer, pWeapon->pszAmmo1(), pWeapon->iMaxAmmo1() ) )
11
    {
12
      // we can't carry anymore ammo for this gun. We can only
13
      // have the gun if we aren't already carrying one of this type
14
      if ( pPlayer->HasPlayerItem( pWeapon ) )
15
      {
16
        return FALSE;
17
      }
18
    }
19
  }
20
  else
21
  {
22
    // weapon doesn't use ammo, don't take another if you already have it.
23
    if ( pPlayer->HasPlayerItem( pWeapon ) )
24
    {
25
      return FALSE;
26
    }
27
  }
28
 
29
  // note: will fall through to here if GetItemInfo doesn't fill the struct!
30
  return TRUE;
31
}

Сообщить модератору | IP: Записан
Сообщение: 97450

Старое сообщение 03-05-2012 05:35
- За что?
HAWK0044
Житель форума

Дата регистрации: Oct 2010
Проживает: Анапа
Сообщений: 563
Возраст: 28

Рейтинг



ааа ,вот что ты хотел сделать... Очень просто, при подборе оружия, в тауче энтитии смотришь его итемслот , и прибавляешь игроку переменную с кол-вом оружия, при дропе отбавляешь , в тауче проверяешь на нужное тебе оружия.

З.Ы Клон кс пилишь?

Сообщить модератору | IP: Записан
Сообщение: 97483

Старое сообщение 03-05-2012 14:05
- За что?
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 27

Рейтинг



HAWK0044 ага

Добавлено 03-05-2012 в 21:11:

PomanoB так вообще не работает

Сообщить модератору | IP: Записан
Сообщение: 97499

Старое сообщение 03-05-2012 17:11
- За что?
marikcool
Житель форума

Дата регистрации: Jul 2011
Проживает: kz
Сообщений: 1522
Возраст: 39

Рейтинг



пора открывать сообщество кс клонов)))

Сообщить модератору | IP: Записан
Сообщение: 97505

Старое сообщение 03-05-2012 18:11
- За что?
HAWK0044
Житель форума

Дата регистрации: Oct 2010
Проживает: Анапа
Сообщений: 563
Возраст: 28

Рейтинг



marikcool
Чур мой пойдёт на новалинк!

Добавлено 03-05-2012 в 22:54:

ONeiLL
я ему алгоритм написал, а он код смотрит и говорит что не работает.... Попробуй сделать как я сказал

Сообщить модератору | IP: Записан
Сообщение: 97506

Старое сообщение 03-05-2012 18:54
- За что?
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 27

Рейтинг



пробую

Сообщить модератору | IP: Записан
Сообщение: 97509

Старое сообщение 03-05-2012 18:59
- За что?
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2090

Рейтинг



CBasePlayerItem::DefaultTouch, если пушка его не переопределяет, конечно. Но вроде нет.

__________________
-Brain is dead-

Сообщить модератору | IP: Записан
Сообщение: 97510

Старое сообщение 03-05-2012 19:11
- За что?
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 27

Рейтинг



ура, я зделал!!!

Сообщить модератору | IP: Записан
Сообщение: 98209

Старое сообщение 15-05-2012 20:48
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 13:20. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Оружие
Кто знает, как сделать, чтобы в одном слоте было только одно оружие
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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