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),
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,
46),Name=aC})end local aC aC=function(aD)k=false if aD then aa()if j then local
aE=false if(tostring(j['isValid'])):lower()=='true'then aE=true end Game:
GetService'MarketplaceService':SignalPromptProductPurchaseFinished(tonumber(j[
'playerId']),tonumber(j['productId']),aE)else print
46)})end local aC aC=function(aD)k=false if aD then aa()if j then local aE=false
if(tostring(j['isValid'])):lower()=='true'then aE=true end Game:GetService
'MarketplaceService':SignalPromptProductPurchaseFinished(tonumber(j['playerId'])
,tonumber(j['productId']),aE)else print
'Something went wrong, no currentServerResponseTable'end return Z()else local aE
=string.gsub(R,'itemName',tostring(d['Name']))q.BodyFrame.ItemPreview.
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
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(
'Frame',{Name='PinchFrame',BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),
Parent=G})Q.InputChanged:connect(function(W)if not M then S()return end R()if
not(N~=nil)then if W==U then N=(W.Position-V.Position).magnitude U=W elseif W==V
then N=(W.Position-U.Position).magnitude V=W end else local X=0 if W==U then X=(
W.Position-V.Position).magnitude U=W elseif W==V then X=(W.Position-U.Position).
magnitude 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)return Q.InputEnded:connect(function(W)if W==U or W==V then return S()
end end)end local U U=function(V)if#P<1 then table.insert(P,V)L=tick()M=false
elseif#P==1 then M=((tick()-L)<=r)if M then table.insert(P,V)return T(P[1],P[2])
else P={}end end end G.InputBegan:connect(function(V)if V.UserInputType~=Enum.
'Frame','PinchFrame',{BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),Parent=G}
)Q.InputChanged:connect(function(W)if not M then S()return end R()if not(N~=nil)
then if W==U then N=(W.Position-V.Position).magnitude U=W elseif W==V then N=(W.
Position-U.Position).magnitude V=W end else local X=0 if W==U then X=(W.Position
-V.Position).magnitude U=W elseif W==V then X=(W.Position-U.Position).magnitude
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)
return Q.InputEnded:connect(function(W)if W==U or W==V then return S()end end)
end local U U=function(V)if#P<1 then table.insert(P,V)L=tick()M=false elseif#P==
1 then M=((tick()-L)<=r)if M then table.insert(P,V)return T(P[1],P[2])else P={}
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
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.

View File

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

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'
..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=
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
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
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)..
'~'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
,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.
new(1,14,1,14),BackgroundTransparency=1,ZIndex=7,Parent=Z})local ac=_:clone()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=
function(Y)if Y:FindFirstChild'AssetId'then delay(0,function()game:GetService
new(1,14,1,14),BackgroundTransparency=1,ZIndex=7,Parent=Z})do local ac=_:clone()
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 end return Y end local ac
ac=function(Y)if Y:FindFirstChild'AssetId'then delay(0,function()game:GetService
'ContentProvider':Preload(L..tostring(Y.AssetId.Value))A.SetPanel.ItemPreview.
LargePreview.Image='LargeThumbnailUrl'..tostring(Y.AssetId.Value)end)end if Y:
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=
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.
BorderSizePixel=0 as.BackgroundTransparency=0 as.Position=UDim2.new(1,-21,1,1)if
ab then as.Size=UDim2.new(0,21,ab.Y.Scale,ab.Y.Offset)else as.Size=UDim2.new(0,
21,0,400)end as:FindFirstChild'ScrollDownButton'.Position=UDim2.new(0,0,1,-20)a(
'Frame','FakeLine',{BorderSizePixel=0,BackgroundColor3=Color3.new(0,0,0),Size=
UDim2.new(0,1,1,1),Position=UDim2.new(1,0,0,0),Parent=as})at=a('TextButton',
'VerticalDragger',{ZIndex=2,AutoButtonColor=false,BackgroundColor3=Color3.new(
0.19607843137254902,0.19607843137254902,0.19607843137254902),BorderColor3=Color3
.new(0,0,0),Size=UDim2.new(1,20,0,20),Position=UDim2.new(0,0,1,0),Active=true,
Text='',Parent=aq})local au=a('Frame','ScrubFrame',{BackgroundColor3=Color3.new(
1,1,1),BorderSizePixel=0,Position=UDim2.new(0.5,-5,0.5,0),Size=UDim2.new(0,10,0,
1),ZIndex=5,Parent=at})local p=au:clone()p.Position=UDim2.new(0.5,-5,0.5,-2)p.
Parent=at local q=au:clone()q.Position=UDim2.new(0.5,-5,0.5,2)q.Parent=at local
r,s,t=a('TextButton','AreaSoak',{Size=UDim2.new(1,0,1,0),BackgroundTransparency=
1,BorderSizePixel=0,Text='',ZIndex=10,Visible=false,Active=true,Parent=d(ae)}),
false,nil at.MouseEnter:connect(function()at.BackgroundColor3=Color3.new(
0.23529411764705882,0.23529411764705882,0.23529411764705882)end)at.MouseLeave:
connect(function()at.BackgroundColor3=Color3.new(0.19607843137254902,
0.19607843137254902,0.19607843137254902)end)at.MouseButton1Down:connect(function
(u,v)s=true r.Visible=true t=v end)r.MouseButton1Up:connect(function()s=false r.
Visible=false end)r.MouseMoved:connect(function(u,v)if not s then return end
local w=v-t if not as.ScrollDownButton.Visible and w>0 then return end if(aq.
Size.Y.Offset+w)<150 then aq.Size=UDim2.new(aq.Size.X.Scale,aq.Size.X.Offset,aq.
Size.Y.Scale,150)as.Size=UDim2.new(0,21,0,150)return end t=v if aq.Size.Y.Offset
+w>=0 then aq.Size=UDim2.new(aq.Size.X.Scale,aq.Size.X.Offset,aq.Size.Y.Scale,aq
.Size.Y.Offset+w)as.Size=UDim2.new(0,21,0,as.Size.Y.Offset+w)end end)end local
au au=function()am.Visible=not am.Visible if ad then ar.Visible=not ar.Visible
at.Visible=not at.Visible as.Visible=not as.Visible else aq.Visible=not aq.
Visible end if am.Visible then al.Text='+'else al.Text='-'end end an.
MouseButton1Click:connect(function()return au()end)al.MouseButton1Click:connect(
function()return au()end)if ad then return ag,ar,ak,ai else return ag,aq,ak,ai
end end b.Help=function(aa)if aa=='CreatePropertyDropDownMenu'or aa==b.
CreatePropertyDropDownMenu then return
BorderSizePixel=0 as.BackgroundTransparency=0 as.Position=UDim2.new(1,-21,1,1)as
.Size=UDim2.new(0,21,(function()if ab then return ab.Y.Scale,ab.Y.Offset else
return 0,400 end end)())as:FindFirstChild'ScrollDownButton'.Position=UDim2.new(0
,0,1,-20)a('Frame','FakeLine',{BorderSizePixel=0,BackgroundColor3=Color3.new(0,0
,0),Size=UDim2.new(0,1,1,1),Position=UDim2.new(1,0,0,0),Parent=as})at=a(
'TextButton','VerticalDragger',{ZIndex=2,AutoButtonColor=false,BackgroundColor3=
Color3.new(0.19607843137254902,0.19607843137254902,0.19607843137254902),
BorderColor3=Color3.new(0,0,0),Size=UDim2.new(1,20,0,20),Position=UDim2.new(0,0,
1,0),Active=true,Text='',Parent=aq})local au=a('Frame','ScrubFrame',{
BackgroundColor3=Color3.new(1,1,1),BorderSizePixel=0,Position=UDim2.new(0.5,-5,
0.5,0),Size=UDim2.new(0,10,0,1),ZIndex=5,Parent=at})local p=au:clone()p.Position
=UDim2.new(0.5,-5,0.5,-2)p.Parent=at local q=au:clone()q.Position=UDim2.new(0.5,
-5,0.5,2)q.Parent=at local r,s,t=a('TextButton','AreaSoak',{Size=UDim2.new(1,0,1
,0),BackgroundTransparency=1,BorderSizePixel=0,Text='',ZIndex=10,Visible=false,
Active=true,Parent=d(ae)}),false,nil at.MouseEnter:connect(function()at.
BackgroundColor3=Color3.new(0.23529411764705882,0.23529411764705882,
0.23529411764705882)end)at.MouseLeave:connect(function()at.BackgroundColor3=
Color3.new(0.19607843137254902,0.19607843137254902,0.19607843137254902)end)at.
MouseButton1Down:connect(function(u,v)s=true r.Visible=true t=v end)r.
MouseButton1Up:connect(function()s=false r.Visible=false end)r.MouseMoved:
connect(function(u,v)if not s then return end local w=v-t if not as.
ScrollDownButton.Visible and w>0 then return end if(aq.Size.Y.Offset+w)<150 then
aq.Size=UDim2.new(aq.Size.X.Scale,aq.Size.X.Offset,aq.Size.Y.Scale,150)as.Size=
UDim2.new(0,21,0,150)return end t=v if aq.Size.Y.Offset+w>=0 then aq.Size=UDim2.
new(aq.Size.X.Scale,aq.Size.X.Offset,aq.Size.Y.Scale,aq.Size.Y.Offset+w)as.Size=
UDim2.new(0,21,0,as.Size.Y.Offset+w)end end)end local au au=function()am.Visible
=not am.Visible if ad then ar.Visible=not ar.Visible at.Visible=not at.Visible
as.Visible=not as.Visible else aq.Visible=not aq.Visible end if am.Visible then
al.Text='+'else al.Text='-'end end an.MouseButton1Click:connect(function()return
au()end)al.MouseButton1Click:connect(function()return au()end)if ad then return
ag,ar,ak,ai else return ag,aq,ak,ai end end b.Help=function(aa)if aa==
'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']]
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]]

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=
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=
function(B,C,D,E,F)local G=Instance.new'TextButton'G.Font=Enum.Font.Arial G.
FontSize=D G.Size=E G.Position=F G.Style=C G.TextColor3=Color3.new(1,1,1)G.Text=
B return G end local B B=function(C,D,E,F)if#D<1 then error
'Must have more than one button'end local G,H,I=1,{},nil I=function(J)for K,L in
ipairs(H)do if L==J then L.Style=Enum.ButtonStyle.RobloxButtonDefault else L.
Style=Enum.ButtonStyle.RobloxButton end end end for J,K in ipairs(D)do local L=
a('TextButton','Button'..tostring(G),{Font=Enum.Font.Arial,FontSize=Enum.
FontSize.Size18,AutoButtonColor=true,Style=Enum.ButtonStyle.RobloxButton,Text=K.
Text,TextColor3=Color3.new(1,1,1),Parent=C})L.MouseButton1Click:connect(function
()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.
Button1.Position=UDim2.new(0.35,0,E.Scale,E.Offset)C.Button1.Size=UDim2.new(0.4,
0,F.Scale,F.Offset)elseif L==2 then C.Button1.Position=UDim2.new(0.1,0,E.Scale,E
.Offset)C.Button1.Size=UDim2.new(0.35,0,F.Scale,F.Offset)C.Button2.Position=
UDim2.new(0.55,0,E.Scale,E.Offset)C.Button2.Size=UDim2.new(0.35,0,F.Scale,F.
Offset)elseif L>=3 then local M,N=0.1/L,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[G].Size=UDim2.new(N,0,F.Scale,F.
Offset)G=G+1 end end end local C C=function(D,E,F)if D then E.Visible=true F.
Text='Stop Recording'else E.Visible=false F.Text='Record Video'end end local D D
=function(E,F)m=not m return C(m,F,E)end local E E=function(F,G,H)F.Parent.
Parent.Parent.Parent.Visible=false G.Visible=false for I=1,#p do game.GuiService
:RemoveCenterDialog(p[I])p[I].Visible=false end p={}game.GuiService:
RemoveCenterDialog(G)H.Active=true end local F F=function(G)if not G then return
end if G:IsA'TextLabel'then G.TextTransparency=0.9 elseif G:IsA'TextButton'then
G.TextTransparency=0.9 G.Active=false else if G['ClassName']then return print(
function(B,C,D,E,F)return a('TextButton',{Font=Enum.Font.Arial,FontSize=D,Size=E
,Position=F,Style=C,TextColor3=Color3.new(1,1,1),Text=B})end local B B=function(
C,D,E,F)if#D<1 then error'Must have more than one button'end local G,H,I=1,{},
nil I=function(J)for K,L in ipairs(H)do if L==J then L.Style=Enum.ButtonStyle.
RobloxButtonDefault else L.Style=Enum.ButtonStyle.RobloxButton end end end for J
,K in ipairs(D)do local L=a('TextButton','Button'..tostring(G),{Font=Enum.Font.
Arial,FontSize=Enum.FontSize.Size18,AutoButtonColor=true,Style=Enum.ButtonStyle.
RobloxButton,Text=K.Text,TextColor3=Color3.new(1,1,1),Parent=C})L.
MouseButton1Click:connect(function()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.Button1.Position=UDim2.new(0.35,0,E.Scale,E.
Offset)C.Button1.Size=UDim2.new(0.4,0,F.Scale,F.Offset)elseif L==2 then C.
Button1.Position=UDim2.new(0.1,0,E.Scale,E.Offset)C.Button1.Size=UDim2.new(0.35,
0,F.Scale,F.Offset)C.Button2.Position=UDim2.new(0.55,0,E.Scale,E.Offset)C.
Button2.Size=UDim2.new(0.35,0,F.Scale,F.Offset)elseif L>=3 then local M,N=0.1/L,
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
[G].Size=UDim2.new(N,0,F.Scale,F.Offset)G=G+1 end end end local C C=function(D,E
,F)if D then E.Visible=true F.Text='Stop Recording'else E.Visible=false F.Text=
'Record Video'end end local D D=function(E,F)m=not m return C(m,F,E)end local E
E=function(F,G,H)F.Parent.Parent.Parent.Parent.Visible=false G.Visible=false for
I=1,#p do game.GuiService:RemoveCenterDialog(p[I])p[I].Visible=false end p={}
game.GuiService:RemoveCenterDialog(G)H.Active=true end local F F=function(G)if
not G then return end if G:IsA'TextLabel'then G.TextTransparency=0.9 elseif G:
IsA'TextButton'then G.TextTransparency=0.9 G.Active=false else if G['ClassName']
then return print(
[[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.
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.
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()
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
)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=
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,

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)
,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.
new'BoolValue',Instance.new'BoolValue',Instance.new'BoolValue',e('Frame',{Name=
'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,
new'BoolValue',Instance.new'BoolValue',Instance.new'BoolValue',e('Frame',
'MidTemplate',{BackgroundTransparency=1,Position=UDim2.new(100,0,0.07,0),Size=
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
,16),SizeConstraint='RelativeYY',Image='',ZIndex=3}),e('ImageLabel',{Name=
'FriendLabel',Active=true,BackgroundTransparency=1,Position=UDim2.new(0.005,5,
,16),SizeConstraint='RelativeYY',Image='',ZIndex=3}),e('ImageLabel',
'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}
),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',

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',
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=
UDim2.new(0.5,-90,1,-85)end for i=0,h do local j=a('Frame',{Name='Slot'..
tostring(i),RobloxLocked=true,BackgroundColor3=Color3.new(0,0,0),
BackgroundTransparency=1,BorderColor3=Color3.new(1,1,1),ZIndex=4,Position=UDim2.
new((function()if i==0 then return 0.9,0,0,0 else return(i-1)*0.1,(i-1)*6,0,0
end end)()),Size=UDim2.new(0,54,1,0),Parent=g})if b.AbsoluteSize.Y<=320 then j.
Position=UDim2.new(0,(i-1)*60,0,-50)print('Well got here',j,j.Position.X.Scale,j
.Position.X.Offset)if i==0 then j:Destroy()end end end local i=a('ImageButton',
'TempSlot',{Active=true,Size=UDim2.new(1,0,1,0),BackgroundTransparency=1,Style=
'Custom',Visible=false,RobloxLocked=true,ZIndex=3,Parent=g,a('ImageLabel',
'Background',{BackgroundTransparency=1,Image=
'http://www.roblox.com/asset/?id=97613075',Size=UDim2.new(1,0,1,0)}),a(
'ObjectValue','GearReference',{RobloxLocked=true}),a('TextLabel','ToolTipLabel',
{RobloxLocked=true,Text='',BackgroundTransparency=0.5,BorderSizePixel=0,Visible=
false,TextColor3=Color3.new(1,1,1),BackgroundColor3=Color3.new(0,0,0),
TextStrokeTransparency=0,Font=Enum.Font.ArialBold,FontSize=Enum.FontSize.Size14,
Size=UDim2.new(1,60,0,20),Position=UDim2.new(0,-30,0,-30)}),a('BoolValue','Kill'
,{RobloxLocked=true}),a('TextLabel','GearText',{RobloxLocked=true,
BackgroundTransparency=1,Font=Enum.Font.Arial,FontSize=Enum.FontSize.Size14,
Position=UDim2.new(0,-8,0,-8),Size=UDim2.new(1,16,1,16),Text='',TextColor3=
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),
UDim2.new(0.5,-90,1,-85)end for i=0,h do local j=a('Frame','Slot'..tostring(i),{
RobloxLocked=true,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,
BorderColor3=Color3.new(1,1,1),ZIndex=4,Position=UDim2.new((function()if i==0
then return 0.9,0,0,0 else return(i-1)*0.1,(i-1)*6,0,0 end end)()),Size=UDim2.
new(0,54,1,0),Parent=g})if b.AbsoluteSize.Y<=320 then j.Position=UDim2.new(0,(i-
1)*60,0,-50)print('Well got here',j,j.Position.X.Scale,j.Position.X.Offset)if i
==0 then j:Destroy()end end end local i=a('ImageButton','TempSlot',{Active=true,
Size=UDim2.new(1,0,1,0),BackgroundTransparency=1,Style='Custom',Visible=false,
RobloxLocked=true,ZIndex=3,Parent=g,a('ImageLabel','Background',{
BackgroundTransparency=1,Image='http://www.roblox.com/asset/?id=97613075',Size=
UDim2.new(1,0,1,0)}),a('ObjectValue','GearReference',{RobloxLocked=true}),a(
'TextLabel','ToolTipLabel',{RobloxLocked=true,Text='',BackgroundTransparency=0.5
,BorderSizePixel=0,Visible=false,TextColor3=Color3.new(1,1,1),BackgroundColor3=
Color3.new(0,0,0),TextStrokeTransparency=0,Font=Enum.Font.ArialBold,FontSize=
Enum.FontSize.Size14,Size=UDim2.new(1,60,0,20),Position=UDim2.new(0,-30,0,-30)})
,a('BoolValue','Kill',{RobloxLocked=true}),a('TextLabel','GearText',{
RobloxLocked=true,BackgroundTransparency=1,Font=Enum.Font.Arial,FontSize=Enum.
FontSize.Size14,Position=UDim2.new(0,-8,0,-8),Size=UDim2.new(1,16,1,16),Text='',
TextColor3=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),
ZIndex=5,RobloxLocked=true})})local j=a('TextLabel','SlotNumber',{
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),
@ -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
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(
'TextLabel',{Name=x,RobloxLocked=true,BackgroundTransparency=1,Size=UDim2.new(0,
32,0,14),Font=Enum.Font.Arial,TextColor3=Color3.new(1,1,1),FontSize=Enum.
FontSize.Size14,Text=y,Position=z,Parent=A})end local x=a('Frame','Wardrobe',{
'TextLabel',x,{RobloxLocked=true,BackgroundTransparency=1,Size=UDim2.new(0,32,0,
14),Font=Enum.Font.Arial,TextColor3=Color3.new(1,1,1),FontSize=Enum.FontSize.
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)
,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'

View File

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

View File

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

View File

@ -313,11 +313,9 @@ getPlayerBalance = ->
print "Get player balance failed because", errorCode
return nil
if playerBalance == ""
return nil
playerBalance = getRbxUtility!.DecodeJSON playerBalance
playerBalance
@ -473,7 +471,7 @@ canPurchaseItem = ->
notRightBc = true
updatedBalance, insufficientFunds = updateAfterBalanceText(playerBalance, notRightBc)
updatedBalance, insufficientFunds = updateAfterBalanceText playerBalance, notRightBc
if notRightBc
purchaseDialog.BodyFrame.AfterBalanceButton.Active = true
@ -609,11 +607,9 @@ getToolAssetID = (assetID) ->
if not newTool
return nil
if newTool\IsA "Tool"
return newTool
toolChildren = newTool\GetChildren!
for i = 1, #toolChildren
if toolChildren[i]\IsA "Tool"
@ -629,14 +625,14 @@ purchaseFailed = (inGamePurchasesDisabled) ->
name = currentProductInfo["Name"]
newPurchasedFailedText = string.gsub(purchaseFailedText, "itemName", "#{name}")
newPurchasedFailedText = string.gsub purchaseFailedText, "itemName", "#{name}"
if inGamePurchasesDisabled
newPurchasedFailedText = string.gsub(
newPurchasedFailedText, "errorReason",
"#{errorPurchasesDisabledText}"
)
else
newPurchasedFailedText = string.gsub(newPurchasedFailedText, "errorReason", "#{errorPurchasesUnknownText}")
newPurchasedFailedText = string.gsub newPurchasedFailedText, "errorReason", "#{errorPurchasesUnknownText}"
purchaseDialog.BodyFrame.ItemPreview.ItemDescription.Text = newPurchasedFailedText
@ -827,7 +823,6 @@ createTextObject = (name, text, type, size) ->
createImageButton = (name) ->
New "ImageButton", name,
Size: UDim2.new 0, 153, 0, 46
Name: name
userPurchaseProductActionsEnded = (userIsClosingDialog) ->
checkingPlayerFunds = false
@ -1056,21 +1051,21 @@ createPurchasePromptGui = ->
cutSizeInHalfRecursive = (_) ->
-- todo: change the gui size based on how much space we have
--[[changeSize(instance,0.5)
--[[changeSize instance,0.5
children = instance\GetChildren!
for i = 1, #children
cutSizeInHalfRecursive(children[i])
cutSizeInHalfRecursive children[i]
end]]
doubleSizeRecursive = (_) ->
-- todo: change the gui size based on how much space we have
--[[changeSize(instance,2)
--[[changeSize instance,2
children = instance\GetChildren!
for i = 1, #children
doubleSizeRecursive(children[i])
doubleSizeRecursive children[i]
end]]
-- 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?
currentButtonTouch = inputObject
contextButtonDown(contextButton, inputObject, actionName)
contextButtonDown contextButton, inputObject, actionName
contextButton.InputChanged\connect (inputObject) ->
return if oldTouches[inputObject] or
currentButtonTouch ~= inputObject
contextButtonMoved(contextButton, inputObject, actionName)
contextButtonMoved contextButton, inputObject, actionName
contextButton.InputEnded\connect (inputObject) ->
return if oldTouches[inputObject] or
@ -139,7 +139,7 @@ createNewButton = (actionName, functionInfoTable) ->
currentButtonTouch = nil
oldTouches[inputObject] = true
contextButtonUp(contextButton, inputObject, actionName)
contextButtonUp contextButton, inputObject, actionName
actionIcon = New "ImageLabel", "ActionIcon"
Position: UDim2.new 0.175, 0, 0.175, 0
@ -169,7 +169,7 @@ createNewButton = (actionName, functionInfoTable) ->
contextButton
createButton = (actionName, functionInfoTable) ->
button = createNewButton(actionName, functionInfoTable)
button = createNewButton actionName, functionInfoTable
local position
for i = 1, #buttonVector do

View File

@ -180,7 +180,7 @@ followThumbstickTouchMove = (thumbstickFrame, thumbstickOuter, touchLocation) ->
crossOuterToInnerWithMovement = (outerToInnerVectorCurrentUnit.x * movementVectorUnit.y) -
(outerToInnerVectorCurrentUnit.y * movementVectorUnit.x)
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 math.abs(anglePercent) > 0.00001
@ -267,7 +267,7 @@ constructThumbstick = (defaultThumbstickPos, updateFunction, stationaryThumbstic
thumbstickTouch = inputObject
table.insert thumbstickTouches, thumbstickTouch
thumbstickFrame.Position = transformFromCenterToTopLeft(thumbstickTouch.Position, thumbstickFrame)
thumbstickFrame.Position = transformFromCenterToTopLeft thumbstickTouch.Position, thumbstickFrame
outerThumbstick.Position = thumbstickFrame.Position
userInputServiceTouchMovedCon = userInputService.TouchMoved\connect (movedInput) ->
@ -453,8 +453,7 @@ setupCameraControl = (parentFrame, refreshCharacterMoveFunc) ->
-- track pinching in new frame
pinchFrame?\Destroy!
-- make sure we didn't track in any mud
pinchFrame = New "Frame"
Name: "PinchFrame"
pinchFrame = New "Frame", "PinchFrame"
BackgroundTransparency: 1
Size: UDim2.new 1, 0, 1, 0
Parent: parentFrame

View File

@ -1,16 +1,36 @@
import "macros" as { $ }
$load $FILE
--Include
Create = assert(LoadLibrary "RbxUtility").Create
-- 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
--
-- A Few Script Globals
gui = script.Parent\FindFirstChild"ControlFrame" or script.Parent
-- Dev-Console Root
Dev_Container = Create"Frame"
Name: "DevConsoleContainer"
Dev_Container = New "Frame", "DevConsoleContainer"
Parent: gui
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.9
@ -18,8 +38,7 @@ Dev_Container = Create"Frame"
Size: UDim2.new 0.5, 20, 0.5, 20
Visible: false
ToggleConsole = Create"BindableFunction"
Name: "ToggleDevConsole"
ToggleConsole = New "BindableFunction", "ToggleDevConsole"
Parent: gui
devConsoleInitialized = false
@ -54,16 +73,49 @@ initializeDeveloperConsole = ->
--Create Dev-Console
Dev_Body = Create"Frame"
Name: "Body"
Dev_Body = New "Frame", "Body"
Parent: Dev_Container
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 0, 0, 0, 21
Size: UDim2.new 1, 0, 1, -25
Dev_OptionsHolder = Create"Frame"
Name: "OptionsHolder"
* New "ImageButton", "ResizeButton"
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
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 1
@ -71,139 +123,113 @@ initializeDeveloperConsole = ->
Size: UDim2.new 1, -255, 0, 24
ClipsDescendants: true
Dev_OptionsBar = Create"Frame"
Name: "OptionsBar"
Dev_OptionsBar = New "Frame", "OptionsBar"
Parent: Dev_OptionsHolder
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 1
Position: UDim2.new 0, -250, 0, 4
Size: UDim2.new 0, 234, 0, 18
Dev_ErrorToggleFilter = Create"TextButton"
Name: "ErrorToggleButton"
Parent: Dev_OptionsBar
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
* New "TextButton", "ErrorToggleButton"
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
Create"Frame"
Name: "CheckFrame"
Parent: Dev_ErrorToggleFilter
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
* New "Frame", "CheckFrame"
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
Dev_InfoToggleFilter = Create"TextButton"
Name: "InfoToggleButton"
Parent: Dev_OptionsBar
BackgroundColor3: Color3.new 0, 0, 0
BorderColor3: Color3.new 0.4, 0.5, 1.0
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.0
* New "TextButton", "InfoToggleButton"
BackgroundColor3: Color3.new 0, 0, 0
BorderColor3: Color3.new 0.4, 0.5, 1.0
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.0
Create"Frame"
Name: "CheckFrame"
Parent: Dev_InfoToggleFilter
BackgroundColor3: Color3.new 0.4, 0.5, 1.0
BorderColor3: Color3.new 0.4, 0.5, 1.0
Position: UDim2.new 0, 4, 0, 4
Size: UDim2.new 0, 10, 0, 10
* New "Frame", "CheckFrame"
BackgroundColor3: Color3.new 0.4, 0.5, 1.0
BorderColor3: Color3.new 0.4, 0.5, 1.0
Position: UDim2.new 0, 4, 0, 4
Size: UDim2.new 0, 10, 0, 10
Dev_OutputToggleFilter = Create"TextButton"
Name: "OutputToggleButton"
Parent: Dev_OptionsBar
BackgroundColor3: Color3.new 0, 0, 0
BorderColor3: Color3.new 1, 1, 1.0
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.0
* New "TextButton", "OutputToggleButton"
BackgroundColor3: Color3.new 0, 0, 0
BorderColor3: Color3.new 1, 1, 1.0
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.0
Create"Frame"
Name: "CheckFrame"
Parent: Dev_OutputToggleFilter
BackgroundColor3: Color3.new 1, 1, 1.0
BorderColor3: Color3.new 1, 1, 1.0
Position: UDim2.new 0, 4, 0, 4
Size: UDim2.new 0, 10, 0, 10
* New "Frame", "CheckFrame"
BackgroundColor3: Color3.new 1, 1, 1.0
BorderColor3: Color3.new 1, 1, 1.0
Position: UDim2.new 0, 4, 0, 4
Size: UDim2.new 0, 10, 0, 10
Dev_WarningToggleFilter = Create"TextButton"
Name: "WarningToggleButton"
Parent: Dev_OptionsBar
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
* New "TextButton", "WarningToggleButton"
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
Create"Frame"
Name: "CheckFrame"
Parent: Dev_WarningToggleFilter
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
* New "Frame", "CheckFrame"
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
Dev_WordWrapToggle = Create"TextButton"
Name: "WordWrapToggleButton"
Parent: Dev_OptionsBar
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
* New "TextButton", "WordWrapToggleButton"
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
Create"Frame"
Name: "CheckFrame"
Parent: Dev_WordWrapToggle
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
* New "Frame", "CheckFrame"
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
Create"TextLabel"
Name: "Filter"
Parent: Dev_OptionsBar
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
* New "TextLabel", "Filter"
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
Create"TextLabel"
Name: "WordWrap"
Parent: Dev_OptionsBar
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,
* New "TextLabel", "WordWrap"
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,
Dev_ScrollBar = Create"Frame"
Name: "ScrollBar"
Dev_ScrollBar = New "Frame", "ScrollBar"
Parent: Dev_Body
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.9
@ -211,65 +237,52 @@ initializeDeveloperConsole = ->
Size: UDim2.new 0, 20, 1, -50
Visible: false
Dev_ScrollArea = Create"Frame"
Name: "ScrollArea"
* New "ImageButton", "Down"
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
BackgroundTransparency: 1
Position: UDim2.new 0, 0, 0, 23
Size: UDim2.new 1, 0, 1, -46
Dev_Handle = Create"ImageButton"
Name: "Handle"
Parent: Dev_ScrollArea
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 0, 0, 0.2, 0
Size: UDim2.new 0, 20, 0, 40
* New "ImageButton", "Handle"
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 0, 0, 0.2, 0
Size: UDim2.new 0, 20, 0, 40
Create"ImageLabel"
Name: "ImageLabel"
Parent: Dev_Handle
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"
* New "ImageLabel", "ImageLabel"
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"
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"
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"
Dev_TextBox = New "Frame", "TextBox"
Parent: Dev_Body
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.6
@ -277,118 +290,63 @@ initializeDeveloperConsole = ->
Size: UDim2.new 1, -4, 1, -28
ClipsDescendants: true
Dev_TextHolder = Create"Frame"
Name: "TextHolder"
Dev_TextHolder = New "Frame", "TextHolder"
Parent: Dev_TextBox
BackgroundTransparency: 1
Position: UDim2.new 0, 0, 0, 0
Size: UDim2.new 1, 0, 1, 0
Dev_OptionsButton = Create"ImageButton"
Name: "OptionsButton"
Dev_OptionsButton = New "ImageButton", "OptionsButton"
Parent: Dev_Body
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 1
Position: UDim2.new 0, 200, 0, 2
Size: UDim2.new 0, 20, 0, 20
Create"ImageLabel"
Name: "ImageLabel"
Parent: Dev_OptionsButton
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"
* New "ImageLabel", "ImageLabel"
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"
Dev_ResizeButton = Create"ImageButton"
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"
Dev_TitleBar = New "Frame", "TitleBar"
Parent: Dev_Container
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 0, 0, 0, 0
Size: UDim2.new 1, 0, 0, 20
Dev_CloseButton = Create"ImageButton"
Name: "CloseButton"
Parent: Dev_TitleBar
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 1, -20, 0, 0
Size: UDim2.new 0, 20, 0, 20
* New "ImageButton", "CloseButton"
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 1, -20, 0, 0
Size: UDim2.new 0, 20, 0, 20
Create"ImageLabel"
Parent: Dev_CloseButton
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 1
Position: UDim2.new 0, 3, 0, 3
Size: UDim2.new 0, 14, 0, 14
Image: "http://www.roblox.com/Asset?id=151205852"
* New "ImageLabel"
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 1
Position: UDim2.new 0, 3, 0, 3
Size: UDim2.new 0, 14, 0, 14
Image: "http://www.roblox.com/Asset?id=151205852"
Create"TextButton"
Name: "TextButton"
Parent: Dev_TitleBar
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 0, 0, 0, 0
Size: UDim2.new 1, -23, 1, 0
Text: ""
* New "TextButton", "TextButton"
BackgroundColor3: Color3.new 0, 0, 0
BackgroundTransparency: 0.5
Position: UDim2.new 0, 0, 0, 0
Size: UDim2.new 1, -23, 1, 0
Text: ""
Create"TextLabel"
Name: "TitleText"
Parent: Dev_TitleBar
BackgroundTransparency: 1
Position: UDim2.new 0, 0, 0, 0
Size: UDim2.new 0, 185, 0, 20
Font: "SourceSansBold"
FontSize: Enum.FontSize.Size18
-- Text: "Server Console"
TextColor3: Color3.new 1, 1, 1
Text: "Roblox Developer Console"
TextYAlignment: Enum.TextYAlignment.Top
* New "TextLabel", "TitleText"
BackgroundTransparency: 1
Position: UDim2.new 0, 0, 0, 0
Size: UDim2.new 0, 185, 0, 20
Font: "SourceSansBold"
FontSize: Enum.FontSize.Size18
-- Text: "Server Console"
TextColor3: Color3.new 1, 1, 1
Text: "Roblox Developer Console"
TextYAlignment: Enum.TextYAlignment.Top
---Saved Mouse Information
local previousMousePos
@ -570,8 +528,7 @@ initializeDeveloperConsole = ->
movePosition = false
if i > #childMessages
message = Create"TextLabel"
Name: "Message"
message = New "TextLabel", "Message"
Parent: Dev_TextHolder
BackgroundTransparency: 1
TextXAlignment: "Left"
@ -724,7 +681,7 @@ initializeDeveloperConsole = ->
num
str = "%s:%s:%s"
timestr = "%s:%s:%s"
ConvertTimeStamp = (timeStamp) ->
localTime = timeStamp - os.time! + math.floor tick!
@ -741,7 +698,7 @@ initializeDeveloperConsole = ->
m = numberWithZero minute
s = numberWithZero dayTime
str\format h, m, s
timestr\format h, m, s
--Filter

View File

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

View File

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

View File

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

View File

@ -101,7 +101,7 @@ resumeGameFunction = (shield) ->
goToMenu = (container, menuName, moveDirection, size, position) ->
return if type(menuName) ~= "string"
table.insert(lastMenuSelection, currentMenuSelection)
table.insert lastMenuSelection, currentMenuSelection
if menuName == "GameMainMenu"
lastMenuSelection = {}
@ -191,15 +191,14 @@ resetLocalCharacter = ->
createTextButton = (text, style, fontSize, buttonSize, buttonPosition) ->
newTextButton = Instance.new "TextButton"
newTextButton.Font = Enum.Font.Arial
newTextButton.FontSize = fontSize
newTextButton.Size = buttonSize
newTextButton.Position = buttonPosition
newTextButton.Style = style
newTextButton.TextColor3 = Color3.new 1, 1, 1
newTextButton.Text = text
newTextButton
New "TextButton"
Font: Enum.Font.Arial
FontSize: fontSize
Size: buttonSize
Position: buttonPosition
Style: style
TextColor3: Color3.new 1, 1, 1
Text: text
CreateTextButtons = (frame, buttons, yPos, ySize) ->
@ -236,7 +235,7 @@ CreateTextButtons = (frame, buttons, yPos, ySize) ->
buttonNum += 1
toggleSelection(buttonObjs[1])
toggleSelection buttonObjs[1]
numButtons = buttonNum - 1
@ -299,7 +298,7 @@ setDisabledState = (guiObject) ->
guiObject.Active = false
else
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) ->
@ -728,8 +727,7 @@ createGameMainMenu = (baseZIndex, shield) ->
gameSettingsButton.Parent = gameMainMenuFrame
gameSettingsButton.MouseButton1Click\connect ->
if game\FindFirstChild "Players" and game.Players["LocalPlayer"]
loadingGui = game.Players.LocalPlayer\FindFirstChild "PlayerLoadingGui"
if loadingGui
if loadingGui = game.Players.LocalPlayer\FindFirstChild "PlayerLoadingGui"
loadingGui.Visible = true
@ -969,7 +967,7 @@ createGameSettingsMenu = (baseZIndex, _) ->
if explicitLevel == graphicsLevel.Value -- make sure we are actually in right graphics mode
setGraphicsQualityLevel(graphicsLevel.Value)
setGraphicsQualityLevel graphicsLevel.Value
if not explicitLevel
@ -1444,7 +1442,7 @@ if LoadLibrary
--showFunction
->
settingsButton.Active = false
updateCameraDropDownSelection(UserSettings!.GameSettings.ControlMode.Name)
updateCameraDropDownSelection UserSettings!.GameSettings.ControlMode.Name
if syncVideoCaptureSetting
syncVideoCaptureSetting!
@ -1511,7 +1509,7 @@ if LoadLibrary
resumeGameFunction shield
gameSettingsMenu = createGameSettingsMenu(baseZIndex, shield)
gameSettingsMenu = createGameSettingsMenu baseZIndex, shield
gameSettingsMenu.Visible = false
gameSettingsMenu.Parent = settingsFrame
@ -2103,8 +2101,7 @@ if LoadLibrary
-- waitForChild game, "Players"
-- waitForProperty game.Players, "LocalPlayer"
-- chatBar = New "Frame"
-- Name: "ChatBar"
-- chatBar = New "Frame", "ChatBar"
-- Size: UDim2.new 1, 0, 0, 22
-- Position: UDim2.new 0, 0, 1, 0
-- BackgroundColor3: Color3.new 0, 0, 0
@ -2150,11 +2147,11 @@ if LoadLibrary
-- -- guiService = game\GetService "GuiService"
-- --[[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!
-- -- if not newChatMode
-- --guiService\AddKey("/")
-- --guiService\AddKey "/"
-- --guiService.KeyPressed\connect (key) -> if key == "/" and hotKeyEnabled then activateChat!
-- chatBox.FocusLost\connect (enterPressed) ->
@ -2212,8 +2209,8 @@ if LoadLibrary
-- if success and luaChat
--[[delay 0, ->
waitForChild(game, "Players")
waitForProperty(game.Players, "LocalPlayer")
waitForChild game, "Players"
waitForProperty game.Players, "LocalPlayer"
advancedChatBarSupported = game.Players.LocalPlayer.ChatMode
chatBar, toggleHotKey = createChatBar!
@ -2222,24 +2219,24 @@ if LoadLibrary
toggleChatBar = (chatMode) ->
if chatMode == Enum.ChatMode.Menu
chatBar.Parent = nil
game.GuiService\SetGlobalSizeOffsetPixel(0,0)
game.GuiService\SetGlobalSizeOffsetPixel 0,0
toggleHotKey false
elseif chatMode == Enum.ChatMode.TextAndMenu
--chatBar.Parent = gui
--game.GuiService\SetGlobalSizeOffsetPixel(0,-22)
--game.GuiService\SetGlobalSizeOffsetPixel 0,-22
toggleHotKey true
game.Players.LocalPlayer.Changed\connect(
function prop
if prop == "ChatMode"
toggleChatBar(game.Players.LocalPlayer.ChatMode)
toggleChatBar game.Players.LocalPlayer.ChatMode
toggleChatBar(game.Players.LocalPlayer.ChatMode)
toggleChatBar game.Players.LocalPlayer.ChatMode
else
--chatBar.Parent = gui
--game.GuiService\SetGlobalSizeOffsetPixel(0,-22)
--game.GuiService\SetGlobalSizeOffsetPixel 0,-22
]]
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
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
Players.Changed\wait!
@ -471,14 +471,12 @@ IsMaximized = Instance.new "BoolValue"
IsTabified = Instance.new "BoolValue"
AreNamesExpanded = Instance.new "BoolValue"
MiddleTemplate = New "Frame"
Name: "MidTemplate"
MiddleTemplate = New "Frame", "MidTemplate"
BackgroundTransparency: 1
Position: UDim2.new 100, 0, 0.07, 0
Size: UDim2.new 0.5, 0, 0.025, 0 --UDim2.new 1, 0, .03, 0
* New "ImageLabel"
Name: "BCLabel"
* New "ImageLabel", "BCLabel"
Active: true
BackgroundTransparency: 1
Position: UDim2.new 0.005, 5, 0.20, 0
@ -487,8 +485,7 @@ MiddleTemplate = New "Frame"
Image: ""
ZIndex: 3
* New "ImageLabel"
Name: "FriendLabel"
* New "ImageLabel", "FriendLabel"
Active: true
BackgroundTransparency: 1
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:
-- Name(String)
-- Priority(number)
-- Name String
-- Priority number
-- IsPrimary (bool, should it be shown in upper right)
-- MaxLength (integer, of the length of the longest element for this column)
ScoreNames = {}
@ -916,7 +913,7 @@ game.Workspace.ChildAdded\connect (nchild) ->
-- Static Functions
-------------------------------
-- GetTotalEntries = ->
-- return math.min(#MiddleFrameBackgrounds, DefaultEntriesOnScreen)
-- return math.min #MiddleFrameBackgrounds, DefaultEntriesOnScreen
-- GetEntryListLength = ->
-- numEnts = #PlayerFrames + #TeamFrames
@ -966,7 +963,7 @@ TweenProperty = (obj, propName, inita, enda, length) ->
--[[
UGLY UGLY HACK FUNCTION
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:
frameParent Object to parent fullscreen gui to
polledFunction function to call on mouse moved events in this gui
@ -1273,8 +1270,8 @@ local BaseUpdate
property Name of stat changed
--]]
StatChanged = (_, _) -> --playerEntry, property)
-- if(playerEntry['MyTeam'])
-- UpdateSingleTeam(playerEntry['MyTeam'])
-- if playerEntry['MyTeam']
-- UpdateSingleTeam playerEntry['MyTeam']
-- else
BaseUpdate!
-- end
@ -1367,7 +1364,7 @@ DoesStatExist = (statName, exception) ->
--[[
Called when stat is removed from player
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
@Args:
nchild ___value to be removed
@ -1787,7 +1784,7 @@ UpdateMaximize = ->
for j = 1, #ScoreNames, 1
scoreval = ScoreNames[j]
if i\FindFirstChild(scoreval["Name"]) and scoreval["XOffset"]
--print('updateing stat position: ' .. scoreval['Name'])
-- print "updateing stat position: #{scoreval["Name"]}"
i[scoreval["Name"]]\TweenPosition(
UDim2.new(RightEdgeSpace, -scoreval["XOffset"], 0, 0),
"Out",
@ -2143,7 +2140,7 @@ AddMiddleBGFrame = ->
table.insert MiddleFrameBackgrounds, nBGFrame
if #MiddleFrameBackgrounds < DefaultListSize and not DidMinimizeDrag
--print('readjusting bottom clip')
--print 'readjusting bottom clip'
DefaultBottomClipPos = -1 + #MiddleFrameBackgrounds * MiddleBGTemplate.Size.Y.Scale
@ -2228,7 +2225,7 @@ OnPlayerEntrySelect = (entry, startx, starty) ->
--]]
PlayerListModeUpdate = ->
RecreateScoreColumns PlayerFrames
table.sort(PlayerFrames, PlayerSortFunction)
table.sort PlayerFrames, PlayerSortFunction
for i, val in ipairs PlayerFrames
MiddleFrames[i] = val["Frame"]
@ -2255,7 +2252,7 @@ RemoveNeutralTeam = ->
index index of player in 'MyPlayers' list to remove
--]]
RemovePlayerFromTeam = (teamEntry, index) ->
table.remove(teamEntry["MyPlayers"], index)
table.remove teamEntry["MyPlayers"], index
--if teamEntry['AutoHide'] and #teamEntry['MyPlayers'] == 0
if teamEntry == NeutralTeam and #teamEntry["MyPlayers"] == 0
RemoveNeutralTeam!
@ -2440,7 +2437,7 @@ InsertPlayerFrame = (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.Name = nplayer.Name
WaitForChild(WaitForChild(nFrame, "TitleFrame"), "Title").Text = nplayer.Name
@ -2586,7 +2583,7 @@ Players.ChildRemoved\connect RemovePlayerFrame
UnrollTeams = (tframes, outframes) ->
numEntries = 0
if NeutralTeam and not NeutralTeam["IsHidden"]
for _, val in ipairs(NeutralTeam["MyPlayers"])
for _, val in ipairs NeutralTeam["MyPlayers"]
numEntries += 1
outframes[numEntries] = val["Frame"]
@ -2595,7 +2592,7 @@ UnrollTeams = (tframes, outframes) ->
for _, val in ipairs tframes
if not val["IsHidden"]
for _, pval in ipairs(val.MyPlayers)
for _, pval in ipairs val.MyPlayers
numEntries += 1
outframes[numEntries] = pval["Frame"]
@ -2631,7 +2628,7 @@ AddTeamScores = (team) ->
for j = 1, #ScoreNames, 1
i = ScoreNames[j]
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"]
if tval and not tval\IsA "StringValue"
tscore += GetScoreValue (j["Player"].leaderstats)[i["Name"]]
@ -2664,7 +2661,7 @@ TeamListModeUpdate = ->
SortTeams TeamFrames
if NeutralTeam
AddTeamScores NeutralTeam
--RecreateScoreColumns(NeutralTeam['MyPlayers'])
--RecreateScoreColumns NeutralTeam['MyPlayers']
UnrollTeams TeamFrames, MiddleFrames
@ -2890,7 +2887,7 @@ BaseUpdate = ->
UpdateScrollPosition!
UpdateScrollBarVisibility!
--debugprint('EndBaseUpdate')
--debugprint 'EndBaseUpdate'
BaseUpdateLock = false

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,30 @@
import "macros" as { $ }
$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 = {}
-- waitForChild = (instance, name) ->
@ -9,7 +33,7 @@ t = {}
-- 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.
--
@ -24,9 +48,9 @@ PlaneIntersection = (vectorPos) ->
startPos = Vector3.new .X, .Y, .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
startEndDot = normal\Dot(endPos - startPos)
startEndDot = normal\Dot endPos - startPos
cellPos = vectorPos
if startEndDot ~= 0
t = normal\Dot(p3 - startPos) / startEndDot
@ -158,14 +182,12 @@ setSeatEnabledStatus = (model, isEnabled) ->
-- 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
for i = 1, #seatList
fakeWeld = Instance.new "Weld"
fakeWeld.Name = "SeatWeld"
fakeWeld.Parent = seatList[i]
New "Weld", "SeatWeld"
Parent: seatList[i]
autoAlignToFace = (parts) ->
aatf = parts\FindFirstChild "AutoAlignToFace"
if aatf
if aatf = parts\FindFirstChild "AutoAlignToFace"
aatf.Value
else
false
@ -257,21 +279,21 @@ modelTargetSurface = (partOrModel, rayStart, rayEnd) ->
hitFace = 0
--if xHitTime >= 0 and yHitTime >= 0 and zHitTime >= 0
if xHitTime > yHitTime
hitFace = if xHitTime > yHitTime
if xHitTime > zHitTime
-- xFace is hit
hitFace = 1 * xPositive
1 * xPositive
else
-- zFace is hit
hitFace = 3 * zPositive
3 * zPositive
else
if yHitTime > zHitTime
-- yFace is hit
hitFace = 2 * yPositive
2 * yPositive
else
-- zFace is hit
hitFace = 3 * zPositive
3 * zPositive
hitFace
@ -298,7 +320,7 @@ getBoundingBox2 = (partOrModel) ->
if justifyValue?
-- find the multiple of 4 that contains the model
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
containingGridBox = Vector3.new(
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
elseif not partOrModel\IsA "Terrain"
-- we shouldn't have to deal with this case
--minVec = Vector3.new(-2, -2, -2)
--maxVec = Vector3.new(2, 2, 2)
--minVec = Vector3.new -2, -2, -2
--maxVec = Vector3.new 2, 2, 2
-- else
vec1 = 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"
return false
if part\FindFirstChild "RobloxStamper" or part\FindFirstChild "RobloxModel"
if part\FindFirstChild"RobloxStamper" or part\FindFirstChild "RobloxModel"
return true
if part\IsA"Part" and not part.CanCollide
@ -376,7 +398,7 @@ spaceAboveCharacter = (charTorso, newTorsoY, stampData) ->
partsAboveChar = game.Workspace\FindPartsInRegion3(
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, 1.75, 0.75)
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new 0.75, 1.75, 0.75
),
charTorso.Parent,
100
@ -388,7 +410,7 @@ spaceAboveCharacter = (charTorso, newTorsoY, stampData) ->
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, 1.75, 0.75)
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new 0.75, 1.75, 0.75
)
return false
@ -406,8 +428,8 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
return if not Mouse
-- This can happen sometimes, return if so
return if not stampData
error "findConfigAtMouseTarget: stampData is nil"
if not stampData
return error "findConfigAtMouseTarget: stampData is nil"
return if not stampData["CurrentParts"]
@ -426,10 +448,10 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
if Mouse
if stampData.CurrentParts\IsA "Tool"
Mouse.TargetFilter = stampData.CurrentParts.Handle
Mouse.TargetFilter = if stampData.CurrentParts\IsA "Tool"
stampData.CurrentParts.Handle
else
Mouse.TargetFilter = stampData.CurrentParts
stampData.CurrentParts
hitPlane = false
local targetPart
@ -445,7 +467,6 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
if Mouse
mouseHitInWorld = Vector3.new Mouse.Hit.x, Mouse.Hit.y, Mouse.Hit.z
local cellPos
-- Nothing was hit, so check for the default plane.
@ -458,8 +479,8 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
targetPart = game.Workspace.Terrain
hitPlane = true
-- Take into account error that will occur.
cellPos = Vector3.new(cellPos.X - 1, cellPos.Y, cellPos.Z)
mouseHitInWorld = game.Workspace.Terrain\CellCenterToWorld(cellPos.x, 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
-- 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)
--targetVectorInWorld = targetCFrame\vectorToWorldSpace(Vector3.FromNormalId(Mouse.TargetSurface))
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
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
targetVectorInWorld = targetCFrame\vectorToWorldSpace(WORLD_AXES[hitFace])
targetVectorInWorld = targetCFrame\vectorToWorldSpace WORLD_AXES[hitFace]
elseif hitFace < 0
targetVectorInWorld = targetCFrame\vectorToWorldSpace(-WORLD_AXES[-hitFace])
targetVectorInWorld = targetCFrame\vectorToWorldSpace -WORLD_AXES[-hitFace]
end]]
@ -580,10 +601,10 @@ truncateToCircleEighth = (bigValue, littleValue) ->
if frac > 0.382683432
-- 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
-- between 0 and 22.5 degrees, so truncate to 0-degree tilt
return hypotenuse * bigSign, 0
hypotenuse * bigSign, 0
saveTheWelds = (object, manualWeldTable, manualWeldParentTable) ->
@ -688,24 +709,22 @@ t.GetStampModel = (assetId, terrainShape, useAssetVersionId) ->
newTerrainPiece.CFrame = CFrame.Angles 0, math.pi / 2 * cellOrient + flipped, sideways
if cellType == 3
inverseCornerWedgeMesh = Instance.new "SpecialMesh"
inverseCornerWedgeMesh.MeshType = "FileMesh"
inverseCornerWedgeMesh.MeshId = "http://www.roblox.com/asset?id=66832495"
inverseCornerWedgeMesh.Scale = Vector3.new 2, 2, 2
inverseCornerWedgeMesh.Parent = newTerrainPiece
New "SpecialMesh"
MeshType: "FileMesh"
MeshId: "http://www.roblox.com/asset?id=66832495"
Scale: Vector3.new 2, 2, 2
Parent: newTerrainPiece
materialTag = Instance.new "Vector3Value"
materialTag.Value = Vector3.new cellMat, cellType, cellOrient
materialTag.Name = "ClusterMaterial"
materialTag.Parent = newTerrainPiece
New "Vector3Value", "ClusterMaterial"
Value: Vector3.new cellMat, cellType, cellOrient
Parent: newTerrainPiece
return newTerrainPiece
newTerrainPiece
-- 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
local root
local loader
local root, loader
loading = true
if useAssetVersionId
loader = coroutine.create ->
@ -771,36 +790,33 @@ t.GetStampModel = (assetId, terrainShape, useAssetVersionId) ->
-- ...and tag all inserted models for subsequent origin identification
-- if no RobloxModel tag already exists, then add it.
if not root\FindFirstChild"RobloxModel"?
stringTag = Instance.new "BoolValue"
stringTag.Name = "RobloxModel"
stringTag.Parent = root
if root\FindFirstChild"RobloxModel" == nil
New "BoolValue", "RobloxModel"
Parent: root
if not root\FindFirstChild"RobloxStamper"?
stringTag2 = Instance.new "BoolValue"
stringTag2.Name = "RobloxStamper"
stringTag2.Parent = root
if root\FindFirstChild"RobloxStamper" == nil
New "BoolValue", "RobloxStamper"
Parent: root
if terrainShape
if root.Name == "MegaClusterCube"
if terrainShape == 6 -- insert an autowedging tag
autowedgeTag = Instance.new "BoolValue"
autowedgeTag.Name = "AutoWedge"
autowedgeTag.Parent = root
New "BoolValue", "AutoWedge"
Parent: root
else
clusterTag = root\FindFirstChild "ClusterMaterial"
if clusterTag
root = if clusterTag
if clusterTag\IsA "Vector3Value"
root = setupFakeTerrainPart(clusterTag.Value.X, terrainShape, clusterTag.Value.Z)
setupFakeTerrainPart clusterTag.Value.X, terrainShape, clusterTag.Value.Z
else
root = setupFakeTerrainPart(clusterTag.Value, terrainShape, 0)
setupFakeTerrainPart clusterTag.Value, terrainShape, 0
else
root = setupFakeTerrainPart(1, terrainShape, 0)
setupFakeTerrainPart 1, terrainShape, 0
return root
root
t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion, StampFailedFunc) ->
@ -843,38 +859,37 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
local stampData
local mouseTarget
errorBox = Instance.new "SelectionBox"
errorBox.Color = BrickColor.new "Bright red"
errorBox.Transparency = 0
errorBox.Archivable = false
errorBox = New "SelectionBox"
Color: BrickColor.new "Bright red"
Transparency: 0
Archivable: false
-- for megacluster MEGA STAMPING
adornPart = Instance.new "Part"
adornPart.Parent = nil
adornPart.formFactor = "Custom"
adornPart.Size = Vector3.new(4, 4, 4)
adornPart.CFrame = CFrame.new!
adornPart.Archivable = false
adornPart = New "Part"
Parent: nil
formFactor: "Custom"
Size: Vector3.new 4, 4, 4
CFrame: CFrame.new!
Archivable: false
adorn = Instance.new "SelectionBox"
adorn.Color = BrickColor.new "Toothpaste"
adorn.Adornee = adornPart
adorn.Visible = true
adorn.Transparency = 0
adorn.Name = "HighScalabilityStamperLine"
adorn.Archivable = false
adorn = New "SelectionBox", "HighScalabilityStamperLine"
Color: BrickColor.new "Toothpaste"
Adornee: adornPart
Visible: true
Transparency: 0
Archivable: false
HighScalabilityLine = {}
HighScalabilityLine.Start = nil
HighScalabilityLine.End = nil
HighScalabilityLine.Adorn = adorn
HighScalabilityLine.AdornPart = adornPart
HighScalabilityLine.InternalLine = nil
HighScalabilityLine.NewHint = true
HighScalabilityLine.MorePoints = { nil, nil }
HighScalabilityLine.MoreLines = { nil, nil }
HighScalabilityLine.Dimensions = 1
with HighScalabilityLine
.Start = nil
.End = nil
.Adorn = adorn
.AdornPart = adornPart
.InternalLine = nil
.NewHint = true
.MorePoints = { nil, nil }
.MoreLines = { nil, nil }
.Dimensions = 1
control = {}
movingLock = false
@ -883,9 +898,9 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
mouseCons = {}
local keyCon
stamped = Instance.new "BoolValue"
stamped.Archivable = false
stamped.Value = false
stamped = New "BoolValue"
Archivable: false
Value: false
lastTarget = {}
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
-- 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
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.Z)
if math.abs(line.X) < math.abs line.Y
if math.abs(line.X) < math.abs line.Z
-- limit to Y/Z plane, domination unknown
local newY, newZ
if math.abs(line.Y) > math.abs(line.Z)
newY, newZ = truncateToCircleEighth(line.Y, line.Z)
if math.abs(line.Y) > math.abs line.Z
newY, newZ = truncateToCircleEighth line.Y, line.Z
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
-- limit to X/Y plane, with Y dominating
newY, newX = truncateToCircleEighth(line.Y, line.X)
line = Vector3.new(newX, newY, 0)
newY, newX = truncateToCircleEighth line.Y, line.X
line = Vector3.new newX, newY, 0
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
local newX, newZ
if math.abs(line.X) > math.abs(line.Z)
newX, newZ = truncateToCircleEighth(line.X, line.Z)
if math.abs(line.X) > math.abs line.Z
newX, newZ = truncateToCircleEighth line.X, line.Z
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
-- limit to X/Y plane, with X dominating
newX, newY = truncateToCircleEighth(line.X, line.Y)
line = Vector3.new(newX, newY, 0)
newX, newY = truncateToCircleEighth line.X, line.Y
line = Vector3.new newX, newY, 0
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
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
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
tempCFrame = CFrame.new(HighScalabilityLine.Start, HighScalabilityLine.Start + line)
tempCFrame = CFrame.new HighScalabilityLine.Start, HighScalabilityLine.Start + 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 +
tempCFrame\vectorToWorldSpace Vector3.new(2, 2, 2) - HighScalabilityLine.AdornPart.Size / 2
else
boxSize = tempCFrame\vectorToObjectSpace(line + line2 + line3)
boxSize = tempCFrame\vectorToObjectSpace line + line2 + line3
HighScalabilityLine.AdornPart.Size = Vector3.new(4, 4, 4) +
Vector3.new(math.abs(boxSize.X), math.abs(boxSize.Y), math.abs(boxSize.Z))
HighScalabilityLine.AdornPart.CFrame = tempCFrame + tempCFrame\vectorToWorldSpace boxSize / 2
@ -1032,24 +1047,20 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
return
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
-- There wasn't a target (no part or terrain), so check for plane intersection.
if not Mouse.Target
cellPos = GetTerrainForMouse Mouse
if nil == cellPos
return
if not stampData
return
return if nil == cellPos
return if not stampData
-- don't move with dragger - will move in one step on mouse down
-- draw ghost at acceptable positions
configFound, targetCFrame, targetSurface = findConfigAtMouseTarget(Mouse, stampData)
configFound, targetCFrame, targetSurface = findConfigAtMouseTarget Mouse, stampData
if not configFound
error "RbxStamper.DoStamperMouseMove No configFound, returning"
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
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 = 0 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts)
numRotations = if targetSurface == 3
0 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
elseif targetSurface == 0
numRotations = 2 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts)
2 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
elseif targetSurface == 5
numRotations = 3 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts)
3 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
elseif targetSurface == 2
numRotations = 1 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts)
1 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
ry = math.pi / 2
gInitial90DegreeRotations += numRotations
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
--stampData.CurrentParts\Rotate(0, ry*numRotations, 0)
modelRotate(stampData.CurrentParts, ry * numRotations)
--stampData.CurrentParts\Rotate 0, ry*numRotations, 0
modelRotate stampData.CurrentParts, ry * numRotations
else
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry * numRotations, 0)
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ 0, ry * numRotations, 0
* stampData.CurrentParts.CFrame
-- 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
local currModelCFrame
@ -1092,12 +1103,12 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
maxBB += targetCFrame.p - currModelCFrame.p
-- don't drag into terrain
if clusterPartsInRegion(minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector)
if clusterPartsInRegion minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector
if lastTarget.CFrame
if stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
theClusterMaterial = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
if stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
theClusterMaterial = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
if theClusterMaterial\IsA "Vector3Value"
stampClusterMaterial = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
stampClusterMaterial = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
if stampClusterMaterial
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
if (not try
if Mouse and Mouse.Target and not Mouse.Target.Parent\FindFirstChild"RobloxModel"?
return
else
return
-- ?
-- if Mouse and Mouse.Target and not Mouse.Target.Parent\FindFirstChild"RobloxModel"?
-- return
-- else
-- return
return
)
error "Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check"
game.JointsService\ClearJoinAfterMoveJoints!
Mouse = nil
@ -1239,7 +1249,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- Rotate the parts or all the parts in the model
ry = math.pi / 2
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
else
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry, 0) * stampData.CurrentParts.CFrame
@ -1254,14 +1264,14 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
DoStamperMouseMove Mouse
elseif key == "c" -- try to expand our high scalability dragger dimension
if HighScalabilityLine.InternalLine and
HighScalabilityLine.InternalLine.magnitude > 0 and
HighScalabilityLine.Dimensions < 3
HighScalabilityLine.MorePoints[HighScalabilityLine.Dimensions] = HighScalabilityLine.End
HighScalabilityLine.MoreLines[HighScalabilityLine.Dimensions] = HighScalabilityLine.InternalLine
HighScalabilityLine.Dimensions = HighScalabilityLine.Dimensions + 1
HighScalabilityLine.NewHint = true
with HighScalabilityLine
if .InternalLine and
.InternalLine.magnitude > 0 and
.Dimensions < 3
.MorePoints[.Dimensions] = .End
.MoreLines[.Dimensions] = .InternalLine
.Dimensions = .Dimensions + 1
.NewHint = true
keyCon = Mouse.KeyDown\connect (key) -> -- init key connection (keeping code close to func)
setupKeyListener key, Mouse
@ -1275,10 +1285,11 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
flashRedBox = ->
gui = game.CoreGui
if game\FindFirstChild "Players"
if game.Players["LocalPlayer"]
if game.Players.LocalPlayer\FindFirstChild "PlayerGui"
gui = game.Players.LocalPlayer.PlayerGui
if game\FindFirstChild"Players" and
game.Players["LocalPlayer"] and
game.Players.LocalPlayer\FindFirstChild "PlayerGui"
gui = game.Players.LocalPlayer.PlayerGui
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"
return
if not stampData
return
return if not stampData
if isMegaClusterPart!
if Mouse and HighScalabilityLine
megaCube = stampData.CurrentParts\FindFirstChild("MegaClusterCube", true)
megaCube = stampData.CurrentParts\FindFirstChild "MegaClusterCube", true
terrain = game.Workspace.Terrain
if megaCube
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
return
else
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
return
@ -1371,16 +1380,17 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
decals = {}
stampData = {}
stampData.DisabledScripts = {}
stampData.TransparencyTable = {}
stampData.MaterialTable = {}
stampData.CanCollideTable = {}
stampData.AnchoredTable = {}
stampData.ArchivableTable = {}
stampData.DecalTransparencyTable = {}
stampData.SurfaceTypeTable = {}
with stampData
.DisabledScripts = {}
.TransparencyTable = {}
.MaterialTable = {}
.CanCollideTable = {}
.AnchoredTable = {}
.ArchivableTable = {}
.DecalTransparencyTable = {}
.SurfaceTypeTable = {}
collectParts(clone, parts, scripts, decals)
collectParts clone, parts, scripts, decals
if #parts <= 0
return nil, "no parts found in modelToStamp"
@ -1404,7 +1414,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
stampData.ArchivableTable[part] = part.Archivable
part.Archivable = false
saveSurfaceTypes(part, stampData.SurfaceTypeTable)
saveSurfaceTypes part, stampData.SurfaceTypeTable
fadeInDelayTime = 0.5
transFadeInTime = 0.5
@ -1447,7 +1457,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
else -- pre-rotate if necessary
ry = gInitial90DegreeRotations * math.pi / 2
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
else
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
configFound, targetCFrame = findConfigAtMouseTarget(Mouse, stampData)
configFound, targetCFrame = findConfigAtMouseTarget Mouse, stampData
if configFound
stampData.CurrentParts = positionPartsAtCFrame3(targetCFrame, stampData.CurrentParts)
stampData.CurrentParts = positionPartsAtCFrame3 targetCFrame, stampData.CurrentParts
-- to show joints during the mouse move
game.JointsService\SetJoinAfterMoveInstance(stampData.CurrentParts)
game.JointsService\SetJoinAfterMoveInstance stampData.CurrentParts
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 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
(cellPos.X - 2 < allowedStampRegion.CFrame.p.X - allowedStampRegion.Size.X / 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
if stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
clusterMaterial = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
if stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
clusterMaterial = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
if clusterMaterial\IsA "Vector3Value"
clusterType = clusterMaterial.Value.Y
clusterOrientation = clusterMaterial.Value.Z
@ -1577,7 +1587,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
HighScalabilityLine.Start and
((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 }
yInc = { 0, 0, 0 }
zInc = { 0, 0, 0 }
@ -1595,20 +1605,20 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
lines = {}
if HighScalabilityLine.Dimensions > 1
table.insert(lines, HighScalabilityLine.MoreLines[1])
table.insert lines, HighScalabilityLine.MoreLines[1]
if line and line.magnitude > 0
table.insert(lines, line)
table.insert lines, line
if HighScalabilityLine.Dimensions > 2
table.insert(lines, HighScalabilityLine.MoreLines[2])
table.insert lines, HighScalabilityLine.MoreLines[2]
for i = 1, #lines
lines[i] = Vector3.new(
math.floor(lines[i].X + 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
if lines[i].X > 0
@ -1627,7 +1637,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
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
incrementVect[i] = nil
@ -1639,8 +1649,8 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
lines[3] = Vector3.new 0, 0, 0
waterForceTag = stampData.CurrentParts\FindFirstChild("WaterForceTag", true)
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild("WaterForceDirectionTag", true)
waterForceTag = stampData.CurrentParts\FindFirstChild "WaterForceTag", true
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild "WaterForceDirectionTag", true
while stepVect[3].magnitude * 4 <= lines[3].magnitude
outerStepVectIndex = 1
@ -1712,7 +1722,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
innerStepVectIndex += 1
else
stepVect[2] = Vector3.new(1, 0, 0)
stepVect[2] = Vector3.new 1, 0, 0
innerStepVectIndex = 4 -- skip all remaining loops
if stepVect[2].magnitude * 4 > lines[2].magnitude
@ -1754,7 +1764,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
return false
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
@ -1782,13 +1792,11 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
canStamp = true
checkHighScalabilityStamp = true
else
canStamp, checkHighScalabilityStamp = t.CanEditRegion(stampData.CurrentParts, allowedStampRegion)
canStamp, checkHighScalabilityStamp = t.CanEditRegion stampData.CurrentParts, allowedStampRegion
if not canStamp
if stampFailedFunc
stampFailedFunc!
stampFailedFunc?!
return false
@ -1799,25 +1807,23 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- 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 stampFailedFunc
stampFailedFunc!
stampFailedFunc?!
return false
-- 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
-- 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?
configFound, targetCFrame = findConfigAtMouseTarget(Mouse, stampData)
configFound, targetCFrame = findConfigAtMouseTarget Mouse, stampData
if configFound and not HighScalabilityLine.Adorn.Parent
if clusterPartsInRegion(minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector)
if clusterPartsInRegion minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector
flashRedBox!
return false
@ -1829,7 +1835,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
)
for b = 1, #blockingParts
if isBlocker(blockingParts[b])
if isBlocker blockingParts[b]
flashRedBox!
return false
@ -1893,22 +1899,22 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- if target point is in cluster, just use cluster\SetCell
if isMegaClusterPart!
-- 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
if stampData.CurrentParts\IsA "Model"
cellPos = cluster\WorldToCell(stampData.CurrentParts\GetModelCFrame!.p)
cellPos = cluster\WorldToCell stampData.CurrentParts\GetModelCFrame!.p
else
cellPos = cluster\WorldToCell(stampData.CurrentParts.CFrame.p)
cellPos = cluster\WorldToCell stampData.CurrentParts.CFrame.p
cMax = game.Workspace.Terrain.MaxExtents.Max
cMin = game.Workspace.Terrain.MaxExtents.Min
if checkTerrainBlockCollisions(cellPos, false)
clusterValues = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
waterForceTag = stampData.CurrentParts\FindFirstChild("WaterForceTag", true)
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild("WaterForceDirectionTag", true)
if checkTerrainBlockCollisions cellPos, false
clusterValues = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
waterForceTag = stampData.CurrentParts\FindFirstChild "WaterForceTag", true
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild "WaterForceDirectionTag", true
if cellPos.X >= cMin.X and
cellPos.Y >= cMin.Y and
@ -1944,7 +1950,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
clusterValues.Value.Z
)
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
@ -1957,7 +1963,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
game.Workspace.Terrain\AutowedgeCells(
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
)
)
@ -1978,12 +1984,10 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
getPlayer = ->
if game\FindFirstChild "Players"
if game.Players["LocalPlayer"]
return game.Players.LocalPlayer
return nil
if game\FindFirstChild"Players" and
game.Players["LocalPlayer"]
return game.Players.LocalPlayer
-- 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<
manualWeldTable = {}
manualWeldParentTable = {}
saveTheWelds(stampData.CurrentParts, manualWeldTable, manualWeldParentTable)
saveTheWelds stampData.CurrentParts, manualWeldTable, manualWeldParentTable
stampData.CurrentParts\BreakJoints!
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)
@ -2017,22 +2021,19 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- ...and tag all inserted models for subsequent origin identification
-- if no RobloxModel tag already exists, then add it.
if not stampData.CurrentParts\FindFirstChild"RobloxModel"?
stringTag = Instance.new "BoolValue"
stringTag.Name = "RobloxModel"
stringTag.Parent = stampData.CurrentParts
New "BoolValue", "RobloxModel"
Parent: stampData.CurrentParts
if not stampData.CurrentParts\FindFirstChild"RobloxStamper"?
stringTag2 = Instance.new "BoolValue"
stringTag2.Name = "RobloxStamper"
stringTag2.Parent = stampData.CurrentParts
New "BoolValue", "RobloxStamper"
Parent: stampData.CurrentParts
else
stampData.CurrentParts\BreakJoints!
if not stampData.CurrentParts\FindFirstChild"RobloxStamper"?
stringTag2 = Instance.new "BoolValue"
stringTag2.Name = "RobloxStamper"
stringTag2.Parent = stampData.CurrentParts
New "BoolValue", "RobloxStamper"
Parent: stampData.CurrentParts
-- 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
loadSurfaceTypes(part, surfaces)
loadSurfaceTypes part, surfaces
if isMegaClusterPart!
@ -2069,21 +2070,21 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
-- re-enable all seats
setSeatEnabledStatus(stampData.CurrentParts, true)
setSeatEnabledStatus stampData.CurrentParts, true
stampData.TransparencyTable = nil
stampData.ArchivableTable = nil
stampData.MaterialTable = nil
stampData.CanCollideTable = nil
stampData.AnchoredTable = nil
stampData.SurfaceTypeTable = nil
with stampData
.TransparencyTable = nil
.ArchivableTable = nil
.MaterialTable = nil
.CanCollideTable = nil
.AnchoredTable = nil
.SurfaceTypeTable = nil
-- ...and tag all inserted models for subsequent origin identification
-- if no RobloxModel tag already exists, then add it.
if not stampData.CurrentParts\FindFirstChild"RobloxModel"?
stringTag = Instance.new "BoolValue"
stringTag.Name = "RobloxModel"
stringTag.Parent = stampData.CurrentParts
New "BoolValue", "RobloxModel"
Parent: stampData.CurrentParts
-- 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
whichSurface *= -1
surfaceNormal = isPositive * modelCFrame\vectorToWorldSpace(AXIS_VECTORS[whichSurface])
surfaceNormal = isPositive * modelCFrame\vectorToWorldSpace AXIS_VECTORS[whichSurface]
for i = 1, #parts
currPart = parts[i]
@ -2178,9 +2179,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
resumeStamper = ->
clone, parts = prepareModel modelToStamp
if not clone or not parts
return
return if not clone or not parts
-- if we have unjoinable faces, then we want to change those surfaces to be Unjoinable
unjoinableTag = clone\FindFirstChild "UnjoinableFaces", true

View File

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

View File

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

View File

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