Описание:
Вызывается когда игрок стреляет из оружия. Срабатывает только на оружие, которое стреляет пулями. Так же срабатывает на стрельбу с пассажирского места в транспорте.
Параметры:
- playerid - ID игрока, который выстрелил из оружия;
- weaponid - ID оружия, из которого выстрелил игрок;
- hittype - Тип предмета, в который попала пуля (неизвестно, игрок, транспорт или объект);
- hitid - ID предмета, в который попала пуля (игрок, транспорт, объект);
- fX - Координата X попадания пули;
- fY - Координата Y попадания пули;
- fZ - Координата Z попадания пули.
Возвращаемое значение:
- 0 - Предотвращает нанесение урона пулями;
- 1 - Разрешает нанесение урона пулями.
В фильтрскриптах, при возврате 0 функция не будет вызвана в других фильтрскриптах.
Примечания:
- Эта автовызываемая функция вызывается только тогда, когда включена компенсация задержки (lagcompmode в server.cfg);
- Если параметр hittype равен BULLET_HIT_TYPE_NONE, то параметры fX, fY и fZ являются нормальными координатами, но если пуля никуда не попала (к примеру дальний объект, которого не может достичь пуля), то они будут иметь значения 0.0;
- Параметры fX, fY и fZ являются смещениями относительно hitid;
- GetPlayerLastShotVectors можно использовать в этой автовызываемой функции для получения более подробной информации о векторе пули.
Известные баги:
- Не вызывается при стрельбе с водительского места, а так же при стрельбе из оружия установленного на транспорт (Hunter, Hydra, Seasparrow и др.).
- При стрельбе в игрока, который находится в транспорте параметр hittype будет иметь значение BULLET_HIT_TYPE_VEHICLE, а hitid ID транспорта.
- Если злоумышленник отправляет поддельные данные об оружии, у других игроков может происходить краш клиента. Чтобы предотвратить это: проверьте, действительно ли оружие стреляет пулями.
Пример использования:
public OnPlayerWeaponShot(playerid
, weaponid
, hittype
, hitid
, Float:fX
, Float:fY
, Float:fZ
) {
static Float:object_hp[MAX_OBJECTS] = {100.0, ...};
if(hittype == BULLET_HIT_TYPE_OBJECT) {
object_hp[hitid] -= 10.0;
if(object_hp[hitid] <= 0.0) {
}
else {
static const fmt_string[] = "Вы нанесли урон объекту. Прочность: %.1f ед.";
new string[sizeof(fmt_string)+(-4+5)+1];
format(string
, sizeof(string
), fmt_string
, object_hp
[hitid
]); }
}
return 1;
}
Статью подготовил: punkochel
Источники: https://www.open.mp/docs/scripting/c...ayerWeaponShot
*Исключительно для pro-pawn.ru
Копирование данной статьи на других ресурсах без разрешения автора или Daniel_Cortez запрещено!