--by pavetr.top/ds -- Mensagem ao carregar o script LocalPlayer():ChatPrint("Party Traitor Finder Loaded") -- Criar uma fonte personalizada para o ESP surface.CreateFont("TraitorESPFont", { font = "Arial", size = 14, -- Tamanho base do texto weight = 800 }) -- Lista de armas de traidor local twep = { "weapon_ttt_c4", "weapon_ttt_knife", "weapon_ttt_phammer", "weapon_ttt_sipistol", "weapon_ttt_flaregun", "weapon_ttt_push", "weapon_ttt_radio", "weapon_ttt_teleport", "(Disguise)", "spiderman's_swep", "weapon_ttt_trait_defilibrator", "weapon_ttt_xbow", "weapon_ttt_dhook", "weapon_awp", "weapon_jihadbomb", "weapon_ttt_decoy", "weapon_ttt_silencedsniper", "weapon_ttt_turtlenade", "weapon_ttt_death_station", "weapon_ttt_tripmine" } -- Resetar rastreamento de jogadores e entidades for _, v in pairs(player.GetAll()) do v.HatTraitor = nil end for _, v in pairs(ents.GetAll()) do v.HatESPTracked = nil end -- Detectar compra de arma na loja de Traidor hook.Add("TTTOrderedEquipment", "DetectTraitorShopPurchase", function(ply, equip, is_item) if not IsValid(ply) or not ply:IsTerror() or not ply:IsTraitor() then return end -- Verifica se o equipamento comprado está na lista de armas de traidor if not is_item and table.HasValue(twep, equip) then chat.AddText(ply, Color(255, 125, 0), " bought a traitor's gun: ", Color(255, 0, 0), equip) end end) -- Detectar quando um jogador pega uma arma do chão hook.Add("WeaponEquip", "DetectTraitorWeaponPickup", function(wep, ply) if not IsValid(ply) or not ply:IsTerror() then return end local class = wep:GetClass() if table.HasValue(twep, class) then chat.AddText(ply, Color(255, 125, 0), " picked up a traitor's gun from the floor: ", Color(255, 0, 0), class) end end) -- Atualizar rastreamento de jogadores e armas hook.Add("PostDrawOpaqueRenderables", "wire_animations_idle", function() if GAMEMODE.round_state ~= ROUND_ACTIVE then for _, v in pairs(player.GetAll()) do v.HatTraitor = nil end for _, v in pairs(ents.GetAll()) do v.HatESPTracked = nil end return end for _, v in pairs(ents.GetAll()) do if v and IsValid(v) and table.HasValue(twep, v:GetClass()) and not v.HatESPTracked then local pl = v.Owner if pl and IsValid(pl) and pl:IsTerror() then if not pl:IsDetective() then v.HatESPTracked = true pl.HatTraitor = true chat.AddText(pl, Color(255, 125, 0), " is a ", Color(255, 0, 0), "Traitor", Color(255, 125, 0), " with a ", Color(255, 0, 0), v:GetClass().."!") end end end end end) -- 🔹 ESP para mostrar "TRAIDOR" através das paredes com tamanho ajustável e limite hook.Add("HUDPaint", "TraitorESPThroughWalls", function() local lp = LocalPlayer() -- Pegamos o jogador local para calcular distância for _, ply in ipairs(player.GetAll()) do if ply.HatTraitor and IsValid(ply) and ply:Alive() then local pos = ply:GetPos() + Vector(0, 0, -10) -- Posição acima da cabeça local screenPos = pos:ToScreen() -- Converte para coordenadas da tela -- Calcular a distância entre o jogador local e o traidor local dist = lp:GetPos():Distance(ply:GetPos()) -- Ajuste de tamanho baseado na distância, mas com um limite local minSize = 20 -- Tamanho mínimo do texto (quando está bem longe) local maxSize = 50 -- Tamanho máximo do texto (quando está bem perto) local scale = math.Clamp(1000 / dist, minSize, maxSize) -- Se estiver visível na tela, desenha o texto com tamanho ajustável if screenPos.visible then draw.SimpleTextOutlined( "Traitor", "TraitorESPFont", screenPos.x, screenPos.y, Color(255, 0, 0, 255), -- Cor vermelha forte TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, 255) -- Borda preta para contraste ) end end end end)