Esp Aimbot Dinas Hub
Key Required

Esp Aimbot Dinas Hub

Typical Colors 2Dinas2Dinas2 2.8K views 9.1K executesUpdated Dec 9, 2025
3.3/ 5(3 votes)
2167% Positive
Lua Script•457 lines (16193 chars)
local LibraryUrl = "https://raw.githubusercontent.com/Vovabro46/trash/refs/heads/main/Test.lua"
local Success, Library = pcall(function()
    return loadstring(game:HttpGet(LibraryUrl))()
end)

if not Success or not Library then 
    return warn("Error loading UI library!") 
end

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer

if game.PlaceId ~= 328028363 then
    warn("ONLY TC2.")
end

local Config = {
    Aimbot = {
        Enabled = false,
        MobileMode = false,
        AimPart = "Head",
        FOV = 120,
        ShowFOV = true,
        RainbowFOV = false,
        FOVColor = Color3.fromRGB(255, 255, 255),
        Smoothness = 0,
        WallCheck = true,
        Key = Enum.UserInputType.MouseButton2,
        IsAiming = false
    },
    ESP = {
        Enabled = false,
        Boxes = false,
        Names = false,
        Health = false,
        Tracers = false,
        TeamCheck = true,
        TextSize = 14,
        MaxDistance = 1500,
        BoxColor = Color3.fromRGB(255, 255, 255),
        TracerColor = Color3.fromRGB(255, 255, 255)
    },
    Chams = {
        Enabled = false,
        FillColor = Color3.fromRGB(255, 0, 0),
        OutlineColor = Color3.fromRGB(255, 255, 255),
        Transparency = 0.5,
        AlwaysOnTop = true
    }
}

Library:Watermark("TC2: ULTIMATE")
local Window = Library:Window("TC2: DinasHub")

Window:Section("Combat & Visuals")
local CombatTab = Window:Tab("Combat", "sword")
local VisualsTab = Window:Tab("Visuals", "eye")

Window:Section("Configuration")
local SettingsTab = Window:Tab("Settings", "settings")

local AimbotPage = CombatTab:SubTab("Aimbot")
local ESPPage = VisualsTab:SubTab("ESP & Chams")
local SettingsPage = SettingsTab:SubTab("Configs")

local AimMainGroup = AimbotPage:Groupbox("Main Logic", "Left")
local AimSettingsGroup = AimbotPage:Groupbox("Aim Settings", "Right")

local ESPMainGroup = ESPPage:Groupbox("ESP Features", "Left")
local ChamsGroup = ESPPage:Groupbox("Chams & Colors", "Right")

local ThemeGroup = SettingsPage:Groupbox("Theme Manager", "Right")
local UIControlGroup = SettingsPage:Groupbox("UI Control", "Left")

AimMainGroup:AddToggle({
    Title = "Enable Aimbot",
    Default = false,
    Callback = function(Value) Config.Aimbot.Enabled = Value end
})

AimMainGroup:AddToggle({
    Title = "Mobile / Auto Aim",
    Default = false,
    Description = "Aim automatically without holding buttons",
    Callback = function(Value) Config.Aimbot.MobileMode = Value end
})

AimMainGroup:AddToggle({
    Title = "Wall Check",
    Default = true,
    Description = "Don't aim through walls",
    Callback = function(Value) Config.Aimbot.WallCheck = Value end
})

AimMainGroup:AddDropdown({
    Title = "Target Part",
    Values = {"Head", "Torso"},
    Default = "Head",
    Multi = false,
    Callback = function(Value) Config.Aimbot.AimPart = Value end
})

AimSettingsGroup:AddToggle({
    Title = "Show FOV Circle",
    Default = true,
    Callback = function(Value) Config.Aimbot.ShowFOV = Value end
})

AimSettingsGroup:AddToggle({
    Title = "Rainbow FOV",
    Default = false,
    Callback = function(Value) Config.Aimbot.RainbowFOV = Value end
})

AimSettingsGroup:AddSlider({
    Title = "FOV Radius",
    Min = 10,
    Max = 800,
    Default = 120,
    Rounding = 0,
    Callback = function(Value) Config.Aimbot.FOV = Value end
})

AimSettingsGroup:AddSlider({
    Title = "Smoothness",
    Min = 0,
    Max = 1,
    Default = 0,
    Rounding = 1,
    Suffix = "%",
    Description = "0 = Instant Lock",
    Callback = function(Value) Config.Aimbot.Smoothness = Value end
})

ESPMainGroup:AddToggle({
    Title = "Master ESP Toggle",
    Default = false,
    Callback = function(Value) Config.ESP.Enabled = Value end
})

ESPMainGroup:AddToggle({
    Title = "Show Boxes",
    Default = false,
    Callback = function(Value) Config.ESP.Boxes = Value end
})

ESPMainGroup:AddToggle({
    Title = "Show Names",
    Default = false,
    Callback = function(Value) Config.ESP.Names = Value end
})

ESPMainGroup:AddToggle({
    Title = "Show Health",
    Default = false,
    Callback = function(Value) Config.ESP.Health = Value end
})

ESPMainGroup:AddToggle({
    Title = "Show Tracers",
    Default = false,
    Callback = function(Value) Config.ESP.Tracers = Value end
})

ESPMainGroup:AddSlider({
    Title = "Max Distance",
    Min = 100,
    Max = 5000,
    Default = 1500,
    Rounding = 0,
    Suffix = " studs",
    Callback = function(Value) Config.ESP.MaxDistance = Value end
})

-- [[ ESP - RIGHT SIDE ]]
ChamsGroup:AddToggle({
    Title = "Enable Chams",
    Default = false,
    Callback = function(Value) Config.Chams.Enabled = Value end
})

ChamsGroup:AddToggle({
    Title = "Chams Always On Top",
    Default = true,
    Callback = function(Value) Config.Chams.AlwaysOnTop = Value end
})

ChamsGroup:AddColorPicker({
    Title = "Chams Color",
    Default = Color3.fromRGB(255, 0, 0),
    Callback = function(Value) Config.Chams.FillColor = Value end
})

ChamsGroup:AddColorPicker({
    Title = "ESP Box Color",
    Default = Color3.fromRGB(255, 255, 255),
    Callback = function(Value) Config.ESP.BoxColor = Value end
})

UIControlGroup:AddButton({
    Title = "Unload Script",
    Callback = function() 
        Library:Notify("System", "Script Unloaded", 2)
        local gui = game:GetService("CoreGui"):FindFirstChild("RedOnyx") or game:GetService("CoreGui"):FindFirstChild("Window")
        if gui then gui:Destroy() end
    end
})

local ThemeList = {}
if Library.ThemePresets then
    for ThemeName, _ in pairs(Library.ThemePresets) do table.insert(ThemeList, ThemeName) end
    table.sort(ThemeList)
    ThemeGroup:AddDropdown({
        Title = "Preset Theme", Values = ThemeList, Default = "Default", Multi = false,
        Callback = function(Value) if Library.SetTheme then Library:SetTheme(Value) end end
    })
end

local FOV_ScreenGui = Instance.new("ScreenGui")
FOV_ScreenGui.Name = "TC2_FOV_Render"
FOV_ScreenGui.IgnoreGuiInset = true
FOV_ScreenGui.ResetOnSpawn = false
if pcall(function() FOV_ScreenGui.Parent = CoreGui end) then
    FOV_ScreenGui.Parent = CoreGui
else
    FOV_ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
end

local FOV_Frame = Instance.new("Frame")
FOV_Frame.Parent = FOV_ScreenGui
FOV_Frame.BackgroundColor3 = Color3.new(1, 1, 1)
FOV_Frame.BackgroundTransparency = 1
FOV_Frame.AnchorPoint = Vector2.new(0.5, 0.5)
FOV_Frame.Position = UDim2.new(0.5, 0, 0.5, 0)
FOV_Frame.Size = UDim2.new(0, 0, 0, 0)
FOV_Frame.Visible = false

local FOV_Stroke = Instance.new("UIStroke")
FOV_Stroke.Parent = FOV_Frame
FOV_Stroke.Color = Color3.fromRGB(255, 255, 255)
FOV_Stroke.Thickness = 2
FOV_Stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border

local FOV_Corner = Instance.new("UICorner")
FOV_Corner.Parent = FOV_Frame
FOV_Corner.CornerRadius = UDim.new(1, 0)

local ESP_Storage = {}
local Chams_Storage = {}

local function IsTeammate(player)
    if not Config.ESP.TeamCheck then return false end
    if player.Team == nil then return false end
    return player.Team == LocalPlayer.Team
end

local function IsVisible(part)
    if not Config.Aimbot.WallCheck then return true end
    local origin = Camera.CFrame.Position
    local direction = (part.Position - origin).Unit * (part.Position - origin).Magnitude
    local rayParams = RaycastParams.new()
    rayParams.FilterDescendantsInstances = {LocalPlayer.Character, Camera}
    rayParams.FilterType = Enum.RaycastFilterType.Exclude
    local hit = workspace:Raycast(origin, direction, rayParams)
    return hit == nil or hit.Instance:IsDescendantOf(part.Parent)
end

local function GetTargetPart(char)
    if Config.Aimbot.AimPart == "Head" then return char:FindFirstChild("Head") end
    return char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso") or char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Head")
end

local function GetClosestToCrosshair()
    local closestPlayer = nil
    local shortestDist = Config.Aimbot.FOV
    local centerScreen = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)

    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and not IsTeammate(player) then
            local char = player.Character
            if char and char:FindFirstChild("Humanoid") and char.Humanoid.Health > 0 then
                local part = GetTargetPart(char)
                if part then
                    local screenPos, onScreen = Camera:WorldToViewportPoint(part.Position)
                    if onScreen then
                        local dist = (Vector2.new(screenPos.X, screenPos.Y) - centerScreen).Magnitude
                        if dist < shortestDist then
                            if IsVisible(part) then
                                shortestDist = dist
                                closestPlayer = part
                            end
                        end
                    end
                end
            end
        end
    end
    return closestPlayer
end

local function CreateDrawing(type, props)
    local obj = Drawing.new(type)
    for k, v in pairs(props) do obj[k] = v end
    return obj
end

local function AddESP(player)
    if ESP_Storage[player] then return end
    ESP_Storage[player] = {
        Box = CreateDrawing("Square", {Thickness = 1.5, Filled = false, ZIndex = 2, Visible = false}),
        BoxOutline = CreateDrawing("Square", {Thickness = 2.5, Color = Color3.new(0,0,0), Filled = false, ZIndex = 1, Visible = false}),
        Name = CreateDrawing("Text", {Center = true, Size = 13, Outline = true, Color = Color3.new(1,1,1), ZIndex = 3, Visible = false}),
        HealthBar = CreateDrawing("Square", {Filled = true, ZIndex = 2, Visible = false}),
        Tracer = CreateDrawing("Line", {Thickness = 1, ZIndex = 1, Visible = false})
    }
end

local function RemoveESP(player)
    if ESP_Storage[player] then
        for _, obj in pairs(ESP_Storage[player]) do obj:Remove() end
        ESP_Storage[player] = nil
    end
end

local function UpdateChams(player)
    if not player.Character then return end
    if Chams_Storage[player] and (not Config.Chams.Enabled or IsTeammate(player)) then
        Chams_Storage[player]:Destroy()
        Chams_Storage[player] = nil
        return
    end
    if not Config.Chams.Enabled then return end
    if IsTeammate(player) then return end
    
    local char = player.Character
    if not char:FindFirstChild("HumanoidRootPart") then return end
    
    if not Chams_Storage[player] or Chams_Storage[player].Parent ~= char then
        local highlight = Instance.new("Highlight")
        highlight.Name = "TC2Cham"
        highlight.Adornee = char
        highlight.Parent = char
        Chams_Storage[player] = highlight
    end
    
    local hl = Chams_Storage[player]
    hl.FillColor = Config.Chams.FillColor
    hl.OutlineColor = Config.Chams.OutlineColor
    hl.FillTransparency = Config.Chams.Transparency
    hl.OutlineTransparency = 0
    hl.DepthMode = Config.Chams.AlwaysOnTop and Enum.HighlightDepthMode.AlwaysOnTop or Enum.HighlightDepthMode.Occluded
end

UserInputService.InputBegan:Connect(function(input)
    if input.UserInputType == Config.Aimbot.Key then Config.Aimbot.IsAiming = true end
end)
UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Config.Aimbot.Key then Config.Aimbot.IsAiming = false end
end)

RunService.RenderStepped:Connect(function()
    if Config.Aimbot.Enabled and Config.Aimbot.ShowFOV then
        FOV_Frame.Visible = true
        FOV_Frame.Size = UDim2.new(0, Config.Aimbot.FOV * 2, 0, Config.Aimbot.FOV * 2)
        if Config.Aimbot.RainbowFOV then
            local hue = tick() % 5 / 5
            FOV_Stroke.Color = Color3.fromHSV(hue, 1, 1)
        else
            FOV_Stroke.Color = Config.Aimbot.FOVColor
        end
    else
        FOV_Frame.Visible = false
    end

    if Config.Aimbot.Enabled then
        if Config.Aimbot.IsAiming or Config.Aimbot.MobileMode then
            local target = GetClosestToCrosshair()
            if target then
                local currentCF = Camera.CFrame
                local targetCF = CFrame.new(currentCF.Position, target.Position)
                
                if Config.Aimbot.Smoothness <= 0 then
                    Camera.CFrame = targetCF
                else
                    Camera.CFrame = currentCF:Lerp(targetCF, 1 - Config.Aimbot.Smoothness)
                end
            end
        end
    end

    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer then
            UpdateChams(player)
            if not ESP_Storage[player] then AddESP(player) end
            
            local objects = ESP_Storage[player]
            local char = player.Character
            local hrp = char and char:FindFirstChild("HumanoidRootPart")
            
            local show = false
            if Config.ESP.Enabled and char and hrp and not IsTeammate(player) then
                local hum = char:FindFirstChild("Humanoid")
                if hum and hum.Health > 0 then
                    local vector, onScreen = Camera:WorldToViewportPoint(hrp.Position)
                    local dist = (Camera.CFrame.Position - hrp.Position).Magnitude
                    
                    if onScreen and dist <= Config.ESP.MaxDistance then
                        show = true
                        local size = (Camera:WorldToViewportPoint(hrp.Position - Vector3.new(0, 3, 0)).Y - Camera:WorldToViewportPoint(hrp.Position + Vector3.new(0, 2.6, 0)).Y) / 2
                        local width = size / 1.5
                        local currentPos = Vector2.new(vector.X - width / 2, vector.Y - size / 2)

                        if Config.ESP.Boxes then
                            objects.Box.Visible = true; objects.BoxOutline.Visible = true
                            objects.Box.Size = Vector2.new(width, size * 2.2)
                            objects.Box.Position = currentPos
                            objects.BoxOutline.Size = objects.Box.Size
                            objects.BoxOutline.Position = objects.Box.Position
                            objects.Box.Color = Config.ESP.BoxColor
                        else objects.Box.Visible = false; objects.BoxOutline.Visible = false end

                        if Config.ESP.Names then
                            objects.Name.Visible = true
                            objects.Name.Text = player.Name
                            objects.Name.Position = Vector2.new(vector.X, currentPos.Y - 14)
                        else objects.Name.Visible = false end
                        
                        if Config.ESP.Health then
                            local h = hum.Health / hum.MaxHealth
                            objects.HealthBar.Visible = true
                            objects.HealthBar.Size = Vector2.new(2, (size * 2.2) * h)
                            objects.HealthBar.Position = Vector2.new(currentPos.X - 5, currentPos.Y + (size * 2.2) - objects.HealthBar.Size.Y)
                            objects.HealthBar.Color = Color3.fromHSV(h*0.3, 1, 1)
                        else objects.HealthBar.Visible = false end
                        
                        if Config.ESP.Tracers then
                            objects.Tracer.Visible = true
                            objects.Tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
                            objects.Tracer.To = Vector2.new(vector.X, vector.Y + size)
                            objects.Tracer.Color = Config.ESP.TracerColor
                        else objects.Tracer.Visible = false end
                    end
                end
            end
            if not show then for _, o in pairs(objects) do o.Visible = false end end
        end
    end
end)

Players.PlayerRemoving:Connect(function(plr)
    RemoveESP(plr)
    if Chams_Storage[plr] then Chams_Storage[plr]:Destroy() Chams_Storage[plr] = nil end
end)

Features & Information

Esp Chams Aimbot Enjoy)

Community Comments (4)

ThatChillGuyThatChillGuyDec 10, 2025(edited)

Script is detectable I just got banned after a few minutes

Replying to @ThatChillGuy
Dinas2Dinas2Dec 10, 2025(edited)

@ThatChillGuy Bruh bro, I literally test yesterday, with an aimbot and ESP, there was no ban lol)

cloud916cloud916Dec 13, 2025

just use ethereon

ThatChillGuyThatChillGuyDec 14, 2025

@cloud916 did the ethereon tc2 script get updated? I heard it will be paid and I eventually left the server after the owner said that.

More Scripts for Typical Colors 2