#include <amxmodx>
#include <fakemeta>
// Коэффициент для регулировки скорости притягивания (меньше 1.0 замедлит, больше 1.0 ускорит)
#define PULL_SPEED_MULTIPLIER 0.5
// Инициализация плагина
public plugin_init() {
register_plugin("Harpoon", "1.0", "YourName");
// Регистрируем хук на событие нанесения урона
register_event("Damage", "OnPlayerDamage", "b", "2!0", "3!0");
}
// Функция, вызываемая при нанесении урона
public OnPlayerDamage(victim, inflictor, attacker, Float:damage, damagebits) {
// Проверяем, являются ли атакующий и жертва игроками
if (is_user_connected(attacker) && is_user_alive(attacker) && is_user_connected(victim) && is_user_alive(victim)) {
PullVictimToAttacker(victim, attacker);
}
}
// Функция притягивания жертвы к атакующему
PullVictimToAttacker(victim, attacker) {
// Получаем координаты атакующего и жертвы
new Float:attackerOrigin[3];
new Float:victimOrigin[3];
pev(attacker, pev_origin, attackerOrigin); // Координаты атакующего
pev(victim, pev_origin, victimOrigin); // Координаты жертвы
// Вычисляем направление от жертвы к атакующему
new Float:pullVector[3];
pullVector[0] = (attackerOrigin[0] - victimOrigin[0]) * PULL_SPEED_MULTIPLIER;
pullVector[1] = (attackerOrigin[1] - victimOrigin[1]) * PULL_SPEED_MULTIPLIER;
pullVector[2] = (attackerOrigin[2] - victimOrigin[2]) * PULL_SPEED_MULTIPLIER;
// Устанавливаем скорость жертвы, чтобы притянуть её к атакующему
set_pev(victim, pev_velocity, pullVector);
}