Code:
// minimum radius for player to be pushed away
#define PUSH_RADIUS 200.0
// maximum speed for player to be pushed away
// (maximum speed will be used if player is closest to the origin, otherwise it is proportional to the player's distance)
#define PUSH_SPEED 500.0
PushPlayer(client, const Float:center[3])
{
new Float:origin[3];
pev(client, pev_origin, origin);
new Float:dist = get_distance_f(origin, center);
if( dist > PUSH_RADIUS ) return;
new Float:speed = (1.0 - (dist / PUSH_RADIUS)) * PUSH_SPEED;
new Float:velocity[3];
velocity[0] = origin[0] - center[0];
velocity[1] = origin[1] - center[1];
velocity[2] = origin[2] - center[2];
new Float:length = vector_length(velocity);
velocity[0] = velocity[0] / length * speed;
velocity[1] = velocity[1] / length * speed;
velocity[2] = velocity[2] / length * speed;
new Float:current[3];
pev(client, pev_velocity, current);
current[0] += velocity[0];
current[1] += velocity[1];
current[2] += velocity[2];
set_pev(client, pev_velocity, current);
}
__________________