--by pavetr.top/ds --=================== Pre Cache ================ local config = {} local teamFilterSelected = {} config.colors = {} config.keybinds = {} -- Create a color cache to avoid repetitive string.ToColor conversion local colorCache = {} local function GetCachedColor(colorStr) if not colorCache[colorStr] then colorCache[colorStr] = string.ToColor(colorStr) end return colorCache[colorStr] end -- Clear cache when colors change local function ClearColorCache() table.Empty(colorCache) end config["aim_master_toggle"] = false config["aim_onkey"] = false config["aim_norecoil"] = false config["aim_silent"] = false config["aim_target"] = 1 config["aim_hitbox"] = 1 config["aim_fov"] = 30 config["aim_smoothing"] = false config["aim_smoothing_value"] = 0 config["aim_ignorefriends"] = false config["aim_ignoreadmins"] = false config["aim_ignorenoclip"] = false config["aim_ignoreteam"] = false config["aim_ignoreinvis"] = false config["trigger_master_toggle"] = false config["trigger_onkey"] = false config["esp_player_box"] = false config["esp_player_box_mode"] = 1 config["esp_player_name"] = false config["esp_player_hp"] = false config["esp_player_armor"] = false config["esp_player_weapon"] = false config["esp_player_weapon_fancy"] = false config["esp_player_rank"] = false config["esp_player_team"] = false config["esp_player_skeleton"] = false config["esp_player_snaplines"] = false config["esp_player_glow"] = false config["esp_player_chams"] = false config["esp_player_chams_overlay"] = false config["esp_player_chams_xyz"] = false config["esp_player_chams_material"] = "!textured" config["esp_player_overlay_chams_material"] = "!textured" config["esp_player_xyz_chams_material"] = "!textured" config["esp_player_hitbox"] = false config["esp_player_render_distance"] = 8000 config["esp_player_dormant"] = false config["esp_player_filtering"] = false config["esp_player_highlight_box"] = false config["esp_player_highlight_name"] = false config["esp_other_fog"] = false config["esp_other_fog_start"] = 0 config["esp_other_fog_end"] = 9000 config["esp_other_fog_density"] = 0.8 config["esp_other_worldmod"] = false config["esp_other_propmod"] = false config["esp_other_nosky"] = false config["esp_other_nightmode"] = false config["esp_other_nightmode_scale"] = 0.4 config["esp_other_bloom"] = 0 config["esp_other_hitsound"] = false config["esp_other_drawfov"] = false config["esp_other_fullbright"] = false config["esp_other_thirdperson"] = false config["esp_other_thirdperson_distance"] = 15 config["esp_other_freecam"] = false config["esp_other_freecam_speed"] = 5 config["esp_entity_box"] = false config["esp_entity_name"] = false config["esp_render_mode"] = false config["misc_autobunnyhop"] = false config["misc_autostrafe"] = false config["misc_ttt"] = false config["misc_observerlist"] = false config["misc_adminlist"] = false config["misc_rainbow"] = false config["misc_rainbow_speed"] = 20 config["misc_fov"] = false config["misc_fov_value"] = 100 config["misc_viewmodel"] = false config["misc_bob"] = false config["misc_sway"] = false config["misc_vm_x"] = 0 config["misc_vm_y"] = 0 config["misc_vm_z"] = 0 config["misc_vm_p"] = 0 config["misc_vm_ya"] = 0 config["misc_vm_r"] = 0 config["config_name"] = nil config["name_font_size"] = 18 config["name_font"] = 1 config["flags_font_size"] = 12 config["flag_font"] = 2 config.colors["esp_player_box"] = "255 255 255 255" config.colors["esp_player_name"] = "255 255 255 255" config.colors["esp_player_hp"] = "0 255 0 255" config.colors["esp_player_armor"] = "66 138 245 255" config.colors["esp_player_weapon"] = "255 255 255 255" config.colors["esp_player_rank"] = "255 0 0 255" config.colors["esp_player_skeleton"] = "255 255 255 255" config.colors["esp_player_snaplines"] = "255 255 255 255" config.colors["esp_player_glow"] = "0 140 255 255" config.colors["esp_player_chams"] = "30 111 146 255" config.colors["esp_player_chams_overlay"] = "255 255 255 255" config.colors["esp_player_chams_xyz"] = "0 63 160 63" config.colors["esp_player_hitbox"] = "51 204 255 255" config.colors["esp_player_highlight_box"] = "0 255 0 255" config.colors["esp_player_highlight_name"] = "0 255 0 255" config.colors["esp_other_fog"] = "118 144 184 255" config.colors["esp_other_worldmod"] = "255 255 255 255" config.colors["esp_other_propmod"] = "255 255 255 255" config.colors["esp_other_drawfov"] = "255 255 255 255" config.colors["esp_entity_box"] = "255 255 255 255" config.colors["esp_entity_name"] = "255 255 255 255" config.keybinds["aim_onkey_key"] = 0 config.keybinds["trigger_onkey_key"] = 0 config.keybinds["menu_key"] = 72 config.keybinds["logger_key"] = 0 config.keybinds["panic_key"] = 0 config.keybinds["thirdperson_key"] = 0 config.keybinds["freecam_key"] = 0 config["friends"] = {} config["entities"] = {} local hooks = {} local verifyconfig = config local frame, frameX, frameY, sheet, colorWindow, teamList, teamFilter, teamFilterWasOpen, teamFilterEnable, teamFilterX, teamFilterY, pList, pListWasOpen, entityFrame, entityFrameX, entityFrameY, entityFrameWasOpen, cfgDropdown, chamFrame, chamFrameX, chamFrameY, chamFrameWasOpen local activeTab local ss = false local loadedCfg = {} local editingText = false local observingPlayers = {} observingPlayers.watcher = {} observingPlayers.spec = {} local onlineStaff = {} local staffRanks = {"tmod", "trialmod", "trialmoderator", "tmoderator", "mod", "moderator", "smod", "smoderator", "seniormod", "seniormoderator", "jadmin", "junioradmin", "leadadmin", "headadmin", "trialadmin", "sadmin", "senioradmin", "owner", "developer", "manager", "staff"} local files, dir = file.Find( "timeshack/*.json", "DATA" ) local frametime, deviation = engine.ServerFrameTime() local intp, toggledelay3, toggledelayN = false, false, false local NoclipPos, NoclipAngles, NoclipOn, NoclipX, NoclipY, NoclipDuck, NoclipJump = LocalPlayer():EyePos(), LocalPlayer():GetAngles(), false, 0, 0, false, false CreateMaterial("textured", "VertexLitGeneric") CreateMaterial("flat", "UnLitGeneric") CreateMaterial("wireframe", "VertexLitGeneric", { ["$wireframe"] = 1 }) local ChamMaterials = { ["Platinum"] = "models/player/shared/ice_player", ["Gold"] = "models/player/shared/gold_player", ["Alien"] = "models/XQM/LightLinesRed_tool", ["Flesh"] = "models/flesh", ["Molten"] = "models/props_lab/Tank_Glass001", ["Glass"] = "models/props_combine/com_shield001a", ["Plasma"] = "models/props_combine/portalball001_sheet", ["Water"] = "models/props_combine/stasisshield_sheet", ["Fire"] = "models/shadertest/shader4", ["Glow"] = "Models/effects/splodearc_sheet", ["Reactor"] = "Models/effects/comball_tape", ["Galaxy"] = "Models/effects/comball_sphere", ["Water 2"] = "models/shadertest/shader3", ["Chrome"] = "debug/env_cubemap_model", ["Untextured"] = "1", ["Wireframe"] = "!wireframe", ["Flat"] = "!flat", ["Textured"] = "!textured" } --=================== Misc Functions ================ local CheatFonts = {"comfortaa", "Arial", "Bahnschrift", "Calibri", "Comic Sans MS", "Consolas", "Courier New", "Franklin Gothic Medium", "Impact", "Ink Free", "Microsoft Sans Serif", "Myanmar Text", "Segoe UI", "Tahoma", "Times New Roman", "Trebuchet MS", "Verdana"} local function UpdateNameFont() surface.CreateFont("ESP_Font_Main",{ font = CheatFonts[config["name_font"]], size = config["name_font_size"], shadow = false, outline = false, blursize = 0, antialias = true }) end local function UpdateFlagFont() surface.CreateFont("ESP_Font_Flag",{ font = CheatFonts[config["flag_font"]], size = config["flags_font_size"], shadow = false, outline = false, blursize = 0, antialias = true }) end UpdateNameFont() UpdateFlagFont() local function RandomString() return tostring(math.random(-9999999999, 9999999999)) end local cObs, cStaff = RandomString(), RandomString() local function DisableWorldModulation() for k, v in pairs( Entity( 0 ):GetMaterials() ) do Material( v ):SetVector( "$color", Vector(1, 1, 1) ) Material( v ):SetFloat( "$alpha", 1 ) end end local function DisablePropModulation() for k, v in pairs(ents.FindByClass("prop_physics")) do v:SetColor(Color(255, 255, 255, 255)) v:SetRenderMode( RENDERMODE_NORMAL ) end end local function GetRenderMode() return config["esp_render_mode"] and "(Unsafe)" or "(Protected)" end local function UpdateVisibleChamMaterial(cvar, old, new) if table.HasValue(ChamMaterials, new) then config["esp_player_chams_material"] = new end end local function UpdateOverlayChamMaterial(cvar, old, new) if table.HasValue(ChamMaterials, new) then config["esp_player_overlay_chams_material"] = new end end local function UpdateInvisibleChamMaterial(cvar, old, new) if table.HasValue(ChamMaterials, new) then config["esp_player_xyz_chams_material"] = new end end CreateClientConVar("th_setmat", "!textured") cvars.AddChangeCallback("th_setmat", UpdateVisibleChamMaterial, "update_chams") CreateClientConVar("th_setoverlaymat", "!textured") cvars.AddChangeCallback("th_setoverlaymat", UpdateOverlayChamMaterial, "update_chams_overlay") CreateClientConVar("th_setxyzmat", "!textured") cvars.AddChangeCallback("th_setxyzmat", UpdateInvisibleChamMaterial, "update_chams_xyz") local function AddHook(event, name, func) hooks[name] = event hook.Add(event, name, func) end local function VerifyConfig() for k, v in pairs(verifyconfig) do if config[k] == nil then config[k] = verifyconfig[k] MsgC(Color(61, 149, 217), "\n[Time's Hack] ", Color(222, 222, 222), "The config value ", Color(255, 0, 0), k, Color(222, 222, 222), " was nil. To prevent errors in the cheat it has been set to the default value automatically. Please make sure to save your config with your desired settings to prevent this in the future.") end end for k, v in pairs(verifyconfig.colors) do if config.colors[k] == nil then if k == "config_name" then return end config.colors[k] = verifyconfig.colors[k] MsgC(Color(61, 149, 217), "\n[Time's Hack] ", Color(222, 222, 222), "The colour config value ", Color(255, 0, 0), k, Color(222, 222, 222), " was nil. To prevent errors in the cheat it has been set to the default value automatically. Please make sure to save your config with your desired settings to prevent this in the future.") end end for k, v in pairs(verifyconfig.keybinds) do if config.keybinds[k] == nil then config.keybinds[k] = verifyconfig.keybinds[k] MsgC(Color(61, 149, 217), "\n[Time's Hack] ", Color(222, 222, 222), "The keybind config value ", Color(255, 0, 0), k, Color(222, 222, 222), " was nil. To prevent errors in the cheat it has been set to the default value automatically. Please make sure to save your config with your desired settings to prevent this in the future.") end end end local function GetENTPos(Ent) if !IsValid(Ent) then return end local Points = { Vector(Ent:OBBMaxs().x, Ent:OBBMaxs().y, Ent:OBBMaxs().z), Vector(Ent:OBBMaxs().x, Ent:OBBMaxs().y, Ent:OBBMins().z), Vector(Ent:OBBMaxs().x, Ent:OBBMins().y, Ent:OBBMins().z), Vector(Ent:OBBMaxs().x, Ent:OBBMins().y, Ent:OBBMaxs().z), Vector(Ent:OBBMins().x, Ent:OBBMins().y, Ent:OBBMins().z), Vector(Ent:OBBMins().x, Ent:OBBMins().y, Ent:OBBMaxs().z), Vector(Ent:OBBMins().x, Ent:OBBMaxs().y, Ent:OBBMins().z), Vector(Ent:OBBMins().x, Ent:OBBMaxs().y, Ent:OBBMaxs().z) } local MaxX, MaxY, MinX, MinY local V1, V2, V3, V4, V5, V6, V7, V8 local isVis -- Cache entity's local to world transformation to avoid recalculating for each point local entPos = Ent:GetPos() local entAngles = Ent:GetAngles() for k, v in ipairs(Points) do local worldPos = LocalToWorld(v, Angle(0,0,0), entPos, entAngles) local ScreenPos = worldPos:ToScreen() isVis = ScreenPos.visible if MaxX != nil then MaxX = math.max(MaxX, ScreenPos.x) MaxY = math.max(MaxY, ScreenPos.y) MinX = math.min(MinX, ScreenPos.x) MinY = math.min(MinY, ScreenPos.y) else MaxX, MaxY, MinX, MinY = ScreenPos.x, ScreenPos.y, ScreenPos.x, ScreenPos.y end if V1 == nil then V1 = ScreenPos elseif V2 == nil then V2 = ScreenPos elseif V3 == nil then V3 = ScreenPos elseif V4 == nil then V4 = ScreenPos elseif V5 == nil then V5 = ScreenPos elseif V6 == nil then V6 = ScreenPos elseif V7 == nil then V7 = ScreenPos elseif V8 == nil then V8 = ScreenPos end end return MaxX, MaxY, MinX, MinY, V1, V2, V3, V4, V5, V6, V7, V8, isVis end local fakeRT = GetRenderTarget( "fakeRT" .. os.time(), ScrW(), ScrH() ) AddHook("RenderScene", RandomString(), function( vOrigin, vAngle, vFOV ) if ( !gui.IsConsoleVisible() && !gui.IsGameUIVisible() ) || ss then local view = { x = 0, y = 0, w = ScrW(), h = ScrH(), dopostprocess = true, origin = vOrigin, angles = vAngle, fov = vFOV, drawhud = true, drawmonitors = true, drawviewmodel = true } render.RenderView( view ) render.CopyTexture( nil, fakeRT ) cam.Start2D() hook.Run( "CheatHUDPaint" ) cam.End2D() render.SetRenderTarget( fakeRT ) return true end end ) AddHook("ShutDown", RandomString(), function() render.SetRenderTarget() end ) local renderv = render.RenderView local renderc = render.Clear local rendercap = render.Capture local rendercappix = render.CapturePixels local vguiworldpanel = vgui.GetWorldPanel render.CapturePixels = function() return end local function screengrab() if ss then return end ss = true renderc( 0, 0, 0, 255, true, true ) renderv( { origin = LocalPlayer():EyePos(), angles = LocalPlayer():EyeAngles(), x = 0, y = 0, w = ScrW(), h = ScrH(), dopostprocess = true, drawhud = true, drawmonitors = true, drawviewmodel = true } ) local vguishits = vguiworldpanel() if IsValid( vguishits ) then vguishits:SetPaintedManually( true ) end timer.Simple( 0.1, function() vguiworldpanel():SetPaintedManually( false ) ss = false end) end render.Capture = function(data) screengrab() local cap = rendercap( data ) return cap end local function GetIgnorePlayers( ply ) if config["aim_ignorefriends"] then if table.HasValue(config["friends"], ply:SteamID()) then return false end end if config["aim_ignoreadmins"] then if table.HasValue(onlineStaff, ply) then return false end end if config["aim_ignorenoclip"] then if ply:GetMoveType() == MOVETYPE_NOCLIP then return false end end if config["aim_ignoreteam"] then if ply:Team() == LocalPlayer():Team() then return false end end return true end local function ValidateESP(ply) -- Quick early returns for performance if !IsValid(ply) or ply == LocalPlayer() or !ply:IsPlayer() or !ply:Alive() then return false end -- Cache distance check since it's expensive if not ply.LastDistanceCheck or CurTime() > ply.LastDistanceCheck + 0.5 then ply.LastDistance = ply:GetPos():Distance(LocalPlayer():GetPos()) ply.LastDistanceCheck = CurTime() end if ply.LastDistance > config["esp_player_render_distance"] then return false end -- Check dormant state if config["esp_player_dormant"] and ply:IsDormant() then return false end -- Team filter check if !table.IsEmpty(teamFilterSelected) && config["esp_player_filter"] then local playerTeam = team.GetName(ply:Team()) for _, v in pairs(teamFilterSelected) do if playerTeam == v then return true end end return false end return true end local function ValidateAimbot(ply) if !IsValid(ply) then return false end if !ply:IsPlayer() and !ply:IsBot() then return false end if ply == LocalPlayer() then return false end if !ply:Alive() then return false end if ply:Team() == TEAM_SPECTATOR then return false end if ply:IsDormant() then return false end if !GetIgnorePlayers(ply) then return false end if ply:GetPos():Distance(LocalPlayer():GetPos()) > config["esp_player_render_distance"] then return false end if !table.IsEmpty(teamFilterSelected) && config["esp_player_filter"] then for k, v in pairs(teamFilterSelected) do if team.GetName(ply:Team()) == v then return true end end else return true end end local playerTable = {} AddHook("Think", RandomString(), function() -- Only update playerTable twice per second instead of every frame if not nextPlayerTableUpdate or CurTime() > nextPlayerTableUpdate then -- Clear the player table and rebuild it rather than individually adding/removing table.Empty(playerTable) for _, v in ipairs(player.GetAll()) do if ValidateESP(v) then table.insert(playerTable, v) end end nextPlayerTableUpdate = CurTime() + 0.5 end end) local function CloseFrame() frameX, frameY = frame:GetPos() RememberCursorPosition() frame:Remove() frame = false end local function SaveConfig() if cfgDropdown:GetSelected() == nil then return end local cfg = cfgDropdown:GetSelected() local JSONconfig = util.TableToJSON(config, true) file.Write("timeshack/"..cfg, JSONconfig) MsgC(Color(61, 149, 217), "\n[Time's Hack] ", Color(222, 222, 222), "Saved Config - ", Color(255, 0, 0), cfg, "\n") end local function LoadDefault() local JSONconfig = file.Read("timeshack/default.json", "DATA") config = util.JSONToTable(JSONconfig) VerifyConfig() loadedCfg[0] = "default.json" for k, v in ipairs(files) do if v == "default.json" then loadedCfg[1] = k end end SwapRender(true) MsgC(Color(61, 149, 217), "\n[Time's Hack] ", Color(222, 222, 222), "Loaded Default Config\n") end local function LoadConfig() if cfgDropdown:GetSelected() == nil then return end local cfg = cfgDropdown:GetSelected() local JSONconfig = file.Read("timeshack/"..cfg, "DATA") config = util.JSONToTable(JSONconfig) VerifyConfig() loadedCfg[0] = cfg for k, v in ipairs(files) do if v == cfg then loadedCfg[1] = k end end SwapRender(true) MsgC(Color(61, 149, 217), "\n[Time's Hack] ", Color(222, 222, 222), "Loaded Config - ", Color(255, 0, 0), cfg, "\n") CloseFrame() CreateTimeGUI() end local function CreateConfig() if config["config_name"] == nil then return end if file.Exists("timeshack/"..config["config_name"]..".json", "DATA") then return end local JSONconfig = util.TableToJSON(config, true) file.CreateDir("timeshack") file.Write("timeshack/"..config["config_name"]..".json", JSONconfig) MsgC(Color(61, 149, 217), "\n[Time's Hack] ", Color(222, 222, 222), "Created Config - ", Color(255, 0, 0), config["config_name"], "\n") CloseFrame() CreateTimeGUI() end local function DeleteConfig() if cfgDropdown:GetSelected() == nil then return end local cfg = cfgDropdown:GetSelected() file.Delete("timeshack/"..cfg) loadedCfg = {} MsgC(Color(61, 149, 217), "\n[Time's Hack] ", Color(222, 222, 222), "Deleted Config - ", Color(255, 0, 0), cfg, "\n") CloseFrame() CreateTimeGUI() end local function Unload() if frame then frame:Remove() end if teamFilter then teamFilter:Remove() end if colorWindow then colorWindow:Remove() end if pList then pList:Remove() end if entityFrame then entityFrame:Remove() end if chamFrame then chamFrame:Remove() end for k, v in pairs(hooks) do hook.Remove(v, k) end timer.Remove(cObs) timer.Remove(cStaff) for k, v in pairs(player.GetAll()) do v:SetRenderMode(0) end DisableWorldModulation() DisablePropModulation() cvars.RemoveChangeCallback("th_setmat", "update_chams") cvars.RemoveChangeCallback("th_setxyzmat", "update_chams_xyz") cvars.RemoveChangeCallback("th_setoverlaymat", "update_chams_overlay") print("Unloaded the cheat.") end local function CheckObservers() if !config["misc_observerlist"] then return end observingPlayers = {} observingPlayers.watcher = {} observingPlayers.spec = {} for k, v in pairs(player.GetAll()) do if v:IsValid() and v != LocalPlayer() then local Trace = {} Trace.start = LocalPlayer():EyePos() + Vector(0, 0, 32) Trace.endpos = v:EyePos() + Vector(0, 0, 32) Trace.filter = {v, LocalPlayer()} TraceRes = util.TraceLine(Trace) if !TraceRes.Hit then if (v:EyeAngles():Forward():Dot((LocalPlayer():EyePos() - v:EyePos())) > math.cos(math.rad(45))) then if !table.HasValue(observingPlayers.watcher, v) then table.insert(observingPlayers.watcher, v ) end end end end if v:GetObserverTarget() == LocalPlayer() then if !table.HasValue(observingPlayers.spec, v) then table.insert(observingPlayers.spec, v) end end end end timer.Create(cObs, 0.5, 0, CheckObservers) local function UpdateOnlineStaff() onlineStaff = {} for k, v in ipairs(player.GetAll()) do if v:IsValid() && v:IsSuperAdmin() then if !table.HasValue(onlineStaff, v) then table.insert(onlineStaff, v) end elseif v:IsValid() && v:IsAdmin() then if !table.HasValue(onlineStaff, v) then table.insert(onlineStaff, v) end elseif v:IsValid() && table.HasValue(staffRanks, v:GetUserGroup()) then if !table.HasValue(onlineStaff, v) then table.insert(onlineStaff, v) end end end end timer.Create(cStaff, 5, 0, UpdateOnlineStaff) --=================== GUI Item Functions ================ local function CreateCheckBox(lbl, x, y, cfg, col, par) local container = vgui.Create("DPanel", par) container:SetPos(x, y) container:SetSize(300, 20) container.Paint = function() return end -- Transparent container local checkBox = vgui.Create("DCheckBox", container) checkBox:SetPos(0, 2) checkBox:SetSize(16, 16) checkBox:SetValue(config[cfg]) -- Custom checkbox styling checkBox.Paint = function(self, w, h) local boxColor = Color(50, 50, 50, 255) local checkColor = Color(61, 149, 217, 255) local borderColor = Color(70, 70, 70, 255) if self:IsHovered() then boxColor = Color(60, 60, 60, 255) end -- Draw box draw.RoundedBox(2, 0, 0, w, h, borderColor) draw.RoundedBox(2, 1, 1, w-2, h-2, boxColor) -- Draw check if enabled if self:GetChecked() then draw.RoundedBox(2, 2, 2, w-4, h-4, checkColor) end end function checkBox:OnChange(bVal) config[cfg] = bVal end local label = vgui.Create("DLabel", container) label:SetPos(24, 2) label:SetText(lbl) label:SetTextColor(Color(220, 220, 220)) label:SizeToContents() -- Update container size to fit label container:SetSize(24 + label:GetWide(), 20) if col then local colorPicker = vgui.Create("DImageButton", container) colorPicker:SetImage("icon16/color_wheel.png") colorPicker:SetSize(16, 16) colorPicker:SetPos(label:GetWide() + 30, 2) container:SetSize(label:GetWide() + 50, 20) -- Update width to include color picker function colorPicker:DoClick() if IsValid(colorWindow) then colorWindow:Remove() end colorWindow = vgui.Create("DFrame") colorWindow:SetSize(300, 225) colorWindow:SetTitle(lbl.." - Color Picker") -- Custom color window styling colorWindow.Paint = function(self, w, h) draw.RoundedBox(4, 0, 0, w, h, Color(40, 40, 40, 255)) draw.RoundedBox(4, 1, 1, w-2, h-2, Color(30, 30, 30, 255)) -- Title bar draw.RoundedBoxEx(4, 1, 1, w-2, 25, Color(50, 50, 50, 255), true, true, false, false) draw.SimpleText(self.lblTitle:GetText(), "DermaDefault", 10, 13, Color(220, 220, 220), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) end local frameX, frameY = frame:GetPos() if frameX + 350 > ScrW() then colorWindow:Center() else colorWindow:SetPos(frameX + 350, frameY) end colorWindow:MakePopup() local colorSelector = vgui.Create("DColorMixer", colorWindow) colorSelector:Dock(FILL) colorSelector:DockPadding(5, 5, 5, 5) colorSelector:SetPalette(false) colorSelector:SetColor(string.ToColor(config.colors[cfg])) function colorSelector:ValueChanged(val) local r = tostring(val.r) local g = tostring(val.g) local b = tostring(val.b) local a = tostring(val.a) local col = r.." "..g.." "..b.." "..a config.colors[cfg] = col end end end return container end local function CreateLabel(lbl, x, y, par) local label = vgui.Create("DLabel", par) label:SetText(lbl) label:SetPos(x, y) label:SetTextColor(Color(220, 220, 220)) label:SetFont("TimesHack_Small") label:SizeToContents() return label end local function CreateSlider(lbl, x, y, cfg, min, max, dec, par) local container = vgui.Create("DPanel", par) container:SetPos(x, y) container:SetSize(300, 40) container.Paint = function() return end -- Transparent container local sliderLabel = vgui.Create("DLabel", container) sliderLabel:SetPos(0, 0) sliderLabel:SetText(lbl) sliderLabel:SetTextColor(Color(220, 220, 220)) sliderLabel:SizeToContents() local parentWidth = par:GetParent():GetWide() local sliderWidth = math.min(300, parentWidth - x - 30) -- Limit width to container or available space -- Create a custom slider without the graph prefix local slider = vgui.Create("DSlider", container) slider:SetPos(0, 18) -- Position below the label slider:SetSize(sliderWidth - 45, 20) -- Make room for value display -- Set up slider knob slider:SetSlideX(0.5) -- Initial position (middle) slider:SetNotchColor(Color(0,0,0,0)) -- Invisible notches -- Customize appearance slider.Paint = function(self, w, h) draw.RoundedBox(4, 0, h/2-1, w, 2, Color(60, 60, 60, 255)) end slider.Knob.Paint = function(self, w, h) local knobColor = Color(61, 149, 217, 255) if self:IsHovered() or slider:IsHovered() then knobColor = Color(81, 169, 237, 255) end if input.IsMouseDown(MOUSE_LEFT) and (self:IsHovered() or slider:IsHovered()) then knobColor = Color(101, 189, 255, 255) end draw.RoundedBox(6, 0, 0, w, h, Color(70, 70, 70, 255)) draw.RoundedBox(6, 1, 1, w-2, h-2, knobColor) end -- Create value display local valueDisplay = vgui.Create("DTextEntry", container) valueDisplay:SetPos(sliderWidth - 40, 18) valueDisplay:SetSize(40, 20) valueDisplay:SetText(tostring(config[cfg] or min)) valueDisplay:SetTextColor(Color(220, 220, 220)) valueDisplay:SetNumeric(true) -- Style the value display valueDisplay.Paint = function(self, w, h) local bgColor = Color(50, 50, 50, 255) local borderColor = Color(70, 70, 70, 255) if self:IsHovered() or self:HasFocus() then bgColor = Color(60, 60, 60, 255) end draw.RoundedBox(4, 0, 0, w, h, borderColor) draw.RoundedBox(4, 1, 1, w-2, h-2, bgColor) self:DrawTextEntryText(Color(220, 220, 220), Color(61, 149, 217, 255), Color(220, 220, 220)) end -- Function to update config when slider changes function slider:OnValueChanged() local val = Lerp(self:GetSlideX(), min, max) if dec > 0 then val = math.Round(val, dec) else val = math.Round(val) end config[cfg] = val -- Update display if dec > 0 then valueDisplay:SetText(string.format("%." .. dec .. "f", val)) else valueDisplay:SetText(string.format("%d", val)) end end -- Function to update slider when text input changes function valueDisplay:OnValueChange(val) val = tonumber(val) or min val = math.Clamp(val, min, max) config[cfg] = val -- Update slider position local fraction = (val - min) / (max - min) slider:SetSlideX(fraction) end -- Initialize with current value local initialFraction = (config[cfg] - min) / (max - min) slider:SetSlideX(initialFraction) slider:OnValueChanged() return container end local function CreateDropdown(lbl, x, y, choices, cfg, par) local container = vgui.Create("DPanel", par) container:SetPos(x, y) container:SetSize(300, 40) container.Paint = function() return end -- Transparent container local dropdownLabel = vgui.Create("DLabel", container) dropdownLabel:SetPos(0, 0) dropdownLabel:SetText(lbl) dropdownLabel:SetTextColor(Color(220, 220, 220)) dropdownLabel:SizeToContents() local parentWidth = par:GetParent():GetWide() local dropdownWidth = math.min(200, parentWidth - x - 30) local dropdown = vgui.Create("DComboBox", container) dropdown:SetPos(0, 18) -- Position below label dropdown:SetSize(dropdownWidth, 22) dropdown:SetValue(choices[config[cfg]]) dropdown:SetSortItems(false) -- Add choices for k, v in ipairs(choices) do dropdown:AddChoice(v) end -- Select the current choice dropdown:ChooseOptionID(config[cfg]) -- Custom dropdown styling dropdown.Paint = function(self, w, h) local bgColor = Color(50, 50, 50, 255) local borderColor = Color(70, 70, 70, 255) local textColor = Color(220, 220, 220, 255) if self:IsHovered() then bgColor = Color(60, 60, 60, 255) end -- Draw background and border draw.RoundedBox(4, 0, 0, w, h, borderColor) draw.RoundedBox(4, 1, 1, w-2, h-2, bgColor) -- Draw text local text = self:GetValue() or "Select option..." draw.SimpleText(text, "DermaDefault", 8, h/2, textColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) -- Draw dropdown arrow draw.SimpleText("▼", "DermaDefault", w - 8, h/2, textColor, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER) end function dropdown:OnSelect(index, value, data) config[cfg] = index end return container end local function CreateKeybind(x, y, cfg, par) local container = vgui.Create("DPanel", par) container:SetPos(x, y) container:SetSize(80, 22) container.Paint = function() return end -- Transparent container local keyBind = vgui.Create("DBinder", container) keyBind:SetSize(80, 22) keyBind:SetPos(0, 0) keyBind:SetValue(config.keybinds[cfg]) -- Custom keybind styling keyBind.Paint = function(self, w, h) local bgColor = Color(50, 50, 50, 255) local borderColor = Color(70, 70, 70, 255) local textColor = Color(220, 220, 220, 255) if self:IsHovered() then bgColor = Color(60, 60, 60, 255) end if self.Trapping then bgColor = Color(61, 149, 217, 255) textColor = Color(255, 255, 255, 255) end -- Draw background and border draw.RoundedBox(4, 0, 0, w, h, borderColor) draw.RoundedBox(4, 1, 1, w-2, h-2, bgColor) -- Draw text local displayValue = input.GetKeyName(self:GetValue()) if !displayValue then displayValue = "NONE" end displayValue = string.upper(displayValue) if self.Trapping then displayValue = "PRESS KEY" end draw.SimpleText(displayValue, "DermaDefault", w/2, h/2, textColor, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) end function keyBind:OnChange() config.keybinds[cfg] = keyBind:GetValue() end return container end local function CreateButton(lbl, tooltip, fnc, x, y, par) local button = vgui.Create("DButton", par) local buttonWidth = 150 -- Or calculate dynamically button:SetSize(buttonWidth, 20) button:SetPos(x, y) button:SetText(lbl) button:SetTooltip(tooltip) -- Basic Paint styling button.Paint = function(self, w, h) local bgColor = Color(50, 50, 50, 255) local textColor = Color(220, 220, 220, 255) if self:IsDown() then bgColor = Color(61, 149, 217, 255) textColor = Color(255, 255, 255, 255) elseif self:IsHovered() then bgColor = Color(70, 70, 70, 255) textColor = Color(255, 255, 255, 255) end draw.RoundedBox(4, 0, 0, w, h, bgColor) -- Ensure clean text rendering without shadows local text = self:GetText() surface.SetFont("DermaDefault") local textW, textH = surface.GetTextSize(text) draw.SimpleText(text, "DermaDefault", w / 2, h / 2, textColor, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) end function button:DoClick() surface.PlaySound( "buttons/button15.wav" ) fnc() end end local function CreateTextInput(lbl, cfg, x, y, chars, par) local container = vgui.Create("DPanel", par) container:SetPos(x, y) container:SetSize(300, 40) container.Paint = function() return end -- Transparent container local inputLabel = vgui.Create("DLabel", container) inputLabel:SetPos(0, 0) inputLabel:SetText(lbl) inputLabel:SetTextColor(Color(220, 220, 220)) inputLabel:SizeToContents() local parentWidth = par:GetParent():GetWide() local inputWidth = math.min(200, parentWidth - x - 30) local textInput = vgui.Create("DTextEntry", container) textInput:SetPos(0, 18) -- Position below label textInput:SetSize(inputWidth, 22) textInput:SetText(config[cfg] or "") textInput:SetMaximumCharCount(chars) textInput:SetPlaceholderText(lbl) -- Custom textinput styling textInput.Paint = function(self, w, h) local bgColor = Color(50, 50, 50, 255) local borderColor = Color(70, 70, 70, 255) local textColor = Color(220, 220, 220, 255) local cursorColor = Color(220, 220, 220, 255) if self:IsHovered() or self:HasFocus() then bgColor = Color(60, 60, 60, 255) borderColor = Color(61, 149, 217, 255) end -- Draw background and border draw.RoundedBox(4, 0, 0, w, h, borderColor) draw.RoundedBox(4, 1, 1, w-2, h-2, bgColor) -- Draw text self:DrawTextEntryText(textColor, Color(61, 149, 217, 255), cursorColor) -- Draw placeholder text if needed if self:GetText() == "" and not self:HasFocus() then draw.SimpleText(self:GetPlaceholderText(), "DermaDefault", 5, h/2, Color(150, 150, 150, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) end end function textInput:OnGetFocus() editingText = true end function textInput:OnLoseFocus() config[cfg] = self:GetText() editingText = false end return container end local function CreateFilterPanel() if !teamFilter then teamFilter = vgui.Create("DFrame") teamFilter:SetSize(300, 200) teamFilter:SetTitle("Filter By Teams") if teamFilterX == nil or teamFilterY == nil then teamFilter:Center() else teamFilter:SetPos(teamFilterX, teamFilterY) end teamFilter:MakePopup() function teamFilter:OnClose() teamFilterX, teamFilterY = teamFilter:GetPos() teamFilter = false config["esp_player_filter"] = teamFilterEnable:GetChecked() for k, v in pairs(teamList:GetSelected()) do if !table.HasValue(teamFilterSelected, v:GetValue(1)) then table.insert(teamFilterSelected, v:GetValue(1)) end end end teamFilterEnable = vgui.Create("DCheckBoxLabel", teamFilter) teamFilterEnable:Dock(TOP) teamFilterEnable:DockMargin(10, 10, 10, 0) teamFilterEnable:SetText("Enable Team Based Filtering") if config["esp_player_filtering"] then teamFilterEnable:SetValue( true ) end function teamFilterEnable:OnChange(bval) config["esp_player_filtering"] = bval end teamList = vgui.Create("DListView", teamFilter) teamList:Dock(FILL) teamList:DockMargin(10, 10, 10, 10) teamList:SetMultiSelect(true) teamList:AddColumn("Teams") teamList:SetSortable(true) for k, v in pairs(team.GetAllTeams()) do if !( team.GetName(k) == team.GetName(TEAM_CONNECTING) ) then teamList:AddLine(team.GetName(k)) end end if !table.IsEmpty(teamFilterSelected) then for k, v in pairs(teamFilterSelected) do for i, line in ipairs(teamList:GetLines()) do if line:GetValue(1) == v then teamList:SelectItem(line) break end end end end teamFilterSelected = {} end end local function CreatePlayerList() if !pList then pList = vgui.Create("DFrame") pList:SetSize(475, 200) local frameW, frameH = frame:GetPos() if frameW - 50 < 0 then pList:Center() else pList:SetPos(frameW - 525, frameH) end pList:SetTitle("Players List") pList:MakePopup() function pList:OnClose() pList = false end local dlist = vgui.Create("DListView", pList) dlist:DockMargin(0, 0, 150, 0) dlist:Dock(FILL) dlist:SetMultiSelect(false) dlist:AddColumn("Name") dlist:AddColumn("Steam ID") dlist:AddColumn("Rank") for k, v in ipairs(player.GetAll()) do if v != LocalPlayer() then dlist:AddLine(v:Name(), v:SteamID(), v:GetUserGroup()) end end local profile = vgui.Create("DButton", pList) profile:SetSize(130, 20) profile:SetPos(335, 29) profile:SetText("Open Profile") profile:SetTooltip("Opens the selected players steam profile.") function profile:DoClick() if dlist:GetSelectedLine() != nil then local _, line = dlist:GetSelectedLine() player.GetBySteamID(line:GetColumnText(2)):ShowProfile() end end local steamid = vgui.Create("DButton", pList) steamid:SetSize(130, 20) steamid:SetPos(335, 54) steamid:SetText("Copy SteamID") steamid:SetTooltip("Copies the selected players SteamID.") function steamid:DoClick() if dlist:GetSelectedLine() != nil then local _, line = dlist:GetSelectedLine() SetClipboardText(line:GetColumnText(2)) chat.AddText(Color(61, 149, 217), "[Time's Hack] ", Color(222, 222, 222), "SteamID copied to clipboard.") end end local friend = vgui.Create("DCheckBoxLabel", pList) friend:SetText("Friend") friend:SetPos(335, 79) friend:SetValue( false ) function friend:OnChange( bVal ) if dlist:GetSelectedLine() != nil then local _, line = dlist:GetSelectedLine() if bVal then if table.HasValue(config["friends"], line:GetColumnText(2)) then return else table.insert(config["friends"], line:GetColumnText(2)) end else if table.HasValue(config["friends"], line:GetColumnText(2)) then table.RemoveByValue(config["friends"], line:GetColumnText(2)) end end end end function dlist:OnRowSelected(ind, line) if table.HasValue(config["friends"], line:GetColumnText(2)) then friend:SetValue(true) else friend:SetValue(false) end end end end local function CreateEntityList() if !entityFrame then entityFrame = vgui.Create("DFrame") entityFrame:SetSize(400, 200) entityFrame:SetTitle("Entity ESP") if entityFrameX == nil or entityFrameY == nil then entityFrame:Center() else entityFrame:SetPos(entityFrameX, entityFrameY) end entityFrame:MakePopup() function entityFrame:OnClose() entityFrameX, entityFrameY = entityFrame:GetPos() entityFrame = false end local entList = vgui.Create("DListView", entityFrame) entList:DockMargin(0, 0, 100, 0) entList:Dock(FILL) entList:SetMultiSelect(false) entList:AddColumn("Entities") for k, v in ipairs(ents.GetAll()) do local good = true for k, line in ipairs( entList:GetLines() ) do if line:GetValue( 1 ) == v:GetClass() then good = false break end end if v:GetClass() != "worldspawn" && v:GetClass() != "player" && v:GetOwner() != LocalPlayer() && good then entList:AddLine(v:GetClass()) end end local enable = vgui.Create("DCheckBoxLabel", entityFrame) enable:SetText("Enable ESP") enable:SetPos(305, 30) enable:SetValue( false ) function enable:OnChange( bVal ) if entList:GetSelectedLine() != nil then local _, line = entList:GetSelectedLine() if bVal then if table.HasValue(config["entities"], line:GetColumnText(1)) then return else table.insert(config["entities"], line:GetColumnText(1)) end else if table.HasValue(config["entities"], line:GetColumnText(1)) then table.RemoveByValue(config["entities"], line:GetColumnText(1)) end end end end CreateCheckBox("Box ESP", 305, 50, "esp_entity_box", true, entityFrame) CreateCheckBox("Name ESP", 305, 70, "esp_entity_name", true, entityFrame) function entList:OnRowSelected(ind, line) if table.HasValue(config["entities"], line:GetColumnText(1)) then enable:SetValue(true) else enable:SetValue(false) end end end end local function CreateMaterialList() if !chamFrame then chamFrame = vgui.Create("DFrame") chamFrame:SetSize(400, 425) chamFrame:SetTitle("Cham Materials") if chamFrameX == nil or chamFrameY == nil then chamFrame:Center() else chamFrame:SetPos(chamFrameX, chamFrameY) end chamFrame:MakePopup() function chamFrame:OnClose() chamFrameX, chamFrameY = chamFrame:GetPos() chamFrame = false end local sPanel = vgui.Create("DScrollPanel", chamFrame) sPanel:Dock(FILL) local visChams = vgui.Create("ControlPanel", sPanel) visChams:Dock(TOP) visChams:SetName("Visible Chams") visChams:MatSelect("th_setmat", ChamMaterials, true, 50, 50) local overlayChams = vgui.Create("ControlPanel", sPanel) overlayChams:Dock(TOP) overlayChams:SetName("Overlay Chams") overlayChams:MatSelect("th_setoverlaymat", ChamMaterials, true, 50, 50) local invisChams = vgui.Create("ControlPanel", sPanel) invisChams:Dock(TOP) invisChams:SetName("Invisible Chams") invisChams:MatSelect("th_setxyzmat", ChamMaterials, true, 50, 50) end end --=================== Create GUI ================ function CreateTimeGUI() files, dir = file.Find( "timeshack/*.json", "DATA" ) -- Define colors for the modern UI local colors = { background = Color(20, 20, 20, 255), -- Matte black as requested sidebar = Color(30, 30, 30, 255), header = Color(25, 25, 25, 255), elements = Color(40, 40, 40, 255), accent = Color(61, 149, 217, 255), text = Color(220, 220, 220, 255), text_hover = Color(255, 255, 255, 255), borders = Color(50, 50, 50, 255) } -- Remove existing frame if open if IsValid(frame) then frame:Remove() end if IsValid(colorWindow) then colorWindow:Remove() end if IsValid(teamFilter) then teamFilter:Remove() end if IsValid(pList) then pList:Remove() end if IsValid(entityFrame) then entityFrame:Remove() end if IsValid(chamFrame) then chamFrame:Remove() end -- Create fonts surface.CreateFont("TimesHack_Title", { font = "Tahoma", size = 20, weight = 700, antialias = true, shadow = false, outline = false, blursize = 0 }) surface.CreateFont("TimesHack_Tab", { font = "Tahoma", size = 16, weight = 500, antialias = true, shadow = false, outline = false, blursize = 0 }) surface.CreateFont("TimesHack_Small", { font = "Tahoma", size = 14, weight = 400, antialias = true, shadow = false, outline = false, blursize = 0 }) -- Create the main frame frame = vgui.Create("DFrame") local frameW, frameH = 700, 500 frame:SetSize(frameW, frameH) frame:SetTitle("") frame:ShowCloseButton(false) frame:SetDraggable(false) -- Disable default dragging if frameX == nil or frameY == nil then frame:Center() else -- Adjust position if it goes off-screen due to size change frameX = math.Clamp(frameX, 0, ScrW() - frameW) frameY = math.Clamp(frameY, 0, ScrH() - frameH) frame:SetPos(frameX, frameY) end -- Create a header panel for dragging local headerHeight = 30 local header = vgui.Create("DPanel", frame) header:SetPos(1, 1) header:SetSize(frameW - 2, headerHeight) header.Paint = function() return end -- Transparent -- Variables for custom dragging local dragging = false local dragX, dragY = 0, 0 -- Custom mouse press handler for the header header.OnMousePressed = function(self, mouseCode) if mouseCode == MOUSE_LEFT then dragging = true dragX = gui.MouseX() - frame:GetX() dragY = gui.MouseY() - frame:GetY() self:MouseCapture(true) -- Capture mouse input end end -- Custom mouse release handler for the header header.OnMouseReleased = function(self, mouseCode) if mouseCode == MOUSE_LEFT then dragging = false self:MouseCapture(false) -- Release mouse capture -- Store the final position frameX, frameY = frame:GetPos() end end -- Custom think function to handle dragging header.Think = function(self) if dragging then local mouseX, mouseY = gui.MouseX(), gui.MouseY() local x = mouseX - dragX local y = mouseY - dragY -- Clamp to screen to prevent dragging offscreen x = math.Clamp(x, 0, ScrW() - frame:GetWide()) y = math.Clamp(y, 0, ScrH() - frame:GetTall()) frame:SetPos(x, y) end end frame:MakePopup() -- Custom paint function for main frame frame.Paint = function(self, w, h) -- Draw background draw.RoundedBox(6, 0, 0, w, h, colors.borders) draw.RoundedBox(6, 1, 1, w-2, h-2, colors.background) -- Draw header draw.RoundedBoxEx(6, 1, 1, w-2, 30, colors.header, true, true, false, false) -- Draw title draw.SimpleText("Time's Hack Enhanced", "TimesHack_Title", 15, 15, colors.text, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) end -- Close button local closeBtn = vgui.Create("DButton", frame) closeBtn:SetSize(20, 20) closeBtn:SetPos(frameW - 25, 5) closeBtn:SetText("") closeBtn.Paint = function(self, w, h) local btnColor = Color(220, 60, 60, 255) if self:IsHovered() then btnColor = Color(255, 80, 80, 255) end draw.RoundedBox(10, 0, 0, w, h, btnColor) draw.SimpleText("×", "TimesHack_Small", w/2, h/2, Color(255, 255, 255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) end closeBtn.DoClick = function() CloseFrame() end -- Store position when drag ends frame.OnMouseReleased = function(self, mousecode) if mousecode == MOUSE_LEFT then frameX, frameY = self:GetPos() end end -- Create sidebar local sidebarWidth = 150 local sidebar = vgui.Create("DPanel", frame) sidebar:SetPos(1, 31) -- Just below header sidebar:SetSize(sidebarWidth, frameH - 32) sidebar.Paint = function(self, w, h) draw.RoundedBoxEx(0, 0, 0, w, h, colors.sidebar, false, false, false, false) end -- Content area local contentArea = vgui.Create("DPanel", frame) contentArea:SetPos(sidebarWidth + 1, 31) -- Next to sidebar, below header contentArea:SetSize(frameW - sidebarWidth - 2, frameH - 32) contentArea.Paint = function(self, w, h) -- No background painting needed, main frame handles it end -- Table to hold content panels local contentPanels = {} local activeContentPanel = nil -- Function to switch content panels local function SwitchContentPanel(panel) if activeContentPanel then activeContentPanel:SetVisible(false) end panel:SetVisible(true) activeContentPanel = panel activeTab = panel.CategoryName end -- Function to create styled sidebar buttons local function CreateSidebarButton(label, icon, targetPanel, yPos) local btn = vgui.Create("DButton", sidebar) btn:SetText("") btn:SetPos(5, yPos) btn:SetSize(sidebarWidth - 10, 30) btn.Icon = icon btn.Label = label btn.TargetPanel = targetPanel btn.Paint = function(self, w, h) local bgColor = colors.sidebar local textColor = colors.text local accentBar = Color(0, 0, 0, 0) if self:IsHovered() or activeContentPanel == self.TargetPanel then bgColor = colors.elements textColor = colors.text_hover if activeContentPanel == self.TargetPanel then accentBar = colors.accent end end draw.RoundedBox(4, 0, 0, w, h, bgColor) -- Draw accent bar for active tab draw.RoundedBox(2, 0, 0, 3, h, accentBar) -- Draw icon and text if self.Icon and file.Exists("materials/" .. self.Icon, "GAME") then surface.SetDrawColor(textColor) surface.SetMaterial(Material(self.Icon)) surface.DrawTexturedRect(10, (h-16)/2, 16, 16) draw.SimpleText(self.Label, "TimesHack_Tab", 34, h/2, textColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) else draw.SimpleText(self.Label, "TimesHack_Tab", w/2, h/2, textColor, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) end end btn.DoClick = function(self) SwitchContentPanel(self.TargetPanel) end return btn end -- Function to create styled scrollbars local function StyleScrollBar(scrollPanel) local bar = scrollPanel:GetVBar() bar:SetSize(6, 0) -- Make scrollbar thinner bar.Paint = function(self, w, h) draw.RoundedBox(0, 0, 0, w, h, Color(30, 30, 30, 100)) end bar.btnUp.Paint = function(self, w, h) end bar.btnDown.Paint = function(self, w, h) end bar.btnGrip.Paint = function(self, w, h) local gripColor = colors.accent if self:IsHovered() then gripColor = Color(71, 159, 227, 255) end draw.RoundedBox(3, 0, 0, w, h, gripColor) end end -- Define categories and create content panels local categories = { { Name = "Aimbot", Icon = "icon16/bomb.png" }, { Name = "Player", Icon = "icon16/user.png" }, { Name = "Other", Icon = "icon16/world.png" }, { Name = "Misc", Icon = "icon16/cog.png" }, { Name = "Config", Icon = "icon16/database.png" } } local currentY = 10 for i, category in ipairs(categories) do local scrollPanel = vgui.Create("DScrollPanel", contentArea) scrollPanel:Dock(FILL) scrollPanel:SetVisible(false) -- Hide initially scrollPanel.CategoryName = category.Name StyleScrollBar(scrollPanel) -- Store the panel contentPanels[category.Name] = scrollPanel -- Create sidebar button CreateSidebarButton(category.Name, category.Icon, scrollPanel, currentY) currentY = currentY + 35 -- Increment Y position for next button end --=================== Populate Content Panels =================== -- Get references to the specific panels local aimPanel = contentPanels["Aimbot"] local visplayerPanel = contentPanels["Player"] local visotherPanel = contentPanels["Other"] local miscPanel = contentPanels["Misc"] local configPanel = contentPanels["Config"] -- Padding value local pad = 10 local controlX = pad local controlY = pad local sliderWidth = contentArea:GetWide() - (pad * 3) - 15 -- Adjust width for padding and scrollbar local dropdownWidth = 200 local keybindWidth = 80 local buttonWidth = 150 local textInputWidth = 200 -- Function to add vertical spacing local function AddSpacing(amount) controlY = controlY + amount end -- ==== Aimbot Panel ==== CreateCheckBox("Enable Aimbot", controlX, controlY, "aim_master_toggle", false, aimPanel) AddSpacing(20) CreateCheckBox("Aimbot On Key", controlX, controlY, "aim_onkey", false, aimPanel) CreateKeybind(controlX + 110, controlY, "aim_onkey_key", aimPanel) -- Adjust X based on checkbox width if needed AddSpacing(20) CreateCheckBox("No-Recoil", controlX, controlY, "aim_norecoil", false, aimPanel) AddSpacing(20) CreateCheckBox("Silent Aim (Unsafe)", controlX, controlY, "aim_silent", false, aimPanel) AddSpacing(20) CreateDropdown("Target Selection", controlX, controlY, {"Crosshair", "Closest Distance", "Lowest Health"}, "aim_target", aimPanel) AddSpacing(45) -- Dropdown height + spacing CreateDropdown("Hitbox Selection", controlX, controlY, {"Hitscan", "Head", "Body"}, "aim_hitbox", aimPanel) AddSpacing(45) CreateSlider("Aimbot FOV", controlX, controlY, "aim_fov", 0, 180, 0, aimPanel) AddSpacing(42) -- Slider height + spacing CreateCheckBox("Aimbot Smoothing", controlX, controlY, "aim_smoothing", false, aimPanel) AddSpacing(20) CreateSlider("Smoothing Scale", controlX, controlY, "aim_smoothing_value", 0, 2, 2, aimPanel) AddSpacing(42) CreateCheckBox("Ignore Friends", controlX, controlY, "aim_ignorefriends", false, aimPanel) AddSpacing(20) CreateCheckBox("Ignore Staff", controlX, controlY, "aim_ignoreadmins", false, aimPanel) AddSpacing(20) CreateCheckBox("Ignore Noclipping", controlX, controlY, "aim_ignorenoclip", false, aimPanel) AddSpacing(20) CreateCheckBox("Ignore Same Team", controlX, controlY, "aim_ignoreteam", false, aimPanel) AddSpacing(20) CreateCheckBox("Ignore Non-Visible", controlX, controlY, "aim_ignoreinvis", false, aimPanel) AddSpacing(30) -- Extra space before Triggerbot CreateCheckBox("Enable Triggerbot", controlX, controlY, "trigger_master_toggle", false, aimPanel) AddSpacing(20) CreateCheckBox("Triggerbot On Key", controlX, controlY, "trigger_onkey", false, aimPanel) CreateKeybind(controlX + 130, controlY, "trigger_onkey_key", aimPanel) -- ==== Player Panel ==== controlY = pad -- Reset Y for new panel CreateCheckBox("Box ESP", controlX, controlY, "esp_player_box", true, visplayerPanel) AddSpacing(20) CreateDropdown("Box Style", controlX, controlY, {"2D", "2D Corners", "3D"}, "esp_player_box_mode", visplayerPanel) AddSpacing(45) CreateCheckBox("Name ESP", controlX, controlY, "esp_player_name", true, visplayerPanel) AddSpacing(20) CreateCheckBox("HP ESP", controlX, controlY, "esp_player_hp", true, visplayerPanel) AddSpacing(20) CreateCheckBox("Armor ESP", controlX, controlY, "esp_player_armor", true, visplayerPanel) AddSpacing(20) CreateCheckBox("Weapon ESP", controlX, controlY, "esp_player_weapon", true, visplayerPanel) AddSpacing(20) CreateCheckBox("Fancy Weapon Name", controlX, controlY, "esp_player_weapon_fancy", false, visplayerPanel) AddSpacing(20) CreateCheckBox("Rank ESP", controlX, controlY, "esp_player_rank", true, visplayerPanel) AddSpacing(20) CreateCheckBox("Team ESP", controlX, controlY, "esp_player_team", false, visplayerPanel) AddSpacing(20) CreateCheckBox("Skeleton ESP", controlX, controlY, "esp_player_skeleton", true, visplayerPanel) AddSpacing(20) CreateCheckBox("Snaplines", controlX, controlY, "esp_player_snaplines", true, visplayerPanel) AddSpacing(20) CreateCheckBox("Glow ESP", controlX, controlY, "esp_player_glow", true, visplayerPanel) AddSpacing(20) CreateCheckBox("Player Chams", controlX, controlY, "esp_player_chams", true, visplayerPanel) AddSpacing(20) CreateCheckBox("Player Chams Overlay", controlX, controlY, "esp_player_chams_overlay", true, visplayerPanel) AddSpacing(20) CreateCheckBox("Player Chams XYZ", controlX, controlY, "esp_player_chams_xyz", true, visplayerPanel) AddSpacing(20) CreateButton("Cham Material", "Opens the cham material selector.", CreateMaterialList, controlX, controlY, visplayerPanel) AddSpacing(25) CreateCheckBox("Hitbox ESP", controlX, controlY, "esp_player_hitbox", true, visplayerPanel) AddSpacing(20) CreateSlider("ESP Max Render Distance", controlX, controlY, "esp_player_render_distance", 500, 20000, 0, visplayerPanel) AddSpacing(42) CreateCheckBox("Hide Dormant Players", controlX, controlY, "esp_player_dormant", false, visplayerPanel) AddSpacing(20) CreateCheckBox("Highlight Friends Box", controlX, controlY, "esp_player_highlight_box", true, visplayerPanel) AddSpacing(20) CreateCheckBox("Highlight Friends Name", controlX, controlY, "esp_player_highlight_name", true, visplayerPanel) -- ==== Other Panel ==== controlY = pad CreateCheckBox("Fog Modulation", controlX, controlY, "esp_other_fog", true, visotherPanel) AddSpacing(20) CreateSlider("Fog Start", controlX, controlY, "esp_other_fog_start", 0, 50000, 0, visotherPanel) AddSpacing(42) CreateSlider("Fog End", controlX, controlY, "esp_other_fog_end", 0, 50000, 0, visotherPanel) AddSpacing(42) CreateSlider("Fog Density", controlX, controlY, "esp_other_fog_density", 0, 1, 1, visotherPanel) AddSpacing(42) CreateCheckBox("World Modulation", controlX, controlY, "esp_other_worldmod", true, visotherPanel) AddSpacing(20) CreateCheckBox("Prop Modulation", controlX, controlY, "esp_other_propmod", true, visotherPanel) AddSpacing(20) CreateCheckBox("Remove Skybox", controlX, controlY, "esp_other_nosky", false, visotherPanel) AddSpacing(20) CreateCheckBox("Nightmode", controlX, controlY, "esp_other_nightmode", false, visotherPanel) AddSpacing(20) CreateSlider("Nightmode Scale", controlX, controlY, "esp_other_nightmode_scale", 0, 1, 1, visotherPanel) AddSpacing(42) CreateSlider("Bloom Scale", controlX, controlY, "esp_other_bloom", 0, 1, 2, visotherPanel) AddSpacing(42) CreateCheckBox("Hitsound", controlX, controlY, "esp_other_hitsound", false, visotherPanel) AddSpacing(20) CreateCheckBox("Draw Aimbot FOV", controlX, controlY, "esp_other_drawfov", true, visotherPanel) AddSpacing(20) CreateCheckBox("Fullbright", controlX, controlY, "esp_other_fullbright", false, visotherPanel) AddSpacing(20) CreateCheckBox("Thirdperson", controlX, controlY, "esp_other_thirdperson", false, visotherPanel) CreateKeybind(controlX + 100, controlY, "thirdperson_key", visotherPanel) AddSpacing(20) CreateSlider("Thirdperson Distance", controlX, controlY, "esp_other_thirdperson_distance", 5, 50, 0, visotherPanel) AddSpacing(42) CreateCheckBox("Freecam", controlX, controlY, "esp_other_freecam", false, visotherPanel) CreateKeybind(controlX + 100, controlY, "freecam_key", visotherPanel) AddSpacing(20) CreateSlider("Freecam Speed", controlX, controlY, "esp_other_freecam_speed", 1, 10, 0, visotherPanel) AddSpacing(42) CreateButton("Entity List", "Open the entity list menu.", CreateEntityList, controlX, controlY, visotherPanel) -- ==== Misc Panel ==== controlY = pad CreateCheckBox("Auto Bunnyhop", controlX, controlY, "misc_autobunnyhop", false, miscPanel) AddSpacing(20) CreateCheckBox("Auto Strafe", controlX, controlY, "misc_autostrafe", false, miscPanel) AddSpacing(20) CreateCheckBox("Reveal TTT/Murder Info", controlX, controlY, "misc_ttt", false, miscPanel) AddSpacing(20) CreateCheckBox("Observer List", controlX, controlY, "misc_observerlist", false, miscPanel) AddSpacing(20) CreateCheckBox("Admin List", controlX, controlY, "misc_adminlist", false, miscPanel) AddSpacing(20) CreateCheckBox("Auto Click", controlX, controlY, "misc_autoclick", false, miscPanel) -- Assuming you added this config value AddSpacing(20) CreateCheckBox("Rainbow Physgun", controlX, controlY, "misc_rainbow", false, miscPanel) AddSpacing(20) CreateSlider("Rainbow Speed", controlX, controlY, "misc_rainbow_speed", 1, 100, 0, miscPanel) AddSpacing(42) CreateButton("Player List", "Open the player list menu.", CreatePlayerList, controlX, controlY, miscPanel) AddSpacing(25) CreateButton("Filter Teams", "The filter will be applied when the filter menu is closed. This filter applies to ESP and Aimbot.", CreateFilterPanel, controlX, controlY, miscPanel) AddSpacing(25) CreateCheckBox("Override FOV", controlX, controlY, "misc_fov", false, miscPanel) AddSpacing(20) CreateSlider("FOV Value", controlX, controlY, "misc_fov_value", 50, 160, 0, miscPanel) AddSpacing(42) CreateCheckBox("Viewmodel Changer", controlX, controlY, "misc_viewmodel", false, miscPanel) AddSpacing(20) CreateCheckBox("Remove Bob", controlX, controlY, "misc_bob", false, miscPanel) AddSpacing(20) CreateCheckBox("Remove Sway", controlX, controlY, "misc_sway", false, miscPanel) AddSpacing(20) CreateSlider("Viewmodel X", controlX, controlY, "misc_vm_x", -50, 50, 0, miscPanel) AddSpacing(42) CreateSlider("Viewmodel Y", controlX, controlY, "misc_vm_y", -30, 30, 0, miscPanel) AddSpacing(42) CreateSlider("Viewmodel Z", controlX, controlY, "misc_vm_z", -20, 20, 0, miscPanel) AddSpacing(42) CreateSlider("Viewmodel Pitch", controlX, controlY, "misc_vm_p", -90, 90, 0, miscPanel) AddSpacing(42) CreateSlider("Viewmodel Yaw", controlX, controlY, "misc_vm_ya", -90, 90, 0, miscPanel) AddSpacing(42) CreateSlider("Viewmodel Roll", controlX, controlY, "misc_vm_r", -90, 90, 0, miscPanel) -- ==== Config Panel ==== controlY = pad CreateLabel("Menu Keybind", controlX, controlY, configPanel) CreateKeybind(controlX, controlY + 15, "menu_key", configPanel) AddSpacing(40) cfgDropdown = vgui.Create("DComboBox", configPanel) cfgDropdown:SetSize(dropdownWidth, 20) cfgDropdown:SetPos(controlX, controlY) if loadedCfg[0] != nil then cfgDropdown:ChooseOption(loadedCfg[0], loadedCfg[1]) end for k, v in ipairs(files) do cfgDropdown:AddChoice(v) end cfgDropdown:SetSortItems(false) -- Apply custom styling to match other dropdowns cfgDropdown.Paint = function(self, w, h) local bgColor = Color(50, 50, 50, 255) local borderColor = Color(70, 70, 70, 255) local textColor = Color(220, 220, 220, 255) if self:IsHovered() then bgColor = Color(60, 60, 60, 255) end -- Draw background and border draw.RoundedBox(4, 0, 0, w, h, borderColor) draw.RoundedBox(4, 1, 1, w-2, h-2, bgColor) -- Draw text local text = self:GetValue() or "Select config..." draw.SimpleText(text, "DermaDefault", 8, h/2, textColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) -- Draw dropdown arrow draw.SimpleText("▼", "DermaDefault", w - 8, h/2, textColor, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER) end AddSpacing(25) CreateButton("Save Config", "Save Config.", SaveConfig, controlX, controlY, configPanel) AddSpacing(25) CreateButton("Load Config", "Load Config.", LoadConfig, controlX, controlY, configPanel) AddSpacing(25) CreateButton("Create Config", "Create Config.", CreateConfig, controlX, controlY, configPanel) AddSpacing(25) CreateButton("Delete Config", "Delete Config.", DeleteConfig, controlX, controlY, configPanel) AddSpacing(25) CreateTextInput("Config Name", "config_name", controlX, controlY, 16, configPanel) AddSpacing(50) -- Increased spacing (was 25) CreateButton("Unload", "Fully unloads the cheat.", Unload, controlX, controlY, configPanel) AddSpacing(25) CreateLabel("Unload Key", controlX, controlY, configPanel) CreateKeybind(controlX, controlY + 15, "panic_key", configPanel) AddSpacing(40) CreateDropdown("Name Font", controlX, controlY, CheatFonts, "name_font", configPanel) AddSpacing(45) CreateSlider("Name Font Size", controlX, controlY, "name_font_size", 10, 20, 0, configPanel) AddSpacing(42) CreateDropdown("Flag Font", controlX, controlY, CheatFonts, "flag_font", configPanel) AddSpacing(45) CreateSlider("Flag Font Size", controlX, controlY, "flags_font_size", 10, 20, 0, configPanel) AddSpacing(42) CreateButton("ESP Mode " .. GetRenderMode(), "If your ESP is not working on a server try changing this to unsafe. (THIS SHOULD ALWAYS BE PROTECTED WHEN POSSIBLE TO MAXIMIZE SCREENGRAB PROTECTION)", SwapRender, controlX, controlY, configPanel) -- Restore previously opened panels if teamFilterWasOpen then CreateFilterPanel(); teamFilterWasOpen = false end if pListWasOpen then CreatePlayerList(); pListWasOpen = false end if entityFrameWasOpen then CreateEntityList(); entityFrameWasOpen = false end if chamFrameWasOpen then CreateMaterialList(); chamFrameWasOpen = false end -- Select the previously active tab or default to Aimbot local panelToSelect = contentPanels[activeTab] or contentPanels["Aimbot"] SwitchContentPanel(panelToSelect) end -- Helper function modifications (Example for CheckBox, others might need similar adjustments) local function CreateCheckBox(lbl, x, y, cfg, col, par) local container = vgui.Create("DPanel", par) container:SetPos(x, y) container:SetSize(300, 20) container.Paint = function() return end -- Transparent container local checkBox = vgui.Create("DCheckBox", container) checkBox:SetPos(0, 2) checkBox:SetSize(16, 16) checkBox:SetValue(config[cfg]) -- Custom checkbox styling checkBox.Paint = function(self, w, h) local boxColor = Color(50, 50, 50, 255) local checkColor = Color(61, 149, 217, 255) local borderColor = Color(70, 70, 70, 255) if self:IsHovered() then boxColor = Color(60, 60, 60, 255) end -- Draw box draw.RoundedBox(2, 0, 0, w, h, borderColor) draw.RoundedBox(2, 1, 1, w-2, h-2, boxColor) -- Draw check if enabled if self:GetChecked() then draw.RoundedBox(2, 2, 2, w-4, h-4, checkColor) end end function checkBox:OnChange(bVal) config[cfg] = bVal end local label = vgui.Create("DLabel", container) label:SetPos(24, 2) label:SetText(lbl) label:SetTextColor(Color(220, 220, 220)) label:SizeToContents() -- Update container size to fit label container:SetSize(24 + label:GetWide(), 20) if col then local colorPicker = vgui.Create("DImageButton", container) colorPicker:SetImage("icon16/color_wheel.png") colorPicker:SetSize(16, 16) colorPicker:SetPos(label:GetWide() + 30, 2) container:SetSize(label:GetWide() + 50, 20) -- Update width to include color picker function colorPicker:DoClick() if IsValid(colorWindow) then colorWindow:Remove() end colorWindow = vgui.Create("DFrame") colorWindow:SetSize(300, 225) colorWindow:SetTitle(lbl.." - Color Picker") -- Custom color window styling colorWindow.Paint = function(self, w, h) draw.RoundedBox(4, 0, 0, w, h, Color(40, 40, 40, 255)) draw.RoundedBox(4, 1, 1, w-2, h-2, Color(30, 30, 30, 255)) -- Title bar draw.RoundedBoxEx(4, 1, 1, w-2, 25, Color(50, 50, 50, 255), true, true, false, false) draw.SimpleText(self.lblTitle:GetText(), "DermaDefault", 10, 13, Color(220, 220, 220), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) end local frameX, frameY = frame:GetPos() if frameX + 350 > ScrW() then colorWindow:Center() else colorWindow:SetPos(frameX + 350, frameY) end colorWindow:MakePopup() local colorSelector = vgui.Create("DColorMixer", colorWindow) colorSelector:Dock(FILL) colorSelector:DockPadding(5, 5, 5, 5) colorSelector:SetPalette(false) colorSelector:SetColor(string.ToColor(config.colors[cfg])) function colorSelector:ValueChanged(val) local r = tostring(val.r) local g = tostring(val.g) local b = tostring(val.b) local a = tostring(val.a) local col = r.." "..g.." "..b.." "..a config.colors[cfg] = col end end end return container end -- Update Slider Positioning (adjust width dynamically) local function CreateSlider(lbl, x, y, cfg, min, max, dec, par) local container = vgui.Create("DPanel", par) container:SetPos(x, y) container:SetSize(300, 40) container.Paint = function() return end -- Transparent container local sliderLabel = vgui.Create("DLabel", container) sliderLabel:SetPos(0, 0) sliderLabel:SetText(lbl) sliderLabel:SetTextColor(Color(220, 220, 220)) sliderLabel:SizeToContents() local parentWidth = par:GetParent():GetWide() local sliderWidth = math.min(300, parentWidth - x - 30) -- Limit width to container or available space -- Create a custom slider without the graph prefix local slider = vgui.Create("DSlider", container) slider:SetPos(0, 18) -- Position below the label slider:SetSize(sliderWidth - 45, 20) -- Make room for value display -- Set up slider knob slider:SetSlideX(0.5) -- Initial position (middle) slider:SetNotchColor(Color(0,0,0,0)) -- Invisible notches -- Customize appearance slider.Paint = function(self, w, h) draw.RoundedBox(4, 0, h/2-1, w, 2, Color(60, 60, 60, 255)) end slider.Knob.Paint = function(self, w, h) local knobColor = Color(61, 149, 217, 255) if self:IsHovered() or slider:IsHovered() then knobColor = Color(81, 169, 237, 255) end if input.IsMouseDown(MOUSE_LEFT) and (self:IsHovered() or slider:IsHovered()) then knobColor = Color(101, 189, 255, 255) end draw.RoundedBox(6, 0, 0, w, h, Color(70, 70, 70, 255)) draw.RoundedBox(6, 1, 1, w-2, h-2, knobColor) end -- Create value display local valueDisplay = vgui.Create("DTextEntry", container) valueDisplay:SetPos(sliderWidth - 40, 18) valueDisplay:SetSize(40, 20) valueDisplay:SetText(tostring(config[cfg] or min)) valueDisplay:SetTextColor(Color(220, 220, 220)) valueDisplay:SetNumeric(true) -- Style the value display valueDisplay.Paint = function(self, w, h) local bgColor = Color(50, 50, 50, 255) local borderColor = Color(70, 70, 70, 255) if self:IsHovered() or self:HasFocus() then bgColor = Color(60, 60, 60, 255) end draw.RoundedBox(4, 0, 0, w, h, borderColor) draw.RoundedBox(4, 1, 1, w-2, h-2, bgColor) self:DrawTextEntryText(Color(220, 220, 220), Color(61, 149, 217, 255), Color(220, 220, 220)) end -- Function to update config when slider changes function slider:OnValueChanged() local val = Lerp(self:GetSlideX(), min, max) if dec > 0 then val = math.Round(val, dec) else val = math.Round(val) end config[cfg] = val -- Update display if dec > 0 then valueDisplay:SetText(string.format("%." .. dec .. "f", val)) else valueDisplay:SetText(string.format("%d", val)) end end -- Function to update slider when text input changes function valueDisplay:OnValueChange(val) val = tonumber(val) or min val = math.Clamp(val, min, max) config[cfg] = val -- Update slider position local fraction = (val - min) / (max - min) slider:SetSlideX(fraction) end -- Initialize with current value local initialFraction = (config[cfg] - min) / (max - min) slider:SetSlideX(initialFraction) slider:OnValueChanged() return container end -- Update Dropdown Positioning local function CreateDropdown(lbl, x, y, choices, cfg, par) local container = vgui.Create("DPanel", par) container:SetPos(x, y) container:SetSize(300, 40) container.Paint = function() return end -- Transparent container local dropdownLabel = vgui.Create("DLabel", container) dropdownLabel:SetPos(0, 0) dropdownLabel:SetText(lbl) dropdownLabel:SetTextColor(Color(220, 220, 220)) dropdownLabel:SizeToContents() local parentWidth = par:GetParent():GetWide() local dropdownWidth = math.min(200, parentWidth - x - 30) local dropdown = vgui.Create("DComboBox", container) dropdown:SetPos(0, 18) -- Position below label dropdown:SetSize(dropdownWidth, 22) dropdown:SetValue(choices[config[cfg]]) dropdown:SetSortItems(false) -- Add choices for k, v in ipairs(choices) do dropdown:AddChoice(v) end -- Select the current choice dropdown:ChooseOptionID(config[cfg]) -- Custom dropdown styling dropdown.Paint = function(self, w, h) local bgColor = Color(50, 50, 50, 255) local borderColor = Color(70, 70, 70, 255) local textColor = Color(220, 220, 220, 255) if self:IsHovered() then bgColor = Color(60, 60, 60, 255) end -- Draw background and border draw.RoundedBox(4, 0, 0, w, h, borderColor) draw.RoundedBox(4, 1, 1, w-2, h-2, bgColor) -- Draw text local text = self:GetValue() or "Select option..." draw.SimpleText(text, "DermaDefault", 8, h/2, textColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) -- Draw dropdown arrow draw.SimpleText("▼", "DermaDefault", w - 8, h/2, textColor, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER) end function dropdown:OnSelect(index, value, data) config[cfg] = index end return container end -- Update Button Styling/Positioning local function CreateButton(lbl, tooltip, fnc, x, y, par) local button = vgui.Create("DButton", par) local buttonWidth = 150 -- Or calculate dynamically button:SetSize(buttonWidth, 20) button:SetPos(x, y) button:SetText(lbl) button:SetTooltip(tooltip) -- Basic Paint styling button.Paint = function(self, w, h) local bgColor = Color(50, 50, 50, 255) local textColor = Color(220, 220, 220, 255) if self:IsDown() then bgColor = Color(61, 149, 217, 255) textColor = Color(255, 255, 255, 255) elseif self:IsHovered() then bgColor = Color(70, 70, 70, 255) textColor = Color(255, 255, 255, 255) end draw.RoundedBox(4, 0, 0, w, h, bgColor) -- Ensure clean text rendering without shadows local text = self:GetText() surface.SetFont("DermaDefault") local textW, textH = surface.GetTextSize(text) draw.SimpleText(text, "DermaDefault", w / 2, h / 2, textColor, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) end function button:DoClick() surface.PlaySound( "buttons/button15.wav" ) fnc() end end -- Update TextInput Styling/Positioning local function CreateTextInput(lbl, cfg, x, y, chars, par) textInput = vgui.Create("DTextEntry", par) local inputWidth = 200 -- Or calculate dynamically textInput:SetSize(inputWidth, 20) textInput:SetPos(x, y) textInput:IsMultiline( false ) textInput:SetMaximumCharCount(chars) textInput:SetPlaceholderText(lbl) -- Basic Paint styling -- textInput.Paint = function(self, w, h) -- draw.RoundedBox(4, 0, 0, w, h, Color(40, 40, 40, 255)) -- Background -- surface.SetDrawColor(Color(60, 60, 60, 255)) -- Border -- surface.DrawOutlinedRect(0, 0, w, h) -- self:DrawTextEntryText(Color(220,220,220), Color(250,250,250), Color(10,10,10)) -- Draw text/placeholder -- end textInput.Think = function() if textInput:IsEditing() then editingText = true else editingText = false end config[cfg] = textInput:GetValue() end end -- Update Keybind Positioning local function CreateKeybind(x, y, cfg, par) local keyBind = vgui.Create("DBinder", par) keyBind:SetValue(config.keybinds[cfg]) keyBind:SetSize(80, 16) -- Standard size keyBind:SetPos(x, y) keyBind.OnChange = function() config.keybinds[cfg] = keyBind:GetValue() end end -- Update Label Styling/Positioning local function CreateLabel(lbl, x, y, par) local label = vgui.Create("DLabel", par) label:SetText(lbl) label:SetPos(x, y) label:SetTextColor(Color(220, 220, 220)) -- Set text color label:SizeToContents() end -- ===================== GUI Logic AddHook("Think", RandomString(), function() if config.keybinds["menu_key"] != 0 && input.IsKeyDown(config.keybinds["menu_key"]) && !insertdown && !config["menu_key"] then if teamFilter then teamFilterX, teamFilterY = teamFilter:GetPos() config["esp_player_filter"] = teamFilterEnable:GetChecked() for k, v in pairs(teamList:GetSelected()) do if !table.HasValue(teamFilterSelected, v:GetValue(1)) then table.insert(teamFilterSelected, v:GetValue(1)) end end teamFilter:Remove() teamFilterWasOpen = true teamFilter = false end if entityFrame then entityFrameX, entityFrameY = entityFrame:GetPos() entityFrame:Remove() entityFrameWasOpen = true entityFrame = false end if chamFrame then chamFrameX, chamFrameY = chamFrame:GetPos() chamFrame:Remove() chamFrameWasOpen = true chamFrame = false end if colorWindow then colorWindow:Remove() colorWindow = false end if pList then pList:Remove() pListWasOpen = true pList = false end if frame then CloseFrame() else CreateTimeGUI() RestoreCursorPosition() end end if config.keybinds["logger_key"] != 0 && input.IsKeyDown(config.keybinds["logger_key"]) && !homedown && !config["logger_key"] then if !exploit_menu:IsVisible() then gui.EnableScreenClicker(true) RestoreCursorPosition() exploit_menu:MakePopup() exploit_menu:SetVisible(true) else RememberCursorPosition() gui.EnableScreenClicker(false) exploit_menu:Hide() exploit_menu:SetVisible(false) end end insertdown = input.IsKeyDown(config.keybinds["menu_key"]) homedown = input.IsKeyDown(config.keybinds["logger_key"]) panicdown = input.IsKeyDown(config.keybinds["panic_key"]) if !panicdown && input.IsKeyDown(config.keybinds["panic_key"]) && config.keybinds["panic_key"] != 0 then Unload() end end) --=================================== --=================================== Visuals --=================================== -- ======================= ESP local bones = { { S = "ValveBiped.Bip01_Head1", E = "ValveBiped.Bip01_Neck1" }, { S = "ValveBiped.Bip01_Neck1", E = "ValveBiped.Bip01_Spine4" }, { S = "ValveBiped.Bip01_Spine4", E = "ValveBiped.Bip01_Spine2" }, { S = "ValveBiped.Bip01_Spine2", E = "ValveBiped.Bip01_Spine1" }, { S = "ValveBiped.Bip01_Spine1", E = "ValveBiped.Bip01_Spine" }, { S = "ValveBiped.Bip01_Spine", E = "ValveBiped.Bip01_Pelvis" }, { S = "ValveBiped.Bip01_Spine2", E = "ValveBiped.Bip01_L_UpperArm" }, { S = "ValveBiped.Bip01_L_UpperArm", E = "ValveBiped.Bip01_L_Forearm" }, { S = "ValveBiped.Bip01_L_Forearm", E = "ValveBiped.Bip01_L_Hand" }, { S = "ValveBiped.Bip01_Spine2", E = "ValveBiped.Bip01_R_UpperArm" }, { S = "ValveBiped.Bip01_R_UpperArm", E = "ValveBiped.Bip01_R_Forearm" }, { S = "ValveBiped.Bip01_R_Forearm", E = "ValveBiped.Bip01_R_Hand" }, { S = "ValveBiped.Bip01_Pelvis", E = "ValveBiped.Bip01_L_Thigh" }, { S = "ValveBiped.Bip01_L_Thigh", E = "ValveBiped.Bip01_L_Calf" }, { S = "ValveBiped.Bip01_L_Calf", E = "ValveBiped.Bip01_L_Foot" }, { S = "ValveBiped.Bip01_L_Foot", E = "ValveBiped.Bip01_L_Toe0" }, { S = "ValveBiped.Bip01_Pelvis", E = "ValveBiped.Bip01_R_Thigh" }, { S = "ValveBiped.Bip01_R_Thigh", E = "ValveBiped.Bip01_R_Calf" }, { S = "ValveBiped.Bip01_R_Calf", E = "ValveBiped.Bip01_R_Foot" }, { S = "ValveBiped.Bip01_R_Foot", E = "ValveBiped.Bip01_R_Toe0" }, } local function DoESP() if !ss then for k, v in ipairs(player.GetAll()) do if ValidateESP(v) then local MaxX, MaxY, MinX, MinY, V1, V2, V3, V4, V5, V6, V7, V8, isVis = GetENTPos( v ) if isVis then if config["esp_player_box"] then if config["esp_player_highlight_box"] then local ColAlt if table.HasValue(config["friends"], v:SteamID()) then local color = GetCachedColor(config.colors["esp_player_highlight_box"]) surface.SetDrawColor(color) ColAlt = color else local color = GetCachedColor(config.colors["esp_player_box"]) surface.SetDrawColor(color) ColAlt = color end else local color = GetCachedColor(config.colors["esp_player_box"]) surface.SetDrawColor(color) ColAlt = color end if config["esp_player_box_mode"] == 2 then local XLen, YLen = MaxX - MinX, MaxY - MinY surface.DrawLine( MaxX, MaxY, MinX + XLen * 0.7, MaxY) surface.DrawLine( MinX, MaxY, MinX + XLen * 0.3, MaxY) surface.DrawLine( MaxX, MaxY, MaxX, MinY + YLen * 0.75) surface.DrawLine( MaxX, MinY, MaxX, MinY + YLen * 0.25) surface.DrawLine( MinX, MinY, MaxX - XLen * 0.7, MinY ) surface.DrawLine( MaxX, MinY, MaxX - XLen * 0.3, MinY ) surface.DrawLine( MinX, MinY, MinX, MaxY - YLen * 0.75) surface.DrawLine( MinX, MaxY, MinX, MaxY - YLen * 0.25) elseif config["esp_player_box_mode"] == 3 then cam.Start3D() render.DrawWireframeBox( v:GetPos(), Angle(0, 0, 0), v:OBBMins(), v:OBBMaxs(), ColAlt, true ) cam.End3D() else surface.DrawLine( MaxX, MaxY, MinX, MaxY ) surface.DrawLine( MaxX, MaxY, MaxX, MinY ) surface.DrawLine( MinX, MinY, MaxX, MinY ) surface.DrawLine( MinX, MinY, MinX, MaxY ) end end if config["esp_player_name"] then surface.SetFont("ESP_Font_Main") local w, h = surface.GetTextSize(v:Nick()) local col if config["esp_player_highlight_name"] then if table.HasValue(config["friends"], v:SteamID()) then col = string.ToColor(config.colors["esp_player_highlight_name"]) else col = string.ToColor(config.colors["esp_player_name"]) end else col = string.ToColor(config.colors["esp_player_name"]) end draw.SimpleTextOutlined(v:Nick(), "ESP_Font_Main", MaxX-(MaxX-MinX)/2-w/2, MinY-1, col, TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM, 1, Color(0,0,0)) end if config["esp_player_hp"] then local hpMultiplier = v:Health() / v:GetMaxHealth() hpMultiplier = math.Clamp(hpMultiplier, 0, 1) local barLen = MinY - MaxY barlen = barLen * hpMultiplier local appliedBar = (MinY - MaxY) - barlen surface.SetFont("ESP_Font_Flag") local w, h = surface.GetTextSize(v:Health()) draw.SimpleTextOutlined(v:Health(), "ESP_Font_Flag", MinX-w-6, MinY+10, string.ToColor(config.colors["esp_player_hp"]), TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM, 1, Color(0,0,0)) surface.SetDrawColor(0, 0, 0, 100) surface.DrawLine( MinX-2, MinY, MinX-2, MaxY ) surface.DrawLine( MinX-3, MinY, MinX-3, MaxY ) surface.SetDrawColor(0, 255, 0) surface.DrawLine( MinX-2, MinY-appliedBar, MinX-2, MaxY ) surface.DrawLine( MinX-3, MinY-appliedBar, MinX-3, MaxY ) end if config["esp_player_armor"] then local yOffset if config["esp_player_hp"] then yOffset = 20 else yOffset = 10 end surface.SetFont("ESP_Font_Flag") local w, h = surface.GetTextSize(v:Armor()) if v:Armor() != 0 then draw.SimpleTextOutlined(v:Armor(), "ESP_Font_Flag", MinX-w-6, MinY+yOffset, string.ToColor(config.colors["esp_player_armor"]), TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM, 1, Color(0,0,0)) end end if config["esp_player_weapon"] then surface.SetFont("ESP_Font_Flag") if IsValid(v:GetActiveWeapon()) then local w, h = surface.GetTextSize(config["esp_player_weapon_fancy"] and v:GetActiveWeapon():GetPrintName() or v:GetActiveWeapon():GetClass()) draw.SimpleTextOutlined(config["esp_player_weapon_fancy"] and v:GetActiveWeapon():GetPrintName() or v:GetActiveWeapon():GetClass(), "ESP_Font_Flag", MaxX-(MaxX-MinX)/2-w/2, MaxY+12, string.ToColor(config.colors["esp_player_weapon"]), TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM, 1, Color(0,0,0)) end end if config["esp_player_rank"] then local yOffset if config["esp_player_weapon"] then yOffset = 24 else yOffset = 12 end surface.SetFont("ESP_Font_Flag") local w, h = surface.GetTextSize(v:GetUserGroup()) draw.SimpleTextOutlined(v:GetUserGroup(), "ESP_Font_Flag", MaxX-(MaxX-MinX)/2-w/2, MaxY+yOffset, string.ToColor(config.colors["esp_player_rank"]), TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM, 1, Color(0,0,0)) end if config["esp_player_team"] then local yOffset if config["esp_player_weapon"] && config["esp_player_rank"] then yOffset = 36 elseif ( config["esp_player_weapon"] && !config["esp_player_rank"] ) || ( !config["esp_player_weapon"] && config["esp_player_rank"] ) then yOffset = 24 else yOffset = 12 end local teamColor = team.GetColor(v:Team()) surface.SetFont("ESP_Font_Flag") local w, h = surface.GetTextSize(team.GetName(v:Team())) draw.SimpleTextOutlined(team.GetName(v:Team()), "ESP_Font_Flag", MaxX-(MaxX-MinX)/2-w/2, MaxY+yOffset, teamColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM, 1, Color(0,0,0)) end if config["esp_player_snaplines"] then surface.SetDrawColor( string.ToColor(config.colors["esp_player_snaplines"])) surface.DrawLine( ScrW() / 2 - 1, ScrH() , MaxX - ( MaxX - MinX ) / 2 - 1, MaxY ) end if config["esp_player_skeleton"] then for _, b in pairs( bones ) do if v:LookupBone(b.S) != nil && v:LookupBone(b.E) != nil then local spos, epos = v:GetBonePosition(v:LookupBone(b.S)):ToScreen(), v:GetBonePosition(v:LookupBone(b.E)):ToScreen() if spos.visible && epos.visible then surface.SetDrawColor( string.ToColor(config.colors["esp_player_skeleton"]) ) surface.DrawLine( spos.x, spos.y, epos.x, epos.y ) end end end end if config["esp_player_hitbox"] then if v:GetHitBoxGroupCount() != nil then for group = 0, v:GetHitBoxGroupCount() - 1 do for hitbox = 0, v:GetHitBoxCount( group ) - 1 do local pos, ang = v:GetBonePosition( v:GetHitBoxBone(hitbox, group) ) local mins, maxs = v:GetHitBoxBounds(hitbox, group) cam.Start3D() render.DrawWireframeBox( pos, ang, mins, maxs, string.ToColor(config.colors["esp_player_hitbox"]), true) cam.End3D() end end end end if config["aim_master_toggle"] && config["esp_other_drawfov"] && config["aim_fov"] < 90 then local X1 = math.tan( math.rad( config["aim_fov"] ) / 1.25 ) local X2 = math.tan( math.rad( LocalPlayer():GetFOV() / 2 ) ) local r = X1 / X2 local pxR = r * ( ScrW() / 2 ) surface.DrawCircle(ScrW() / 2, ScrH() / 2, pxR, string.ToColor(config.colors["esp_other_drawfov"])) end if v.Traitor then surface.SetFont("ESP_Font_Flag") local w, h = surface.GetTextSize("Traitor") draw.SimpleTextOutlined("Traitor", "ESP_Font_Flag", MaxX+5, MinY + h, Color(255, 0, 0) , TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM, 1, Color(0,0,0)) end if config["misc_ttt"] && engine.ActiveGamemode() == "murder" then if v:HasWeapon("weapon_mu_knife") then surface.SetFont("ESP_Font_Flag") local w, h = surface.GetTextSize("Murderer") draw.SimpleTextOutlined("Murderer", "ESP_Font_Flag", MaxX+5, MinY + h, Color(255, 0, 0) , TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM, 1, Color(0,0,0)) end end end end end for k, v in ipairs(ents.GetAll()) do if table.HasValue(config["entities"], v:GetClass()) then if v && v:GetOwner() != LocalPlayer() && IsValid(v) && v:GetPos():Distance(LocalPlayer():GetPos()) <= config["esp_player_render_distance"] then local MaxX, MaxY, MinX, MinY, V1, V2, V3, V4, V5, V6, V7, V8, isVis = GetENTPos( v ) if config["esp_entity_box"] then surface.SetDrawColor(string.ToColor(config.colors["esp_entity_box"])) surface.DrawLine( MaxX, MaxY, MinX, MaxY ) surface.DrawLine( MaxX, MaxY, MaxX, MinY ) surface.DrawLine( MinX, MinY, MaxX, MinY ) surface.DrawLine( MinX, MinY, MinX, MaxY ) end if config["esp_entity_name"] then surface.SetFont("ESP_Font_Flag") local w, h = surface.GetTextSize(v:GetClass()) draw.SimpleTextOutlined(v:GetClass(), "ESP_Font_Flag", MaxX-(MaxX-MinX)/2-w/2, MinY-1, string.ToColor(config.colors["esp_entity_name"]), TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM, 1, Color(0,0,0)) end end end end if config["misc_observerlist"] then for k, v in ipairs(observingPlayers.watcher) do if IsValid(v) then surface.SetFont("ESP_Font_Main") local nameWidth, nameHeight = surface.GetTextSize("Observer: "..v:Name()) draw.SimpleText("Observer: "..v:Name(), "ESP_Font_Main", ScrW() - nameWidth - 2, 0 + (15 * ( k - 1 ) ), Color(255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) end end for k, v in ipairs(observingPlayers.spec) do if IsValid(v) then surface.SetFont("ESP_Font_Main") local nameWidth, nameHeight = surface.GetTextSize("Spectator: "..v:Name()) draw.SimpleText("Spectator: "..v:Name(), "ESP_Font_Main", ScrW() - nameWidth - 2, -15 + (15 * #observingPlayers.watcher) + (15 * k - 1), Color(255, 0, 0), TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) end end end if config["misc_adminlist"] then for k, v in ipairs(onlineStaff) do if IsValid(v) then local a if v:IsSuperAdmin() then a = "Superadmin" elseif v:IsAdmin() then a = "Admin" else a = v:GetUserGroup() end surface.SetFont("ESP_Font_Main") local nameWidth, nameHeight = surface.GetTextSize(v:Name().." ("..a..")") draw.SimpleText(v:Name().." ("..a..")", "ESP_Font_Main", 2, 0 + (15 * ( k - 1 ) ), Color(255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) end end end end end function SwapRender(init) init = init or false if !init then config["esp_render_mode"] = !config["esp_render_mode"] end if !config["esp_render_mode"] then if table.HasValue(hooks, "HUDPaint") then hook.Remove("HUDPaint", table.KeyFromValue(hooks, "HUDPaint")) table.RemoveByValue(hooks, "HUDPaint") end AddHook("CheatHUDPaint", RandomString(), DoESP) else if table.HasValue(hooks, "CheatHUDPaint") then hook.Remove("CheatHUDPaint", table.KeyFromValue(hooks, "CheatHUDPaint")) table.RemoveByValue(hooks, "CheatHUDPaint") end AddHook("HUDPaint", RandomString(), DoESP) end if !init then if frame then CloseFrame() CreateTimeGUI() end end end SwapRender(true) -- ======================= Glow AddHook("PreDrawHalos", RandomString(), function() if !ss then if config["esp_player_glow"] then halo.Add(playerTable, string.ToColor(config.colors["esp_player_glow"]), 1, 1, 2, true, true) end end end) -- ======================= Chams AddHook("RenderScreenspaceEffects", RandomString(), function() local colorFix = (1 / 255) local chamColVis = string.ToColor(config.colors["esp_player_chams"]) local chamColOver = string.ToColor(config.colors["esp_player_chams_overlay"]) local chamColInvis = string.ToColor(config.colors["esp_player_chams_xyz"]) chamColInvis.a = math.Clamp(chamColInvis.a, 0, 254) local chamMatVis = config["esp_player_chams_material"] local chamMatOver = config["esp_player_overlay_chams_material"] local chamsMatInvis = config["esp_player_xyz_chams_material"] if ss then cam.Start3D( EyePos(), EyeAngles() ) for k, v in ipairs(ents.GetAll()) do if IsValid(v) then render.MaterialOverride() cam.IgnoreZ(false) v:SetRenderMode(0) v:SetColor(color_white) v:DrawModel() end end cam.End3D() return end if config["esp_player_chams_xyz"] then cam.Start3D( EyePos(), EyeAngles() ) for k, v in ipairs(player.GetAll()) do if ValidateESP(v) then cam.IgnoreZ(true) render.SetColorModulation( chamColInvis.r * colorFix, chamColInvis.g * colorFix, chamColInvis.b * colorFix ) render.SetBlend( chamColInvis.a * colorFix) render.MaterialOverride(Material(chamsMatInvis)) v:SetRenderMode(1) v:DrawModel() cam.IgnoreZ(false) render.SetColorModulation(1, 1, 1) render.SetBlend(1) render.MaterialOverride() v:DrawModel() end end cam.End3D() end if config["esp_player_chams"] then cam.Start3D( EyePos(), EyeAngles() ) for k, v in ipairs(player.GetAll()) do if ValidateESP(v) then render.SetColorModulation( chamColVis.r * colorFix, chamColVis.g * colorFix, chamColVis.b * colorFix ) render.SetBlend( chamColVis.a * colorFix) render.MaterialOverride(Material(chamMatVis)) v:SetRenderMode(1) v:SetColor(Color(255, 255, 255, 0)) v:DrawModel() end end cam.End3D() end if config["esp_player_chams_overlay"] then cam.Start3D( EyePos(), EyeAngles() ) for k, v in ipairs(player.GetAll()) do if ValidateESP(v) then render.SetColorModulation( chamColOver.r * colorFix, chamColOver.g * colorFix, chamColOver.b * colorFix ) render.SetBlend( chamColOver.a * colorFix) render.MaterialOverride(Material(chamMatOver)) v:SetRenderMode(1) v:DrawModel() end end cam.End3D() end if !config["esp_player_chams"] && !config["esp_player_chams_xyz"] then for k, v in pairs(player.GetAll()) do v:SetRenderMode(0) end end end) -- ======================= Fog AddHook("SetupWorldFog", RandomString(), function() if !ss then if config["esp_other_fog"] then local col = string.ToColor(config.colors["esp_other_fog"]) render.FogMode( MATERIAL_FOG_LINEAR ) render.FogStart(config["esp_other_fog_start"]) render.FogEnd(config["esp_other_fog_end"]) render.FogMaxDensity(config["esp_other_fog_density"]) render.FogColor(col.r, col.g, col.b) return true end end end) AddHook("SetupSkyboxFog", RandomString(), function( skyboxscale ) if !ss then if config["esp_other_fog"] then local col = string.ToColor(config.colors["esp_other_fog"]) render.FogMode( MATERIAL_FOG_LINEAR ) render.FogStart(config["esp_other_fog_start"] * skyboxscale) render.FogEnd(config["esp_other_fog_end"] * skyboxscale) render.FogMaxDensity(config["esp_other_fog_density"]) render.FogColor(col.r, col.g, col.b) return true end end end) -- ======================= Modulation local OldWorldModState, OldWorldModColor, OldPropModState, OldPropModColor, LastFrameSS = config["esp_other_worldmod"], config.colors["esp_other_worldmod"], config["esp_other_propmod"], config.colors["esp_other_propmod"], false local OldFontSize1, OldFontSize2, OldFont, OldFont2 = config["name_font_size"], config["flags_font_size"], config["name_font"], config["flag_font"] local function UpdateWorldModulation() local col = GetCachedColor(config.colors["esp_other_worldmod"]) local colorVector = Vector(col.r * (1 / 255), col.g * (1 / 255), col.b * (1 / 255)) local alpha = col.a * (1 / 255) -- Cache materials to avoid repeated lookups if not worldMaterials then worldMaterials = {} local mats = Entity(0):GetMaterials() for k, v in pairs(mats) do worldMaterials[k] = Material(v) end end for k, material in pairs(worldMaterials) do material:SetVector("$color", colorVector) material:SetFloat("$alpha", alpha) end end local function UpdatePropModulation() local col = GetCachedColor(config.colors["esp_other_propmod"]) -- Only find props when needed instead of every time if not cachedProps or CurTime() > (lastPropRefresh or 0) + 5 then cachedProps = ents.FindByClass("prop_physics") lastPropRefresh = CurTime() end for _, v in ipairs(cachedProps) do if IsValid(v) then v:SetRenderMode(RENDERMODE_TRANSCOLOR) v:SetColor(col) end end end AddHook("Think", RandomString(), function() if ss then if config["esp_other_worldmod"] then DisableWorldModulation() end if config["esp_other_propmod"] then DisablePropModulation() end LastFrameSS = true end if LastFrameSS then if config["esp_other_worldmod"] then UpdateWorldModulation() end if config["esp_other_propmod"] then UpdatePropModulation() end LastFrameSS = false end if OldWorldModState != config["esp_other_worldmod"] && config["esp_other_worldmod"] then UpdateWorldModulation() OldWorldModState, OldWorldModColor = config["esp_other_worldmod"], config.colors["esp_other_worldmod"] elseif OldWorldModState != config["esp_other_worldmod"] && !config["esp_other_worldmod"] then DisableWorldModulation() OldWorldModState, OldWorldModColor = config["esp_other_worldmod"], config.colors["esp_other_worldmod"] end if OldWorldModColor != config.colors["esp_other_worldmod"] && config["esp_other_worldmod"] then UpdateWorldModulation() OldWorldModState, OldWorldModColor = config["esp_other_worldmod"], config.colors["esp_other_worldmod"] end if OldPropModState != config["esp_other_propmod"] && config["esp_other_propmod"] then UpdatePropModulation() OldPropModState, OldPropModColor = config["esp_other_propmod"], config.colors["esp_other_propmod"] elseif OldPropModState != config["esp_other_propmod"] && !config["esp_other_propmod"] then DisablePropModulation() OldPropModState, OldPropModColor = config["esp_other_propmod"], config.colors["esp_other_propmod"] end if OldPropModColor != config.colors["esp_other_propmod"] && config["esp_other_propmod"] then UpdatePropModulation() OldPropModState, OldPropModColor = config["esp_other_propmod"], config.colors["esp_other_propmod"] end if ( OldFontSize1 != config["name_font_size"] ) or ( OldFont != config["name_font"] ) then UpdateNameFont() OldFontSize1, OldFont = config["name_font_size"], config["name_font"] end if ( OldFontSize2 != config["flags_font_size"] ) or ( OldFont2 != config["flag_font"] ) then UpdateFlagFont() OldFontSize2, OldFont2 = config["flags_font_size"], config["flag_font"] end end) if config["esp_other_worldmod"] then UpdateWorldModulation() end if config["esp_other_propmod"] then UpdatePropModulation() end --=================================== No Sky AddHook("PreDrawSkyBox", RandomString(), function() if config["esp_other_nosky"] then return true else return false end end) --=================================== Nightmode AddHook("RenderScreenspaceEffects", RandomString(), function() if !ss then if config["esp_other_nightmode"] then local nightmode = { [ "$pp_colour_addr" ] = 55 * (1 / 255), [ "$pp_colour_addg" ] = 45 * (1 / 255), [ "$pp_colour_addb" ] = 66 * (1 / 255), [ "$pp_colour_brightness" ] = -0.2, [ "$pp_colour_contrast" ] = config["esp_other_nightmode_scale"], [ "$pp_colour_colour" ] = 1, [ "$pp_colour_mulr" ] = 0, [ "$pp_colour_mulg" ] = 0, [ "$pp_colour_mulb" ] = 0 } DrawColorModify( nightmode ) end end end) --=================================== Bloom AddHook("RenderScreenspaceEffects", RandomString(), function() DrawBloom(0.45, config["esp_other_bloom"] * 4, 9, 9, 1, 1, 1, 1, 1 ) end) --=================================== Hitsound AddHook("ScalePlayerDamage", RandomString(), function(ply, group, dmginfo) if config["esp_other_hitsound"] then if dmginfo:GetAttacker() == LocalPlayer() then surface.PlaySound("garrysmod/balloon_pop_cute.wav") end end end) --=================================== Fullbright local LightingModeChanged = false AddHook("PreRender", RandomString(), function() if !ss then if config["esp_other_fullbright"] then render.SetLightingMode( 1 ) LightingModeChanged = true end end end ) local function EndOfLightingMod() if LightingModeChanged then render.SetLightingMode( 0 ) LightingModeChanged = false end end AddHook("PostRender", RandomString(), EndOfLightingMod) AddHook("PreDrawHUD", RandomString(), EndOfLightingMod) --=================================== Camera Modifications AddHook("CalcView", RandomString(), function(ply, pos, ang, fov) if ss then return end if config["esp_other_freecam"] && NoclipOn then local inspeed, infw, inback, inleft, inright = input.GetKeyCode(input.LookupBinding("+speed")), input.GetKeyCode(input.LookupBinding("+forward")), input.GetKeyCode(input.LookupBinding("+back")), input.GetKeyCode(input.LookupBinding("+moveleft")), input.GetKeyCode(input.LookupBinding("+moveright")) -- Had to do it like this instead of LocalPlayer():KeyDown(IN_FORWARD) etc because for some reason that would get stuck on true sometimes after moving and then toggeling, cba to figure it out so this works as a fix. local Camera = {} local Speed = config["esp_other_freecam_speed"] local MouseAngs = Angle( NoclipY, NoclipX, 0 ) if input.IsKeyDown(inspeed) then Speed = Speed * 5 end if input.IsKeyDown(infw) then NoclipPos = NoclipPos+(MouseAngs:Forward()*Speed) end if input.IsKeyDown(inback) then NoclipPos = NoclipPos-(MouseAngs:Forward()*Speed) end if input.IsKeyDown(inleft) then NoclipPos = NoclipPos-(MouseAngs:Right()*Speed) end if input.IsKeyDown(inright) then NoclipPos = NoclipPos+(MouseAngs:Right()*Speed) end if NoclipJump then NoclipPos = NoclipPos+Vector(0,0,Speed) end if NoclipDuck then NoclipPos = NoclipPos-Vector(0,0,Speed) end Camera.origin = NoclipPos Camera.angles = MouseAngs Camera.fov = FOV Camera.drawviewer = true return Camera end if config["esp_other_thirdperson"] && intp then local Camera = {} Camera.origin = pos - ( ang:Forward() * (config["esp_other_thirdperson_distance"] * 10) ) Camera.angles = ang Camera.fov = fov Camera.drawviewer = true return Camera end if !intp && !NoclipOn then local Camera = {} if config["misc_fov"] then Camera.fov = config["misc_fov_value"] end if config["aim_norecoil"] then Camera.angles = LocalPlayer():EyeAngles() end return Camera end end) --=================================== --=================================== Aimbot --=================================== --=================================== No Recoil local OEyeAngles = OEyeAngles or FindMetaTable( "Player" ).SetEyeAngles FindMetaTable( "Player" ).SetEyeAngles = function( self, angle ) if ( string.find( string.lower( debug.getinfo( 2 ).short_src ), "/weapons/" ) ) and config["aim_norecoil"] then return end OEyeAngles( self, angle ) end --=================================== CreateMove (Aimbot, Triggerbot, BHop, AutoStrafe, Autofire, Misc Calcs) local predictedWeapons = { ["weapon_crossbow"] = 3110 } local pred, realAng local function FixMovement(cmd, fa) local vec = Vector(cmd:GetForwardMove(), cmd:GetSideMove(), 0) local vel = math.sqrt(vec.x * vec.x + vec.y * vec.y) local mang = vec:Angle() local yaw = cmd:GetViewAngles().y - fa.y + mang.y if ( ( cmd:GetViewAngles().p + 90 ) % 360 ) > 180 then yaw = 180 - yaw end yaw = ( ( yaw + 180 ) % 360 ) - 180 cmd:SetForwardMove( math.cos( math.rad( yaw ) ) * vel ) cmd:SetSideMove( math.sin( math.rad( yaw ) ) * vel ) end local function GetAngleDiffrence(from, to) local ang, aim ang = from:Forward() aim = to:Forward() return math.deg( math.acos( aim:Dot(ang) / aim:LengthSqr() ) ) end local function HitScan(v) local bones = {} local centerx, centery = ScrW() / 2, ScrH() / 2 local BPHead, BPUpperChest, BPChest, BPLowerChest, BPPelvis, HeadDis, UpperChestDis, ChestDis, LowerChestDis, PelvisDis if v:LookupBone("ValveBiped.Bip01_Head1") != nil then BPHead = v:GetBonePosition(v:LookupBone("ValveBiped.Bip01_Head1")) HeadDis = math.sqrt((centerx - BPHead:ToScreen().x) * (centerx - BPHead:ToScreen().x) + (centery - BPHead:ToScreen().y) * (centery - BPHead:ToScreen().y)) table.insert(bones, HeadDis) end if v:LookupBone("ValveBiped.Bip01_Spine4") != nil then BPUpperChest = v:GetBonePosition(v:LookupBone("ValveBiped.Bip01_Spine4")) UpperChestDis = math.sqrt((centerx - BPUpperChest:ToScreen().x) * (centerx - BPUpperChest:ToScreen().x) + (centery - BPUpperChest:ToScreen().y) * (centery - BPUpperChest:ToScreen().y)) table.insert(bones, UpperChestDis) end if v:LookupBone("ValveBiped.Bip01_Spine2") != nil then BPChest = v:GetBonePosition(v:LookupBone("ValveBiped.Bip01_Spine2")) ChestDis = math.sqrt((centerx - BPChest:ToScreen().x) * (centerx - BPChest:ToScreen().x) + (centery - BPChest:ToScreen().y) * (centery - BPChest:ToScreen().y)) table.insert(bones, ChestDis) end if v:LookupBone("ValveBiped.Bip01_Spine1") != nil then BPLowerChest = v:GetBonePosition(v:LookupBone("ValveBiped.Bip01_Spine1")) LowerChestDis = math.sqrt((centerx - BPLowerChest:ToScreen().x) * (centerx - BPLowerChest:ToScreen().x) + (centery - BPLowerChest:ToScreen().y) * (centery - BPLowerChest:ToScreen().y)) table.insert(bones, LowerChestDis) end if v:LookupBone("ValveBiped.Bip01_Pelvis") != nil then BPPelvis = v:GetBonePosition(v:LookupBone("ValveBiped.Bip01_Pelvis")) PelvisDis = math.sqrt((centerx - BPPelvis:ToScreen().x) * (centerx - BPPelvis:ToScreen().x) + (centery - BPPelvis:ToScreen().y) * (centery - BPPelvis:ToScreen().y)) table.insert(bones, PelvisDis) end if table.IsEmpty(bones) then return v:LocalToWorld(v:OBBCenter()) + pred end local ClosestBone = math.min(unpack(bones)) if ClosestBone == HeadDis then AimSpot = BPHead + Vector(0, 0, 1) + pred AimBone = "Head" elseif ClosestBone == UpperChestDis then AimSpot = BPUpperChest + pred AimBone = "Upper Chest" elseif ClosestBone == ChestDis then AimSpot = BPChest + pred AimBone = "Chest" elseif ClosestBone == LowerChestDis then AimSpot = BPLowerChest + pred AimBone = "Lower Chest" elseif ClosestBone == PelvisDis then AimSpot = BPPelvis + pred AimBone = "Pelvis" else AimSpot = v:LocalToWorld(v:OBBCenter()) + pred end return AimSpot end local function Prediction(v, pos) local ply = LocalPlayer() if ( type( v:GetVelocity() ) == "Vector" ) then local dis, wep = v:GetPos():Distance( ply:GetPos() ), ( ply.GetActiveWeapon && IsValid( ply:GetActiveWeapon() ) && ply:GetActiveWeapon():GetClass() ) if ( wep && predictedWeapons[ wep ] ) then local t = dis / predictedWeapons[ wep ] return ( pos + v:GetVelocity() * t ) end return pos end return pos end local function isVisible( v ) if !config["aim_ignoreinvis"] then return true end local ply = LocalPlayer() local pos = v:LocalToWorld(v:OBBCenter()) local trace = { start = ply:GetShootPos(), endpos = pos, filter = { ply, v }, mask = MASK_SHOT } local tr = util.TraceLine( trace ) if( !tr.Hit ) then return true end return false end local function Smoothing( ang ) if ( config["aim_smoothing_value"] == 0 ) then return ang end local speed, ply = RealFrameTime() / ( config["aim_smoothing_value"] / 10 ), LocalPlayer() local angl = LerpAngle( speed, ply:EyeAngles(), ang ) return Angle( angl.p, angl.y, 0 ) end AddHook("CreateMove", RandomString(), function(ucmd) if config["aim_silent"] then if(!realAng) then realAng = ucmd:GetViewAngles() end realAng = realAng + Angle(ucmd:GetMouseY() * .023, ucmd:GetMouseX() * -.023, 0) realAng.x = math.NormalizeAngle(realAng.x) realAng.p = math.Clamp(realAng.p, -89, 89) if ucmd:CommandNumber() == 0 then ucmd:SetViewAngles(realAng) return end else if ucmd:CommandNumber() == 0 then return end end if config["esp_other_freecam"] then if config.keybinds["freecam_key"] == 0 then NoclipOn = true elseif ( ( ( config.keybinds["freecam_key"] >= 107 && config.keybinds["freecam_key"] <= 113 ) && input.IsMouseDown(config.keybinds["freecam_key"] ) && !toggledelayN ) || input.IsKeyDown(config.keybinds["freecam_key"]) && !toggledelayN ) then if NoclipOn then NoclipOn = false toggledelayN = true timer.Simple(0.5, function() toggledelayN = false end) else NoclipOn = true NoclipPos, NoclipAngles = LocalPlayer():EyePos(), ucmd:GetViewAngles() NoclipY, NoclipX = ucmd:GetViewAngles().x, ucmd:GetViewAngles().y toggledelayN = true timer.Simple(0.5, function() toggledelayN = false end) end end if NoclipOn then ucmd:ClearMovement() if ucmd:KeyDown(IN_JUMP) then ucmd:RemoveKey(IN_JUMP) NoclipJump = true elseif NoclipJump then NoclipJump = false end if ucmd:KeyDown(IN_DUCK) then ucmd:RemoveKey(IN_DUCK) NoclipDuck = true elseif NoclipDuck then NoclipDuck = false end NoclipX = NoclipX-(ucmd:GetMouseX()/10) if NoclipY+(ucmd:GetMouseY()/10) > 89 then NoclipY = 89 elseif NoclipY+(ucmd:GetMouseY()/10) < -89 then NoclipY = -89 else NoclipY = NoclipY+(ucmd:GetMouseY()/10) end ucmd:SetViewAngles(NoclipAngles) end elseif NoclipOn == true then NoclipOn = false end if config["esp_other_thirdperson"] then if config.keybinds["thirdperson_key"] == 0 then intp = true elseif ( ( ( config.keybinds["thirdperson_key"] >= 107 && config.keybinds["thirdperson_key"] <= 113 ) && input.IsMouseDown(config.keybinds["thirdperson_key"] ) && !toggledelay3 || input.IsKeyDown(config.keybinds["thirdperson_key"]) && !toggledelay3 ) ) then intp = !intp toggledelay3 = true timer.Simple(0.5, function() toggledelay3 = false end) end end if ( frame ) && not gui.IsConsoleVisible() && not gui.IsGameUIVisible() && not editingText && not NoclipOn then local ply = LocalPlayer() local f, b, l, r, j, d = input.GetKeyCode(input.LookupBinding("+forward")), input.GetKeyCode(input.LookupBinding("+back")), input.GetKeyCode(input.LookupBinding("+moveleft")), input.GetKeyCode(input.LookupBinding("+moveright")), input.GetKeyCode(input.LookupBinding("+jump")), input.GetKeyCode(input.LookupBinding("+duck")) if input.IsKeyDown( f ) then ucmd:SetForwardMove( ply:GetMaxSpeed() ) end if input.IsKeyDown( b ) then ucmd:SetForwardMove( -ply:GetMaxSpeed() ) end if input.IsKeyDown( r ) then ucmd:SetSideMove( ply:GetMaxSpeed() ) end if input.IsKeyDown( l ) then ucmd:SetSideMove( -ply:GetMaxSpeed() ) end if input.IsKeyDown( d ) then ucmd:SetButtons( IN_DUCK ) end if input.IsKeyDown( j ) then ucmd:SetButtons( IN_JUMP ) end end if config["misc_autostrafe"] then local ply = LocalPlayer() if ply:GetMoveType() == MOVETYPE_LADDER || ply:GetMoveType() == MOVETYPE_NOCLIP then return end if ucmd:KeyDown( IN_JUMP ) then if ucmd:GetMouseX() < 0 then ucmd:SetSideMove(-450) elseif ucmd:GetMouseX() > 0 then ucmd:SetSideMove(450) end end end if config["misc_autobunnyhop"] then local ply = LocalPlayer() if ply:GetMoveType() == MOVETYPE_LADDER || ply:GetMoveType() == MOVETYPE_NOCLIP then return end if ucmd:KeyDown( IN_JUMP ) then if !ply:OnGround() then ucmd:SetButtons( ucmd:GetButtons() - IN_JUMP ) end end end if config["misc_autoclick"] then if LocalPlayer():Alive() && IsValid(LocalPlayer():GetActiveWeapon()) && LocalPlayer():GetActiveWeapon():GetClass() != "weapon_physgun" then if LocalPlayer():KeyDown( IN_ATTACK ) then ucmd:RemoveKey(IN_ATTACK) end end end if config["aim_master_toggle"] then if !config["aim_onkey"] || ( config.keybinds["aim_onkey_key"] != 0 && ( ( config.keybinds["aim_onkey_key"] >= 107 && config.keybinds["aim_onkey_key"] <= 113 ) && input.IsMouseDown(config.keybinds["aim_onkey_key"]) ) || input.IsKeyDown(config.keybinds["aim_onkey_key"]) ) && !frame then if !LocalPlayer():Alive() then return end if IsValid(LocalPlayer():GetActiveWeapon()) && LocalPlayer():GetActiveWeapon():Clip1() != 0 then local centerx, centery = ScrW() / 2, ScrH() / 2 local PlayerDistance, NewPlayerDistance, PlayerHealth, NewPlayerHealth, playerCenter, newPlayerCenter = math.huge, math.huge, math.huge, math.huge, math.huge, math.huge for k, v in pairs(player.GetAll()) do if ValidateAimbot(v) and GetIgnorePlayers(v) then if isVisible(v) then local tarFrames, plyFrames = RealFrameTime() / ( 1 / frametime ), RealFrameTime() / ( 1 / frametime ) pred = v:GetVelocity() * tarFrames - LocalPlayer():GetVelocity() * plyFrames local LOS, AimP, InFOV = false, false, false local CurAngle = ucmd:GetViewAngles() local CurPos = LocalPlayer():GetShootPos() local AimSpot if config["aim_hitbox"] == 1 then AimSpot = HitScan(v) elseif config["aim_hitbox"] == 2 && v:LookupBone("ValveBiped.Bip01_Head1") != nil then AimSpot = v:GetBonePosition(v:LookupBone("ValveBiped.Bip01_Head1")) + Vector(0, 0, 1) + pred elseif config["aim_hitbox"] == 3 && v:LookupBone("ValveBiped.Bip01_Pelvis") != nil then AimSpot = v:GetBonePosition(v:LookupBone("ValveBiped.Bip01_Pelvis")) + pred else AimSpot = v:LocalToWorld(v:OBBCenter()) + pred end if IsValid(LocalPlayer():GetActiveWeapon()) && LocalPlayer():GetActiveWeapon():GetClass() == "weapon_crossbow" then AimSpot = Prediction(v, AimSpot) end local FinAngle = ( AimSpot - CurPos ):Angle() FinAngle:Normalize() if config["aim_target"] == 1 then if math.sqrt((AimSpot:ToScreen().x - centerx) * (AimSpot:ToScreen().x - centerx) + (AimSpot:ToScreen().y - centery) * (AimSpot:ToScreen().y - centery)) < playerCenter then newPlayerCenter = math.sqrt((AimSpot:ToScreen().x - centerx) * (AimSpot:ToScreen().x - centerx) + (AimSpot:ToScreen().y - centery) * (AimSpot:ToScreen().y - centery)) AimP = true end elseif config["aim_target"] == 2 then if v:Health() < PlayerHealth then NewPlayerHealth = v:Health() AimP = true end elseif config["aim_target"] == 3 then if LocalPlayer():GetPos():Distance(v:GetPos()) < PlayerDistance then NewPlayerDistance = LocalPlayer():GetPos():Distance(v:GetPos()) AimP = true end end local angDiff = GetAngleDiffrence(CurAngle, FinAngle) angDiff = math.abs(math.NormalizeAngle(angDiff)) if angDiff < config["aim_fov"] then InFOV = true end if AimP && InFOV then if config["aim_smoothing"] && (IsValid(LocalPlayer():GetActiveWeapon()) && LocalPlayer():GetActiveWeapon():GetClass() != "weapon_crossbow" ) then playerCenter = newPlayerCenter PlayerHealth = NewPlayerHealth PlayerDistance = NewPlayerDistance ucmd:SetViewAngles(Smoothing(FinAngle)) if config["aim_silent"] then FixMovement(ucmd, realAng) end else playerCenter = newPlayerCenter PlayerHealth = NewPlayerHealth PlayerDistance = NewPlayerDistance ucmd:SetViewAngles(FinAngle) if config["aim_silent"] then FixMovement(ucmd, realAng) end end end end end end end end end if config["trigger_master_toggle"] then if !config["trigger_onkey"] || ( config.keybinds["trigger_onkey_key"] && ( ( config.keybinds["trigger_onkey_key"] >= 107 && config.keybinds["trigger_onkey_key"] <= 113 ) && input.IsMouseDown(config.keybinds["trigger_onkey_key"]) ) || input.IsKeyDown(config.keybinds["trigger_onkey_key"]) ) && !frame then if IsValid(LocalPlayer()) && LocalPlayer():Alive() then if IsValid(LocalPlayer():GetActiveWeapon()) && LocalPlayer():GetActiveWeapon():GetClass() != "weapon_physgun" then local tr = LocalPlayer():GetEyeTraceNoCursor() if tr.Entity:IsPlayer() then ply = tr.Entity if ValidateAimbot(ply) then if ucmd:KeyDown( IN_ATTACK2 ) && ucmd:KeyDown( IN_DUCK ) then ucmd:SetButtons( IN_DUCK + IN_ATTACK2 + IN_ATTACK ) timer.Simple( 0.05, function() RunConsoleCommand( "-attack" ) end ) elseif ucmd:KeyDown( IN_DUCK ) then ucmd:SetButtons( IN_DUCK + IN_ATTACK ) timer.Simple( 0.05, function() RunConsoleCommand( "-attack" ) end ) elseif ucmd:KeyDown( IN_ATTACK2 ) then ucmd:SetButtons( IN_ATTACK2 + IN_ATTACK ) timer.Simple( 0.05, function() RunConsoleCommand( "-attack" ) end ) else ucmd:SetButtons( IN_ATTACK ) timer.Simple( 0.05, function() RunConsoleCommand( "-attack" ) end ) end end end end end end end end) --=================================== --=================================== Misc --=================================== --=================================== TTT for _,v in ipairs(player.GetAll()) do v.Traitor = nil end AddHook("Think", RandomString(), function() if config["misc_ttt"] && engine.ActiveGamemode() == "terrortown" then if GAMEMODE.round_state != ROUND_ACTIVE then for _,v in ipairs(player.GetAll()) do v.Traitor = nil end return end for _, v in ipairs( player.GetAll() ) do if IsValid(v) && v:IsTerror() && !v:IsDetective() && !v.Traitor && v != LocalPlayer() then for _, w in ipairs(v:GetWeapons()) do if w and w.CanBuy and table.HasValue(w.CanBuy, ROLE_TRAITOR) && w.AutoSpawnable == false then v.Traitor = true chat.AddText(Color(61, 149, 217), "[Time's Hack] ", Color(222, 222, 222), v:Nick(), " is a ", Color(255,0,0), "TRAITOR", Color(222, 222, 222), " with a ", Color(0, 255, 0), w:GetClass() .. "!") end end end end end end) --=================================== Rainbow Physgun AddHook("Think", RandomString(), function() if !ss then if config["misc_rainbow"] then local col = HSVToColor( ( CurTime() * config["misc_rainbow_speed"] ) % 360, 1, 1 ) if LocalPlayer():Alive() && IsValid(LocalPlayer():GetActiveWeapon()) && LocalPlayer():GetActiveWeapon():GetClass() == "weapon_physgun" then LocalPlayer():SetWeaponColor( Color(col.r, col.g, col.b):ToVector() ) end end end end) --=================================== Viewmodel Changer AddHook("CalcViewModelView", RandomString(), function(Weapon, ViewModel, OldPos, OldAngle, EyePos, EyeAngle) if ss then return end if !config["misc_viewmodel"] then return end if config["misc_bob"] then EyeAngle = OldAngle end if config["misc_sway"] then EyePos = OldPos end local OverridePos = Vector(config["misc_vm_x"], config["misc_vm_y"], config["misc_vm_z"]) local OverrideAngle = Angle(config["misc_vm_p"], config["misc_vm_ya"], config["misc_vm_r"]) EyeAngle = EyeAngle * 1 EyeAngle:RotateAroundAxis(EyeAngle:Right(), OverrideAngle.x * 1.0) EyeAngle:RotateAroundAxis(EyeAngle:Up(), OverrideAngle.y * 1.0) EyeAngle:RotateAroundAxis(EyeAngle:Forward(), OverrideAngle.z* 1.0) EyePos = EyePos + OverridePos.x * EyeAngle:Right() * 1.0 EyePos = EyePos + OverridePos.y * EyeAngle:Forward() * 1.0 EyePos = EyePos + OverridePos.z * EyeAngle:Up() * 1.0 return EyePos, EyeAngle end) --==================== Injection Welcome Message Thing print("\n") MsgC(Color(61, 149, 217), "████████╗██╗███╗░░░███╗███████╗██╗░██████╗  ██╗░░██╗░█████╗░░█████╗░██╗░░██╗\n╚══██╔══╝██║████╗░████║██╔════╝╚█║██╔════╝  ██║░░██║██╔══██╗██╔══██╗██║░██╔╝\n░░░██║░░░██║██╔████╔██║█████╗░░░╚╝╚█████╗░  ███████║███████║██║░░╚═╝█████═╝░\n░░░██║░░░██║██║╚██╔╝██║██╔══╝░░░░░░╚═══██╗  ██╔══██║██╔══██║██║░░██╗██╔═██╗░\n░░░██║░░░██║██║░╚═╝░██║███████╗░░░██████╔╝  ██║░░██║██║░░██║╚█████╔╝██║░╚██╗\n░░░╚═╝░░░╚═╝╚═╝░░░░░╚═╝╚══════╝░░░╚═════╝░  ╚═╝░░╚═╝╚═╝░░╚═╝░╚════╝░╚═╝░░╚═╝\n") notification.AddLegacy("Successfully Loaded Time's Hack - Welcome " .. LocalPlayer():Nick() .. " | " .. os.date("%I:%M %p"), NOTIFY_HINT, 5) surface.PlaySound( "buttons/button15.wav" ) for k, v in ipairs(files) do if string.lower(v) == "default.json" then LoadDefault() end end