LUA Follow Bot

Статус
В этой теме нельзя размещать новые ответы.
  • 118
  • 2
  • 30
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"
 
Последнее редактирование:
  • 19
  • 9
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"
я пошел пуканы школьников подрывать
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу