Есть ли возможность в игре как-то принудительно сменить активный слот? Например, чтобы в руки взялась Аптечка или Таблетки, когда они есть в слоте.
Отправлено 11 Ноябрь 2020 - 15:28
Есть ли возможность в игре как-то принудительно сменить активный слот? Например, чтобы в руки взялась Аптечка или Таблетки, когда они есть в слоте.
Отправлено 11 Ноябрь 2020 - 17:34
как хак накрайняк можно удалить таблетки из инвентаря и выдать снова - возьмутся в руки
Отправлено 12 Ноябрь 2020 - 14:19
как хак накрайняк можно удалить таблетки из инвентаря и выдать снова - возьмутся в руки
Таблетки возможно, а аптечка нет.
Отправлено 13 Ноябрь 2020 - 1:25
Не проверял
Отправлено 13 Ноябрь 2020 - 17:20
Отправлено 27 Ноябрь 2020 - 18:48
Отправлено 03 Май 2021 - 21:29
Спасибо. Я нашел способ как это сделать. Чуть позже постараюсь сюда выложить.
Ради интереса, что это в итоге был за способ?
Отправлено 04 Май 2021 - 17:30
Ради интереса, что это в итоге был за способ?
Короче код там как всегда в моем стиле - геморный, но если интересен сам алгоритм, то насколько мне помнится, при выдаче аптечки я делаю следующие действия:
1. Сначала делаю хук SDKHook_WeaponSwitch
2. В SDKHook_WeaponSwitch указываю, что, если новым предметом взятым в руки является любое оружие или гранаты, то return Plugin_Handled
3. Выбрасываю предметы из всех слотов, кроме того, который мне нужен (таблетки или аптечки), так как на этих слотах автопереключения на предмет не идет при выдаче. (Сохраняя ID выброшенного оружия и гранат, само собой).
4. Возвращаю все выброшенные предметы по их сохраненному ID, тут в дело вступает как раз WeaponSwitch, который блочит автосмену и в руках в итоге мы так и держим аптечку или таблетки.
5. Делаю анхук SDKHook_WeaponSwitch
P.S. У данного способа один минус - нужно доп.условия делать в случае, если у тебя было два пистолета. Вернется только один. Мне пока лень этот момент проработать, но, когда-нибудь, надеюсь, исправлю.
Сообщение отредактировал 8rutu5: 04 Май 2021 - 17:31
Отправлено 04 Май 2021 - 17:38
Да, весьма необычно Спасибо за алгоритм, может пригодиться.
Кстати, не знаю как в L4D2, но в L4D1, если с пола взять второй пистолет, то хук WeaponSwitch не срабатывает, хотя при этом идёт смена первичной оружки на пистолет. Такой вот баг игры.
Отправлено 04 Май 2021 - 18:07
Да, весьма необычно Спасибо за алгоритм, может пригодиться.
Кстати, не знаю как в L4D2, но в L4D1, если с пола взять второй пистолет, то хук WeaponSwitch не срабатывает, хотя при этом идёт смена первичной оружки на пистолет. Такой вот баг игры.
С этими пистолетами вообще мутная тема. Во второй части пробовал через проп делать там было что-то типа isDualWeilded или как-то так, щас лень искать. Он вообще не работает, а вот если значение модельки проверить, там есть для одиночного пистолета и для двойного, то игра определяет, что у тебя 1 или 2 пистолета. Бред, в общем...
Отправлено 04 Май 2021 - 18:17
Точно не подскажу, надо проверять. Во второй части не знаю как, в L4D1, вроде как через эти флаги проверяется:
#define FL_PISTOL_PRIMARY (1<<6) // Is 1 when you have a primary weapon and dual pistols #define FL_PISTOL (1<<7) // Is 1 when you have dual pistols int bits = GetEntProp(client, Prop_Send, "m_iAddonBits"); if( bits & FL_PISTOL_PRIMARY ) { // ... } if( bits & FL_PISTOL ) { // ... }
И это ещё попробуй:
int dual = GetEntProp(oldweapon, Prop_Send, "m_hasDualWeapons");
Отправлено 04 Май 2021 - 18:21
Точно не подскажу, надо проверять. Во второй части не знаю как, в L4D1, вроде как через эти флаги проверяется:
#define FL_PISTOL_PRIMARY (1<<6) // Is 1 when you have a primary weapon and dual pistols #define FL_PISTOL (1<<7) // Is 1 when you have dual pistols int bits = GetEntProp(client, Prop_Send, "m_iAddonBits"); if( bits & FL_PISTOL_PRIMARY ) { // ... } if( bits & FL_PISTOL ) { // ... }И это ещё попробуй:
int dual = GetEntProp(oldweapon, Prop_Send, "m_hasDualWeapons");
Спасибо, попробую
0 пользователей, 0 гостей, 0 анонимных