HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Кодинг оружия
и всё что с этим связано
Страницы (5): « 1 2 3 [4] 5 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Lev
Житель форума

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 789
Возраст: 32

Рейтинг



Такой вопрос - как можно сделать, чтоб во время перезарядки любого оружия, нельзя было переключиться на другое, до тех пор, пока перезарядка не завершится - то есть ни через меню оружия, ни через кнопку Q?

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

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

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

Рейтинг



Lev
Идёшь в player.cpp находишь там

C++ Source Code:
void CBasePlayer::SelectItem(const char *pstr)

и в самом начале после
C++ Source Code:
if (!pstr)
  return;

вставляешь это
C++ Source Code:
1
if(m_pActiveItem)
2
{
3
  CBasePlayerWeapon *wpn = (CBasePlayerWeapon*)m_pActiveItem;
4
 
5
  if(wpn && wpn->m_fInReload)
6
    return;
7
 
8
}


потом ищешь
C++ Source Code:
void CBasePlayer::SelectLastItem(void)

там после
C++ Source Code:
1
if (!m_pLastItem)
2
{
3
  return;
4
}
5
 
6
if ( m_pActiveItem && !m_pActiveItem->CanHolster() )
7
{
8
  return;
9
}

вставляешь
C++ Source Code:
1
if(m_pActiveItem)
2
{
3
  CBasePlayerWeapon *wpn = (CBasePlayerWeapon*)m_pActiveItem;
4
 
5
  if(wpn && wpn->m_fInReload)
6
    return;
7
 
8
}

Отредактировано HAWK0044 08-08-2012 в 08:19

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

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

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 789
Возраст: 32

Рейтинг



Спасибо

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

Старое сообщение 08-08-2012 08:48
- За что?
Lev
Житель форума

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 789
Возраст: 32

Рейтинг



В атаке у любого ствола есть параметр отвечающий за частоту вызова этой функции - например

C++ Source Code:
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;


Как сделать, чтобы при одном нажатии на мышь производился один выстрел - и новый можно было сделать только при повторном нажатии?

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

Старое сообщение 23-08-2012 08:10
- За что?
PLut
Creator

Дата регистрации: Jun 2009
Проживает: Санкт-Петербург
Сообщений: 1220
Возраст: 31

Рейтинг



Lev По форуму бы поискал...

В начало функции стрельбы.

C++ Source Code:
if(!(m_pPlayer->m_afButtonPressed & IN_ATTACK))
  return;


А промежуток между выстрелами сделай меньше, например было 0.1, сделай 0.01.

__________________
Base Defense on Steam, ModDB

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

Старое сообщение 23-08-2012 08:32
- За что?
Lev
Житель форума

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 789
Возраст: 32

Рейтинг



Если 0.01 - то можно как из автомата стрелять)

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

Старое сообщение 23-08-2012 08:36
- За что?
qpAHToMAS
Интернетовское трепло

Дата регистрации: Sep 2007
Проживает: (void)
Сообщений: 1788
Возраст: 34

Рейтинг



Он хочет пистолет как в CS, а не как Glock в HL, который при +attack стреляет пока не кончатся патроны (а в CS будет лишь 1 выстрел).

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

Старое сообщение 23-08-2012 08:40
- За что?
Lev
Житель форума

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 789
Возраст: 32

Рейтинг



Да не только - мне ещё нужно третью атаку сделать (в Параное уже две есть) - хочу переключать режим стрельбы. Кстати - где кнопку можно забиндить для этого?

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

Старое сообщение 23-08-2012 08:45
- За что?
qpAHToMAS
Интернетовское трепло

Дата регистрации: Sep 2007
Проживает: (void)
Сообщений: 1788
Возраст: 34

Рейтинг



Цитата:
Lev писал:
где кнопку можно забиндить для этого?

code:
bind "mouse3" "+attack3"

Иначе говоря, нажатие на колесико мыши.

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

Старое сообщение 23-08-2012 08:49
- За что?
Lev
Житель форума

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 789
Возраст: 32

Рейтинг



Да я проще хотел сделать - чтобы не писать полноценную третью атаку - создать переменную, забиндить на неё кнопку - если нажатать один раз то один режим огня, если ещё раз - то следующий

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

Старое сообщение 23-08-2012 09:13
- За что?
KiQ
Житель форума

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

Рейтинг



Lev на импульс сделай

__________________
-Brain is dead-

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

Старое сообщение 23-08-2012 09:30
- За что?
Lev
Житель форума

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 789
Возраст: 32

Рейтинг



Это как?

Добавлено 23-08-2012 в 15:39:

Вот к примеру переменная

int firemode

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

Старое сообщение 23-08-2012 09:39
- За что?
KiQ
Житель форума

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

Рейтинг



емнип, в player.cpp в свитче импульсных команд ставишь свое число (например, 555) и пишешь, допустим:

C++ Source Code:
firemode = (firemode == 0) ? 1 : 0;


потом биндишь на любую клавишу impulse 555

Добавлено 23-08-2012 в 13:47:

P.S. только не в Cheat Commands, иначе будет работать только с sv_cheats 1

__________________
-Brain is dead-

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

Старое сообщение 23-08-2012 09:47
- За что?
Lev
Житель форума

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 789
Возраст: 32

Рейтинг



Фигня какая-то - всё сделал, но клавиша не работает. Написал в конвиге

bind "b" "impulse 45" - бестолку, хотя если через консоль - то всё работает(sv_cheats 1 не ввожу - просто impulse 45)

Добавлено 23-08-2012 в 16:55:

Да - ещё одно - это значение будет меняться глобально - то есть для всего оружия сразу - можно как-нибудь сохранять это значение для каждой пушки отдельно? Там, завести новую переменную, или ещё как

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

Старое сообщение 23-08-2012 10:55
- За что?
Lev
Житель форума

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 789
Возраст: 32

Рейтинг



Так - с клавишей разобрался. Теперь хочу вывести сообщение на экран - из CBasePlayer::ImpulseCommands всё выводится нормально

C++ Source Code:
1
case 45:
2
  if ( firemode == 1 )
3
  {
4
    firemode = 0;
5
    UTIL_ShowMessage("#FIRE_MODE_SINGLE", this );
6
  }
7
else
8
{
9
  firemode = 1;
10
  UTIL_ShowMessage("#FIRE_MODE_AUTO", this );
11
}
12
break;
- но мне нужно делать это из каждого ствола отдельно. Написал функцию - но не работает
C++ Source Code:
1
extern int firemode;
2
 
3
void CAPS::Shotmode()
4
{
5
  if (firemode == 0)
6
    UTIL_ShowMessage("#FIRE_MODE_SINGLE", m_pPlayer );
7
 
8
  if (firemode == 1)
9
    UTIL_ShowMessage("#FIRE_MODE_AUTO", m_pPlayer );
10
}
- хотя если вызвать UTIL_ShowMessage из любой другой функции в классе оружия - то всё работает

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

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



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


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

Временная зона GMT. Текущее время 22:58. Новая тема    Ответить
Страницы (5): « 1 2 3 [4] 5 »   Предыдущая тема   Следующая тема
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