Инфо из hamsandwich.inc:
/**
* Sets a parameter on the fly of the current hook. This has no effect in post hooks.
* Use this on parameters that are floats.
*
* @param which Which parameter to change. Starts at 1, and works up from the left to right. 1 is always "this".
* @param value The value to change it to.
*/
native SetHamParamFloat(which, Float:value);
Синтаксис:
SetHamParamFloat ( which, Float:value )
- which - Какой параметр изменить
- Float:value - Значение параметра
RegisterHam(Ham_TakeDamage,"player","damager",0)
Тип функции:
Native
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#define PLUGIN "[hamsandwich] SetHamParamFloat"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_TakeDamage,"player","damager",0)
}
public damager(victim, inflicator, attacker, Float:damage){
if(!is_user_connected(attacker))
return;
if(victim == attacker || !victim)
return;
SetHamParamFloat(4, damage * 0.1)
client_print(0,print_chat,"Damage: %.1f health:%d",damage * 0.1,get_user_health(victim))
}
Описание:
В данном примере будет изменен наносимый игроком урон. А точнее он будет уменьшен до 10% от нанесенного,то есть нанесли 140, а нанесен будет 14.
Так как функция работает только при отлове события, зарегистрируем событие получения урона Ham_TakeDamage, и назначим исполняемую функцию.
В исполняемой функции всего 4 параметра, это айди жертвы и атакующего, айди объекта нанесшего урон и величина нанесенного урона, эту величину мы и будем изменять.
Параметр урона идет 4, по этому записываем в функцию
SetHamParamFloat(4,
Далее какой урон будет нанесен, как мы раньше уже обговорили это будет 10% от нанесенного, записываем:
SetHamParamFloat(4, damage * 0.1)
То есть это нанесенный урон умноженный на 0.1. Это и будет 10% он нанесенного урона.
После чего в чат выведем данные, о нанесенном уроне и оставшемся здоровье игрока.
Обратите внимание, что с помощью этой функции можно изменять только дробные параметры.