Run it
Copy the script and paste it into your executor.
H = :()
P = :()
R = :()
T = :()
UIS = :()
p = P.LocalPlayer
pg = p:()
pg:() pg.ECHO_HAX:()
chatHistory = {}
MyLang, TargetLang, TargetLangName, UILang = , , ,
currentOverlayMode =
isOpened =
dict = {
[] = {my=, tg=, lg=, sn=, ui=, bk=, se=, ph=},
[] = {my=, tg=, lg=, sn=, ui=, bk=, se=, ph=}
}
(dict, {__index = () dict[] })
langList = {{, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }, {, }}
(frame)
dragging, dragInput, dragStart, startPos
frame.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
dragging = ; dragStart = input.Position; startPos = frame.Position
input.Changed:(() input.UserInputState == .UserInputState.End dragging = )
)
frame.InputChanged:((input)
input.UserInputType == .UserInputType.MouseMovement input.UserInputType == .UserInputType.Touch dragInput = input
)
UIS.InputChanged:((input)
input == dragInput dragging
delta = input.Position - dragStart
frame.Position = .(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
)
(text, to)
url = ..to....H:(text)
success, res = (()
( .request )({Url = url, Method = }).Body
)
success res H:(res)[][][]
text
sg = .(, pg); sg.Name = ; sg.ResetOnSpawn =
main = .(, sg)
main.Size = .(, , , ); main.Position = .(, -, , -); main.BackgroundColor3 = .(, , ); main.Active =
.(, main).Color = .(, , )
.(, main)
(main)
title = .(, main)
title.Size = .(, , , ); title.Position = .(, , , ); title.BackgroundTransparency = ; title.Text = ; title.TextColor3 = .(, , ); title.Font = ; title.TextSize =
mini = .(, sg)
mini.Size = .(, , , ); mini.Position = main.Position; mini.BackgroundColor3 = .(, , )
mini.Text = ; mini.TextColor3 = .(, , ); mini.Font = ; mini.TextSize = ; mini.Visible = ; mini.Active =
.(, mini).CornerRadius = .(, )
glow = .(, mini); glow.Color = .(, , ); glow.Thickness = ; glow.Transparency =
(mini)
(t, p, s, c, par, zi)
b = .(, par)
b.Text = t; b.Position = p; b.Size = s; b.BackgroundColor3 = c; b.TextColor3 = .(,,); b.Font = ; b.TextSize = ; b.ZIndex = zi
.(, b); b
d = dict[UILang]
s1 = (d.my.., .(, , , ), .(, , , ), .(, , ), main)
s2 = (d.tg.., .(, , , ), .(, , , ), .(, , ), main)
box = .(, main); box.Size = .(, , , ); box.Position = .(, , , ); box.BackgroundColor3 = .(, , ); box.TextColor3 = .(, , ); box.TextWrapped = ; box.TextSize = ; box.PlaceholderText = d.ph; box.Text =
.(, box)
lBtn = (d.lg, .(, , , ), .(, , , ), .(, , ), main)
snd = (d.sn, .(, , , ), .(, , , ), .(, , ), main)
uiBtn = (d.ui....UILang:(), .(, , , ), .(, , , ), .(, , ), main)
overlay = .(, main); overlay.Size = .(, , , ); overlay.BackgroundColor3 = .(, , ); overlay.ZIndex = ; overlay.Visible = ; .(, overlay)
back = (d.bk, .(, , , ), .(, , , ), .(, , ), overlay, )
search = .(, overlay); search.Size = .(, , , ); search.Position = .(, , , ); search.BackgroundColor3 = .(,,); search.TextColor3 = .(,,); search.PlaceholderText = d.se; search.ZIndex = ; .(, search)
scroll = .(, overlay); scroll.Size = .(, , , ); scroll.Position = .(, , , ); scroll.BackgroundTransparency = ; scroll.ZIndex = ; scroll.ScrollBarThickness = ; scroll.CanvasSize = .(,,,)
.(, scroll).Padding = .(, )
()
cur = dict[UILang]
s1.Text = cur.my....MyLang:()
s2.Text = cur.tg....TargetLangName:()
lBtn.Text = cur.lg; snd.Text = cur.sn; uiBtn.Text = cur.ui....UILang:(); back.Text = cur.bk; search.PlaceholderText = cur.se; box.PlaceholderText = cur.ph
()
isOpened = isOpened
isOpened main.Position = mini.Position; main.Visible = ; mini.Visible =
mini.Position = main.Position; main.Visible = ; mini.Visible =
mini.MouseButton1Click:(toggleUI)
(mode, filter)
currentOverlayMode = mode
_, v (scroll:()) v:() v:()
mode ==
_, item (chatHistory)
filter item.msg:():(filter:()) item.sender:():(filter:())
b = (, .(,,,), .(,-,,), .(,,), scroll, )
l = .(, b); l.Size = .(,-,,); l.Position = .(,,,); l.BackgroundTransparency = ; l.TextColor3 = .(,,); l.Font = ; l.TextSize = ; l.TextWrapped = ; l.TextXAlignment = ; l.ZIndex = ; l.Text = item.sender....item.msg
b.Size = .(,-,, .(, l.TextBounds.Y + ))
b.MouseButton1Click:(()
box.Text =
.(() box.Text = (item.msg, TargetLang) )
overlay.Visible = ; currentOverlayMode =
)
_, item (langList)
filter item[]:():(filter:())
b = (item[], .(,,,), .(,-,,), .(,,), scroll, )
b.MouseButton1Click:(()
mode == MyLang = item[]
mode == TargetLang = item[] TargetLangName = item[]
mode == UILang = item[]
()
overlay.Visible = ; currentOverlayMode =
)
scroll.CanvasSize = .(,,, scroll.UIListLayout.AbsoluteContentSize.Y + )
overlay.Visible =
(sender, message)
message == sender message:()
.(chatHistory, , {sender = (sender), msg = (message)})
overlay.Visible currentOverlayMode == (, search.Text)
_, v (P:()) v.Chatted:((m) (v.DisplayName, m) )
P.PlayerAdded:((v) v.Chatted:((m) (v.DisplayName, m) ) )
T.MessageReceived:((m) m.TextSource (m.TextSource.DisplayName, m.Text) )
UIS.InputBegan:((input, processed) processed input.KeyCode == .KeyCode.Z () )
lBtn.MouseButton1Click:(() () )
s1.MouseButton1Click:(() () )
s2.MouseButton1Click:(() () )
uiBtn.MouseButton1Click:(() () )
back.MouseButton1Click:(() overlay.Visible = ; currentOverlayMode = )
search:():(() (currentOverlayMode, search.Text) )
snd.MouseButton1Click:(()
box.Text ~=
txt = box.Text
.(()
t = (txt, TargetLang)
ch = T.TextChannels:() T.TextChannels:()
ch ch:(t) R:(, ):(t, )
)
box.Text =
)
(, .(,-,,), .(,,,), .(,,), main, ).MouseButton1Click:(toggleUI)💎 ECHO HAX | Universal Real-Time Translator ECHO HAX is a powerful, high-performance universal chat translator designed for seamless communication in any Roblox game. Whether you're dealing with global players or keeping track of server history, Echo Hax provides a smooth and integrated experience. 🌟 Key Features Real-Time Translation: Automatically translates your messages into your target language before sending them to the chat. Universal Compatibility: Works with both Legacy Chat and the new TextChatService. Supported on all major executors (Solara, Wave, etc.). Unlimited Chat Logs: Captures every message in the server with a dedicated "Logs" section. Never miss a message again. Interactive Log Translation: Click on any message in the logs to instantly translate it into your own language. Smooth Dragging System: Features a custom, lag-free dragging algorithm for a buttery-smooth UI experience. Neon Toggle Interface: Minimize the menu into a sleek, neon-red "+" button that you can place anywhere on your screen. Multi-Language UI: Fully supports both English and Turkish UI modes with a dynamic dictionary system. Quick Search: Easily filter through hundreds of chat logs