1- local plugin = {
2- ["PluginName"] = "VoiceChat Bypass",
3- ["PluginDescription"] = "Bypasses VoiceChat, please unmute for the script to work",
4- ["Commands"] = {
5- ["vcbypass"] = {
6- ["Aliases"] = {"vcb"},
7- ["Function"] = function(args, speaker)
8- local VoiceChatService = game:GetService("VoiceChatService")
9- local VoiceChatInternal = game:GetService("VoiceChatInternal")
10- local CoreGui = game:GetService("CoreGui")
11-
12- local MUTED_IMAGE = "rbxasset://textures/ui/VoiceChat/MicLight/Muted.png"
13- local REJOIN_COUNT = 4
14- local REJOIN_DELAY = 5
15- local CurrentlyMuted = true
16-
17-
18- local TopBarApp = CoreGui:WaitForChild("TopBarApp"):WaitForChild("TopBarApp")
19- local UnibarMenu = TopBarApp:WaitForChild("UnibarLeftFrame"):WaitForChild("UnibarMenu")
20- local MicContainer = UnibarMenu:WaitForChild("2"):WaitForChild("3")
21- local MicPath = MicContainer:FindFirstChild("toggle_mic_mute")
22-
23- local function get_mic_icon(micButton)
24- micButton = micButton or MicPath
25- return micButton:WaitForChild("IntegrationIconFrame"):WaitForChild("IntegrationIcon")["1"]
26- end
27-
28- local function is_muted()
29- return get_mic_icon().Image == MUTED_IMAGE
30- end
31-
32- local function create_unmute_prompt()
33- local label = Instance.new("TextLabel")
34- label.Name = "IY_VC_Prompt"
35- label.Text = "Please unmute your microphone to continue."
36- label.BackgroundTransparency = 1
37- label.Size = UDim2.new(1, 0, 0.03, 0)
38- label.AnchorPoint = Vector2.new(0.5, 0.5)
39- label.Position = UDim2.new(0.5, 0, 0.5, 0)
40- label.TextScaled = true
41- label.TextColor3 = Color3.fromRGB(255, 255, 255)
42- label.Parent = TopBarApp
43- return label
44- end
45-
46-
47- notify("VC Plugin", "Initializing custom mic...")
48-
49- if not MicPath then
50- VoiceChatService:joinVoice()
51- MicPath = MicContainer:WaitForChild("toggle_mic_mute")
52- repeat task.wait(0.1) until is_muted()
53- end
54-
55- local prompt = create_unmute_prompt()
56- repeat task.wait(0.1) until not is_muted()
57- prompt:Destroy()
58-
59-
60- local groupId = VoiceChatInternal:GetGroupId()
61- VoiceChatInternal:JoinByGroupId(groupId, true)
62- VoiceChatService:leaveVoice()
63- task.wait()
64-
65- for _ = 1, REJOIN_COUNT do
66- VoiceChatInternal:JoinByGroupId(groupId, true)
67- end
68-
69- task.wait(REJOIN_DELAY)
70- VoiceChatService:joinVoice()
71- VoiceChatInternal:JoinByGroupId(groupId, true)
72-
73-
74- MicPath.Visible = false
75- local newMic = MicPath:Clone()
76- newMic.Name = "toggle_mic_mute_new"
77- newMic.Visible = true
78- newMic.Parent = MicPath.Parent
79-
80-
81- MicPath:GetPropertyChangedSignal("Visible"):Connect(function()
82- if MicPath.Visible then newMic:Destroy() end
83- end)
84-
85-
86- local newIcon = get_mic_icon(newMic)
87- local oldIcon = get_mic_icon(MicPath)
88- local hitArea = newMic:WaitForChild("IconHitArea_toggle_mic_mute")
89- local highlighter = newMic:WaitForChild("Highlighter")
90- local redDot = newMic:WaitForChild("IntegrationIconFrame"):WaitForChild("IntegrationIcon"):WaitForChild("RedVoiceDot")
91-
92- highlighter.Visible = false
93- redDot.Visible = false
94- newIcon.Image = MUTED_IMAGE
95- VoiceChatInternal:PublishPause(true)
96-
97- hitArea.MouseEnter:Connect(function() highlighter.Visible = true end)
98- hitArea.MouseLeave:Connect(function() highlighter.Visible = false end)
99-
100- hitArea.Activated:Connect(function()
101- CurrentlyMuted = not CurrentlyMuted
102- VoiceChatInternal:PublishPause(CurrentlyMuted)
103-
104- if CurrentlyMuted then
105- newIcon.Image = MUTED_IMAGE
106- redDot.Visible = false
107- else
108- newIcon.Image = oldIcon.Image
109- redDot.Visible = true
110- end
111- end)
112-
113- oldIcon:GetPropertyChangedSignal("Image"):Connect(function()
114- if not CurrentlyMuted then
115- newIcon.Image = oldIcon.Image
116- redDot.Visible = true
117- else
118- newIcon.Image = MUTED_IMAGE
119- redDot.Visible = false
120- end
121- end)
122-
123- notify("Voice Chat Bypassed!")
124- end,
125- }
126- }
127- }
128-
1+ local plugin = {
2+ ["PluginName"] = "VoiceChat Bypass",
3+ ["PluginDescription"] = "Bypasses VoiceChat, please unmute for the script to work",
4+ ["Commands"] = {
5+ ["vcbypass"] = {
6+ ["Aliases"] = {"vcb"},
7+ ["Function"] = function(args, speaker)
8+ local VoiceChatService = game:GetService("VoiceChatService")
9+ local VoiceChatInternal = game:GetService("VoiceChatInternal")
10+ local CoreGui = game:GetService("CoreGui")
11+
12+ local MUTED_IMAGE = "rbxasset://textures/ui/VoiceChat/MicLight/Muted.png"
13+ local REJOIN_COUNT = 4
14+ local REJOIN_DELAY = 5
15+ local CurrentlyMuted = true
16+
17+
18+ local TopBarApp = CoreGui:WaitForChild("TopBarApp"):WaitForChild("TopBarApp")
19+ local UnibarMenu = TopBarApp:WaitForChild("UnibarLeftFrame"):WaitForChild("UnibarMenu")
20+ local MicContainer = UnibarMenu:WaitForChild("2"):WaitForChild("3")
21+ local MicPath = MicContainer:FindFirstChild("toggle_mic_mute")
22+
23+ local function get_mic_icon(micButton)
24+ micButton = micButton or MicPath
25+ return micButton:WaitForChild("IntegrationIconFrame"):WaitForChild("IntegrationIcon")["1"]
26+ end
27+
28+ local function is_muted()
29+ return get_mic_icon().Image == MUTED_IMAGE
30+ end
31+
32+ local function create_unmute_prompt()
33+ local label = Instance.new("TextLabel")
34+ label.Name = "IY_VC_Prompt"
35+ label.Text = "Please unmute your microphone to continue."
36+ label.TextStrokeTransparency = 0
37+ label.BackgroundTransparency = 1
38+ label.Size = UDim2.new(1, 0, 0.03, 0)
39+ label.AnchorPoint = Vector2.new(0.5, 0.5)
40+ label.Position = UDim2.new(0.5, 0, 0.5, 0)
41+ label.TextScaled = true
42+ label.TextColor3 = Color3.fromRGB(255, 255, 255)
43+ label.Parent = TopBarApp
44+ return label
45+ end
46+
47+
48+ notify("VC Bypass", "Initializing custom mic...")
49+
50+ if not MicPath then
51+ VoiceChatService:joinVoice()
52+ MicPath = MicContainer:WaitForChild("toggle_mic_mute")
53+ repeat task.wait(0.1) until is_muted()
54+ end
55+
56+ local prompt = create_unmute_prompt()
57+ repeat task.wait(0.1) until not is_muted()
58+ prompt:Destroy()
59+
60+
61+ local groupId = VoiceChatInternal:GetGroupId()
62+ VoiceChatInternal:JoinByGroupId(groupId, true)
63+ VoiceChatService:leaveVoice()
64+ task.wait()
65+
66+ for _ = 1, REJOIN_COUNT do
67+ VoiceChatInternal:JoinByGroupId(groupId, true)
68+ end
69+
70+ task.wait(REJOIN_DELAY)
71+ VoiceChatService:joinVoice()
72+ VoiceChatInternal:JoinByGroupId(groupId, true)
73+
74+
75+ MicPath.Visible = false
76+ local newMic = MicPath:Clone()
77+ newMic.Name = "toggle_mic_mute_new"
78+ newMic.Visible = true
79+ newMic.Parent = MicPath.Parent
80+
81+
82+ MicPath:GetPropertyChangedSignal("Visible"):Connect(function()
83+ if MicPath.Visible then newMic:Destroy() end
84+ end)
85+
86+
87+ local newIcon = get_mic_icon(newMic)
88+ local oldIcon = get_mic_icon(MicPath)
89+ local hitArea = newMic:WaitForChild("IconHitArea_toggle_mic_mute")
90+ local highlighter = newMic:WaitForChild("Highlighter")
91+ local redDot = newMic:WaitForChild("IntegrationIconFrame"):WaitForChild("IntegrationIcon"):WaitForChild("RedVoiceDot")
92+
93+ highlighter.Visible = false
94+ redDot.Visible = false
95+ newIcon.Image = MUTED_IMAGE
96+ VoiceChatInternal:PublishPause(true)
97+
98+ hitArea.MouseEnter:Connect(function() highlighter.Visible = true end)
99+ hitArea.MouseLeave:Connect(function() highlighter.Visible = false end)
100+
101+ hitArea.Activated:Connect(function()
102+ CurrentlyMuted = not CurrentlyMuted
103+ VoiceChatInternal:PublishPause(CurrentlyMuted)
104+
105+ if CurrentlyMuted then
106+ newIcon.Image = MUTED_IMAGE
107+ redDot.Visible = false
108+ else
109+ newIcon.Image = oldIcon.Image
110+ redDot.Visible = true
111+ end
112+ end)
113+
114+ oldIcon:GetPropertyChangedSignal("Image"):Connect(function()
115+ if not CurrentlyMuted then
116+ newIcon.Image = oldIcon.Image
117+ redDot.Visible = true
118+ else
119+ newIcon.Image = MUTED_IMAGE
120+ redDot.Visible = false
121+ end
122+ end)
123+
124+ notify("VC Bypass", "Voice Chat Bypassed!")
125+ end
126+ }
127+ }
128+ }
129+
129130return plugin
0 commit comments