А что за баг GetPlayerWeapon, когда игрок находится в машине? И почему его до сих пор не пофиксили?
Для тех кто не знает что за баг: Если при вызове функции игрок находится в транспорте, то функция возвращает id оружия, которое было до того, как он собственно оказался в транспорте.
До сей поры применял примерно такой метод:
Макрос выдачи оружия:
Код:
#define GiveWeapon(%0,%1,%2) GivePlayerWeapon(%0,%1,%2), SetPVarInt(%0,"ArmedWeapon",%1)
И для получения:
Код:
#define GetWeapon(%0) GetPVarint(%0,"ArmedWeapon")
Конечно лучше было бы реализовывать это с перехватчиками функций, но общей сути это не меняет.
Но здесь есть проблема, если игрок имеет оружие типа UZI, но садится в машину с кулаком или любым другим оружием, то когда игрок сел, у него в руках оказывается тот самый UZI. И тут уж никак не отследишь изменения.
Сейчас есть такая идея, в паблике OnPlayerStateChange делать проверку на водителя, затем запарсить весь арсенал игрока на наличие одного из 3 моделей оружия (теки, узи, и мп5, они все занимают 1 слот) с GetPlayerWeaponData и в случае нахождения, записывать в переменную id оружия.
Однако и тут загвоздка, из личного опыта знаю, что при наличии такого вида оружия при посадке отнюдь не всегда в руках оказывается оно самое, и иногда приходилось пересаживаться заного.
Вот такая головоломка, может у кого нибудь есть решение?
P.S в fixes.inc нет этого фикса, что странно.