Применение находит во многих плагинах, как и большинство функций данного модуля, например можно показывать наносимый урон за весь раунд.
Или наказать игрока если он и его жертва из одной команды ( стрельба по своим). ( Плагин АТАС) Ну в обще что вам придет в голову, сделать в вашем плагине.
Параметры:
(victim, weapon, attacker, Float:damage, damage_type)
- victim - Жертва
- weapon - Объект с помощью которого наносился урон
- attacker - нападавший
- Float:damage - урон ( дробное число)
- damage_type - тип урона.
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <colorchat>
#define PLUGIN "Event Take Damage"
#define VERSION "1.0"
#define AUTHOR "Admin"
//Регистрируем глобальный массив для счетчика урона ( с плавающей точкой - дробное число)
new Float:user_damage[33]
public plugin_init ( )
{
register_plugin ( PLUGIN, VERSION, AUTHOR )
//регистрируем событие урона и назначаем функцию
RegisterHam ( Ham_TakeDamage, "player", "UserTakeDamage")
//Регистрируем наши команды
register_clcmd("say /damage","get_my_damage",_,"Say /damage to see you damage")
register_clcmd("say /resetdmg","reset_damage",_,"Say /resetdmg to reset you counter damage")
}
//наша функция
public UserTakeDamage ( victim, weapon, attacker, Float:damage, damagebits )
{
//Массивы для имен
new NameVictim[32],NameAttacker[32]
//Получаем имена
get_user_name(victim,NameVictim,31)
get_user_name(attacker,NameAttacker,31)
//Выводим кто кого и на сколько ранил
ColorChat(0,RED,"[Ham Sandwich] ^4%s ^1put damage ^3%.1f ^1to ^4%s",NameAttacker,user_damage[attacker],NameVictim)
// Если игроки из разных команд и атакующий не ранил самого себя, плюсуем урон к ранее нанесенному
if (get_user_team ( attacker ) != get_user_team ( victim ) && attacker != victim){
user_damage[attacker] += damage
}
}
// Вывод нанесенного урона
public get_my_damage(id){
new UserName[32]
get_user_name(id,UserName,31)
ColorChat(id,RED,"[Ham Sandwich] ^1 %s have put ^4 %.1f ^1damage",UserName,user_damage[id])
}
//Обнуление счетчика урона
public reset_damage(id){
user_damage[id] = 0.0
ColorChat(id,RED,"[Ham Sandwich] ^1 Your counter of damages is dropped")
}
Описание:
Если вы задавались вопросом как узнать кто нанес урон, или кому и сколько, то вы по адресу.
В данном уроке мы научимся получать имена жертвы и нападавшего, а так же нанесенный урон, обратите внимание, что это не количество убийств, а нанесенный урон!
И так, поехали:
Для начала мы зарегистрировали событие урона:
RegisterHam ( Ham_TakeDamage, "player", "UserTakeDamage")
И указали какую функцию выполнять при наступлении этого события.
Далее не сложно догадаться из описания параметров, кто там кто и чьи имена в какой массив мы записываем, и красочно выводим с помощью Colorchat`a игрокам.
Для того что бы вы могли не спеша все это тестировать, есть 2 команды:
- say /damage - Выводит информацию сколько вы нанесли урона
- say /resetdmg - Сбрасывает счетчик урона
Обращаю ваше внимание, что если вы хотите что бы счетчик работал, то массив нужно регистрировать глобально, а не внутри функции.
Новость отредактировал Radius - 7-02-2018, 21:27
Причина: Добавлен список типов урона. Добавление от Felix_Font.