Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 1 из 1

Тема: OnPlayerWeaponShot

  1. #1
    Аватар для punkochel
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.12.2018
    Адрес
    Россия
    Сообщений
    146
    Репутация:
    25 ±

    OnPlayerWeaponShot

    Описание:
    Вызывается когда игрок стреляет из оружия. Срабатывает только на оружие, которое стреляет пулями. Так же срабатывает на стрельбу с пассажирского места в транспорте.

    Параметры:
    • 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 транспорта.
    • Если злоумышленник отправляет поддельные данные об оружии, у других игроков может происходить краш клиента. Чтобы предотвратить это: проверьте, действительно ли оружие стреляет пулями.

    Пример использования:
    1. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    2. {
    3. static Float:object_hp[MAX_OBJECTS] = {100.0, ...};
    4. if(hittype == BULLET_HIT_TYPE_OBJECT) {
    5. object_hp[hitid] -= 10.0;
    6. if(object_hp[hitid] <= 0.0) {
    7. DestroyObject(hitid);
    8. SendClientMessage(playerid, -1, "Вы разрушили объект");
    9. }
    10. else {
    11. static const fmt_string[] = "Вы нанесли урон объекту. Прочность: %.1f ед.";
    12. new string[sizeof(fmt_string)+(-4+5)+1];
    13. format(string, sizeof(string), fmt_string, object_hp[hitid]);
    14. SendClientMessage(playerid, -1, string);
    15. }
    16. }
    17. return 1;
    18. }


    Статью подготовил: punkochel
    Источники: https://www.open.mp/docs/scripting/c...ayerWeaponShot


    *Исключительно для pro-pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора или Daniel_Cortez запрещено!
    Последний раз редактировалось punkochel; 25.12.2022 в 13:32.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •