Описание: Данный FS + INC добавляет событие OnPlayerHit, которые вызывается при нанесении игроку урона. Например можно сделать мгновенную смерть с одного патрона в голову и т.д. В отличии от других алгоритмов которые я видел, этот работает значительно быстрее, а значит и при активной стрельбе в 100 человек значительных задержек (лагов) не будет. Определение урона происходит не так точно как хотелось бы, но этого достаточно для серверов, где охватывается прежде всего геймплей, а потом уже физика GTA SA.
Информация: Автор: AirKite Версия: 0.1b
Установка: 1. Скопируйте oph.amx в папку filterscripts. 2. Откройте Server.cfg и укажите в параметр "filterscripts", название скрипта т.е. "oph" без кавычек. 3. Скопируйте инклуд oph.inc, в папку где ваши инклуды. Обычно это "папка_сервера/pawno/include/". 4. Добавьте ваш мод\скрипт ниже "#include <a_samp>" строчку "#include <oph>" без кавычек.
Использование:
Code
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(выкл).
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 (в архиве).
Определения урона это [:||||:]. А вот систему частей тела до этого я видел пока что только у Seif'a. Хотя при синхронизации САМПа хэдшоты практически бесполезны - тестировал свою систему - попасть бегущему в голову с такой синхрой очень тяжело.
GTA.ru Training Server - 212.42.38.84:7780 AADS Mode v.2.8 by [TWP]_E1edge
А вот систему частей тела до этого я видел пока что только у Seif'a.
Этот чувак явно что то курил перед тем как отредактировал чужой скрипт хедшотов. Я именно изза этого и взялся за написание даного скрипта. Алгоритм скриптов, которые только были опубликованы на sa-mp.com был очень тяжелым. На 10 активных человек сервер просто бы висел.
Quote (E1edge)
Хотя при синхронизации САМПа хэдшоты практически бесполезны - тестировал свою систему - попасть бегущему в голову с такой синхрой очень тяжело.
More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.
Кончайте уже людям голову морочить, бодипарт неотследить средствами самп! mda
начиная с р5 (для некоторых и в р4 используя Struct A) можно получать вектора прицеливания и позиция камеры (т.е. точка начала вектора) так что отследить бодипарт вполне реально (без учёта текущей анимации игрока : присел, бежит, прыгает)
AirKite, пока не с кем тестировать. Днем с кем-нибудь протестирую и отпишу
Добавлено (05.06.2010, 09:16) --------------------------------------------- HeadShot успели только проверить, потом Dizel[ZR] смотался
Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит. Хочешь остаться при своем мнении - держи его при себе.
начиная с р5 (для некоторых и в р4 используя Struct A) можно получать вектора прицеливания и позиция камеры (т.е. точка начала вектора) так что отследить бодипарт вполне реально (без учёта текущей анимации игрока : присел, бежит, прыгает)
Вполне реально и на всё остальное сделать. Кстати, присел\бегает\прыгает учтены