Я придумал интересное решение для сохранения оружия после выхода и сильного античита на оружие.
Всё оружие которое игрок получает сохраняется в его базу данных.
Чтобы взять оружие наруки нужно "Достать обойму из разгрузки). Т. е. игрок нажимает Y. Выводится диалог с выбором оружия которое нужно зарядить. Если в "Разгрузке" оружие есть, то оно зарядится (1 обойма), сработает анимация и т. д.
Я хочу чтобы патронов нельзя было иметь "на руках" больше чем 1 обойма. Античит заключается в том что проверяет сколько у игрока на руках патронов. Если больше одной обоймы - кикает/банит и т. д.
Т. е. когда игрок заряжает дигл, то ему даётся 7 патронов. Второй раз заряжает и даётся вновь +7 патронов. Т, е. если он не потратил их, то будет уже 14 патронов.
Как жаль что нет команды SetPlayerWeapon. Чтобы устанавливало значение, а не добавляло.
Если я вначале ставлю -7 патронов, а потом выдаю 7 патронов, то как быть если игрок потратил патроны? У него становится патронов -7. Затем +7 и того при второй зарядке патронов 0, хотя зарядил новую обойму.
Я придумал выход из этой ситуации. Сделал систему "Разряжания оружия". Т. е. если игрок зарядил 1 обойму, то он не сможет зарядить вторую пока не разрядит.
Разрядка подразумевает обнуление количества патрон которое у игрока не на руках, а вообще при нём.
Т. е. игрок пострелял и у него осталось 3 патрона. Пистолет в руках не держит. Спрятал в карман. А для разряжания нужно обнулить эти патроны. Как жаль что нет команды "УСТАНОВИТЬ" колличество, а лишь прибавить либо отнять. Тут нужен сканер патронов.
Это функция GetPlayerWeaponData(playerid, слот, Ид оружия, колличество патронов);
Проблемма в том, что у меня не получается ею воспользоваться. Я пытаюсь сделать так:
Хочу сканировать сколько у игрока осталось патронов дигла и их отнять.
new ammo; // переменная, которая будет хранить колличество патронов в дигле
GetPlayerWeaponData(playerid, 2, 24, ammo); // сканирую игрока, второй солт, дигл и колличество патронов записывается в переменную
GivePlayerWeapon(playerid,24,-ammo); // Отнимается то количество патронов, которое было у игрока. Ведь если загнать количество в минус, то так и будет бегать с оружием в минусе. Ведь нет команды "УСТАНОВИТЬ", а не выдать количество патронов.
Выдаёт ошибку
На строкуКод:error 035: argument type mismatch (argument 3)
Подскажите как мне лучше поступить? Может вы мне подскажите создать STOCK который будет обнулять отдельное оружие.Код:GetPlayerWeaponData(playerid, 2, 24, ammo);
Я использую только следующее оружие и мне не предётся делать систему разрядки. Просто вызов стока поставлю в заряжание дабы он обнулял прежде чем выдать новую обойму. Научите меня пожалуйста пользоватьс функцией GetPlayerWeaponData чтобы сканировать только определённое оружие.
Дигл, кольт, шотган, спас12, МП5, АК, М4, Рифл, Снайперка, РПГ