Данный FS + INC добавляет событие OnPlayerHit, которые вызывается при нанесении игроку урона.
Например можно сделать мгновенную смерть с одного патрона в голову и т.д.
В отличии от других алгоритмов которые я видел, этот работает значительно быстрее, а значит и
при активной стрельбе в 100 человек значительных задержек (лагов) не будет.
Определение урона происходит не так точно как хотелось бы, но этого достаточно для серверов, где
охватывается прежде всего геймплей, а потом уже физика GTA SA.
Установка:
1. Скопируйте oph.amx в папку filterscripts.
2. Откройте Server.cfg и укажите в параметр "filterscripts", название скрипта т.е. "oph" без кавычек.
3. Скопируйте инклуд oph.inc, в папку где ваши инклуды. Обычно это "папка_сервера/pawno/include/".
4. Добавьте ваш мод\скрипт ниже "#include " строчку "#include " без кавычек.
Использование:
OnPlayerHit(playerid, hiterid, bodypart, weaponid, Float:distance); - Вызывается при нанесении урона игроку.
playerid - ид игрока в кому нанесен урон.
hiterid - ид игрока который нанес урон.
bodypart - (OPH_HEAD - Голова, OPH_BODY - Туловище, OPH_FOOT - Ноги).
weaponid - ид оружия с которого был нанесен урон.
distance - расстояние с которого был нанесен урон.
TogglePlayerOnHitted(playerid, toggle); - Включает\выключает вызов OnPlayerHit при нанесение урона игроку.
playerid - ид игрока
toggle - 1(вкл), 0(выкл).
ToggleWeaponBlockHit(weaponid, toggle); - Блокирует вызов OnPlayerHit с определённого оружия.
weaponid - ид оружия.
toggle - 1(блокировать), 0(разблокировать).
ToggleWeaponBlockHitForPlayer(playerid, weaponid, toggle); - Блокирует вызов OnPlayerHit с определённого оружия для конкретного игрока.
playerid - ид игрока
weaponid - ид оружия.
toggle - 1(блокировать), 0(разблокировать).
SetWeaponRangeHit(weaponid, Float:range); - Задёт радиус действия оружия для вызова OnPlayerHit.
weaponid - ид оружия.
range - радиус.
По умолчанию настройки радиусов можно узнать из файла default_weapon_radius.txt (в архиве)
SetPlayerDemagedHealth(playerid, Float:health, hiterid=-1, reason=-1); - Отнимает у игрока hp и вызывает OnPlayerDeath в случае смерти.
playerid - ид игрока.
health - сколько hp отнять.
hiterid - ид игрока который отнял hp (не обязательный параметр для OnPlayerDeath в случае смерти).
reason - ид причины или оружия (не обязательный параметр для OnPlayerDeath в случае смерти).
SetOnPlayerDeath(playerid, killerid, reason); - Вызывает OnPlayerDeath с заданными параметрами.
playerid - ид игрока.
killerid - ид игрока который убил playerid.
reason - ид причины или оружия.
Небольшой пример можно посмотреть в папке sample_code (в архиве).
Автор: AirKite
Версия: 0.1b