Further enhance and add in an advanced visual effect that mimics-like a night-vision google with rayfield and player tracking.

```
-- ESP Script with Night Vision and Tracking
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera

-- ESP Configuration
local ESP = {
    Enabled = true,
    ShowTeam = false,
    ShowName = true,
    ShowDistance = true,
    ShowHealth = true,
    TracerEnabled = true,
    NightVisionEnabled = true,
    MaxDistance = 1000,
    BoxColor = Color3.fromRGB(0, 255, 0),
    TracerColor = Color3.fromRGB(0, 255, 0),
    GlowColor = Color3.fromRGB(0, 255, 0),
    GlowIntensity = 0.5
}

-- Night Vision Effect
local NightVision = Instance.new("ColorCorrectionEffect")
NightVision.Parent = game.Lighting
NightVision.Brightness = 0.2
NightVision.Contrast = 0.5
NightVision.Saturation = -0.5
NightVision.TintColor = Color3.fromRGB(0, 255, 0)
NightVision.Enabled = false

-- Create Glow Effect
local function CreateGlow(part)
    local Glow = Instance.new("PointLight")
    Glow.Color = ESP.GlowColor
    Glow.Range = 16
    Glow.Brightness = ESP.GlowIntensity
    Glow.Parent = part
    return Glow
end

-- Create ESP Elements
local function CreateESP(player)
    local ESP_Data = {}
    
    -- Create Drawing Objects
    ESP_Data.Box = Drawing.new("Square")
    ESP_Data.Box.Thickness = 1
    ESP_Data.Box.Filled = false
    ESP_Data.Box.Color = ESP.BoxColor
    ESP_Data.Box.Transparency = 1
    
    ESP_Data.Name = Drawing.new("Text")
    ESP_Data.Name.Center = true
    ESP_Data.Name.Size = 14
    ESP_Data.Name.Color = ESP.BoxColor
    ESP_Data.Name.Transparency = 1
    
    ESP_Data.Tracer = Drawing.new("Line")
    ESP_Data.Tracer.Thickness = 1
    ESP_Data.Tracer.Color = ESP.TracerColor
    ESP_Data.Tracer.Transparency = 1
    
    return ESP_Data
end

-- Update ESP
local function UpdateESP()
    for _, player in ipairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
            local ESP_Data = player.ESP_Data
            if not ESP_Data then
                ESP_Data = CreateESP(player)
                player.ESP_Data = ESP_Data
                
                -- Add glow to character
                if player.Character:FindFirstChild("HumanoidRootPart") then
                    CreateGlow(player.Character.HumanoidRootPart)
                end
            end
            
            local character = player.Character
            local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
            local humanoid = character:FindFirstChild("Humanoid")
            
            if humanoidRootPart and humanoid then
                local pos, onScreen = Camera:WorldToViewportPoint(humanoidRootPart.Position)
                local distance = (Camera.CFrame.Position - humanoidRootPart.Position).Magnitude
                
                if onScreen and distance <= ESP.MaxDistance and ESP.Enabled then
                    -- Update Box
                    local scale = 1 / (distance * 0.002)
                    local size = Vector2.new(scale * 1.5, scale * 3)
                    ESP_Data.Box.Size = size
                    ESP_Data.Box.Position = Vector2.new(pos.X - size.X / 2, pos.Y - size.Y / 2)
                    ESP_Data.Box.Visible = true
                    
                    -- Update Name
                    ESP_Data.Name.Position = Vector2.new(pos.X, pos.Y - size.Y / 2 - 15)
                    ESP_Data.Name.Text = string.format("%s\n[%d studs]", player.Name, math.floor(distance))
                    ESP_Data.Name.Visible = ESP.ShowName
                    
                    -- Update Tracer
                    if ESP.TracerEnabled then
                        ESP_Data.Tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
                        ESP_Data.Tracer.To = Vector2.new(pos.X, pos.Y)
                        ESP_Data.Tracer.Visible = true
                    else
                        ESP_Data.Tracer.Visible = false
                    end
                else
                    ESP_Data.Box.Visible = false
                    ESP_Data.Name.Visible = false
                    ESP_Data.Tracer.Visible = false
                end
            end
        end
    end
end

-- Toggle Functions
local function ToggleESP()
    ESP.Enabled = not ESP.Enabled
end

local function ToggleNightVision()
    ESP.NightVisionEnabled = not ESP.NightVisionEnabled
    NightVision.Enabled = ESP.NightVisionEnabled
end

-- Keybinds
game:GetService("UserInputService").InputBegan:Connect(function(input)
    if input.KeyCode == Enum.KeyCode.RightControl then
        ToggleESP()
    elseif input.KeyCode == Enum.KeyCode.N then
        ToggleNightVision()
    end
end)

-- Clean up ESP data when player leaves
Players.PlayerRemoving:Connect(function(player)
    if player.ESP_Data then
        for _, drawing in pairs(player.ESP_Data) do
            drawing:Remove()
        end
        player.ESP_Data = nil
    end
end)

-- Update ESP every frame
RunService.RenderStepped:Connect(UpdateESP)