Improve formatting of corescripts

This commit is contained in:
Lewin Kelly 2023-05-05 19:21:17 +01:00
parent df7e3bd7b9
commit 30bc79cf83
30 changed files with 1437 additions and 1544 deletions

View File

@ -192,10 +192,10 @@ local aA aA=function(aB,aC,aD,aE)return a(aD,aB,{Font=Enum.Font.ArialBold,
TextColor3=Color3.new(0.8509803921568627,0.8509803921568627,0.8509803921568627), TextColor3=Color3.new(0.8509803921568627,0.8509803921568627,0.8509803921568627),
TextWrapped=true,Text=aC,BackgroundTransparency=1,BorderSizePixel=0,FontSize=aE} TextWrapped=true,Text=aC,BackgroundTransparency=1,BorderSizePixel=0,FontSize=aE}
)end local aB aB=function(aC)return a('ImageButton',aC,{Size=UDim2.new(0,153,0, )end local aB aB=function(aC)return a('ImageButton',aC,{Size=UDim2.new(0,153,0,
46),Name=aC})end local aC aC=function(aD)k=false if aD then aa()if j then local 46)})end local aC aC=function(aD)k=false if aD then aa()if j then local aE=false
aE=false if(tostring(j['isValid'])):lower()=='true'then aE=true end Game: if(tostring(j['isValid'])):lower()=='true'then aE=true end Game:GetService
GetService'MarketplaceService':SignalPromptProductPurchaseFinished(tonumber(j[ 'MarketplaceService':SignalPromptProductPurchaseFinished(tonumber(j['playerId'])
'playerId']),tonumber(j['productId']),aE)else print ,tonumber(j['productId']),aE)else print
'Something went wrong, no currentServerResponseTable'end return Z()else local aE 'Something went wrong, no currentServerResponseTable'end return Z()else local aE
=string.gsub(R,'itemName',tostring(d['Name']))q.BodyFrame.ItemPreview. =string.gsub(R,'itemName',tostring(d['Name']))q.BodyFrame.ItemPreview.
ItemDescription.Text=aE ab(q.BodyFrame.OkPurchasedButton)return _()end end local ItemDescription.Text=aE ab(q.BodyFrame.OkPurchasedButton)return _()end end local

View File

@ -80,16 +80,16 @@ if F==H then return true end end return false end local F F=function(G,H)local I
,J,K,L,M,N,O,P,Q,R=nil,false,b.RotateCamera,-1,false,nil,b.ZoomCamera,{},nil,nil ,J,K,L,M,N,O,P,Q,R=nil,false,b.RotateCamera,-1,false,nil,b.ZoomCamera,{},nil,nil
R=function()s=nil J=false I=nil end local S S=function()P={}N=nil M=false Q: R=function()s=nil J=false I=nil end local S S=function()P={}N=nil M=false Q:
Destroy()Q=nil end local T T=function(U,V)if Q~=nil then Q:Destroy()end Q=a( Destroy()Q=nil end local T T=function(U,V)if Q~=nil then Q:Destroy()end Q=a(
'Frame',{Name='PinchFrame',BackgroundTransparency=1,Size=UDim2.new(1,0,1,0), 'Frame','PinchFrame',{BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),Parent=G}
Parent=G})Q.InputChanged:connect(function(W)if not M then S()return end R()if )Q.InputChanged:connect(function(W)if not M then S()return end R()if not(N~=nil)
not(N~=nil)then if W==U then N=(W.Position-V.Position).magnitude U=W elseif W==V then if W==U then N=(W.Position-V.Position).magnitude U=W elseif W==V then N=(W.
then N=(W.Position-U.Position).magnitude V=W end else local X=0 if W==U then X=( Position-U.Position).magnitude V=W end else local X=0 if W==U then X=(W.Position
W.Position-V.Position).magnitude U=W elseif W==V then X=(W.Position-U.Position). -V.Position).magnitude U=W elseif W==V then X=(W.Position-U.Position).magnitude
magnitude V=W end if X~=0 then local Y=X-N if Y~=0 then O(b,(Y*q))end N=X end V=W end if X~=0 then local Y=X-N if Y~=0 then O(b,(Y*q))end N=X end end end)
end end)return Q.InputEnded:connect(function(W)if W==U or W==V then return S() return Q.InputEnded:connect(function(W)if W==U or W==V then return S()end end)
end end)end local U U=function(V)if#P<1 then table.insert(P,V)L=tick()M=false end local U U=function(V)if#P<1 then table.insert(P,V)L=tick()M=false elseif#P==
elseif#P==1 then M=((tick()-L)<=r)if M then table.insert(P,V)return T(P[1],P[2]) 1 then M=((tick()-L)<=r)if M then table.insert(P,V)return T(P[1],P[2])else P={}
else P={}end end end G.InputBegan:connect(function(V)if V.UserInputType~=Enum. end end end G.InputBegan:connect(function(V)if V.UserInputType~=Enum.
UserInputType.Touch then return end if D(V)then return end local W=E(V)if not W UserInputType.Touch then return end if D(V)then return end local W=E(V)if not W
then U(V)end if not(s~=nil)and not W then s=V I=Vector2.new(s.Position.x,s. then U(V)end if not(s~=nil)and not W then s=V I=Vector2.new(s.Position.x,s.
Position.y)end end)b.InputChanged:connect(function(V)if V.UserInputType~=Enum. Position.y)end end)b.InputChanged:connect(function(V)if V.UserInputType~=Enum.

View File

@ -1,202 +1,197 @@
print'[Mercury]: Loaded corescript 157877000'local a,b=assert(LoadLibrary print'[Mercury]: Loaded corescript 157877000'local a a=function(b,c,d)if not(d~=
'RbxUtility').Create,script.Parent:FindFirstChild'ControlFrame'or script.Parent nil)then d=c c=nil end local e=Instance.new(b)if c then e.Name=c end local f for
local c,d,e,f=a'Frame'{Name='DevConsoleContainer',Parent=b,BackgroundColor3= g,h in pairs(d)do if type(g)=='string'then if g=='Parent'then f=h else e[g]=h
Color3.new(0,0,0),BackgroundTransparency=0.9,Position=UDim2.new(0,100,0,10),Size end elseif type(g)=='number'and type(h)=='userdata'then h.Parent=e end end e.
=UDim2.new(0.5,20,0.5,20),Visible=false},a'BindableFunction'{Name= Parent=f return e end local b=script.Parent:FindFirstChild'ControlFrame'or
'ToggleDevConsole',Parent=b},false,nil f=function()if e then return end e=true script.Parent local c,d,e,f=a('Frame','DevConsoleContainer',{Parent=b,
local g,h,i,j=1,2,1000,Vector2.new(245,180)local k,l,m,n,o,p,q,r,s,t,u,v,w=g,{}, BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.9,Position=UDim2.
{},0,0,true,true,true,true,false,0,0,a'Frame'{Name='Body',Parent=c, new(0,100,0,10),Size=UDim2.new(0.5,20,0.5,20),Visible=false}),a(
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=UDim2. 'BindableFunction','ToggleDevConsole',{Parent=b}),false,nil f=function()if e
new(0,0,0,21),Size=UDim2.new(1,0,1,-25)}local x=a'Frame'{Name='OptionsHolder', then return end e=true local g,h,i,j=1,2,1000,Vector2.new(245,180)local k,l,m,n,
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position= o,p,q,r,s,t,u,v,w=g,{},{},0,0,true,true,true,true,false,0,0,a('Frame','Body',{
UDim2.new(0,220,0,0),Size=UDim2.new(1,-255,0,24),ClipsDescendants=true}local y=a
'Frame'{Name='OptionsBar',Parent=x,BackgroundColor3=Color3.new(0,0,0),
BackgroundTransparency=1,Position=UDim2.new(0,-250,0,4),Size=UDim2.new(0,234,0,
18)}local z=a'TextButton'{Name='ErrorToggleButton',Parent=y,BackgroundColor3=
Color3.new(0,0,0),BorderColor3=Color3.new(1,0,0),Position=UDim2.new(0,115,0,0),
Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=Enum.FontSize.Size14,
Text='',TextColor3=Color3.new(1,0,0)}a'Frame'{Name='CheckFrame',Parent=z,
BackgroundColor3=Color3.new(1,0,0),BorderColor3=Color3.new(1,0,0),Position=UDim2
.new(0,4,0,4),Size=UDim2.new(0,10,0,10)}local A=a'TextButton'{Name=
'InfoToggleButton',Parent=y,BackgroundColor3=Color3.new(0,0,0),BorderColor3=
Color3.new(0.4,0.5,1),Position=UDim2.new(0,65,0,0),Size=UDim2.new(0,18,0,18),
Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='',TextColor3=Color3.
new(0.4,0.5,1)}a'Frame'{Name='CheckFrame',Parent=A,BackgroundColor3=Color3.new(
0.4,0.5,1),BorderColor3=Color3.new(0.4,0.5,1),Position=UDim2.new(0,4,0,4),Size=
UDim2.new(0,10,0,10)}local B=a'TextButton'{Name='OutputToggleButton',Parent=y,
BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.new(1,1,1),Position=UDim2
.new(0,40,0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=Enum.
FontSize.Size14,Text='',TextColor3=Color3.new(1,1,1)}a'Frame'{Name='CheckFrame',
Parent=B,BackgroundColor3=Color3.new(1,1,1),BorderColor3=Color3.new(1,1,1),
Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10)}local C=a'TextButton'{Name
='WarningToggleButton',Parent=y,BackgroundColor3=Color3.new(0,0,0),BorderColor3=
Color3.new(1,0.6,0.4),Position=UDim2.new(0,90,0,0),Size=UDim2.new(0,18,0,18),
Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='',TextColor3=Color3.
new(1,0.6,0.4)}a'Frame'{Name='CheckFrame',Parent=C,BackgroundColor3=Color3.new(1
,0.6,0.4),BorderColor3=Color3.new(1,0.6,0.4),Position=UDim2.new(0,4,0,4),Size=
UDim2.new(0,10,0,10)}local D=a'TextButton'{Name='WordWrapToggleButton',Parent=y,
BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.new(0.8,0.8,0.8),Position
=UDim2.new(0,215,0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=
Enum.FontSize.Size14,Text='',TextColor3=Color3.new(0.8,0.8,0.8)}a'Frame'{Name=
'CheckFrame',Parent=D,BackgroundColor3=Color3.new(0.8,0.8,0.8),BorderColor3=
Color3.new(0.8,0.8,0.8),Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10),
Visible=false}a'TextLabel'{Name='Filter',Parent=y,BackgroundTransparency=1,
Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,40,0,18),Font='SourceSansBold',
FontSize=Enum.FontSize.Size14,Text='Filter',TextColor3=Color3.new(1,1,1)}a
'TextLabel'{Name='WordWrap',Parent=y,BackgroundTransparency=1,Position=UDim2.
new(0,150,0,0),Size=UDim2.new(0,50,0,18),Font='SourceSansBold',FontSize=Enum.
FontSize.Size14,Text='Word Wrap',TextColor3=Color3.new(1,1,1)}local E=a'Frame'{
Name='ScrollBar',Parent=w,BackgroundColor3=Color3.new(0,0,0),
BackgroundTransparency=0.9,Position=UDim2.new(1,-20,0,26),Size=UDim2.new(0,20,1,
-50),Visible=false}local F=a'Frame'{Name='ScrollArea',Parent=E,
BackgroundTransparency=1,Position=UDim2.new(0,0,0,23),Size=UDim2.new(1,0,1,-46)}
local G=a'ImageButton'{Name='Handle',Parent=F,BackgroundColor3=Color3.new(0,0,0)
,BackgroundTransparency=0.5,Position=UDim2.new(0,0,0.2,0),Size=UDim2.new(0,20,0,
40)}a'ImageLabel'{Name='ImageLabel',Parent=G,BackgroundTransparency=1,Position=
UDim2.new(0,0,0.5,-8),Rotation=180,Size=UDim2.new(1,0,0,16),Image=
'http://www.roblox.com/Asset?id=151205881'}local H=a'ImageButton'{Name='Down',
Parent=E,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=
UDim2.new(0,0,1,-20),Size=UDim2.new(0,20,0,20)}a'ImageLabel'{Name='ImageLabel',
Parent=H,BackgroundTransparency=1,Position=UDim2.new(0,3,0,3),Size=UDim2.new(0,
14,0,14),Rotation=180,Image='http://www.roblox.com/Asset?id=151205813'}local I=a
'ImageButton'{Name='Up',Parent=E,BackgroundColor3=Color3.new(0,0,0),
BackgroundTransparency=0.5,Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,20,0,20)
}a'ImageLabel'{Name='ImageLabel',Parent=I,BackgroundTransparency=1,Position=
UDim2.new(0,3,0,3),Size=UDim2.new(0,14,0,14),Image=
'http://www.roblox.com/Asset?id=151205813'}local J=a'Frame'{Name='TextBox',
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.6,Position=
UDim2.new(0,2,0,26),Size=UDim2.new(1,-4,1,-28),ClipsDescendants=true}local K,L=a
'Frame'{Name='TextHolder',Parent=J,BackgroundTransparency=1,Position=UDim2.new(0
,0,0,0),Size=UDim2.new(1,0,1,0)},a'ImageButton'{Name='OptionsButton',Parent=w,
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=UDim2.new(0
,200,0,2),Size=UDim2.new(0,20,0,20)}a'ImageLabel'{Name='ImageLabel',Parent=L,
BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0),
Rotation=0,Image='http://www.roblox.com/Asset?id=152093917'}local M=a
'ImageButton'{Name='ResizeButton',Parent=w,BackgroundColor3=Color3.new(0,0,0),
BackgroundTransparency=0.5,Position=UDim2.new(1,-20,1,-20),Size=UDim2.new(0,20,0
,20)}a'ImageLabel'{Name='ImageLabel',Parent=M,BackgroundTransparency=1,Position=
UDim2.new(0,6,0,6),Size=UDim2.new(0.8,0,0.8,0),Rotation=135,Image=
'http://www.roblox.com/Asset?id=151205813'}a'TextButton'{Name='LocalConsole',
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.6,Position=
UDim2.new(0,7,0,5),Size=UDim2.new(0,90,0,20),Font='SourceSansBold',FontSize=Enum
.FontSize.Size14,Text='Local Console',TextColor3=Color3.new(1,1,1),
TextYAlignment=Enum.TextYAlignment.Center}a'TextButton'{Name='ServerConsole',
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.8,Position=
UDim2.new(0,102,0,5),Size=UDim2.new(0,90,0,17),Font='SourceSansBold',FontSize=
Enum.FontSize.Size14,Text='Server Console',TextColor3=Color3.new(1,1,1),
TextYAlignment=Enum.TextYAlignment.Center}local N=a'Frame'{Name='TitleBar',
Parent=c,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position= Parent=c,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=
UDim2.new(0,0,0,0),Size=UDim2.new(1,0,0,20)}local O=a'ImageButton'{Name= UDim2.new(0,0,0,21),Size=UDim2.new(1,0,1,-25),a('ImageButton','ResizeButton',{
'CloseButton',Parent=N,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.
=0.5,Position=UDim2.new(1,-20,0,0),Size=UDim2.new(0,20,0,20)}a'ImageLabel'{ new(1,-20,1,-20),Size=UDim2.new(0,20,0,20),a('ImageLabel','ImageLabel',{
Parent=O,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position= BackgroundTransparency=1,Position=UDim2.new(0,6,0,6),Size=UDim2.new(0.8,0,0.8,0)
UDim2.new(0,3,0,3),Size=UDim2.new(0,14,0,14),Image= ,Rotation=135,Image='http://www.roblox.com/Asset?id=151205813'})}),a(
'http://www.roblox.com/Asset?id=151205852'}a'TextButton'{Name='TextButton', 'TextButton','LocalConsole',{BackgroundColor3=Color3.new(0,0,0),
Parent=N,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position= BackgroundTransparency=0.6,Position=UDim2.new(0,7,0,5),Size=UDim2.new(0,90,0,20)
UDim2.new(0,0,0,0),Size=UDim2.new(1,-23,1,0),Text=''}a'TextLabel'{Name= ,Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='Local Console',
'TitleText',Parent=N,BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size= TextColor3=Color3.new(1,1,1),TextYAlignment=Enum.TextYAlignment.Center}),a(
UDim2.new(0,185,0,20),Font='SourceSansBold',FontSize=Enum.FontSize.Size18, 'TextButton','ServerConsole',{BackgroundColor3=Color3.new(0,0,0),
TextColor3=Color3.new(1,1,1),Text='Roblox Developer Console',TextYAlignment=Enum BackgroundTransparency=0.8,Position=UDim2.new(0,102,0,5),Size=UDim2.new(0,90,0,
.TextYAlignment.Top}local P,Q,R,S,T,U,V,W,X=nil,nil,nil,nil,nil,nil,false,false, 17),Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='Server Console',
nil X=function()P=nil Q=nil R=nil S=nil T=nil U=nil V=false W=false end local Y TextColor3=Color3.new(1,1,1),TextYAlignment=Enum.TextYAlignment.Center})})local
Y=function(Z,_)if not P then return end local aa=Vector2.new(Z,_-P)c.Position= x=a('Frame','OptionsHolder',{Parent=w,BackgroundColor3=Color3.new(0,0,0),
UDim2.new(0,Q.X+aa.X,0,Q.Y+aa.Y)end N.TextButton.MouseButton1Down:connect( BackgroundTransparency=1,Position=UDim2.new(0,220,0,0),Size=UDim2.new(1,-255,0,
function(aa,Z)P=Vector2.new(aa,Z)Q=c.AbsolutePosition end)N.TextButton. 24),ClipsDescendants=true})local y,z=a('Frame','OptionsBar',{Parent=x,
MouseButton1Up:connect(X)local aa aa=function(Z,_)if not R then return end local BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=UDim2.new(0
ab=Vector2.new(Z,_-R)c.Size=UDim2.new(0,math.max(S.X+ab.X,j.X),0,math.max(S.Y+ab ,-250,0,4),Size=UDim2.new(0,234,0,18),a('TextButton','ErrorToggleButton',{
.Y,j.Y))end c.Body.ResizeButton.MouseButton1Down:connect(function(ab,Z)R=Vector2 BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.new(1,0,0),Position=UDim2
.new(ab,Z)S=c.AbsoluteSize end)c.Body.ResizeButton.MouseButton1Up:connect(X)N. .new(0,115,0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=Enum.
CloseButton.MouseButton1Down:connect(function()c.Visible=false end)c.TitleBar. FontSize.Size14,Text='',TextColor3=Color3.new(1,0,0),a('Frame','CheckFrame',{
CloseButton.MouseButton1Up:connect(X)local ab,Z,_=true,false,nil _=function()if BackgroundColor3=Color3.new(1,0,0),BorderColor3=Color3.new(1,0,0),Position=UDim2
Z then return end Z=true repeat v=v+(function()if ab then return-1 else return 1 .new(0,4,0,4),Size=UDim2.new(0,10,0,10)})}),a('TextButton','InfoToggleButton',{
end end)()local ac=v/5 local ad=ac*ac*(3-(2*ac))L.ImageLabel.Rotation=ad*5*9 y. BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.new(0.4,0.5,1),Position=
Position=UDim2.new(0,(ad*5*50)-250,0,4)wait()if(v<=0 and ab)or(v>=5 and not ab) UDim2.new(0,65,0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=
then Z=false end until not Z end L.MouseButton1Down:connect(function()ab=not ab Enum.FontSize.Size14,Text='',TextColor3=Color3.new(0.4,0.5,1),a('Frame',
return _()end)local ac ac=function()if k==g then n=math.min(math.max(n,0),u-c. 'CheckFrame',{BackgroundColor3=Color3.new(0.4,0.5,1),BorderColor3=Color3.new(0.4
Body.TextBox.AbsoluteSize.Y)K.Size=UDim2.new(1,0,0,u)elseif k==h then o=math. ,0.5,1),Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10)})}),a('TextButton'
min(math.max(o,0),u-c.Body.TextBox.AbsoluteSize.Y)K.Size=UDim2.new(1,0,0,u)end ,'OutputToggleButton',{BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.
local ad=c.Body.TextBox.AbsoluteSize.Y/K.AbsoluteSize.Y if ad>=1 then c.Body. new(1,1,1),Position=UDim2.new(0,40,0,0),Size=UDim2.new(0,18,0,18),Font=
ScrollBar.Visible=false c.Body.TextBox.Size=UDim2.new(1,-4,1,-28)if k==g or k==h 'SourceSansBold',FontSize=Enum.FontSize.Size14,Text='',TextColor3=Color3.new(1,1
then K.Position=UDim2.new(0,0,1,0-u)end else c.Body.ScrollBar.Visible=true c. ,1),a('Frame','CheckFrame',{BackgroundColor3=Color3.new(1,1,1),BorderColor3=
Body.TextBox.Size=UDim2.new(1,-25,1,-28)local ae,af=1-ad,nil if k==g then af=n/K Color3.new(1,1,1),Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10)})}),a(
.AbsoluteSize.Y elseif k==h then af=o/K.AbsoluteSize.Y end local ag,ah=math.max( 'TextButton','WarningToggleButton',{BackgroundColor3=Color3.new(0,0,0),
0,ae-af),math.max(F.AbsoluteSize.Y*ad,21)local ai=ah/F.AbsoluteSize.Y local aj=( BorderColor3=Color3.new(1,0.6,0.4),Position=UDim2.new(0,90,0,0),Size=UDim2.new(0
1-ai)/(1-ad)local ak=ag*aj local al=math.min(F.AbsoluteSize.Y*ak,F.AbsoluteSize. ,18,0,18),Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='',TextColor3
Y-ah)F.Handle.Size=UDim2.new(1,0,0,ah)F.Handle.Position=UDim2.new(0,0,0,al)K. =Color3.new(1,0.6,0.4),a('Frame','CheckFrame',{BackgroundColor3=Color3.new(1,0.6
Position=UDim2.new(0,0,1,0-u+(function()if k==g then return n elseif k==h then ,0.4),BorderColor3=Color3.new(1,0.6,0.4),Position=UDim2.new(0,4,0,4),Size=UDim2.
return o end end)())end end local ad ad=function(ae)if k==g then n=n+ae elseif k new(0,10,0,10)})}),a('TextButton','WordWrapToggleButton',{BackgroundColor3=
==h then o=o+ae end return ac()end local ae ae=function()local af,ag=K: Color3.new(0,0,0),BorderColor3=Color3.new(0.8,0.8,0.8),Position=UDim2.new(0,215,
GetChildren(),nil if k==g then ag=l elseif k==h then ag=m end local ah=0 for ai= 0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=Enum.FontSize.
1,#af do af[ai].Visible=false end for ai=1,#ag do local aj,ak=nil,false if ai># Size14,Text='',TextColor3=Color3.new(0.8,0.8,0.8),a('Frame','CheckFrame',{
af then aj=a'TextLabel'{Name='Message',Parent=K,BackgroundTransparency=1, BackgroundColor3=Color3.new(0.8,0.8,0.8),BorderColor3=Color3.new(0.8,0.8,0.8),
TextXAlignment='Left',Size=UDim2.new(1,0,0,14),FontSize='Size10',ZIndex=1}ak= Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10),Visible=false})}),a(
true else aj=af[ai]end if(s or ag[ai].Type~=Enum.MessageType.MessageOutput)and(r 'TextLabel','Filter',{BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=
or ag[ai].Type~=Enum.MessageType.MessageInfo)and(q or ag[ai].Type~=Enum. UDim2.new(0,40,0,18),Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text=
MessageType.MessageWarning)and(p or ag[ai].Type~=Enum.MessageType.MessageError) 'Filter',TextColor3=Color3.new(1,1,1)}),a('TextLabel','WordWrap',{
then do aj.TextWrapped=t aj.Size=UDim2.new(0.98,0,0,2000)aj.Parent=c aj.Text= BackgroundTransparency=1,Position=UDim2.new(0,150,0,0),Size=UDim2.new(0,50,0,18)
tostring(ag[ai].Time)..' -- '..tostring(ag[ai].Message)aj.Size=UDim2.new(0.98,0, ,Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='Word Wrap',TextColor3
0,aj.TextBounds.Y)aj.Position=UDim2.new(0,5,0,ah)aj.Parent=K ah=ah+aj.TextBounds =Color3.new(1,1,1)})}),a('Frame','ScrollBar',{Parent=w,BackgroundColor3=Color3.
.Y end if ak then if(k==g and n>0)or(k==h and o>0)then ad(aj.TextBounds.Y)end new(0,0,0),BackgroundTransparency=0.9,Position=UDim2.new(1,-20,0,26),Size=UDim2.
end aj.Visible=true aj.TextColor3=Color3.new((function()if ag[ai].Type==Enum. new(0,20,1,-50),Visible=false,a('ImageButton','Down',{BackgroundColor3=Color3.
MessageType.MessageError then return 1,0,0 elseif ag[ai].Type==Enum.MessageType. new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.new(0,0,1,-20),Size=UDim2.
MessageInfo then return 0.4,0.5,1 elseif ag[ai].Type==Enum.MessageType. new(0,20,0,20),a('ImageLabel','ImageLabel',{BackgroundTransparency=1,Position=
MessageWarning then return 1,0.6,0.4 else return 1,1,1 end end)())end end u=ah UDim2.new(0,3,0,3),Size=UDim2.new(0,14,0,14),Rotation=180,Image=
end local af,ag=false,nil ag=function()if af then return end Delay(0.1,function( 'http://www.roblox.com/Asset?id=151205813'})}),a('ImageButton','Up',{
)af=false return ae()end)af=true end local ah,ai=0,nil ai=function()if V then BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.
return end V=true wait(0.6)ah=ah+1 while V and ah<2 do wait()ad(12)end ah=ah-1 new(0,0,0,0),Size=UDim2.new(0,20,0,20),a('ImageLabel','ImageLabel',{
end local aj aj=function()if W then return end W=true wait(0.6)ah=ah+1 while W BackgroundTransparency=1,Position=UDim2.new(0,3,0,3),Size=UDim2.new(0,14,0,14),
and ah<2 do wait()ad(-12)end ah=ah-1 end c.Body.ScrollBar.Up.MouseButton1Click: Image='http://www.roblox.com/Asset?id=151205813'})})})local A,B=a('Frame',
connect(function()return ad(10)end)c.Body.ScrollBar.Up.MouseButton1Down:connect( 'ScrollArea',{Parent=z,BackgroundTransparency=1,Position=UDim2.new(0,0,0,23),
function()ad(10)return ai()end)c.Body.ScrollBar.Up.MouseButton1Up:connect(X)c. Size=UDim2.new(1,0,1,-46),a('ImageButton','Handle',{BackgroundColor3=Color3.new(
Body.ScrollBar.Down.MouseButton1Down:connect(function()ad(-10)return aj()end)c. 0,0,0),BackgroundTransparency=0.5,Position=UDim2.new(0,0,0.2,0),Size=UDim2.new(0
Body.ScrollBar.Down.MouseButton1Up:connect(X)local ak ak=function(al,am)if not T ,20,0,40),a('ImageLabel','ImageLabel',{BackgroundTransparency=1,Position=UDim2.
then return end local an,ao,ap=(Vector2.new(al,am-T)).Y,1-(c.Body.TextBox. new(0,0,0.5,-8),Rotation=180,Size=UDim2.new(1,0,0,16),Image=
AbsoluteSize.Y/K.AbsoluteSize.Y),F.AbsoluteSize.Y-F.Handle.AbsoluteSize.Y local 'http://www.roblox.com/Asset?id=151205881'})})}),a('Frame','TextBox',{Parent=w,
aq=math.max(math.min(an,ap),0-ap)local ar,as=aq/ap,(ao*K.AbsoluteSize.Y)local at BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.6,Position=UDim2.
=as*ar if k==g then n=U-at elseif k==h then o=U-at end end F.Handle. new(0,2,0,26),Size=UDim2.new(1,-4,1,-28),ClipsDescendants=true})local C,D,E,F,G,
MouseButton1Down:connect(function(al,am)T=Vector2.new(al,am)if k==g then U=n H,I,J,K,L,M,N=a('Frame','TextHolder',{Parent=B,BackgroundTransparency=1,Position
elseif k==h then U=o end end)F.Handle.MouseButton1Up:connect(X)local al al= =UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0)}),a('ImageButton','OptionsButton',{
function(am,an,ao)local ap,aq=am.AbsolutePosition,am.AbsoluteSize if an<ap.X or Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=
an>ap.X+aq.X or ao<ap.y or ao>ap.y+aq.y then return false end return true end UDim2.new(0,200,0,2),Size=UDim2.new(0,20,0,20),a('ImageLabel','ImageLabel',{
local am am=function(an)if an<10 then return'0'..tostring(an)else return an end BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0),
end local an,ao='%s:%s:%s',nil ao=function(ap)local aq=ap-os.time()+math.floor( Rotation=0,Image='http://www.roblox.com/Asset?id=152093917'})}),a('Frame',
tick())local ar=aq%86400 local as=math.floor(ar/3600)ar=ar-(as*3600)local at= 'TitleBar',{Parent=c,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=
math.floor(ar/60)ar=ar-(at*60)local au,av,aw=am(as),am(at),am(ar)return an: 0.5,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,0,20),a('ImageButton',
format(au,av,aw)end y.ErrorToggleButton.MouseButton1Down:connect(function()p=not 'CloseButton',{BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,
p y.ErrorToggleButton.CheckFrame.Visible=p ag()return ac()end)y. Position=UDim2.new(1,-20,0,0),Size=UDim2.new(0,20,0,20),a('ImageLabel',{
WarningToggleButton.MouseButton1Down:connect(function()q=not q y. BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=UDim2.new(0
WarningToggleButton.CheckFrame.Visible=q ag()return ac()end)y.InfoToggleButton. ,3,0,3),Size=UDim2.new(0,14,0,14),Image=
MouseButton1Down:connect(function()r=not r y.InfoToggleButton.CheckFrame.Visible 'http://www.roblox.com/Asset?id=151205852'})}),a('TextButton','TextButton',{
=r ag()return ac()end)y.OutputToggleButton.MouseButton1Down:connect(function()s= BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.
not s y.OutputToggleButton.CheckFrame.Visible=s ag()return ac()end)y. new(0,0,0,0),Size=UDim2.new(1,-23,1,0),Text=''}),a('TextLabel','TitleText',{
WordWrapToggleButton.MouseButton1Down:connect(function()t=not t y. BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,185,0,20),
WordWrapToggleButton.CheckFrame.Visible=t ag()return ac()end)local ap ap= Font='SourceSansBold',FontSize=Enum.FontSize.Size18,TextColor3=Color3.new(1,1,1)
function(aq,ar,as)l[#l+1]={Message=aq,Time=ao(as),Type=ar}while#l>i do table. ,Text='Roblox Developer Console',TextYAlignment=Enum.TextYAlignment.Top})}),nil,
remove(l,1)end ag()return ac()end local aq aq=function(ar,as,at)m[#m+1]={Message nil,nil,nil,nil,nil,false,false,nil N=function()F=nil G=nil H=nil I=nil J=nil K=
=ar,Time=ao(at),Type=as}while#m>i do table.remove(m,1)end ag()return ac()end c. nil L=false M=false end local O O=function(P,Q)if not F then return end local R=
Body.LocalConsole.MouseButton1Click:connect(function()if k==h then k=g local ar, Vector2.new(P,Q-F)c.Position=UDim2.new(0,G.X+R.X,0,G.Y+R.Y)end E.TextButton.
as=c.Body.LocalConsole,c.Body.ServerConsole ar.Size=UDim2.new(0,90,0,20)as.Size= MouseButton1Down:connect(function(P,Q)F=Vector2.new(P,Q)G=c.AbsolutePosition end
UDim2.new(0,90,0,17)ar.BackgroundTransparency=0.6 as.BackgroundTransparency=0.8 )E.TextButton.MouseButton1Up:connect(N)local P P=function(Q,R)if not H then
if game:FindFirstChild'Players'and game.Players['LocalPlayer']then local at=game return end local S=Vector2.new(Q,R-H)c.Size=UDim2.new(0,math.max(I.X+S.X,j.X),0,
.Players.LocalPlayer:GetMouse()Y(at.X,at.Y)aa(at.X,at.Y)ak(at.X,at.Y)end ag() math.max(I.Y+S.Y,j.Y))end c.Body.ResizeButton.MouseButton1Down:connect(function(
return ac()end end)c.Body.LocalConsole.MouseButton1Up:connect(X)local ar=false c Q,R)H=Vector2.new(Q,R)I=c.AbsoluteSize end)c.Body.ResizeButton.MouseButton1Up:
.Body.ServerConsole.MouseButton1Click:connect(function()if not ar then ar=true connect(N)E.CloseButton.MouseButton1Down:connect(function()c.Visible=false end)c
game:GetService'LogService':RequestServerOutput()end if k==g then k=h local as, .TitleBar.CloseButton.MouseButton1Up:connect(N)local Q,R,S=true,false,nil S=
at=c.Body.LocalConsole,c.Body.ServerConsole at.Size=UDim2.new(0,90,0,20)as.Size= function()if R then return end R=true repeat v=v+(function()if Q then return-1
UDim2.new(0,90,0,17)at.BackgroundTransparency=0.6 as.BackgroundTransparency=0.8 else return 1 end end)()local T=v/5 local U=T*T*(3-(2*T))D.ImageLabel.Rotation=U
if game:FindFirstChild'Players'and game.Players['LocalPlayer']then local au=game *5*9 y.Position=UDim2.new(0,(U*5*50)-250,0,4)wait()if(v<=0 and Q)or(v>=5 and not
.Players.LocalPlayer:GetMouse()Y(au.X,au.Y)aa(au.X,au.Y)ak(au.X,au.Y)end ag() Q)then R=false end until not R end D.MouseButton1Down:connect(function()Q=not Q
return ac()end end)c.Body.ServerConsole.MouseButton1Up:connect(X)if game: return S()end)local T T=function()if k==g then n=math.min(math.max(n,0),u-c.Body
FindFirstChild'Players'and game.Players['LocalPlayer']then local as=game.Players .TextBox.AbsoluteSize.Y)C.Size=UDim2.new(1,0,0,u)elseif k==h then o=math.min(
.LocalPlayer:GetMouse()as.Move:connect(function()if not c.Visible then return math.max(o,0),u-c.Body.TextBox.AbsoluteSize.Y)C.Size=UDim2.new(1,0,0,u)end local
end local at=game.Players.LocalPlayer:GetMouse()Y(at.X,at.Y)aa(at.X,at.Y)ak(at.X U=c.Body.TextBox.AbsoluteSize.Y/C.AbsoluteSize.Y if U>=1 then c.Body.ScrollBar.
,at.Y)ag()return ac()end)as.Button1Up:connect(X)as.WheelForward:connect(function Visible=false c.Body.TextBox.Size=UDim2.new(1,-4,1,-28)if k==g or k==h then C.
()if not c.Visible then return end if al(c,as.X,as.Y)then return ad(10)end end) Position=UDim2.new(0,0,1,0-u)end else c.Body.ScrollBar.Visible=true c.Body.
as.WheelBackward:connect(function()if not c.Visible then return end if al(c,as.X TextBox.Size=UDim2.new(1,-25,1,-28)local V,W=1-U,nil if k==g then W=n/C.
,as.Y)then return ad(-10)end end)end F.Handle.MouseButton1Down:connect(function( AbsoluteSize.Y elseif k==h then W=o/C.AbsoluteSize.Y end local X,Y=math.max(0,V-
)return ac()end)local as=game:GetService'LogService':GetLogHistory()for at=1,#as W),math.max(A.AbsoluteSize.Y*U,21)local Z=Y/A.AbsoluteSize.Y local _=(1-Z)/(1-U)
do ap(as[at].message,as[at].messageType,as[at].timestamp)end local at=game: local aa=X*_ local ab=math.min(A.AbsoluteSize.Y*aa,A.AbsoluteSize.Y-Y)A.Handle.
GetService'LogService'at.MessageOut:connect(function(au,av)return ap(au,av,os. Size=UDim2.new(1,0,0,Y)A.Handle.Position=UDim2.new(0,0,0,ab)C.Position=UDim2.
time())end)at.ServerMessageOut:connect(aq)return at end local aa=false d. new(0,0,1,0-u+(function()if k==g then return n elseif k==h then return o end end
OnInvoke=function()if aa then return end aa=true f()c.Visible=not c.Visible aa= )())end end local aa aa=function(ab)if k==g then n=n+ab elseif k==h then o=o+ab
false end end return T()end local ab ab=function()local U,V=C:GetChildren(),nil if k==g
then V=l elseif k==h then V=m end local W=0 for X=1,#U do U[X].Visible=false end
for X=1,#V do local Y,Z=nil,false if X>#U then Y=a('TextLabel','Message',{Parent
=C,BackgroundTransparency=1,TextXAlignment='Left',Size=UDim2.new(1,0,0,14),
FontSize='Size10',ZIndex=1})Z=true else Y=U[X]end if(s or V[X].Type~=Enum.
MessageType.MessageOutput)and(r or V[X].Type~=Enum.MessageType.MessageInfo)and(q
or V[X].Type~=Enum.MessageType.MessageWarning)and(p or V[X].Type~=Enum.
MessageType.MessageError)then do Y.TextWrapped=t Y.Size=UDim2.new(0.98,0,0,2000)
Y.Parent=c Y.Text=tostring(V[X].Time)..' -- '..tostring(V[X].Message)Y.Size=
UDim2.new(0.98,0,0,Y.TextBounds.Y)Y.Position=UDim2.new(0,5,0,W)Y.Parent=C W=W+Y.
TextBounds.Y end if Z then if(k==g and n>0)or(k==h and o>0)then aa(Y.TextBounds.
Y)end end Y.Visible=true Y.TextColor3=Color3.new((function()if V[X].Type==Enum.
MessageType.MessageError then return 1,0,0 elseif V[X].Type==Enum.MessageType.
MessageInfo then return 0.4,0.5,1 elseif V[X].Type==Enum.MessageType.
MessageWarning then return 1,0.6,0.4 else return 1,1,1 end end)())end end u=W
end local U,V=false,nil V=function()if U then return end Delay(0.1,function()U=
false return ab()end)U=true end local W,X=0,nil X=function()if L then return end
L=true wait(0.6)W=W+1 while L and W<2 do wait()aa(12)end W=W-1 end local Y Y=
function()if M then return end M=true wait(0.6)W=W+1 while M and W<2 do wait()
aa(-12)end W=W-1 end c.Body.ScrollBar.Up.MouseButton1Click:connect(function()
return aa(10)end)c.Body.ScrollBar.Up.MouseButton1Down:connect(function()aa(10)
return X()end)c.Body.ScrollBar.Up.MouseButton1Up:connect(N)c.Body.ScrollBar.Down
.MouseButton1Down:connect(function()aa(-10)return Y()end)c.Body.ScrollBar.Down.
MouseButton1Up:connect(N)local Z Z=function(_,ac)if not J then return end local
ad,ae,af=(Vector2.new(_,ac-J)).Y,1-(c.Body.TextBox.AbsoluteSize.Y/C.AbsoluteSize
.Y),A.AbsoluteSize.Y-A.Handle.AbsoluteSize.Y local ag=math.max(math.min(ad,af),0
-af)local ah,ai=ag/af,(ae*C.AbsoluteSize.Y)local aj=ai*ah if k==g then n=K-aj
elseif k==h then o=K-aj end end A.Handle.MouseButton1Down:connect(function(ac,ad
)J=Vector2.new(ac,ad)if k==g then K=n elseif k==h then K=o end end)A.Handle.
MouseButton1Up:connect(N)local ac ac=function(ad,ae,af)local ag,ah=ad.
AbsolutePosition,ad.AbsoluteSize if ae<ag.X or ae>ag.X+ah.X or af<ag.y or af>ag.
y+ah.y then return false end return true end local ad ad=function(ae)if ae<10
then return'0'..tostring(ae)else return ae end end local ae,af='%s:%s:%s',nil af
=function(ag)local ah=ag-os.time()+math.floor(tick())local ai=ah%86400 local aj=
math.floor(ai/3600)ai=ai-(aj*3600)local _=math.floor(ai/60)ai=ai-(_*60)local ak,
al,am=ad(aj),ad(_),ad(ai)return ae:format(ak,al,am)end y.ErrorToggleButton.
MouseButton1Down:connect(function()p=not p y.ErrorToggleButton.CheckFrame.
Visible=p V()return T()end)y.WarningToggleButton.MouseButton1Down:connect(
function()q=not q y.WarningToggleButton.CheckFrame.Visible=q V()return T()end)y.
InfoToggleButton.MouseButton1Down:connect(function()r=not r y.InfoToggleButton.
CheckFrame.Visible=r V()return T()end)y.OutputToggleButton.MouseButton1Down:
connect(function()s=not s y.OutputToggleButton.CheckFrame.Visible=s V()return T(
)end)y.WordWrapToggleButton.MouseButton1Down:connect(function()t=not t y.
WordWrapToggleButton.CheckFrame.Visible=t V()return T()end)local ag ag=function(
ah,ai,aj)l[#l+1]={Message=ah,Time=af(aj),Type=ai}while#l>i do table.remove(l,1)
end V()return T()end local ah ah=function(ai,aj,ak)m[#m+1]={Message=ai,Time=af(
ak),Type=aj}while#m>i do table.remove(m,1)end V()return T()end c.Body.
LocalConsole.MouseButton1Click:connect(function()if k==h then k=g local ai,aj=c.
Body.LocalConsole,c.Body.ServerConsole ai.Size=UDim2.new(0,90,0,20)aj.Size=UDim2
.new(0,90,0,17)ai.BackgroundTransparency=0.6 aj.BackgroundTransparency=0.8 if
game:FindFirstChild'Players'and game.Players['LocalPlayer']then local ak=game.
Players.LocalPlayer:GetMouse()O(ak.X,ak.Y)P(ak.X,ak.Y)Z(ak.X,ak.Y)end V()return
T()end end)c.Body.LocalConsole.MouseButton1Up:connect(N)local ai=false c.Body.
ServerConsole.MouseButton1Click:connect(function()if not ai then ai=true game:
GetService'LogService':RequestServerOutput()end if k==g then k=h local aj,ak=c.
Body.LocalConsole,c.Body.ServerConsole ak.Size=UDim2.new(0,90,0,20)aj.Size=UDim2
.new(0,90,0,17)ak.BackgroundTransparency=0.6 aj.BackgroundTransparency=0.8 if
game:FindFirstChild'Players'and game.Players['LocalPlayer']then local al=game.
Players.LocalPlayer:GetMouse()O(al.X,al.Y)P(al.X,al.Y)Z(al.X,al.Y)end V()return
T()end end)c.Body.ServerConsole.MouseButton1Up:connect(N)if game:FindFirstChild
'Players'and game.Players['LocalPlayer']then local aj=game.Players.LocalPlayer:
GetMouse()aj.Move:connect(function()if not c.Visible then return end local ak=
game.Players.LocalPlayer:GetMouse()O(ak.X,ak.Y)P(ak.X,ak.Y)Z(ak.X,ak.Y)V()return
T()end)aj.Button1Up:connect(N)aj.WheelForward:connect(function()if not c.Visible
then return end if ac(c,aj.X,aj.Y)then return aa(10)end end)aj.WheelBackward:
connect(function()if not c.Visible then return end if ac(c,aj.X,aj.Y)then return
aa(-10)end end)end A.Handle.MouseButton1Down:connect(function()return T()end)
local aj=game:GetService'LogService':GetLogHistory()for ak=1,#aj do ag(aj[ak].
message,aj[ak].messageType,aj[ak].timestamp)end local ak=game:GetService
'LogService'ak.MessageOut:connect(function(al,am)return ag(al,am,os.time())end)
ak.ServerMessageOut:connect(ah)return ak end local aa=false d.OnInvoke=function(
)if aa then return end aa=true f()c.Visible=not c.Visible aa=false end

View File

@ -4,22 +4,22 @@ g,h in pairs(d)do if type(g)=='string'then if g=='Parent'then f=h else e[g]=h
end elseif type(g)=='number'and type(h)=='userdata'then h.Parent=e end end e. end elseif type(g)=='number'and type(h)=='userdata'then h.Parent=e end end e.
Parent=f return e end local b,c,d=5,5,nil d=function(e,f)local g=e: Parent=f return e end local b,c,d=5,5,nil d=function(e,f)local g=e:
findFirstChild(f)if g then return g end while true do g=e.ChildAdded:wait()if g. findFirstChild(f)if g then return g end while true do g=e.ChildAdded:wait()if g.
Name==f then return g end end end local e=script.Parent local f,g,h,i=d(e, Name==f then return g end end end local e=script.Parent local f,g,h,i,j=d(e,
'Humanoid'),d(e,'Torso'),e:FindFirstChild'PlayerStats',Instance.new'BoolValue'i. 'Humanoid'),d(e,'Torso'),e:FindFirstChild'PlayerStats',a('BoolValue',{Name=
Name='InCharTag'local j=Instance.new'BoolValue'j.Name='RobloxBuildTool'if not(h 'InCharTag'}),a('BoolValue',{Name='RobloxBuildTool'})if not(h~=nil)then h=a(
~=nil)then h=a('Configuration','PlayerStats',{Parent=e})end local k=h: 'Configuration','PlayerStats',{Parent=e})end local k=h:FindFirstChild'MaxHealth'
FindFirstChild'MaxHealth'if not(k~=nil)then k=a('NumberValue','MaxHealth',{Value if not(k~=nil)then k=a('NumberValue','MaxHealth',{Value=100,Parent=h})end f.
=100,Parent=h})end f.MaxHealth=k.Value f.Health=k.Value local l l=function()f. MaxHealth=k.Value f.Health=k.Value local l l=function()f.MaxHealth=k.Value f.
MaxHealth=k.Value f.Health=k.Value end k.Changed:connect(l)local m=game.Players: Health=k.Value end k.Changed:connect(l)local m=game.Players:
GetPlayerFromCharacter(script.Parent)local n=m.PlayerGui:FindFirstChild GetPlayerFromCharacter(script.Parent)local n=m.PlayerGui:FindFirstChild
'DamageOverTimeGui'if not(n~=nil)then n=a('BillboardGui','DamageOverTimeGui',{ 'DamageOverTimeGui'if not(n~=nil)then n=a('BillboardGui','DamageOverTimeGui',{
Parent=m.PlayerGui,Adornee=script.Parent:FindFirstChild'Head',Active=true,size= Parent=m.PlayerGui,Adornee=script.Parent:FindFirstChild'Head',Active=true,size=
UDim2.new(b,0,c,0),StudsOffset=Vector3.new(0,2,0)})end print UDim2.new(b,0,c,0),StudsOffset=Vector3.new(0,2,0)})end print
'newHealth declarations finished'local o o=function(p)local q=a('TextLabel',{ 'newHealth declarations finished'local o o=function(p)local q=a('TextLabel',{
Text=tostring(p),TextColor3=(function()if p>0 then return Color3.new(0,1,0)else Text=tostring(p),TextColor3=Color3.new((function()if p>0 then return 0,1,0 else
return Color3.new(1,0,1)end end)(),size=UDim2.new(1,0,1,0),Active=true,FontSize= return 1,0,1 end end)()),size=UDim2.new(1,0,1,0),Active=true,FontSize=6,
6,BackgroundTransparency=1,Parent=n})for r=1,10 do wait(0.1)q.TextTransparency=r BackgroundTransparency=1,Parent=n})for r=1,10 do wait(0.1)q.TextTransparency=r/
/10 q.Position=UDim2.new(0,0,0,-r*5)q.FontSize=6-r*0.6 end return q:remove()end 10 q.Position=UDim2.new(0,0,0,-r*5)q.FontSize=6-r*0.6 end q:remove()return q end
local p p=function()if k.Value>=0 then f.MaxHealth=k.Value print(f.MaxHealth)if local p p=function()if k.Value>=0 then f.MaxHealth=k.Value print(f.MaxHealth)if
f.Health>f.MaxHealth then f.Health=f.MaxHealth end end end k.Changed:connect(p) f.Health>f.MaxHealth then f.Health=f.MaxHealth end end end k.Changed:connect(p)
local q=a('Fire','FireEffect',{Heat=0.1,Size=3,Enabled=false})while true do local q=a('Fire','FireEffect',{Heat=0.1,Size=3,Enabled=false})while true do

View File

@ -60,18 +60,18 @@ DialogTone.Friendly then J.BackgroundColor3=Color3.new(0,0.5019607843137255,0)J.
Number.TextColor3=Color3.new(1,1,1)elseif K==Enum.DialogTone.Enemy then J. Number.TextColor3=Color3.new(1,1,1)elseif K==Enum.DialogTone.Enemy then J.
BackgroundColor3=Color3.new(0.8,0,0)J.Number.TextColor3=Color3.new(1,1,1)end end BackgroundColor3=Color3.new(0.8,0,0)J.Number.TextColor3=Color3.new(1,1,1)end end
local J J=function()if j then j:Remove()j=nil end local K=h h=nil if K and K. local J J=function()if j then j:Remove()j=nil end local K=h h=nil if K and K.
InUse then local L=u:Clone()L.archivable=false L.Disabled=false L.Parent=K end InUse then do local L=u:Clone()L.archivable=false L.Disabled=false L.Parent=K
for L,M in pairs(v)do if L and M then M.Enabled=not L.InUse end end i=nil end end end for L,M in pairs(v)do if L and M then M.Enabled=not L.InUse end end i=
local L L=function()print'Wander'd.Visible=false J()return G(m,n)end local M M= nil end local L L=function()print'Wander'd.Visible=false J()return G(m,n)end
function()print'Timeout'd.Visible=false J()return G(o,p)end local N N=function() local M M=function()print'Timeout'd.Visible=false J()return G(o,p)end local N N=
print'Done'return J()end local O O=function(P)if string.len(P)==0 then return function()print'Done'return J()end local O O=function(P)if string.len(P)==0 then
'...'else return P end end local P P=function(Q)if j then j:Remove()j=nil end j= return'...'else return P end end local P P=function(Q)if j then j:Remove()j=nil
t:Clone()j.archivable=false j.Disabled=false j.Parent=Q return j end local Q Q= end j=t:Clone()j.archivable=false j.Disabled=false j.Parent=Q return j end local
function(R,S)if not h then return end i=R local T={}for U,V in pairs(S)do if V: Q Q=function(R,S)if not h then return end i=R local T={}for U,V in pairs(S)do if
IsA'DialogChoice'then table.insert(T,V)end end table.sort(T,function(W,X)return V:IsA'DialogChoice'then table.insert(T,V)end end table.sort(T,function(W,X)
W.Name<X.Name end)if#T==0 then N()return end local W,X=1,0 g={}for Y,Z in pairs( return W.Name<X.Name end)if#T==0 then N()return end local W,X=1,0 g={}for Y,Z in
e)do Z.Visible=false end for _,aa in pairs(T)do if W<=#e then e[W].Size=UDim2. pairs(e)do Z.Visible=false end for _,aa in pairs(T)do if W<=#e then e[W].Size=
new(1,0,0,72)e[W].UserPrompt.Text=aa.UserDialog local ab=math.ceil(e[W]. UDim2.new(1,0,0,72)e[W].UserPrompt.Text=aa.UserDialog local ab=math.ceil(e[W].
UserPrompt.TextBounds.Y/24)*24 e[W].Position=UDim2.new(0,0,0,X)e[W].Size=UDim2. UserPrompt.TextBounds.Y/24)*24 e[W].Position=UDim2.new(0,0,0,X)e[W].Size=UDim2.
new(1,0,0,ab)e[W].Visible=true g[e[W]]=aa X=X+ab W=W+1 end end f.Position=UDim2. new(1,0,0,ab)e[W].Visible=true g[e[W]]=aa X=X+ab W=W+1 end end f.Position=UDim2.
new(0,0,0,X)f.Number.Text=W..')'d.Size=UDim2.new(0,350,0,X+24+32)d.Position= new(0,0,0,X)f.Number.Text=W..')'d.Size=UDim2.new(0,350,0,X+24+32)d.Position=

View File

@ -364,8 +364,8 @@ IsA'ScreenGui'or n:IsA'BillboardGui'then return n end n=n.Parent end return nil
end b.AutoTruncateTextObject=function(n)local o,p=n.Text,n:Clone()p.Name='Full' end b.AutoTruncateTextObject=function(n)local o,p=n.Text,n:Clone()p.Name='Full'
..n.Name p.BorderSizePixel=0 p.BackgroundTransparency=0 p.Text=o p. ..n.Name p.BorderSizePixel=0 p.BackgroundTransparency=0 p.Text=o p.
TextXAlignment=Enum.TextXAlignment.Center p.Position=UDim2.new(0,-3,0,0)p.Size= TextXAlignment=Enum.TextXAlignment.Center p.Position=UDim2.new(0,-3,0,0)p.Size=
UDim2.new(0,100,1,0)p.Visible=false p.Parent=n local q,r,s,t t=function()if k(n UDim2.new(0,100,1,0)p.Visible=false p.Parent=n local q,r,s,t t=function()if k(n)
==nil)then return end n.Text=o if n.TextFits then if r then r:disconnect()r=nil ==nil then return end n.Text=o if n.TextFits then if r then r:disconnect()r=nil
end if s then s:disconnect()s=nil end else local u=string.len(o)n.Text=o..'~' end if s then s:disconnect()s=nil end else local u=string.len(o)n.Text=o..'~'
local v=i(0,u,function(v)if v==0 then n.Text='~'else n.Text=string.sub(o,1,v).. local v=i(0,u,function(v)if v==0 then n.Text='~'else n.Text=string.sub(o,1,v)..
'~'end return n.TextFits end)q=string.sub(o,1,v)..'~'n.Text=q if not p.TextFits '~'end return n.TextFits end)q=string.sub(o,1,v)..'~'n.Text=q if not p.TextFits
@ -537,10 +537,10 @@ Value=0}),a('StringValue','AssetName',{Value=''})})local Z=a('TextButton',
'Button',{Text='',Style=Enum.ButtonStyle.RobloxButton,Position=UDim2.new(0.025,0 'Button',{Text='',Style=Enum.ButtonStyle.RobloxButton,Position=UDim2.new(0.025,0
,0.025,0),Size=UDim2.new(0.95,0,0.95,0),ZIndex=6,Parent=Y})local _=a( ,0.025,0),Size=UDim2.new(0.95,0,0.95,0),ZIndex=6,Parent=Y})local _=a(
'ImageLabel','ButtonImage',{Image='',Position=UDim2.new(0,-7,0,-7),Size=UDim2. 'ImageLabel','ButtonImage',{Image='',Position=UDim2.new(0,-7,0,-7),Size=UDim2.
new(1,14,1,14),BackgroundTransparency=1,ZIndex=7,Parent=Z})local ac=_:clone()ac. new(1,14,1,14),BackgroundTransparency=1,ZIndex=7,Parent=Z})do local ac=_:clone()
Name='ConfigIcon'ac.Visible=false ac.Position=UDim2.new(1,-23,1,-24)ac.Size= ac.Name='ConfigIcon'ac.Visible=false ac.Position=UDim2.new(1,-23,1,-24)ac.Size=
UDim2.new(0,16,0,16)ac.Image=''ac.ZIndex=6 ac.Parent=Y return Y end local ac ac= UDim2.new(0,16,0,16)ac.Image=''ac.ZIndex=6 ac.Parent=Y end return Y end local ac
function(Y)if Y:FindFirstChild'AssetId'then delay(0,function()game:GetService ac=function(Y)if Y:FindFirstChild'AssetId'then delay(0,function()game:GetService
'ContentProvider':Preload(L..tostring(Y.AssetId.Value))A.SetPanel.ItemPreview. 'ContentProvider':Preload(L..tostring(Y.AssetId.Value))A.SetPanel.ItemPreview.
LargePreview.Image='LargeThumbnailUrl'..tostring(Y.AssetId.Value)end)end if Y: LargePreview.Image='LargeThumbnailUrl'..tostring(Y.AssetId.Value)end)end if Y:
FindFirstChild'AssetName'then A.SetPanel.ItemPreview.TextPanel.RolloverText.Text FindFirstChild'AssetName'then A.SetPanel.ItemPreview.TextPanel.RolloverText.Text
@ -784,38 +784,38 @@ CreateTrueScrollingFrame()ar.Size=UDim2.new(1,0,1,0)ar.BackgroundColor3=Color3.
new(0.2823529411764706,0.2823529411764706,0.2823529411764706)ar.BorderColor3= new(0.2823529411764706,0.2823529411764706,0.2823529411764706)ar.BorderColor3=
Color3.new(0,0,0)ar.Active=true ar.Parent=aq as.Parent=ag as.BackgroundColor3= Color3.new(0,0,0)ar.Active=true ar.Parent=aq as.Parent=ag as.BackgroundColor3=
Color3.new(0.2823529411764706,0.2823529411764706,0.2823529411764706)as. Color3.new(0.2823529411764706,0.2823529411764706,0.2823529411764706)as.
BorderSizePixel=0 as.BackgroundTransparency=0 as.Position=UDim2.new(1,-21,1,1)if BorderSizePixel=0 as.BackgroundTransparency=0 as.Position=UDim2.new(1,-21,1,1)as
ab then as.Size=UDim2.new(0,21,ab.Y.Scale,ab.Y.Offset)else as.Size=UDim2.new(0, .Size=UDim2.new(0,21,(function()if ab then return ab.Y.Scale,ab.Y.Offset else
21,0,400)end as:FindFirstChild'ScrollDownButton'.Position=UDim2.new(0,0,1,-20)a( return 0,400 end end)())as:FindFirstChild'ScrollDownButton'.Position=UDim2.new(0
'Frame','FakeLine',{BorderSizePixel=0,BackgroundColor3=Color3.new(0,0,0),Size= ,0,1,-20)a('Frame','FakeLine',{BorderSizePixel=0,BackgroundColor3=Color3.new(0,0
UDim2.new(0,1,1,1),Position=UDim2.new(1,0,0,0),Parent=as})at=a('TextButton', ,0),Size=UDim2.new(0,1,1,1),Position=UDim2.new(1,0,0,0),Parent=as})at=a(
'VerticalDragger',{ZIndex=2,AutoButtonColor=false,BackgroundColor3=Color3.new( 'TextButton','VerticalDragger',{ZIndex=2,AutoButtonColor=false,BackgroundColor3=
0.19607843137254902,0.19607843137254902,0.19607843137254902),BorderColor3=Color3 Color3.new(0.19607843137254902,0.19607843137254902,0.19607843137254902),
.new(0,0,0),Size=UDim2.new(1,20,0,20),Position=UDim2.new(0,0,1,0),Active=true, BorderColor3=Color3.new(0,0,0),Size=UDim2.new(1,20,0,20),Position=UDim2.new(0,0,
Text='',Parent=aq})local au=a('Frame','ScrubFrame',{BackgroundColor3=Color3.new( 1,0),Active=true,Text='',Parent=aq})local au=a('Frame','ScrubFrame',{
1,1,1),BorderSizePixel=0,Position=UDim2.new(0.5,-5,0.5,0),Size=UDim2.new(0,10,0, BackgroundColor3=Color3.new(1,1,1),BorderSizePixel=0,Position=UDim2.new(0.5,-5,
1),ZIndex=5,Parent=at})local p=au:clone()p.Position=UDim2.new(0.5,-5,0.5,-2)p. 0.5,0),Size=UDim2.new(0,10,0,1),ZIndex=5,Parent=at})local p=au:clone()p.Position
Parent=at local q=au:clone()q.Position=UDim2.new(0.5,-5,0.5,2)q.Parent=at local =UDim2.new(0.5,-5,0.5,-2)p.Parent=at local q=au:clone()q.Position=UDim2.new(0.5,
r,s,t=a('TextButton','AreaSoak',{Size=UDim2.new(1,0,1,0),BackgroundTransparency= -5,0.5,2)q.Parent=at local r,s,t=a('TextButton','AreaSoak',{Size=UDim2.new(1,0,1
1,BorderSizePixel=0,Text='',ZIndex=10,Visible=false,Active=true,Parent=d(ae)}), ,0),BackgroundTransparency=1,BorderSizePixel=0,Text='',ZIndex=10,Visible=false,
false,nil at.MouseEnter:connect(function()at.BackgroundColor3=Color3.new( Active=true,Parent=d(ae)}),false,nil at.MouseEnter:connect(function()at.
0.23529411764705882,0.23529411764705882,0.23529411764705882)end)at.MouseLeave: BackgroundColor3=Color3.new(0.23529411764705882,0.23529411764705882,
connect(function()at.BackgroundColor3=Color3.new(0.19607843137254902, 0.23529411764705882)end)at.MouseLeave:connect(function()at.BackgroundColor3=
0.19607843137254902,0.19607843137254902)end)at.MouseButton1Down:connect(function Color3.new(0.19607843137254902,0.19607843137254902,0.19607843137254902)end)at.
(u,v)s=true r.Visible=true t=v end)r.MouseButton1Up:connect(function()s=false r. MouseButton1Down:connect(function(u,v)s=true r.Visible=true t=v end)r.
Visible=false end)r.MouseMoved:connect(function(u,v)if not s then return end MouseButton1Up:connect(function()s=false r.Visible=false end)r.MouseMoved:
local w=v-t if not as.ScrollDownButton.Visible and w>0 then return end if(aq. connect(function(u,v)if not s then return end local w=v-t if not as.
Size.Y.Offset+w)<150 then aq.Size=UDim2.new(aq.Size.X.Scale,aq.Size.X.Offset,aq. ScrollDownButton.Visible and w>0 then return end if(aq.Size.Y.Offset+w)<150 then
Size.Y.Scale,150)as.Size=UDim2.new(0,21,0,150)return end t=v if aq.Size.Y.Offset aq.Size=UDim2.new(aq.Size.X.Scale,aq.Size.X.Offset,aq.Size.Y.Scale,150)as.Size=
+w>=0 then aq.Size=UDim2.new(aq.Size.X.Scale,aq.Size.X.Offset,aq.Size.Y.Scale,aq UDim2.new(0,21,0,150)return end t=v if aq.Size.Y.Offset+w>=0 then aq.Size=UDim2.
.Size.Y.Offset+w)as.Size=UDim2.new(0,21,0,as.Size.Y.Offset+w)end end)end local new(aq.Size.X.Scale,aq.Size.X.Offset,aq.Size.Y.Scale,aq.Size.Y.Offset+w)as.Size=
au au=function()am.Visible=not am.Visible if ad then ar.Visible=not ar.Visible UDim2.new(0,21,0,as.Size.Y.Offset+w)end end)end local au au=function()am.Visible
at.Visible=not at.Visible as.Visible=not as.Visible else aq.Visible=not aq. =not am.Visible if ad then ar.Visible=not ar.Visible at.Visible=not at.Visible
Visible end if am.Visible then al.Text='+'else al.Text='-'end end an. as.Visible=not as.Visible else aq.Visible=not aq.Visible end if am.Visible then
MouseButton1Click:connect(function()return au()end)al.MouseButton1Click:connect( al.Text='+'else al.Text='-'end end an.MouseButton1Click:connect(function()return
function()return au()end)if ad then return ag,ar,ak,ai else return ag,aq,ak,ai au()end)al.MouseButton1Click:connect(function()return au()end)if ad then return
end end b.Help=function(aa)if aa=='CreatePropertyDropDownMenu'or aa==b. ag,ar,ak,ai else return ag,aq,ak,ai end end b.Help=function(aa)if aa==
CreatePropertyDropDownMenu then return 'CreatePropertyDropDownMenu'or aa==b.CreatePropertyDropDownMenu then return
[[Function CreatePropertyDropDownMenu. Arguments: (instance, propertyName, enumType). Side effect: returns a container with a drop-down-box that is linked to the 'property' field of 'instance' which is of type 'enumType']] [[Function CreatePropertyDropDownMenu. Arguments: (instance, propertyName, enumType). Side effect: returns a container with a drop-down-box that is linked to the 'property' field of 'instance' which is of type 'enumType']]
elseif aa=='CreateDropDownMenu'or aa==b.CreateDropDownMenu then return elseif aa=='CreateDropDownMenu'or aa==b.CreateDropDownMenu then return
[[Function CreateDropDownMenu. Arguments: (items, onItemSelected). Side effect: Returns 2 results, a container to the gui object and a 'updateSelection' function for external updating. The container is a drop-down-box created around a list of items]] [[Function CreateDropDownMenu. Arguments: (items, onItemSelected). Side effect: Returns 2 results, a container to the gui object and a 'updateSelection' function for external updating. The container is a drop-down-box created around a list of items]]

View File

@ -33,30 +33,30 @@ TweenPosition(UDim2.new(0,0,1,400),Enum.EasingDirection.InOut,Enum.EasingStyle.
Sine,h,true)end delay(h,function()E[F].Visible=false end)end end end local z z= Sine,h,true)end delay(h,function()E[F].Visible=false end)end end end local z z=
function()local A=game.Players.LocalPlayer if A and A.Character and A.Character: function()local A=game.Players.LocalPlayer if A and A.Character and A.Character:
FindFirstChild'Humanoid'then A.Character.Humanoid.Health=0 end end local A A= FindFirstChild'Humanoid'then A.Character.Humanoid.Health=0 end end local A A=
function(B,C,D,E,F)local G=Instance.new'TextButton'G.Font=Enum.Font.Arial G. function(B,C,D,E,F)return a('TextButton',{Font=Enum.Font.Arial,FontSize=D,Size=E
FontSize=D G.Size=E G.Position=F G.Style=C G.TextColor3=Color3.new(1,1,1)G.Text= ,Position=F,Style=C,TextColor3=Color3.new(1,1,1),Text=B})end local B B=function(
B return G end local B B=function(C,D,E,F)if#D<1 then error C,D,E,F)if#D<1 then error'Must have more than one button'end local G,H,I=1,{},
'Must have more than one button'end local G,H,I=1,{},nil I=function(J)for K,L in nil I=function(J)for K,L in ipairs(H)do if L==J then L.Style=Enum.ButtonStyle.
ipairs(H)do if L==J then L.Style=Enum.ButtonStyle.RobloxButtonDefault else L. RobloxButtonDefault else L.Style=Enum.ButtonStyle.RobloxButton end end end for J
Style=Enum.ButtonStyle.RobloxButton end end end for J,K in ipairs(D)do local L= ,K in ipairs(D)do local L=a('TextButton','Button'..tostring(G),{Font=Enum.Font.
a('TextButton','Button'..tostring(G),{Font=Enum.Font.Arial,FontSize=Enum. Arial,FontSize=Enum.FontSize.Size18,AutoButtonColor=true,Style=Enum.ButtonStyle.
FontSize.Size18,AutoButtonColor=true,Style=Enum.ButtonStyle.RobloxButton,Text=K. RobloxButton,Text=K.Text,TextColor3=Color3.new(1,1,1),Parent=C})L.
Text,TextColor3=Color3.new(1,1,1),Parent=C})L.MouseButton1Click:connect(function MouseButton1Click:connect(function()I(L)return K.Function()end)H[G]=L G=G+1 end
()I(L)return K.Function()end)H[G]=L G=G+1 end I(H[1])local L=G-1 if L==1 then C. I(H[1])local L=G-1 if L==1 then C.Button1.Position=UDim2.new(0.35,0,E.Scale,E.
Button1.Position=UDim2.new(0.35,0,E.Scale,E.Offset)C.Button1.Size=UDim2.new(0.4, Offset)C.Button1.Size=UDim2.new(0.4,0,F.Scale,F.Offset)elseif L==2 then C.
0,F.Scale,F.Offset)elseif L==2 then C.Button1.Position=UDim2.new(0.1,0,E.Scale,E Button1.Position=UDim2.new(0.1,0,E.Scale,E.Offset)C.Button1.Size=UDim2.new(0.35,
.Offset)C.Button1.Size=UDim2.new(0.35,0,F.Scale,F.Offset)C.Button2.Position= 0,F.Scale,F.Offset)C.Button2.Position=UDim2.new(0.55,0,E.Scale,E.Offset)C.
UDim2.new(0.55,0,E.Scale,E.Offset)C.Button2.Size=UDim2.new(0.35,0,F.Scale,F. Button2.Size=UDim2.new(0.35,0,F.Scale,F.Offset)elseif L>=3 then local M,N=0.1/L,
Offset)elseif L>=3 then local M,N=0.1/L,0.9/L G=1 while G<=L do H[G].Position= 0.9/L G=1 while G<=L do H[G].Position=UDim2.new(M*G+(G-1)*N,0,E.Scale,E.Offset)H
UDim2.new(M*G+(G-1)*N,0,E.Scale,E.Offset)H[G].Size=UDim2.new(N,0,F.Scale,F. [G].Size=UDim2.new(N,0,F.Scale,F.Offset)G=G+1 end end end local C C=function(D,E
Offset)G=G+1 end end end local C C=function(D,E,F)if D then E.Visible=true F. ,F)if D then E.Visible=true F.Text='Stop Recording'else E.Visible=false F.Text=
Text='Stop Recording'else E.Visible=false F.Text='Record Video'end end local D D 'Record Video'end end local D D=function(E,F)m=not m return C(m,F,E)end local E
=function(E,F)m=not m return C(m,F,E)end local E E=function(F,G,H)F.Parent. E=function(F,G,H)F.Parent.Parent.Parent.Parent.Visible=false G.Visible=false for
Parent.Parent.Parent.Visible=false G.Visible=false for I=1,#p do game.GuiService I=1,#p do game.GuiService:RemoveCenterDialog(p[I])p[I].Visible=false end p={}
:RemoveCenterDialog(p[I])p[I].Visible=false end p={}game.GuiService: game.GuiService:RemoveCenterDialog(G)H.Active=true end local F F=function(G)if
RemoveCenterDialog(G)H.Active=true end local F F=function(G)if not G then return not G then return end if G:IsA'TextLabel'then G.TextTransparency=0.9 elseif G:
end if G:IsA'TextLabel'then G.TextTransparency=0.9 elseif G:IsA'TextButton'then IsA'TextButton'then G.TextTransparency=0.9 G.Active=false else if G['ClassName']
G.TextTransparency=0.9 G.Active=false else if G['ClassName']then return print( then return print(
[[setDisabledState! got object of unsupported type. object type is ]],G. [[setDisabledState! got object of unsupported type. object type is ]],G.
ClassName)end end end local G G=function(H)if e==nil then if d:FindFirstChild(d. ClassName)end end end local G G=function(H)if e==nil then if d:FindFirstChild(d.
TopLeftControl:FindFirstChild'Help')then e=d.TopLeftControl.Help elseif d: TopLeftControl:FindFirstChild'Help')then e=d.TopLeftControl.Help elseif d:
@ -167,9 +167,9 @@ Parent=M if game:FindFirstChild'LoadingGuiService'and#game.LoadingGuiService:
GetChildren()>0 then W=A('Game Instructions',Enum.ButtonStyle.RobloxButton,Enum. GetChildren()>0 then W=A('Game Instructions',Enum.ButtonStyle.RobloxButton,Enum.
FontSize.Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,207))W.Name= FontSize.Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,207))W.Name=
'GameInstructions'W.ZIndex=K+4 W.Parent=M W.MouseButton1Click:connect(function() 'GameInstructions'W.ZIndex=K+4 W.Parent=M W.MouseButton1Click:connect(function()
if game:FindFirstChild(game.Players['LocalPlayer'])then local X=game.Players. if game:FindFirstChild(game.Players['LocalPlayer'])then do local X=game.Players.
LocalPlayer:FindFirstChild'PlayerLoadingGui'if X then X.Visible=true end end end LocalPlayer:FindFirstChild'PlayerLoadingGui'if X then X.Visible=true end end end
)end local X=A('Reset Character',Enum.ButtonStyle.RobloxButton,Enum.FontSize. end)end local X=A('Reset Character',Enum.ButtonStyle.RobloxButton,Enum.FontSize.
Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,105))X.Name='ResetButton'X.ZIndex= Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,105))X.Name='ResetButton'X.ZIndex=
K+4 X.Parent=M return M end local K K=function(L,M)local N=a('Frame', K+4 X.Parent=M return M end local K K=function(L,M)local N=a('Frame',
'GameSettingsMenu',{BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),ZIndex=L+4, 'GameSettingsMenu',{BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),ZIndex=L+4,

View File

@ -81,12 +81,12 @@ ClipsDescendants=true,ZIndex=7}),nil local K,L,M,N,O,P,Q,R,S=e('Frame','Panel',{
BackgroundTransparency=1,Position=UDim2.new(1,0,0,0),Size=UDim2.new(1,0,0.032,0) BackgroundTransparency=1,Position=UDim2.new(1,0,0,0),Size=UDim2.new(1,0,0.032,0)
,Parent=I}),e('Frame','StatTitles',{BackgroundTransparency=1,Position=UDim2.new( ,Parent=I}),e('Frame','StatTitles',{BackgroundTransparency=1,Position=UDim2.new(
0,0,1,-10),Size=UDim2.new(1,0,0,0),Parent=u}),Instance.new'BoolValue',Instance. 0,0,1,-10),Size=UDim2.new(1,0,0,0),Parent=u}),Instance.new'BoolValue',Instance.
new'BoolValue',Instance.new'BoolValue',Instance.new'BoolValue',e('Frame',{Name= new'BoolValue',Instance.new'BoolValue',Instance.new'BoolValue',e('Frame',
'MidTemplate',BackgroundTransparency=1,Position=UDim2.new(100,0,0.07,0),Size= 'MidTemplate',{BackgroundTransparency=1,Position=UDim2.new(100,0,0.07,0),Size=
UDim2.new(0.5,0,0.025,0),e('ImageLabel',{Name='BCLabel',Active=true, UDim2.new(0.5,0,0.025,0),e('ImageLabel','BCLabel',{Active=true,
BackgroundTransparency=1,Position=UDim2.new(0.005,5,0.2,0),Size=UDim2.new(0,16,0 BackgroundTransparency=1,Position=UDim2.new(0.005,5,0.2,0),Size=UDim2.new(0,16,0
,16),SizeConstraint='RelativeYY',Image='',ZIndex=3}),e('ImageLabel',{Name= ,16),SizeConstraint='RelativeYY',Image='',ZIndex=3}),e('ImageLabel',
'FriendLabel',Active=true,BackgroundTransparency=1,Position=UDim2.new(0.005,5, 'FriendLabel',{Active=true,BackgroundTransparency=1,Position=UDim2.new(0.005,5,
0.15,0),Size=UDim2.new(0,16,0,16),SizeConstraint='RelativeYY',Image='',ZIndex=3} 0.15,0),Size=UDim2.new(0,16,0,16),SizeConstraint='RelativeYY',Image='',ZIndex=3}
),e('ImageButton','ClickListener',{Active=true,BackgroundTransparency=1,Position ),e('ImageButton','ClickListener',{Active=true,BackgroundTransparency=1,Position
=UDim2.new(0.005,1,0,0),Size=UDim2.new(0.96,0,1,0),ZIndex=3}),e('Frame', =UDim2.new(0.005,1,0,0),Size=UDim2.new(0.96,0,1,0),ZIndex=3}),e('Frame',

View File

@ -20,27 +20,26 @@ UDim2.new(-0.1,0,-0.1,0),ZIndex=0,Visible=false,a('ImageLabel',{Size=UDim2.new(1
,BackgroundTransparency=1,Image='http://www.roblox.com/asset/?id=97617958', ,BackgroundTransparency=1,Image='http://www.roblox.com/asset/?id=97617958',
Position=UDim2.new(0.5,-60,1,-108),Size=UDim2.new(0,120,0,18),Parent=b. Position=UDim2.new(0.5,-60,1,-108),Size=UDim2.new(0,120,0,18),Parent=b.
ControlFrame})local h=9 if f()then h=3 g.Size=UDim2.new(0,180,0,54)g.Position= ControlFrame})local h=9 if f()then h=3 g.Size=UDim2.new(0,180,0,54)g.Position=
UDim2.new(0.5,-90,1,-85)end for i=0,h do local j=a('Frame',{Name='Slot'.. UDim2.new(0.5,-90,1,-85)end for i=0,h do local j=a('Frame','Slot'..tostring(i),{
tostring(i),RobloxLocked=true,BackgroundColor3=Color3.new(0,0,0), RobloxLocked=true,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,
BackgroundTransparency=1,BorderColor3=Color3.new(1,1,1),ZIndex=4,Position=UDim2. BorderColor3=Color3.new(1,1,1),ZIndex=4,Position=UDim2.new((function()if i==0
new((function()if i==0 then return 0.9,0,0,0 else return(i-1)*0.1,(i-1)*6,0,0 then return 0.9,0,0,0 else return(i-1)*0.1,(i-1)*6,0,0 end end)()),Size=UDim2.
end end)()),Size=UDim2.new(0,54,1,0),Parent=g})if b.AbsoluteSize.Y<=320 then j. new(0,54,1,0),Parent=g})if b.AbsoluteSize.Y<=320 then j.Position=UDim2.new(0,(i-
Position=UDim2.new(0,(i-1)*60,0,-50)print('Well got here',j,j.Position.X.Scale,j 1)*60,0,-50)print('Well got here',j,j.Position.X.Scale,j.Position.X.Offset)if i
.Position.X.Offset)if i==0 then j:Destroy()end end end local i=a('ImageButton', ==0 then j:Destroy()end end end local i=a('ImageButton','TempSlot',{Active=true,
'TempSlot',{Active=true,Size=UDim2.new(1,0,1,0),BackgroundTransparency=1,Style= Size=UDim2.new(1,0,1,0),BackgroundTransparency=1,Style='Custom',Visible=false,
'Custom',Visible=false,RobloxLocked=true,ZIndex=3,Parent=g,a('ImageLabel', RobloxLocked=true,ZIndex=3,Parent=g,a('ImageLabel','Background',{
'Background',{BackgroundTransparency=1,Image= BackgroundTransparency=1,Image='http://www.roblox.com/asset/?id=97613075',Size=
'http://www.roblox.com/asset/?id=97613075',Size=UDim2.new(1,0,1,0)}),a( UDim2.new(1,0,1,0)}),a('ObjectValue','GearReference',{RobloxLocked=true}),a(
'ObjectValue','GearReference',{RobloxLocked=true}),a('TextLabel','ToolTipLabel', 'TextLabel','ToolTipLabel',{RobloxLocked=true,Text='',BackgroundTransparency=0.5
{RobloxLocked=true,Text='',BackgroundTransparency=0.5,BorderSizePixel=0,Visible= ,BorderSizePixel=0,Visible=false,TextColor3=Color3.new(1,1,1),BackgroundColor3=
false,TextColor3=Color3.new(1,1,1),BackgroundColor3=Color3.new(0,0,0), Color3.new(0,0,0),TextStrokeTransparency=0,Font=Enum.Font.ArialBold,FontSize=
TextStrokeTransparency=0,Font=Enum.Font.ArialBold,FontSize=Enum.FontSize.Size14, Enum.FontSize.Size14,Size=UDim2.new(1,60,0,20),Position=UDim2.new(0,-30,0,-30)})
Size=UDim2.new(1,60,0,20),Position=UDim2.new(0,-30,0,-30)}),a('BoolValue','Kill' ,a('BoolValue','Kill',{RobloxLocked=true}),a('TextLabel','GearText',{
,{RobloxLocked=true}),a('TextLabel','GearText',{RobloxLocked=true, RobloxLocked=true,BackgroundTransparency=1,Font=Enum.Font.Arial,FontSize=Enum.
BackgroundTransparency=1,Font=Enum.Font.Arial,FontSize=Enum.FontSize.Size14, FontSize.Size14,Position=UDim2.new(0,-8,0,-8),Size=UDim2.new(1,16,1,16),Text='',
Position=UDim2.new(0,-8,0,-8),Size=UDim2.new(1,16,1,16),Text='',TextColor3= TextColor3=Color3.new(1,1,1),TextWrap=true,ZIndex=5}),a('ImageLabel','GearImage'
Color3.new(1,1,1),TextWrap=true,ZIndex=5}),a('ImageLabel','GearImage',{ ,{BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0),
BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0),
ZIndex=5,RobloxLocked=true})})local j=a('TextLabel','SlotNumber',{ ZIndex=5,RobloxLocked=true})})local j=a('TextLabel','SlotNumber',{
BackgroundTransparency=1,BorderSizePixel=0,Font=Enum.Font.ArialBold,FontSize= BackgroundTransparency=1,BorderSizePixel=0,Font=Enum.Font.ArialBold,FontSize=
Enum.FontSize.Size18,Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,10,0,15), Enum.FontSize.Size18,Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,10,0,15),
@ -146,9 +145,9 @@ BackgroundTransparency=1,Position=y,Parent=z})end local v v=function(w,x,y,z,A)
local B=a('ImageButton',tostring(w),{RobloxLocked=true,Size=x,Position=y})if A local B=a('ImageButton',tostring(w),{RobloxLocked=true,Size=x,Position=y})if A
then B.Style=A else B.BackgroundColor3=Color3.new(0,0,0)B.BorderColor3=Color3. then B.Style=A else B.BackgroundColor3=Color3.new(0,0,0)B.BorderColor3=Color3.
new(1,1,1)end B.Parent=z return B end local w w=function(x,y,z,A)return a( new(1,1,1)end B.Parent=z return B end local w w=function(x,y,z,A)return a(
'TextLabel',{Name=x,RobloxLocked=true,BackgroundTransparency=1,Size=UDim2.new(0, 'TextLabel',x,{RobloxLocked=true,BackgroundTransparency=1,Size=UDim2.new(0,32,0,
32,0,14),Font=Enum.Font.Arial,TextColor3=Color3.new(1,1,1),FontSize=Enum. 14),Font=Enum.Font.Arial,TextColor3=Color3.new(1,1,1),FontSize=Enum.FontSize.
FontSize.Size14,Text=y,Position=z,Parent=A})end local x=a('Frame','Wardrobe',{ Size14,Text=y,Position=z,Parent=A})end local x=a('Frame','Wardrobe',{
RobloxLocked=true,BackgroundTransparency=1,Visible=false,Size=UDim2.new(1,0,1,0) RobloxLocked=true,BackgroundTransparency=1,Visible=false,Size=UDim2.new(1,0,1,0)
,Parent=l,a('Frame','AssetList',{RobloxLocked=true,Position=UDim2.new(0,4,0,5), ,Parent=l,a('Frame','AssetList',{RobloxLocked=true,Position=UDim2.new(0,4,0,5),
Size=UDim2.new(0,85,1,-5),BackgroundTransparency=1,Visible=true}),a('TextButton' Size=UDim2.new(0,85,1,-5),BackgroundTransparency=1,Visible=true}),a('TextButton'

View File

@ -1,480 +1,478 @@
print'[Mercury]: Loaded corescript 73157242'local a,b={},nil b=function(c)local print'[Mercury]: Loaded corescript 73157242'local a a=function(b,c,d)if not(d~=
d,e,f=false,game.Workspace.CurrentCamera,nil do local g=e.CoordinateFrame.p f= nil)then d=c c=nil end local e=Instance.new(b)if c then e.Name=c end local f for
Vector3.new(g.X,g.Y,g.Z)end local g,h,i=Vector3.new(c.X,c.Y,c.Z),Vector3.new(0,1 g,h in pairs(d)do if type(g)=='string'then if g=='Parent'then f=h else e[g]=h
,0),Vector3.new(0,0,0)local j,k=h:Dot(g-f),c if j~=0 then a=h:Dot(i-f)/j if a>=0 end elseif type(g)=='number'and type(h)=='userdata'then h.Parent=e end end e.
and a<=1 then local l=((g-f)*a)+f k=game.Workspace.Terrain:WorldToCell(l)d=true Parent=f return e end local b,c={},nil c=function(d)local e,f,g=false,game.
end end return k,d end local c c=function(d)local e,f=game.Workspace.Terrain: Workspace.CurrentCamera,nil do local h=f.CoordinateFrame.p g=Vector3.new(h.X,h.Y
WorldToCellPreferSolid(Vector3.new(d.hit.x,d.hit.y,d.hit.z)),nil if 0==game. ,h.Z)end local h,i,j=Vector3.new(d.X,d.Y,d.Z),Vector3.new(0,1,0),Vector3.new(0,0
Workspace.Terrain:GetCell(e.X,e.Y,e.Z).Value then e=nil local g f,g=b(Vector3. ,0)local k,l=i:Dot(h-g),d if k~=0 then b=i:Dot(j-g)/k if b>=0 and b<=1 then
new(d.hit.x,d.hit.y,d.hit.z))if g then e=f end end return e end local d,e= local m=((h-g)*b)+g l=game.Workspace.Terrain:WorldToCell(m)e=true end end return
Vector3.new(0.3,0.3,0.3),nil e=function(f,g,h)if f:IsA'BasePart'then f.CFrame=(g l,e end local d d=function(e)local f,g=game.Workspace.Terrain:
*(f.CFrame-h))+h end local i=f:GetChildren()for j=1,#i do e(i[j],g,h)end end WorldToCellPreferSolid(Vector3.new(e.hit.x,e.hit.y,e.hit.z)),nil if 0==game.
local f f=function(g,h)local i,j=CFrame.Angles(0,h,0),g:GetModelCFrame().p Workspace.Terrain:GetCell(f.X,f.Y,f.Z).Value then f=nil local h g,h=c(Vector3.
return e(g,i,j)end local g g=function(h,i,j,k)if h:IsA'BasePart'then i[#i+1]=h new(e.hit.x,e.hit.y,e.hit.z))if h then f=g end end return f end local e,f=
elseif h:IsA'Script'then j[#j+1]=h elseif h:IsA'Decal'then k[#k+1]=h end for l,m Vector3.new(0.3,0.3,0.3),nil f=function(g,h,i)if g:IsA'BasePart'then g.CFrame=(h
in pairs(h:GetChildren())do g(m,i,j,k)end end local h h=function(i,j)local k= *(g.CFrame-i))+i end local j=g:GetChildren()for k=1,#j do f(j[k],h,i)end end
game.Workspace:FindFirstChild'Terrain'local l,m=k:WorldToCell(i),k:WorldToCell(j local g g=function(h,i)local j,k=CFrame.Angles(0,i,0),h:GetModelCFrame().p
)local n,o,p,q,r,s=l.X,l.Y,l.Z,m.X,m.Y,m.Z if n<k.MaxExtents.Min.X then n=k. return f(h,j,k)end local h h=function(i,j,k,l)if i:IsA'BasePart'then j[#j+1]=i
MaxExtents.Min.X end if o<k.MaxExtents.Min.Y then o=k.MaxExtents.Min.Y end if p< elseif i:IsA'Script'then k[#k+1]=i elseif i:IsA'Decal'then l[#l+1]=i end for m,n
k.MaxExtents.Min.Z then p=k.MaxExtents.Min.Z end if q>k.MaxExtents.Max.X then q= in pairs(i:GetChildren())do h(n,j,k,l)end end local i i=function(j,k)local l=
k.MaxExtents.Max.X end if r>k.MaxExtents.Max.Y then r=k.MaxExtents.Max.Y end if game.Workspace:FindFirstChild'Terrain'local m,n=l:WorldToCell(j),l:WorldToCell(k
s>k.MaxExtents.Max.Z then s=k.MaxExtents.Max.Z end for t=n,q do for u=o,r do for )local o,p,q,r,s,t=m.X,m.Y,m.Z,n.X,n.Y,n.Z if o<l.MaxExtents.Min.X then o=l.
v=p,s do if k:GetCell(t,u,v).Value>0 then return true end end end end return MaxExtents.Min.X end if p<l.MaxExtents.Min.Y then p=l.MaxExtents.Min.Y end if q<
false end local i i=function(j,k)if not j then return end if j.className=='Seat' l.MaxExtents.Min.Z then q=l.MaxExtents.Min.Z end if r>l.MaxExtents.Max.X then r=
or j.className=='VehicleSeat'then table.insert(k,j)end local l=j:GetChildren() l.MaxExtents.Max.X end if s>l.MaxExtents.Max.Y then s=l.MaxExtents.Max.Y end if
for m=1,#l do i(l[m],k)end end local j j=function(k,l)local m={}i(k,m)if l then t>l.MaxExtents.Max.Z then t=l.MaxExtents.Max.Z end for u=o,r do for v=p,s do for
for n=1,#m do local o=m[n]:FindFirstChild'SeatWeld'while o do o:Remove()o=m[n]: w=q,t do if l:GetCell(u,v,w).Value>0 then return true end end end end return
FindFirstChild'SeatWeld'end end else for n=1,#m do local o=Instance.new'Weld'o. false end local j j=function(k,l)if not k then return end if k.className=='Seat'
Name='SeatWeld'o.Parent=m[n]end end end local k k=function(l)local m=l: or k.className=='VehicleSeat'then table.insert(l,k)end local m=k:GetChildren()
FindFirstChild'AutoAlignToFace'if m then return m.Value else return false end for n=1,#m do j(m[n],l)end end local k k=function(l,m)local n={}j(l,n)if m then
end local l l=function(m)local n,o,p=Vector3.new(1,0,0),Vector3.new(0,1,0), for o=1,#n do local p=n[o]:FindFirstChild'SeatWeld'while p do p:Remove()p=n[o]:
Vector3.new(0,0,1)local q,r,s=m.x*n.x+m.y*n.y+m.z*n.z,m.x*o.x+m.y*o.y+m.z*o.z,m. FindFirstChild'SeatWeld'end end else for o=1,#n do a('Weld','SeatWeld',{Parent=n
x*p.x+m.y*p.y+m.z*p.z if math.abs(q)>math.abs(r)and math.abs(q)>math.abs(s)then [o]})end end end local l l=function(m)do local n=m:FindFirstChild
if q>0 then return 0 else return 3 end elseif math.abs(r)>math.abs(q)and math. 'AutoAlignToFace'if n then return n.Value else return false end end end local m
abs(r)>math.abs(s)then if r>0 then return 1 else return 4 end else if s>0 then m=function(n)local o,p,q=Vector3.new(1,0,0),Vector3.new(0,1,0),Vector3.new(0,0,1
return 2 else return 5 end end end local m m=function(n,o)local p if not o then )local r,s,t=n.x*o.x+n.y*o.y+n.z*o.z,n.x*p.x+n.y*p.y+n.z*p.z,n.x*q.x+n.y*q.y+n.z
return o end if o and(o:IsA'Model'or o:IsA'Tool')then p=o:GetModelCFrame()o: *q.z if math.abs(r)>math.abs(s)and math.abs(r)>math.abs(t)then if r>0 then
TranslateBy(n.p-p.p)else o.CFrame=n end return o end local n n=function(o,p,q)if return 0 else return 3 end elseif math.abs(s)>math.abs(r)and math.abs(s)>math.
math.abs(p)<0.01 then return 0 end return(q-o)/p end local o o=function(p,q,r)if abs(t)then if s>0 then return 1 else return 4 end else if t>0 then return 2 else
not p then return 0 end local s,t if p:IsA'Model'then s=p:GetModelCFrame()t=p: return 5 end end end local n n=function(o,p)local q if not p then return p end
GetModelSize()else s=p.CFrame t=p.Size end local u,v=s:pointToObjectSpace(q),s: if p and(p:IsA'Model'or p:IsA'Tool')then q=p:GetModelCFrame()p:TranslateBy(o.p-q
pointToObjectSpace(r)local w,x,y,z=v-u,1,1,1 if w.X>0 then x=-1 end if w.Y>0 .p)else p.CFrame=o end return p end local o o=function(p,q,r)if math.abs(q)<0.01
then y=-1 end if w.Z>0 then z=-1 end local A,B,C,D=n(u.X,w.X,t.X/2*x),n(u.Y,w.Y, then return 0 end return(r-p)/q end local p p=function(q,r,s)if not q then
t.Y/2*y),n(u.Z,w.Z,t.Z/2*z),0 if A>B then if A>C then D=1*x else D=3*z end else return 0 end local t,u if q:IsA'Model'then t=q:GetModelCFrame()u=q:GetModelSize(
if B>C then D=2*y else D=3*z end end return D end local p p=function(q)local r,s )else t=q.CFrame u=q.Size end local v,w=t:pointToObjectSpace(r),t:
pointToObjectSpace(s)local x,y,z,A=w-v,1,1,1 if x.X>0 then y=-1 end if x.Y>0
then z=-1 end if x.Z>0 then A=-1 end local B,C,D,E=o(v.X,x.X,u.X/2*y),o(v.Y,x.Y,
u.Y/2*z),o(v.Z,x.Z,u.Z/2*A),0 if B>C then if B>D then E=1*y else E=3*A end else
if C>D then E=2*z else E=3*A end end return E end local q q=function(r)local s,t
=Vector3.new(math.huge,math.huge,math.huge),Vector3.new(-math.huge,-math.huge,- =Vector3.new(math.huge,math.huge,math.huge),Vector3.new(-math.huge,-math.huge,-
math.huge)if q:IsA'Terrain'then r=Vector3.new(-2,-2,-2)s=Vector3.new(2,2,2) math.huge)if r:IsA'Terrain'then s=Vector3.new(-2,-2,-2)t=Vector3.new(2,2,2)
elseif q:IsA'BasePart'then r=-0.5*q.Size s=-r else s=q:GetModelSize()*0.5 r=-s elseif r:IsA'BasePart'then s=-0.5*r.Size t=-s else t=r:GetModelSize()*0.5 s=-t
end local t=q:FindFirstChild'Justification'if(t~=nil)then local u,v,w=t.Value, end local u=r:FindFirstChild'Justification'if(u~=nil)then local v,w,x=u.Value,
Vector3.new(2,2,2),s-r-Vector3.new(0.01,0.01,0.01)local x=Vector3.new(4*math. Vector3.new(2,2,2),t-s-Vector3.new(0.01,0.01,0.01)local y=Vector3.new(4*math.
ceil(w.x/4),4*math.ceil(w.y/4),4*math.ceil(w.z/4))local y=x-w r=r-(0.5*y*u)s=s+( ceil(x.x/4),4*math.ceil(x.y/4),4*math.ceil(x.z/4))local z=y-x s=s-(0.5*z*v)t=t+(
0.5*y*(v-u))end return r,s end local q q=function(r)local s,t=Vector3.new(math. 0.5*z*(w-v))end return s,t end local r r=function(s)local t,u=Vector3.new(math.
huge,math.huge,math.huge),Vector3.new(-math.huge,-math.huge,-math.huge)if r:IsA huge,math.huge,math.huge),Vector3.new(-math.huge,-math.huge,-math.huge)if s:IsA
'BasePart'and not r:IsA'Terrain'then local u,v=r.CFrame:pointToWorldSpace(-0.5*r 'BasePart'and not s:IsA'Terrain'then local v,w=s.CFrame:pointToWorldSpace(-0.5*s
.Size),r.CFrame:pointToWorldSpace(0.5*r.Size)s=Vector3.new(math.min(u.X,v.X), .Size),s.CFrame:pointToWorldSpace(0.5*s.Size)t=Vector3.new(math.min(v.X,w.X),
math.min(u.Y,v.Y),math.min(u.Z,v.Z))t=Vector3.new(math.max(u.X,v.X),math.max(u.Y math.min(v.Y,w.Y),math.min(v.Z,w.Z))u=Vector3.new(math.max(v.X,w.X),math.max(v.Y
,v.Y),math.max(u.Z,v.Z))elseif not r:IsA'Terrain'then local u,v=r: ,w.Y),math.max(v.Z,w.Z))elseif not s:IsA'Terrain'then local v,w=s:
GetModelCFrame():pointToWorldSpace(-0.5*r:GetModelSize()),r:GetModelCFrame(): GetModelCFrame():pointToWorldSpace(-0.5*s:GetModelSize()),s:GetModelCFrame():
pointToWorldSpace(0.5*r:GetModelSize())s=Vector3.new(math.min(u.X,v.X),math.min( pointToWorldSpace(0.5*s:GetModelSize())t=Vector3.new(math.min(v.X,w.X),math.min(
u.Y,v.Y),math.min(u.Z,v.Z))t=Vector3.new(math.max(u.X,v.X),math.max(u.Y,v.Y), v.Y,w.Y),math.min(v.Z,w.Z))u=Vector3.new(math.max(v.X,w.X),math.max(v.Y,w.Y),
math.max(u.Z,v.Z))end return s,t end local r r=function(s)return p((function()if math.max(v.Z,w.Z))end return t,u end local s s=function(t)return q((function()if
(s.Parent:FindFirstChild'RobloxModel'~=nil)then return s.Parent else return s (t.Parent:FindFirstChild'RobloxModel'~=nil)then return t.Parent else return t
end end)())end local s s=function(t)if(t.Parent:FindFirstChild'RobloxModel'~=nil end end)())end local t t=function(u)if(u.Parent:FindFirstChild'RobloxModel'~=nil
)then if t.Parent:IsA'Tool'then return t.Parent.Handle.CFrame else return t. )then if u.Parent:IsA'Tool'then return u.Parent.Handle.CFrame else return u.
Parent:GetModelCFrame()end else return t.CFrame end end local t t=function(u)if Parent:GetModelCFrame()end else return u.CFrame end end local u u=function(v)if
not u then return false end if not u.Parent then return false end if u: not v then return false end if not v.Parent then return false end if v:
FindFirstChild'Humanoid'then return false end if u:FindFirstChild'RobloxStamper' FindFirstChild'Humanoid'then return false end if v:FindFirstChild'RobloxStamper'
then return true end if u:IsA'Part'and not u.CanCollide then return false end if or v:FindFirstChild'RobloxModel'then return true end if v:IsA'Part'and not v.
u==game.Lighting then return false end return t(u.Parent)end local u u=function( CanCollide then return false end if v==game.Lighting then return false end
v,w,x)local y=game.Workspace:FindPartsInRegion3(Region3.new(Vector3.new(v. return u(v.Parent)end local v v=function(w,x,y)local z=game.Workspace:
Position.X,w,v.Position.Z)-Vector3.new(0.75,2.75,0.75),Vector3.new(v.Position.X, FindPartsInRegion3(Region3.new(Vector3.new(w.Position.X,x,w.Position.Z)-Vector3.
w,v.Position.Z)+Vector3.new(0.75,1.75,0.75)),v.Parent,100)for z=1,#y do if y[z]. new(0.75,2.75,0.75),Vector3.new(w.Position.X,x,w.Position.Z)+Vector3.new(0.75,
CanCollide and not y[z]:IsDescendantOf(x.CurrentParts)then return false end end 1.75,0.75)),w.Parent,100)for A=1,#z do if z[A].CanCollide and not z[A]:
if h(Vector3.new(v.Position.X,w,v.Position.Z)-Vector3.new(0.75,2.75,0.75), IsDescendantOf(y.CurrentParts)then return false end end if i(Vector3.new(w.
Vector3.new(v.Position.X,w,v.Position.Z)+Vector3.new(0.75,1.75,0.75))then return Position.X,x,w.Position.Z)-Vector3.new(0.75,2.75,0.75),Vector3.new(w.Position.X,
false end return true end local v v=function(w,x)if not w then return end if not x,w.Position.Z)+Vector3.new(0.75,1.75,0.75))then return false end return true
x then return error'findConfigAtMouseTarget: stampData is nil'end if not x[ end local w w=function(x,y)if not x then return end if not y then return error
'CurrentParts']then return end local y,z,A,B,C=4,false,CFrame.new(0,0,0),p(x. 'findConfigAtMouseTarget: stampData is nil'end if not y['CurrentParts']then
CurrentParts)local D,E=C-B,nil if x.CurrentParts:IsA'Model'or x.CurrentParts:IsA return end local z,A,B,C,D=4,false,CFrame.new(0,0,0),q(y.CurrentParts)local E,F=
'Tool'then E=x.CurrentParts:GetModelCFrame()else E=x.CurrentParts.CFrame end if D-C,nil if y.CurrentParts:IsA'Model'or y.CurrentParts:IsA'Tool'then F=y.
w then if x.CurrentParts:IsA'Tool'then w.TargetFilter=x.CurrentParts.Handle else CurrentParts:GetModelCFrame()else F=y.CurrentParts.CFrame end if x then if y.
w.TargetFilter=x.CurrentParts end end local F,G=false,nil local H=pcall(function CurrentParts:IsA'Tool'then x.TargetFilter=y.CurrentParts.Handle else x.
()G=w.Target end)if not H then return z,A end local I=Vector3.new(0,0,0)if w TargetFilter=y.CurrentParts end end local G,H=false,nil local I=pcall(function()
then I=Vector3.new(w.Hit.x,w.Hit.y,w.Hit.z)end local J if nil==G then J=c(w)if H=x.Target end)if not I then return A,B end local J=Vector3.new(0,0,0)if x then
nil==J then F=false return z,A else G=game.Workspace.Terrain F=true J=Vector3. J=Vector3.new(x.Hit.x,x.Hit.y,x.Hit.z)end local K if nil==H then K=d(x)if nil==K
new(J.X-1,J.Y,J.Z)I=game.Workspace.Terrain:CellCenterToWorld(J.x,J.y,J.z)end end then G=false return A,B else H=game.Workspace.Terrain G=true K=Vector3.new(K.X-1
local K,L=r(G)local M,N=L-K,s(G)if G:IsA'Terrain'then if not cluster then ,K.Y,K.Z)J=game.Workspace.Terrain:CellCenterToWorld(K.x,K.y,K.z)end end local L,
cluster=game.Workspace:FindFirstChild'Terrain'end local O=cluster: M=s(H)local N,O=M-L,t(H)if H:IsA'Terrain'then if not cluster then cluster=game.
WorldToCellPreferSolid(I)if F then O=J end N=CFrame.new(game.Workspace.Terrain: Workspace:FindFirstChild'Terrain'end local P=cluster:WorldToCellPreferSolid(J)if
CellCenterToWorld(O.x,O.y,O.z))end local O,P=N:pointToObjectSpace(I),Vector3. G then P=K end O=CFrame.new(game.Workspace.Terrain:CellCenterToWorld(P.x,P.y,P.z
new(0,0,0)if w then P=G.CFrame:vectorToWorldSpace(Vector3.FromNormalId(w. ))end local P,Q=O:pointToObjectSpace(J),Vector3.new(0,0,0)if x then Q=H.CFrame:
TargetSurface))end local Q,R,S if l(P)==0 then Q=N:vectorToObjectSpace(Vector3. vectorToWorldSpace(Vector3.FromNormalId(x.TargetSurface))end local R,S,T if m(Q)
new(1,-1,1))R=E:vectorToObjectSpace(Vector3.new(-1,-1,1))S=Vector3.new(0,1,1) ==0 then R=O:vectorToObjectSpace(Vector3.new(1,-1,1))S=F:vectorToObjectSpace(
elseif l(P)==3 then Q=N:vectorToObjectSpace(Vector3.new(-1,-1,-1))R=E: Vector3.new(-1,-1,1))T=Vector3.new(0,1,1)elseif m(Q)==3 then R=O:
vectorToObjectSpace(Vector3.new(1,-1,-1))S=Vector3.new(0,1,1)elseif l(P)==1 then vectorToObjectSpace(Vector3.new(-1,-1,-1))S=F:vectorToObjectSpace(Vector3.new(1,
Q=N:vectorToObjectSpace(Vector3.new(-1,1,1))R=E:vectorToObjectSpace(Vector3.new( -1,-1))T=Vector3.new(0,1,1)elseif m(Q)==1 then R=O:vectorToObjectSpace(Vector3.
-1,-1,1))S=Vector3.new(1,0,1)elseif l(P)==4 then Q=N:vectorToObjectSpace(Vector3 new(-1,1,1))S=F:vectorToObjectSpace(Vector3.new(-1,-1,1))T=Vector3.new(1,0,1)
.new(-1,-1,1))R=E:vectorToObjectSpace(Vector3.new(-1,1,1))S=Vector3.new(1,0,1) elseif m(Q)==4 then R=O:vectorToObjectSpace(Vector3.new(-1,-1,1))S=F:
elseif l(P)==2 then Q=N:vectorToObjectSpace(Vector3.new(-1,-1,1))R=E: vectorToObjectSpace(Vector3.new(-1,1,1))T=Vector3.new(1,0,1)elseif m(Q)==2 then
vectorToObjectSpace(Vector3.new(-1,-1,-1))S=Vector3.new(1,1,0)else Q=N: R=O:vectorToObjectSpace(Vector3.new(-1,-1,1))S=F:vectorToObjectSpace(Vector3.
vectorToObjectSpace(Vector3.new(1,-1,-1))R=E:vectorToObjectSpace(Vector3.new(1,- new(-1,-1,-1))T=Vector3.new(1,1,0)else R=O:vectorToObjectSpace(Vector3.new(1,-1,
1,1))S=Vector3.new(1,1,0)end Q=Q*((0.5*M)+0.5*(L+K))R=R*((0.5*D)+0.5*(C+B))local -1))S=F:vectorToObjectSpace(Vector3.new(1,-1,1))T=Vector3.new(1,1,0)end R=R*((
T=O-Q local U=Vector3.new(y*math.modf(T.x/y),y*math.modf(T.y/y),y*math.modf(T.z/ 0.5*N)+0.5*(M+L))S=S*((0.5*E)+0.5*(D+C))local U=P-R local V=Vector3.new(z*math.
y))U=U*S local V=U+Q local W,X=N:pointToWorldSpace(V),E:vectorToWorldSpace(R) modf(U.x/z),z*math.modf(U.y/z),z*math.modf(U.z/z))V=V*T local W=V+R local X,Y=O:
local Y,Z,_,aa,ab,ac,ad,ae,af,ag,ah,ai,aj=W-X,E:components()A=CFrame.new(Y.x,Y.y pointToWorldSpace(W),F:vectorToWorldSpace(S)local Z,_,aa,ab,ac,ad,ae,af,ag,ah,ai
,Y.z,ab,ac,ad,ae,af,ag,ah,ai,aj)z=true return z,A,l(P)end local aa aa=function( ,aj,ak=X-Y,F:components()B=CFrame.new(Z.x,Z.y,Z.z,ac,ad,ae,af,ag,ah,ai,aj,ak)A=
ab,ac)local ad,ae=math.abs(ab),math.abs(ac)local af=math.sqrt(ad*ad+ae*ae)local true return A,B,m(Q)end local ab ab=function(ac,ad)local ae,af=math.abs(ac),math
ag,ah,ai=ae/af,1,1 if ab<0 then ah=-1 end if ac<0 then ai=-1 end if ag> .abs(ad)local ag=math.sqrt(ae*ae+af*af)local ah,ai,aj=af/ag,1,1 if ac<0 then ai=
0.382683432 then return 0.707106781*af*ah,0.707106781*af*ai else return af*ah,0 -1 end if ad<0 then aj=-1 end if ah>0.382683432 then return 0.707106781*ag*ai,
end end local ab ab=function(ac,ad,ae)if ac:IsA'ManualWeld'or ac:IsA'Rotate'then 0.707106781*ag*aj else return ag*ai,0 end end local ac ac=function(ad,ae,af)if
table.insert(ad,ac)return table.insert(ae,ac.Parent)else local af=ac: ad:IsA'ManualWeld'or ad:IsA'Rotate'then table.insert(ae,ad)return table.insert(
GetChildren()for ag=1,#af do ab(af[ag],ad,ae)end end end local ac ac=function(ad af,ad.Parent)else local ag=ad:GetChildren()for ah=1,#ag do ac(ag[ah],ae,af)end
,ae)for af=1,#ad do ad[af].Parent=ae[af]end end a.CanEditRegion=function(ad,ae) end end local ad ad=function(ae,af)for ag=1,#ae do ae[ag].Parent=af[ag]end end b
if not ae then return true,false end local af,ag=q(ad)if af.X<ae.CFrame.p.X-ae. .CanEditRegion=function(ae,af)if not af then return true,false end local ag,ah=
Size.X/2 or af.Y<ae.CFrame.p.Y-ae.Size.Y/2 or af.Z<ae.CFrame.p.Z-ae.Size.Z/2 r(ae)if ag.X<af.CFrame.p.X-af.Size.X/2 or ag.Y<af.CFrame.p.Y-af.Size.Y/2 or ag.Z
then return false,false end if ag.X>ae.CFrame.p.X+ae.Size.X/2 or ag.Y>ae.CFrame. <af.CFrame.p.Z-af.Size.Z/2 then return false,false end if ah.X>af.CFrame.p.X+af.
p.Y+ae.Size.Y/2 or ag.Z>ae.CFrame.p.Z+ae.Size.Z/2 then return false,false end Size.X/2 or ah.Y>af.CFrame.p.Y+af.Size.Y/2 or ah.Z>af.CFrame.p.Z+af.Size.Z/2
return true,false end a.GetStampModel=function(ad,ae,af)if ad==0 then return nil then return false,false end return true,false end b.GetStampModel=function(ae,af
,'No Asset'end if ad<0 then return nil,'Negative Asset'end local ag ag=function( ,ag)if ae==0 then return nil,'No Asset'end if ae<0 then return nil,
ah)if ah:IsA'BasePart'then ah.Locked=false end for ai,aj in pairs(ah: 'Negative Asset'end local ah ah=function(ai)if ai:IsA'BasePart'then ai.Locked=
GetChildren())do ag(aj)end end local ah ah=function(ai)return BrickColor.new(( false end for aj,ak in pairs(ai:GetChildren())do ah(ak)end end local ai ai=
function()if 1==ai then return'Bright green'elseif 2==ai then return function(aj)return BrickColor.new((function()if 1==aj then return'Bright green'
'Bright yellow'elseif 3==ai then return'Bright red'elseif 4==ai then return elseif 2==aj then return'Bright yellow'elseif 3==aj then return'Bright red'
'Sand red'elseif 5==ai then return'Black'elseif 6==ai then return elseif 4==aj then return'Sand red'elseif 5==aj then return'Black'elseif 6==aj
'Dark stone grey'elseif 7==ai then return'Sand blue'elseif 8==ai then return then return'Dark stone grey'elseif 7==aj then return'Sand blue'elseif 8==aj then
'Deep orange'elseif 9==ai then return'Dark orange'elseif 10==ai then return return'Deep orange'elseif 9==aj then return'Dark orange'elseif 10==aj then
'Reddish brown'elseif 11==ai then return'Light orange'elseif 12==ai then return return'Reddish brown'elseif 11==aj then return'Light orange'elseif 12==aj then
'Light stone grey'elseif 13==ai then return'Sand green'elseif 14==ai then return return'Light stone grey'elseif 13==aj then return'Sand green'elseif 14==aj then
'Medium stone grey'elseif 15==ai then return'Really red'elseif 16==ai then return'Medium stone grey'elseif 15==aj then return'Really red'elseif 16==aj then
return'Really blue'elseif 17==ai then return'Bright blue'else return return'Really blue'elseif 17==aj then return'Bright blue'else return
'Bright green'end end)())end local ai ai=function(aj,w,x)local y if w==1 or w==4 'Bright green'end end)())end local aj aj=function(ak,x,y)local z if x==1 or x==4
then y=Instance.new'WedgePart'y.formFactor='Custom'elseif w==2 then y=Instance. then z=Instance.new'WedgePart'z.formFactor='Custom'elseif x==2 then z=Instance.
new'CornerWedgePart'else y=Instance.new'Part'y.formFactor='Custom'end y.Name= new'CornerWedgePart'else z=Instance.new'Part'z.formFactor='Custom'end z.Name=
'MegaClusterCube'y.Size=Vector3.new(4,4,4)y.BottomSurface='Smooth'y.TopSurface= 'MegaClusterCube'z.Size=Vector3.new(4,4,4)z.BottomSurface='Smooth'z.TopSurface=
'Smooth'y.BrickColor=ah(aj)local z,A=0,math.pi if w==4 then z=-math.pi/2 end if 'Smooth'z.BrickColor=ai(ak)local A,B=0,math.pi if x==4 then A=-math.pi/2 end if
w==2 or w==3 then A=0 end y.CFrame=CFrame.Angles(0,math.pi/2*x+A,z)if w==3 then x==2 or x==3 then B=0 end z.CFrame=CFrame.Angles(0,math.pi/2*y+B,A)if x==3 then
local B=Instance.new'SpecialMesh'B.MeshType='FileMesh'B.MeshId= a('SpecialMesh',{MeshType='FileMesh',MeshId=
'http://www.roblox.com/asset?id=66832495'B.Scale=Vector3.new(2,2,2)B.Parent=y 'http://www.roblox.com/asset?id=66832495',Scale=Vector3.new(2,2,2),Parent=z})end
end local B=Instance.new'Vector3Value'B.Value=Vector3.new(aj,w,x)B.Name= a('Vector3Value','ClusterMaterial',{Value=Vector3.new(ak,x,y),Parent=z})return z
'ClusterMaterial'B.Parent=y return y end local aj,w,x=nil,nil,true if af then w= end local ak,x,y=nil,nil,true if ag then x=coroutine.create(function()ak=game:
coroutine.create(function()aj=game:GetService'InsertService':LoadAssetVersion(ad GetService'InsertService':LoadAssetVersion(ae)y=false end)coroutine.resume(x)
)x=false end)coroutine.resume(w)else w=coroutine.create(function()aj=game: else x=coroutine.create(function()ak=game:GetService'InsertService':LoadAsset(ae
GetService'InsertService':LoadAsset(ad)x=false end)coroutine.resume(w)end local )y=false end)coroutine.resume(x)end local z,A,B=0,0,8 while y and A<B do z=tick(
y,z,A=0,0,8 while x and z<A do y=tick()wait(1)z=z+(tick()-y)end x=false if z>=A )wait(1)A=A+(tick()-z)end y=false if A>=B then return nil,'Load Time Fail'end if
then return nil,'Load Time Fail'end if aj==nil then return nil,'Load Asset Fail' ak==nil then return nil,'Load Asset Fail'end if not ak:IsA'Model'then return nil
end if not aj:IsA'Model'then return nil,'Load Type Fail'end local B=aj: ,'Load Type Fail'end local C=ak:GetChildren()if#C==0 then return nil,
GetChildren()if#B==0 then return nil,'Empty Model Fail'end ag(aj)aj=aj: 'Empty Model Fail'end ah(ak)ak=ak:GetChildren()[1]for D,E in pairs(C)do if E:IsA
GetChildren()[1]for C,D in pairs(B)do if D:IsA'Team'then D.Parent=game: 'Team'then E.Parent=game:GetService'Teams'elseif E:IsA'Sky'then local F=game:
GetService'Teams'elseif D:IsA'Sky'then local E=game:GetService'Lighting'for F,G GetService'Lighting'for G,H in pairs(F:GetChildren())do if H:IsA'Sky'then H:
in pairs(E:GetChildren())do if G:IsA'Sky'then G:Remove()end end D.Parent=E Remove()end end E.Parent=F return end end if ak:FindFirstChild'RobloxModel'==nil
return end end if not(aj:FindFirstChild'RobloxModel'~=nil)then local E=Instance. then a('BoolValue','RobloxModel',{Parent=ak})if ak:FindFirstChild'RobloxStamper'
new'BoolValue'E.Name='RobloxModel'E.Parent=aj if not(aj:FindFirstChild ==nil then a('BoolValue','RobloxStamper',{Parent=ak})end end if af then if ak.
'RobloxStamper'~=nil)then local F=Instance.new'BoolValue'F.Name='RobloxStamper'F Name=='MegaClusterCube'then if af==6 then a('BoolValue','AutoWedge',{Parent=ak})
.Parent=aj end end if ae then if aj.Name=='MegaClusterCube'then if ae==6 then else local F=ak:FindFirstChild'ClusterMaterial'if F then if F:IsA'Vector3Value'
local E=Instance.new'BoolValue'E.Name='AutoWedge'E.Parent=aj else local E=aj: then ak=aj(F.Value.X,af,F.Value.Z)else ak=aj(F.Value,af,0)end else ak=aj(1,af,0)
FindFirstChild'ClusterMaterial'if E then if E:IsA'Vector3Value'then aj=ai(E. end end end end return ak end b.SetupStamperDragger=function(ae,af,ag,ah,ai)if
Value.X,ae,E.Value.Z)else aj=ai(E.Value,ae,0)end else aj=ai(1,ae,0)end end end not ae then error
end return aj end a.SetupStamperDragger=function(ad,ae,af,ag,ah)if not ad then
error
[[SetupStamperDragger: modelToStamp (first arg) is nil! Should be a stamper model]] [[SetupStamperDragger: modelToStamp (first arg) is nil! Should be a stamper model]]
return nil end if not ad:IsA'Model'and not ad:IsA'BasePart'then error return nil end if not ae:IsA'Model'and not ae:IsA'BasePart'then error
[[SetupStamperDragger: modelToStamp (first arg) is neither a Model or Part!]] [[SetupStamperDragger: modelToStamp (first arg) is neither a Model or Part!]]
return nil end if not ae then error return nil end if not af then error
[[SetupStamperDragger: Mouse (second arg) is nil! Should be a mouse object]] [[SetupStamperDragger: Mouse (second arg) is nil! Should be a mouse object]]
return nil end if not ae:IsA'Mouse'then error return nil end if not af:IsA'Mouse'then error
[[SetupStamperDragger: Mouse (second arg) is not of type Mouse!]]return nil end [[SetupStamperDragger: Mouse (second arg) is not of type Mouse!]]return nil end
local ai,aj,w if af then if not af:IsA'Model'then error local aj,ak,x if ag then if not ag:IsA'Model'then error
[[SetupStamperDragger: StampInModel (optional third arg) is not of type 'Model']] [[SetupStamperDragger: StampInModel (optional third arg) is not of type 'Model']]
return nil end if not ag then error return nil end if not ah then error
[[SetupStamperDragger: AllowedStampRegion (optional fourth arg) is nil when StampInModel (optional third arg) is defined]] [[SetupStamperDragger: AllowedStampRegion (optional fourth arg) is nil when StampInModel (optional third arg) is defined]]
return nil end w=ah ai=af aj=ag end local x,y,z,A=0,nil,nil,Instance.new return nil end x=ai aj=ag ak=ah end local y,z,A,B,C=0,nil,nil,a('SelectionBox',{
'SelectionBox'A.Color=BrickColor.new'Bright red'A.Transparency=0 A.Archivable= Color=BrickColor.new'Bright red',Transparency=0,Archivable=false}),a('Part',{
false local B=Instance.new'Part'B.Parent=nil B.formFactor='Custom'B.Size=Vector3 Parent=nil,formFactor='Custom',Size=Vector3.new(4,4,4),CFrame=CFrame.new(),
.new(4,4,4)B.CFrame=CFrame.new()B.Archivable=false local C=Instance.new Archivable=false})local D,E=a('SelectionBox','HighScalabilityStamperLine',{Color
'SelectionBox'C.Color=BrickColor.new'Toothpaste'C.Adornee=B C.Visible=true C. =BrickColor.new'Toothpaste',Adornee=C,Visible=true,Transparency=0,Archivable=
Transparency=0 C.Name='HighScalabilityStamperLine'C.Archivable=false local D={}D false}),{}E.Start=nil E.End=nil E.Adorn=D E.AdornPart=C E.InternalLine=nil E.
.Start=nil D.End=nil D.Adorn=C D.AdornPart=B D.InternalLine=nil D.NewHint=true D NewHint=true E.MorePoints={nil,nil}E.MoreLines={nil,nil}E.Dimensions=1 local F,G
.MorePoints={nil,nil}D.MoreLines={nil,nil}D.Dimensions=1 local E,F,G,H,I,J,K={}, ,H,I,J,K,L,M={},false,false,false,{},nil,a('BoolValue',{Archivable=false,Value=
false,false,false,{},nil,Instance.new'BoolValue'K.Archivable=false K.Value=false false}),{}M.TerrainOrientation=0 M.CFrame=0 local N={}N.Material=1 N.clusterType
local L={}L.TerrainOrientation=0 L.CFrame=0 local M={}M.Material=1 M.clusterType =0 N.clusterOrientation=0 local O O=function()if not z then return false end if
=0 M.clusterOrientation=0 local N N=function()if not y then return false end if not z.CurrentParts then return false end return z.CurrentParts:FindFirstChild(
not y.CurrentParts then return false end return y.CurrentParts:FindFirstChild( 'ClusterMaterial',true)or(z.CurrentParts.Name=='MegaClusterCube')end local P P=
'ClusterMaterial',true)or(y.CurrentParts.Name=='MegaClusterCube')end local O O= function()local Q=z.CurrentParts:FindFirstChild'MegaClusterCube'if not Q then if
function()local P=y.CurrentParts:FindFirstChild'MegaClusterCube'if not P then if not z.CurrentParts.Name=='MegaClusterCube'then return else Q=z.CurrentParts end
not y.CurrentParts.Name=='MegaClusterCube'then return else P=y.CurrentParts end end E.End=Q.CFrame.p local R,S,T=nil,Vector3.new(0,0,0),Vector3.new(0,0,0)if E.
end D.End=P.CFrame.p local Q,R,S=nil,Vector3.new(0,0,0),Vector3.new(0,0,0)if D. Dimensions==1 then R=E.End-E.Start if math.abs(R.X)<math.abs(R.Y)then if math.
Dimensions==1 then Q=(D.End-D.Start)if math.abs(Q.X)<math.abs(Q.Y)then if math. abs(R.X)<math.abs(R.Z)then local U,V if math.abs(R.Y)>math.abs(R.Z)then U,V=ab(R
abs(Q.X)<math.abs(Q.Z)then local T,U if math.abs(Q.Y)>math.abs(Q.Z)then T,U=aa(Q .Y,R.Z)else V,U=ab(R.Z,R.Y)end R=Vector3.new(0,U,V)else local U,V=ab(R.Y,R.X)R=
.Y,Q.Z)else U,T=aa(Q.Z,Q.Y)end Q=Vector3.new(0,T,U)else local T,U=aa(Q.Y,Q.X)Q= Vector3.new(V,U,0)end else if math.abs(R.Y)<math.abs(R.Z)then local U,V if math.
Vector3.new(U,T,0)end else if math.abs(Q.Y)<math.abs(Q.Z)then local T,U if math. abs(R.X)>math.abs(R.Z)then U,V=ab(R.X,R.Z)else V,U=ab(R.Z,R.X)end R=Vector3.new(
abs(Q.X)>math.abs(Q.Z)then T,U=aa(Q.X,Q.Z)else U,T=aa(Q.Z,Q.X)end Q=Vector3.new( U,0,V)else local U,V=ab(R.X,R.Y)R=Vector3.new(U,V,0)end end E.InternalLine=R
T,0,U)else local T,U=aa(Q.X,Q.Y)Q=Vector3.new(T,U,0)end end D.InternalLine=Q elseif E.Dimensions==2 then R=E.MoreLines[1]S=E.End-E.MorePoints[1]S=S-(R.unit*R
elseif D.Dimensions==2 then Q=D.MoreLines[1]R=D.End-D.MorePoints[1]R=R-(Q.unit*Q .unit:Dot(S))local U=CFrame.new(E.Start,E.Start+R)local V,W=U:
.unit:Dot(R))local T=CFrame.new(D.Start,D.Start+Q)local U,V=T: vectorToWorldSpace(Vector3.new(0,1,0)),U:vectorToWorldSpace(Vector3.new(1,0,0))
vectorToWorldSpace(Vector3.new(0,1,0)),T:vectorToWorldSpace(Vector3.new(1,0,0)) local X,Y=W:Dot(S),V:Dot(S)if math.abs(Y)>math.abs(X)then S=S-(W*X)else S=S-(V*Y
local W,X=V:Dot(R),U:Dot(R)if math.abs(X)>math.abs(W)then R=R-(V*W)else R=R-(U*X )end E.InternalLine=S elseif E.Dimensions==3 then R=E.MoreLines[1]S=E.MoreLines[
)end D.InternalLine=R elseif D.Dimensions==3 then Q=D.MoreLines[1]R=D.MoreLines[ 2]T=E.End-E.MorePoints[2]T=T-(R.unit*R.unit:Dot(T))T=T-(S.unit*S.unit:Dot(T))E.
2]S=D.End-D.MorePoints[2]S=S-(Q.unit*Q.unit:Dot(S))S=S-(R.unit*R.unit:Dot(S))D. InternalLine=T end local U=CFrame.new(E.Start,E.Start+R)if E.Dimensions==1 then
InternalLine=S end local T=CFrame.new(D.Start,D.Start+Q)if D.Dimensions==1 then E.AdornPart.Size=Vector3.new(4,4,R.magnitude+4)E.AdornPart.CFrame=U+U:
D.AdornPart.Size=Vector3.new(4,4,Q.magnitude+4)D.AdornPart.CFrame=T+T: vectorToWorldSpace(Vector3.new(2,2,2)-E.AdornPart.Size/2)else local V=U:
vectorToWorldSpace(Vector3.new(2,2,2)-D.AdornPart.Size/2)else local U=T: vectorToObjectSpace(R+S+T)E.AdornPart.Size=Vector3.new(4,4,4)+Vector3.new(math.
vectorToObjectSpace(Q+R+S)D.AdornPart.Size=Vector3.new(4,4,4)+Vector3.new(math. abs(V.X),math.abs(V.Y),math.abs(V.Z))E.AdornPart.CFrame=U+U:vectorToWorldSpace(V
abs(U.X),math.abs(U.Y),math.abs(U.Z))D.AdornPart.CFrame=T+T:vectorToWorldSpace(U /2)end local V if game.Players['LocalPlayer']then V=game.Players.LocalPlayer:
/2)end local U if game.Players['LocalPlayer']then U=game.Players.LocalPlayer: FindFirstChild'PlayerGui'if V and V:IsA'PlayerGui'then if(E.Dimensions==1 and R.
FindFirstChild'PlayerGui'if U and U:IsA'PlayerGui'then if(D.Dimensions==1 and Q. magnitude>3)or E.Dimensions>1 then E.Adorn.Parent=V end end end if not(V~=nil)
magnitude>3)or D.Dimensions>1 then D.Adorn.Parent=U end end end if not(U~=nil) then V=game:GetService'CoreGui'if(E.Dimensions==1 and R.magnitude>3)or E.
then U=game:GetService'CoreGui'if(D.Dimensions==1 and Q.magnitude>3)or D. Dimensions>1 then E.Adorn.Parent=V end end end local Q Q=function(R)if not R
Dimensions>1 then D.Adorn.Parent=U end end end local P P=function(Q)if not Q
then error'Error: RbxStamper.DoStamperMouseMove: Mouse is nil'return end if not then error'Error: RbxStamper.DoStamperMouseMove: Mouse is nil'return end if not
Q:IsA'Mouse'then error('Error: RbxStamper.DoStamperMouseMove: Mouse is of type', R:IsA'Mouse'then error('Error: RbxStamper.DoStamperMouseMove: Mouse is of type',
Q.className,'should be of type Mouse')return end if not Q.Target then local R=c( R.className,'should be of type Mouse')return end if not R.Target then local S=d(
Q)if nil==R then return end end if not y then return end local R,S,T=v(Q,y)if R)if nil==S then return end end if not z then return end local S,T,U=w(R,z)if
not R then error'RbxStamper.DoStamperMouseMove No configFound, returning'return not S then error'RbxStamper.DoStamperMouseMove No configFound, returning'return
end local U=0 if k(y.CurrentParts)and T~=1 and T~=4 then if T==3 then U=0-x+k(y. end local V=0 if l(z.CurrentParts)and U~=1 and U~=4 then if U==3 then V=0-y+l(z.
CurrentParts)elseif T==0 then U=2-x+k(y.CurrentParts)elseif T==5 then U=3-x+k(y. CurrentParts)elseif U==0 then V=2-y+l(z.CurrentParts)elseif U==5 then V=3-y+l(z.
CurrentParts)elseif T==2 then U=1-x+k(y.CurrentParts)end end local V=math.pi/2 x CurrentParts)elseif U==2 then V=1-y+l(z.CurrentParts)end end local W=math.pi/2 y
=x+U if y.CurrentParts:IsA'Model'or y.CurrentParts:IsA'Tool'then f(y. =y+V if z.CurrentParts:IsA'Model'or z.CurrentParts:IsA'Tool'then g(z.
CurrentParts,V*U)else y.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,V*U,0){y CurrentParts,W*V)else z.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,W*V,0,{z
.CurrentParts.CFrame}end local W,X=q(y.CurrentParts)local Y if y.CurrentParts: .CurrentParts.CFrame})end local X,Y=r(z.CurrentParts)local Z if z.CurrentParts:
IsA'Model'then Y=y.CurrentParts:GetModelCFrame()else Y=y.CurrentParts.CFrame end IsA'Model'then Z=z.CurrentParts:GetModelCFrame()else Z=z.CurrentParts.CFrame end
W=W+(S.p-Y.p)X=X+(S.p-Y.p)if h(W+d,X-d)then if L.CFrame then if y.CurrentParts: X=X+(T.p-Z.p)Y=Y+(T.p-Z.p)if i(X+e,Y-e)then if M.CFrame then if z.CurrentParts:
FindFirstChild('ClusterMaterial',true)then local ak=y.CurrentParts: FindFirstChild('ClusterMaterial',true)then local al=z.CurrentParts:
FindFirstChild('ClusterMaterial',true)if ak:IsA'Vector3Value'then local al=y. FindFirstChild('ClusterMaterial',true)if al:IsA'Vector3Value'then local am=z.
CurrentParts:FindFirstChild('ClusterMaterial',true)if al then al=clusterMat end CurrentParts:FindFirstChild('ClusterMaterial',true)if am then am=clusterMat end
end end end return end if N()then local ak=game.Workspace.Terrain:WorldToCell(S. end end end return end if O()then local al=game.Workspace.Terrain:WorldToCell(T.
p)local al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax=game.Workspace.Terrain: p)local am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay=game.Workspace.Terrain:
CellCenterToWorld(ak.X,ak.Y,ak.Z),S:components()S=CFrame.new(al.X,al.Y,al.Z,ap, CellCenterToWorld(al.X,al.Y,al.Z),T:components()T=CFrame.new(am.X,am.Y,am.Z,aq,
aq,ar,as,at,au,av,aw,ax)end m(S,y.CurrentParts)L.CFrame=S if y.CurrentParts: ar,as,at,au,av,aw,ax,ay)end n(T,z.CurrentParts)M.CFrame=T if z.CurrentParts:
FindFirstChild('ClusterMaterial',true)then local ak=y.CurrentParts: FindFirstChild('ClusterMaterial',true)then local al=z.CurrentParts:
FindFirstChild('ClusterMaterial',true)if ak:IsA'Vector3Value'then L. FindFirstChild('ClusterMaterial',true)if al:IsA'Vector3Value'then M.
TerrainOrientation=ak.Value.Z end end if Q and Q.Target and Q.Target.Parent then TerrainOrientation=al.Value.Z end end if R and R.Target and R.Target.Parent then
local ak=Q.Target:FindFirstChild'RobloxModel'if not ak then ak=Q.Target.Parent: local al=R.Target:FindFirstChild'RobloxModel'if not al then al=R.Target.Parent:
FindFirstChild'RobloxModel'end local al=y.CurrentParts:FindFirstChild FindFirstChild'RobloxModel'end local am=z.CurrentParts:FindFirstChild
'UnstampableFaces'do local ao,ap='',''if ak and ak.Parent:FindFirstChild 'UnstampableFaces'do local ap,aq='',''if al and al.Parent:FindFirstChild
'UnstampableFaces'then ao=ak.Parent.UnstampableFaces.Value end if al then ap=al. 'UnstampableFaces'then ap=al.Parent.UnstampableFaces.Value end if am then aq=am.
Value end local aq=0 if ak then aq=o(ak.Parent,game.Workspace.CurrentCamera. Value end local ar=0 if al then ar=p(al.Parent,game.Workspace.CurrentCamera.
CoordinateFrame.p,Q.Hit.p)end for ar in string.gmatch(ao,'[^,]+')do if aq== CoordinateFrame.p,R.Hit.p)end for as in string.gmatch(ap,'[^,]+')do if ar==
tonumber(ar)then H=true game.JointsService:ClearJoinAfterMoveJoints()return end tonumber(as)then I=true game.JointsService:ClearJoinAfterMoveJoints()return end
end aq=o(y.CurrentParts,Q.Hit.p,game.Workspace.CurrentCamera.CoordinateFrame.p) end ar=p(z.CurrentParts,R.Hit.p,game.Workspace.CurrentCamera.CoordinateFrame.p)
for as in string.gmatch(ap,'[^,]+')do if aq==tonumber(as)then H=true game. for at in string.gmatch(aq,'[^,]+')do if ar==tonumber(at)then I=true game.
JointsService:ClearJoinAfterMoveJoints()return end end end end H=false game. JointsService:ClearJoinAfterMoveJoints()return end end end end I=false game.
JointsService:SetJoinAfterMoveInstance(y.CurrentParts)if(not pcall(function()if JointsService:SetJoinAfterMoveInstance(z.CurrentParts)if(not pcall(function()
Q and Q.Target and not(Q.Target.Parent:FindFirstChild'RobloxModel'~=nil)then return end))then error
return else return end end))then error
[[Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check]]game. [[Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check]]game.
JointsService:ClearJoinAfterMoveJoints()Q=nil return end if Q and Q.Target and JointsService:ClearJoinAfterMoveJoints()R=nil return end if R and R.Target and
not(Q.Target.Parent:FindFirstChild'RobloxModel'~=nil)then game.JointsService: not(R.Target.Parent:FindFirstChild'RobloxModel'~=nil)then game.JointsService:
SetJoinAfterMoveTarget(Q.Target)else game.JointsService:SetJoinAfterMoveTarget( SetJoinAfterMoveTarget(R.Target)else game.JointsService:SetJoinAfterMoveTarget(
nil)end game.JointsService:ShowPermissibleJoints()if N()and D and D.Start then nil)end game.JointsService:ShowPermissibleJoints()if O()and E and E.Start then
return O()end end local ak ak=function(al,ao)if E and E['Paused']then return end return P()end end local al al=function(am,ap)if F and F['Paused']then return end
al=string.lower(al)if al=='r'and not k(y.CurrentParts)then x=x+1 local ap=y. am=string.lower(am)if am=='r'and not l(z.CurrentParts)then y=y+1 local aq=z.
CurrentParts:FindFirstChild('ClusterMaterial',true)if ap and ap:IsA CurrentParts:FindFirstChild('ClusterMaterial',true)if aq and aq:IsA
'Vector3Value'then ap.Value=Vector3.new(ap.Value.X,ap.Value.Y,(ap.Value.Z+1)%4) 'Vector3Value'then aq.Value=Vector3.new(aq.Value.X,aq.Value.Y,(aq.Value.Z+1)%4)
end local aq=math.pi/2 if y.CurrentParts:IsA'Model'or y.CurrentParts:IsA'Tool' end local ar=math.pi/2 if z.CurrentParts:IsA'Model'or z.CurrentParts:IsA'Tool'
then f(y.CurrentParts,aq)else y.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0, then g(z.CurrentParts,ar)else z.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,
aq,0)*y.CurrentParts.CFrame end local as,at=v(ao,y)if as then m(at,y. ar,0)*z.CurrentParts.CFrame end local at,au=w(ap,z)if at then n(au,z.
CurrentParts)return P(ao)end elseif al=='c'then if D.InternalLine and D. CurrentParts)return Q(ap)end elseif am=='c'then if E.InternalLine and E.
InternalLine.magnitude>0 and D.Dimensions<3 then D.MorePoints[D.Dimensions]=D. InternalLine.magnitude>0 and E.Dimensions<3 then E.MorePoints[E.Dimensions]=E.
End D.MoreLines[D.Dimensions]=D.InternalLine D.Dimensions=D.Dimensions+1 D. End E.MoreLines[E.Dimensions]=E.InternalLine E.Dimensions=E.Dimensions+1 E.
NewHint=true end end end J=ae.KeyDown:connect(function(al)return ak(al,ae)end) NewHint=true end return E end end K=af.KeyDown:connect(function(am)return al(am,
local al al=function()if D then D.Start=nil D.End=nil D.InternalLine=nil D. af)end)local am am=function()if E then E.Start=nil E.End=nil E.InternalLine=nil
NewHint=true end end local ao ao=function()local ap=game.CoreGui if game: E.NewHint=true end end local ap ap=function()local aq=game.CoreGui if game:
FindFirstChild'Players'then if game.Players['LocalPlayer']then if game.Players. FindFirstChild'Players'and game.Players['LocalPlayer']and game.Players.
LocalPlayer:FindFirstChild'PlayerGui'then ap=game.Players.LocalPlayer.PlayerGui LocalPlayer:FindFirstChild'PlayerGui'then aq=game.Players.LocalPlayer.PlayerGui
end end end if not y['ErrorBox']then return end y.ErrorBox.Parent=ap if y. end if not z['ErrorBox']then return end z.ErrorBox.Parent=aq if z.CurrentParts:
CurrentParts:IsA'Tool'then y.ErrorBox.Adornee=y.CurrentParts.Handle else y. IsA'Tool'then z.ErrorBox.Adornee=z.CurrentParts.Handle else z.ErrorBox.Adornee=z
ErrorBox.Adornee=y.CurrentParts end return delay(0,function()for aq=1,3 do if y[ .CurrentParts end return delay(0,function()for ar=1,3 do if z['ErrorBox']then z.
'ErrorBox']then y.ErrorBox.Visible=true end wait(0.13)if y['ErrorBox']then y. ErrorBox.Visible=true end wait(0.13)if z['ErrorBox']then z.ErrorBox.Visible=
ErrorBox.Visible=false end wait(0.13)end if y['ErrorBox']then y.ErrorBox.Adornee false end wait(0.13)end if z['ErrorBox']then z.ErrorBox.Adornee=nil z.ErrorBox.
=nil y.ErrorBox.Parent=Tool end end)end local ap ap=function(aq)if not aq then Parent=Tool end end)end local aq aq=function(ar)if not ar then error
error'Error: RbxStamper.DoStamperMouseDown: Mouse is nil'return end if not aq: 'Error: RbxStamper.DoStamperMouseDown: Mouse is nil'return end if not ar:IsA
IsA'Mouse'then error('Error: RbxStamper.DoStamperMouseDown: Mouse is of type',aq 'Mouse'then error('Error: RbxStamper.DoStamperMouseDown: Mouse is of type',ar.
.className,'should be of type Mouse')return end if not y then return end if N() className,'should be of type Mouse')return end if not z then return end if O()
then if aq and D then local as,at=y.CurrentParts:FindFirstChild( then if ar and E then local at,au=z.CurrentParts:FindFirstChild(
'MegaClusterCube',true),game.Workspace.Terrain if as then D.Dimensions=1 local 'MegaClusterCube',true),game.Workspace.Terrain if at then E.Dimensions=1 local
au=at:WorldToCell(as.CFrame.p)D.Start=at:CellCenterToWorld(au.X,au.Y,au.Z)return av=au:WorldToCell(at.CFrame.p)E.Start=au:CellCenterToWorld(av.X,av.Y,av.Z)return
else D.Dimensions=1 local au=at:WorldToCell(y.CurrentParts.CFrame.p)D.Start=at: else E.Dimensions=1 local av=au:WorldToCell(z.CurrentParts.CFrame.p)E.Start=au:
CellCenterToWorld(au.X,au.Y,au.Z)return end end end end local aq aq=function(as, CellCenterToWorld(av.X,av.Y,av.Z)return end end end end local ar ar=function(at,
at)as.TopSurface=at[1]as.BottomSurface=at[2]as.LeftSurface=at[3]as.RightSurface= au)at.TopSurface=au[1]at.BottomSurface=au[2]at.LeftSurface=au[3]at.RightSurface=
at[4]as.FrontSurface=at[5]as.BackSurface=at[6]return as end local as as=function au[4]at.FrontSurface=au[5]at.BackSurface=au[6]return at end local at at=function
(at,au)local av={}av[1]=at.TopSurface av[2]=at.BottomSurface av[3]=at. (au,av)local aw={}aw[1]=au.TopSurface aw[2]=au.BottomSurface aw[3]=au.
LeftSurface av[4]=at.RightSurface av[5]=at.FrontSurface av[6]=at.BackSurface au[ LeftSurface aw[4]=au.RightSurface aw[5]=au.FrontSurface aw[6]=au.BackSurface av[
at]=av end local at at=function(au)if not au then return nil end local av,aw,ax, au]=aw end local au au=function(av)if not av then return nil end local aw,ax,ay,
Q,R,S=0.7,1,au:Clone(),{},{},{}y={}y.DisabledScripts={}y.TransparencyTable={}y. R,S,T=0.7,1,av:Clone(),{},{},{}z={}z.DisabledScripts={}z.TransparencyTable={}z.
MaterialTable={}y.CanCollideTable={}y.AnchoredTable={}y.ArchivableTable={}y. MaterialTable={}z.CanCollideTable={}z.AnchoredTable={}z.ArchivableTable={}z.
DecalTransparencyTable={}y.SurfaceTypeTable={}g(ax,R,Q,S)if#R<=0 then return nil DecalTransparencyTable={}z.SurfaceTypeTable={}h(ay,S,R,T)if#S<=0 then return nil
,'no parts found in modelToStamp'end for T,U in pairs(Q)do if not U.Disabled ,'no parts found in modelToStamp'end for U,V in pairs(R)do if not V.Disabled
then U.Disabled=true y.DisabledScripts[#y.DisabledScripts+1]=U end end for V,W then V.Disabled=true z.DisabledScripts[#z.DisabledScripts+1]=V end end for W,X
in pairs(R)do y.TransparencyTable[W]=W.Transparency W.Transparency=aw+(1-aw)*W. in pairs(S)do z.TransparencyTable[X]=X.Transparency X.Transparency=ax+(1-ax)*X.
Transparency y.MaterialTable[W]=W.Material W.Material=Enum.Material.Plastic y. Transparency z.MaterialTable[X]=X.Material X.Material=Enum.Material.Plastic z.
CanCollideTable[W]=W.CanCollide W.CanCollide=false y.AnchoredTable[W]=W.Anchored CanCollideTable[X]=X.CanCollide X.CanCollide=false z.AnchoredTable[X]=X.Anchored
W.Anchored=true y.ArchivableTable[W]=W.Archivable W.Archivable=false as(W,y. X.Anchored=true z.ArchivableTable[X]=X.Archivable X.Archivable=false at(X,z.
SurfaceTypeTable)local X,Y=0.5,0.5 delay(0,function()wait(X)local ay=tick()local SurfaceTypeTable)local Y,Z=0.5,0.5 delay(0,function()wait(Y)local az=tick()local
az=ay while(az-ay)<Y and W and W:IsA'BasePart'and W.Transparency>av do local aA= aA=az while(aA-az)<Z and X and X:IsA'BasePart'and X.Transparency>aw do local aB=
1-(((az-ay)/Y)*(aw-av))if y['TransparencyTable']and y.TransparencyTable[W]then W 1-(((aA-az)/Z)*(ax-aw))if z['TransparencyTable']and z.TransparencyTable[X]then X
.Transparency=aA+(1-aA)*y.TransparencyTable[W]end wait(0.03)az=tick()end if W .Transparency=aB+(1-aB)*z.TransparencyTable[X]end wait(0.03)aA=tick()end if X
and W:IsA'BasePart'then if y['TransparencyTable']and y.TransparencyTable[W]then and X:IsA'BasePart'then if z['TransparencyTable']and z.TransparencyTable[X]then
W.Transparency=av+(1-av)*y.TransparencyTable[W]end end end)end for ay,az in X.Transparency=aw+(1-aw)*z.TransparencyTable[X]end end end)end for az,aA in
pairs(S)do y.DecalTransparencyTable[az]=az.Transparency az.Transparency=av+(1-av pairs(T)do z.DecalTransparencyTable[aA]=aA.Transparency aA.Transparency=aw+(1-aw
)*az.Transparency end j(ax,true)j(ax,false)y.CurrentParts=ax if k(ax)then y. )*aA.Transparency end k(ay,true)k(ay,false)z.CurrentParts=ay if l(ay)then z.
CurrentParts:ResetOrientationToIdentity()x=0 else local aA=x*math.pi/2 if y. CurrentParts:ResetOrientationToIdentity()y=0 else local aB=y*math.pi/2 if z.
CurrentParts:IsA'Model'or y.CurrentParts:IsA'Tool'then f(y.CurrentParts,aA)else CurrentParts:IsA'Model'or z.CurrentParts:IsA'Tool'then g(z.CurrentParts,aB)else
y.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,aA,0)*y.CurrentParts.CFrame z.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,aB,0)*z.CurrentParts.CFrame
end end local aA=y.CurrentParts:FindFirstChild('ClusterMaterial',true)if aA and end end local aB=z.CurrentParts:FindFirstChild('ClusterMaterial',true)if aB and
aA:IsA'Vector3Value'then aA.Value=Vector3.new(aA.Value.X,aA.Value.Y,(aA.Value.Z+ aB:IsA'Vector3Value'then aB.Value=Vector3.new(aB.Value.X,aB.Value.Y,(aB.Value.Z+
x)%4)end local X,Y=v(ae,y)if X then y.CurrentParts=m(Y,y.CurrentParts)end game. y)%4)end local Y,Z=w(af,z)if Y then z.CurrentParts=n(Z,z.CurrentParts)end game.
JointsService:SetJoinAfterMoveInstance(y.CurrentParts)return ax,R end local au JointsService:SetJoinAfterMoveInstance(z.CurrentParts)return ay,S end local av
au=function(av,aw)local ax=game.Workspace.Terrain.CellCenterToWorld local ay=ax( av=function(aw,ax)local ay=game.Workspace.Terrain.CellCenterToWorld local az=ay(
game.Workspace.Terrain,av.X,av.Y,av.Z)local az,aA=game.Workspace: game.Workspace.Terrain,aw.X,aw.Y,aw.Z)local aA,aB=game.Workspace:
FindPartsInRegion3(Region3.new(ay-Vector3.new(2,2,2)+d,ay+Vector3.new(2,2,2)-d), FindPartsInRegion3(Region3.new(az-Vector3.new(2,2,2)+e,az+Vector3.new(2,2,2)-e),
y.CurrentParts,100),false for Q=1,#az do if t(az[Q])then aA=true break end end z.CurrentParts,100),false for R=1,#aA do if u(aA[R])then aB=true break end end
if not aA then local Q={}for R=1,#az do if az[R].Parent and not Q[az[R].Parent] if not aB then local R={}for S=1,#aA do if aA[S].Parent and not R[aA[S].Parent]
and az[R].Parent:FindFirstChild(az[R].Parent:FindFirstChild'Humanoid':IsA and aA[S].Parent:FindFirstChild(aA[S].Parent:FindFirstChild'Humanoid':IsA
'Humanoid')then local S=az[R].Parent:FindFirstChild'Torso'Q[az[R].Parent]=true 'Humanoid')then local T=aA[S].Parent:FindFirstChild'Torso'R[aA[S].Parent]=true
if S then local U=ay.Y+5 if u(S,U,y)then S.CFrame=S.CFrame+Vector3.new(0,U-S. if T then local V=az.Y+5 if v(T,V,z)then T.CFrame=T.CFrame+Vector3.new(0,V-T.
CFrame.p.Y,0)else aA=true break end end end end end if not aA then local Q=true CFrame.p.Y,0)else aB=true break end end end end end if not aB then local R=true
if aw then if aj then av=ax(game.Workspace.Terrain,av.X,av.Y,av.Z)if(av.X+2>aj. if ax then if ak then aw=ay(game.Workspace.Terrain,aw.X,aw.Y,aw.Z)if(aw.X+2>ak.
CFrame.p.X+aj.Size.X/2)or(av.X-2<aj.CFrame.p.X-aj.Size.X/2)or(av.Y+2>aj.CFrame.p CFrame.p.X+ak.Size.X/2)or(aw.X-2<ak.CFrame.p.X-ak.Size.X/2)or(aw.Y+2>ak.CFrame.p
.Y+aj.Size.Y/2)or(av.Y-2<aj.CFrame.p.Y-aj.Size.Y/2)or(av.Z+2>aj.CFrame.p.Z+aj. .Y+ak.Size.Y/2)or(aw.Y-2<ak.CFrame.p.Y-ak.Size.Y/2)or(aw.Z+2>ak.CFrame.p.Z+ak.
Size.Z/2)or(av.Z-2<aj.CFrame.p.Z-aj.Size.Z/2)then Q=false end end end return Q Size.Z/2)or(aw.Z-2<ak.CFrame.p.Z-ak.Size.Z/2)then R=false end end end return R
end return false end local av av=function(aw)local ax,ay,az,aA,Q,R,S,U,W=false, end return false end local aw aw=function(ax)local ay,az,aA,aB,R,S,T,V,X=false,
game.Workspace.Terrain,D.InternalLine,game.Workspace.Terrain.MaxExtents.Max,game game.Workspace.Terrain,E.InternalLine,game.Workspace.Terrain.MaxExtents.Max,game
.Workspace.Terrain.MaxExtents.Min,1,0,0,false if y.CurrentParts:FindFirstChild .Workspace.Terrain.MaxExtents.Min,1,0,0,false if z.CurrentParts:FindFirstChild
'AutoWedge'then W=true end if y.CurrentParts:FindFirstChild('ClusterMaterial', 'AutoWedge'then X=true end if z.CurrentParts:FindFirstChild('ClusterMaterial',
true)then R=y.CurrentParts:FindFirstChild('ClusterMaterial',true)if R:IsA true)then S=z.CurrentParts:FindFirstChild('ClusterMaterial',true)if S:IsA
'Vector3Value'then S=R.Value.Y U=R.Value.Z R=R.Value.X elseif R:IsA'IntValue' 'Vector3Value'then T=S.Value.Y V=S.Value.Z S=S.Value.X elseif S:IsA'IntValue'
then R=R.Value end end if D.Adorn.Parent and D.Start and((D.Dimensions>1)or(az then S=S.Value end end if E.Adorn.Parent and E.Start and((E.Dimensions>1)or(aA
and az.magnitude>0))then local X,Y,aB,aC,aD,aE,aF,aG=game.Workspace.Terrain: and aA.magnitude>0))then local Y,Z,aC,aD,aE,aF,aG,aH=game.Workspace.Terrain:
WorldToCell(D.Start),{0,0,0},{0,0,0},{0,0,0},{nil,nil,nil},{Vector3.new(0,0,0), WorldToCell(E.Start),{0,0,0},{0,0,0},{0,0,0},{nil,nil,nil},{Vector3.new(0,0,0),
Vector3.new(0,0,0),Vector3.new(0,0,0)},{Vector3.new(1,0,0),Vector3.new(0,1,0), Vector3.new(0,0,0),Vector3.new(0,0,0)},{Vector3.new(1,0,0),Vector3.new(0,1,0),
Vector3.new(0,0,1)},{}if D.Dimensions>1 then table.insert(aG,D.MoreLines[1])end Vector3.new(0,0,1)},{}if E.Dimensions>1 then table.insert(aH,E.MoreLines[1])end
if az and az.magnitude>0 then table.insert(aG,az)end if D.Dimensions>2 then if aA and aA.magnitude>0 then table.insert(aH,aA)end if E.Dimensions>2 then
table.insert(aG,D.MoreLines[2])end for aH=1,#aG do aG[aH]=Vector3.new(math. table.insert(aH,E.MoreLines[2])end for aI=1,#aH do aH[aI]=Vector3.new(math.
floor(aG[aH].X+0.5),math.floor(aG[aH].Y+0.5),math.floor(aG[aH].Z+0.5))if aG[aH]. floor(aH[aI].X+0.5),math.floor(aH[aI].Y+0.5),math.floor(aH[aI].Z+0.5))if aH[aI].
X>0 then Y[aH]=1 elseif aG[aH].X<0 then Y[aH]=-1 end if aG[aH].Y>0 then aB[aH]=1 X>0 then Z[aI]=1 elseif aH[aI].X<0 then Z[aI]=-1 end if aH[aI].Y>0 then aC[aI]=1
elseif aG[aH].Y<0 then aB[aH]=-1 end if aG[aH].Z>0 then aC[aH]=1 elseif aG[aH].Z elseif aH[aI].Y<0 then aC[aI]=-1 end if aH[aI].Z>0 then aD[aI]=1 elseif aH[aI].Z
<0 then aC[aH]=-1 end aD[aH]=Vector3.new(Y[aH],aB[aH],aC[aH])if aD[aH].magnitude <0 then aD[aI]=-1 end aE[aI]=Vector3.new(Z[aI],aC[aI],aD[aI])if aE[aI].magnitude
<0.9 then aD[aH]=nil end end if not aG[2]then aG[2]=Vector3.new(0,0,0)end if not <0.9 then aE[aI]=nil end end if not aH[2]then aH[2]=Vector3.new(0,0,0)end if not
aG[3]then aG[3]=Vector3.new(0,0,0)end local aH,aI=y.CurrentParts:FindFirstChild( aH[3]then aH[3]=Vector3.new(0,0,0)end local aI,aJ=z.CurrentParts:FindFirstChild(
'WaterForceTag',true),y.CurrentParts:FindFirstChild('WaterForceDirectionTag', 'WaterForceTag',true),z.CurrentParts:FindFirstChild('WaterForceDirectionTag',
true)while aE[3].magnitude*4<=aG[3].magnitude do local aJ=1 while aJ<4 do aE[2]= true)while aF[3].magnitude*4<=aH[3].magnitude do local aK=1 while aK<4 do aF[2]=
Vector3.new(0,0,0)while aE[2].magnitude*4<=aG[2].magnitude do local aK=1 while Vector3.new(0,0,0)while aF[2].magnitude*4<=aH[2].magnitude do local aL=1 while
aK<4 do aE[1]=Vector3.new(0,0,0)while aE[1].magnitude*4<=aG[1].magnitude do aL<4 do aF[1]=Vector3.new(0,0,0)while aF[1].magnitude*4<=aH[1].magnitude do
local aL=aE[1]+aE[2]+aE[3]local aM=Vector3int16.new(X.X+aL.X,X.Y+aL.Y,X.Z+aL.Z) local aM=aF[1]+aF[2]+aF[3]local aN=Vector3int16.new(Y.X+aM.X,Y.Y+aM.Y,Y.Z+aM.Z)
if aM.X>=Q.X and aM.Y>=Q.Y and aM.Z>=Q.Z and aM.X<aA.X and aM.Y<aA.Y and aM.Z<aA if aN.X>=R.X and aN.Y>=R.Y and aN.Z>=R.Z and aN.X<aB.X and aN.Y<aB.Y and aN.Z<aB
.Z then local aN=au(aM,aw)if aN then if aH then ay:SetWaterCell(aM.X,aM.Y,aM.Z, .Z then local aO=av(aN,ax)if aO then if aI then az:SetWaterCell(aN.X,aN.Y,aN.Z,
Enum.WaterForce[aH.Value],Enum.WaterDirection[aI.Value])else ay:SetCell(aM.X,aM. Enum.WaterForce[aI.Value],Enum.WaterDirection[aJ.Value])else az:SetCell(aN.X,aN.
Y,aM.Z,R,S,U)end ax=true if W then game.Workspace.Terrain:AutowedgeCells( Y,aN.Z,S,T,V)end ay=true if X then game.Workspace.Terrain:AutowedgeCells(
Region3int16.new(Vector3int16.new(aM.x-1,aM.y-1,aM.z-1),Vector3int16.new(aM.x+1, Region3int16.new(Vector3int16.new(aN.x-1,aN.y-1,aN.z-1),Vector3int16.new(aN.x+1,
aM.y+1,aM.z+1)))end end end aE[1]=aE[1]+aD[1]end if aD[2]then while aK<4 and aF[ aN.y+1,aN.z+1)))end end end aF[1]=aF[1]+aE[1]end if aE[2]then while aL<4 and aG[
aK]:Dot(aD[2])==0 do aK=aK+1 end if aK<4 then aE[2]=aE[2]+aF[aK]*aF[aK]:Dot(aD[2 aL]:Dot(aE[2])==0 do aL=aL+1 end if aL<4 then aF[2]=aF[2]+aG[aL]*aG[aL]:Dot(aE[2
])end aK=aK+1 else aE[2]=Vector3.new(1,0,0)aK=4 end if aE[2].magnitude*4>aG[2]. ])end aL=aL+1 else aF[2]=Vector3.new(1,0,0)aL=4 end if aF[2].magnitude*4>aH[2].
magnitude then aK=4 end end end if aD[3]then while aJ<4 and aF[aJ]:Dot(aD[3])==0 magnitude then aL=4 end end end if aE[3]then while aK<4 and aG[aK]:Dot(aE[3])==0
do aJ=aJ+1 end if aJ<4 then aE[3]=aE[3]+aF[aJ]*aF[aJ]:Dot(aD[3])end aJ=aJ+1 else do aK=aK+1 end if aK<4 then aF[3]=aF[3]+aG[aK]*aG[aK]:Dot(aE[3])end aK=aK+1 else
aE[3]=Vector3.new(1,0,0)aJ=4 end if aE[3].magnitude*4>aG[3].magnitude then aJ=4 aF[3]=Vector3.new(1,0,0)aK=4 end if aF[3].magnitude*4>aH[3].magnitude then aK=4
end end end end D.Start=nil D.Adorn.Parent=nil if ax then y.CurrentParts.Parent= end end end end E.Start=nil E.Adorn.Parent=nil if ay then z.CurrentParts.Parent=
nil pcall(function()return game:GetService'ChangeHistoryService':SetWaypoint nil pcall(function()return game:GetService'ChangeHistoryService':SetWaypoint
'StamperMulti'end)end return ax end local aw aw=function(ax)if not ax then error 'StamperMulti'end)end return ay end local ax ax=function(ay)if not ay then error
'Error: RbxStamper.DoStamperMouseUp: Mouse is nil'return false end if not ax:IsA 'Error: RbxStamper.DoStamperMouseUp: Mouse is nil'return false end if not ay:IsA
'Mouse'then error('Error: RbxStamper.DoStamperMouseUp: Mouse is of type',ax. 'Mouse'then error('Error: RbxStamper.DoStamperMouseUp: Mouse is of type',ay.
className,'should be of type Mouse')return false end if not y.Dragger then error className,'should be of type Mouse')return false end if not z.Dragger then error
[[Error: RbxStamper.DoStamperMouseUp: stampData.Dragger is nil]]return false end [[Error: RbxStamper.DoStamperMouseUp: stampData.Dragger is nil]]return false end
if not D then return false end local ay if ai then local az,aA=nil,N()if aA and if not E then return false end local az if aj then local aA,aB=nil,O()if aB and
D and D.Start and D.InternalLine and D.InternalLine.magnitude>0 then az=true ay= E and E.Start and E.InternalLine and E.InternalLine.magnitude>0 then aA=true az=
true else az,ay=a.CanEditRegion(y.CurrentParts,aj)end if not az then if w then true else aA,az=b.CanEditRegion(z.CurrentParts,ak)end if not aA then if x~=nil
w()end return false end end if H then ao()return false end local az az,ay=a. then x()end return false end end if I then ap()return false end local aA aA,az=b
CanEditRegion(y.CurrentParts,aj)if not az then if w then w()end return false end .CanEditRegion(z.CurrentParts,ak)if not aA then if x~=nil then x()end return
local aA,aB=q(y.CurrentParts)local aC,aD=v(ax,y)if aC and not D.Adorn.Parent false end local aB,aC=r(z.CurrentParts)local aD,aE=w(ay,z)if aD and not E.Adorn.
then if h(aA+d,aB-d)then ao()return false end local aE=game.Workspace: Parent then if i(aB+e,aC-e)then ap()return false end local aF=game.Workspace:
FindPartsInRegion3(Region3.new(aA+d,aB-d),y.CurrentParts,100)for aF=1,#aE do if FindPartsInRegion3(Region3.new(aB+e,aC-e),z.CurrentParts,100)for aG=1,#aF do if
t(aE[aF])then ao()return false end end local aF={}for aG=1,#aE do if aE[aG]. u(aF[aG])then ap()return false end end local aG={}for aH=1,#aF do if aF[aH].
Parent and not aF[aE[aG].Parent]and aE[aG].Parent:FindFirstChild'Humanoid'and aE Parent and not aG[aF[aH].Parent]and aF[aH].Parent:FindFirstChild'Humanoid'and aF
[aG].Parent:FindFirstChild'Humanoid':IsA'Humanoid'then local aH=aE[aG].Parent: [aH].Parent:FindFirstChild'Humanoid':IsA'Humanoid'then local aI=aF[aH].Parent:
FindFirstChild'Torso'aF[aE[aG].Parent]=true if aH then local aI=aB.Y+3 if u(aH, FindFirstChild'Torso'aG[aF[aH].Parent]=true if aI then local aJ=aC.Y+3 if v(aI,
aI,y)then aH.CFrame=aH.CFrame+Vector3.new(0,aI-aH.CFrame.p.Y,0)else ao()return aJ,z)then aI.CFrame=aI.CFrame+Vector3.new(0,aJ-aI.CFrame.p.Y,0)else ap()return
false end end end end elseif(not aC)and not(D.Start and D.Adorn.Parent)then al() false end end end end elseif(not aD)and not(E.Start and E.Adorn.Parent)then am()
return false end if game:FindFirstChild'Players'then if game.Players[ return false end if game:FindFirstChild'Players'then if game.Players[
'LocalPlayer']then if game.Players.LocalPlayer['Character']then local aE=game. 'LocalPlayer']then if game.Players.LocalPlayer['Character']then local aF=game.
Players.LocalPlayer.Character local aF=aE:FindFirstChild'StampTracker'if aF and Players.LocalPlayer.Character local aG=aF:FindFirstChild'StampTracker'if aG and
not aF.Value then aF.Value=true end end end end if D.Start and D.Adorn.Parent not aG.Value then aG.Value=true end end end end if E.Start and E.Adorn.Parent
and N()then if av(ay)or ay then y.CurrentParts.Parent=nil return true end end D. and O()then if aw(az)or az then z.CurrentParts.Parent=nil return true end end E.
Start=nil D.Adorn.Parent=nil local aE=game.Workspace.Terrain if N()then local aF Start=nil E.Adorn.Parent=nil local aF=game.Workspace.Terrain if O()then local aG
if y.CurrentParts:IsA'Model'then aF=aE:WorldToCell(y.CurrentParts: if z.CurrentParts:IsA'Model'then aG=aF:WorldToCell(z.CurrentParts:
GetModelCFrame().p)else aF=aE:WorldToCell(y.CurrentParts.CFrame.p)end local aG, GetModelCFrame().p)else aG=aF:WorldToCell(z.CurrentParts.CFrame.p)end local aH,
aH=game.Workspace.Terrain.MaxExtents.Max,game.Workspace.Terrain.MaxExtents.Min aI=game.Workspace.Terrain.MaxExtents.Max,game.Workspace.Terrain.MaxExtents.Min
if au(aF,false)then local aI,aJ,aK=y.CurrentParts:FindFirstChild( if av(aG,false)then local aJ,aK,aL=z.CurrentParts:FindFirstChild(
'ClusterMaterial',true),y.CurrentParts:FindFirstChild('WaterForceTag',true),y. 'ClusterMaterial',true),z.CurrentParts:FindFirstChild('WaterForceTag',true),z.
CurrentParts:FindFirstChild('WaterForceDirectionTag',true)if aF.X>=aH.X and aF.Y CurrentParts:FindFirstChild('WaterForceDirectionTag',true)if aG.X>=aI.X and aG.Y
>=aH.Y and aF.Z>=aH.Z and aF.X<aG.X and aF.Y<aG.Y and aF.Z<aG.Z then if aJ then >=aI.Y and aG.Z>=aI.Z and aG.X<aH.X and aG.Y<aH.Y and aG.Z<aH.Z then if aK then
aE:SetWaterCell(aF.X,aF.Y,aF.Z,Enum.WaterForce[aJ.Value],Enum.WaterDirection[aK. aF:SetWaterCell(aG.X,aG.Y,aG.Z,Enum.WaterForce[aK.Value],Enum.WaterDirection[aL.
Value])elseif not aI then aE:SetCell(aF.X,aF.Y,aF.Z,M.Material,M.clusterType,x%4 Value])elseif not aJ then aF:SetCell(aG.X,aG.Y,aG.Z,N.Material,N.clusterType,y%4
)elseif aI:IsA'Vector3Value'then aE:SetCell(aF.X,aF.Y,aF.Z,aI.Value.X,aI.Value.Y )elseif aJ:IsA'Vector3Value'then aF:SetCell(aG.X,aG.Y,aG.Z,aJ.Value.X,aJ.Value.Y
,aI.Value.Z)else aE:SetCell(aF.X,aF.Y,aF.Z,aI.Value,0,0)end local aL=false if y. ,aJ.Value.Z)else aF:SetCell(aG.X,aG.Y,aG.Z,aJ.Value,0,0)end local aM=false if z.
CurrentParts:FindFirstChild'AutoWedge'then aL=true end if aL then game.Workspace CurrentParts:FindFirstChild'AutoWedge'then aM=true end if aM then game.Workspace
.Terrain:AutowedgeCells(Region3int16.new(Vector3int16.new(aF.x-1,aF.y-1,aF.z-1), .Terrain:AutowedgeCells(Region3int16.new(Vector3int16.new(aG.x-1,aG.y-1,aG.z-1),
Vector3int16.new(aF.x+1,aF.y+1,aF.z+1)))end y.CurrentParts.Parent=nil pcall( Vector3int16.new(aG.x+1,aG.y+1,aG.z+1)))end z.CurrentParts.Parent=nil pcall(
function()return game:GetService'ChangeHistoryService':SetWaypoint function()return game:GetService'ChangeHistoryService':SetWaypoint
'StamperSingle'end)return true end else ao()return false end end local aF aF= 'StamperSingle'end)return true end else ap()return false end end local aG aG=
function()if game:FindFirstChild'Players'then if game.Players['LocalPlayer']then function()if game:FindFirstChild'Players'and game.Players['LocalPlayer']then
return game.Players.LocalPlayer end end return nil end if y.CurrentParts:IsA return game.Players.LocalPlayer end end if z.CurrentParts:IsA'Model'or z.
'Model'or y.CurrentParts:IsA'Tool'then if y.CurrentParts:IsA'Model'then local aG CurrentParts:IsA'Tool'then if z.CurrentParts:IsA'Model'then local aH,aI={},{}ac(
,aH={},{}ab(y.CurrentParts,aG,aH)y.CurrentParts:BreakJoints()y.CurrentParts: z.CurrentParts,aH,aI)z.CurrentParts:BreakJoints()z.CurrentParts:MakeJoints()ad(
MakeJoints()ac(aG,aH)end local aG,aH=y.CurrentParts:FindFirstChild'PlayerIdTag', aH,aI)end local aH,aI=z.CurrentParts:FindFirstChild'PlayerIdTag',z.CurrentParts:
y.CurrentParts:FindFirstChild'PlayerNameTag'if(aG~=nil)then local aI=aF()if(aI~= FindFirstChild'PlayerNameTag'if(aH~=nil)then local aJ=aG()if(aJ~=nil)then aH.
nil)then aG.Value=aI.userId end end if(aH~=nil)then if game:FindFirstChild(game. Value=aJ.userId end end if(aI~=nil)then if game:FindFirstChild(game.Players[
Players['LocalPlayer'])then local aI=game.Players.LocalPlayer if(aI~=nil)then aH 'LocalPlayer'])then local aJ=game.Players.LocalPlayer if(aJ~=nil)then aI.Value=
.Value=aI.Name end end end if not(y.CurrentParts:FindFirstChild'RobloxModel'~= aJ.Name end end end if not(z.CurrentParts:FindFirstChild'RobloxModel'~=nil)then
nil)then local aI=Instance.new'BoolValue'aI.Name='RobloxModel'aI.Parent=y. a('BoolValue','RobloxModel',{Parent=z.CurrentParts})if not(z.CurrentParts:
CurrentParts if not(y.CurrentParts:FindFirstChild'RobloxStamper'~=nil)then local FindFirstChild'RobloxStamper'~=nil)then a('BoolValue','RobloxStamper',{Parent=z.
aJ=Instance.new'BoolValue'aJ.Name='RobloxStamper'aJ.Parent=y.CurrentParts end CurrentParts})end end else z.CurrentParts:BreakJoints()if not(z.CurrentParts:
end else y.CurrentParts:BreakJoints()if not(y.CurrentParts:FindFirstChild FindFirstChild'RobloxStamper'~=nil)then a('BoolValue','RobloxStamper',{Parent=z.
'RobloxStamper'~=nil)then local aG=Instance.new'BoolValue'aG.Name= CurrentParts})end end if not createJoints then game.JointsService:
'RobloxStamper'aG.Parent=y.CurrentParts end end if not createJoints then game. CreateJoinAfterMoveJoints()end for aH,aI in pairs(z.TransparencyTable)do aH.
JointsService:CreateJoinAfterMoveJoints()end for aG,aH in pairs(y. Transparency=aI end for aJ,aK in pairs(z.ArchivableTable)do aJ.Archivable=aK end
TransparencyTable)do aG.Transparency=aH end for aI,aJ in pairs(y.ArchivableTable for aL,aM in pairs(z.MaterialTable)do aL.Material=aM end for aN,aO in pairs(z.
)do aI.Archivable=aJ end for aK,aL in pairs(y.MaterialTable)do aK.Material=aL CanCollideTable)do aN.CanCollide=aO end for R,S in pairs(z.AnchoredTable)do R.
end for aM,aN in pairs(y.CanCollideTable)do aM.CanCollide=aN end for Q,R in Anchored=S end for T,V in pairs(z.DecalTransparencyTable)do T.Transparency=V end
pairs(y.AnchoredTable)do Q.Anchored=R end for S,U in pairs(y. for X,Y in pairs(z.SurfaceTypeTable)do ar(X,Y)end if O()then z.CurrentParts.
DecalTransparencyTable)do S.Transparency=U end for W,X in pairs(y. Transparency=0 end k(z.CurrentParts,true)z.TransparencyTable=nil z.
SurfaceTypeTable)do aq(W,X)end if N()then y.CurrentParts.Transparency=0 end j(y. ArchivableTable=nil z.MaterialTable=nil z.CanCollideTable=nil z.AnchoredTable=
CurrentParts,true)y.TransparencyTable=nil y.ArchivableTable=nil y.MaterialTable= nil z.SurfaceTypeTable=nil if not(z.CurrentParts:FindFirstChild'RobloxModel'~=
nil y.CanCollideTable=nil y.AnchoredTable=nil y.SurfaceTypeTable=nil if not(y. nil)then a('BoolValue','RobloxModel',{Parent=z.CurrentParts})end if
CurrentParts:FindFirstChild'RobloxModel'~=nil)then local Y=Instance.new ghostRemovalScript then ghostRemovalScript.Parent=nil end for Z,aP in pairs(z.
'BoolValue'Y.Name='RobloxModel'Y.Parent=y.CurrentParts end if ghostRemovalScript DisabledScripts)do aP.Disabled=false end for aQ,aR in pairs(z.DisabledScripts)do
then ghostRemovalScript.Parent=nil end for Y,aO in pairs(y.DisabledScripts)do aO local aS=aR.Parent aR.Parent=nil aR:Clone().Parent=aS end z.DisabledScripts=nil
.Disabled=false end for aP,aQ in pairs(y.DisabledScripts)do local aR=aQ.Parent z.Dragger=nil z.CurrentParts=nil pcall(function()return game:GetService
aQ.Parent=nil aQ:Clone().Parent=aR end y.DisabledScripts=nil y.Dragger=nil y. 'ChangeHistoryService':SetWaypoint'StampedObject'end)return true end local ay ay
CurrentParts=nil pcall(function()return game:GetService'ChangeHistoryService': =function()for az=1,#J do J[az]:disconnect()J[az]=nil end J={}if z and z.
SetWaypoint'StampedObject'end)return true end local ax ax=function()for ay=1,#I CurrentParts then z.CurrentParts.Parent=nil z.CurrentParts:Remove()end am()
do I[ay]:disconnect()I[ay]=nil end I={}if y and y.CurrentParts then y. return game.JointsService:ClearJoinAfterMoveJoints()end local az az=function(aA,
CurrentParts.Parent=nil y.CurrentParts:Remove()end al()return game.JointsService aB,aC)local aD,aE={Vector3.new(1,0,0),Vector3.new(0,1,0),Vector3.new(0,0,1)},1
:ClearJoinAfterMoveJoints()end local ay ay=function(az,aA,aB)local aC,aD={ if aC<0 then aE=aE*(-1)aC=aC*(-1)end local aF=aE*aA:vectorToWorldSpace(aD[aC])
Vector3.new(1,0,0),Vector3.new(0,1,0),Vector3.new(0,0,1)},1 if aB<0 then aD=aD*( for aG=1,#aB do local aK=aB[aG]local aM=aK.CFrame:vectorToObjectSpace(aF)if math
-1)aB=aB*(-1)end local aE=aD*az:vectorToWorldSpace(aC[aB])for aF=1,#aA do local .abs(aM.X)>math.abs(aM.Y)then if math.abs(aM.X)>math.abs(aM.Z)then if aM.X>0
aJ=aA[aF]local aL=aJ.CFrame:vectorToObjectSpace(aE)if math.abs(aL.X)>math.abs(aL then aK.RightSurface='Unjoinable'else aK.LeftSurface='Unjoinable'end else if aM.
.Y)then if math.abs(aL.X)>math.abs(aL.Z)then if aL.X>0 then aJ.RightSurface= Z>0 then aK.BackSurface='Unjoinable'else aK.FrontSurface='Unjoinable'end end
'Unjoinable'else aJ.LeftSurface='Unjoinable'end else if aL.Z>0 then aJ. else if math.abs(aM.Y)>math.abs(aM.Z)then if aM.Y>0 then aK.TopSurface=
BackSurface='Unjoinable'else aJ.FrontSurface='Unjoinable'end end else if math. 'Unjoinable'else aK.BottomSurface='Unjoinable'end else if aM.Z>0 then aK.
abs(aL.Y)>math.abs(aL.Z)then if aL.Y>0 then aJ.TopSurface='Unjoinable'else aJ. BackSurface='Unjoinable'else aK.FrontSurface='Unjoinable'end end end end end
BottomSurface='Unjoinable'end else if aL.Z>0 then aJ.BackSurface='Unjoinable' local aA aA=function()local aB,aC=au(ae)if not aB or not aC then return end
else aJ.FrontSurface='Unjoinable'end end end end end local az az=function()local local aD=aB:FindFirstChild('UnjoinableFaces',true)if aD then for aE in string.
aA,aB=at(ad)if not aA or not aB then return end local aC=aA:FindFirstChild( gmatch(aD.Value,'[^,]*')do if tonumber(aE)then if aB:IsA'Model'then az(aB:
'UnjoinableFaces',true)if aC then for aD in string.gmatch(aC.Value,'[^,]*')do if GetModelCFrame(),aC,tonumber(aE))else az(aB.CFrame,aC,tonumber(aE))end end end
tonumber(aD)then if aA:IsA'Model'then ay(aA:GetModelCFrame(),aB,tonumber(aD)) end z.ErrorBox=B if aj then aB.Parent=aj else aB.Parent=game.Workspace end if aB
else ay(aA.CFrame,aB,tonumber(aD))end end end end y.ErrorBox=A if ai then aA. :FindFirstChild('ClusterMaterial',true)then local aE=aB:FindFirstChild(
Parent=ai else aA.Parent=game.Workspace end if aA:FindFirstChild( 'ClusterMaterial',true)if aE:IsA'Vector3Value'then N.Material=aE.Value.X N.
'ClusterMaterial',true)then local aD=aA:FindFirstChild('ClusterMaterial',true)if clusterType=aE.Value.Y N.clusterOrientation=aE.Value.Z elseif aE:IsA'IntValue'
aD:IsA'Vector3Value'then M.Material=aD.Value.X M.clusterType=aD.Value.Y M. then N.Material=aE.Value end end pcall(function()A=af.Target end)if A and not(A.
clusterOrientation=aD.Value.Z elseif aD:IsA'IntValue'then M.Material=aD.Value Parent:FindFirstChild'RobloxModel'~=nil)then game.JointsService:
end end pcall(function()z=ae.Target end)if z and not(z.Parent:FindFirstChild SetJoinAfterMoveTarget(A)else game.JointsService:SetJoinAfterMoveTarget(nil)end
'RobloxModel'~=nil)then game.JointsService:SetJoinAfterMoveTarget(z)else game. game.JointsService:ShowPermissibleJoints()for aE,aF in pairs(z.DisabledScripts)
JointsService:SetJoinAfterMoveTarget(nil)end game.JointsService: do if aF.Name=='GhostRemovalScript'then aF.Parent=z.CurrentParts end end z.
ShowPermissibleJoints()for aD,aE in pairs(y.DisabledScripts)do if aE.Name== Dragger=Instance.new'Dragger'z.Dragger:MouseDown(aC[1],Vector3.new(0,0,0,aC))z.
'GhostRemovalScript'then aE.Parent=y.CurrentParts end end y.Dragger=Instance.new Dragger:MouseUp()Q(af)table.insert(J,af.Move:connect(function()if G or H then
'Dragger'y.Dragger:MouseDown(aB[1],Vector3.new(0,0,0,aB))y.Dragger:MouseUp()P(ae return end G=true Q(af)G=false end))table.insert(J,af.Button1Down:connect(
)table.insert(I,ae.Move:connect(function()if F or G then return end F=true P(ae) function()return aq(af)end))table.insert(J,af.Button1Up:connect(function()H=true
F=false end))table.insert(I,ae.Button1Down:connect(function()return ap(ae)end)) while G do wait()end L.Value=ax(af)am()H=false end))L.Value=false end local aB
table.insert(I,ae.Button1Up:connect(function()G=true while F do wait()end K. aB=function(aC)if aC then if not aC:IsA'Model'and not aC:IsA'BasePart'then error
Value=aw(ae)al()G=false end))K.Value=false end local aA aA=function(aB)if aB
then if not aB:IsA'Model'and not aB:IsA'BasePart'then error
[[resetStamperState: newModelToStamp (first arg) is not nil, but not a model or part!]] [[resetStamperState: newModelToStamp (first arg) is not nil, but not a model or part!]]
end ad=aB end ax()return az()end aA()E.Stamped=K E.Paused=false E.LoadNewModel= end ae=aC end ay()return aA()end aB()F.Stamped=L F.Paused=false F.LoadNewModel=
function(aB)if aB and not aB:IsA'Model'and not aB:IsA'BasePart'then error function(aC)if aC and not aC:IsA'Model'and not aC:IsA'BasePart'then error
[[Control.LoadNewModel: newStampModel (first arg) is not a Model or Part!]] [[Control.LoadNewModel: newStampModel (first arg) is not a Model or Part!]]
return nil end return aA(aB)end E.ReloadModel=function()return aA()end E.Pause= return nil end return aB(aC)end F.ReloadModel=function()return aB()end F.Pause=
function()if not E.Paused then ax()E.Paused=true else return print function()if not F.Paused then ay()F.Paused=true else return print
[[RbxStamper Warning: Tried to call Control.Pause! when already paused]]end end [[RbxStamper Warning: Tried to call Control.Pause! when already paused]]end end
E.Resume=function()if E.Paused then az()E.Paused=false else return print F.Resume=function()if F.Paused then aA()F.Paused=false else return print
[[RbxStamper Warning: Tried to call Control.Resume! without Pausing First]]end [[RbxStamper Warning: Tried to call Control.Resume! without Pausing First]]end
end E.ResetRotation=function()end E.Destroy=function()for aB=1,#I do I[aB]: end F.ResetRotation=function()end F.Destroy=function()for aC=1,#J do J[aC]:
disconnect()I[aB]=nil end if J~=nil then J:disconnect()end game.JointsService: disconnect()J[aC]=nil end if K~=nil then K:disconnect()end game.JointsService:
ClearJoinAfterMoveJoints()if C~=nil then C:Destroy()end if B~=nil then B: ClearJoinAfterMoveJoints()if D~=nil then D:Destroy()end if C~=nil then C:
Destroy()end if A~=nil then A:Destroy()end if y~=nil then do local aB=y.Dragger Destroy()end if B~=nil then B:Destroy()end if z~=nil then do local aC=z.Dragger
if aB~=nil then aB:Destroy()end end end if y~=nil then do local aB=y. if aC~=nil then aC:Destroy()end end end if z~=nil then do local aC=z.
CurrentParts if aB~=nil then aB:Destroy()end end end if E and E['Stamped']then E CurrentParts if aC~=nil then aC:Destroy()end end end if F and F['Stamped']then F
.Stamped:Destroy()end E=nil end return E end a.Help=function(ad)if .Stamped:Destroy()end F=nil end return F end b.Help=function(ae)if
'GetStampModel'==ad or a.GetStampModel==ad then return 'GetStampModel'==ae or b.GetStampModel==ae then return
[[Function GetStampModel. Arguments: assetId, useAssetVersionId. assetId is the asset to load in, define useAssetVersionId as true if assetId is a version id instead of a relative assetId. Side effect: returns a model of the assetId, or a string with error message if something fails]] [[Function GetStampModel. Arguments: assetId, useAssetVersionId. assetId is the asset to load in, define useAssetVersionId as true if assetId is a version id instead of a relative assetId. Side effect: returns a model of the assetId, or a string with error message if something fails]]
elseif'SetupStamperDragger'==ad or a.SetupStamperDragger==ad then return elseif'SetupStamperDragger'==ae or b.SetupStamperDragger==ae then return
[[Function SetupStamperDragger. Side Effect: Creates 4x4 stamping mechanism for building out parts quickly. Arguments: ModelToStamp, Mouse, LegalStampCheckFunction. ModelToStamp should be a Model or Part, preferrably loaded from RbxStamper.GetStampModel and should have extents that are multiples of 4. Mouse should be a mouse object (obtained from things such as Tool.OnEquipped), used to drag parts around 'stamp' them out. LegalStampCheckFunction is optional, used as a callback with a table argument (table is full of instances about to be stamped). Function should return either true or false, false stopping the stamp action.]] [[Function SetupStamperDragger. Side Effect: Creates 4x4 stamping mechanism for building out parts quickly. Arguments: ModelToStamp, Mouse, LegalStampCheckFunction. ModelToStamp should be a Model or Part, preferrably loaded from RbxStamper.GetStampModel and should have extents that are multiples of 4. Mouse should be a mouse object (obtained from things such as Tool.OnEquipped), used to drag parts around 'stamp' them out. LegalStampCheckFunction is optional, used as a callback with a table argument (table is full of instances about to be stamped). Function should return either true or false, false stopping the stamp action.]]
end end return a end end return b

View File

@ -49,17 +49,17 @@ Selected=false h.Image='http://www.roblox.com/asset/?id=97617958'p.Image=
Size=UDim2.new(1.2,0,1.2,0)M()local P=o:GetChildren()for Q=1,#P do if P[Q]and P[ Size=UDim2.new(1.2,0,1.2,0)M()local P=o:GetChildren()for Q=1,#P do if P[Q]and P[
Q]:IsA'Frame'then local R=P[Q]if#R:GetChildren()>0 then h.Position=UDim2.new(0.5 Q]:IsA'Frame'then local R=P[Q]if#R:GetChildren()>0 then h.Position=UDim2.new(0.5
,-60,1,-108)h.Visible=true p.Visible=true if R:GetChildren()[1]:IsA'ImageButton' ,-60,1,-108)h.Visible=true p.Visible=true if R:GetChildren()[1]:IsA'ImageButton'
then local S=R:GetChildren()[1]S.Active=true S.Draggable=false end end end end then do local S=R:GetChildren()[1]S.Active=true S.Draggable=false end end end
end end local P P=function()L()t=true c.Visible=s if s then return O()end end end end end end local P P=function()L()t=true c.Visible=s if s then return O()
local Q Q=function()if s then return O()end end local R R=function(S)assert(S) end end local Q Q=function()if s then return O()end end local R R=function(S)
assert(S:IsA'TextButton')S.BackgroundColor3=Color3.new(1,1,1)S.TextColor3=Color3 assert(S)assert(S:IsA'TextButton')S.BackgroundColor3=Color3.new(1,1,1)S.
.new(0,0,0)S.Selected=true S.ZIndex=3 return S end local S S=function(T)assert(T TextColor3=Color3.new(0,0,0)S.Selected=true S.ZIndex=3 return S end local S S=
)assert(T:IsA'TextButton')T.BackgroundColor3=Color3.new(0,0,0)T.TextColor3= function(T)assert(T)assert(T:IsA'TextButton')T.BackgroundColor3=Color3.new(0,0,0
Color3.new(1,1,1)T.Selected=false T.ZIndex=1 return T end local T T=function(U) )T.TextColor3=Color3.new(1,1,1)T.Selected=false T.ZIndex=1 return T end local T
assert(U)if U=='gear'then R(f)return S(g)elseif U=='wardrobe'then R(g)return S(f T=function(U)assert(U)if U=='gear'then R(f)return S(g)elseif U=='wardrobe'then
)end end local U U=function(V)assert(V)assert(V:IsA'TextButton')if V.Selected R(g)return S(f)end end local U U=function(V)assert(V)assert(V:IsA'TextButton')if
then return end V.BackgroundColor3=Color3.new(0,0,0)end local V V=function(W) V.Selected then return end V.BackgroundColor3=Color3.new(0,0,0)end local V V=
assert(W)assert(W:IsA'TextButton')if W.Selected then return end W. function(W)assert(W)assert(W:IsA'TextButton')if W.Selected then return end W.
BackgroundColor3=Color3.new(0.15294117647058825,0.15294117647058825, BackgroundColor3=Color3.new(0.15294117647058825,0.15294117647058825,
0.15294117647058825)end local W W=function(X)assert(X)X=string.lower(X)i=X T(X)G 0.15294117647058825)end local W W=function(X)assert(X)X=string.lower(X)i=X T(X)G
:Fire(X)return J()end local X X=function(Y)return Y:gsub('^%s*(.-)%s*$','%1')end :Fire(X)return J()end local X X=function(Y)return Y:gsub('^%s*(.-)%s*$','%1')end

View File

@ -17,11 +17,8 @@ end
local getKillerOfHumanoidIfStillInGame local getKillerOfHumanoidIfStillInGame
getKillerOfHumanoidIfStillInGame=function(humanoid) getKillerOfHumanoidIfStillInGame=function(humanoid)
local tag=humanoid:findFirstChild"creator" local tag=humanoid:findFirstChild"creator"
if tag then if tag and tag.Value.Parent then
local killer=tag.Value return tag.Value
if killer.Parent then
return killer
end
end end
end end
local onDied local onDied

View File

@ -2,4 +2,3 @@ std = "mercury"
[lints] [lints]
multiple_statements = "allow" multiple_statements = "allow"
shadowing = "allow"

View File

@ -313,11 +313,9 @@ getPlayerBalance = ->
print "Get player balance failed because", errorCode print "Get player balance failed because", errorCode
return nil return nil
if playerBalance == "" if playerBalance == ""
return nil return nil
playerBalance = getRbxUtility!.DecodeJSON playerBalance playerBalance = getRbxUtility!.DecodeJSON playerBalance
playerBalance playerBalance
@ -473,7 +471,7 @@ canPurchaseItem = ->
notRightBc = true notRightBc = true
updatedBalance, insufficientFunds = updateAfterBalanceText(playerBalance, notRightBc) updatedBalance, insufficientFunds = updateAfterBalanceText playerBalance, notRightBc
if notRightBc if notRightBc
purchaseDialog.BodyFrame.AfterBalanceButton.Active = true purchaseDialog.BodyFrame.AfterBalanceButton.Active = true
@ -609,11 +607,9 @@ getToolAssetID = (assetID) ->
if not newTool if not newTool
return nil return nil
if newTool\IsA "Tool" if newTool\IsA "Tool"
return newTool return newTool
toolChildren = newTool\GetChildren! toolChildren = newTool\GetChildren!
for i = 1, #toolChildren for i = 1, #toolChildren
if toolChildren[i]\IsA "Tool" if toolChildren[i]\IsA "Tool"
@ -629,14 +625,14 @@ purchaseFailed = (inGamePurchasesDisabled) ->
name = currentProductInfo["Name"] name = currentProductInfo["Name"]
newPurchasedFailedText = string.gsub(purchaseFailedText, "itemName", "#{name}") newPurchasedFailedText = string.gsub purchaseFailedText, "itemName", "#{name}"
if inGamePurchasesDisabled if inGamePurchasesDisabled
newPurchasedFailedText = string.gsub( newPurchasedFailedText = string.gsub(
newPurchasedFailedText, "errorReason", newPurchasedFailedText, "errorReason",
"#{errorPurchasesDisabledText}" "#{errorPurchasesDisabledText}"
) )
else else
newPurchasedFailedText = string.gsub(newPurchasedFailedText, "errorReason", "#{errorPurchasesUnknownText}") newPurchasedFailedText = string.gsub newPurchasedFailedText, "errorReason", "#{errorPurchasesUnknownText}"
purchaseDialog.BodyFrame.ItemPreview.ItemDescription.Text = newPurchasedFailedText purchaseDialog.BodyFrame.ItemPreview.ItemDescription.Text = newPurchasedFailedText
@ -827,7 +823,6 @@ createTextObject = (name, text, type, size) ->
createImageButton = (name) -> createImageButton = (name) ->
New "ImageButton", name, New "ImageButton", name,
Size: UDim2.new 0, 153, 0, 46 Size: UDim2.new 0, 153, 0, 46
Name: name
userPurchaseProductActionsEnded = (userIsClosingDialog) -> userPurchaseProductActionsEnded = (userIsClosingDialog) ->
checkingPlayerFunds = false checkingPlayerFunds = false
@ -1056,21 +1051,21 @@ createPurchasePromptGui = ->
cutSizeInHalfRecursive = (_) -> cutSizeInHalfRecursive = (_) ->
-- todo: change the gui size based on how much space we have -- todo: change the gui size based on how much space we have
--[[changeSize(instance,0.5) --[[changeSize instance,0.5
children = instance\GetChildren! children = instance\GetChildren!
for i = 1, #children for i = 1, #children
cutSizeInHalfRecursive(children[i]) cutSizeInHalfRecursive children[i]
end]] end]]
doubleSizeRecursive = (_) -> doubleSizeRecursive = (_) ->
-- todo: change the gui size based on how much space we have -- todo: change the gui size based on how much space we have
--[[changeSize(instance,2) --[[changeSize instance,2
children = instance\GetChildren! children = instance\GetChildren!
for i = 1, #children for i = 1, #children
doubleSizeRecursive(children[i]) doubleSizeRecursive children[i]
end]] end]]
-- depending on screen size, we need to change the gui -- depending on screen size, we need to change the gui

View File

@ -125,13 +125,13 @@ createNewButton = (actionName, functionInfoTable) ->
if inputObject.UserInputState == Enum.UserInputState.Begin and not currentButtonTouch? if inputObject.UserInputState == Enum.UserInputState.Begin and not currentButtonTouch?
currentButtonTouch = inputObject currentButtonTouch = inputObject
contextButtonDown(contextButton, inputObject, actionName) contextButtonDown contextButton, inputObject, actionName
contextButton.InputChanged\connect (inputObject) -> contextButton.InputChanged\connect (inputObject) ->
return if oldTouches[inputObject] or return if oldTouches[inputObject] or
currentButtonTouch ~= inputObject currentButtonTouch ~= inputObject
contextButtonMoved(contextButton, inputObject, actionName) contextButtonMoved contextButton, inputObject, actionName
contextButton.InputEnded\connect (inputObject) -> contextButton.InputEnded\connect (inputObject) ->
return if oldTouches[inputObject] or return if oldTouches[inputObject] or
@ -139,7 +139,7 @@ createNewButton = (actionName, functionInfoTable) ->
currentButtonTouch = nil currentButtonTouch = nil
oldTouches[inputObject] = true oldTouches[inputObject] = true
contextButtonUp(contextButton, inputObject, actionName) contextButtonUp contextButton, inputObject, actionName
actionIcon = New "ImageLabel", "ActionIcon" actionIcon = New "ImageLabel", "ActionIcon"
Position: UDim2.new 0.175, 0, 0.175, 0 Position: UDim2.new 0.175, 0, 0.175, 0
@ -169,7 +169,7 @@ createNewButton = (actionName, functionInfoTable) ->
contextButton contextButton
createButton = (actionName, functionInfoTable) -> createButton = (actionName, functionInfoTable) ->
button = createNewButton(actionName, functionInfoTable) button = createNewButton actionName, functionInfoTable
local position local position
for i = 1, #buttonVector do for i = 1, #buttonVector do

View File

@ -180,7 +180,7 @@ followThumbstickTouchMove = (thumbstickFrame, thumbstickOuter, touchLocation) ->
crossOuterToInnerWithMovement = (outerToInnerVectorCurrentUnit.x * movementVectorUnit.y) - crossOuterToInnerWithMovement = (outerToInnerVectorCurrentUnit.x * movementVectorUnit.y) -
(outerToInnerVectorCurrentUnit.y * movementVectorUnit.x) (outerToInnerVectorCurrentUnit.y * movementVectorUnit.x)
angle = math.atan2 crossOuterToInnerWithMovement, dotProduct outerToInnerVectorCurrentUnit, movementVectorUnit angle = math.atan2 crossOuterToInnerWithMovement, dotProduct outerToInnerVectorCurrentUnit, movementVectorUnit
anglePercent = angle * math.min(movementVector.magnitude / outerToInnerVectorCurrent.magnitude, 1.0) anglePercent = angle * math.min movementVector.magnitude / outerToInnerVectorCurrent.magnitude, 1.0
-- If angle is significant, rotate about the inner thumbsticks current center -- If angle is significant, rotate about the inner thumbsticks current center
if math.abs(anglePercent) > 0.00001 if math.abs(anglePercent) > 0.00001
@ -267,7 +267,7 @@ constructThumbstick = (defaultThumbstickPos, updateFunction, stationaryThumbstic
thumbstickTouch = inputObject thumbstickTouch = inputObject
table.insert thumbstickTouches, thumbstickTouch table.insert thumbstickTouches, thumbstickTouch
thumbstickFrame.Position = transformFromCenterToTopLeft(thumbstickTouch.Position, thumbstickFrame) thumbstickFrame.Position = transformFromCenterToTopLeft thumbstickTouch.Position, thumbstickFrame
outerThumbstick.Position = thumbstickFrame.Position outerThumbstick.Position = thumbstickFrame.Position
userInputServiceTouchMovedCon = userInputService.TouchMoved\connect (movedInput) -> userInputServiceTouchMovedCon = userInputService.TouchMoved\connect (movedInput) ->
@ -453,8 +453,7 @@ setupCameraControl = (parentFrame, refreshCharacterMoveFunc) ->
-- track pinching in new frame -- track pinching in new frame
pinchFrame?\Destroy! pinchFrame?\Destroy!
-- make sure we didn't track in any mud -- make sure we didn't track in any mud
pinchFrame = New "Frame" pinchFrame = New "Frame", "PinchFrame"
Name: "PinchFrame"
BackgroundTransparency: 1 BackgroundTransparency: 1
Size: UDim2.new 1, 0, 1, 0 Size: UDim2.new 1, 0, 1, 0
Parent: parentFrame Parent: parentFrame

View File

@ -1,16 +1,36 @@
import "macros" as { $ } import "macros" as { $ }
$load $FILE $load $FILE
--Include -- Heliodex's basic New function (basically a simplified version of melt)
Create = assert(LoadLibrary "RbxUtility").Create New = (className, name, props) ->
if not props? -- no name was provided
props = name
name = nil
obj = Instance.new className
obj.Name = name if name
local parent
for k, v in pairs props
if type(k) == "string" then
if k == "Parent"
parent = v
else
obj[k] = v
elseif type(k) == "number" and type(v) == "userdata"
v.Parent = obj
obj.Parent = parent
obj
--
-- A Few Script Globals -- A Few Script Globals
gui = script.Parent\FindFirstChild"ControlFrame" or script.Parent gui = script.Parent\FindFirstChild"ControlFrame" or script.Parent
-- Dev-Console Root -- Dev-Console Root
Dev_Container = Create"Frame" Dev_Container = New "Frame", "DevConsoleContainer"
Name: "DevConsoleContainer"
Parent: gui Parent: gui
BackgroundColor3: Color3.new 0, 0, 0 BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.9 BackgroundTransparency: 0.9
@ -18,8 +38,7 @@ Dev_Container = Create"Frame"
Size: UDim2.new 0.5, 20, 0.5, 20 Size: UDim2.new 0.5, 20, 0.5, 20
Visible: false Visible: false
ToggleConsole = Create"BindableFunction" ToggleConsole = New "BindableFunction", "ToggleDevConsole"
Name: "ToggleDevConsole"
Parent: gui Parent: gui
devConsoleInitialized = false devConsoleInitialized = false
@ -54,16 +73,49 @@ initializeDeveloperConsole = ->
--Create Dev-Console --Create Dev-Console
Dev_Body = Create"Frame" Dev_Body = New "Frame", "Body"
Name: "Body"
Parent: Dev_Container Parent: Dev_Container
BackgroundColor3: Color3.new 0, 0, 0 BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5 BackgroundTransparency: 0.5
Position: UDim2.new 0, 0, 0, 21 Position: UDim2.new 0, 0, 0, 21
Size: UDim2.new 1, 0, 1, -25 Size: UDim2.new 1, 0, 1, -25
Dev_OptionsHolder = Create"Frame" * New "ImageButton", "ResizeButton"
Name: "OptionsHolder" BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 1, -20, 1, -20
Size: UDim2.new 0, 20, 0, 20
* New "ImageLabel", "ImageLabel"
BackgroundTransparency: 1
Position: UDim2.new 0, 6, 0, 6
Size: UDim2.new 0.8, 0, 0.8, 0
Rotation: 135
Image: "http://www.roblox.com/Asset?id=151205813"
* New "TextButton", "LocalConsole"
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.6
Position: UDim2.new 0, 7, 0, 5
Size: UDim2.new 0, 90, 0, 20
Font: "SourceSansBold"
FontSize: Enum.FontSize.Size14
Text: "Local Console"
TextColor3: Color3.new 1, 1, 1
TextYAlignment: Enum.TextYAlignment.Center
* New "TextButton", "ServerConsole"
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.8
Position: UDim2.new 0, 102, 0, 5
Size: UDim2.new 0, 90, 0, 17
Font: "SourceSansBold"
FontSize: Enum.FontSize.Size14
Text: "Server Console"
TextColor3: Color3.new 1, 1, 1
TextYAlignment: Enum.TextYAlignment.Center
Dev_OptionsHolder = New "Frame", "OptionsHolder"
Parent: Dev_Body Parent: Dev_Body
BackgroundColor3: Color3.new 0, 0, 0 BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 1 BackgroundTransparency: 1
@ -71,139 +123,113 @@ initializeDeveloperConsole = ->
Size: UDim2.new 1, -255, 0, 24 Size: UDim2.new 1, -255, 0, 24
ClipsDescendants: true ClipsDescendants: true
Dev_OptionsBar = Create"Frame" Dev_OptionsBar = New "Frame", "OptionsBar"
Name: "OptionsBar"
Parent: Dev_OptionsHolder Parent: Dev_OptionsHolder
BackgroundColor3: Color3.new 0, 0, 0 BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 1 BackgroundTransparency: 1
Position: UDim2.new 0, -250, 0, 4 Position: UDim2.new 0, -250, 0, 4
Size: UDim2.new 0, 234, 0, 18 Size: UDim2.new 0, 234, 0, 18
Dev_ErrorToggleFilter = Create"TextButton" * New "TextButton", "ErrorToggleButton"
Name: "ErrorToggleButton" BackgroundColor3: Color3.new 0, 0, 0
Parent: Dev_OptionsBar BorderColor3: Color3.new 1, 0, 0
BackgroundColor3: Color3.new 0, 0, 0 Position: UDim2.new 0, 115, 0, 0
BorderColor3: Color3.new 1, 0, 0 Size: UDim2.new 0, 18, 0, 18
Position: UDim2.new 0, 115, 0, 0 Font: "SourceSansBold"
Size: UDim2.new 0, 18, 0, 18 FontSize: Enum.FontSize.Size14
Font: "SourceSansBold" Text: ""
FontSize: Enum.FontSize.Size14 TextColor3: Color3.new 1, 0, 0
Text: ""
TextColor3: Color3.new 1, 0, 0
Create"Frame" * New "Frame", "CheckFrame"
Name: "CheckFrame" BackgroundColor3: Color3.new 1, 0, 0
Parent: Dev_ErrorToggleFilter BorderColor3: Color3.new 1, 0, 0
BackgroundColor3: Color3.new 1, 0, 0 Position: UDim2.new 0, 4, 0, 4
BorderColor3: Color3.new 1, 0, 0 Size: UDim2.new 0, 10, 0, 10
Position: UDim2.new 0, 4, 0, 4
Size: UDim2.new 0, 10, 0, 10
Dev_InfoToggleFilter = Create"TextButton" * New "TextButton", "InfoToggleButton"
Name: "InfoToggleButton" BackgroundColor3: Color3.new 0, 0, 0
Parent: Dev_OptionsBar BorderColor3: Color3.new 0.4, 0.5, 1.0
BackgroundColor3: Color3.new 0, 0, 0 Position: UDim2.new 0, 65, 0, 0
BorderColor3: Color3.new 0.4, 0.5, 1.0 Size: UDim2.new 0, 18, 0, 18
Position: UDim2.new 0, 65, 0, 0 Font: "SourceSansBold"
Size: UDim2.new 0, 18, 0, 18 FontSize: Enum.FontSize.Size14
Font: "SourceSansBold" Text: ""
FontSize: Enum.FontSize.Size14 TextColor3: Color3.new 0.4, 0.5, 1.0
Text: ""
TextColor3: Color3.new 0.4, 0.5, 1.0
Create"Frame" * New "Frame", "CheckFrame"
Name: "CheckFrame" BackgroundColor3: Color3.new 0.4, 0.5, 1.0
Parent: Dev_InfoToggleFilter BorderColor3: Color3.new 0.4, 0.5, 1.0
BackgroundColor3: Color3.new 0.4, 0.5, 1.0 Position: UDim2.new 0, 4, 0, 4
BorderColor3: Color3.new 0.4, 0.5, 1.0 Size: UDim2.new 0, 10, 0, 10
Position: UDim2.new 0, 4, 0, 4
Size: UDim2.new 0, 10, 0, 10
Dev_OutputToggleFilter = Create"TextButton" * New "TextButton", "OutputToggleButton"
Name: "OutputToggleButton" BackgroundColor3: Color3.new 0, 0, 0
Parent: Dev_OptionsBar BorderColor3: Color3.new 1, 1, 1.0
BackgroundColor3: Color3.new 0, 0, 0 Position: UDim2.new 0, 40, 0, 0
BorderColor3: Color3.new 1, 1, 1.0 Size: UDim2.new 0, 18, 0, 18
Position: UDim2.new 0, 40, 0, 0 Font: "SourceSansBold"
Size: UDim2.new 0, 18, 0, 18 FontSize: Enum.FontSize.Size14
Font: "SourceSansBold" Text: ""
FontSize: Enum.FontSize.Size14 TextColor3: Color3.new 1, 1, 1.0
Text: ""
TextColor3: Color3.new 1, 1, 1.0
Create"Frame" * New "Frame", "CheckFrame"
Name: "CheckFrame" BackgroundColor3: Color3.new 1, 1, 1.0
Parent: Dev_OutputToggleFilter BorderColor3: Color3.new 1, 1, 1.0
BackgroundColor3: Color3.new 1, 1, 1.0 Position: UDim2.new 0, 4, 0, 4
BorderColor3: Color3.new 1, 1, 1.0 Size: UDim2.new 0, 10, 0, 10
Position: UDim2.new 0, 4, 0, 4
Size: UDim2.new 0, 10, 0, 10
Dev_WarningToggleFilter = Create"TextButton" * New "TextButton", "WarningToggleButton"
Name: "WarningToggleButton" BackgroundColor3: Color3.new 0, 0, 0
Parent: Dev_OptionsBar BorderColor3: Color3.new 1, 0.6, 0.4
BackgroundColor3: Color3.new 0, 0, 0 Position: UDim2.new 0, 90, 0, 0
BorderColor3: Color3.new 1, 0.6, 0.4 Size: UDim2.new 0, 18, 0, 18
Position: UDim2.new 0, 90, 0, 0 Font: "SourceSansBold"
Size: UDim2.new 0, 18, 0, 18 FontSize: Enum.FontSize.Size14
Font: "SourceSansBold" Text: ""
FontSize: Enum.FontSize.Size14 TextColor3: Color3.new 1, 0.6, 0.4
Text: ""
TextColor3: Color3.new 1, 0.6, 0.4
Create"Frame" * New "Frame", "CheckFrame"
Name: "CheckFrame" BackgroundColor3: Color3.new 1, 0.6, 0.4
Parent: Dev_WarningToggleFilter BorderColor3: Color3.new 1, 0.6, 0.4
BackgroundColor3: Color3.new 1, 0.6, 0.4 Position: UDim2.new 0, 4, 0, 4
BorderColor3: Color3.new 1, 0.6, 0.4 Size: UDim2.new 0, 10, 0, 10
Position: UDim2.new 0, 4, 0, 4
Size: UDim2.new 0, 10, 0, 10
Dev_WordWrapToggle = Create"TextButton" * New "TextButton", "WordWrapToggleButton"
Name: "WordWrapToggleButton" BackgroundColor3: Color3.new 0, 0, 0
Parent: Dev_OptionsBar BorderColor3: Color3.new 0.8, 0.8, 0.8
BackgroundColor3: Color3.new 0, 0, 0 Position: UDim2.new 0, 215, 0, 0
BorderColor3: Color3.new 0.8, 0.8, 0.8 Size: UDim2.new 0, 18, 0, 18
Position: UDim2.new 0, 215, 0, 0 Font: "SourceSansBold"
Size: UDim2.new 0, 18, 0, 18 FontSize: Enum.FontSize.Size14
Font: "SourceSansBold" Text: ""
FontSize: Enum.FontSize.Size14 TextColor3: Color3.new 0.8, 0.8, 0.8
Text: ""
TextColor3: Color3.new 0.8, 0.8, 0.8
Create"Frame" * New "Frame", "CheckFrame"
Name: "CheckFrame" BackgroundColor3: Color3.new 0.8, 0.8, 0.8
Parent: Dev_WordWrapToggle BorderColor3: Color3.new 0.8, 0.8, 0.8
BackgroundColor3: Color3.new 0.8, 0.8, 0.8 Position: UDim2.new 0, 4, 0, 4
BorderColor3: Color3.new 0.8, 0.8, 0.8 Size: UDim2.new 0, 10, 0, 10
Position: UDim2.new 0, 4, 0, 4 Visible: false
Size: UDim2.new 0, 10, 0, 10
Visible: false
Create"TextLabel" * New "TextLabel", "Filter"
Name: "Filter" BackgroundTransparency: 1
Parent: Dev_OptionsBar Position: UDim2.new 0, 0, 0, 0
BackgroundTransparency: 1 Size: UDim2.new 0, 40, 0, 18
Position: UDim2.new 0, 0, 0, 0 Font: "SourceSansBold"
Size: UDim2.new 0, 40, 0, 18 FontSize: Enum.FontSize.Size14
Font: "SourceSansBold" Text: "Filter"
FontSize: Enum.FontSize.Size14 TextColor3: Color3.new 1, 1, 1
Text: "Filter"
TextColor3: Color3.new 1, 1, 1
Create"TextLabel" * New "TextLabel", "WordWrap"
Name: "WordWrap" BackgroundTransparency: 1
Parent: Dev_OptionsBar Position: UDim2.new 0, 150, 0, 0
BackgroundTransparency: 1 Size: UDim2.new 0, 50, 0, 18
Position: UDim2.new 0, 150, 0, 0 Font: "SourceSansBold"
Size: UDim2.new 0, 50, 0, 18 FontSize: Enum.FontSize.Size14
Font: "SourceSansBold" Text: "Word Wrap"
FontSize: Enum.FontSize.Size14 TextColor3: Color3.new 1, 1, 1,
Text: "Word Wrap"
TextColor3: Color3.new 1, 1, 1,
Dev_ScrollBar = Create"Frame" Dev_ScrollBar = New "Frame", "ScrollBar"
Name: "ScrollBar"
Parent: Dev_Body Parent: Dev_Body
BackgroundColor3: Color3.new 0, 0, 0 BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.9 BackgroundTransparency: 0.9
@ -211,65 +237,52 @@ initializeDeveloperConsole = ->
Size: UDim2.new 0, 20, 1, -50 Size: UDim2.new 0, 20, 1, -50
Visible: false Visible: false
Dev_ScrollArea = Create"Frame" * New "ImageButton", "Down"
Name: "ScrollArea" BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 0, 0, 1, -20
Size: UDim2.new 0, 20, 0, 20
* New "ImageLabel", "ImageLabel"
BackgroundTransparency: 1
Position: UDim2.new 0, 3, 0, 3
Size: UDim2.new 0, 14, 0, 14
Rotation: 180
Image: "http://www.roblox.com/Asset?id=151205813"
* New "ImageButton", "Up"
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 0, 0, 0, 0
Size: UDim2.new 0, 20, 0, 20
* New "ImageLabel", "ImageLabel"
BackgroundTransparency: 1
Position: UDim2.new 0, 3, 0, 3
Size: UDim2.new 0, 14, 0, 14
Image: "http://www.roblox.com/Asset?id=151205813"
Dev_ScrollArea = New "Frame", "ScrollArea"
Parent: Dev_ScrollBar Parent: Dev_ScrollBar
BackgroundTransparency: 1 BackgroundTransparency: 1
Position: UDim2.new 0, 0, 0, 23 Position: UDim2.new 0, 0, 0, 23
Size: UDim2.new 1, 0, 1, -46 Size: UDim2.new 1, 0, 1, -46
Dev_Handle = Create"ImageButton" * New "ImageButton", "Handle"
Name: "Handle" BackgroundColor3: Color3.new 0, 0, 0
Parent: Dev_ScrollArea BackgroundTransparency: 0.5
BackgroundColor3: Color3.new 0, 0, 0 Position: UDim2.new 0, 0, 0.2, 0
BackgroundTransparency: 0.5 Size: UDim2.new 0, 20, 0, 40
Position: UDim2.new 0, 0, 0.2, 0
Size: UDim2.new 0, 20, 0, 40
Create"ImageLabel" * New "ImageLabel", "ImageLabel"
Name: "ImageLabel" BackgroundTransparency: 1
Parent: Dev_Handle Position: UDim2.new 0, 0, 0.5, -8
BackgroundTransparency: 1 Rotation: 180
Position: UDim2.new 0, 0, 0.5, -8 Size: UDim2.new 1, 0, 0, 16
Rotation: 180 Image: "http://www.roblox.com/Asset?id=151205881"
Size: UDim2.new 1, 0, 0, 16
Image: "http://www.roblox.com/Asset?id=151205881"
Dev_DownButton = Create"ImageButton"
Name: "Down"
Parent: Dev_ScrollBar
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 0, 0, 1, -20
Size: UDim2.new 0, 20, 0, 20
Create"ImageLabel" Dev_TextBox = New "Frame", "TextBox"
Name: "ImageLabel"
Parent: Dev_DownButton
BackgroundTransparency: 1
Position: UDim2.new 0, 3, 0, 3
Size: UDim2.new 0, 14, 0, 14
Rotation: 180
Image: "http://www.roblox.com/Asset?id=151205813"
Dev_UpButton = Create"ImageButton"
Name: "Up"
Parent: Dev_ScrollBar
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 0, 0, 0, 0
Size: UDim2.new 0, 20, 0, 20
Create"ImageLabel"
Name: "ImageLabel"
Parent: Dev_UpButton
BackgroundTransparency: 1
Position: UDim2.new 0, 3, 0, 3
Size: UDim2.new 0, 14, 0, 14
Image: "http://www.roblox.com/Asset?id=151205813"
Dev_TextBox = Create"Frame"
Name: "TextBox"
Parent: Dev_Body Parent: Dev_Body
BackgroundColor3: Color3.new 0, 0, 0 BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.6 BackgroundTransparency: 0.6
@ -277,118 +290,63 @@ initializeDeveloperConsole = ->
Size: UDim2.new 1, -4, 1, -28 Size: UDim2.new 1, -4, 1, -28
ClipsDescendants: true ClipsDescendants: true
Dev_TextHolder = Create"Frame" Dev_TextHolder = New "Frame", "TextHolder"
Name: "TextHolder"
Parent: Dev_TextBox Parent: Dev_TextBox
BackgroundTransparency: 1 BackgroundTransparency: 1
Position: UDim2.new 0, 0, 0, 0 Position: UDim2.new 0, 0, 0, 0
Size: UDim2.new 1, 0, 1, 0 Size: UDim2.new 1, 0, 1, 0
Dev_OptionsButton = Create"ImageButton" Dev_OptionsButton = New "ImageButton", "OptionsButton"
Name: "OptionsButton"
Parent: Dev_Body Parent: Dev_Body
BackgroundColor3: Color3.new 0, 0, 0 BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 1 BackgroundTransparency: 1
Position: UDim2.new 0, 200, 0, 2 Position: UDim2.new 0, 200, 0, 2
Size: UDim2.new 0, 20, 0, 20 Size: UDim2.new 0, 20, 0, 20
Create"ImageLabel" * New "ImageLabel", "ImageLabel"
Name: "ImageLabel" BackgroundTransparency: 1
Parent: Dev_OptionsButton Position: UDim2.new 0, 0, 0, 0
BackgroundTransparency: 1 Size: UDim2.new 1, 0, 1, 0
Position: UDim2.new 0, 0, 0, 0 Rotation: 0
Size: UDim2.new 1, 0, 1, 0 Image: "http://www.roblox.com/Asset?id=152093917"
Rotation: 0
Image: "http://www.roblox.com/Asset?id=152093917"
Dev_ResizeButton = Create"ImageButton" Dev_TitleBar = New "Frame", "TitleBar"
Name: "ResizeButton"
Parent: Dev_Body
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 1, -20, 1, -20
Size: UDim2.new 0, 20, 0, 20
Create"ImageLabel"
Name: "ImageLabel"
Parent: Dev_ResizeButton
BackgroundTransparency: 1
Position: UDim2.new 0, 6, 0, 6
Size: UDim2.new 0.8, 0, 0.8, 0
Rotation: 135
Image: "http://www.roblox.com/Asset?id=151205813"
Create"TextButton"
Name: "LocalConsole"
Parent: Dev_Body
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.6
Position: UDim2.new 0, 7, 0, 5
Size: UDim2.new 0, 90, 0, 20
Font: "SourceSansBold"
FontSize: Enum.FontSize.Size14
Text: "Local Console"
TextColor3: Color3.new 1, 1, 1
TextYAlignment: Enum.TextYAlignment.Center
Create"TextButton"
Name: "ServerConsole"
Parent: Dev_Body
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.8
Position: UDim2.new 0, 102, 0, 5
Size: UDim2.new 0, 90, 0, 17
Font: "SourceSansBold"
FontSize: Enum.FontSize.Size14
Text: "Server Console"
TextColor3: Color3.new 1, 1, 1
TextYAlignment: Enum.TextYAlignment.Center
Dev_TitleBar = Create"Frame"
Name: "TitleBar"
Parent: Dev_Container Parent: Dev_Container
BackgroundColor3: Color3.new 0, 0, 0 BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5 BackgroundTransparency: 0.5
Position: UDim2.new 0, 0, 0, 0 Position: UDim2.new 0, 0, 0, 0
Size: UDim2.new 1, 0, 0, 20 Size: UDim2.new 1, 0, 0, 20
Dev_CloseButton = Create"ImageButton" * New "ImageButton", "CloseButton"
Name: "CloseButton" BackgroundColor3: Color3.new 0, 0, 0
Parent: Dev_TitleBar BackgroundTransparency: 0.5
BackgroundColor3: Color3.new 0, 0, 0 Position: UDim2.new 1, -20, 0, 0
BackgroundTransparency: 0.5 Size: UDim2.new 0, 20, 0, 20
Position: UDim2.new 1, -20, 0, 0
Size: UDim2.new 0, 20, 0, 20
Create"ImageLabel" * New "ImageLabel"
Parent: Dev_CloseButton BackgroundColor3: Color3.new 0, 0, 0
BackgroundColor3: Color3.new 0, 0, 0 BackgroundTransparency: 1
BackgroundTransparency: 1 Position: UDim2.new 0, 3, 0, 3
Position: UDim2.new 0, 3, 0, 3 Size: UDim2.new 0, 14, 0, 14
Size: UDim2.new 0, 14, 0, 14 Image: "http://www.roblox.com/Asset?id=151205852"
Image: "http://www.roblox.com/Asset?id=151205852"
Create"TextButton" * New "TextButton", "TextButton"
Name: "TextButton" BackgroundColor3: Color3.new 0, 0, 0
Parent: Dev_TitleBar BackgroundTransparency: 0.5
BackgroundColor3: Color3.new 0, 0, 0 Position: UDim2.new 0, 0, 0, 0
BackgroundTransparency: 0.5 Size: UDim2.new 1, -23, 1, 0
Position: UDim2.new 0, 0, 0, 0 Text: ""
Size: UDim2.new 1, -23, 1, 0
Text: ""
Create"TextLabel" * New "TextLabel", "TitleText"
Name: "TitleText" BackgroundTransparency: 1
Parent: Dev_TitleBar Position: UDim2.new 0, 0, 0, 0
BackgroundTransparency: 1 Size: UDim2.new 0, 185, 0, 20
Position: UDim2.new 0, 0, 0, 0 Font: "SourceSansBold"
Size: UDim2.new 0, 185, 0, 20 FontSize: Enum.FontSize.Size18
Font: "SourceSansBold" -- Text: "Server Console"
FontSize: Enum.FontSize.Size18 TextColor3: Color3.new 1, 1, 1
-- Text: "Server Console" Text: "Roblox Developer Console"
TextColor3: Color3.new 1, 1, 1 TextYAlignment: Enum.TextYAlignment.Top
Text: "Roblox Developer Console"
TextYAlignment: Enum.TextYAlignment.Top
---Saved Mouse Information ---Saved Mouse Information
local previousMousePos local previousMousePos
@ -570,8 +528,7 @@ initializeDeveloperConsole = ->
movePosition = false movePosition = false
if i > #childMessages if i > #childMessages
message = Create"TextLabel" message = New "TextLabel", "Message"
Name: "Message"
Parent: Dev_TextHolder Parent: Dev_TextHolder
BackgroundTransparency: 1 BackgroundTransparency: 1
TextXAlignment: "Left" TextXAlignment: "Left"
@ -724,7 +681,7 @@ initializeDeveloperConsole = ->
num num
str = "%s:%s:%s" timestr = "%s:%s:%s"
ConvertTimeStamp = (timeStamp) -> ConvertTimeStamp = (timeStamp) ->
localTime = timeStamp - os.time! + math.floor tick! localTime = timeStamp - os.time! + math.floor tick!
@ -741,7 +698,7 @@ initializeDeveloperConsole = ->
m = numberWithZero minute m = numberWithZero minute
s = numberWithZero dayTime s = numberWithZero dayTime
str\format h, m, s timestr\format h, m, s
--Filter --Filter

View File

@ -45,11 +45,11 @@ Torso = waitForChild Figure, "Torso"
config = Figure\FindFirstChild "PlayerStats" config = Figure\FindFirstChild "PlayerStats"
inCharTag = Instance.new "BoolValue" inCharTag = New "BoolValue"
inCharTag.Name = "InCharTag" Name: "InCharTag"
hider = Instance.new "BoolValue" hider = New "BoolValue"
hider.Name = "RobloxBuildTool" Name: "RobloxBuildTool"
if not config? if not config?
config = New "Configuration", "PlayerStats" config = New "Configuration", "PlayerStats"
@ -87,25 +87,25 @@ if not dotGui?
print "newHealth declarations finished" print "newHealth declarations finished"
billboardHealthChange = (dmg) -> billboardHealthChange = (dmg) ->
textLabel = New "TextLabel" with New "TextLabel",
Text: tostring dmg Text: "#{dmg}"
TextColor3: if dmg > 0 TextColor3: Color3.new if dmg > 0
Color3.new 0, 1, 0 0, 1, 0
else else
Color3.new 1, 0, 1 1, 0, 1
size: UDim2.new 1, 0, 1, 0.0 size: UDim2.new 1, 0, 1, 0.0
Active: true Active: true
FontSize: 6 FontSize: 6
BackgroundTransparency: 1 BackgroundTransparency: 1
Parent: dotGui Parent: dotGui
for t = 1, 10 for t = 1, 10
wait 0.1 wait 0.1
textLabel.TextTransparency = t / 10 .TextTransparency = t / 10
textLabel.Position = UDim2.new 0, 0, 0, -t * 5 .Position = UDim2.new 0, 0, 0, -t * 5
textLabel.FontSize = 6 - t * 0.6 .FontSize = 6 - t * 0.6
textLabel\remove! \remove!
setMaxHealth = -> setMaxHealth = ->
--print Humanoid.Health --print Humanoid.Health

View File

@ -194,10 +194,10 @@ endDialog = ->
dialog = currentConversationDialog dialog = currentConversationDialog
currentConversationDialog = nil currentConversationDialog = nil
if dialog and dialog.InUse if dialog and dialog.InUse
reenableScript = reenableDialogScript\Clone! with reenableDialogScript\Clone!
reenableScript.archivable = false .archivable = false
reenableScript.Disabled = false .Disabled = false
reenableScript.Parent = dialog .Parent = dialog
for dialog, gui in pairs dialogMap for dialog, gui in pairs dialogMap
if dialog and gui if dialog and gui
@ -288,7 +288,7 @@ selectChoice = (choice) ->
--First hide the Gui --First hide the Gui
mainFrame.Visible = false mainFrame.Visible = false
if choice == lastChoice if choice == lastChoice
game.Chat\Chat game.Players.LocalPlayer.Character, "Goodbye!", getChatColor(currentTone!) game.Chat\Chat game.Players.LocalPlayer.Character, "Goodbye!", getChatColor currentTone!
normalEndDialog! normalEndDialog!
else else

View File

@ -332,9 +332,7 @@ t.CreateDropDownMenu = (items, onSelect, forRoblox) ->
children = droppedDownMenu\GetChildren! children = droppedDownMenu\GetChildren!
if not children return if not children
return
childNum = 1 childNum = 1
for _, obj in ipairs children for _, obj in ipairs children
@ -405,16 +403,14 @@ t.CreateDropDownMenu = (items, onSelect, forRoblox) ->
scrollBarPosition += 1 scrollBarPosition += 1
updateScroll! updateScroll!
return true return true
false
return false
scrollUp = -> scrollUp = ->
if scrollBarPosition > 1 if scrollBarPosition > 1
scrollBarPosition -= 1 scrollBarPosition -= 1
updateScroll! updateScroll!
return true return true
false
return false
if useScrollButtons if useScrollButtons
@ -529,8 +525,7 @@ t.CreatePropertyDropDownMenu = (instance, property, enum) ->
nameToItem[obj.Name] = obj nameToItem[obj.Name] = obj
local frame local frame, updateSelection
local updateSelection
frame, updateSelection = t.CreateDropDownMenu names, (text) -> frame, updateSelection = t.CreateDropDownMenu names, (text) ->
instance[property] = nameToItem[text] instance[property] = nameToItem[text]
@ -773,7 +768,7 @@ t.CreateSlider = (steps, width, position) ->
sliderPosition.Changed\connect (_) -> sliderPosition.Changed\connect (_) ->
sliderPosition.Value = math.min steps, math.max(1, sliderPosition.Value) sliderPosition.Value = math.min steps, math.max 1, sliderPosition.Value
relativePosX = (sliderPosition.Value - 1) / (steps - 1) relativePosX = (sliderPosition.Value - 1) / (steps - 1)
slider.Position = UDim2.new relativePosX, -slider.AbsoluteSize.X / 2, slider.Position.Y.Scale, slider.Position.Y.Offset slider.Position = UDim2.new relativePosX, -slider.AbsoluteSize.X / 2, slider.Position.Y.Scale, slider.Position.Y.Offset
@ -1015,9 +1010,7 @@ t.CreateTrueScrollingFrame = ->
setSliderSizeAndPosition = -> setSliderSizeAndPosition = ->
if not highY or not lowY return if not highY or not lowY
return
totalYSpan = math.abs highY - lowY totalYSpan = math.abs highY - lowY
if totalYSpan == 0 if totalYSpan == 0
@ -1071,9 +1064,7 @@ t.CreateTrueScrollingFrame = ->
buttonScrollAmountPixels = 7 buttonScrollAmountPixels = 7
reentrancyGuardScrollUp = false reentrancyGuardScrollUp = false
doScrollUp = -> doScrollUp = ->
if reentrancyGuardScrollUp return if reentrancyGuardScrollUp
return
reentrancyGuardScrollUp = true reentrancyGuardScrollUp = true
if positionScrollBar 0, scrollbar.AbsolutePosition.Y - buttonScrollAmountPixels, 0 if positionScrollBar 0, scrollbar.AbsolutePosition.Y - buttonScrollAmountPixels, 0
@ -1084,9 +1075,7 @@ t.CreateTrueScrollingFrame = ->
reentrancyGuardScrollDown = false reentrancyGuardScrollDown = false
doScrollDown = -> doScrollDown = ->
if reentrancyGuardScrollDown return if reentrancyGuardScrollDown
return
reentrancyGuardScrollDown = true reentrancyGuardScrollDown = true
if positionScrollBar 0, scrollbar.AbsolutePosition.Y + buttonScrollAmountPixels, 0 if positionScrollBar 0, scrollbar.AbsolutePosition.Y + buttonScrollAmountPixels, 0
@ -1171,9 +1160,7 @@ t.CreateTrueScrollingFrame = ->
reentrancyGuardMouseScroll = false reentrancyGuardMouseScroll = false
dragCon = mouseDrag.MouseMoved\connect (x, y) -> dragCon = mouseDrag.MouseMoved\connect (x, y) ->
if reentrancyGuardMouseScroll return if reentrancyGuardMouseScroll
return
reentrancyGuardMouseScroll = true reentrancyGuardMouseScroll = true
if positionScrollBar x, y, mouseOffset if positionScrollBar x, y, mouseOffset
@ -1228,11 +1215,8 @@ t.CreateTrueScrollingFrame = ->
descendantChanged = (this, prop) -> descendantChanged = (this, prop) ->
if internalChange return if internalChange
return return if not this.Visible
if not this.Visible
return
if prop == "Size" or prop == "Position" if prop == "Size" or prop == "Position"
@ -1241,9 +1225,7 @@ t.CreateTrueScrollingFrame = ->
scrollingFrame.DescendantAdded\connect (instance) -> scrollingFrame.DescendantAdded\connect (instance) ->
if not instance\IsA "GuiObject" return if not instance\IsA "GuiObject"
return
if instance.Visible if instance.Visible
wait! -- wait a heartbeat for sizes to reconfig wait! -- wait a heartbeat for sizes to reconfig
@ -1255,8 +1237,7 @@ t.CreateTrueScrollingFrame = ->
scrollingFrame.DescendantRemoving\connect (instance) -> scrollingFrame.DescendantRemoving\connect (instance) ->
if not instance\IsA "GuiObject" return if not instance\IsA "GuiObject"
return
if descendantsChangeConMap[instance] if descendantsChangeConMap[instance]
descendantsChangeConMap[instance]\disconnect! descendantsChangeConMap[instance]\disconnect!
@ -1268,15 +1249,13 @@ t.CreateTrueScrollingFrame = ->
scrollingFrame.Changed\connect (prop) -> scrollingFrame.Changed\connect (prop) ->
if prop == "AbsoluteSize" if prop == "AbsoluteSize"
if not highY or not lowY return if not highY or not lowY
return
highLowRecheck! highLowRecheck!
setSliderSizeAndPosition! setSliderSizeAndPosition!
return scrollingFrame, controlFrame scrollingFrame, controlFrame
t.CreateScrollingFrame = (orderList, scrollStyle) -> t.CreateScrollingFrame = (orderList, scrollStyle) ->
@ -1581,9 +1560,7 @@ t.CreateScrollingFrame = (orderList, scrollStyle) ->
guiObjects += 1 guiObjects += 1
if not scrollDrag.Parent return if not scrollDrag.Parent
return
dragSizeY = scrollDrag.Parent.AbsoluteSize.y * (1 / (guiObjects - howManyDisplayed + 1)) dragSizeY = scrollDrag.Parent.AbsoluteSize.y * (1 / (guiObjects - howManyDisplayed + 1))
if dragSizeY < 16 if dragSizeY < 16
@ -1608,9 +1585,7 @@ t.CreateScrollingFrame = (orderList, scrollStyle) ->
reentrancyGuard = false reentrancyGuard = false
recalculate = -> recalculate = ->
if reentrancyGuard return if reentrancyGuard
return
reentrancyGuard = true reentrancyGuard = true
wait! wait!
local success, err local success, err
@ -1810,8 +1785,7 @@ binaryGrow = (min, max, fits) ->
--Doesn't fit, shrink --Doesn't fit, shrink
max = mid - 1 max = mid - 1
biggestLegal
return biggestLegal
binaryShrink = (min, max, fits) -> binaryShrink = (min, max, fits) ->
@ -1831,8 +1805,7 @@ binaryShrink = (min, max, fits) ->
--Doesn't fit, grow --Doesn't fit, grow
min = mid + 1 min = mid + 1
smallestLegal
return smallestLegal
getGuiOwner = (instance) -> getGuiOwner = (instance) ->
@ -1842,30 +1815,28 @@ getGuiOwner = (instance) ->
instance = instance.Parent instance = instance.Parent
return nil nil
t.AutoTruncateTextObject = (textLabel) -> t.AutoTruncateTextObject = (textLabel) ->
text = textLabel.Text text = textLabel.Text
fullLabel = textLabel\Clone! fullLabel = textLabel\Clone!
fullLabel.Name = "Full" .. textLabel.Name with fullLabel
fullLabel.BorderSizePixel = 0 .Name = "Full" .. textLabel.Name
fullLabel.BackgroundTransparency = 0 .BorderSizePixel = 0
fullLabel.Text = text .BackgroundTransparency = 0
fullLabel.TextXAlignment = Enum.TextXAlignment.Center .Text = text
fullLabel.Position = UDim2.new 0, -3, 0, 0 .TextXAlignment = Enum.TextXAlignment.Center
fullLabel.Size = UDim2.new 0, 100, 1, 0 .Position = UDim2.new 0, -3, 0, 0
fullLabel.Visible = false .Size = UDim2.new 0, 100, 1, 0
fullLabel.Parent = textLabel .Visible = false
.Parent = textLabel
local shortText local shortText, mouseEnterConnection, mouseLeaveConnection
local mouseEnterConnection
local mouseLeaveConnection
checkForResize = -> checkForResize = ->
if getGuiOwner textLabel == nil return if getGuiOwner(textLabel) == nil
return
textLabel.Text = text textLabel.Text = text
if textLabel.TextFits if textLabel.TextFits
@ -2602,14 +2573,14 @@ t.CreateSetPanel = (userIdsForSets, objectSelected, dialogClosed, size, position
ZIndex: 7 ZIndex: 7
Parent: button Parent: button
configIcon = buttonImage\clone! with buttonImage\clone!
configIcon.Name = "ConfigIcon" .Name = "ConfigIcon"
configIcon.Visible = false .Visible = false
configIcon.Position = UDim2.new 1, -23, 1, -24 .Position = UDim2.new 1, -23, 1, -24
configIcon.Size = UDim2.new 0, 16, 0, 16 .Size = UDim2.new 0, 16, 0, 16
configIcon.Image = "" .Image = ""
configIcon.ZIndex = 6 .ZIndex = 6
configIcon.Parent = insertAssetButtonExample .Parent = insertAssetButtonExample
insertAssetButtonExample insertAssetButtonExample
@ -2950,12 +2921,13 @@ t.CreateSetPanel = (userIdsForSets, objectSelected, dialogClosed, size, position
scrollFrame, controlFrame = t.CreateTrueScrollingFrame! scrollFrame, controlFrame = t.CreateTrueScrollingFrame!
scrollFrame.Size = UDim2.new 0.54, 0, 0.85, 0 with scrollFrame
scrollFrame.Position = UDim2.new 0.24, 0, 0.085, 0 .Size = UDim2.new 0.54, 0, 0.85, 0
scrollFrame.Name = "ItemsFrame" .Position = UDim2.new 0.24, 0, 0.085, 0
scrollFrame.ZIndex = 6 .Name = "ItemsFrame"
scrollFrame.Parent = setGui.SetPanel .ZIndex = 6
scrollFrame.BackgroundTransparency = 1 .Parent = setGui.SetPanel
.BackgroundTransparency = 1
drillDownSetZIndex controlFrame, 7 drillDownSetZIndex controlFrame, 7
@ -3186,8 +3158,7 @@ t.CreateTerrainMaterialSelector = (size, position) ->
if selectedButton ~= buttonWrap if selectedButton ~= buttonWrap
goToNewMaterial buttonWrap, "#{name}" goToNewMaterial buttonWrap, "#{name}"
buttonWrap
return buttonWrap
for i = 1, #materialNames for i = 1, #materialNames
@ -3202,12 +3173,8 @@ t.CreateTerrainMaterialSelector = (size, position) ->
forceTerrainMaterialSelection = (newMaterialType) -> forceTerrainMaterialSelection = (newMaterialType) ->
if not newMaterialType return if not newMaterialType
return return if currentMaterial == newMaterialType
if currentMaterial == newMaterialType
return
matName = getNameFromEnum newMaterialType matName = getNameFromEnum newMaterialType
buttons = scrollFrame\GetChildren! buttons = scrollFrame\GetChildren!
@ -3534,20 +3501,22 @@ t.CreatePluginFrame = (name, size, position, scrollable, parent) ->
if scrollable if scrollable
--frame for widgets --frame for widgets
frame, control = t.CreateTrueScrollingFrame! frame, control = t.CreateTrueScrollingFrame!
frame.Size = UDim2.new 1, 0, 1, 0 with frame
frame.BackgroundColor3 = Color3.new 72 / 255, 72 / 255, 72 / 255 .Size = UDim2.new 1, 0, 1, 0
frame.BorderColor3 = Color3.new 0, 0, 0 .BackgroundColor3 = Color3.new 72 / 255, 72 / 255, 72 / 255
frame.Active = true .BorderColor3 = Color3.new 0, 0, 0
frame.Parent = widgetContainer .Active = true
control.Parent = dragBar .Parent = widgetContainer
control.BackgroundColor3 = Color3.new 72 / 255, 72 / 255, 72 / 255 with control
control.BorderSizePixel = 0 .Parent = dragBar
control.BackgroundTransparency = 0 .BackgroundColor3 = Color3.new 72 / 255, 72 / 255, 72 / 255
control.Position = UDim2.new 1, -21, 1, 1 .BorderSizePixel = 0
control.Size = if size .BackgroundTransparency = 0
UDim2.new 0, 21, size.Y.Scale, size.Y.Offset .Position = UDim2.new 1, -21, 1, 1
else .Size = UDim2.new 0, 21, if size
UDim2.new 0, 21, 0, 400 size.Y.Scale, size.Y.Offset
else
0, 400
control\FindFirstChild"ScrollDownButton".Position = UDim2.new 0, 0, 1, -20 control\FindFirstChild"ScrollDownButton".Position = UDim2.new 0, 0, 1, -20

View File

@ -101,7 +101,7 @@ resumeGameFunction = (shield) ->
goToMenu = (container, menuName, moveDirection, size, position) -> goToMenu = (container, menuName, moveDirection, size, position) ->
return if type(menuName) ~= "string" return if type(menuName) ~= "string"
table.insert(lastMenuSelection, currentMenuSelection) table.insert lastMenuSelection, currentMenuSelection
if menuName == "GameMainMenu" if menuName == "GameMainMenu"
lastMenuSelection = {} lastMenuSelection = {}
@ -191,15 +191,14 @@ resetLocalCharacter = ->
createTextButton = (text, style, fontSize, buttonSize, buttonPosition) -> createTextButton = (text, style, fontSize, buttonSize, buttonPosition) ->
newTextButton = Instance.new "TextButton" New "TextButton"
newTextButton.Font = Enum.Font.Arial Font: Enum.Font.Arial
newTextButton.FontSize = fontSize FontSize: fontSize
newTextButton.Size = buttonSize Size: buttonSize
newTextButton.Position = buttonPosition Position: buttonPosition
newTextButton.Style = style Style: style
newTextButton.TextColor3 = Color3.new 1, 1, 1 TextColor3: Color3.new 1, 1, 1
newTextButton.Text = text Text: text
newTextButton
CreateTextButtons = (frame, buttons, yPos, ySize) -> CreateTextButtons = (frame, buttons, yPos, ySize) ->
@ -236,7 +235,7 @@ CreateTextButtons = (frame, buttons, yPos, ySize) ->
buttonNum += 1 buttonNum += 1
toggleSelection(buttonObjs[1]) toggleSelection buttonObjs[1]
numButtons = buttonNum - 1 numButtons = buttonNum - 1
@ -299,7 +298,7 @@ setDisabledState = (guiObject) ->
guiObject.Active = false guiObject.Active = false
else else
if guiObject["ClassName"] if guiObject["ClassName"]
print("setDisabledState! got object of unsupported type. object type is ", guiObject.ClassName) print "setDisabledState! got object of unsupported type. object type is ", guiObject.ClassName
createHelpDialog = (baseZIndex) -> createHelpDialog = (baseZIndex) ->
@ -728,8 +727,7 @@ createGameMainMenu = (baseZIndex, shield) ->
gameSettingsButton.Parent = gameMainMenuFrame gameSettingsButton.Parent = gameMainMenuFrame
gameSettingsButton.MouseButton1Click\connect -> gameSettingsButton.MouseButton1Click\connect ->
if game\FindFirstChild "Players" and game.Players["LocalPlayer"] if game\FindFirstChild "Players" and game.Players["LocalPlayer"]
loadingGui = game.Players.LocalPlayer\FindFirstChild "PlayerLoadingGui" if loadingGui = game.Players.LocalPlayer\FindFirstChild "PlayerLoadingGui"
if loadingGui
loadingGui.Visible = true loadingGui.Visible = true
@ -969,7 +967,7 @@ createGameSettingsMenu = (baseZIndex, _) ->
if explicitLevel == graphicsLevel.Value -- make sure we are actually in right graphics mode if explicitLevel == graphicsLevel.Value -- make sure we are actually in right graphics mode
setGraphicsQualityLevel(graphicsLevel.Value) setGraphicsQualityLevel graphicsLevel.Value
if not explicitLevel if not explicitLevel
@ -1444,7 +1442,7 @@ if LoadLibrary
--showFunction --showFunction
-> ->
settingsButton.Active = false settingsButton.Active = false
updateCameraDropDownSelection(UserSettings!.GameSettings.ControlMode.Name) updateCameraDropDownSelection UserSettings!.GameSettings.ControlMode.Name
if syncVideoCaptureSetting if syncVideoCaptureSetting
syncVideoCaptureSetting! syncVideoCaptureSetting!
@ -1511,7 +1509,7 @@ if LoadLibrary
resumeGameFunction shield resumeGameFunction shield
gameSettingsMenu = createGameSettingsMenu(baseZIndex, shield) gameSettingsMenu = createGameSettingsMenu baseZIndex, shield
gameSettingsMenu.Visible = false gameSettingsMenu.Visible = false
gameSettingsMenu.Parent = settingsFrame gameSettingsMenu.Parent = settingsFrame
@ -2103,8 +2101,7 @@ if LoadLibrary
-- waitForChild game, "Players" -- waitForChild game, "Players"
-- waitForProperty game.Players, "LocalPlayer" -- waitForProperty game.Players, "LocalPlayer"
-- chatBar = New "Frame" -- chatBar = New "Frame", "ChatBar"
-- Name: "ChatBar"
-- Size: UDim2.new 1, 0, 0, 22 -- Size: UDim2.new 1, 0, 0, 22
-- Position: UDim2.new 0, 0, 1, 0 -- Position: UDim2.new 0, 0, 1, 0
-- BackgroundColor3: Color3.new 0, 0, 0 -- BackgroundColor3: Color3.new 0, 0, 0
@ -2150,11 +2147,11 @@ if LoadLibrary
-- -- guiService = game\GetService "GuiService" -- -- guiService = game\GetService "GuiService"
-- --[[newChatMode = ]]try -- --[[newChatMode = ]]try
-- --guiService\AddSpecialKey(Enum.SpecialKey.ChatHotkey) -- --guiService\AddSpecialKey Enum.SpecialKey.ChatHotkey
-- --guiService.SpecialKeyPressed\connect (key) -> if key == Enum.SpecialKey.ChatHotkey and hotKeyEnabled then activateChat! -- --guiService.SpecialKeyPressed\connect (key) -> if key == Enum.SpecialKey.ChatHotkey and hotKeyEnabled then activateChat!
-- -- if not newChatMode -- -- if not newChatMode
-- --guiService\AddKey("/") -- --guiService\AddKey "/"
-- --guiService.KeyPressed\connect (key) -> if key == "/" and hotKeyEnabled then activateChat! -- --guiService.KeyPressed\connect (key) -> if key == "/" and hotKeyEnabled then activateChat!
-- chatBox.FocusLost\connect (enterPressed) -> -- chatBox.FocusLost\connect (enterPressed) ->
@ -2212,8 +2209,8 @@ if LoadLibrary
-- if success and luaChat -- if success and luaChat
--[[delay 0, -> --[[delay 0, ->
waitForChild(game, "Players") waitForChild game, "Players"
waitForProperty(game.Players, "LocalPlayer") waitForProperty game.Players, "LocalPlayer"
advancedChatBarSupported = game.Players.LocalPlayer.ChatMode advancedChatBarSupported = game.Players.LocalPlayer.ChatMode
chatBar, toggleHotKey = createChatBar! chatBar, toggleHotKey = createChatBar!
@ -2222,24 +2219,24 @@ if LoadLibrary
toggleChatBar = (chatMode) -> toggleChatBar = (chatMode) ->
if chatMode == Enum.ChatMode.Menu if chatMode == Enum.ChatMode.Menu
chatBar.Parent = nil chatBar.Parent = nil
game.GuiService\SetGlobalSizeOffsetPixel(0,0) game.GuiService\SetGlobalSizeOffsetPixel 0,0
toggleHotKey false toggleHotKey false
elseif chatMode == Enum.ChatMode.TextAndMenu elseif chatMode == Enum.ChatMode.TextAndMenu
--chatBar.Parent = gui --chatBar.Parent = gui
--game.GuiService\SetGlobalSizeOffsetPixel(0,-22) --game.GuiService\SetGlobalSizeOffsetPixel 0,-22
toggleHotKey true toggleHotKey true
game.Players.LocalPlayer.Changed\connect( game.Players.LocalPlayer.Changed\connect(
function prop function prop
if prop == "ChatMode" if prop == "ChatMode"
toggleChatBar(game.Players.LocalPlayer.ChatMode) toggleChatBar game.Players.LocalPlayer.ChatMode
toggleChatBar(game.Players.LocalPlayer.ChatMode) toggleChatBar game.Players.LocalPlayer.ChatMode
else else
--chatBar.Parent = gui --chatBar.Parent = gui
--game.GuiService\SetGlobalSizeOffsetPixel(0,-22) --game.GuiService\SetGlobalSizeOffsetPixel 0,-22
]] ]]
BurningManPlaceID = 41324860 BurningManPlaceID = 41324860

View File

@ -305,7 +305,7 @@ WaitForChild = (parent, child) ->
-- might want to move all this to an init function, wait for localplayer elsewhere -- might want to move all this to an init function, wait for localplayer elsewhere
Players = game\GetService "Players" Players = game\GetService "Players"
-- make sure this doesn't run on the server(it will if you dont do this) -- make sure this doesn't run on the server (it will if you dont do this)
while not Players.LocalPlayer while not Players.LocalPlayer
Players.Changed\wait! Players.Changed\wait!
@ -471,14 +471,12 @@ IsMaximized = Instance.new "BoolValue"
IsTabified = Instance.new "BoolValue" IsTabified = Instance.new "BoolValue"
AreNamesExpanded = Instance.new "BoolValue" AreNamesExpanded = Instance.new "BoolValue"
MiddleTemplate = New "Frame" MiddleTemplate = New "Frame", "MidTemplate"
Name: "MidTemplate"
BackgroundTransparency: 1 BackgroundTransparency: 1
Position: UDim2.new 100, 0, 0.07, 0 Position: UDim2.new 100, 0, 0.07, 0
Size: UDim2.new 0.5, 0, 0.025, 0 --UDim2.new 1, 0, .03, 0 Size: UDim2.new 0.5, 0, 0.025, 0 --UDim2.new 1, 0, .03, 0
* New "ImageLabel" * New "ImageLabel", "BCLabel"
Name: "BCLabel"
Active: true Active: true
BackgroundTransparency: 1 BackgroundTransparency: 1
Position: UDim2.new 0.005, 5, 0.20, 0 Position: UDim2.new 0.005, 5, 0.20, 0
@ -487,8 +485,7 @@ MiddleTemplate = New "Frame"
Image: "" Image: ""
ZIndex: 3 ZIndex: 3
* New "ImageLabel" * New "ImageLabel", "FriendLabel"
Name: "FriendLabel"
Active: true Active: true
BackgroundTransparency: 1 BackgroundTransparency: 1
Position: UDim2.new 0.005, 5, 0.15, 0 Position: UDim2.new 0.005, 5, 0.15, 0
@ -811,8 +808,8 @@ for _, i in pairs Images
-- ordered array of 'score data', each entry has: -- ordered array of 'score data', each entry has:
-- Name(String) -- Name String
-- Priority(number) -- Priority number
-- IsPrimary (bool, should it be shown in upper right) -- IsPrimary (bool, should it be shown in upper right)
-- MaxLength (integer, of the length of the longest element for this column) -- MaxLength (integer, of the length of the longest element for this column)
ScoreNames = {} ScoreNames = {}
@ -916,7 +913,7 @@ game.Workspace.ChildAdded\connect (nchild) ->
-- Static Functions -- Static Functions
------------------------------- -------------------------------
-- GetTotalEntries = -> -- GetTotalEntries = ->
-- return math.min(#MiddleFrameBackgrounds, DefaultEntriesOnScreen) -- return math.min #MiddleFrameBackgrounds, DefaultEntriesOnScreen
-- GetEntryListLength = -> -- GetEntryListLength = ->
-- numEnts = #PlayerFrames + #TeamFrames -- numEnts = #PlayerFrames + #TeamFrames
@ -966,7 +963,7 @@ TweenProperty = (obj, propName, inita, enda, length) ->
--[[ --[[
UGLY UGLY HACK FUNCTION UGLY UGLY HACK FUNCTION
replace with some sort of global input catching A.S.A. FREAKING P. replace with some sort of global input catching A.S.A. FREAKING P.
creates a fullsize gui element to catch next mouse up event(completeing a click) creates a fullsize gui element to catch next mouse up event completeing a click
@Args: @Args:
frameParent Object to parent fullscreen gui to frameParent Object to parent fullscreen gui to
polledFunction function to call on mouse moved events in this gui polledFunction function to call on mouse moved events in this gui
@ -1273,8 +1270,8 @@ local BaseUpdate
property Name of stat changed property Name of stat changed
--]] --]]
StatChanged = (_, _) -> --playerEntry, property) StatChanged = (_, _) -> --playerEntry, property)
-- if(playerEntry['MyTeam']) -- if playerEntry['MyTeam']
-- UpdateSingleTeam(playerEntry['MyTeam']) -- UpdateSingleTeam playerEntry['MyTeam']
-- else -- else
BaseUpdate! BaseUpdate!
-- end -- end
@ -1367,7 +1364,7 @@ DoesStatExist = (statName, exception) ->
--[[ --[[
Called when stat is removed from player Called when stat is removed from player
for all players, destroys the stat frame associated with this value, for all players, destroys the stat frame associated with this value,
then calls statchanged(to resize frame) then calls statchanged to resize frame
if playerEntry==localplayer, will remove from scorenames if playerEntry==localplayer, will remove from scorenames
@Args: @Args:
nchild ___value to be removed nchild ___value to be removed
@ -1787,7 +1784,7 @@ UpdateMaximize = ->
for j = 1, #ScoreNames, 1 for j = 1, #ScoreNames, 1
scoreval = ScoreNames[j] scoreval = ScoreNames[j]
if i\FindFirstChild(scoreval["Name"]) and scoreval["XOffset"] if i\FindFirstChild(scoreval["Name"]) and scoreval["XOffset"]
--print('updateing stat position: ' .. scoreval['Name']) -- print "updateing stat position: #{scoreval["Name"]}"
i[scoreval["Name"]]\TweenPosition( i[scoreval["Name"]]\TweenPosition(
UDim2.new(RightEdgeSpace, -scoreval["XOffset"], 0, 0), UDim2.new(RightEdgeSpace, -scoreval["XOffset"], 0, 0),
"Out", "Out",
@ -2143,7 +2140,7 @@ AddMiddleBGFrame = ->
table.insert MiddleFrameBackgrounds, nBGFrame table.insert MiddleFrameBackgrounds, nBGFrame
if #MiddleFrameBackgrounds < DefaultListSize and not DidMinimizeDrag if #MiddleFrameBackgrounds < DefaultListSize and not DidMinimizeDrag
--print('readjusting bottom clip') --print 'readjusting bottom clip'
DefaultBottomClipPos = -1 + #MiddleFrameBackgrounds * MiddleBGTemplate.Size.Y.Scale DefaultBottomClipPos = -1 + #MiddleFrameBackgrounds * MiddleBGTemplate.Size.Y.Scale
@ -2228,7 +2225,7 @@ OnPlayerEntrySelect = (entry, startx, starty) ->
--]] --]]
PlayerListModeUpdate = -> PlayerListModeUpdate = ->
RecreateScoreColumns PlayerFrames RecreateScoreColumns PlayerFrames
table.sort(PlayerFrames, PlayerSortFunction) table.sort PlayerFrames, PlayerSortFunction
for i, val in ipairs PlayerFrames for i, val in ipairs PlayerFrames
MiddleFrames[i] = val["Frame"] MiddleFrames[i] = val["Frame"]
@ -2255,7 +2252,7 @@ RemoveNeutralTeam = ->
index index of player in 'MyPlayers' list to remove index index of player in 'MyPlayers' list to remove
--]] --]]
RemovePlayerFromTeam = (teamEntry, index) -> RemovePlayerFromTeam = (teamEntry, index) ->
table.remove(teamEntry["MyPlayers"], index) table.remove teamEntry["MyPlayers"], index
--if teamEntry['AutoHide'] and #teamEntry['MyPlayers'] == 0 --if teamEntry['AutoHide'] and #teamEntry['MyPlayers'] == 0
if teamEntry == NeutralTeam and #teamEntry["MyPlayers"] == 0 if teamEntry == NeutralTeam and #teamEntry["MyPlayers"] == 0
RemoveNeutralTeam! RemoveNeutralTeam!
@ -2440,7 +2437,7 @@ InsertPlayerFrame = (nplayer) ->
nfriendstatus = GetFriendStatus nplayer nfriendstatus = GetFriendStatus nplayer
nFrame\FindFirstChild"BCLabel".Image = getMembershipTypeIcon(nplayer.MembershipType, nplayer.Name) nFrame\FindFirstChild"BCLabel".Image = getMembershipTypeIcon nplayer.MembershipType, nplayer.Name
nFrame\FindFirstChild"FriendLabel".Image = getFriendStatusIcon nfriendstatus nFrame\FindFirstChild"FriendLabel".Image = getFriendStatusIcon nfriendstatus
nFrame.Name = nplayer.Name nFrame.Name = nplayer.Name
WaitForChild(WaitForChild(nFrame, "TitleFrame"), "Title").Text = nplayer.Name WaitForChild(WaitForChild(nFrame, "TitleFrame"), "Title").Text = nplayer.Name
@ -2586,7 +2583,7 @@ Players.ChildRemoved\connect RemovePlayerFrame
UnrollTeams = (tframes, outframes) -> UnrollTeams = (tframes, outframes) ->
numEntries = 0 numEntries = 0
if NeutralTeam and not NeutralTeam["IsHidden"] if NeutralTeam and not NeutralTeam["IsHidden"]
for _, val in ipairs(NeutralTeam["MyPlayers"]) for _, val in ipairs NeutralTeam["MyPlayers"]
numEntries += 1 numEntries += 1
outframes[numEntries] = val["Frame"] outframes[numEntries] = val["Frame"]
@ -2595,7 +2592,7 @@ UnrollTeams = (tframes, outframes) ->
for _, val in ipairs tframes for _, val in ipairs tframes
if not val["IsHidden"] if not val["IsHidden"]
for _, pval in ipairs(val.MyPlayers) for _, pval in ipairs val.MyPlayers
numEntries += 1 numEntries += 1
outframes[numEntries] = pval["Frame"] outframes[numEntries] = pval["Frame"]
@ -2631,7 +2628,7 @@ AddTeamScores = (team) ->
for j = 1, #ScoreNames, 1 for j = 1, #ScoreNames, 1
i = ScoreNames[j] i = ScoreNames[j]
tscore = 0 tscore = 0
for _, j in ipairs(team["MyPlayers"]) for _, j in ipairs team["MyPlayers"]
tval = j["Player"]\FindFirstChild "leaderstats" and j["Player"].leaderstats\FindFirstChild i["Name"] tval = j["Player"]\FindFirstChild "leaderstats" and j["Player"].leaderstats\FindFirstChild i["Name"]
if tval and not tval\IsA "StringValue" if tval and not tval\IsA "StringValue"
tscore += GetScoreValue (j["Player"].leaderstats)[i["Name"]] tscore += GetScoreValue (j["Player"].leaderstats)[i["Name"]]
@ -2664,7 +2661,7 @@ TeamListModeUpdate = ->
SortTeams TeamFrames SortTeams TeamFrames
if NeutralTeam if NeutralTeam
AddTeamScores NeutralTeam AddTeamScores NeutralTeam
--RecreateScoreColumns(NeutralTeam['MyPlayers']) --RecreateScoreColumns NeutralTeam['MyPlayers']
UnrollTeams TeamFrames, MiddleFrames UnrollTeams TeamFrames, MiddleFrames
@ -2890,7 +2887,7 @@ BaseUpdate = ->
UpdateScrollPosition! UpdateScrollPosition!
UpdateScrollBarVisibility! UpdateScrollBarVisibility!
--debugprint('EndBaseUpdate') --debugprint 'EndBaseUpdate'
BaseUpdateLock = false BaseUpdateLock = false

View File

@ -106,8 +106,7 @@ game.Players.FriendRequestEvent\connect (fromPlayer, toPlayer, event) ->
) )
elseif toPlayer == localPlayer elseif toPlayer == localPlayer
if event == Enum.FriendRequestEvent.Issue if event == Enum.FriendRequestEvent.Issue
if friendRequestBlacklist[fromPlayer] return if friendRequestBlacklist[fromPlayer]
return
-- previously cancelled friend request, we don't want it! -- previously cancelled friend request, we don't want it!
game\GetService"GuiService"\SendNotification( game\GetService"GuiService"\SendNotification(
"Friend Request", "Friend Request",

View File

@ -99,8 +99,7 @@ if IsPhone!
CurrentLoadout.Position = UDim2.new 0.5, -90, 1, -85 CurrentLoadout.Position = UDim2.new 0.5, -90, 1, -85
for i = 0, NumSlots for i = 0, NumSlots
slotFrame = New "Frame" slotFrame = New "Frame", "Slot#{i}"
Name: "Slot#{i}"
RobloxLocked: true RobloxLocked: true
BackgroundColor3: Color3.new 0, 0, 0 BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 1 BackgroundTransparency: 1
@ -568,8 +567,7 @@ makeStyledButton = (buttonName, size, position, parent, buttonStyle) ->
button button
makeTextLabel = (TextLabelName, text, position, parent) -> makeTextLabel = (TextLabelName, text, position, parent) ->
New "TextLabel" New "TextLabel", TextLabelName,
Name: TextLabelName
RobloxLocked: true RobloxLocked: true
BackgroundTransparency: 1 BackgroundTransparency: 1
Size: UDim2.new 0, 32, 0, 14 Size: UDim2.new 0, 32, 0, 14

View File

@ -254,8 +254,7 @@ reorganizeLoadout = (gear, inserting, _, addToSlot) ->
checkToolAncestry = (child, parent) -> checkToolAncestry = (child, parent) ->
if child\FindFirstChild "RobloxBuildTool" return if child\FindFirstChild "RobloxBuildTool"
return
-- don't show roblox build tools -- don't show roblox build tools
if child\IsA"Tool" or child\IsA "HopperBin" if child\IsA"Tool" or child\IsA "HopperBin"
for i = 1, #gearSlots for i = 1, #gearSlots

View File

@ -776,7 +776,7 @@ model = Create'Model'{
An example using the event syntax: An example using the event syntax:
part = Create'Part'{ part = Create'Part'{
[Create.E'Touched'] = function part [Create.E'Touched'] = function(part)
print("I was touched by "..part.Name) print("I was touched by "..part.Name)
end, end,
} }
@ -787,7 +787,7 @@ An example using the general constructor syntax:
model = Create'Part'{ model = Create'Part'{
[Create] = function this [Create] = function this
print("Constructor running!") print("Constructor running!")
this.Name = GetGlobalFoosAndBars this this.Name = GetGlobalFoosAndBars(this)
end, end,
} }

View File

@ -1,6 +1,30 @@
import "macros" as { $ } import "macros" as { $ }
$load $FILE $load $FILE
-- Heliodex's basic New function (basically a simplified version of melt)
New = (className, name, props) ->
if not props? -- no name was provided
props = name
name = nil
obj = Instance.new className
obj.Name = name if name
local parent
for k, v in pairs props
if type(k) == "string" then
if k == "Parent"
parent = v
else
obj[k] = v
elseif type(k) == "number" and type(v) == "userdata"
v.Parent = obj
obj.Parent = parent
obj
--
t = {} t = {}
-- waitForChild = (instance, name) -> -- waitForChild = (instance, name) ->
@ -9,7 +33,7 @@ t = {}
-- end -- end
-- end -- end
-- Do a line/plane intersection. The line starts at the camera. The plane is at y == 0, normal(0, 1, 0) -- Do a line/plane intersection. The line starts at the camera. The plane is at y == 0, normal 0, 1, 0
-- --
-- vectorPos - End point of the line. -- vectorPos - End point of the line.
-- --
@ -24,9 +48,9 @@ PlaneIntersection = (vectorPos) ->
startPos = Vector3.new .X, .Y, .Z startPos = Vector3.new .X, .Y, .Z
endPos = Vector3.new vectorPos.X, vectorPos.Y, vectorPos.Z endPos = Vector3.new vectorPos.X, vectorPos.Y, vectorPos.Z
normal = Vector3.new(0, 1, 0) normal = Vector3.new 0, 1, 0
p3 = Vector3.new 0, 0, 0 p3 = Vector3.new 0, 0, 0
startEndDot = normal\Dot(endPos - startPos) startEndDot = normal\Dot endPos - startPos
cellPos = vectorPos cellPos = vectorPos
if startEndDot ~= 0 if startEndDot ~= 0
t = normal\Dot(p3 - startPos) / startEndDot t = normal\Dot(p3 - startPos) / startEndDot
@ -158,14 +182,12 @@ setSeatEnabledStatus = (model, isEnabled) ->
-- put a weld called "SeatWeld" in every seat -- put a weld called "SeatWeld" in every seat
-- this tricks it into thinking there's already someone sitting there, and it won't make you sit XD -- this tricks it into thinking there's already someone sitting there, and it won't make you sit XD
for i = 1, #seatList for i = 1, #seatList
fakeWeld = Instance.new "Weld" New "Weld", "SeatWeld"
fakeWeld.Name = "SeatWeld" Parent: seatList[i]
fakeWeld.Parent = seatList[i]
autoAlignToFace = (parts) -> autoAlignToFace = (parts) ->
aatf = parts\FindFirstChild "AutoAlignToFace" if aatf = parts\FindFirstChild "AutoAlignToFace"
if aatf
aatf.Value aatf.Value
else else
false false
@ -257,21 +279,21 @@ modelTargetSurface = (partOrModel, rayStart, rayEnd) ->
hitFace = 0 hitFace = 0
--if xHitTime >= 0 and yHitTime >= 0 and zHitTime >= 0 --if xHitTime >= 0 and yHitTime >= 0 and zHitTime >= 0
if xHitTime > yHitTime hitFace = if xHitTime > yHitTime
if xHitTime > zHitTime if xHitTime > zHitTime
-- xFace is hit -- xFace is hit
hitFace = 1 * xPositive 1 * xPositive
else else
-- zFace is hit -- zFace is hit
hitFace = 3 * zPositive 3 * zPositive
else else
if yHitTime > zHitTime if yHitTime > zHitTime
-- yFace is hit -- yFace is hit
hitFace = 2 * yPositive 2 * yPositive
else else
-- zFace is hit -- zFace is hit
hitFace = 3 * zPositive 3 * zPositive
hitFace hitFace
@ -298,7 +320,7 @@ getBoundingBox2 = (partOrModel) ->
if justifyValue? if justifyValue?
-- find the multiple of 4 that contains the model -- find the multiple of 4 that contains the model
justify = justifyValue.Value justify = justifyValue.Value
two = Vector3.new(2, 2, 2) two = Vector3.new 2, 2, 2
actualBox = maxVec - minVec - Vector3.new 0.01, 0.01, 0.01 actualBox = maxVec - minVec - Vector3.new 0.01, 0.01, 0.01
containingGridBox = Vector3.new( containingGridBox = Vector3.new(
4 * math.ceil(actualBox.x / 4), 4 * math.ceil(actualBox.x / 4),
@ -323,8 +345,8 @@ getBoundingBoxInWorldCoordinates = (partOrModel) ->
maxVec = Vector3.new math.max(vec1.X, vec2.X), math.max(vec1.Y, vec2.Y), math.max vec1.Z, vec2.Z maxVec = Vector3.new math.max(vec1.X, vec2.X), math.max(vec1.Y, vec2.Y), math.max vec1.Z, vec2.Z
elseif not partOrModel\IsA "Terrain" elseif not partOrModel\IsA "Terrain"
-- we shouldn't have to deal with this case -- we shouldn't have to deal with this case
--minVec = Vector3.new(-2, -2, -2) --minVec = Vector3.new -2, -2, -2
--maxVec = Vector3.new(2, 2, 2) --maxVec = Vector3.new 2, 2, 2
-- else -- else
vec1 = partOrModel\GetModelCFrame!\pointToWorldSpace -0.5 * partOrModel\GetModelSize! vec1 = partOrModel\GetModelCFrame!\pointToWorldSpace -0.5 * partOrModel\GetModelSize!
vec2 = partOrModel\GetModelCFrame!\pointToWorldSpace 0.5 * partOrModel\GetModelSize! vec2 = partOrModel\GetModelCFrame!\pointToWorldSpace 0.5 * partOrModel\GetModelSize!
@ -359,7 +381,7 @@ isBlocker = (part) -> -- returns whether or not we want to cancel the stamp beca
if part\FindFirstChild "Humanoid" if part\FindFirstChild "Humanoid"
return false return false
if part\FindFirstChild "RobloxStamper" or part\FindFirstChild "RobloxModel" if part\FindFirstChild"RobloxStamper" or part\FindFirstChild "RobloxModel"
return true return true
if part\IsA"Part" and not part.CanCollide if part\IsA"Part" and not part.CanCollide
@ -376,7 +398,7 @@ spaceAboveCharacter = (charTorso, newTorsoY, stampData) ->
partsAboveChar = game.Workspace\FindPartsInRegion3( partsAboveChar = game.Workspace\FindPartsInRegion3(
Region3.new( Region3.new(
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) - Vector3.new(0.75, 2.75, 0.75), Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) - Vector3.new(0.75, 2.75, 0.75),
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new(0.75, 1.75, 0.75) Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new 0.75, 1.75, 0.75
), ),
charTorso.Parent, charTorso.Parent,
100 100
@ -388,7 +410,7 @@ spaceAboveCharacter = (charTorso, newTorsoY, stampData) ->
if clusterPartsInRegion( if clusterPartsInRegion(
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) - Vector3.new(0.75, 2.75, 0.75), Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) - Vector3.new(0.75, 2.75, 0.75),
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new(0.75, 1.75, 0.75) Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new 0.75, 1.75, 0.75
) )
return false return false
@ -406,8 +428,8 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
return if not Mouse return if not Mouse
-- This can happen sometimes, return if so -- This can happen sometimes, return if so
return if not stampData if not stampData
error "findConfigAtMouseTarget: stampData is nil" return error "findConfigAtMouseTarget: stampData is nil"
return if not stampData["CurrentParts"] return if not stampData["CurrentParts"]
@ -426,10 +448,10 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
if Mouse if Mouse
if stampData.CurrentParts\IsA "Tool" Mouse.TargetFilter = if stampData.CurrentParts\IsA "Tool"
Mouse.TargetFilter = stampData.CurrentParts.Handle stampData.CurrentParts.Handle
else else
Mouse.TargetFilter = stampData.CurrentParts stampData.CurrentParts
hitPlane = false hitPlane = false
local targetPart local targetPart
@ -445,7 +467,6 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
if Mouse if Mouse
mouseHitInWorld = Vector3.new Mouse.Hit.x, Mouse.Hit.y, Mouse.Hit.z mouseHitInWorld = Vector3.new Mouse.Hit.x, Mouse.Hit.y, Mouse.Hit.z
local cellPos local cellPos
-- Nothing was hit, so check for the default plane. -- Nothing was hit, so check for the default plane.
@ -458,8 +479,8 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
targetPart = game.Workspace.Terrain targetPart = game.Workspace.Terrain
hitPlane = true hitPlane = true
-- Take into account error that will occur. -- Take into account error that will occur.
cellPos = Vector3.new(cellPos.X - 1, cellPos.Y, cellPos.Z) cellPos = Vector3.new cellPos.X - 1, cellPos.Y, cellPos.Z
mouseHitInWorld = game.Workspace.Terrain\CellCenterToWorld(cellPos.x, cellPos.y, cellPos.z) mouseHitInWorld = game.Workspace.Terrain\CellCenterToWorld cellPos.x, cellPos.y, cellPos.z
-- test mouse hit location -- test mouse hit location
@ -486,13 +507,13 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
-- (ideally, we would want to make the Mouse.TargetSurface a model-targetsurface instead, but for testing will be using the converse) -- (ideally, we would want to make the Mouse.TargetSurface a model-targetsurface instead, but for testing will be using the converse)
--targetVectorInWorld = targetCFrame\vectorToWorldSpace(Vector3.FromNormalId(Mouse.TargetSurface)) --targetVectorInWorld = targetCFrame\vectorToWorldSpace(Vector3.FromNormalId(Mouse.TargetSurface))
targetVectorInWorld = targetPart.CFrame\vectorToWorldSpace Vector3.FromNormalId Mouse.TargetSurface -- better, but model cframe would be best targetVectorInWorld = targetPart.CFrame\vectorToWorldSpace Vector3.FromNormalId Mouse.TargetSurface -- better, but model cframe would be best
--[[if targetPart.Parent\IsA("Model") --[[if targetPart.Parent\IsA "Model"
hitFace = modelTargetSurface(targetPart.Parent, Mouse.Hit.p, game.Workspace.CurrentCamera.CoordinateFrame.p) -- best, if you get it right hitFace = modelTargetSurface(targetPart.Parent, Mouse.Hit.p, game.Workspace.CurrentCamera.CoordinateFrame.p) -- best, if you get it right
WORLD_AXES = {Vector3.new(1, 0, 0), Vector3.new(0, 1, 0), Vector3.new(0, 0, 1)} WORLD_AXES = { Vector3.new(1, 0, 0), Vector3.new(0, 1, 0), Vector3.new(0, 0, 1) }
if hitFace > 0 if hitFace > 0
targetVectorInWorld = targetCFrame\vectorToWorldSpace(WORLD_AXES[hitFace]) targetVectorInWorld = targetCFrame\vectorToWorldSpace WORLD_AXES[hitFace]
elseif hitFace < 0 elseif hitFace < 0
targetVectorInWorld = targetCFrame\vectorToWorldSpace(-WORLD_AXES[-hitFace]) targetVectorInWorld = targetCFrame\vectorToWorldSpace -WORLD_AXES[-hitFace]
end]] end]]
@ -580,10 +601,10 @@ truncateToCircleEighth = (bigValue, littleValue) ->
if frac > 0.382683432 if frac > 0.382683432
-- between 22.5 and 45 degrees, so truncate to 45-degree tilt -- between 22.5 and 45 degrees, so truncate to 45-degree tilt
return 0.707106781 * hypotenuse * bigSign, 0.707106781 * hypotenuse * littleSign 0.707106781 * hypotenuse * bigSign, 0.707106781 * hypotenuse * littleSign
else else
-- between 0 and 22.5 degrees, so truncate to 0-degree tilt -- between 0 and 22.5 degrees, so truncate to 0-degree tilt
return hypotenuse * bigSign, 0 hypotenuse * bigSign, 0
saveTheWelds = (object, manualWeldTable, manualWeldParentTable) -> saveTheWelds = (object, manualWeldTable, manualWeldParentTable) ->
@ -688,24 +709,22 @@ t.GetStampModel = (assetId, terrainShape, useAssetVersionId) ->
newTerrainPiece.CFrame = CFrame.Angles 0, math.pi / 2 * cellOrient + flipped, sideways newTerrainPiece.CFrame = CFrame.Angles 0, math.pi / 2 * cellOrient + flipped, sideways
if cellType == 3 if cellType == 3
inverseCornerWedgeMesh = Instance.new "SpecialMesh" New "SpecialMesh"
inverseCornerWedgeMesh.MeshType = "FileMesh" MeshType: "FileMesh"
inverseCornerWedgeMesh.MeshId = "http://www.roblox.com/asset?id=66832495" MeshId: "http://www.roblox.com/asset?id=66832495"
inverseCornerWedgeMesh.Scale = Vector3.new 2, 2, 2 Scale: Vector3.new 2, 2, 2
inverseCornerWedgeMesh.Parent = newTerrainPiece Parent: newTerrainPiece
materialTag = Instance.new "Vector3Value" New "Vector3Value", "ClusterMaterial"
materialTag.Value = Vector3.new cellMat, cellType, cellOrient Value: Vector3.new cellMat, cellType, cellOrient
materialTag.Name = "ClusterMaterial" Parent: newTerrainPiece
materialTag.Parent = newTerrainPiece
return newTerrainPiece newTerrainPiece
-- This call will cause a "wait" until the data comes back -- This call will cause a "wait" until the data comes back
-- below we wait a max of 8 seconds before deciding to bail out on loading -- below we wait a max of 8 seconds before deciding to bail out on loading
local root local root, loader
local loader
loading = true loading = true
if useAssetVersionId if useAssetVersionId
loader = coroutine.create -> loader = coroutine.create ->
@ -771,36 +790,33 @@ t.GetStampModel = (assetId, terrainShape, useAssetVersionId) ->
-- ...and tag all inserted models for subsequent origin identification -- ...and tag all inserted models for subsequent origin identification
-- if no RobloxModel tag already exists, then add it. -- if no RobloxModel tag already exists, then add it.
if not root\FindFirstChild"RobloxModel"? if root\FindFirstChild"RobloxModel" == nil
stringTag = Instance.new "BoolValue" New "BoolValue", "RobloxModel"
stringTag.Name = "RobloxModel" Parent: root
stringTag.Parent = root
if not root\FindFirstChild"RobloxStamper"? if root\FindFirstChild"RobloxStamper" == nil
stringTag2 = Instance.new "BoolValue" New "BoolValue", "RobloxStamper"
stringTag2.Name = "RobloxStamper" Parent: root
stringTag2.Parent = root
if terrainShape if terrainShape
if root.Name == "MegaClusterCube" if root.Name == "MegaClusterCube"
if terrainShape == 6 -- insert an autowedging tag if terrainShape == 6 -- insert an autowedging tag
autowedgeTag = Instance.new "BoolValue" New "BoolValue", "AutoWedge"
autowedgeTag.Name = "AutoWedge" Parent: root
autowedgeTag.Parent = root
else else
clusterTag = root\FindFirstChild "ClusterMaterial" clusterTag = root\FindFirstChild "ClusterMaterial"
if clusterTag root = if clusterTag
if clusterTag\IsA "Vector3Value" if clusterTag\IsA "Vector3Value"
root = setupFakeTerrainPart(clusterTag.Value.X, terrainShape, clusterTag.Value.Z) setupFakeTerrainPart clusterTag.Value.X, terrainShape, clusterTag.Value.Z
else else
root = setupFakeTerrainPart(clusterTag.Value, terrainShape, 0) setupFakeTerrainPart clusterTag.Value, terrainShape, 0
else else
root = setupFakeTerrainPart(1, terrainShape, 0) setupFakeTerrainPart 1, terrainShape, 0
return root root
t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion, StampFailedFunc) -> t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion, StampFailedFunc) ->
@ -843,38 +859,37 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
local stampData local stampData
local mouseTarget local mouseTarget
errorBox = Instance.new "SelectionBox" errorBox = New "SelectionBox"
errorBox.Color = BrickColor.new "Bright red" Color: BrickColor.new "Bright red"
errorBox.Transparency = 0 Transparency: 0
errorBox.Archivable = false Archivable: false
-- for megacluster MEGA STAMPING -- for megacluster MEGA STAMPING
adornPart = Instance.new "Part" adornPart = New "Part"
adornPart.Parent = nil Parent: nil
adornPart.formFactor = "Custom" formFactor: "Custom"
adornPart.Size = Vector3.new(4, 4, 4) Size: Vector3.new 4, 4, 4
adornPart.CFrame = CFrame.new! CFrame: CFrame.new!
adornPart.Archivable = false Archivable: false
adorn = Instance.new "SelectionBox" adorn = New "SelectionBox", "HighScalabilityStamperLine"
adorn.Color = BrickColor.new "Toothpaste" Color: BrickColor.new "Toothpaste"
adorn.Adornee = adornPart Adornee: adornPart
adorn.Visible = true Visible: true
adorn.Transparency = 0 Transparency: 0
adorn.Name = "HighScalabilityStamperLine" Archivable: false
adorn.Archivable = false
HighScalabilityLine = {} HighScalabilityLine = {}
HighScalabilityLine.Start = nil with HighScalabilityLine
HighScalabilityLine.End = nil .Start = nil
HighScalabilityLine.Adorn = adorn .End = nil
HighScalabilityLine.AdornPart = adornPart .Adorn = adorn
HighScalabilityLine.InternalLine = nil .AdornPart = adornPart
HighScalabilityLine.NewHint = true .InternalLine = nil
.NewHint = true
HighScalabilityLine.MorePoints = { nil, nil } .MorePoints = { nil, nil }
HighScalabilityLine.MoreLines = { nil, nil } .MoreLines = { nil, nil }
HighScalabilityLine.Dimensions = 1 .Dimensions = 1
control = {} control = {}
movingLock = false movingLock = false
@ -883,9 +898,9 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
mouseCons = {} mouseCons = {}
local keyCon local keyCon
stamped = Instance.new "BoolValue" stamped = New "BoolValue"
stamped.Archivable = false Archivable: false
stamped.Value = false Value: false
lastTarget = {} lastTarget = {}
lastTarget.TerrainOrientation = 0 lastTarget.TerrainOrientation = 0
@ -924,37 +939,37 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- extract the line from these positions and limit to a 2D plane made from 2 of the world axes -- extract the line from these positions and limit to a 2D plane made from 2 of the world axes
-- then use dominating axis to limit line to be at 45-degree intervals -- then use dominating axis to limit line to be at 45-degree intervals
-- will use this internal representation of the line for the actual stamping -- will use this internal representation of the line for the actual stamping
line = (HighScalabilityLine.End - HighScalabilityLine.Start) line = HighScalabilityLine.End - HighScalabilityLine.Start
if math.abs(line.X) < math.abs(line.Y) if math.abs(line.X) < math.abs line.Y
if math.abs(line.X) < math.abs(line.Z) if math.abs(line.X) < math.abs line.Z
-- limit to Y/Z plane, domination unknown -- limit to Y/Z plane, domination unknown
local newY, newZ local newY, newZ
if math.abs(line.Y) > math.abs(line.Z) if math.abs(line.Y) > math.abs line.Z
newY, newZ = truncateToCircleEighth(line.Y, line.Z) newY, newZ = truncateToCircleEighth line.Y, line.Z
else else
newZ, newY = truncateToCircleEighth(line.Z, line.Y) newZ, newY = truncateToCircleEighth line.Z, line.Y
line = Vector3.new(0, newY, newZ) line = Vector3.new 0, newY, newZ
else else
-- limit to X/Y plane, with Y dominating -- limit to X/Y plane, with Y dominating
newY, newX = truncateToCircleEighth(line.Y, line.X) newY, newX = truncateToCircleEighth line.Y, line.X
line = Vector3.new(newX, newY, 0) line = Vector3.new newX, newY, 0
else else
if math.abs(line.Y) < math.abs(line.Z) if math.abs(line.Y) < math.abs line.Z
-- limit to X/Z plane, domination unknown -- limit to X/Z plane, domination unknown
local newX, newZ local newX, newZ
if math.abs(line.X) > math.abs(line.Z) if math.abs(line.X) > math.abs line.Z
newX, newZ = truncateToCircleEighth(line.X, line.Z) newX, newZ = truncateToCircleEighth line.X, line.Z
else else
newZ, newX = truncateToCircleEighth(line.Z, line.X) newZ, newX = truncateToCircleEighth line.Z, line.X
line = Vector3.new(newX, 0, newZ) line = Vector3.new newX, 0, newZ
else else
-- limit to X/Y plane, with X dominating -- limit to X/Y plane, with X dominating
newX, newY = truncateToCircleEighth(line.X, line.Y) newX, newY = truncateToCircleEighth line.X, line.Y
line = Vector3.new(newX, newY, 0) line = Vector3.new newX, newY, 0
HighScalabilityLine.InternalLine = line HighScalabilityLine.InternalLine = line
@ -965,7 +980,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- take out any component of line2 along line1, so you get perpendicular to line1 component -- take out any component of line2 along line1, so you get perpendicular to line1 component
line2 -= line.unit * line.unit\Dot line2 line2 -= line.unit * line.unit\Dot line2
tempCFrame = CFrame.new(HighScalabilityLine.Start, HighScalabilityLine.Start + line) tempCFrame = CFrame.new HighScalabilityLine.Start, HighScalabilityLine.Start + line
-- then zero out whichever is the smaller component -- then zero out whichever is the smaller component
yAxis = tempCFrame\vectorToWorldSpace(Vector3.new(0, 1, 0)) yAxis = tempCFrame\vectorToWorldSpace(Vector3.new(0, 1, 0))
@ -994,14 +1009,14 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- resize the "line" graphic to be the correct size and orientation -- resize the "line" graphic to be the correct size and orientation
tempCFrame = CFrame.new(HighScalabilityLine.Start, HighScalabilityLine.Start + line) tempCFrame = CFrame.new HighScalabilityLine.Start, HighScalabilityLine.Start + line
if HighScalabilityLine.Dimensions == 1 -- faster calculation for line if HighScalabilityLine.Dimensions == 1 -- faster calculation for line
HighScalabilityLine.AdornPart.Size = Vector3.new(4, 4, line.magnitude + 4) HighScalabilityLine.AdornPart.Size = Vector3.new 4, 4, line.magnitude + 4
HighScalabilityLine.AdornPart.CFrame = tempCFrame + HighScalabilityLine.AdornPart.CFrame = tempCFrame +
tempCFrame\vectorToWorldSpace Vector3.new(2, 2, 2) - HighScalabilityLine.AdornPart.Size / 2 tempCFrame\vectorToWorldSpace Vector3.new(2, 2, 2) - HighScalabilityLine.AdornPart.Size / 2
else else
boxSize = tempCFrame\vectorToObjectSpace(line + line2 + line3) boxSize = tempCFrame\vectorToObjectSpace line + line2 + line3
HighScalabilityLine.AdornPart.Size = Vector3.new(4, 4, 4) + HighScalabilityLine.AdornPart.Size = Vector3.new(4, 4, 4) +
Vector3.new(math.abs(boxSize.X), math.abs(boxSize.Y), math.abs(boxSize.Z)) Vector3.new(math.abs(boxSize.X), math.abs(boxSize.Y), math.abs(boxSize.Z))
HighScalabilityLine.AdornPart.CFrame = tempCFrame + tempCFrame\vectorToWorldSpace boxSize / 2 HighScalabilityLine.AdornPart.CFrame = tempCFrame + tempCFrame\vectorToWorldSpace boxSize / 2
@ -1032,24 +1047,20 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
return return
if not Mouse\IsA "Mouse" if not Mouse\IsA "Mouse"
error("Error: RbxStamper.DoStamperMouseMove: Mouse is of type", Mouse.className, "should be of type Mouse") error "Error: RbxStamper.DoStamperMouseMove: Mouse is of type", Mouse.className, "should be of type Mouse"
return return
-- There wasn't a target (no part or terrain), so check for plane intersection. -- There wasn't a target (no part or terrain), so check for plane intersection.
if not Mouse.Target if not Mouse.Target
cellPos = GetTerrainForMouse Mouse cellPos = GetTerrainForMouse Mouse
if nil == cellPos return if nil == cellPos
return
if not stampData
return
return if not stampData
-- don't move with dragger - will move in one step on mouse down -- don't move with dragger - will move in one step on mouse down
-- draw ghost at acceptable positions -- draw ghost at acceptable positions
configFound, targetCFrame, targetSurface = findConfigAtMouseTarget(Mouse, stampData) configFound, targetCFrame, targetSurface = findConfigAtMouseTarget Mouse, stampData
if not configFound if not configFound
error "RbxStamper.DoStamperMouseMove No configFound, returning" error "RbxStamper.DoStamperMouseMove No configFound, returning"
return return
@ -1057,28 +1068,28 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
numRotations = 0 -- update this according to how many rotations you need to get it to target surface numRotations = 0 -- update this according to how many rotations you need to get it to target surface
if autoAlignToFace(stampData.CurrentParts) and targetSurface ~= 1 and targetSurface ~= 4 -- pre-rotate the flag or portrait so it's aligned correctly if autoAlignToFace(stampData.CurrentParts) and targetSurface ~= 1 and targetSurface ~= 4 -- pre-rotate the flag or portrait so it's aligned correctly
if targetSurface == 3 numRotations = if targetSurface == 3
numRotations = 0 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts) 0 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
elseif targetSurface == 0 elseif targetSurface == 0
numRotations = 2 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts) 2 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
elseif targetSurface == 5 elseif targetSurface == 5
numRotations = 3 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts) 3 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
elseif targetSurface == 2 elseif targetSurface == 2
numRotations = 1 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts) 1 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
ry = math.pi / 2 ry = math.pi / 2
gInitial90DegreeRotations += numRotations gInitial90DegreeRotations += numRotations
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool" if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
--stampData.CurrentParts\Rotate(0, ry*numRotations, 0) --stampData.CurrentParts\Rotate 0, ry*numRotations, 0
modelRotate(stampData.CurrentParts, ry * numRotations) modelRotate stampData.CurrentParts, ry * numRotations
else else
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry * numRotations, 0) stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ 0, ry * numRotations, 0
* stampData.CurrentParts.CFrame * stampData.CurrentParts.CFrame
-- CODE TO CHECK FOR DRAGGING GHOST PART INTO A COLLIDING STATE -- CODE TO CHECK FOR DRAGGING GHOST PART INTO A COLLIDING STATE
minBB, maxBB = getBoundingBoxInWorldCoordinates(stampData.CurrentParts) minBB, maxBB = getBoundingBoxInWorldCoordinates stampData.CurrentParts
-- need to offset by distance to be dragged -- need to offset by distance to be dragged
local currModelCFrame local currModelCFrame
@ -1092,12 +1103,12 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
maxBB += targetCFrame.p - currModelCFrame.p maxBB += targetCFrame.p - currModelCFrame.p
-- don't drag into terrain -- don't drag into terrain
if clusterPartsInRegion(minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector) if clusterPartsInRegion minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector
if lastTarget.CFrame if lastTarget.CFrame
if stampData.CurrentParts\FindFirstChild("ClusterMaterial", true) if stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
theClusterMaterial = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true) theClusterMaterial = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
if theClusterMaterial\IsA "Vector3Value" if theClusterMaterial\IsA "Vector3Value"
stampClusterMaterial = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true) stampClusterMaterial = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
if stampClusterMaterial if stampClusterMaterial
stampClusterMaterial = clusterMat stampClusterMaterial = clusterMat
@ -1193,13 +1204,12 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- most common mouse inactive error occurs here, so check mouse active one more time in a pcall -- most common mouse inactive error occurs here, so check mouse active one more time in a pcall
if (not try if (not try
if Mouse and Mouse.Target and not Mouse.Target.Parent\FindFirstChild"RobloxModel"? -- if Mouse and Mouse.Target and not Mouse.Target.Parent\FindFirstChild"RobloxModel"?
return -- return
else -- else
return -- return
-- ? return
) )
error "Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check" error "Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check"
game.JointsService\ClearJoinAfterMoveJoints! game.JointsService\ClearJoinAfterMoveJoints!
Mouse = nil Mouse = nil
@ -1239,7 +1249,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- Rotate the parts or all the parts in the model -- Rotate the parts or all the parts in the model
ry = math.pi / 2 ry = math.pi / 2
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool" if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
--stampData.CurrentParts\Rotate(0, ry, 0) --stampData.CurrentParts\Rotate 0, ry, 0
modelRotate stampData.CurrentParts, ry modelRotate stampData.CurrentParts, ry
else else
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry, 0) * stampData.CurrentParts.CFrame stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry, 0) * stampData.CurrentParts.CFrame
@ -1254,14 +1264,14 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
DoStamperMouseMove Mouse DoStamperMouseMove Mouse
elseif key == "c" -- try to expand our high scalability dragger dimension elseif key == "c" -- try to expand our high scalability dragger dimension
if HighScalabilityLine.InternalLine and with HighScalabilityLine
HighScalabilityLine.InternalLine.magnitude > 0 and if .InternalLine and
HighScalabilityLine.Dimensions < 3 .InternalLine.magnitude > 0 and
.Dimensions < 3
HighScalabilityLine.MorePoints[HighScalabilityLine.Dimensions] = HighScalabilityLine.End .MorePoints[.Dimensions] = .End
HighScalabilityLine.MoreLines[HighScalabilityLine.Dimensions] = HighScalabilityLine.InternalLine .MoreLines[.Dimensions] = .InternalLine
HighScalabilityLine.Dimensions = HighScalabilityLine.Dimensions + 1 .Dimensions = .Dimensions + 1
HighScalabilityLine.NewHint = true .NewHint = true
keyCon = Mouse.KeyDown\connect (key) -> -- init key connection (keeping code close to func) keyCon = Mouse.KeyDown\connect (key) -> -- init key connection (keeping code close to func)
setupKeyListener key, Mouse setupKeyListener key, Mouse
@ -1275,10 +1285,11 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
flashRedBox = -> flashRedBox = ->
gui = game.CoreGui gui = game.CoreGui
if game\FindFirstChild "Players" if game\FindFirstChild"Players" and
if game.Players["LocalPlayer"] game.Players["LocalPlayer"] and
if game.Players.LocalPlayer\FindFirstChild "PlayerGui" game.Players.LocalPlayer\FindFirstChild "PlayerGui"
gui = game.Players.LocalPlayer.PlayerGui
gui = game.Players.LocalPlayer.PlayerGui
return if not stampData["ErrorBox"] return if not stampData["ErrorBox"]
@ -1312,22 +1323,20 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
error "Error: RbxStamper.DoStamperMouseDown: Mouse is of type", Mouse.className, "should be of type Mouse" error "Error: RbxStamper.DoStamperMouseDown: Mouse is of type", Mouse.className, "should be of type Mouse"
return return
if not stampData return if not stampData
return
if isMegaClusterPart! if isMegaClusterPart!
if Mouse and HighScalabilityLine if Mouse and HighScalabilityLine
megaCube = stampData.CurrentParts\FindFirstChild("MegaClusterCube", true) megaCube = stampData.CurrentParts\FindFirstChild "MegaClusterCube", true
terrain = game.Workspace.Terrain terrain = game.Workspace.Terrain
if megaCube if megaCube
HighScalabilityLine.Dimensions = 1 HighScalabilityLine.Dimensions = 1
tempCell = terrain\WorldToCell(megaCube.CFrame.p) tempCell = terrain\WorldToCell megaCube.CFrame.p
HighScalabilityLine.Start = terrain\CellCenterToWorld tempCell.X, tempCell.Y, tempCell.Z HighScalabilityLine.Start = terrain\CellCenterToWorld tempCell.X, tempCell.Y, tempCell.Z
return return
else else
HighScalabilityLine.Dimensions = 1 HighScalabilityLine.Dimensions = 1
tempCell = terrain\WorldToCell(stampData.CurrentParts.CFrame.p) tempCell = terrain\WorldToCell stampData.CurrentParts.CFrame.p
HighScalabilityLine.Start = terrain\CellCenterToWorld tempCell.X, tempCell.Y, tempCell.Z HighScalabilityLine.Start = terrain\CellCenterToWorld tempCell.X, tempCell.Y, tempCell.Z
return return
@ -1371,16 +1380,17 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
decals = {} decals = {}
stampData = {} stampData = {}
stampData.DisabledScripts = {} with stampData
stampData.TransparencyTable = {} .DisabledScripts = {}
stampData.MaterialTable = {} .TransparencyTable = {}
stampData.CanCollideTable = {} .MaterialTable = {}
stampData.AnchoredTable = {} .CanCollideTable = {}
stampData.ArchivableTable = {} .AnchoredTable = {}
stampData.DecalTransparencyTable = {} .ArchivableTable = {}
stampData.SurfaceTypeTable = {} .DecalTransparencyTable = {}
.SurfaceTypeTable = {}
collectParts(clone, parts, scripts, decals) collectParts clone, parts, scripts, decals
if #parts <= 0 if #parts <= 0
return nil, "no parts found in modelToStamp" return nil, "no parts found in modelToStamp"
@ -1404,7 +1414,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
stampData.ArchivableTable[part] = part.Archivable stampData.ArchivableTable[part] = part.Archivable
part.Archivable = false part.Archivable = false
saveSurfaceTypes(part, stampData.SurfaceTypeTable) saveSurfaceTypes part, stampData.SurfaceTypeTable
fadeInDelayTime = 0.5 fadeInDelayTime = 0.5
transFadeInTime = 0.5 transFadeInTime = 0.5
@ -1447,7 +1457,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
else -- pre-rotate if necessary else -- pre-rotate if necessary
ry = gInitial90DegreeRotations * math.pi / 2 ry = gInitial90DegreeRotations * math.pi / 2
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool" if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
--stampData.CurrentParts\Rotate(0, ry, 0) --stampData.CurrentParts\Rotate 0, ry, 0
modelRotate stampData.CurrentParts, ry modelRotate stampData.CurrentParts, ry
else else
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry, 0) * stampData.CurrentParts.CFrame stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry, 0) * stampData.CurrentParts.CFrame
@ -1467,13 +1477,13 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- After rotating, update the position -- After rotating, update the position
configFound, targetCFrame = findConfigAtMouseTarget(Mouse, stampData) configFound, targetCFrame = findConfigAtMouseTarget Mouse, stampData
if configFound if configFound
stampData.CurrentParts = positionPartsAtCFrame3(targetCFrame, stampData.CurrentParts) stampData.CurrentParts = positionPartsAtCFrame3 targetCFrame, stampData.CurrentParts
-- to show joints during the mouse move -- to show joints during the mouse move
game.JointsService\SetJoinAfterMoveInstance(stampData.CurrentParts) game.JointsService\SetJoinAfterMoveInstance stampData.CurrentParts
return clone, parts return clone, parts
@ -1532,7 +1542,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
if checkHighScalabilityStamp -- check to see if cell is in region, if not we'll skip set if checkHighScalabilityStamp -- check to see if cell is in region, if not we'll skip set
if allowedStampRegion if allowedStampRegion
cellPos = cellCenterToWorld(game.Workspace.Terrain, cellPos.X, cellPos.Y, cellPos.Z) cellPos = cellCenterToWorld game.Workspace.Terrain, cellPos.X, cellPos.Y, cellPos.Z
if (cellPos.X + 2 > allowedStampRegion.CFrame.p.X + allowedStampRegion.Size.X / 2) or if (cellPos.X + 2 > allowedStampRegion.CFrame.p.X + allowedStampRegion.Size.X / 2) or
(cellPos.X - 2 < allowedStampRegion.CFrame.p.X - allowedStampRegion.Size.X / 2) or (cellPos.X - 2 < allowedStampRegion.CFrame.p.X - allowedStampRegion.Size.X / 2) or
(cellPos.Y + 2 > allowedStampRegion.CFrame.p.Y + allowedStampRegion.Size.Y / 2) or (cellPos.Y + 2 > allowedStampRegion.CFrame.p.Y + allowedStampRegion.Size.Y / 2) or
@ -1563,8 +1573,8 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
autoWedgeClusterParts = true autoWedgeClusterParts = true
if stampData.CurrentParts\FindFirstChild("ClusterMaterial", true) if stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
clusterMaterial = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true) clusterMaterial = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
if clusterMaterial\IsA "Vector3Value" if clusterMaterial\IsA "Vector3Value"
clusterType = clusterMaterial.Value.Y clusterType = clusterMaterial.Value.Y
clusterOrientation = clusterMaterial.Value.Z clusterOrientation = clusterMaterial.Value.Z
@ -1577,7 +1587,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
HighScalabilityLine.Start and HighScalabilityLine.Start and
((HighScalabilityLine.Dimensions > 1) or (line and line.magnitude > 0)) ((HighScalabilityLine.Dimensions > 1) or (line and line.magnitude > 0))
startCell = game.Workspace.Terrain\WorldToCell(HighScalabilityLine.Start) startCell = game.Workspace.Terrain\WorldToCell HighScalabilityLine.Start
xInc = { 0, 0, 0 } xInc = { 0, 0, 0 }
yInc = { 0, 0, 0 } yInc = { 0, 0, 0 }
zInc = { 0, 0, 0 } zInc = { 0, 0, 0 }
@ -1595,20 +1605,20 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
lines = {} lines = {}
if HighScalabilityLine.Dimensions > 1 if HighScalabilityLine.Dimensions > 1
table.insert(lines, HighScalabilityLine.MoreLines[1]) table.insert lines, HighScalabilityLine.MoreLines[1]
if line and line.magnitude > 0 if line and line.magnitude > 0
table.insert(lines, line) table.insert lines, line
if HighScalabilityLine.Dimensions > 2 if HighScalabilityLine.Dimensions > 2
table.insert(lines, HighScalabilityLine.MoreLines[2]) table.insert lines, HighScalabilityLine.MoreLines[2]
for i = 1, #lines for i = 1, #lines
lines[i] = Vector3.new( lines[i] = Vector3.new(
math.floor(lines[i].X + 0.5), math.floor(lines[i].X + 0.5),
math.floor(lines[i].Y + 0.5), math.floor(lines[i].Y + 0.5),
math.floor(lines[i].Z + 0.5) math.floor lines[i].Z + 0.5
) -- round to integers ) -- round to integers
if lines[i].X > 0 if lines[i].X > 0
@ -1627,7 +1637,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
zInc[i] = -1 zInc[i] = -1
incrementVect[i] = Vector3.new(xInc[i], yInc[i], zInc[i]) incrementVect[i] = Vector3.new xInc[i], yInc[i], zInc[i]
if incrementVect[i].magnitude < 0.9 if incrementVect[i].magnitude < 0.9
incrementVect[i] = nil incrementVect[i] = nil
@ -1639,8 +1649,8 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
lines[3] = Vector3.new 0, 0, 0 lines[3] = Vector3.new 0, 0, 0
waterForceTag = stampData.CurrentParts\FindFirstChild("WaterForceTag", true) waterForceTag = stampData.CurrentParts\FindFirstChild "WaterForceTag", true
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild("WaterForceDirectionTag", true) waterForceDirectionTag = stampData.CurrentParts\FindFirstChild "WaterForceDirectionTag", true
while stepVect[3].magnitude * 4 <= lines[3].magnitude while stepVect[3].magnitude * 4 <= lines[3].magnitude
outerStepVectIndex = 1 outerStepVectIndex = 1
@ -1712,7 +1722,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
innerStepVectIndex += 1 innerStepVectIndex += 1
else else
stepVect[2] = Vector3.new(1, 0, 0) stepVect[2] = Vector3.new 1, 0, 0
innerStepVectIndex = 4 -- skip all remaining loops innerStepVectIndex = 4 -- skip all remaining loops
if stepVect[2].magnitude * 4 > lines[2].magnitude if stepVect[2].magnitude * 4 > lines[2].magnitude
@ -1754,7 +1764,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
return false return false
if not Mouse\IsA "Mouse" if not Mouse\IsA "Mouse"
error("Error: RbxStamper.DoStamperMouseUp: Mouse is of type", Mouse.className, "should be of type Mouse") error "Error: RbxStamper.DoStamperMouseUp: Mouse is of type", Mouse.className, "should be of type Mouse"
return false return false
@ -1782,13 +1792,11 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
canStamp = true canStamp = true
checkHighScalabilityStamp = true checkHighScalabilityStamp = true
else else
canStamp, checkHighScalabilityStamp = t.CanEditRegion(stampData.CurrentParts, allowedStampRegion) canStamp, checkHighScalabilityStamp = t.CanEditRegion stampData.CurrentParts, allowedStampRegion
if not canStamp if not canStamp
if stampFailedFunc stampFailedFunc?!
stampFailedFunc!
return false return false
@ -1799,25 +1807,23 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- recheck if we can stamp, as we just moved part -- recheck if we can stamp, as we just moved part
canStamp, checkHighScalabilityStamp = t.CanEditRegion(stampData.CurrentParts, allowedStampRegion) canStamp, checkHighScalabilityStamp = t.CanEditRegion stampData.CurrentParts, allowedStampRegion
if not canStamp if not canStamp
if stampFailedFunc stampFailedFunc?!
stampFailedFunc!
return false return false
-- Prevent part from being stamped on top of a player -- Prevent part from being stamped on top of a player
minBB, maxBB = getBoundingBoxInWorldCoordinates(stampData.CurrentParts) minBB, maxBB = getBoundingBoxInWorldCoordinates stampData.CurrentParts
-- HotThoth's note: Now that above CurrentParts positioning has been commented out, to be truly correct, we would need to use the -- HotThoth's note: Now that above CurrentParts positioning has been commented out, to be truly correct, we would need to use the
-- value of configFound from the previous onStamperMouseMove call which moved the CurrentParts -- value of configFound from the previous onStamperMouseMove call which moved the CurrentParts
-- Shouldn't this be true when lastTargetCFrame has been set and false otherwise? -- Shouldn't this be true when lastTargetCFrame has been set and false otherwise?
configFound, targetCFrame = findConfigAtMouseTarget(Mouse, stampData) configFound, targetCFrame = findConfigAtMouseTarget Mouse, stampData
if configFound and not HighScalabilityLine.Adorn.Parent if configFound and not HighScalabilityLine.Adorn.Parent
if clusterPartsInRegion(minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector) if clusterPartsInRegion minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector
flashRedBox! flashRedBox!
return false return false
@ -1829,7 +1835,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
) )
for b = 1, #blockingParts for b = 1, #blockingParts
if isBlocker(blockingParts[b]) if isBlocker blockingParts[b]
flashRedBox! flashRedBox!
return false return false
@ -1893,22 +1899,22 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- if target point is in cluster, just use cluster\SetCell -- if target point is in cluster, just use cluster\SetCell
if isMegaClusterPart! if isMegaClusterPart!
-- if targetCFrame is inside cluster, just set that cell to 1 and return -- if targetCFrame is inside cluster, just set that cell to 1 and return
--cellPos = cluster\WorldToCell(targetCFrame.p) --cellPos = cluster\WorldToCell targetCFrame.p
local cellPos local cellPos
if stampData.CurrentParts\IsA "Model" if stampData.CurrentParts\IsA "Model"
cellPos = cluster\WorldToCell(stampData.CurrentParts\GetModelCFrame!.p) cellPos = cluster\WorldToCell stampData.CurrentParts\GetModelCFrame!.p
else else
cellPos = cluster\WorldToCell(stampData.CurrentParts.CFrame.p) cellPos = cluster\WorldToCell stampData.CurrentParts.CFrame.p
cMax = game.Workspace.Terrain.MaxExtents.Max cMax = game.Workspace.Terrain.MaxExtents.Max
cMin = game.Workspace.Terrain.MaxExtents.Min cMin = game.Workspace.Terrain.MaxExtents.Min
if checkTerrainBlockCollisions(cellPos, false) if checkTerrainBlockCollisions cellPos, false
clusterValues = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true) clusterValues = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
waterForceTag = stampData.CurrentParts\FindFirstChild("WaterForceTag", true) waterForceTag = stampData.CurrentParts\FindFirstChild "WaterForceTag", true
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild("WaterForceDirectionTag", true) waterForceDirectionTag = stampData.CurrentParts\FindFirstChild "WaterForceDirectionTag", true
if cellPos.X >= cMin.X and if cellPos.X >= cMin.X and
cellPos.Y >= cMin.Y and cellPos.Y >= cMin.Y and
@ -1944,7 +1950,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
clusterValues.Value.Z clusterValues.Value.Z
) )
else else
cluster\SetCell(cellPos.X, cellPos.Y, cellPos.Z, clusterValues.Value, 0, 0) cluster\SetCell cellPos.X, cellPos.Y, cellPos.Z, clusterValues.Value, 0, 0
autoWedgeClusterParts = false autoWedgeClusterParts = false
@ -1957,7 +1963,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
game.Workspace.Terrain\AutowedgeCells( game.Workspace.Terrain\AutowedgeCells(
Region3int16.new( Region3int16.new(
Vector3int16.new(cellPos.x - 1, cellPos.y - 1, cellPos.z - 1), Vector3int16.new(cellPos.x - 1, cellPos.y - 1, cellPos.z - 1),
Vector3int16.new(cellPos.x + 1, cellPos.y + 1, cellPos.z + 1) Vector3int16.new cellPos.x + 1, cellPos.y + 1, cellPos.z + 1
) )
) )
@ -1978,12 +1984,10 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
getPlayer = -> getPlayer = ->
if game\FindFirstChild "Players" if game\FindFirstChild"Players" and
if game.Players["LocalPlayer"] game.Players["LocalPlayer"]
return game.Players.LocalPlayer
return game.Players.LocalPlayer
return nil
-- Post process: after positioning the part or model, restore transparency, material, anchored and collide states and create joints -- Post process: after positioning the part or model, restore transparency, material, anchored and collide states and create joints
@ -1992,10 +1996,10 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- Tyler's magical hack-code for allowing/preserving clones of both Surface and Manual Welds... just don't ask X< -- Tyler's magical hack-code for allowing/preserving clones of both Surface and Manual Welds... just don't ask X<
manualWeldTable = {} manualWeldTable = {}
manualWeldParentTable = {} manualWeldParentTable = {}
saveTheWelds(stampData.CurrentParts, manualWeldTable, manualWeldParentTable) saveTheWelds stampData.CurrentParts, manualWeldTable, manualWeldParentTable
stampData.CurrentParts\BreakJoints! stampData.CurrentParts\BreakJoints!
stampData.CurrentParts\MakeJoints! stampData.CurrentParts\MakeJoints!
restoreTheWelds(manualWeldTable, manualWeldParentTable) restoreTheWelds manualWeldTable, manualWeldParentTable
-- if it's a model, we also want to fill in the playerID and playerName tags, if it has those (e.g. for the friend-only door) -- if it's a model, we also want to fill in the playerID and playerName tags, if it has those (e.g. for the friend-only door)
@ -2017,22 +2021,19 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- ...and tag all inserted models for subsequent origin identification -- ...and tag all inserted models for subsequent origin identification
-- if no RobloxModel tag already exists, then add it. -- if no RobloxModel tag already exists, then add it.
if not stampData.CurrentParts\FindFirstChild"RobloxModel"? if not stampData.CurrentParts\FindFirstChild"RobloxModel"?
stringTag = Instance.new "BoolValue" New "BoolValue", "RobloxModel"
stringTag.Name = "RobloxModel" Parent: stampData.CurrentParts
stringTag.Parent = stampData.CurrentParts
if not stampData.CurrentParts\FindFirstChild"RobloxStamper"? if not stampData.CurrentParts\FindFirstChild"RobloxStamper"?
stringTag2 = Instance.new "BoolValue" New "BoolValue", "RobloxStamper"
stringTag2.Name = "RobloxStamper" Parent: stampData.CurrentParts
stringTag2.Parent = stampData.CurrentParts
else else
stampData.CurrentParts\BreakJoints! stampData.CurrentParts\BreakJoints!
if not stampData.CurrentParts\FindFirstChild"RobloxStamper"? if not stampData.CurrentParts\FindFirstChild"RobloxStamper"?
stringTag2 = Instance.new "BoolValue" New "BoolValue", "RobloxStamper"
stringTag2.Name = "RobloxStamper" Parent: stampData.CurrentParts
stringTag2.Parent = stampData.CurrentParts
-- make sure all the joints are activated before restoring anchor states -- make sure all the joints are activated before restoring anchor states
@ -2061,7 +2062,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
for part, surfaces in pairs stampData.SurfaceTypeTable for part, surfaces in pairs stampData.SurfaceTypeTable
loadSurfaceTypes(part, surfaces) loadSurfaceTypes part, surfaces
if isMegaClusterPart! if isMegaClusterPart!
@ -2069,21 +2070,21 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- re-enable all seats -- re-enable all seats
setSeatEnabledStatus(stampData.CurrentParts, true) setSeatEnabledStatus stampData.CurrentParts, true
stampData.TransparencyTable = nil with stampData
stampData.ArchivableTable = nil .TransparencyTable = nil
stampData.MaterialTable = nil .ArchivableTable = nil
stampData.CanCollideTable = nil .MaterialTable = nil
stampData.AnchoredTable = nil .CanCollideTable = nil
stampData.SurfaceTypeTable = nil .AnchoredTable = nil
.SurfaceTypeTable = nil
-- ...and tag all inserted models for subsequent origin identification -- ...and tag all inserted models for subsequent origin identification
-- if no RobloxModel tag already exists, then add it. -- if no RobloxModel tag already exists, then add it.
if not stampData.CurrentParts\FindFirstChild"RobloxModel"? if not stampData.CurrentParts\FindFirstChild"RobloxModel"?
stringTag = Instance.new "BoolValue" New "BoolValue", "RobloxModel"
stringTag.Name = "RobloxModel" Parent: stampData.CurrentParts
stringTag.Parent = stampData.CurrentParts
-- and make sure we don't delete it, now that it's not a ghost part -- and make sure we don't delete it, now that it's not a ghost part
@ -2141,7 +2142,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
isPositive *= -1 isPositive *= -1
whichSurface *= -1 whichSurface *= -1
surfaceNormal = isPositive * modelCFrame\vectorToWorldSpace(AXIS_VECTORS[whichSurface]) surfaceNormal = isPositive * modelCFrame\vectorToWorldSpace AXIS_VECTORS[whichSurface]
for i = 1, #parts for i = 1, #parts
currPart = parts[i] currPart = parts[i]
@ -2178,9 +2179,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
resumeStamper = -> resumeStamper = ->
clone, parts = prepareModel modelToStamp clone, parts = prepareModel modelToStamp
if not clone or not parts return if not clone or not parts
return
-- if we have unjoinable faces, then we want to change those surfaces to be Unjoinable -- if we have unjoinable faces, then we want to change those surfaces to be Unjoinable
unjoinableTag = clone\FindFirstChild "UnjoinableFaces", true unjoinableTag = clone\FindFirstChild "UnjoinableFaces", true

View File

@ -223,9 +223,9 @@ toggleBackpack = ->
backpackButton.Visible = true backpackButton.Visible = true
loadoutBackground.Visible = true loadoutBackground.Visible = true
if frame\GetChildren![1]\IsA "ImageButton" if frame\GetChildren![1]\IsA "ImageButton"
imgButton = frame\GetChildren![1] with frame\GetChildren![1]
imgButton.Active = true .Active = true
imgButton.Draggable = false .Draggable = false
activateBackpack = -> activateBackpack = ->

View File

@ -1021,10 +1021,10 @@ Chat.IsTouchDevice ==>
-- Chat.ScrollQueue = (value) => -- Chat.ScrollQueue = (value) =>
-- for i = 1, #@MessageQueue -- for i = 1, #@MessageQueue
-- if @MessageQueue[i] -- if @MessageQueue[i]
-- for _, label in pairs(@MessageQueue[i]) -- for _, label in pairs @MessageQueue[i]
-- next = @MessageQueue[i].Next -- next = @MessageQueue[i].Next
-- previous = @MessageQueue[i].Previous -- previous = @MessageQueue[i].Previous
-- if label and label\IsA('TextLabel') or label\IsA('TextButton') -- if label and label\IsA('TextLabel') or label\IsA 'TextButton'
-- if value > 0 and previous and previous['Message'] -- if value > 0 and previous and previous['Message']
-- label.Position = previous['Message'].Position -- label.Position = previous['Message'].Position
-- elseif value < 1 and next['Message'] -- elseif value < 1 and next['Message']
@ -1039,7 +1039,7 @@ Chat.UpdateQueue = (field, diff) =>
if label and type(label) ~= "table" and type(label) ~= "number" if label and type(label) ~= "table" and type(label) ~= "number"
if label\IsA"TextLabel" or label\IsA "TextButton" if label\IsA"TextLabel" or label\IsA "TextButton"
if diff if diff
label.Position = label.Position - UDim2.new(0, 0, diff, 0) label.Position = label.Position - UDim2.new 0, 0, diff, 0
else else
if field == @MessageQueue[i] if field == @MessageQueue[i]
label.Position = UDim2.new( label.Position = UDim2.new(
@ -1148,17 +1148,17 @@ Chat.UpdateChat = (cPlayer, message) =>
heightField = mLabel.TextBounds.Y heightField = mLabel.TextBounds.Y
mLabel.Size = UDim2.new(1, 0, heightField/@RenderFrame.AbsoluteSize.Y, 0) mLabel.Size = UDim2.new 1, 0, heightField/@RenderFrame.AbsoluteSize.Y, 0
pLabel.Size = mLabel.Size pLabel.Size = mLabel.Size
diff = mLabel.Size.Y.Scale - prevYScale diff = mLabel.Size.Y.Scale - prevYScale
Chat\UpdateQueue(@MessageQueue[i], diff) Chat\UpdateQueue @MessageQueue[i], diff
end ]] end ]]
-- Chat.ApplyFilter = (str) => -- Chat.ApplyFilter = (str) =>
-- --[[for _, word in pair(@Filter_List) -- --[[for _, word in pair @Filter_List
-- if string.find(str, word) -- if string.find str, word
-- str\gsub word, '@#$^' -- str\gsub word, '@#$^'
-- ]] -- ]]
@ -1232,12 +1232,10 @@ Chat.CreateMessage = (cPlayer, message) =>
else else
pLabel.TextColor3 = cPlayer.TeamColor.Color pLabel.TextColor3 = cPlayer.TeamColor.Color
local nString nString = if not @CachedSpaceStrings_List[pName]
Chat\ComputeSpaceString pLabel
if not @CachedSpaceStrings_List[pName]
nString = Chat\ComputeSpaceString pLabel
else else
nString = @CachedSpaceStrings_List[pName] @CachedSpaceStrings_List[pName]
mLabel = New "TextLabel", "#{pName} - message" mLabel = New "TextLabel", "#{pName} - message"
-- Max is 3 lines -- Max is 3 lines
@ -1299,7 +1297,7 @@ Chat.FindButtonTree = (scButton, rootList) =>
list = rootList[button] list = rootList[button]
elseif type(rootList[button]) == "table" elseif type(rootList[button]) == "table"
list = Chat\FindButtonTree scButton, rootList[button] list = Chat\FindButtonTree scButton, rootList[button]
return list list
Chat.ToggleSafeChatMenu = (scButton) => Chat.ToggleSafeChatMenu = (scButton) =>
list = Chat\FindButtonTree scButton, @SafeChatTree list = Chat\FindButtonTree scButton, @SafeChatTree
@ -1308,7 +1306,7 @@ Chat.ToggleSafeChatMenu = (scButton) =>
if button\IsA"TextButton" or button\IsA "ImageButton" if button\IsA"TextButton" or button\IsA "ImageButton"
button.Visible = not button.Visible button.Visible = not button.Visible
return true return true
return false false
Chat.CreateSafeChatOptions = (list, rootButton) => Chat.CreateSafeChatOptions = (list, rootButton) =>
text_List = {} text_List = {}
@ -1338,7 +1336,7 @@ Chat.CreateSafeChatOptions = (list, rootButton) =>
if type(list[msg]) == "table" if type(list[msg]) == "table"
text_List[rootButton][chatText] = Chat\CreateSafeChatOptions list[msg], chatText text_List[rootButton][chatText] = Chat\CreateSafeChatOptions list[msg], chatText
-- else -- else
-- --table.insert(text_List[chatText], true) -- --table.insert text_List[chatText], true
chatText.MouseEnter\connect -> chatText.MouseEnter\connect ->
Chat\ToggleSafeChatMenu chatText Chat\ToggleSafeChatMenu chatText
@ -1351,7 +1349,7 @@ Chat.CreateSafeChatOptions = (list, rootButton) =>
-- for i, v in pairs lList -- for i, v in pairs lList
try try
PlayersService\Chat lList[1] PlayersService\Chat lList[1]
return text_List text_List
Chat.CreateSafeChatGui ==> Chat.CreateSafeChatGui ==>
@SafeChatFrame = New "Frame", "SafeChatFrame" @SafeChatFrame = New "Frame", "SafeChatFrame"
@ -1455,7 +1453,7 @@ Chat.CreateChatBar ==>
ClearTextOnFocus: false ClearTextOnFocus: false
-- Engine has code to offset the entire world, so if we do it by -20 pixels nothing gets in our chat's way -- Engine has code to offset the entire world, so if we do it by -20 pixels nothing gets in our chat's way
--GuiService\SetGlobalSizeOffsetPixel(0, -20) --GuiService\SetGlobalSizeOffsetPixel 0, -20
success, error = try success, error = try
GuiService\SetGlobalGuiInset 0, 0, 0, 20 GuiService\SetGlobalGuiInset 0, 0, 0, 20
if not success if not success
@ -1600,7 +1598,7 @@ Chat.FindMessageInSafeChat = (message, list) =>
-- Just a wrapper around our PlayerChatted event -- Just a wrapper around our PlayerChatted event
Chat.PlayerChatted = (...) => Chat.PlayerChatted = (...) =>
args = { ... } args = { ... }
-- argCount = select("#", ...) -- argCount = select "#", ...
local player, message local player, message
-- This doesn't look very good, but what else to do? -- This doesn't look very good, but what else to do?
if args[2] if args[2]
@ -1624,7 +1622,7 @@ Chat.PlayerChatted = (...) =>
Chat.CullThread ==> Chat.CullThread ==>
while true while true
if #@MessageQueue > 0 if #@MessageQueue > 0
for _, field in pairs(@MessageQueue) for _, field in pairs @MessageQueue
if field["SpawnTime"] and if field["SpawnTime"] and
field["Player"] and field["Player"] and
field["Message"] and field["Message"] and

View File

@ -29,10 +29,8 @@ getKillerOfHumanoidIfStillInGame = (humanoid) ->
tag = humanoid\findFirstChild "creator" tag = humanoid\findFirstChild "creator"
-- find player with name on tag -- find player with name on tag
if tag if tag and tag.Value.Parent -- killer still in game
killer = tag.Value return tag.Value
if killer.Parent -- killer still in game
return killer
-- send kill and death stats when a player dies -- send kill and death stats when a player dies
@ -82,7 +80,7 @@ try
scriptContext.ScriptsDisabled = true scriptContext.ScriptsDisabled = true
-- game\SetPlaceID(nil, false) -- game\SetPlaceID nil, false
game\GetService"ChangeHistoryService"\SetEnabled false game\GetService"ChangeHistoryService"\SetEnabled false
-- establish this peer as the Server -- establish this peer as the Server
@ -99,7 +97,7 @@ if url?
game\GetService"ContentProvider"\SetBaseUrl "#{url}/" game\GetService"ContentProvider"\SetBaseUrl "#{url}/"
-- try -- try
-- game\GetService"Players"\SetChatFilterUrl(url .. "/Game/ChatFilter.ashx") -- game\GetService"Players"\SetChatFilterUrl url .. "/Game/ChatFilter.ashx"
-- game\GetService"BadgeService"\SetPlaceId placeId -- game\GetService"BadgeService"\SetPlaceId placeId
if access? if access?
@ -134,7 +132,7 @@ try
game\GetService"NetworkServer"\SetIsPlayerAuthenticationRequired true game\GetService"NetworkServer"\SetIsPlayerAuthenticationRequired true
settings!.Diagnostics.LuaRamLimit = 0 settings!.Diagnostics.LuaRamLimit = 0
--settings!.Network\SetThroughputSensitivity(0.08, 0.01) --settings!.Network\SetThroughputSensitivity 0.08, 0.01
--settings!.Network.SendRate = 35 --settings!.Network.SendRate = 35
--settings!.Network.PhysicsSend = 0 -- 1==RoundRobin --settings!.Network.PhysicsSend = 0 -- 1==RoundRobin