local should_follow = CreateClientConVar( "follow", "0")
local should_draw = CreateClientConVar( "follow_draw", "1")
local follow_team = CreateClientConVar( "follow_team", "0", true, false, "0 follow any team, 1 follow same team as localplayer, 2 follow opposite team as localplayer")
function is_movement_keys_down()
return input.IsButtonDown( 33 ) or input.IsButtonDown( 65 ) or input.IsButtonDown( 11 ) or input.IsButtonDown( 29 ) or input.IsButtonDown( 14 )
end
function moveToPos(cmd, pos)
local world_forward = pos - LocalPlayer():GetPos()
local ang_LocalPlayer = cmd:GetViewAngles()
cmd:SetForwardMove( ( (math.sin(math.rad(ang_LocalPlayer[2]) ) * world_forward[2]) + (math.cos(math.rad(ang_LocalPlayer[2]) ) * world_forward[1]) ) * 300 )
cmd:SetSideMove( ( (math.cos(math.rad(ang_LocalPlayer[2]) ) * -world_forward[2]) + (math.sin(math.rad(ang_LocalPlayer[2]) ) * world_forward[1]) ) * 300 )
end
function closest_player(team)
best = 99999999
current_e = nil
for k, v in pairs(player.GetAll()) do
dist = v:GetPos():Distance(LocalPlayer():GetPos())
if LocalPlayer():Alive() and v:Alive() and v ~= LocalPlayer() and dist < best and v:Health() > 0 and v:GetObserverMode() == 0 then
if team == nil then
best = dist
current_e = v
elseif not team and LocalPlayer():Team() ~= v:Team() then
best = dist
current_e = v
elseif team and LocalPlayer():Team() == v:Team() then
best = dist
current_e = v
end
end
end
return current_e
end
local target = nil
hook.Add("CreateMove", "PlayerFollow", function(cmd)
if should_follow:GetInt() == 1 then
if is_movement_keys_down() then return end
if follow_team:GetInt() == 0 then
target = closest_player()
elseif follow_team:GetInt() == 1 then
target = closest_player(true)
elseif follow_team:GetInt() == 2 then
target = closest_player(false)
end
if not target then return end
moveToPos(cmd, target:GetPos())
end
end)
hook.Add("HUDPaint", "PlayerFollow_Draw", function()
if should_follow:GetInt() == 1 and should_draw:GetInt() == 1 then
local pos = target:GetPos():ToScreen()
surface.DrawCircle( pos["x"], pos["y"], 7, 0, 255, 0)
end
end)
Используем бинд для него - bind "KEY" "toggle follow 1 0"
Последнее редактирование: