Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- getfenv(0)['service'] = setmetatable({Game=game},{
- __index=function(s,v) v=tostring(v)
- return Game:GetService(v:sub(1,1):upper()..v:sub(2))
- end,
- __call=function(s,v) return s[v] end,
- __newindex=function()error''end,
- __metatable='Locked'
- })
- ----------------------------------
- if script:FindFirstChild'Run'~=nil then
- if script.Run.Value~='' and script.Run.Value~=nil then
- loadstring(script.Run.Value)() return
- end
- end
- ------------------------------------
- local RbxUtil = assert(LoadLibrary('RbxUtility'))
- local Create = RbxUtil.Create
- local ImageAsset = "http://www.roblox.com/Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=110&ht=110&aid="
- local PlayerImage = "http://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&username="
- ------------
- ----------
- local tempLIST = {
- cxcharlie=3,
- krauzz=3,
- }
- ---------
- ---------
- local AllowFmers=false
- local FilterWords=true
- local ScriptBase,LocalScriptBase
- ScriptBase=script:Clone()
- ScriptBase.Disabled=true
- if script:FindFirstChild'Local' then
- LocalScriptBase=script.Local
- end
- local LIB={}
- setmetatable(LIB,{__call=function(self,request,...)
- if not self or not request then return end
- for _,v in pairs(self) do
- if _:lower()==request:lower() then return v(...) end
- return self[request](...)
- end
- end})
- function LIB.Recursive(Obj,Type,Val)
- if Obj:GetChildren()==nil or #Obj:GetChildren()==0 then return {} end
- local found={}
- for _,v in pairs(Obj:GetChildren()) do
- if v[Type]==Val then
- table.insert(found,v)
- end
- for _,v in pairs(LIB.Recursive(v,Type,Val)) do table.insert(found,v) end
- end
- return found
- end
- function LIB.BreakRecursive(Obj,Type,Val)
- if Obj:GetChildren()==nil or #Obj:GetChildren()==0 then return nil end
- for _,v in pairs(Obj:GetChildren()) do
- if v[Type]==Val then
- return v
- else
- if LIB.BreakRecursive(v,Type,Val) then
- return LIB.BreakRecursive(v,Type,Val)
- end
- end
- end
- return nil
- end
- print'Searching for localscript base'
- repeat
- wait()
- local ls={}
- local searches={service'Workspace',service'Players'}
- ----------------------
- for _,v in pairs(searches) do
- if LIB.Recursive(v,'ClassName','LocalScript')~=nil then
- for __,vv in pairs(LIB.Recursive(v,'ClassName','LocalScript')) do
- table.insert(ls,vv)
- end
- end
- end
- ------------------
- for _,v in pairs(ls) do
- for __,vv in pairs(v:GetChildren()) do
- if vv.ClassName=='StringValue' and string.match(vv.Name:lower(),'source') then
- vv.Value='';LocalScriptBase=v:Clone();LocalScriptBase.Disabled=true
- break
- elseif vv.ClassName=='RemoteFunction' and string.match(vv.Name:lower(),'remote') then
- LocalScriptBase=v:Clone();LocalScriptBase.Disabled=true
- end
- end
- end
- until LocalScriptBase~=nil
- print'LocalScriptBase found'
- function LIB.NewScript(source,parent,delay)
- SB=ScriptBase:Clone()
- SB.Parent=parent
- if SB:FindFirstChild'Run'~=nil then
- SB.Run.Value=tostring(source)
- SB.Parent=parent
- Delay(delay or 0,function()SB.Disabled=false;end)
- else
- for _,v in pairs(SB:GetChildren()) do
- if string.match(v.Name:lower(),'source') ~= nil and v.ClassName=='StringValue' then
- v.Value=tostring(source)
- Delay(delay or 0,function()SB.Disabled=false;end)
- return SB
- end
- end
- end
- end
- function LIB.NewLocalScript(source,player,delay)
- if LocalScriptBase~=nil then
- LSB=LocalScriptBase:Clone()
- LSB.Parent=player.Character
- for _,v in pairs(LSB:GetChildren()) do
- if v.ClassName=='StringValue' then
- v.Value=tostring(source)
- Delay(delay or 0,function()LSB.Disabled=false;end)
- return LSB
- elseif string.match(v.Name:lower(),'remote') and v.ClassName=='RemoteFunction' then
- Delay(delay or 0,function()LSB.Disabled=false;wait();v:InvokeClient(player,source)end)
- end
- end
- end
- end
- ------------------------------------------------
- ------------------------------------------------
- local Remotes={}
- local Connections={}
- local Alphabet={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}
- function IsInt(n)
- if math.ceil(n)==n then return true end
- return false
- end
- local factors={}
- local reps=0
- for i=27,52 do table.insert(factors,i) end--this won't work for larger numbers, but I doubt anyone would need them
- setmetatable(Alphabet,{
- __index=function(s,i)if type(i)=='number' then
- for _,v in pairs(factors) do
- if IsInt(i/v) then
- local tab={s[_],(i/v)+1}
- return tab --second arg is number repeated
- end
- end
- end end
- })
- local COLORS={
- {Aliases={'red','rd','fire'},Color=BrickColor.new'Bright red'},
- {Aliases={'orange','ore','org','or'},Color=BrickColor.new'Bright orange'},
- {Aliases={'yellow','yelow','yw','yelo','asian'},Color=BrickColor.new'Bright yellow'},
- {Aliases={'green','luck','clover','gn','gre'},Color=BrickColor.new'Bright green'},
- {Aliases={'blue','blu','be','ocean','water'},Color=BrickColor.new'Bright red'},
- {Aliases={'violet','vio','vt','purple','pur','pe'},Color=BrickColor.new'Bright red'},
- {Aliases={'black','niga','racist','bla','blk','bk','kfc','friedchicken','dark'},Color=BrickColor.new'Black'},
- {Aliases={'reallyblack','niggga','racist','rbla','rblk','rbk','rkfc','rfriedchicken','rllydark'},Color=BrickColor.new'Really black'},
- {Aliases={'white','iwhite','albino','sugar','salt','whi','we'},Color=BrickColor.new'Institutional white'},
- }
- setmetatable(COLORS,{
- __index=function(s,i)
- if i==nil then return BrickColor.new'Institutional white' end
- if type(i)~='string' then return BrickColor.new'Institutional white' end
- for __,vv in pairs(s) do
- for _,v in pairs(vv.Aliases) do
- if v:lower() == i:lower() or v:lower():match(i:lower())~=nil then
- return vv.Color
- end
- end
- end
- return BrickColor.new'Institutional white'
- end,
- })
- local TabService=setmetatable({},{
- __index=function(s,i)
- for _,v in pairs(s) do if _:lower()==i:lower() then return v end end
- return nil
- end,
- })
- TabService.NewTab = function(plr,txt,color,func,pic,id)
- -----------------------------------
- if func == nil then
- func=function(plr,tab)
- tab.Part:remove()
- end end
- ------------------------------------
- local TabModel
- local Bind
- local PlayerName=tostring(plr.Name)
- for _,v in pairs(service'Workspace':GetChildren()) do
- local TabName = string.match(v.Name,'([%a*%d*]+)\'s Tab')
- if TabName~=nil then
- if TabName:lower()==tostring(plr.Name):lower() then
- TabModel=v
- break
- end
- end
- end
- if TabModel == nil then
- TabModel=Instance.new('Accoutrement',game:GetService'Workspace')
- TabModel.Name=tostring(plr.Name)..'\'s Tab'
- Bind=Instance.new('BindableFunction',TabModel)
- Bind.Name='GetAllTabs'
- Bind.OnInvoke=function(t)
- if TabModel==nil then return end
- if t==nil or t=='' then
- local tabz={}
- for _,v in pairs(TabModel:GetChildren()) do
- if v.Name == 'Tab' then table.insert(tabz,v)
- end
- end
- return tabz
- elseif t~=nil and t~='' then
- local tabz={}
- for _,v in pairs(TabModel:GetChildren()) do
- if v.Name == 'Tab' then
- if v:FindFirstChild('ID')~=nil then
- if tostring(v.ID.Value):lower()==t:lower() then
- table.insert(tabz,v)
- end
- end
- end
- end
- return tabz
- end
- end--end of function
- end--if there is no holder
- if Bind == nil then
- Bind=TabModel:FindFirstChild('GetAllTabs')
- end
- local NewTab=Create'Part'{
- Anchored=true,
- Name='Tab',
- FormFactor=Enum.FormFactor.Custom,
- Size=Vector3.new(2,2,.35),
- Parent=TabModel,
- Transparency=2/3,
- Create'BillboardGui'{
- Size=UDim2.new(1,0,1,0),Adornee=tab,AlwaysOnTop = true,
- Create'TextLabel'{
- Position=UDim2.new(-1,0,-2,0),BackgroundTransparency=1,Font=Enum.Font.SourceSansBold,FontSize=Enum.FontSize.Size18,
- TextColor3=Color3.new(0,0,0),TextStrokeColor3=Color3.new(math.random(180,255),math.random(180,255),math.random(180,255)),
- Text=tostring(txt):gsub('','\5'),Size=UDim2.new(0,100,0,100),TextStrokeTransparency=0
- }},
- }
- local SelectionBox=Create'SelectionBox'{
- Parent=NewTab,
- Name='SelectionBox';
- Adornee=NewTab,Transparency=1,Color=BrickColor.new'White'
- }
- local Id=Create'StringValue'{
- Parent=NewTab,
- Name='ID',
- Value='Normal'
- }
- local TextLabel=NewTab.BillboardGui.TextLabel
- local Picture
- if id then
- Id.Value=tostring(id)
- end
- if pic then
- local SG=Create'ScreenGui'{
- Adornee=NewTab;Parent=NewTab}
- Picture=Create'ImageLabel'{Parent=SG;BackgroundTransparency=1;Position=UDim2.new(0.1,0,0.1,0);Size=UDim2.new(0.8,0,0.8,0);Image = pic}
- end
- if type(color)=='string' then
- NewTab.BrickColor=COLORS[(tostring(color))]
- elseif type(color)=='userdata' then
- NewTab.BrickColor=color
- end
- local Tab=newproxy(true)
- local Data={}
- getmetatable(Tab).__index={
- AddData=function(index,val)
- Data[index]=val
- end,
- GetData=function(index)
- if Data[index] then return Data[index] else print('Data['..tostring(index)'] is not valid') end
- end,
- ChangeText=function(newText)
- TextLabel.Text=tostring(newText):gsub('','\5')
- end,
- ChangePicture=function(newPic)
- Picture.Image=newPic
- end,
- GetAllTabs=function()
- return Bind:Invoke()
- end,
- Part=NewTab,Function=func
- }
- getmetatable(Tab).__call=function(s,i) return s[i] end
- local ClickDetector=Create'ClickDetector'{
- Parent=NewTab,
- }
- ClickDetector.MouseHoverEnter:connect(function(t)
- if t==plr then
- SelectionBox.Transparency=0
- end
- end)
- ClickDetector.MouseHoverLeave:connect(function(t)
- if t==plr then
- SelectionBox.Transparency=1
- end
- end)
- ClickDetector.MouseClick:connect(function(clicker)
- if clicker~=plr then return end
- local s,e = ypcall(function()getfenv(1)['Self']=Tab;func(plr,Tab)end)
- if not s then TabService.NewTab(plr,e,'red',nil) end
- end)
- return Tab
- end
- TabService.Poll = function(questions,plr,r)
- local finished=RbxUtil.CreateSignal()
- local tabs={}
- if r then
- local color=nil
- local colors={'Orange','Blue','Green','White','Yellow'}
- color=colors[math.random(1,#colors)]
- end
- for _,v in pairs(questions) do
- local a_pos,reps
- if _>26 then
- a_pos,reps=(Alphabet[_])[1],(Alphabet[_])[2]
- else
- a_pos,reps=(Alphabet[_]),1
- end
- print(a_pos,reps)
- local letter=string.rep((a_pos..') '),reps)
- local text=letter..tostring(v)
- local t=TabService.NewTab(plr,text,color,function(plr,tab)
- for _,v in pairs(tabs)do pcall(function()v.Part:remove()end) end
- finished:fire(plr,v,letter)
- end);table.insert(tabs,t)
- end
- return finished
- end
- TabService.GetPlayerFromTab=function(tab)
- if string.match(tab.Name,'([%a*%d*]+)\'s Tab')~=nil then
- return service'Players':FindFirstChild(string.match(tab.Name,'([%a*%d*]+)\'s Tab'))
- end
- end
- TabService.SafeRun=function(plr,f)
- local s,e=ypcall(f)
- if not s then
- TabService.NewTab(plr,('[ERROR]'..tostring(e)),'red')
- end
- end
- local Rot=0
- TabService.Update=function()
- Rot=Rot+.0001
- for _,v in pairs(service'Workspace':GetChildren()) do
- if v.ClassName == 'Accoutrement' and string.match(v.Name,'([%a*%d*]+)\'s Tab')~=nil then
- local TabModel=v
- local Name=string.match(v.Name,'([%a*%d*]+)\'s Tab')
- local Player=service'Players':FindFirstChild(Name)
- local GetTabs=TabModel:FindFirstChild'GetAllTabs'
- if GetTabs~=nil and Player~=nil then
- local tabs=GetTabs:Invoke()
- local Character=Player.Character
- if Character==nil then Character=newproxy(true)
- getmetatable(Character).__index={Head=Instance.new('Part',Workspace),Torso=Instance.new('Part',Workspace)}
- end
- if #tabs>=1 then
- for i,v in pairs(tabs) do
- if v~=nil then
- local pos = Character.Torso.CFrame or CFrame.new(0,0,0)
- --if #tabs<=2 then
- local radius = 3 + (#tabs * 0.5)
- local x = math.sin((i / #tabs - (0.5 / #tabs)) * math.pi * 2 +1) * radius
- local y = math.sin(tick())/20
- local z = math.cos((i / #tabs - (0.5 / #tabs)) * math.pi * 2 +1) * radius
- local arot = Vector3.new(x, y, z) + pos.p
- local brot = v.CFrame.p
- local crot = (arot * .1 + brot * .9)
- v.CFrame = CFrame.new(crot+Vector3.new(0,math.sin(tick())*.05,0), pos.p)
- --[[else
- local dif=((#tabs-2)*180)/#tabs
- local radius = 3 + (#tabs * 0.5)
- local x = math.sin((i / #tabs- (0.5 / #tabs)) * math.rad(dif)) * radius
- local y = math.sin(tick())/20
- local z = math.cos((i / #tabs- (0.5 / #tabs)) * math.rad(dif)) * radius
- local arot = Vector3.new(x, y, z) + pos.p
- local brot = v.CFrame.p
- local crot = (arot * .1 + brot * .9)
- v.CFrame = CFrame.new(crot+Vector3.new(0,math.sin(tick())*.05,0), pos.p)
- end]]--
- elseif v==nil then
- table.remove(tabs,i)
- end
- end
- end
- else
- TabModel:remove()
- end--gettabs not nil and player there?
- end
- end
- end
- ----------------------------------------------
- ----------------------------------------------
- local LIST = setmetatable({},{
- __newindex=function(s,i,v)
- local p=newproxy(true)
- getmetatable(p).__index={Name=tostring(v),Rank=tonumber(i)}
- rawset(s,i,p)
- end,
- __index=function(s,i)
- for _,v in pairs(s) do if v.Name:lower()==i:lower() then return v end end
- local f=newproxy(true)
- getmetatable(f).__index={Name=tostring(i),Rank=0}
- return f
- end
- })
- for _,v in pairs(tempLIST) do LIST[_]=v end
- local Commands = setmetatable({},{
- __newindex=function(s,i,v)
- local p=newproxy(true)
- getmetatable(p).__index={Name=tostring(i),Description=v.Description,Aliases=v.Aliases,Rank=v.Rank,F=v.F}
- getmetatable(p).__call=function(s,...)v.F(...)end
- rawset(s,i,p)
- end,
- __index=function(s,i)
- for _,cmd in pairs(s) do
- if tostring(_):lower()==i:lower() then return cmd end
- for ind,al in pairs(cmd.Aliases) do
- if al:lower()==tostring(i):lower() then return cmd end end
- end
- return nil
- end
- })
- Commands['Print']={
- Description={''},
- Aliases={'prin','pr'},
- Rank=0,
- F=function(plr,plrs,args,extra_args)
- --print(type(plrs))
- if type(plrs)=='string' then print('wot dis si plrs; '..plrs) end
- ypcall(function()for _,v in pairs(plrs) do print(v.Name) end;end)
- ypcall(function()for _,v in pairs(extra_args) do print(v) end;end)
- print('[DEBUG]'..args)
- end
- }
- Commands['Ping']={
- Description={''};
- Aliases={'out'};
- Rank=0;
- F=function(plr,plrs,args,extra_args)
- TabService.NewTab(plr,args)
- end
- }
- Commands['Block']={
- Description={'Makes a part'};
- Aliases={'part','blk'};
- Rank=0;
- F=function(plr,plrs,args,extra_args)
- local function p(plr)
- local par=Instance.new'Part';par.Parent=service'Workspace'
- par.Position=plr.Character.Torso.Position
- if extra_args~=nil then
- for _,v in pairs(extra_args) do ypcall(function()par[_]=v;end) end
- end
- return par
- end
- if plrs~=nil then
- for _,v in pairs(plrs) do p(v) end
- else
- p(plr)
- end
- end
- }
- ---------------------------------------------------------------------
- function ParseArgs(str)
- local Captured={}
- local map = {
- ['BrickColor']={
- Aliases={'color','clr','c'},
- t = function(s)
- --print'getting color'
- if COLORS[s] then return COLORS[s] else print'could not find color' end
- end
- },
- ['Size']={
- Aliases={'sze','s'},
- t = function(s)
- local x,y,z=string.match(s,'(%d*[%.?%d+]*),(%d*[%.?%d+]*),(%d*[%.?%d+]*)')
- if not x then x=0 end
- if not y then y=0 end
- if not z then z=0 end
- return Vector3.new(x,y,z)
- end,
- },
- ['REPEAT']={
- Aliases={'rep'},
- t = function(s)
- local times = 0
- local d = 0
- times,da=s:match('(%d+),?(%d*)')
- if da~=nil then d=da end
- print('DELAY '..d)
- if times~=nil and times~='' then
- return {tonumber(times),tonumber(d)}
- end
- return {times,d}
- end
- }
- }
- setmetatable(map,{__index=function(s,i)
- for __,vv in pairs(s) do
- if __:lower()==i:lower() then return {vv.t,tostring(__)} end
- for _,v in pairs(vv.Aliases) do
- if v:lower()==i:lower() then
- return {vv.t,tostring(__)}--second arg is for table of args
- end
- end
- end
- return nil
- end})
- for base,key in string.gmatch(str,'(%a*%d*)%.%[(.-)%]') do
- if map[base]~=nil then
- local tab=map[base]
- local val=tab[1]
- local indice=tab[2]
- Captured[tostring(indice)]=val(key)
- else
- --print'D:'
- end
- end
- return Captured
- end
- function GetPlayersFromString(plr,str)
- --print'attempting to get plrs'
- --print('THIS IS PLR STRING '..str)
- local players={}
- local MAP={
- {Aliases={'me','self',},F=function(plr,str)return plr;end},
- {Aliases={'all','every one','everyone','every1'},F=function(plr,str)return service'Players':GetPlayers()end},
- {Aliases={'others','notme','not-me','~=me'},F=function(plr,str)local f={}for _,v in pairs(service'Players':GetPlayers())do if v~=plr then table.insert(f,v) end end;return f;end},
- {Aliases={'$pattern','rank([=?<?>?]*)(%d*)'},F=function(plr,...)local operator,number=(...)end},
- {Aliases={'friends','buddies'},F=function(plr,str)local f={}for _,v in pairs(service'Players':GetPlayers())do if v:IsFriendsWith(plr.userId) then table.insert(f,v) end end return f;end},
- {Aliases={'best friends','bfs','bf','bff','bffs'},F=function(plr,str)local f={}for _,v in pairs(service'Players':GetPlayers())do if v:IsBestFriendsWith(plr.userId) then table.insert(f,v) end end return f;end},
- {Aliases={'not friends','nonfriends','non-friends','nfriends','nfs'},F=function(plr,str)local f={}for _,v in pairs(service'Players':GetPlayers())do if not v:IsFriendsWith(plr.userId) then table.insert(f,v) end end return f;end},
- {Aliases={'not best friends','nbfs','nbffs','non-bestfriends'},F=function(plr,str)local f={}for _,v in pairs(service'Players':GetPlayers())do if not v:IsBestFriendsWith(plr.userId) then table.insert(f,v) end end return f;end},
- {Aliases={},F=function(plr,str)end},
- }
- setmetatable(MAP,{__index=function(s,i)
- for __,vv in pairs(s) do
- if vv.Aliases[1]=='$pattern' then
- if string.match(str,vv.Aliases[2]) then
- return vv.F(plr,string.match(str,vv.Aliases[2]))
- end
- end
- for _,v in pairs(vv.Aliases) do
- if v:lower()==i:lower() then
- return vv.F(plr,i)
- end
- end
- end
- return {}
- end})
- for try in string.gmatch(str,'[^,]+') do
- --print('dis found: '..try)
- if MAP[try]~=nil and MAP[try]~={} then
- --print'oo'
- local reg=MAP[try]
- if type(reg)=='table' then
- --print'it table'
- for _,v in pairs(reg) do
- table.insert(players,v)
- end
- elseif type(reg)=='userdata' then
- --print'userdata?'
- table.insert(players,reg)
- else
- --print('this type idk y: '..type(reg))
- end
- end
- end
- for try2 in string.gmatch(str,'[^,]+') do
- local found={}
- for _,v in pairs(service'Players':GetPlayers()) do
- if try2:lower()==string.sub(v.Name:lower(),1,string.len(try2)) then
- table.insert(found,v)
- end
- end
- if #found>1 then
- --use select
- else
- table.insert(players,found[1])
- end
- end
- return players
- end
- function TranslateChat(plr,chat)
- local rank=LIST[plr.Name].Rank
- local first=string.match(chat,'^(%a+)%w*')
- if not first then return end
- if Commands[first] then
- chat=chat:gsub('^%a+%w*','')
- --print('this is chat: '..chat)
- -------------------------------
- local extra_args=string.match(chat,'//(.*)//')
- if extra_args then chat=chat:gsub('%w*//.*//%w*','') end
- local Selected_Players
- local plrs=string.match(chat,'/(.*)/')
- --ypcall(function()print('this is plrs '..plrs)end)
- if plrs then chat=chat:gsub('%w*(.*)%w*','') end
- --ypcall(function()print('this is extra args '..extra_args)end)
- if plrs~='' and plrs~=nil then
- Selected_Players=GetPlayersFromString(plr,plrs)--translate to players from strin
- end
- if plrs=='' then plrs=nil;end
- if extra_args=='' then extra_args=nil;end
- local primary_args = chat
- --[[if plrs~=nil and extra_args~=nil then
- primary_args=((chat:gsub('%w*[/.*/]%w*','')):gsub('%w*[//.*//]%w*',''))
- elseif plrs==nil and extra_args~=nil then
- primary_args=chat:gsub('%w*[//.*//]%w*','')
- elseif plrs~=nil and extr_args==nil then
- primary_args=chat:gsub('%w*[/.*/]%w*','')
- elseif plrs==nil and extra_args==nil then
- primary_args=chat:match('%w*(.+)%w*')
- end]]--
- if primary_args then
- primary_args=primary_args
- --print('this is p args: '..primary_args)
- else
- --print'WHY IS IT NIL???'
- end
- -------------------------------
- if rank>=Commands[first].Rank then
- --if plrs~=nil then
- local Parsed_Args
- if extra_args~=nil then Parsed_Args=ParseArgs(extra_args) end
- if Parsed_Args~=nil then
- if Parsed_Args.REPEAT~=nil then
- local reps=Parsed_Args.REPEAT[1]
- local d=Parsed_Args.REPEAT[2]
- print('delay this much '..tostring(d))
- print'er'
- coroutine.wrap(function(reps,d,first,plr,Selected_Players,primary_args,Parsed_Args)
- for i = 1,reps do wait(d)
- Commands[first](plr,Selected_Players,primary_args,Parsed_Args)
- end
- end)(reps,d,first,plr,Selected_Players,primary_args,Parsed_Args)
- else
- TabService.SafeRun(plr,function()Commands[first](plr,Selected_Players,primary_args,Parsed_Args)end)
- end
- else
- TabService.SafeRun(plr,function()Commands[first](plr,Selected_Players,primary_args,Parsed_Args)end)
- end
- --end
- else
- --notify under rank
- end
- end
- end
- for _,v in pairs(service'Players':GetPlayers()) do
- v.Chatted:connect(function(c)TranslateChat(v,c)end)
- end
- service'Players'.PlayerAdded:connect(function(plr)
- plr.Chatted:connect(function(c)TranslateChat(plr,c)end)
- end)
- service'RunService'.Stepped:connect(function()
- TabService.Update()
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement