Improve formatting of corescripts
This commit is contained in:
parent
df7e3bd7b9
commit
30bc79cf83
|
|
@ -192,10 +192,10 @@ local aA aA=function(aB,aC,aD,aE)return a(aD,aB,{Font=Enum.Font.ArialBold,
|
||||||
TextColor3=Color3.new(0.8509803921568627,0.8509803921568627,0.8509803921568627),
|
TextColor3=Color3.new(0.8509803921568627,0.8509803921568627,0.8509803921568627),
|
||||||
TextWrapped=true,Text=aC,BackgroundTransparency=1,BorderSizePixel=0,FontSize=aE}
|
TextWrapped=true,Text=aC,BackgroundTransparency=1,BorderSizePixel=0,FontSize=aE}
|
||||||
)end local aB aB=function(aC)return a('ImageButton',aC,{Size=UDim2.new(0,153,0,
|
)end local aB aB=function(aC)return a('ImageButton',aC,{Size=UDim2.new(0,153,0,
|
||||||
46),Name=aC})end local aC aC=function(aD)k=false if aD then aa()if j then local
|
46)})end local aC aC=function(aD)k=false if aD then aa()if j then local aE=false
|
||||||
aE=false if(tostring(j['isValid'])):lower()=='true'then aE=true end Game:
|
if(tostring(j['isValid'])):lower()=='true'then aE=true end Game:GetService
|
||||||
GetService'MarketplaceService':SignalPromptProductPurchaseFinished(tonumber(j[
|
'MarketplaceService':SignalPromptProductPurchaseFinished(tonumber(j['playerId'])
|
||||||
'playerId']),tonumber(j['productId']),aE)else print
|
,tonumber(j['productId']),aE)else print
|
||||||
'Something went wrong, no currentServerResponseTable'end return Z()else local aE
|
'Something went wrong, no currentServerResponseTable'end return Z()else local aE
|
||||||
=string.gsub(R,'itemName',tostring(d['Name']))q.BodyFrame.ItemPreview.
|
=string.gsub(R,'itemName',tostring(d['Name']))q.BodyFrame.ItemPreview.
|
||||||
ItemDescription.Text=aE ab(q.BodyFrame.OkPurchasedButton)return _()end end local
|
ItemDescription.Text=aE ab(q.BodyFrame.OkPurchasedButton)return _()end end local
|
||||||
|
|
|
||||||
|
|
@ -80,16 +80,16 @@ if F==H then return true end end return false end local F F=function(G,H)local I
|
||||||
,J,K,L,M,N,O,P,Q,R=nil,false,b.RotateCamera,-1,false,nil,b.ZoomCamera,{},nil,nil
|
,J,K,L,M,N,O,P,Q,R=nil,false,b.RotateCamera,-1,false,nil,b.ZoomCamera,{},nil,nil
|
||||||
R=function()s=nil J=false I=nil end local S S=function()P={}N=nil M=false Q:
|
R=function()s=nil J=false I=nil end local S S=function()P={}N=nil M=false Q:
|
||||||
Destroy()Q=nil end local T T=function(U,V)if Q~=nil then Q:Destroy()end Q=a(
|
Destroy()Q=nil end local T T=function(U,V)if Q~=nil then Q:Destroy()end Q=a(
|
||||||
'Frame',{Name='PinchFrame',BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),
|
'Frame','PinchFrame',{BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),Parent=G}
|
||||||
Parent=G})Q.InputChanged:connect(function(W)if not M then S()return end R()if
|
)Q.InputChanged:connect(function(W)if not M then S()return end R()if not(N~=nil)
|
||||||
not(N~=nil)then if W==U then N=(W.Position-V.Position).magnitude U=W elseif W==V
|
then if W==U then N=(W.Position-V.Position).magnitude U=W elseif W==V then N=(W.
|
||||||
then N=(W.Position-U.Position).magnitude V=W end else local X=0 if W==U then X=(
|
Position-U.Position).magnitude V=W end else local X=0 if W==U then X=(W.Position
|
||||||
W.Position-V.Position).magnitude U=W elseif W==V then X=(W.Position-U.Position).
|
-V.Position).magnitude U=W elseif W==V then X=(W.Position-U.Position).magnitude
|
||||||
magnitude V=W end if X~=0 then local Y=X-N if Y~=0 then O(b,(Y*q))end N=X end
|
V=W end if X~=0 then local Y=X-N if Y~=0 then O(b,(Y*q))end N=X end end end)
|
||||||
end end)return Q.InputEnded:connect(function(W)if W==U or W==V then return S()
|
return Q.InputEnded:connect(function(W)if W==U or W==V then return S()end end)
|
||||||
end end)end local U U=function(V)if#P<1 then table.insert(P,V)L=tick()M=false
|
end local U U=function(V)if#P<1 then table.insert(P,V)L=tick()M=false elseif#P==
|
||||||
elseif#P==1 then M=((tick()-L)<=r)if M then table.insert(P,V)return T(P[1],P[2])
|
1 then M=((tick()-L)<=r)if M then table.insert(P,V)return T(P[1],P[2])else P={}
|
||||||
else P={}end end end G.InputBegan:connect(function(V)if V.UserInputType~=Enum.
|
end end end G.InputBegan:connect(function(V)if V.UserInputType~=Enum.
|
||||||
UserInputType.Touch then return end if D(V)then return end local W=E(V)if not W
|
UserInputType.Touch then return end if D(V)then return end local W=E(V)if not W
|
||||||
then U(V)end if not(s~=nil)and not W then s=V I=Vector2.new(s.Position.x,s.
|
then U(V)end if not(s~=nil)and not W then s=V I=Vector2.new(s.Position.x,s.
|
||||||
Position.y)end end)b.InputChanged:connect(function(V)if V.UserInputType~=Enum.
|
Position.y)end end)b.InputChanged:connect(function(V)if V.UserInputType~=Enum.
|
||||||
|
|
|
||||||
|
|
@ -1,202 +1,197 @@
|
||||||
print'[Mercury]: Loaded corescript 157877000'local a,b=assert(LoadLibrary
|
print'[Mercury]: Loaded corescript 157877000'local a a=function(b,c,d)if not(d~=
|
||||||
'RbxUtility').Create,script.Parent:FindFirstChild'ControlFrame'or script.Parent
|
nil)then d=c c=nil end local e=Instance.new(b)if c then e.Name=c end local f for
|
||||||
local c,d,e,f=a'Frame'{Name='DevConsoleContainer',Parent=b,BackgroundColor3=
|
g,h in pairs(d)do if type(g)=='string'then if g=='Parent'then f=h else e[g]=h
|
||||||
Color3.new(0,0,0),BackgroundTransparency=0.9,Position=UDim2.new(0,100,0,10),Size
|
end elseif type(g)=='number'and type(h)=='userdata'then h.Parent=e end end e.
|
||||||
=UDim2.new(0.5,20,0.5,20),Visible=false},a'BindableFunction'{Name=
|
Parent=f return e end local b=script.Parent:FindFirstChild'ControlFrame'or
|
||||||
'ToggleDevConsole',Parent=b},false,nil f=function()if e then return end e=true
|
script.Parent local c,d,e,f=a('Frame','DevConsoleContainer',{Parent=b,
|
||||||
local g,h,i,j=1,2,1000,Vector2.new(245,180)local k,l,m,n,o,p,q,r,s,t,u,v,w=g,{},
|
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.9,Position=UDim2.
|
||||||
{},0,0,true,true,true,true,false,0,0,a'Frame'{Name='Body',Parent=c,
|
new(0,100,0,10),Size=UDim2.new(0.5,20,0.5,20),Visible=false}),a(
|
||||||
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.
|
'BindableFunction','ToggleDevConsole',{Parent=b}),false,nil f=function()if e
|
||||||
new(0,0,0,21),Size=UDim2.new(1,0,1,-25)}local x=a'Frame'{Name='OptionsHolder',
|
then return end e=true local g,h,i,j=1,2,1000,Vector2.new(245,180)local k,l,m,n,
|
||||||
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=
|
o,p,q,r,s,t,u,v,w=g,{},{},0,0,true,true,true,true,false,0,0,a('Frame','Body',{
|
||||||
UDim2.new(0,220,0,0),Size=UDim2.new(1,-255,0,24),ClipsDescendants=true}local y=a
|
|
||||||
'Frame'{Name='OptionsBar',Parent=x,BackgroundColor3=Color3.new(0,0,0),
|
|
||||||
BackgroundTransparency=1,Position=UDim2.new(0,-250,0,4),Size=UDim2.new(0,234,0,
|
|
||||||
18)}local z=a'TextButton'{Name='ErrorToggleButton',Parent=y,BackgroundColor3=
|
|
||||||
Color3.new(0,0,0),BorderColor3=Color3.new(1,0,0),Position=UDim2.new(0,115,0,0),
|
|
||||||
Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=Enum.FontSize.Size14,
|
|
||||||
Text='',TextColor3=Color3.new(1,0,0)}a'Frame'{Name='CheckFrame',Parent=z,
|
|
||||||
BackgroundColor3=Color3.new(1,0,0),BorderColor3=Color3.new(1,0,0),Position=UDim2
|
|
||||||
.new(0,4,0,4),Size=UDim2.new(0,10,0,10)}local A=a'TextButton'{Name=
|
|
||||||
'InfoToggleButton',Parent=y,BackgroundColor3=Color3.new(0,0,0),BorderColor3=
|
|
||||||
Color3.new(0.4,0.5,1),Position=UDim2.new(0,65,0,0),Size=UDim2.new(0,18,0,18),
|
|
||||||
Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='',TextColor3=Color3.
|
|
||||||
new(0.4,0.5,1)}a'Frame'{Name='CheckFrame',Parent=A,BackgroundColor3=Color3.new(
|
|
||||||
0.4,0.5,1),BorderColor3=Color3.new(0.4,0.5,1),Position=UDim2.new(0,4,0,4),Size=
|
|
||||||
UDim2.new(0,10,0,10)}local B=a'TextButton'{Name='OutputToggleButton',Parent=y,
|
|
||||||
BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.new(1,1,1),Position=UDim2
|
|
||||||
.new(0,40,0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=Enum.
|
|
||||||
FontSize.Size14,Text='',TextColor3=Color3.new(1,1,1)}a'Frame'{Name='CheckFrame',
|
|
||||||
Parent=B,BackgroundColor3=Color3.new(1,1,1),BorderColor3=Color3.new(1,1,1),
|
|
||||||
Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10)}local C=a'TextButton'{Name
|
|
||||||
='WarningToggleButton',Parent=y,BackgroundColor3=Color3.new(0,0,0),BorderColor3=
|
|
||||||
Color3.new(1,0.6,0.4),Position=UDim2.new(0,90,0,0),Size=UDim2.new(0,18,0,18),
|
|
||||||
Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='',TextColor3=Color3.
|
|
||||||
new(1,0.6,0.4)}a'Frame'{Name='CheckFrame',Parent=C,BackgroundColor3=Color3.new(1
|
|
||||||
,0.6,0.4),BorderColor3=Color3.new(1,0.6,0.4),Position=UDim2.new(0,4,0,4),Size=
|
|
||||||
UDim2.new(0,10,0,10)}local D=a'TextButton'{Name='WordWrapToggleButton',Parent=y,
|
|
||||||
BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.new(0.8,0.8,0.8),Position
|
|
||||||
=UDim2.new(0,215,0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=
|
|
||||||
Enum.FontSize.Size14,Text='',TextColor3=Color3.new(0.8,0.8,0.8)}a'Frame'{Name=
|
|
||||||
'CheckFrame',Parent=D,BackgroundColor3=Color3.new(0.8,0.8,0.8),BorderColor3=
|
|
||||||
Color3.new(0.8,0.8,0.8),Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10),
|
|
||||||
Visible=false}a'TextLabel'{Name='Filter',Parent=y,BackgroundTransparency=1,
|
|
||||||
Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,40,0,18),Font='SourceSansBold',
|
|
||||||
FontSize=Enum.FontSize.Size14,Text='Filter',TextColor3=Color3.new(1,1,1)}a
|
|
||||||
'TextLabel'{Name='WordWrap',Parent=y,BackgroundTransparency=1,Position=UDim2.
|
|
||||||
new(0,150,0,0),Size=UDim2.new(0,50,0,18),Font='SourceSansBold',FontSize=Enum.
|
|
||||||
FontSize.Size14,Text='Word Wrap',TextColor3=Color3.new(1,1,1)}local E=a'Frame'{
|
|
||||||
Name='ScrollBar',Parent=w,BackgroundColor3=Color3.new(0,0,0),
|
|
||||||
BackgroundTransparency=0.9,Position=UDim2.new(1,-20,0,26),Size=UDim2.new(0,20,1,
|
|
||||||
-50),Visible=false}local F=a'Frame'{Name='ScrollArea',Parent=E,
|
|
||||||
BackgroundTransparency=1,Position=UDim2.new(0,0,0,23),Size=UDim2.new(1,0,1,-46)}
|
|
||||||
local G=a'ImageButton'{Name='Handle',Parent=F,BackgroundColor3=Color3.new(0,0,0)
|
|
||||||
,BackgroundTransparency=0.5,Position=UDim2.new(0,0,0.2,0),Size=UDim2.new(0,20,0,
|
|
||||||
40)}a'ImageLabel'{Name='ImageLabel',Parent=G,BackgroundTransparency=1,Position=
|
|
||||||
UDim2.new(0,0,0.5,-8),Rotation=180,Size=UDim2.new(1,0,0,16),Image=
|
|
||||||
'http://www.roblox.com/Asset?id=151205881'}local H=a'ImageButton'{Name='Down',
|
|
||||||
Parent=E,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=
|
|
||||||
UDim2.new(0,0,1,-20),Size=UDim2.new(0,20,0,20)}a'ImageLabel'{Name='ImageLabel',
|
|
||||||
Parent=H,BackgroundTransparency=1,Position=UDim2.new(0,3,0,3),Size=UDim2.new(0,
|
|
||||||
14,0,14),Rotation=180,Image='http://www.roblox.com/Asset?id=151205813'}local I=a
|
|
||||||
'ImageButton'{Name='Up',Parent=E,BackgroundColor3=Color3.new(0,0,0),
|
|
||||||
BackgroundTransparency=0.5,Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,20,0,20)
|
|
||||||
}a'ImageLabel'{Name='ImageLabel',Parent=I,BackgroundTransparency=1,Position=
|
|
||||||
UDim2.new(0,3,0,3),Size=UDim2.new(0,14,0,14),Image=
|
|
||||||
'http://www.roblox.com/Asset?id=151205813'}local J=a'Frame'{Name='TextBox',
|
|
||||||
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.6,Position=
|
|
||||||
UDim2.new(0,2,0,26),Size=UDim2.new(1,-4,1,-28),ClipsDescendants=true}local K,L=a
|
|
||||||
'Frame'{Name='TextHolder',Parent=J,BackgroundTransparency=1,Position=UDim2.new(0
|
|
||||||
,0,0,0),Size=UDim2.new(1,0,1,0)},a'ImageButton'{Name='OptionsButton',Parent=w,
|
|
||||||
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=UDim2.new(0
|
|
||||||
,200,0,2),Size=UDim2.new(0,20,0,20)}a'ImageLabel'{Name='ImageLabel',Parent=L,
|
|
||||||
BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0),
|
|
||||||
Rotation=0,Image='http://www.roblox.com/Asset?id=152093917'}local M=a
|
|
||||||
'ImageButton'{Name='ResizeButton',Parent=w,BackgroundColor3=Color3.new(0,0,0),
|
|
||||||
BackgroundTransparency=0.5,Position=UDim2.new(1,-20,1,-20),Size=UDim2.new(0,20,0
|
|
||||||
,20)}a'ImageLabel'{Name='ImageLabel',Parent=M,BackgroundTransparency=1,Position=
|
|
||||||
UDim2.new(0,6,0,6),Size=UDim2.new(0.8,0,0.8,0),Rotation=135,Image=
|
|
||||||
'http://www.roblox.com/Asset?id=151205813'}a'TextButton'{Name='LocalConsole',
|
|
||||||
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.6,Position=
|
|
||||||
UDim2.new(0,7,0,5),Size=UDim2.new(0,90,0,20),Font='SourceSansBold',FontSize=Enum
|
|
||||||
.FontSize.Size14,Text='Local Console',TextColor3=Color3.new(1,1,1),
|
|
||||||
TextYAlignment=Enum.TextYAlignment.Center}a'TextButton'{Name='ServerConsole',
|
|
||||||
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.8,Position=
|
|
||||||
UDim2.new(0,102,0,5),Size=UDim2.new(0,90,0,17),Font='SourceSansBold',FontSize=
|
|
||||||
Enum.FontSize.Size14,Text='Server Console',TextColor3=Color3.new(1,1,1),
|
|
||||||
TextYAlignment=Enum.TextYAlignment.Center}local N=a'Frame'{Name='TitleBar',
|
|
||||||
Parent=c,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=
|
Parent=c,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=
|
||||||
UDim2.new(0,0,0,0),Size=UDim2.new(1,0,0,20)}local O=a'ImageButton'{Name=
|
UDim2.new(0,0,0,21),Size=UDim2.new(1,0,1,-25),a('ImageButton','ResizeButton',{
|
||||||
'CloseButton',Parent=N,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency
|
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.
|
||||||
=0.5,Position=UDim2.new(1,-20,0,0),Size=UDim2.new(0,20,0,20)}a'ImageLabel'{
|
new(1,-20,1,-20),Size=UDim2.new(0,20,0,20),a('ImageLabel','ImageLabel',{
|
||||||
Parent=O,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=
|
BackgroundTransparency=1,Position=UDim2.new(0,6,0,6),Size=UDim2.new(0.8,0,0.8,0)
|
||||||
UDim2.new(0,3,0,3),Size=UDim2.new(0,14,0,14),Image=
|
,Rotation=135,Image='http://www.roblox.com/Asset?id=151205813'})}),a(
|
||||||
'http://www.roblox.com/Asset?id=151205852'}a'TextButton'{Name='TextButton',
|
'TextButton','LocalConsole',{BackgroundColor3=Color3.new(0,0,0),
|
||||||
Parent=N,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=
|
BackgroundTransparency=0.6,Position=UDim2.new(0,7,0,5),Size=UDim2.new(0,90,0,20)
|
||||||
UDim2.new(0,0,0,0),Size=UDim2.new(1,-23,1,0),Text=''}a'TextLabel'{Name=
|
,Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='Local Console',
|
||||||
'TitleText',Parent=N,BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=
|
TextColor3=Color3.new(1,1,1),TextYAlignment=Enum.TextYAlignment.Center}),a(
|
||||||
UDim2.new(0,185,0,20),Font='SourceSansBold',FontSize=Enum.FontSize.Size18,
|
'TextButton','ServerConsole',{BackgroundColor3=Color3.new(0,0,0),
|
||||||
TextColor3=Color3.new(1,1,1),Text='Roblox Developer Console',TextYAlignment=Enum
|
BackgroundTransparency=0.8,Position=UDim2.new(0,102,0,5),Size=UDim2.new(0,90,0,
|
||||||
.TextYAlignment.Top}local P,Q,R,S,T,U,V,W,X=nil,nil,nil,nil,nil,nil,false,false,
|
17),Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='Server Console',
|
||||||
nil X=function()P=nil Q=nil R=nil S=nil T=nil U=nil V=false W=false end local Y
|
TextColor3=Color3.new(1,1,1),TextYAlignment=Enum.TextYAlignment.Center})})local
|
||||||
Y=function(Z,_)if not P then return end local aa=Vector2.new(Z,_-P)c.Position=
|
x=a('Frame','OptionsHolder',{Parent=w,BackgroundColor3=Color3.new(0,0,0),
|
||||||
UDim2.new(0,Q.X+aa.X,0,Q.Y+aa.Y)end N.TextButton.MouseButton1Down:connect(
|
BackgroundTransparency=1,Position=UDim2.new(0,220,0,0),Size=UDim2.new(1,-255,0,
|
||||||
function(aa,Z)P=Vector2.new(aa,Z)Q=c.AbsolutePosition end)N.TextButton.
|
24),ClipsDescendants=true})local y,z=a('Frame','OptionsBar',{Parent=x,
|
||||||
MouseButton1Up:connect(X)local aa aa=function(Z,_)if not R then return end local
|
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=UDim2.new(0
|
||||||
ab=Vector2.new(Z,_-R)c.Size=UDim2.new(0,math.max(S.X+ab.X,j.X),0,math.max(S.Y+ab
|
,-250,0,4),Size=UDim2.new(0,234,0,18),a('TextButton','ErrorToggleButton',{
|
||||||
.Y,j.Y))end c.Body.ResizeButton.MouseButton1Down:connect(function(ab,Z)R=Vector2
|
BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.new(1,0,0),Position=UDim2
|
||||||
.new(ab,Z)S=c.AbsoluteSize end)c.Body.ResizeButton.MouseButton1Up:connect(X)N.
|
.new(0,115,0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=Enum.
|
||||||
CloseButton.MouseButton1Down:connect(function()c.Visible=false end)c.TitleBar.
|
FontSize.Size14,Text='',TextColor3=Color3.new(1,0,0),a('Frame','CheckFrame',{
|
||||||
CloseButton.MouseButton1Up:connect(X)local ab,Z,_=true,false,nil _=function()if
|
BackgroundColor3=Color3.new(1,0,0),BorderColor3=Color3.new(1,0,0),Position=UDim2
|
||||||
Z then return end Z=true repeat v=v+(function()if ab then return-1 else return 1
|
.new(0,4,0,4),Size=UDim2.new(0,10,0,10)})}),a('TextButton','InfoToggleButton',{
|
||||||
end end)()local ac=v/5 local ad=ac*ac*(3-(2*ac))L.ImageLabel.Rotation=ad*5*9 y.
|
BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.new(0.4,0.5,1),Position=
|
||||||
Position=UDim2.new(0,(ad*5*50)-250,0,4)wait()if(v<=0 and ab)or(v>=5 and not ab)
|
UDim2.new(0,65,0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=
|
||||||
then Z=false end until not Z end L.MouseButton1Down:connect(function()ab=not ab
|
Enum.FontSize.Size14,Text='',TextColor3=Color3.new(0.4,0.5,1),a('Frame',
|
||||||
return _()end)local ac ac=function()if k==g then n=math.min(math.max(n,0),u-c.
|
'CheckFrame',{BackgroundColor3=Color3.new(0.4,0.5,1),BorderColor3=Color3.new(0.4
|
||||||
Body.TextBox.AbsoluteSize.Y)K.Size=UDim2.new(1,0,0,u)elseif k==h then o=math.
|
,0.5,1),Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10)})}),a('TextButton'
|
||||||
min(math.max(o,0),u-c.Body.TextBox.AbsoluteSize.Y)K.Size=UDim2.new(1,0,0,u)end
|
,'OutputToggleButton',{BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.
|
||||||
local ad=c.Body.TextBox.AbsoluteSize.Y/K.AbsoluteSize.Y if ad>=1 then c.Body.
|
new(1,1,1),Position=UDim2.new(0,40,0,0),Size=UDim2.new(0,18,0,18),Font=
|
||||||
ScrollBar.Visible=false c.Body.TextBox.Size=UDim2.new(1,-4,1,-28)if k==g or k==h
|
'SourceSansBold',FontSize=Enum.FontSize.Size14,Text='',TextColor3=Color3.new(1,1
|
||||||
then K.Position=UDim2.new(0,0,1,0-u)end else c.Body.ScrollBar.Visible=true c.
|
,1),a('Frame','CheckFrame',{BackgroundColor3=Color3.new(1,1,1),BorderColor3=
|
||||||
Body.TextBox.Size=UDim2.new(1,-25,1,-28)local ae,af=1-ad,nil if k==g then af=n/K
|
Color3.new(1,1,1),Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10)})}),a(
|
||||||
.AbsoluteSize.Y elseif k==h then af=o/K.AbsoluteSize.Y end local ag,ah=math.max(
|
'TextButton','WarningToggleButton',{BackgroundColor3=Color3.new(0,0,0),
|
||||||
0,ae-af),math.max(F.AbsoluteSize.Y*ad,21)local ai=ah/F.AbsoluteSize.Y local aj=(
|
BorderColor3=Color3.new(1,0.6,0.4),Position=UDim2.new(0,90,0,0),Size=UDim2.new(0
|
||||||
1-ai)/(1-ad)local ak=ag*aj local al=math.min(F.AbsoluteSize.Y*ak,F.AbsoluteSize.
|
,18,0,18),Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='',TextColor3
|
||||||
Y-ah)F.Handle.Size=UDim2.new(1,0,0,ah)F.Handle.Position=UDim2.new(0,0,0,al)K.
|
=Color3.new(1,0.6,0.4),a('Frame','CheckFrame',{BackgroundColor3=Color3.new(1,0.6
|
||||||
Position=UDim2.new(0,0,1,0-u+(function()if k==g then return n elseif k==h then
|
,0.4),BorderColor3=Color3.new(1,0.6,0.4),Position=UDim2.new(0,4,0,4),Size=UDim2.
|
||||||
return o end end)())end end local ad ad=function(ae)if k==g then n=n+ae elseif k
|
new(0,10,0,10)})}),a('TextButton','WordWrapToggleButton',{BackgroundColor3=
|
||||||
==h then o=o+ae end return ac()end local ae ae=function()local af,ag=K:
|
Color3.new(0,0,0),BorderColor3=Color3.new(0.8,0.8,0.8),Position=UDim2.new(0,215,
|
||||||
GetChildren(),nil if k==g then ag=l elseif k==h then ag=m end local ah=0 for ai=
|
0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=Enum.FontSize.
|
||||||
1,#af do af[ai].Visible=false end for ai=1,#ag do local aj,ak=nil,false if ai>#
|
Size14,Text='',TextColor3=Color3.new(0.8,0.8,0.8),a('Frame','CheckFrame',{
|
||||||
af then aj=a'TextLabel'{Name='Message',Parent=K,BackgroundTransparency=1,
|
BackgroundColor3=Color3.new(0.8,0.8,0.8),BorderColor3=Color3.new(0.8,0.8,0.8),
|
||||||
TextXAlignment='Left',Size=UDim2.new(1,0,0,14),FontSize='Size10',ZIndex=1}ak=
|
Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10),Visible=false})}),a(
|
||||||
true else aj=af[ai]end if(s or ag[ai].Type~=Enum.MessageType.MessageOutput)and(r
|
'TextLabel','Filter',{BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=
|
||||||
or ag[ai].Type~=Enum.MessageType.MessageInfo)and(q or ag[ai].Type~=Enum.
|
UDim2.new(0,40,0,18),Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text=
|
||||||
MessageType.MessageWarning)and(p or ag[ai].Type~=Enum.MessageType.MessageError)
|
'Filter',TextColor3=Color3.new(1,1,1)}),a('TextLabel','WordWrap',{
|
||||||
then do aj.TextWrapped=t aj.Size=UDim2.new(0.98,0,0,2000)aj.Parent=c aj.Text=
|
BackgroundTransparency=1,Position=UDim2.new(0,150,0,0),Size=UDim2.new(0,50,0,18)
|
||||||
tostring(ag[ai].Time)..' -- '..tostring(ag[ai].Message)aj.Size=UDim2.new(0.98,0,
|
,Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='Word Wrap',TextColor3
|
||||||
0,aj.TextBounds.Y)aj.Position=UDim2.new(0,5,0,ah)aj.Parent=K ah=ah+aj.TextBounds
|
=Color3.new(1,1,1)})}),a('Frame','ScrollBar',{Parent=w,BackgroundColor3=Color3.
|
||||||
.Y end if ak then if(k==g and n>0)or(k==h and o>0)then ad(aj.TextBounds.Y)end
|
new(0,0,0),BackgroundTransparency=0.9,Position=UDim2.new(1,-20,0,26),Size=UDim2.
|
||||||
end aj.Visible=true aj.TextColor3=Color3.new((function()if ag[ai].Type==Enum.
|
new(0,20,1,-50),Visible=false,a('ImageButton','Down',{BackgroundColor3=Color3.
|
||||||
MessageType.MessageError then return 1,0,0 elseif ag[ai].Type==Enum.MessageType.
|
new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.new(0,0,1,-20),Size=UDim2.
|
||||||
MessageInfo then return 0.4,0.5,1 elseif ag[ai].Type==Enum.MessageType.
|
new(0,20,0,20),a('ImageLabel','ImageLabel',{BackgroundTransparency=1,Position=
|
||||||
MessageWarning then return 1,0.6,0.4 else return 1,1,1 end end)())end end u=ah
|
UDim2.new(0,3,0,3),Size=UDim2.new(0,14,0,14),Rotation=180,Image=
|
||||||
end local af,ag=false,nil ag=function()if af then return end Delay(0.1,function(
|
'http://www.roblox.com/Asset?id=151205813'})}),a('ImageButton','Up',{
|
||||||
)af=false return ae()end)af=true end local ah,ai=0,nil ai=function()if V then
|
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.
|
||||||
return end V=true wait(0.6)ah=ah+1 while V and ah<2 do wait()ad(12)end ah=ah-1
|
new(0,0,0,0),Size=UDim2.new(0,20,0,20),a('ImageLabel','ImageLabel',{
|
||||||
end local aj aj=function()if W then return end W=true wait(0.6)ah=ah+1 while W
|
BackgroundTransparency=1,Position=UDim2.new(0,3,0,3),Size=UDim2.new(0,14,0,14),
|
||||||
and ah<2 do wait()ad(-12)end ah=ah-1 end c.Body.ScrollBar.Up.MouseButton1Click:
|
Image='http://www.roblox.com/Asset?id=151205813'})})})local A,B=a('Frame',
|
||||||
connect(function()return ad(10)end)c.Body.ScrollBar.Up.MouseButton1Down:connect(
|
'ScrollArea',{Parent=z,BackgroundTransparency=1,Position=UDim2.new(0,0,0,23),
|
||||||
function()ad(10)return ai()end)c.Body.ScrollBar.Up.MouseButton1Up:connect(X)c.
|
Size=UDim2.new(1,0,1,-46),a('ImageButton','Handle',{BackgroundColor3=Color3.new(
|
||||||
Body.ScrollBar.Down.MouseButton1Down:connect(function()ad(-10)return aj()end)c.
|
0,0,0),BackgroundTransparency=0.5,Position=UDim2.new(0,0,0.2,0),Size=UDim2.new(0
|
||||||
Body.ScrollBar.Down.MouseButton1Up:connect(X)local ak ak=function(al,am)if not T
|
,20,0,40),a('ImageLabel','ImageLabel',{BackgroundTransparency=1,Position=UDim2.
|
||||||
then return end local an,ao,ap=(Vector2.new(al,am-T)).Y,1-(c.Body.TextBox.
|
new(0,0,0.5,-8),Rotation=180,Size=UDim2.new(1,0,0,16),Image=
|
||||||
AbsoluteSize.Y/K.AbsoluteSize.Y),F.AbsoluteSize.Y-F.Handle.AbsoluteSize.Y local
|
'http://www.roblox.com/Asset?id=151205881'})})}),a('Frame','TextBox',{Parent=w,
|
||||||
aq=math.max(math.min(an,ap),0-ap)local ar,as=aq/ap,(ao*K.AbsoluteSize.Y)local at
|
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.6,Position=UDim2.
|
||||||
=as*ar if k==g then n=U-at elseif k==h then o=U-at end end F.Handle.
|
new(0,2,0,26),Size=UDim2.new(1,-4,1,-28),ClipsDescendants=true})local C,D,E,F,G,
|
||||||
MouseButton1Down:connect(function(al,am)T=Vector2.new(al,am)if k==g then U=n
|
H,I,J,K,L,M,N=a('Frame','TextHolder',{Parent=B,BackgroundTransparency=1,Position
|
||||||
elseif k==h then U=o end end)F.Handle.MouseButton1Up:connect(X)local al al=
|
=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0)}),a('ImageButton','OptionsButton',{
|
||||||
function(am,an,ao)local ap,aq=am.AbsolutePosition,am.AbsoluteSize if an<ap.X or
|
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=
|
||||||
an>ap.X+aq.X or ao<ap.y or ao>ap.y+aq.y then return false end return true end
|
UDim2.new(0,200,0,2),Size=UDim2.new(0,20,0,20),a('ImageLabel','ImageLabel',{
|
||||||
local am am=function(an)if an<10 then return'0'..tostring(an)else return an end
|
BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0),
|
||||||
end local an,ao='%s:%s:%s',nil ao=function(ap)local aq=ap-os.time()+math.floor(
|
Rotation=0,Image='http://www.roblox.com/Asset?id=152093917'})}),a('Frame',
|
||||||
tick())local ar=aq%86400 local as=math.floor(ar/3600)ar=ar-(as*3600)local at=
|
'TitleBar',{Parent=c,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=
|
||||||
math.floor(ar/60)ar=ar-(at*60)local au,av,aw=am(as),am(at),am(ar)return an:
|
0.5,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,0,20),a('ImageButton',
|
||||||
format(au,av,aw)end y.ErrorToggleButton.MouseButton1Down:connect(function()p=not
|
'CloseButton',{BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,
|
||||||
p y.ErrorToggleButton.CheckFrame.Visible=p ag()return ac()end)y.
|
Position=UDim2.new(1,-20,0,0),Size=UDim2.new(0,20,0,20),a('ImageLabel',{
|
||||||
WarningToggleButton.MouseButton1Down:connect(function()q=not q y.
|
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=UDim2.new(0
|
||||||
WarningToggleButton.CheckFrame.Visible=q ag()return ac()end)y.InfoToggleButton.
|
,3,0,3),Size=UDim2.new(0,14,0,14),Image=
|
||||||
MouseButton1Down:connect(function()r=not r y.InfoToggleButton.CheckFrame.Visible
|
'http://www.roblox.com/Asset?id=151205852'})}),a('TextButton','TextButton',{
|
||||||
=r ag()return ac()end)y.OutputToggleButton.MouseButton1Down:connect(function()s=
|
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.
|
||||||
not s y.OutputToggleButton.CheckFrame.Visible=s ag()return ac()end)y.
|
new(0,0,0,0),Size=UDim2.new(1,-23,1,0),Text=''}),a('TextLabel','TitleText',{
|
||||||
WordWrapToggleButton.MouseButton1Down:connect(function()t=not t y.
|
BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,185,0,20),
|
||||||
WordWrapToggleButton.CheckFrame.Visible=t ag()return ac()end)local ap ap=
|
Font='SourceSansBold',FontSize=Enum.FontSize.Size18,TextColor3=Color3.new(1,1,1)
|
||||||
function(aq,ar,as)l[#l+1]={Message=aq,Time=ao(as),Type=ar}while#l>i do table.
|
,Text='Roblox Developer Console',TextYAlignment=Enum.TextYAlignment.Top})}),nil,
|
||||||
remove(l,1)end ag()return ac()end local aq aq=function(ar,as,at)m[#m+1]={Message
|
nil,nil,nil,nil,nil,false,false,nil N=function()F=nil G=nil H=nil I=nil J=nil K=
|
||||||
=ar,Time=ao(at),Type=as}while#m>i do table.remove(m,1)end ag()return ac()end c.
|
nil L=false M=false end local O O=function(P,Q)if not F then return end local R=
|
||||||
Body.LocalConsole.MouseButton1Click:connect(function()if k==h then k=g local ar,
|
Vector2.new(P,Q-F)c.Position=UDim2.new(0,G.X+R.X,0,G.Y+R.Y)end E.TextButton.
|
||||||
as=c.Body.LocalConsole,c.Body.ServerConsole ar.Size=UDim2.new(0,90,0,20)as.Size=
|
MouseButton1Down:connect(function(P,Q)F=Vector2.new(P,Q)G=c.AbsolutePosition end
|
||||||
UDim2.new(0,90,0,17)ar.BackgroundTransparency=0.6 as.BackgroundTransparency=0.8
|
)E.TextButton.MouseButton1Up:connect(N)local P P=function(Q,R)if not H then
|
||||||
if game:FindFirstChild'Players'and game.Players['LocalPlayer']then local at=game
|
return end local S=Vector2.new(Q,R-H)c.Size=UDim2.new(0,math.max(I.X+S.X,j.X),0,
|
||||||
.Players.LocalPlayer:GetMouse()Y(at.X,at.Y)aa(at.X,at.Y)ak(at.X,at.Y)end ag()
|
math.max(I.Y+S.Y,j.Y))end c.Body.ResizeButton.MouseButton1Down:connect(function(
|
||||||
return ac()end end)c.Body.LocalConsole.MouseButton1Up:connect(X)local ar=false c
|
Q,R)H=Vector2.new(Q,R)I=c.AbsoluteSize end)c.Body.ResizeButton.MouseButton1Up:
|
||||||
.Body.ServerConsole.MouseButton1Click:connect(function()if not ar then ar=true
|
connect(N)E.CloseButton.MouseButton1Down:connect(function()c.Visible=false end)c
|
||||||
game:GetService'LogService':RequestServerOutput()end if k==g then k=h local as,
|
.TitleBar.CloseButton.MouseButton1Up:connect(N)local Q,R,S=true,false,nil S=
|
||||||
at=c.Body.LocalConsole,c.Body.ServerConsole at.Size=UDim2.new(0,90,0,20)as.Size=
|
function()if R then return end R=true repeat v=v+(function()if Q then return-1
|
||||||
UDim2.new(0,90,0,17)at.BackgroundTransparency=0.6 as.BackgroundTransparency=0.8
|
else return 1 end end)()local T=v/5 local U=T*T*(3-(2*T))D.ImageLabel.Rotation=U
|
||||||
if game:FindFirstChild'Players'and game.Players['LocalPlayer']then local au=game
|
*5*9 y.Position=UDim2.new(0,(U*5*50)-250,0,4)wait()if(v<=0 and Q)or(v>=5 and not
|
||||||
.Players.LocalPlayer:GetMouse()Y(au.X,au.Y)aa(au.X,au.Y)ak(au.X,au.Y)end ag()
|
Q)then R=false end until not R end D.MouseButton1Down:connect(function()Q=not Q
|
||||||
return ac()end end)c.Body.ServerConsole.MouseButton1Up:connect(X)if game:
|
return S()end)local T T=function()if k==g then n=math.min(math.max(n,0),u-c.Body
|
||||||
FindFirstChild'Players'and game.Players['LocalPlayer']then local as=game.Players
|
.TextBox.AbsoluteSize.Y)C.Size=UDim2.new(1,0,0,u)elseif k==h then o=math.min(
|
||||||
.LocalPlayer:GetMouse()as.Move:connect(function()if not c.Visible then return
|
math.max(o,0),u-c.Body.TextBox.AbsoluteSize.Y)C.Size=UDim2.new(1,0,0,u)end local
|
||||||
end local at=game.Players.LocalPlayer:GetMouse()Y(at.X,at.Y)aa(at.X,at.Y)ak(at.X
|
U=c.Body.TextBox.AbsoluteSize.Y/C.AbsoluteSize.Y if U>=1 then c.Body.ScrollBar.
|
||||||
,at.Y)ag()return ac()end)as.Button1Up:connect(X)as.WheelForward:connect(function
|
Visible=false c.Body.TextBox.Size=UDim2.new(1,-4,1,-28)if k==g or k==h then C.
|
||||||
()if not c.Visible then return end if al(c,as.X,as.Y)then return ad(10)end end)
|
Position=UDim2.new(0,0,1,0-u)end else c.Body.ScrollBar.Visible=true c.Body.
|
||||||
as.WheelBackward:connect(function()if not c.Visible then return end if al(c,as.X
|
TextBox.Size=UDim2.new(1,-25,1,-28)local V,W=1-U,nil if k==g then W=n/C.
|
||||||
,as.Y)then return ad(-10)end end)end F.Handle.MouseButton1Down:connect(function(
|
AbsoluteSize.Y elseif k==h then W=o/C.AbsoluteSize.Y end local X,Y=math.max(0,V-
|
||||||
)return ac()end)local as=game:GetService'LogService':GetLogHistory()for at=1,#as
|
W),math.max(A.AbsoluteSize.Y*U,21)local Z=Y/A.AbsoluteSize.Y local _=(1-Z)/(1-U)
|
||||||
do ap(as[at].message,as[at].messageType,as[at].timestamp)end local at=game:
|
local aa=X*_ local ab=math.min(A.AbsoluteSize.Y*aa,A.AbsoluteSize.Y-Y)A.Handle.
|
||||||
GetService'LogService'at.MessageOut:connect(function(au,av)return ap(au,av,os.
|
Size=UDim2.new(1,0,0,Y)A.Handle.Position=UDim2.new(0,0,0,ab)C.Position=UDim2.
|
||||||
time())end)at.ServerMessageOut:connect(aq)return at end local aa=false d.
|
new(0,0,1,0-u+(function()if k==g then return n elseif k==h then return o end end
|
||||||
OnInvoke=function()if aa then return end aa=true f()c.Visible=not c.Visible aa=
|
)())end end local aa aa=function(ab)if k==g then n=n+ab elseif k==h then o=o+ab
|
||||||
false end
|
end return T()end local ab ab=function()local U,V=C:GetChildren(),nil if k==g
|
||||||
|
then V=l elseif k==h then V=m end local W=0 for X=1,#U do U[X].Visible=false end
|
||||||
|
for X=1,#V do local Y,Z=nil,false if X>#U then Y=a('TextLabel','Message',{Parent
|
||||||
|
=C,BackgroundTransparency=1,TextXAlignment='Left',Size=UDim2.new(1,0,0,14),
|
||||||
|
FontSize='Size10',ZIndex=1})Z=true else Y=U[X]end if(s or V[X].Type~=Enum.
|
||||||
|
MessageType.MessageOutput)and(r or V[X].Type~=Enum.MessageType.MessageInfo)and(q
|
||||||
|
or V[X].Type~=Enum.MessageType.MessageWarning)and(p or V[X].Type~=Enum.
|
||||||
|
MessageType.MessageError)then do Y.TextWrapped=t Y.Size=UDim2.new(0.98,0,0,2000)
|
||||||
|
Y.Parent=c Y.Text=tostring(V[X].Time)..' -- '..tostring(V[X].Message)Y.Size=
|
||||||
|
UDim2.new(0.98,0,0,Y.TextBounds.Y)Y.Position=UDim2.new(0,5,0,W)Y.Parent=C W=W+Y.
|
||||||
|
TextBounds.Y end if Z then if(k==g and n>0)or(k==h and o>0)then aa(Y.TextBounds.
|
||||||
|
Y)end end Y.Visible=true Y.TextColor3=Color3.new((function()if V[X].Type==Enum.
|
||||||
|
MessageType.MessageError then return 1,0,0 elseif V[X].Type==Enum.MessageType.
|
||||||
|
MessageInfo then return 0.4,0.5,1 elseif V[X].Type==Enum.MessageType.
|
||||||
|
MessageWarning then return 1,0.6,0.4 else return 1,1,1 end end)())end end u=W
|
||||||
|
end local U,V=false,nil V=function()if U then return end Delay(0.1,function()U=
|
||||||
|
false return ab()end)U=true end local W,X=0,nil X=function()if L then return end
|
||||||
|
L=true wait(0.6)W=W+1 while L and W<2 do wait()aa(12)end W=W-1 end local Y Y=
|
||||||
|
function()if M then return end M=true wait(0.6)W=W+1 while M and W<2 do wait()
|
||||||
|
aa(-12)end W=W-1 end c.Body.ScrollBar.Up.MouseButton1Click:connect(function()
|
||||||
|
return aa(10)end)c.Body.ScrollBar.Up.MouseButton1Down:connect(function()aa(10)
|
||||||
|
return X()end)c.Body.ScrollBar.Up.MouseButton1Up:connect(N)c.Body.ScrollBar.Down
|
||||||
|
.MouseButton1Down:connect(function()aa(-10)return Y()end)c.Body.ScrollBar.Down.
|
||||||
|
MouseButton1Up:connect(N)local Z Z=function(_,ac)if not J then return end local
|
||||||
|
ad,ae,af=(Vector2.new(_,ac-J)).Y,1-(c.Body.TextBox.AbsoluteSize.Y/C.AbsoluteSize
|
||||||
|
.Y),A.AbsoluteSize.Y-A.Handle.AbsoluteSize.Y local ag=math.max(math.min(ad,af),0
|
||||||
|
-af)local ah,ai=ag/af,(ae*C.AbsoluteSize.Y)local aj=ai*ah if k==g then n=K-aj
|
||||||
|
elseif k==h then o=K-aj end end A.Handle.MouseButton1Down:connect(function(ac,ad
|
||||||
|
)J=Vector2.new(ac,ad)if k==g then K=n elseif k==h then K=o end end)A.Handle.
|
||||||
|
MouseButton1Up:connect(N)local ac ac=function(ad,ae,af)local ag,ah=ad.
|
||||||
|
AbsolutePosition,ad.AbsoluteSize if ae<ag.X or ae>ag.X+ah.X or af<ag.y or af>ag.
|
||||||
|
y+ah.y then return false end return true end local ad ad=function(ae)if ae<10
|
||||||
|
then return'0'..tostring(ae)else return ae end end local ae,af='%s:%s:%s',nil af
|
||||||
|
=function(ag)local ah=ag-os.time()+math.floor(tick())local ai=ah%86400 local aj=
|
||||||
|
math.floor(ai/3600)ai=ai-(aj*3600)local _=math.floor(ai/60)ai=ai-(_*60)local ak,
|
||||||
|
al,am=ad(aj),ad(_),ad(ai)return ae:format(ak,al,am)end y.ErrorToggleButton.
|
||||||
|
MouseButton1Down:connect(function()p=not p y.ErrorToggleButton.CheckFrame.
|
||||||
|
Visible=p V()return T()end)y.WarningToggleButton.MouseButton1Down:connect(
|
||||||
|
function()q=not q y.WarningToggleButton.CheckFrame.Visible=q V()return T()end)y.
|
||||||
|
InfoToggleButton.MouseButton1Down:connect(function()r=not r y.InfoToggleButton.
|
||||||
|
CheckFrame.Visible=r V()return T()end)y.OutputToggleButton.MouseButton1Down:
|
||||||
|
connect(function()s=not s y.OutputToggleButton.CheckFrame.Visible=s V()return T(
|
||||||
|
)end)y.WordWrapToggleButton.MouseButton1Down:connect(function()t=not t y.
|
||||||
|
WordWrapToggleButton.CheckFrame.Visible=t V()return T()end)local ag ag=function(
|
||||||
|
ah,ai,aj)l[#l+1]={Message=ah,Time=af(aj),Type=ai}while#l>i do table.remove(l,1)
|
||||||
|
end V()return T()end local ah ah=function(ai,aj,ak)m[#m+1]={Message=ai,Time=af(
|
||||||
|
ak),Type=aj}while#m>i do table.remove(m,1)end V()return T()end c.Body.
|
||||||
|
LocalConsole.MouseButton1Click:connect(function()if k==h then k=g local ai,aj=c.
|
||||||
|
Body.LocalConsole,c.Body.ServerConsole ai.Size=UDim2.new(0,90,0,20)aj.Size=UDim2
|
||||||
|
.new(0,90,0,17)ai.BackgroundTransparency=0.6 aj.BackgroundTransparency=0.8 if
|
||||||
|
game:FindFirstChild'Players'and game.Players['LocalPlayer']then local ak=game.
|
||||||
|
Players.LocalPlayer:GetMouse()O(ak.X,ak.Y)P(ak.X,ak.Y)Z(ak.X,ak.Y)end V()return
|
||||||
|
T()end end)c.Body.LocalConsole.MouseButton1Up:connect(N)local ai=false c.Body.
|
||||||
|
ServerConsole.MouseButton1Click:connect(function()if not ai then ai=true game:
|
||||||
|
GetService'LogService':RequestServerOutput()end if k==g then k=h local aj,ak=c.
|
||||||
|
Body.LocalConsole,c.Body.ServerConsole ak.Size=UDim2.new(0,90,0,20)aj.Size=UDim2
|
||||||
|
.new(0,90,0,17)ak.BackgroundTransparency=0.6 aj.BackgroundTransparency=0.8 if
|
||||||
|
game:FindFirstChild'Players'and game.Players['LocalPlayer']then local al=game.
|
||||||
|
Players.LocalPlayer:GetMouse()O(al.X,al.Y)P(al.X,al.Y)Z(al.X,al.Y)end V()return
|
||||||
|
T()end end)c.Body.ServerConsole.MouseButton1Up:connect(N)if game:FindFirstChild
|
||||||
|
'Players'and game.Players['LocalPlayer']then local aj=game.Players.LocalPlayer:
|
||||||
|
GetMouse()aj.Move:connect(function()if not c.Visible then return end local ak=
|
||||||
|
game.Players.LocalPlayer:GetMouse()O(ak.X,ak.Y)P(ak.X,ak.Y)Z(ak.X,ak.Y)V()return
|
||||||
|
T()end)aj.Button1Up:connect(N)aj.WheelForward:connect(function()if not c.Visible
|
||||||
|
then return end if ac(c,aj.X,aj.Y)then return aa(10)end end)aj.WheelBackward:
|
||||||
|
connect(function()if not c.Visible then return end if ac(c,aj.X,aj.Y)then return
|
||||||
|
aa(-10)end end)end A.Handle.MouseButton1Down:connect(function()return T()end)
|
||||||
|
local aj=game:GetService'LogService':GetLogHistory()for ak=1,#aj do ag(aj[ak].
|
||||||
|
message,aj[ak].messageType,aj[ak].timestamp)end local ak=game:GetService
|
||||||
|
'LogService'ak.MessageOut:connect(function(al,am)return ag(al,am,os.time())end)
|
||||||
|
ak.ServerMessageOut:connect(ah)return ak end local aa=false d.OnInvoke=function(
|
||||||
|
)if aa then return end aa=true f()c.Visible=not c.Visible aa=false end
|
||||||
|
|
@ -4,22 +4,22 @@ g,h in pairs(d)do if type(g)=='string'then if g=='Parent'then f=h else e[g]=h
|
||||||
end elseif type(g)=='number'and type(h)=='userdata'then h.Parent=e end end e.
|
end elseif type(g)=='number'and type(h)=='userdata'then h.Parent=e end end e.
|
||||||
Parent=f return e end local b,c,d=5,5,nil d=function(e,f)local g=e:
|
Parent=f return e end local b,c,d=5,5,nil d=function(e,f)local g=e:
|
||||||
findFirstChild(f)if g then return g end while true do g=e.ChildAdded:wait()if g.
|
findFirstChild(f)if g then return g end while true do g=e.ChildAdded:wait()if g.
|
||||||
Name==f then return g end end end local e=script.Parent local f,g,h,i=d(e,
|
Name==f then return g end end end local e=script.Parent local f,g,h,i,j=d(e,
|
||||||
'Humanoid'),d(e,'Torso'),e:FindFirstChild'PlayerStats',Instance.new'BoolValue'i.
|
'Humanoid'),d(e,'Torso'),e:FindFirstChild'PlayerStats',a('BoolValue',{Name=
|
||||||
Name='InCharTag'local j=Instance.new'BoolValue'j.Name='RobloxBuildTool'if not(h
|
'InCharTag'}),a('BoolValue',{Name='RobloxBuildTool'})if not(h~=nil)then h=a(
|
||||||
~=nil)then h=a('Configuration','PlayerStats',{Parent=e})end local k=h:
|
'Configuration','PlayerStats',{Parent=e})end local k=h:FindFirstChild'MaxHealth'
|
||||||
FindFirstChild'MaxHealth'if not(k~=nil)then k=a('NumberValue','MaxHealth',{Value
|
if not(k~=nil)then k=a('NumberValue','MaxHealth',{Value=100,Parent=h})end f.
|
||||||
=100,Parent=h})end f.MaxHealth=k.Value f.Health=k.Value local l l=function()f.
|
MaxHealth=k.Value f.Health=k.Value local l l=function()f.MaxHealth=k.Value f.
|
||||||
MaxHealth=k.Value f.Health=k.Value end k.Changed:connect(l)local m=game.Players:
|
Health=k.Value end k.Changed:connect(l)local m=game.Players:
|
||||||
GetPlayerFromCharacter(script.Parent)local n=m.PlayerGui:FindFirstChild
|
GetPlayerFromCharacter(script.Parent)local n=m.PlayerGui:FindFirstChild
|
||||||
'DamageOverTimeGui'if not(n~=nil)then n=a('BillboardGui','DamageOverTimeGui',{
|
'DamageOverTimeGui'if not(n~=nil)then n=a('BillboardGui','DamageOverTimeGui',{
|
||||||
Parent=m.PlayerGui,Adornee=script.Parent:FindFirstChild'Head',Active=true,size=
|
Parent=m.PlayerGui,Adornee=script.Parent:FindFirstChild'Head',Active=true,size=
|
||||||
UDim2.new(b,0,c,0),StudsOffset=Vector3.new(0,2,0)})end print
|
UDim2.new(b,0,c,0),StudsOffset=Vector3.new(0,2,0)})end print
|
||||||
'newHealth declarations finished'local o o=function(p)local q=a('TextLabel',{
|
'newHealth declarations finished'local o o=function(p)local q=a('TextLabel',{
|
||||||
Text=tostring(p),TextColor3=(function()if p>0 then return Color3.new(0,1,0)else
|
Text=tostring(p),TextColor3=Color3.new((function()if p>0 then return 0,1,0 else
|
||||||
return Color3.new(1,0,1)end end)(),size=UDim2.new(1,0,1,0),Active=true,FontSize=
|
return 1,0,1 end end)()),size=UDim2.new(1,0,1,0),Active=true,FontSize=6,
|
||||||
6,BackgroundTransparency=1,Parent=n})for r=1,10 do wait(0.1)q.TextTransparency=r
|
BackgroundTransparency=1,Parent=n})for r=1,10 do wait(0.1)q.TextTransparency=r/
|
||||||
/10 q.Position=UDim2.new(0,0,0,-r*5)q.FontSize=6-r*0.6 end return q:remove()end
|
10 q.Position=UDim2.new(0,0,0,-r*5)q.FontSize=6-r*0.6 end q:remove()return q end
|
||||||
local p p=function()if k.Value>=0 then f.MaxHealth=k.Value print(f.MaxHealth)if
|
local p p=function()if k.Value>=0 then f.MaxHealth=k.Value print(f.MaxHealth)if
|
||||||
f.Health>f.MaxHealth then f.Health=f.MaxHealth end end end k.Changed:connect(p)
|
f.Health>f.MaxHealth then f.Health=f.MaxHealth end end end k.Changed:connect(p)
|
||||||
local q=a('Fire','FireEffect',{Heat=0.1,Size=3,Enabled=false})while true do
|
local q=a('Fire','FireEffect',{Heat=0.1,Size=3,Enabled=false})while true do
|
||||||
|
|
|
||||||
|
|
@ -60,18 +60,18 @@ DialogTone.Friendly then J.BackgroundColor3=Color3.new(0,0.5019607843137255,0)J.
|
||||||
Number.TextColor3=Color3.new(1,1,1)elseif K==Enum.DialogTone.Enemy then J.
|
Number.TextColor3=Color3.new(1,1,1)elseif K==Enum.DialogTone.Enemy then J.
|
||||||
BackgroundColor3=Color3.new(0.8,0,0)J.Number.TextColor3=Color3.new(1,1,1)end end
|
BackgroundColor3=Color3.new(0.8,0,0)J.Number.TextColor3=Color3.new(1,1,1)end end
|
||||||
local J J=function()if j then j:Remove()j=nil end local K=h h=nil if K and K.
|
local J J=function()if j then j:Remove()j=nil end local K=h h=nil if K and K.
|
||||||
InUse then local L=u:Clone()L.archivable=false L.Disabled=false L.Parent=K end
|
InUse then do local L=u:Clone()L.archivable=false L.Disabled=false L.Parent=K
|
||||||
for L,M in pairs(v)do if L and M then M.Enabled=not L.InUse end end i=nil end
|
end end for L,M in pairs(v)do if L and M then M.Enabled=not L.InUse end end i=
|
||||||
local L L=function()print'Wander'd.Visible=false J()return G(m,n)end local M M=
|
nil end local L L=function()print'Wander'd.Visible=false J()return G(m,n)end
|
||||||
function()print'Timeout'd.Visible=false J()return G(o,p)end local N N=function()
|
local M M=function()print'Timeout'd.Visible=false J()return G(o,p)end local N N=
|
||||||
print'Done'return J()end local O O=function(P)if string.len(P)==0 then return
|
function()print'Done'return J()end local O O=function(P)if string.len(P)==0 then
|
||||||
'...'else return P end end local P P=function(Q)if j then j:Remove()j=nil end j=
|
return'...'else return P end end local P P=function(Q)if j then j:Remove()j=nil
|
||||||
t:Clone()j.archivable=false j.Disabled=false j.Parent=Q return j end local Q Q=
|
end j=t:Clone()j.archivable=false j.Disabled=false j.Parent=Q return j end local
|
||||||
function(R,S)if not h then return end i=R local T={}for U,V in pairs(S)do if V:
|
Q Q=function(R,S)if not h then return end i=R local T={}for U,V in pairs(S)do if
|
||||||
IsA'DialogChoice'then table.insert(T,V)end end table.sort(T,function(W,X)return
|
V:IsA'DialogChoice'then table.insert(T,V)end end table.sort(T,function(W,X)
|
||||||
W.Name<X.Name end)if#T==0 then N()return end local W,X=1,0 g={}for Y,Z in pairs(
|
return W.Name<X.Name end)if#T==0 then N()return end local W,X=1,0 g={}for Y,Z in
|
||||||
e)do Z.Visible=false end for _,aa in pairs(T)do if W<=#e then e[W].Size=UDim2.
|
pairs(e)do Z.Visible=false end for _,aa in pairs(T)do if W<=#e then e[W].Size=
|
||||||
new(1,0,0,72)e[W].UserPrompt.Text=aa.UserDialog local ab=math.ceil(e[W].
|
UDim2.new(1,0,0,72)e[W].UserPrompt.Text=aa.UserDialog local ab=math.ceil(e[W].
|
||||||
UserPrompt.TextBounds.Y/24)*24 e[W].Position=UDim2.new(0,0,0,X)e[W].Size=UDim2.
|
UserPrompt.TextBounds.Y/24)*24 e[W].Position=UDim2.new(0,0,0,X)e[W].Size=UDim2.
|
||||||
new(1,0,0,ab)e[W].Visible=true g[e[W]]=aa X=X+ab W=W+1 end end f.Position=UDim2.
|
new(1,0,0,ab)e[W].Visible=true g[e[W]]=aa X=X+ab W=W+1 end end f.Position=UDim2.
|
||||||
new(0,0,0,X)f.Number.Text=W..')'d.Size=UDim2.new(0,350,0,X+24+32)d.Position=
|
new(0,0,0,X)f.Number.Text=W..')'d.Size=UDim2.new(0,350,0,X+24+32)d.Position=
|
||||||
|
|
|
||||||
|
|
@ -364,8 +364,8 @@ IsA'ScreenGui'or n:IsA'BillboardGui'then return n end n=n.Parent end return nil
|
||||||
end b.AutoTruncateTextObject=function(n)local o,p=n.Text,n:Clone()p.Name='Full'
|
end b.AutoTruncateTextObject=function(n)local o,p=n.Text,n:Clone()p.Name='Full'
|
||||||
..n.Name p.BorderSizePixel=0 p.BackgroundTransparency=0 p.Text=o p.
|
..n.Name p.BorderSizePixel=0 p.BackgroundTransparency=0 p.Text=o p.
|
||||||
TextXAlignment=Enum.TextXAlignment.Center p.Position=UDim2.new(0,-3,0,0)p.Size=
|
TextXAlignment=Enum.TextXAlignment.Center p.Position=UDim2.new(0,-3,0,0)p.Size=
|
||||||
UDim2.new(0,100,1,0)p.Visible=false p.Parent=n local q,r,s,t t=function()if k(n
|
UDim2.new(0,100,1,0)p.Visible=false p.Parent=n local q,r,s,t t=function()if k(n)
|
||||||
==nil)then return end n.Text=o if n.TextFits then if r then r:disconnect()r=nil
|
==nil then return end n.Text=o if n.TextFits then if r then r:disconnect()r=nil
|
||||||
end if s then s:disconnect()s=nil end else local u=string.len(o)n.Text=o..'~'
|
end if s then s:disconnect()s=nil end else local u=string.len(o)n.Text=o..'~'
|
||||||
local v=i(0,u,function(v)if v==0 then n.Text='~'else n.Text=string.sub(o,1,v)..
|
local v=i(0,u,function(v)if v==0 then n.Text='~'else n.Text=string.sub(o,1,v)..
|
||||||
'~'end return n.TextFits end)q=string.sub(o,1,v)..'~'n.Text=q if not p.TextFits
|
'~'end return n.TextFits end)q=string.sub(o,1,v)..'~'n.Text=q if not p.TextFits
|
||||||
|
|
@ -537,10 +537,10 @@ Value=0}),a('StringValue','AssetName',{Value=''})})local Z=a('TextButton',
|
||||||
'Button',{Text='',Style=Enum.ButtonStyle.RobloxButton,Position=UDim2.new(0.025,0
|
'Button',{Text='',Style=Enum.ButtonStyle.RobloxButton,Position=UDim2.new(0.025,0
|
||||||
,0.025,0),Size=UDim2.new(0.95,0,0.95,0),ZIndex=6,Parent=Y})local _=a(
|
,0.025,0),Size=UDim2.new(0.95,0,0.95,0),ZIndex=6,Parent=Y})local _=a(
|
||||||
'ImageLabel','ButtonImage',{Image='',Position=UDim2.new(0,-7,0,-7),Size=UDim2.
|
'ImageLabel','ButtonImage',{Image='',Position=UDim2.new(0,-7,0,-7),Size=UDim2.
|
||||||
new(1,14,1,14),BackgroundTransparency=1,ZIndex=7,Parent=Z})local ac=_:clone()ac.
|
new(1,14,1,14),BackgroundTransparency=1,ZIndex=7,Parent=Z})do local ac=_:clone()
|
||||||
Name='ConfigIcon'ac.Visible=false ac.Position=UDim2.new(1,-23,1,-24)ac.Size=
|
ac.Name='ConfigIcon'ac.Visible=false ac.Position=UDim2.new(1,-23,1,-24)ac.Size=
|
||||||
UDim2.new(0,16,0,16)ac.Image=''ac.ZIndex=6 ac.Parent=Y return Y end local ac ac=
|
UDim2.new(0,16,0,16)ac.Image=''ac.ZIndex=6 ac.Parent=Y end return Y end local ac
|
||||||
function(Y)if Y:FindFirstChild'AssetId'then delay(0,function()game:GetService
|
ac=function(Y)if Y:FindFirstChild'AssetId'then delay(0,function()game:GetService
|
||||||
'ContentProvider':Preload(L..tostring(Y.AssetId.Value))A.SetPanel.ItemPreview.
|
'ContentProvider':Preload(L..tostring(Y.AssetId.Value))A.SetPanel.ItemPreview.
|
||||||
LargePreview.Image='LargeThumbnailUrl'..tostring(Y.AssetId.Value)end)end if Y:
|
LargePreview.Image='LargeThumbnailUrl'..tostring(Y.AssetId.Value)end)end if Y:
|
||||||
FindFirstChild'AssetName'then A.SetPanel.ItemPreview.TextPanel.RolloverText.Text
|
FindFirstChild'AssetName'then A.SetPanel.ItemPreview.TextPanel.RolloverText.Text
|
||||||
|
|
@ -784,38 +784,38 @@ CreateTrueScrollingFrame()ar.Size=UDim2.new(1,0,1,0)ar.BackgroundColor3=Color3.
|
||||||
new(0.2823529411764706,0.2823529411764706,0.2823529411764706)ar.BorderColor3=
|
new(0.2823529411764706,0.2823529411764706,0.2823529411764706)ar.BorderColor3=
|
||||||
Color3.new(0,0,0)ar.Active=true ar.Parent=aq as.Parent=ag as.BackgroundColor3=
|
Color3.new(0,0,0)ar.Active=true ar.Parent=aq as.Parent=ag as.BackgroundColor3=
|
||||||
Color3.new(0.2823529411764706,0.2823529411764706,0.2823529411764706)as.
|
Color3.new(0.2823529411764706,0.2823529411764706,0.2823529411764706)as.
|
||||||
BorderSizePixel=0 as.BackgroundTransparency=0 as.Position=UDim2.new(1,-21,1,1)if
|
BorderSizePixel=0 as.BackgroundTransparency=0 as.Position=UDim2.new(1,-21,1,1)as
|
||||||
ab then as.Size=UDim2.new(0,21,ab.Y.Scale,ab.Y.Offset)else as.Size=UDim2.new(0,
|
.Size=UDim2.new(0,21,(function()if ab then return ab.Y.Scale,ab.Y.Offset else
|
||||||
21,0,400)end as:FindFirstChild'ScrollDownButton'.Position=UDim2.new(0,0,1,-20)a(
|
return 0,400 end end)())as:FindFirstChild'ScrollDownButton'.Position=UDim2.new(0
|
||||||
'Frame','FakeLine',{BorderSizePixel=0,BackgroundColor3=Color3.new(0,0,0),Size=
|
,0,1,-20)a('Frame','FakeLine',{BorderSizePixel=0,BackgroundColor3=Color3.new(0,0
|
||||||
UDim2.new(0,1,1,1),Position=UDim2.new(1,0,0,0),Parent=as})at=a('TextButton',
|
,0),Size=UDim2.new(0,1,1,1),Position=UDim2.new(1,0,0,0),Parent=as})at=a(
|
||||||
'VerticalDragger',{ZIndex=2,AutoButtonColor=false,BackgroundColor3=Color3.new(
|
'TextButton','VerticalDragger',{ZIndex=2,AutoButtonColor=false,BackgroundColor3=
|
||||||
0.19607843137254902,0.19607843137254902,0.19607843137254902),BorderColor3=Color3
|
Color3.new(0.19607843137254902,0.19607843137254902,0.19607843137254902),
|
||||||
.new(0,0,0),Size=UDim2.new(1,20,0,20),Position=UDim2.new(0,0,1,0),Active=true,
|
BorderColor3=Color3.new(0,0,0),Size=UDim2.new(1,20,0,20),Position=UDim2.new(0,0,
|
||||||
Text='',Parent=aq})local au=a('Frame','ScrubFrame',{BackgroundColor3=Color3.new(
|
1,0),Active=true,Text='',Parent=aq})local au=a('Frame','ScrubFrame',{
|
||||||
1,1,1),BorderSizePixel=0,Position=UDim2.new(0.5,-5,0.5,0),Size=UDim2.new(0,10,0,
|
BackgroundColor3=Color3.new(1,1,1),BorderSizePixel=0,Position=UDim2.new(0.5,-5,
|
||||||
1),ZIndex=5,Parent=at})local p=au:clone()p.Position=UDim2.new(0.5,-5,0.5,-2)p.
|
0.5,0),Size=UDim2.new(0,10,0,1),ZIndex=5,Parent=at})local p=au:clone()p.Position
|
||||||
Parent=at local q=au:clone()q.Position=UDim2.new(0.5,-5,0.5,2)q.Parent=at local
|
=UDim2.new(0.5,-5,0.5,-2)p.Parent=at local q=au:clone()q.Position=UDim2.new(0.5,
|
||||||
r,s,t=a('TextButton','AreaSoak',{Size=UDim2.new(1,0,1,0),BackgroundTransparency=
|
-5,0.5,2)q.Parent=at local r,s,t=a('TextButton','AreaSoak',{Size=UDim2.new(1,0,1
|
||||||
1,BorderSizePixel=0,Text='',ZIndex=10,Visible=false,Active=true,Parent=d(ae)}),
|
,0),BackgroundTransparency=1,BorderSizePixel=0,Text='',ZIndex=10,Visible=false,
|
||||||
false,nil at.MouseEnter:connect(function()at.BackgroundColor3=Color3.new(
|
Active=true,Parent=d(ae)}),false,nil at.MouseEnter:connect(function()at.
|
||||||
0.23529411764705882,0.23529411764705882,0.23529411764705882)end)at.MouseLeave:
|
BackgroundColor3=Color3.new(0.23529411764705882,0.23529411764705882,
|
||||||
connect(function()at.BackgroundColor3=Color3.new(0.19607843137254902,
|
0.23529411764705882)end)at.MouseLeave:connect(function()at.BackgroundColor3=
|
||||||
0.19607843137254902,0.19607843137254902)end)at.MouseButton1Down:connect(function
|
Color3.new(0.19607843137254902,0.19607843137254902,0.19607843137254902)end)at.
|
||||||
(u,v)s=true r.Visible=true t=v end)r.MouseButton1Up:connect(function()s=false r.
|
MouseButton1Down:connect(function(u,v)s=true r.Visible=true t=v end)r.
|
||||||
Visible=false end)r.MouseMoved:connect(function(u,v)if not s then return end
|
MouseButton1Up:connect(function()s=false r.Visible=false end)r.MouseMoved:
|
||||||
local w=v-t if not as.ScrollDownButton.Visible and w>0 then return end if(aq.
|
connect(function(u,v)if not s then return end local w=v-t if not as.
|
||||||
Size.Y.Offset+w)<150 then aq.Size=UDim2.new(aq.Size.X.Scale,aq.Size.X.Offset,aq.
|
ScrollDownButton.Visible and w>0 then return end if(aq.Size.Y.Offset+w)<150 then
|
||||||
Size.Y.Scale,150)as.Size=UDim2.new(0,21,0,150)return end t=v if aq.Size.Y.Offset
|
aq.Size=UDim2.new(aq.Size.X.Scale,aq.Size.X.Offset,aq.Size.Y.Scale,150)as.Size=
|
||||||
+w>=0 then aq.Size=UDim2.new(aq.Size.X.Scale,aq.Size.X.Offset,aq.Size.Y.Scale,aq
|
UDim2.new(0,21,0,150)return end t=v if aq.Size.Y.Offset+w>=0 then aq.Size=UDim2.
|
||||||
.Size.Y.Offset+w)as.Size=UDim2.new(0,21,0,as.Size.Y.Offset+w)end end)end local
|
new(aq.Size.X.Scale,aq.Size.X.Offset,aq.Size.Y.Scale,aq.Size.Y.Offset+w)as.Size=
|
||||||
au au=function()am.Visible=not am.Visible if ad then ar.Visible=not ar.Visible
|
UDim2.new(0,21,0,as.Size.Y.Offset+w)end end)end local au au=function()am.Visible
|
||||||
at.Visible=not at.Visible as.Visible=not as.Visible else aq.Visible=not aq.
|
=not am.Visible if ad then ar.Visible=not ar.Visible at.Visible=not at.Visible
|
||||||
Visible end if am.Visible then al.Text='+'else al.Text='-'end end an.
|
as.Visible=not as.Visible else aq.Visible=not aq.Visible end if am.Visible then
|
||||||
MouseButton1Click:connect(function()return au()end)al.MouseButton1Click:connect(
|
al.Text='+'else al.Text='-'end end an.MouseButton1Click:connect(function()return
|
||||||
function()return au()end)if ad then return ag,ar,ak,ai else return ag,aq,ak,ai
|
au()end)al.MouseButton1Click:connect(function()return au()end)if ad then return
|
||||||
end end b.Help=function(aa)if aa=='CreatePropertyDropDownMenu'or aa==b.
|
ag,ar,ak,ai else return ag,aq,ak,ai end end b.Help=function(aa)if aa==
|
||||||
CreatePropertyDropDownMenu then return
|
'CreatePropertyDropDownMenu'or aa==b.CreatePropertyDropDownMenu then return
|
||||||
[[Function CreatePropertyDropDownMenu. Arguments: (instance, propertyName, enumType). Side effect: returns a container with a drop-down-box that is linked to the 'property' field of 'instance' which is of type 'enumType']]
|
[[Function CreatePropertyDropDownMenu. Arguments: (instance, propertyName, enumType). Side effect: returns a container with a drop-down-box that is linked to the 'property' field of 'instance' which is of type 'enumType']]
|
||||||
elseif aa=='CreateDropDownMenu'or aa==b.CreateDropDownMenu then return
|
elseif aa=='CreateDropDownMenu'or aa==b.CreateDropDownMenu then return
|
||||||
[[Function CreateDropDownMenu. Arguments: (items, onItemSelected). Side effect: Returns 2 results, a container to the gui object and a 'updateSelection' function for external updating. The container is a drop-down-box created around a list of items]]
|
[[Function CreateDropDownMenu. Arguments: (items, onItemSelected). Side effect: Returns 2 results, a container to the gui object and a 'updateSelection' function for external updating. The container is a drop-down-box created around a list of items]]
|
||||||
|
|
|
||||||
|
|
@ -33,30 +33,30 @@ TweenPosition(UDim2.new(0,0,1,400),Enum.EasingDirection.InOut,Enum.EasingStyle.
|
||||||
Sine,h,true)end delay(h,function()E[F].Visible=false end)end end end local z z=
|
Sine,h,true)end delay(h,function()E[F].Visible=false end)end end end local z z=
|
||||||
function()local A=game.Players.LocalPlayer if A and A.Character and A.Character:
|
function()local A=game.Players.LocalPlayer if A and A.Character and A.Character:
|
||||||
FindFirstChild'Humanoid'then A.Character.Humanoid.Health=0 end end local A A=
|
FindFirstChild'Humanoid'then A.Character.Humanoid.Health=0 end end local A A=
|
||||||
function(B,C,D,E,F)local G=Instance.new'TextButton'G.Font=Enum.Font.Arial G.
|
function(B,C,D,E,F)return a('TextButton',{Font=Enum.Font.Arial,FontSize=D,Size=E
|
||||||
FontSize=D G.Size=E G.Position=F G.Style=C G.TextColor3=Color3.new(1,1,1)G.Text=
|
,Position=F,Style=C,TextColor3=Color3.new(1,1,1),Text=B})end local B B=function(
|
||||||
B return G end local B B=function(C,D,E,F)if#D<1 then error
|
C,D,E,F)if#D<1 then error'Must have more than one button'end local G,H,I=1,{},
|
||||||
'Must have more than one button'end local G,H,I=1,{},nil I=function(J)for K,L in
|
nil I=function(J)for K,L in ipairs(H)do if L==J then L.Style=Enum.ButtonStyle.
|
||||||
ipairs(H)do if L==J then L.Style=Enum.ButtonStyle.RobloxButtonDefault else L.
|
RobloxButtonDefault else L.Style=Enum.ButtonStyle.RobloxButton end end end for J
|
||||||
Style=Enum.ButtonStyle.RobloxButton end end end for J,K in ipairs(D)do local L=
|
,K in ipairs(D)do local L=a('TextButton','Button'..tostring(G),{Font=Enum.Font.
|
||||||
a('TextButton','Button'..tostring(G),{Font=Enum.Font.Arial,FontSize=Enum.
|
Arial,FontSize=Enum.FontSize.Size18,AutoButtonColor=true,Style=Enum.ButtonStyle.
|
||||||
FontSize.Size18,AutoButtonColor=true,Style=Enum.ButtonStyle.RobloxButton,Text=K.
|
RobloxButton,Text=K.Text,TextColor3=Color3.new(1,1,1),Parent=C})L.
|
||||||
Text,TextColor3=Color3.new(1,1,1),Parent=C})L.MouseButton1Click:connect(function
|
MouseButton1Click:connect(function()I(L)return K.Function()end)H[G]=L G=G+1 end
|
||||||
()I(L)return K.Function()end)H[G]=L G=G+1 end I(H[1])local L=G-1 if L==1 then C.
|
I(H[1])local L=G-1 if L==1 then C.Button1.Position=UDim2.new(0.35,0,E.Scale,E.
|
||||||
Button1.Position=UDim2.new(0.35,0,E.Scale,E.Offset)C.Button1.Size=UDim2.new(0.4,
|
Offset)C.Button1.Size=UDim2.new(0.4,0,F.Scale,F.Offset)elseif L==2 then C.
|
||||||
0,F.Scale,F.Offset)elseif L==2 then C.Button1.Position=UDim2.new(0.1,0,E.Scale,E
|
Button1.Position=UDim2.new(0.1,0,E.Scale,E.Offset)C.Button1.Size=UDim2.new(0.35,
|
||||||
.Offset)C.Button1.Size=UDim2.new(0.35,0,F.Scale,F.Offset)C.Button2.Position=
|
0,F.Scale,F.Offset)C.Button2.Position=UDim2.new(0.55,0,E.Scale,E.Offset)C.
|
||||||
UDim2.new(0.55,0,E.Scale,E.Offset)C.Button2.Size=UDim2.new(0.35,0,F.Scale,F.
|
Button2.Size=UDim2.new(0.35,0,F.Scale,F.Offset)elseif L>=3 then local M,N=0.1/L,
|
||||||
Offset)elseif L>=3 then local M,N=0.1/L,0.9/L G=1 while G<=L do H[G].Position=
|
0.9/L G=1 while G<=L do H[G].Position=UDim2.new(M*G+(G-1)*N,0,E.Scale,E.Offset)H
|
||||||
UDim2.new(M*G+(G-1)*N,0,E.Scale,E.Offset)H[G].Size=UDim2.new(N,0,F.Scale,F.
|
[G].Size=UDim2.new(N,0,F.Scale,F.Offset)G=G+1 end end end local C C=function(D,E
|
||||||
Offset)G=G+1 end end end local C C=function(D,E,F)if D then E.Visible=true F.
|
,F)if D then E.Visible=true F.Text='Stop Recording'else E.Visible=false F.Text=
|
||||||
Text='Stop Recording'else E.Visible=false F.Text='Record Video'end end local D D
|
'Record Video'end end local D D=function(E,F)m=not m return C(m,F,E)end local E
|
||||||
=function(E,F)m=not m return C(m,F,E)end local E E=function(F,G,H)F.Parent.
|
E=function(F,G,H)F.Parent.Parent.Parent.Parent.Visible=false G.Visible=false for
|
||||||
Parent.Parent.Parent.Visible=false G.Visible=false for I=1,#p do game.GuiService
|
I=1,#p do game.GuiService:RemoveCenterDialog(p[I])p[I].Visible=false end p={}
|
||||||
:RemoveCenterDialog(p[I])p[I].Visible=false end p={}game.GuiService:
|
game.GuiService:RemoveCenterDialog(G)H.Active=true end local F F=function(G)if
|
||||||
RemoveCenterDialog(G)H.Active=true end local F F=function(G)if not G then return
|
not G then return end if G:IsA'TextLabel'then G.TextTransparency=0.9 elseif G:
|
||||||
end if G:IsA'TextLabel'then G.TextTransparency=0.9 elseif G:IsA'TextButton'then
|
IsA'TextButton'then G.TextTransparency=0.9 G.Active=false else if G['ClassName']
|
||||||
G.TextTransparency=0.9 G.Active=false else if G['ClassName']then return print(
|
then return print(
|
||||||
[[setDisabledState! got object of unsupported type. object type is ]],G.
|
[[setDisabledState! got object of unsupported type. object type is ]],G.
|
||||||
ClassName)end end end local G G=function(H)if e==nil then if d:FindFirstChild(d.
|
ClassName)end end end local G G=function(H)if e==nil then if d:FindFirstChild(d.
|
||||||
TopLeftControl:FindFirstChild'Help')then e=d.TopLeftControl.Help elseif d:
|
TopLeftControl:FindFirstChild'Help')then e=d.TopLeftControl.Help elseif d:
|
||||||
|
|
@ -167,9 +167,9 @@ Parent=M if game:FindFirstChild'LoadingGuiService'and#game.LoadingGuiService:
|
||||||
GetChildren()>0 then W=A('Game Instructions',Enum.ButtonStyle.RobloxButton,Enum.
|
GetChildren()>0 then W=A('Game Instructions',Enum.ButtonStyle.RobloxButton,Enum.
|
||||||
FontSize.Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,207))W.Name=
|
FontSize.Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,207))W.Name=
|
||||||
'GameInstructions'W.ZIndex=K+4 W.Parent=M W.MouseButton1Click:connect(function()
|
'GameInstructions'W.ZIndex=K+4 W.Parent=M W.MouseButton1Click:connect(function()
|
||||||
if game:FindFirstChild(game.Players['LocalPlayer'])then local X=game.Players.
|
if game:FindFirstChild(game.Players['LocalPlayer'])then do local X=game.Players.
|
||||||
LocalPlayer:FindFirstChild'PlayerLoadingGui'if X then X.Visible=true end end end
|
LocalPlayer:FindFirstChild'PlayerLoadingGui'if X then X.Visible=true end end end
|
||||||
)end local X=A('Reset Character',Enum.ButtonStyle.RobloxButton,Enum.FontSize.
|
end)end local X=A('Reset Character',Enum.ButtonStyle.RobloxButton,Enum.FontSize.
|
||||||
Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,105))X.Name='ResetButton'X.ZIndex=
|
Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,105))X.Name='ResetButton'X.ZIndex=
|
||||||
K+4 X.Parent=M return M end local K K=function(L,M)local N=a('Frame',
|
K+4 X.Parent=M return M end local K K=function(L,M)local N=a('Frame',
|
||||||
'GameSettingsMenu',{BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),ZIndex=L+4,
|
'GameSettingsMenu',{BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),ZIndex=L+4,
|
||||||
|
|
|
||||||
|
|
@ -81,12 +81,12 @@ ClipsDescendants=true,ZIndex=7}),nil local K,L,M,N,O,P,Q,R,S=e('Frame','Panel',{
|
||||||
BackgroundTransparency=1,Position=UDim2.new(1,0,0,0),Size=UDim2.new(1,0,0.032,0)
|
BackgroundTransparency=1,Position=UDim2.new(1,0,0,0),Size=UDim2.new(1,0,0.032,0)
|
||||||
,Parent=I}),e('Frame','StatTitles',{BackgroundTransparency=1,Position=UDim2.new(
|
,Parent=I}),e('Frame','StatTitles',{BackgroundTransparency=1,Position=UDim2.new(
|
||||||
0,0,1,-10),Size=UDim2.new(1,0,0,0),Parent=u}),Instance.new'BoolValue',Instance.
|
0,0,1,-10),Size=UDim2.new(1,0,0,0),Parent=u}),Instance.new'BoolValue',Instance.
|
||||||
new'BoolValue',Instance.new'BoolValue',Instance.new'BoolValue',e('Frame',{Name=
|
new'BoolValue',Instance.new'BoolValue',Instance.new'BoolValue',e('Frame',
|
||||||
'MidTemplate',BackgroundTransparency=1,Position=UDim2.new(100,0,0.07,0),Size=
|
'MidTemplate',{BackgroundTransparency=1,Position=UDim2.new(100,0,0.07,0),Size=
|
||||||
UDim2.new(0.5,0,0.025,0),e('ImageLabel',{Name='BCLabel',Active=true,
|
UDim2.new(0.5,0,0.025,0),e('ImageLabel','BCLabel',{Active=true,
|
||||||
BackgroundTransparency=1,Position=UDim2.new(0.005,5,0.2,0),Size=UDim2.new(0,16,0
|
BackgroundTransparency=1,Position=UDim2.new(0.005,5,0.2,0),Size=UDim2.new(0,16,0
|
||||||
,16),SizeConstraint='RelativeYY',Image='',ZIndex=3}),e('ImageLabel',{Name=
|
,16),SizeConstraint='RelativeYY',Image='',ZIndex=3}),e('ImageLabel',
|
||||||
'FriendLabel',Active=true,BackgroundTransparency=1,Position=UDim2.new(0.005,5,
|
'FriendLabel',{Active=true,BackgroundTransparency=1,Position=UDim2.new(0.005,5,
|
||||||
0.15,0),Size=UDim2.new(0,16,0,16),SizeConstraint='RelativeYY',Image='',ZIndex=3}
|
0.15,0),Size=UDim2.new(0,16,0,16),SizeConstraint='RelativeYY',Image='',ZIndex=3}
|
||||||
),e('ImageButton','ClickListener',{Active=true,BackgroundTransparency=1,Position
|
),e('ImageButton','ClickListener',{Active=true,BackgroundTransparency=1,Position
|
||||||
=UDim2.new(0.005,1,0,0),Size=UDim2.new(0.96,0,1,0),ZIndex=3}),e('Frame',
|
=UDim2.new(0.005,1,0,0),Size=UDim2.new(0.96,0,1,0),ZIndex=3}),e('Frame',
|
||||||
|
|
|
||||||
|
|
@ -20,27 +20,26 @@ UDim2.new(-0.1,0,-0.1,0),ZIndex=0,Visible=false,a('ImageLabel',{Size=UDim2.new(1
|
||||||
,BackgroundTransparency=1,Image='http://www.roblox.com/asset/?id=97617958',
|
,BackgroundTransparency=1,Image='http://www.roblox.com/asset/?id=97617958',
|
||||||
Position=UDim2.new(0.5,-60,1,-108),Size=UDim2.new(0,120,0,18),Parent=b.
|
Position=UDim2.new(0.5,-60,1,-108),Size=UDim2.new(0,120,0,18),Parent=b.
|
||||||
ControlFrame})local h=9 if f()then h=3 g.Size=UDim2.new(0,180,0,54)g.Position=
|
ControlFrame})local h=9 if f()then h=3 g.Size=UDim2.new(0,180,0,54)g.Position=
|
||||||
UDim2.new(0.5,-90,1,-85)end for i=0,h do local j=a('Frame',{Name='Slot'..
|
UDim2.new(0.5,-90,1,-85)end for i=0,h do local j=a('Frame','Slot'..tostring(i),{
|
||||||
tostring(i),RobloxLocked=true,BackgroundColor3=Color3.new(0,0,0),
|
RobloxLocked=true,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,
|
||||||
BackgroundTransparency=1,BorderColor3=Color3.new(1,1,1),ZIndex=4,Position=UDim2.
|
BorderColor3=Color3.new(1,1,1),ZIndex=4,Position=UDim2.new((function()if i==0
|
||||||
new((function()if i==0 then return 0.9,0,0,0 else return(i-1)*0.1,(i-1)*6,0,0
|
then return 0.9,0,0,0 else return(i-1)*0.1,(i-1)*6,0,0 end end)()),Size=UDim2.
|
||||||
end end)()),Size=UDim2.new(0,54,1,0),Parent=g})if b.AbsoluteSize.Y<=320 then j.
|
new(0,54,1,0),Parent=g})if b.AbsoluteSize.Y<=320 then j.Position=UDim2.new(0,(i-
|
||||||
Position=UDim2.new(0,(i-1)*60,0,-50)print('Well got here',j,j.Position.X.Scale,j
|
1)*60,0,-50)print('Well got here',j,j.Position.X.Scale,j.Position.X.Offset)if i
|
||||||
.Position.X.Offset)if i==0 then j:Destroy()end end end local i=a('ImageButton',
|
==0 then j:Destroy()end end end local i=a('ImageButton','TempSlot',{Active=true,
|
||||||
'TempSlot',{Active=true,Size=UDim2.new(1,0,1,0),BackgroundTransparency=1,Style=
|
Size=UDim2.new(1,0,1,0),BackgroundTransparency=1,Style='Custom',Visible=false,
|
||||||
'Custom',Visible=false,RobloxLocked=true,ZIndex=3,Parent=g,a('ImageLabel',
|
RobloxLocked=true,ZIndex=3,Parent=g,a('ImageLabel','Background',{
|
||||||
'Background',{BackgroundTransparency=1,Image=
|
BackgroundTransparency=1,Image='http://www.roblox.com/asset/?id=97613075',Size=
|
||||||
'http://www.roblox.com/asset/?id=97613075',Size=UDim2.new(1,0,1,0)}),a(
|
UDim2.new(1,0,1,0)}),a('ObjectValue','GearReference',{RobloxLocked=true}),a(
|
||||||
'ObjectValue','GearReference',{RobloxLocked=true}),a('TextLabel','ToolTipLabel',
|
'TextLabel','ToolTipLabel',{RobloxLocked=true,Text='',BackgroundTransparency=0.5
|
||||||
{RobloxLocked=true,Text='',BackgroundTransparency=0.5,BorderSizePixel=0,Visible=
|
,BorderSizePixel=0,Visible=false,TextColor3=Color3.new(1,1,1),BackgroundColor3=
|
||||||
false,TextColor3=Color3.new(1,1,1),BackgroundColor3=Color3.new(0,0,0),
|
Color3.new(0,0,0),TextStrokeTransparency=0,Font=Enum.Font.ArialBold,FontSize=
|
||||||
TextStrokeTransparency=0,Font=Enum.Font.ArialBold,FontSize=Enum.FontSize.Size14,
|
Enum.FontSize.Size14,Size=UDim2.new(1,60,0,20),Position=UDim2.new(0,-30,0,-30)})
|
||||||
Size=UDim2.new(1,60,0,20),Position=UDim2.new(0,-30,0,-30)}),a('BoolValue','Kill'
|
,a('BoolValue','Kill',{RobloxLocked=true}),a('TextLabel','GearText',{
|
||||||
,{RobloxLocked=true}),a('TextLabel','GearText',{RobloxLocked=true,
|
RobloxLocked=true,BackgroundTransparency=1,Font=Enum.Font.Arial,FontSize=Enum.
|
||||||
BackgroundTransparency=1,Font=Enum.Font.Arial,FontSize=Enum.FontSize.Size14,
|
FontSize.Size14,Position=UDim2.new(0,-8,0,-8),Size=UDim2.new(1,16,1,16),Text='',
|
||||||
Position=UDim2.new(0,-8,0,-8),Size=UDim2.new(1,16,1,16),Text='',TextColor3=
|
TextColor3=Color3.new(1,1,1),TextWrap=true,ZIndex=5}),a('ImageLabel','GearImage'
|
||||||
Color3.new(1,1,1),TextWrap=true,ZIndex=5}),a('ImageLabel','GearImage',{
|
,{BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0),
|
||||||
BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0),
|
|
||||||
ZIndex=5,RobloxLocked=true})})local j=a('TextLabel','SlotNumber',{
|
ZIndex=5,RobloxLocked=true})})local j=a('TextLabel','SlotNumber',{
|
||||||
BackgroundTransparency=1,BorderSizePixel=0,Font=Enum.Font.ArialBold,FontSize=
|
BackgroundTransparency=1,BorderSizePixel=0,Font=Enum.Font.ArialBold,FontSize=
|
||||||
Enum.FontSize.Size18,Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,10,0,15),
|
Enum.FontSize.Size18,Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,10,0,15),
|
||||||
|
|
@ -146,9 +145,9 @@ BackgroundTransparency=1,Position=y,Parent=z})end local v v=function(w,x,y,z,A)
|
||||||
local B=a('ImageButton',tostring(w),{RobloxLocked=true,Size=x,Position=y})if A
|
local B=a('ImageButton',tostring(w),{RobloxLocked=true,Size=x,Position=y})if A
|
||||||
then B.Style=A else B.BackgroundColor3=Color3.new(0,0,0)B.BorderColor3=Color3.
|
then B.Style=A else B.BackgroundColor3=Color3.new(0,0,0)B.BorderColor3=Color3.
|
||||||
new(1,1,1)end B.Parent=z return B end local w w=function(x,y,z,A)return a(
|
new(1,1,1)end B.Parent=z return B end local w w=function(x,y,z,A)return a(
|
||||||
'TextLabel',{Name=x,RobloxLocked=true,BackgroundTransparency=1,Size=UDim2.new(0,
|
'TextLabel',x,{RobloxLocked=true,BackgroundTransparency=1,Size=UDim2.new(0,32,0,
|
||||||
32,0,14),Font=Enum.Font.Arial,TextColor3=Color3.new(1,1,1),FontSize=Enum.
|
14),Font=Enum.Font.Arial,TextColor3=Color3.new(1,1,1),FontSize=Enum.FontSize.
|
||||||
FontSize.Size14,Text=y,Position=z,Parent=A})end local x=a('Frame','Wardrobe',{
|
Size14,Text=y,Position=z,Parent=A})end local x=a('Frame','Wardrobe',{
|
||||||
RobloxLocked=true,BackgroundTransparency=1,Visible=false,Size=UDim2.new(1,0,1,0)
|
RobloxLocked=true,BackgroundTransparency=1,Visible=false,Size=UDim2.new(1,0,1,0)
|
||||||
,Parent=l,a('Frame','AssetList',{RobloxLocked=true,Position=UDim2.new(0,4,0,5),
|
,Parent=l,a('Frame','AssetList',{RobloxLocked=true,Position=UDim2.new(0,4,0,5),
|
||||||
Size=UDim2.new(0,85,1,-5),BackgroundTransparency=1,Visible=true}),a('TextButton'
|
Size=UDim2.new(0,85,1,-5),BackgroundTransparency=1,Visible=true}),a('TextButton'
|
||||||
|
|
|
||||||
|
|
@ -1,480 +1,478 @@
|
||||||
print'[Mercury]: Loaded corescript 73157242'local a,b={},nil b=function(c)local
|
print'[Mercury]: Loaded corescript 73157242'local a a=function(b,c,d)if not(d~=
|
||||||
d,e,f=false,game.Workspace.CurrentCamera,nil do local g=e.CoordinateFrame.p f=
|
nil)then d=c c=nil end local e=Instance.new(b)if c then e.Name=c end local f for
|
||||||
Vector3.new(g.X,g.Y,g.Z)end local g,h,i=Vector3.new(c.X,c.Y,c.Z),Vector3.new(0,1
|
g,h in pairs(d)do if type(g)=='string'then if g=='Parent'then f=h else e[g]=h
|
||||||
,0),Vector3.new(0,0,0)local j,k=h:Dot(g-f),c if j~=0 then a=h:Dot(i-f)/j if a>=0
|
end elseif type(g)=='number'and type(h)=='userdata'then h.Parent=e end end e.
|
||||||
and a<=1 then local l=((g-f)*a)+f k=game.Workspace.Terrain:WorldToCell(l)d=true
|
Parent=f return e end local b,c={},nil c=function(d)local e,f,g=false,game.
|
||||||
end end return k,d end local c c=function(d)local e,f=game.Workspace.Terrain:
|
Workspace.CurrentCamera,nil do local h=f.CoordinateFrame.p g=Vector3.new(h.X,h.Y
|
||||||
WorldToCellPreferSolid(Vector3.new(d.hit.x,d.hit.y,d.hit.z)),nil if 0==game.
|
,h.Z)end local h,i,j=Vector3.new(d.X,d.Y,d.Z),Vector3.new(0,1,0),Vector3.new(0,0
|
||||||
Workspace.Terrain:GetCell(e.X,e.Y,e.Z).Value then e=nil local g f,g=b(Vector3.
|
,0)local k,l=i:Dot(h-g),d if k~=0 then b=i:Dot(j-g)/k if b>=0 and b<=1 then
|
||||||
new(d.hit.x,d.hit.y,d.hit.z))if g then e=f end end return e end local d,e=
|
local m=((h-g)*b)+g l=game.Workspace.Terrain:WorldToCell(m)e=true end end return
|
||||||
Vector3.new(0.3,0.3,0.3),nil e=function(f,g,h)if f:IsA'BasePart'then f.CFrame=(g
|
l,e end local d d=function(e)local f,g=game.Workspace.Terrain:
|
||||||
*(f.CFrame-h))+h end local i=f:GetChildren()for j=1,#i do e(i[j],g,h)end end
|
WorldToCellPreferSolid(Vector3.new(e.hit.x,e.hit.y,e.hit.z)),nil if 0==game.
|
||||||
local f f=function(g,h)local i,j=CFrame.Angles(0,h,0),g:GetModelCFrame().p
|
Workspace.Terrain:GetCell(f.X,f.Y,f.Z).Value then f=nil local h g,h=c(Vector3.
|
||||||
return e(g,i,j)end local g g=function(h,i,j,k)if h:IsA'BasePart'then i[#i+1]=h
|
new(e.hit.x,e.hit.y,e.hit.z))if h then f=g end end return f end local e,f=
|
||||||
elseif h:IsA'Script'then j[#j+1]=h elseif h:IsA'Decal'then k[#k+1]=h end for l,m
|
Vector3.new(0.3,0.3,0.3),nil f=function(g,h,i)if g:IsA'BasePart'then g.CFrame=(h
|
||||||
in pairs(h:GetChildren())do g(m,i,j,k)end end local h h=function(i,j)local k=
|
*(g.CFrame-i))+i end local j=g:GetChildren()for k=1,#j do f(j[k],h,i)end end
|
||||||
game.Workspace:FindFirstChild'Terrain'local l,m=k:WorldToCell(i),k:WorldToCell(j
|
local g g=function(h,i)local j,k=CFrame.Angles(0,i,0),h:GetModelCFrame().p
|
||||||
)local n,o,p,q,r,s=l.X,l.Y,l.Z,m.X,m.Y,m.Z if n<k.MaxExtents.Min.X then n=k.
|
return f(h,j,k)end local h h=function(i,j,k,l)if i:IsA'BasePart'then j[#j+1]=i
|
||||||
MaxExtents.Min.X end if o<k.MaxExtents.Min.Y then o=k.MaxExtents.Min.Y end if p<
|
elseif i:IsA'Script'then k[#k+1]=i elseif i:IsA'Decal'then l[#l+1]=i end for m,n
|
||||||
k.MaxExtents.Min.Z then p=k.MaxExtents.Min.Z end if q>k.MaxExtents.Max.X then q=
|
in pairs(i:GetChildren())do h(n,j,k,l)end end local i i=function(j,k)local l=
|
||||||
k.MaxExtents.Max.X end if r>k.MaxExtents.Max.Y then r=k.MaxExtents.Max.Y end if
|
game.Workspace:FindFirstChild'Terrain'local m,n=l:WorldToCell(j),l:WorldToCell(k
|
||||||
s>k.MaxExtents.Max.Z then s=k.MaxExtents.Max.Z end for t=n,q do for u=o,r do for
|
)local o,p,q,r,s,t=m.X,m.Y,m.Z,n.X,n.Y,n.Z if o<l.MaxExtents.Min.X then o=l.
|
||||||
v=p,s do if k:GetCell(t,u,v).Value>0 then return true end end end end return
|
MaxExtents.Min.X end if p<l.MaxExtents.Min.Y then p=l.MaxExtents.Min.Y end if q<
|
||||||
false end local i i=function(j,k)if not j then return end if j.className=='Seat'
|
l.MaxExtents.Min.Z then q=l.MaxExtents.Min.Z end if r>l.MaxExtents.Max.X then r=
|
||||||
or j.className=='VehicleSeat'then table.insert(k,j)end local l=j:GetChildren()
|
l.MaxExtents.Max.X end if s>l.MaxExtents.Max.Y then s=l.MaxExtents.Max.Y end if
|
||||||
for m=1,#l do i(l[m],k)end end local j j=function(k,l)local m={}i(k,m)if l then
|
t>l.MaxExtents.Max.Z then t=l.MaxExtents.Max.Z end for u=o,r do for v=p,s do for
|
||||||
for n=1,#m do local o=m[n]:FindFirstChild'SeatWeld'while o do o:Remove()o=m[n]:
|
w=q,t do if l:GetCell(u,v,w).Value>0 then return true end end end end return
|
||||||
FindFirstChild'SeatWeld'end end else for n=1,#m do local o=Instance.new'Weld'o.
|
false end local j j=function(k,l)if not k then return end if k.className=='Seat'
|
||||||
Name='SeatWeld'o.Parent=m[n]end end end local k k=function(l)local m=l:
|
or k.className=='VehicleSeat'then table.insert(l,k)end local m=k:GetChildren()
|
||||||
FindFirstChild'AutoAlignToFace'if m then return m.Value else return false end
|
for n=1,#m do j(m[n],l)end end local k k=function(l,m)local n={}j(l,n)if m then
|
||||||
end local l l=function(m)local n,o,p=Vector3.new(1,0,0),Vector3.new(0,1,0),
|
for o=1,#n do local p=n[o]:FindFirstChild'SeatWeld'while p do p:Remove()p=n[o]:
|
||||||
Vector3.new(0,0,1)local q,r,s=m.x*n.x+m.y*n.y+m.z*n.z,m.x*o.x+m.y*o.y+m.z*o.z,m.
|
FindFirstChild'SeatWeld'end end else for o=1,#n do a('Weld','SeatWeld',{Parent=n
|
||||||
x*p.x+m.y*p.y+m.z*p.z if math.abs(q)>math.abs(r)and math.abs(q)>math.abs(s)then
|
[o]})end end end local l l=function(m)do local n=m:FindFirstChild
|
||||||
if q>0 then return 0 else return 3 end elseif math.abs(r)>math.abs(q)and math.
|
'AutoAlignToFace'if n then return n.Value else return false end end end local m
|
||||||
abs(r)>math.abs(s)then if r>0 then return 1 else return 4 end else if s>0 then
|
m=function(n)local o,p,q=Vector3.new(1,0,0),Vector3.new(0,1,0),Vector3.new(0,0,1
|
||||||
return 2 else return 5 end end end local m m=function(n,o)local p if not o then
|
)local r,s,t=n.x*o.x+n.y*o.y+n.z*o.z,n.x*p.x+n.y*p.y+n.z*p.z,n.x*q.x+n.y*q.y+n.z
|
||||||
return o end if o and(o:IsA'Model'or o:IsA'Tool')then p=o:GetModelCFrame()o:
|
*q.z if math.abs(r)>math.abs(s)and math.abs(r)>math.abs(t)then if r>0 then
|
||||||
TranslateBy(n.p-p.p)else o.CFrame=n end return o end local n n=function(o,p,q)if
|
return 0 else return 3 end elseif math.abs(s)>math.abs(r)and math.abs(s)>math.
|
||||||
math.abs(p)<0.01 then return 0 end return(q-o)/p end local o o=function(p,q,r)if
|
abs(t)then if s>0 then return 1 else return 4 end else if t>0 then return 2 else
|
||||||
not p then return 0 end local s,t if p:IsA'Model'then s=p:GetModelCFrame()t=p:
|
return 5 end end end local n n=function(o,p)local q if not p then return p end
|
||||||
GetModelSize()else s=p.CFrame t=p.Size end local u,v=s:pointToObjectSpace(q),s:
|
if p and(p:IsA'Model'or p:IsA'Tool')then q=p:GetModelCFrame()p:TranslateBy(o.p-q
|
||||||
pointToObjectSpace(r)local w,x,y,z=v-u,1,1,1 if w.X>0 then x=-1 end if w.Y>0
|
.p)else p.CFrame=o end return p end local o o=function(p,q,r)if math.abs(q)<0.01
|
||||||
then y=-1 end if w.Z>0 then z=-1 end local A,B,C,D=n(u.X,w.X,t.X/2*x),n(u.Y,w.Y,
|
then return 0 end return(r-p)/q end local p p=function(q,r,s)if not q then
|
||||||
t.Y/2*y),n(u.Z,w.Z,t.Z/2*z),0 if A>B then if A>C then D=1*x else D=3*z end else
|
return 0 end local t,u if q:IsA'Model'then t=q:GetModelCFrame()u=q:GetModelSize(
|
||||||
if B>C then D=2*y else D=3*z end end return D end local p p=function(q)local r,s
|
)else t=q.CFrame u=q.Size end local v,w=t:pointToObjectSpace(r),t:
|
||||||
|
pointToObjectSpace(s)local x,y,z,A=w-v,1,1,1 if x.X>0 then y=-1 end if x.Y>0
|
||||||
|
then z=-1 end if x.Z>0 then A=-1 end local B,C,D,E=o(v.X,x.X,u.X/2*y),o(v.Y,x.Y,
|
||||||
|
u.Y/2*z),o(v.Z,x.Z,u.Z/2*A),0 if B>C then if B>D then E=1*y else E=3*A end else
|
||||||
|
if C>D then E=2*z else E=3*A end end return E end local q q=function(r)local s,t
|
||||||
=Vector3.new(math.huge,math.huge,math.huge),Vector3.new(-math.huge,-math.huge,-
|
=Vector3.new(math.huge,math.huge,math.huge),Vector3.new(-math.huge,-math.huge,-
|
||||||
math.huge)if q:IsA'Terrain'then r=Vector3.new(-2,-2,-2)s=Vector3.new(2,2,2)
|
math.huge)if r:IsA'Terrain'then s=Vector3.new(-2,-2,-2)t=Vector3.new(2,2,2)
|
||||||
elseif q:IsA'BasePart'then r=-0.5*q.Size s=-r else s=q:GetModelSize()*0.5 r=-s
|
elseif r:IsA'BasePart'then s=-0.5*r.Size t=-s else t=r:GetModelSize()*0.5 s=-t
|
||||||
end local t=q:FindFirstChild'Justification'if(t~=nil)then local u,v,w=t.Value,
|
end local u=r:FindFirstChild'Justification'if(u~=nil)then local v,w,x=u.Value,
|
||||||
Vector3.new(2,2,2),s-r-Vector3.new(0.01,0.01,0.01)local x=Vector3.new(4*math.
|
Vector3.new(2,2,2),t-s-Vector3.new(0.01,0.01,0.01)local y=Vector3.new(4*math.
|
||||||
ceil(w.x/4),4*math.ceil(w.y/4),4*math.ceil(w.z/4))local y=x-w r=r-(0.5*y*u)s=s+(
|
ceil(x.x/4),4*math.ceil(x.y/4),4*math.ceil(x.z/4))local z=y-x s=s-(0.5*z*v)t=t+(
|
||||||
0.5*y*(v-u))end return r,s end local q q=function(r)local s,t=Vector3.new(math.
|
0.5*z*(w-v))end return s,t end local r r=function(s)local t,u=Vector3.new(math.
|
||||||
huge,math.huge,math.huge),Vector3.new(-math.huge,-math.huge,-math.huge)if r:IsA
|
huge,math.huge,math.huge),Vector3.new(-math.huge,-math.huge,-math.huge)if s:IsA
|
||||||
'BasePart'and not r:IsA'Terrain'then local u,v=r.CFrame:pointToWorldSpace(-0.5*r
|
'BasePart'and not s:IsA'Terrain'then local v,w=s.CFrame:pointToWorldSpace(-0.5*s
|
||||||
.Size),r.CFrame:pointToWorldSpace(0.5*r.Size)s=Vector3.new(math.min(u.X,v.X),
|
.Size),s.CFrame:pointToWorldSpace(0.5*s.Size)t=Vector3.new(math.min(v.X,w.X),
|
||||||
math.min(u.Y,v.Y),math.min(u.Z,v.Z))t=Vector3.new(math.max(u.X,v.X),math.max(u.Y
|
math.min(v.Y,w.Y),math.min(v.Z,w.Z))u=Vector3.new(math.max(v.X,w.X),math.max(v.Y
|
||||||
,v.Y),math.max(u.Z,v.Z))elseif not r:IsA'Terrain'then local u,v=r:
|
,w.Y),math.max(v.Z,w.Z))elseif not s:IsA'Terrain'then local v,w=s:
|
||||||
GetModelCFrame():pointToWorldSpace(-0.5*r:GetModelSize()),r:GetModelCFrame():
|
GetModelCFrame():pointToWorldSpace(-0.5*s:GetModelSize()),s:GetModelCFrame():
|
||||||
pointToWorldSpace(0.5*r:GetModelSize())s=Vector3.new(math.min(u.X,v.X),math.min(
|
pointToWorldSpace(0.5*s:GetModelSize())t=Vector3.new(math.min(v.X,w.X),math.min(
|
||||||
u.Y,v.Y),math.min(u.Z,v.Z))t=Vector3.new(math.max(u.X,v.X),math.max(u.Y,v.Y),
|
v.Y,w.Y),math.min(v.Z,w.Z))u=Vector3.new(math.max(v.X,w.X),math.max(v.Y,w.Y),
|
||||||
math.max(u.Z,v.Z))end return s,t end local r r=function(s)return p((function()if
|
math.max(v.Z,w.Z))end return t,u end local s s=function(t)return q((function()if
|
||||||
(s.Parent:FindFirstChild'RobloxModel'~=nil)then return s.Parent else return s
|
(t.Parent:FindFirstChild'RobloxModel'~=nil)then return t.Parent else return t
|
||||||
end end)())end local s s=function(t)if(t.Parent:FindFirstChild'RobloxModel'~=nil
|
end end)())end local t t=function(u)if(u.Parent:FindFirstChild'RobloxModel'~=nil
|
||||||
)then if t.Parent:IsA'Tool'then return t.Parent.Handle.CFrame else return t.
|
)then if u.Parent:IsA'Tool'then return u.Parent.Handle.CFrame else return u.
|
||||||
Parent:GetModelCFrame()end else return t.CFrame end end local t t=function(u)if
|
Parent:GetModelCFrame()end else return u.CFrame end end local u u=function(v)if
|
||||||
not u then return false end if not u.Parent then return false end if u:
|
not v then return false end if not v.Parent then return false end if v:
|
||||||
FindFirstChild'Humanoid'then return false end if u:FindFirstChild'RobloxStamper'
|
FindFirstChild'Humanoid'then return false end if v:FindFirstChild'RobloxStamper'
|
||||||
then return true end if u:IsA'Part'and not u.CanCollide then return false end if
|
or v:FindFirstChild'RobloxModel'then return true end if v:IsA'Part'and not v.
|
||||||
u==game.Lighting then return false end return t(u.Parent)end local u u=function(
|
CanCollide then return false end if v==game.Lighting then return false end
|
||||||
v,w,x)local y=game.Workspace:FindPartsInRegion3(Region3.new(Vector3.new(v.
|
return u(v.Parent)end local v v=function(w,x,y)local z=game.Workspace:
|
||||||
Position.X,w,v.Position.Z)-Vector3.new(0.75,2.75,0.75),Vector3.new(v.Position.X,
|
FindPartsInRegion3(Region3.new(Vector3.new(w.Position.X,x,w.Position.Z)-Vector3.
|
||||||
w,v.Position.Z)+Vector3.new(0.75,1.75,0.75)),v.Parent,100)for z=1,#y do if y[z].
|
new(0.75,2.75,0.75),Vector3.new(w.Position.X,x,w.Position.Z)+Vector3.new(0.75,
|
||||||
CanCollide and not y[z]:IsDescendantOf(x.CurrentParts)then return false end end
|
1.75,0.75)),w.Parent,100)for A=1,#z do if z[A].CanCollide and not z[A]:
|
||||||
if h(Vector3.new(v.Position.X,w,v.Position.Z)-Vector3.new(0.75,2.75,0.75),
|
IsDescendantOf(y.CurrentParts)then return false end end if i(Vector3.new(w.
|
||||||
Vector3.new(v.Position.X,w,v.Position.Z)+Vector3.new(0.75,1.75,0.75))then return
|
Position.X,x,w.Position.Z)-Vector3.new(0.75,2.75,0.75),Vector3.new(w.Position.X,
|
||||||
false end return true end local v v=function(w,x)if not w then return end if not
|
x,w.Position.Z)+Vector3.new(0.75,1.75,0.75))then return false end return true
|
||||||
x then return error'findConfigAtMouseTarget: stampData is nil'end if not x[
|
end local w w=function(x,y)if not x then return end if not y then return error
|
||||||
'CurrentParts']then return end local y,z,A,B,C=4,false,CFrame.new(0,0,0),p(x.
|
'findConfigAtMouseTarget: stampData is nil'end if not y['CurrentParts']then
|
||||||
CurrentParts)local D,E=C-B,nil if x.CurrentParts:IsA'Model'or x.CurrentParts:IsA
|
return end local z,A,B,C,D=4,false,CFrame.new(0,0,0),q(y.CurrentParts)local E,F=
|
||||||
'Tool'then E=x.CurrentParts:GetModelCFrame()else E=x.CurrentParts.CFrame end if
|
D-C,nil if y.CurrentParts:IsA'Model'or y.CurrentParts:IsA'Tool'then F=y.
|
||||||
w then if x.CurrentParts:IsA'Tool'then w.TargetFilter=x.CurrentParts.Handle else
|
CurrentParts:GetModelCFrame()else F=y.CurrentParts.CFrame end if x then if y.
|
||||||
w.TargetFilter=x.CurrentParts end end local F,G=false,nil local H=pcall(function
|
CurrentParts:IsA'Tool'then x.TargetFilter=y.CurrentParts.Handle else x.
|
||||||
()G=w.Target end)if not H then return z,A end local I=Vector3.new(0,0,0)if w
|
TargetFilter=y.CurrentParts end end local G,H=false,nil local I=pcall(function()
|
||||||
then I=Vector3.new(w.Hit.x,w.Hit.y,w.Hit.z)end local J if nil==G then J=c(w)if
|
H=x.Target end)if not I then return A,B end local J=Vector3.new(0,0,0)if x then
|
||||||
nil==J then F=false return z,A else G=game.Workspace.Terrain F=true J=Vector3.
|
J=Vector3.new(x.Hit.x,x.Hit.y,x.Hit.z)end local K if nil==H then K=d(x)if nil==K
|
||||||
new(J.X-1,J.Y,J.Z)I=game.Workspace.Terrain:CellCenterToWorld(J.x,J.y,J.z)end end
|
then G=false return A,B else H=game.Workspace.Terrain G=true K=Vector3.new(K.X-1
|
||||||
local K,L=r(G)local M,N=L-K,s(G)if G:IsA'Terrain'then if not cluster then
|
,K.Y,K.Z)J=game.Workspace.Terrain:CellCenterToWorld(K.x,K.y,K.z)end end local L,
|
||||||
cluster=game.Workspace:FindFirstChild'Terrain'end local O=cluster:
|
M=s(H)local N,O=M-L,t(H)if H:IsA'Terrain'then if not cluster then cluster=game.
|
||||||
WorldToCellPreferSolid(I)if F then O=J end N=CFrame.new(game.Workspace.Terrain:
|
Workspace:FindFirstChild'Terrain'end local P=cluster:WorldToCellPreferSolid(J)if
|
||||||
CellCenterToWorld(O.x,O.y,O.z))end local O,P=N:pointToObjectSpace(I),Vector3.
|
G then P=K end O=CFrame.new(game.Workspace.Terrain:CellCenterToWorld(P.x,P.y,P.z
|
||||||
new(0,0,0)if w then P=G.CFrame:vectorToWorldSpace(Vector3.FromNormalId(w.
|
))end local P,Q=O:pointToObjectSpace(J),Vector3.new(0,0,0)if x then Q=H.CFrame:
|
||||||
TargetSurface))end local Q,R,S if l(P)==0 then Q=N:vectorToObjectSpace(Vector3.
|
vectorToWorldSpace(Vector3.FromNormalId(x.TargetSurface))end local R,S,T if m(Q)
|
||||||
new(1,-1,1))R=E:vectorToObjectSpace(Vector3.new(-1,-1,1))S=Vector3.new(0,1,1)
|
==0 then R=O:vectorToObjectSpace(Vector3.new(1,-1,1))S=F:vectorToObjectSpace(
|
||||||
elseif l(P)==3 then Q=N:vectorToObjectSpace(Vector3.new(-1,-1,-1))R=E:
|
Vector3.new(-1,-1,1))T=Vector3.new(0,1,1)elseif m(Q)==3 then R=O:
|
||||||
vectorToObjectSpace(Vector3.new(1,-1,-1))S=Vector3.new(0,1,1)elseif l(P)==1 then
|
vectorToObjectSpace(Vector3.new(-1,-1,-1))S=F:vectorToObjectSpace(Vector3.new(1,
|
||||||
Q=N:vectorToObjectSpace(Vector3.new(-1,1,1))R=E:vectorToObjectSpace(Vector3.new(
|
-1,-1))T=Vector3.new(0,1,1)elseif m(Q)==1 then R=O:vectorToObjectSpace(Vector3.
|
||||||
-1,-1,1))S=Vector3.new(1,0,1)elseif l(P)==4 then Q=N:vectorToObjectSpace(Vector3
|
new(-1,1,1))S=F:vectorToObjectSpace(Vector3.new(-1,-1,1))T=Vector3.new(1,0,1)
|
||||||
.new(-1,-1,1))R=E:vectorToObjectSpace(Vector3.new(-1,1,1))S=Vector3.new(1,0,1)
|
elseif m(Q)==4 then R=O:vectorToObjectSpace(Vector3.new(-1,-1,1))S=F:
|
||||||
elseif l(P)==2 then Q=N:vectorToObjectSpace(Vector3.new(-1,-1,1))R=E:
|
vectorToObjectSpace(Vector3.new(-1,1,1))T=Vector3.new(1,0,1)elseif m(Q)==2 then
|
||||||
vectorToObjectSpace(Vector3.new(-1,-1,-1))S=Vector3.new(1,1,0)else Q=N:
|
R=O:vectorToObjectSpace(Vector3.new(-1,-1,1))S=F:vectorToObjectSpace(Vector3.
|
||||||
vectorToObjectSpace(Vector3.new(1,-1,-1))R=E:vectorToObjectSpace(Vector3.new(1,-
|
new(-1,-1,-1))T=Vector3.new(1,1,0)else R=O:vectorToObjectSpace(Vector3.new(1,-1,
|
||||||
1,1))S=Vector3.new(1,1,0)end Q=Q*((0.5*M)+0.5*(L+K))R=R*((0.5*D)+0.5*(C+B))local
|
-1))S=F:vectorToObjectSpace(Vector3.new(1,-1,1))T=Vector3.new(1,1,0)end R=R*((
|
||||||
T=O-Q local U=Vector3.new(y*math.modf(T.x/y),y*math.modf(T.y/y),y*math.modf(T.z/
|
0.5*N)+0.5*(M+L))S=S*((0.5*E)+0.5*(D+C))local U=P-R local V=Vector3.new(z*math.
|
||||||
y))U=U*S local V=U+Q local W,X=N:pointToWorldSpace(V),E:vectorToWorldSpace(R)
|
modf(U.x/z),z*math.modf(U.y/z),z*math.modf(U.z/z))V=V*T local W=V+R local X,Y=O:
|
||||||
local Y,Z,_,aa,ab,ac,ad,ae,af,ag,ah,ai,aj=W-X,E:components()A=CFrame.new(Y.x,Y.y
|
pointToWorldSpace(W),F:vectorToWorldSpace(S)local Z,_,aa,ab,ac,ad,ae,af,ag,ah,ai
|
||||||
,Y.z,ab,ac,ad,ae,af,ag,ah,ai,aj)z=true return z,A,l(P)end local aa aa=function(
|
,aj,ak=X-Y,F:components()B=CFrame.new(Z.x,Z.y,Z.z,ac,ad,ae,af,ag,ah,ai,aj,ak)A=
|
||||||
ab,ac)local ad,ae=math.abs(ab),math.abs(ac)local af=math.sqrt(ad*ad+ae*ae)local
|
true return A,B,m(Q)end local ab ab=function(ac,ad)local ae,af=math.abs(ac),math
|
||||||
ag,ah,ai=ae/af,1,1 if ab<0 then ah=-1 end if ac<0 then ai=-1 end if ag>
|
.abs(ad)local ag=math.sqrt(ae*ae+af*af)local ah,ai,aj=af/ag,1,1 if ac<0 then ai=
|
||||||
0.382683432 then return 0.707106781*af*ah,0.707106781*af*ai else return af*ah,0
|
-1 end if ad<0 then aj=-1 end if ah>0.382683432 then return 0.707106781*ag*ai,
|
||||||
end end local ab ab=function(ac,ad,ae)if ac:IsA'ManualWeld'or ac:IsA'Rotate'then
|
0.707106781*ag*aj else return ag*ai,0 end end local ac ac=function(ad,ae,af)if
|
||||||
table.insert(ad,ac)return table.insert(ae,ac.Parent)else local af=ac:
|
ad:IsA'ManualWeld'or ad:IsA'Rotate'then table.insert(ae,ad)return table.insert(
|
||||||
GetChildren()for ag=1,#af do ab(af[ag],ad,ae)end end end local ac ac=function(ad
|
af,ad.Parent)else local ag=ad:GetChildren()for ah=1,#ag do ac(ag[ah],ae,af)end
|
||||||
,ae)for af=1,#ad do ad[af].Parent=ae[af]end end a.CanEditRegion=function(ad,ae)
|
end end local ad ad=function(ae,af)for ag=1,#ae do ae[ag].Parent=af[ag]end end b
|
||||||
if not ae then return true,false end local af,ag=q(ad)if af.X<ae.CFrame.p.X-ae.
|
.CanEditRegion=function(ae,af)if not af then return true,false end local ag,ah=
|
||||||
Size.X/2 or af.Y<ae.CFrame.p.Y-ae.Size.Y/2 or af.Z<ae.CFrame.p.Z-ae.Size.Z/2
|
r(ae)if ag.X<af.CFrame.p.X-af.Size.X/2 or ag.Y<af.CFrame.p.Y-af.Size.Y/2 or ag.Z
|
||||||
then return false,false end if ag.X>ae.CFrame.p.X+ae.Size.X/2 or ag.Y>ae.CFrame.
|
<af.CFrame.p.Z-af.Size.Z/2 then return false,false end if ah.X>af.CFrame.p.X+af.
|
||||||
p.Y+ae.Size.Y/2 or ag.Z>ae.CFrame.p.Z+ae.Size.Z/2 then return false,false end
|
Size.X/2 or ah.Y>af.CFrame.p.Y+af.Size.Y/2 or ah.Z>af.CFrame.p.Z+af.Size.Z/2
|
||||||
return true,false end a.GetStampModel=function(ad,ae,af)if ad==0 then return nil
|
then return false,false end return true,false end b.GetStampModel=function(ae,af
|
||||||
,'No Asset'end if ad<0 then return nil,'Negative Asset'end local ag ag=function(
|
,ag)if ae==0 then return nil,'No Asset'end if ae<0 then return nil,
|
||||||
ah)if ah:IsA'BasePart'then ah.Locked=false end for ai,aj in pairs(ah:
|
'Negative Asset'end local ah ah=function(ai)if ai:IsA'BasePart'then ai.Locked=
|
||||||
GetChildren())do ag(aj)end end local ah ah=function(ai)return BrickColor.new((
|
false end for aj,ak in pairs(ai:GetChildren())do ah(ak)end end local ai ai=
|
||||||
function()if 1==ai then return'Bright green'elseif 2==ai then return
|
function(aj)return BrickColor.new((function()if 1==aj then return'Bright green'
|
||||||
'Bright yellow'elseif 3==ai then return'Bright red'elseif 4==ai then return
|
elseif 2==aj then return'Bright yellow'elseif 3==aj then return'Bright red'
|
||||||
'Sand red'elseif 5==ai then return'Black'elseif 6==ai then return
|
elseif 4==aj then return'Sand red'elseif 5==aj then return'Black'elseif 6==aj
|
||||||
'Dark stone grey'elseif 7==ai then return'Sand blue'elseif 8==ai then return
|
then return'Dark stone grey'elseif 7==aj then return'Sand blue'elseif 8==aj then
|
||||||
'Deep orange'elseif 9==ai then return'Dark orange'elseif 10==ai then return
|
return'Deep orange'elseif 9==aj then return'Dark orange'elseif 10==aj then
|
||||||
'Reddish brown'elseif 11==ai then return'Light orange'elseif 12==ai then return
|
return'Reddish brown'elseif 11==aj then return'Light orange'elseif 12==aj then
|
||||||
'Light stone grey'elseif 13==ai then return'Sand green'elseif 14==ai then return
|
return'Light stone grey'elseif 13==aj then return'Sand green'elseif 14==aj then
|
||||||
'Medium stone grey'elseif 15==ai then return'Really red'elseif 16==ai then
|
return'Medium stone grey'elseif 15==aj then return'Really red'elseif 16==aj then
|
||||||
return'Really blue'elseif 17==ai then return'Bright blue'else return
|
return'Really blue'elseif 17==aj then return'Bright blue'else return
|
||||||
'Bright green'end end)())end local ai ai=function(aj,w,x)local y if w==1 or w==4
|
'Bright green'end end)())end local aj aj=function(ak,x,y)local z if x==1 or x==4
|
||||||
then y=Instance.new'WedgePart'y.formFactor='Custom'elseif w==2 then y=Instance.
|
then z=Instance.new'WedgePart'z.formFactor='Custom'elseif x==2 then z=Instance.
|
||||||
new'CornerWedgePart'else y=Instance.new'Part'y.formFactor='Custom'end y.Name=
|
new'CornerWedgePart'else z=Instance.new'Part'z.formFactor='Custom'end z.Name=
|
||||||
'MegaClusterCube'y.Size=Vector3.new(4,4,4)y.BottomSurface='Smooth'y.TopSurface=
|
'MegaClusterCube'z.Size=Vector3.new(4,4,4)z.BottomSurface='Smooth'z.TopSurface=
|
||||||
'Smooth'y.BrickColor=ah(aj)local z,A=0,math.pi if w==4 then z=-math.pi/2 end if
|
'Smooth'z.BrickColor=ai(ak)local A,B=0,math.pi if x==4 then A=-math.pi/2 end if
|
||||||
w==2 or w==3 then A=0 end y.CFrame=CFrame.Angles(0,math.pi/2*x+A,z)if w==3 then
|
x==2 or x==3 then B=0 end z.CFrame=CFrame.Angles(0,math.pi/2*y+B,A)if x==3 then
|
||||||
local B=Instance.new'SpecialMesh'B.MeshType='FileMesh'B.MeshId=
|
a('SpecialMesh',{MeshType='FileMesh',MeshId=
|
||||||
'http://www.roblox.com/asset?id=66832495'B.Scale=Vector3.new(2,2,2)B.Parent=y
|
'http://www.roblox.com/asset?id=66832495',Scale=Vector3.new(2,2,2),Parent=z})end
|
||||||
end local B=Instance.new'Vector3Value'B.Value=Vector3.new(aj,w,x)B.Name=
|
a('Vector3Value','ClusterMaterial',{Value=Vector3.new(ak,x,y),Parent=z})return z
|
||||||
'ClusterMaterial'B.Parent=y return y end local aj,w,x=nil,nil,true if af then w=
|
end local ak,x,y=nil,nil,true if ag then x=coroutine.create(function()ak=game:
|
||||||
coroutine.create(function()aj=game:GetService'InsertService':LoadAssetVersion(ad
|
GetService'InsertService':LoadAssetVersion(ae)y=false end)coroutine.resume(x)
|
||||||
)x=false end)coroutine.resume(w)else w=coroutine.create(function()aj=game:
|
else x=coroutine.create(function()ak=game:GetService'InsertService':LoadAsset(ae
|
||||||
GetService'InsertService':LoadAsset(ad)x=false end)coroutine.resume(w)end local
|
)y=false end)coroutine.resume(x)end local z,A,B=0,0,8 while y and A<B do z=tick(
|
||||||
y,z,A=0,0,8 while x and z<A do y=tick()wait(1)z=z+(tick()-y)end x=false if z>=A
|
)wait(1)A=A+(tick()-z)end y=false if A>=B then return nil,'Load Time Fail'end if
|
||||||
then return nil,'Load Time Fail'end if aj==nil then return nil,'Load Asset Fail'
|
ak==nil then return nil,'Load Asset Fail'end if not ak:IsA'Model'then return nil
|
||||||
end if not aj:IsA'Model'then return nil,'Load Type Fail'end local B=aj:
|
,'Load Type Fail'end local C=ak:GetChildren()if#C==0 then return nil,
|
||||||
GetChildren()if#B==0 then return nil,'Empty Model Fail'end ag(aj)aj=aj:
|
'Empty Model Fail'end ah(ak)ak=ak:GetChildren()[1]for D,E in pairs(C)do if E:IsA
|
||||||
GetChildren()[1]for C,D in pairs(B)do if D:IsA'Team'then D.Parent=game:
|
'Team'then E.Parent=game:GetService'Teams'elseif E:IsA'Sky'then local F=game:
|
||||||
GetService'Teams'elseif D:IsA'Sky'then local E=game:GetService'Lighting'for F,G
|
GetService'Lighting'for G,H in pairs(F:GetChildren())do if H:IsA'Sky'then H:
|
||||||
in pairs(E:GetChildren())do if G:IsA'Sky'then G:Remove()end end D.Parent=E
|
Remove()end end E.Parent=F return end end if ak:FindFirstChild'RobloxModel'==nil
|
||||||
return end end if not(aj:FindFirstChild'RobloxModel'~=nil)then local E=Instance.
|
then a('BoolValue','RobloxModel',{Parent=ak})if ak:FindFirstChild'RobloxStamper'
|
||||||
new'BoolValue'E.Name='RobloxModel'E.Parent=aj if not(aj:FindFirstChild
|
==nil then a('BoolValue','RobloxStamper',{Parent=ak})end end if af then if ak.
|
||||||
'RobloxStamper'~=nil)then local F=Instance.new'BoolValue'F.Name='RobloxStamper'F
|
Name=='MegaClusterCube'then if af==6 then a('BoolValue','AutoWedge',{Parent=ak})
|
||||||
.Parent=aj end end if ae then if aj.Name=='MegaClusterCube'then if ae==6 then
|
else local F=ak:FindFirstChild'ClusterMaterial'if F then if F:IsA'Vector3Value'
|
||||||
local E=Instance.new'BoolValue'E.Name='AutoWedge'E.Parent=aj else local E=aj:
|
then ak=aj(F.Value.X,af,F.Value.Z)else ak=aj(F.Value,af,0)end else ak=aj(1,af,0)
|
||||||
FindFirstChild'ClusterMaterial'if E then if E:IsA'Vector3Value'then aj=ai(E.
|
end end end end return ak end b.SetupStamperDragger=function(ae,af,ag,ah,ai)if
|
||||||
Value.X,ae,E.Value.Z)else aj=ai(E.Value,ae,0)end else aj=ai(1,ae,0)end end end
|
not ae then error
|
||||||
end return aj end a.SetupStamperDragger=function(ad,ae,af,ag,ah)if not ad then
|
|
||||||
error
|
|
||||||
[[SetupStamperDragger: modelToStamp (first arg) is nil! Should be a stamper model]]
|
[[SetupStamperDragger: modelToStamp (first arg) is nil! Should be a stamper model]]
|
||||||
return nil end if not ad:IsA'Model'and not ad:IsA'BasePart'then error
|
return nil end if not ae:IsA'Model'and not ae:IsA'BasePart'then error
|
||||||
[[SetupStamperDragger: modelToStamp (first arg) is neither a Model or Part!]]
|
[[SetupStamperDragger: modelToStamp (first arg) is neither a Model or Part!]]
|
||||||
return nil end if not ae then error
|
return nil end if not af then error
|
||||||
[[SetupStamperDragger: Mouse (second arg) is nil! Should be a mouse object]]
|
[[SetupStamperDragger: Mouse (second arg) is nil! Should be a mouse object]]
|
||||||
return nil end if not ae:IsA'Mouse'then error
|
return nil end if not af:IsA'Mouse'then error
|
||||||
[[SetupStamperDragger: Mouse (second arg) is not of type Mouse!]]return nil end
|
[[SetupStamperDragger: Mouse (second arg) is not of type Mouse!]]return nil end
|
||||||
local ai,aj,w if af then if not af:IsA'Model'then error
|
local aj,ak,x if ag then if not ag:IsA'Model'then error
|
||||||
[[SetupStamperDragger: StampInModel (optional third arg) is not of type 'Model']]
|
[[SetupStamperDragger: StampInModel (optional third arg) is not of type 'Model']]
|
||||||
return nil end if not ag then error
|
return nil end if not ah then error
|
||||||
[[SetupStamperDragger: AllowedStampRegion (optional fourth arg) is nil when StampInModel (optional third arg) is defined]]
|
[[SetupStamperDragger: AllowedStampRegion (optional fourth arg) is nil when StampInModel (optional third arg) is defined]]
|
||||||
return nil end w=ah ai=af aj=ag end local x,y,z,A=0,nil,nil,Instance.new
|
return nil end x=ai aj=ag ak=ah end local y,z,A,B,C=0,nil,nil,a('SelectionBox',{
|
||||||
'SelectionBox'A.Color=BrickColor.new'Bright red'A.Transparency=0 A.Archivable=
|
Color=BrickColor.new'Bright red',Transparency=0,Archivable=false}),a('Part',{
|
||||||
false local B=Instance.new'Part'B.Parent=nil B.formFactor='Custom'B.Size=Vector3
|
Parent=nil,formFactor='Custom',Size=Vector3.new(4,4,4),CFrame=CFrame.new(),
|
||||||
.new(4,4,4)B.CFrame=CFrame.new()B.Archivable=false local C=Instance.new
|
Archivable=false})local D,E=a('SelectionBox','HighScalabilityStamperLine',{Color
|
||||||
'SelectionBox'C.Color=BrickColor.new'Toothpaste'C.Adornee=B C.Visible=true C.
|
=BrickColor.new'Toothpaste',Adornee=C,Visible=true,Transparency=0,Archivable=
|
||||||
Transparency=0 C.Name='HighScalabilityStamperLine'C.Archivable=false local D={}D
|
false}),{}E.Start=nil E.End=nil E.Adorn=D E.AdornPart=C E.InternalLine=nil E.
|
||||||
.Start=nil D.End=nil D.Adorn=C D.AdornPart=B D.InternalLine=nil D.NewHint=true D
|
NewHint=true E.MorePoints={nil,nil}E.MoreLines={nil,nil}E.Dimensions=1 local F,G
|
||||||
.MorePoints={nil,nil}D.MoreLines={nil,nil}D.Dimensions=1 local E,F,G,H,I,J,K={},
|
,H,I,J,K,L,M={},false,false,false,{},nil,a('BoolValue',{Archivable=false,Value=
|
||||||
false,false,false,{},nil,Instance.new'BoolValue'K.Archivable=false K.Value=false
|
false}),{}M.TerrainOrientation=0 M.CFrame=0 local N={}N.Material=1 N.clusterType
|
||||||
local L={}L.TerrainOrientation=0 L.CFrame=0 local M={}M.Material=1 M.clusterType
|
=0 N.clusterOrientation=0 local O O=function()if not z then return false end if
|
||||||
=0 M.clusterOrientation=0 local N N=function()if not y then return false end if
|
not z.CurrentParts then return false end return z.CurrentParts:FindFirstChild(
|
||||||
not y.CurrentParts then return false end return y.CurrentParts:FindFirstChild(
|
'ClusterMaterial',true)or(z.CurrentParts.Name=='MegaClusterCube')end local P P=
|
||||||
'ClusterMaterial',true)or(y.CurrentParts.Name=='MegaClusterCube')end local O O=
|
function()local Q=z.CurrentParts:FindFirstChild'MegaClusterCube'if not Q then if
|
||||||
function()local P=y.CurrentParts:FindFirstChild'MegaClusterCube'if not P then if
|
not z.CurrentParts.Name=='MegaClusterCube'then return else Q=z.CurrentParts end
|
||||||
not y.CurrentParts.Name=='MegaClusterCube'then return else P=y.CurrentParts end
|
end E.End=Q.CFrame.p local R,S,T=nil,Vector3.new(0,0,0),Vector3.new(0,0,0)if E.
|
||||||
end D.End=P.CFrame.p local Q,R,S=nil,Vector3.new(0,0,0),Vector3.new(0,0,0)if D.
|
Dimensions==1 then R=E.End-E.Start if math.abs(R.X)<math.abs(R.Y)then if math.
|
||||||
Dimensions==1 then Q=(D.End-D.Start)if math.abs(Q.X)<math.abs(Q.Y)then if math.
|
abs(R.X)<math.abs(R.Z)then local U,V if math.abs(R.Y)>math.abs(R.Z)then U,V=ab(R
|
||||||
abs(Q.X)<math.abs(Q.Z)then local T,U if math.abs(Q.Y)>math.abs(Q.Z)then T,U=aa(Q
|
.Y,R.Z)else V,U=ab(R.Z,R.Y)end R=Vector3.new(0,U,V)else local U,V=ab(R.Y,R.X)R=
|
||||||
.Y,Q.Z)else U,T=aa(Q.Z,Q.Y)end Q=Vector3.new(0,T,U)else local T,U=aa(Q.Y,Q.X)Q=
|
Vector3.new(V,U,0)end else if math.abs(R.Y)<math.abs(R.Z)then local U,V if math.
|
||||||
Vector3.new(U,T,0)end else if math.abs(Q.Y)<math.abs(Q.Z)then local T,U if math.
|
abs(R.X)>math.abs(R.Z)then U,V=ab(R.X,R.Z)else V,U=ab(R.Z,R.X)end R=Vector3.new(
|
||||||
abs(Q.X)>math.abs(Q.Z)then T,U=aa(Q.X,Q.Z)else U,T=aa(Q.Z,Q.X)end Q=Vector3.new(
|
U,0,V)else local U,V=ab(R.X,R.Y)R=Vector3.new(U,V,0)end end E.InternalLine=R
|
||||||
T,0,U)else local T,U=aa(Q.X,Q.Y)Q=Vector3.new(T,U,0)end end D.InternalLine=Q
|
elseif E.Dimensions==2 then R=E.MoreLines[1]S=E.End-E.MorePoints[1]S=S-(R.unit*R
|
||||||
elseif D.Dimensions==2 then Q=D.MoreLines[1]R=D.End-D.MorePoints[1]R=R-(Q.unit*Q
|
.unit:Dot(S))local U=CFrame.new(E.Start,E.Start+R)local V,W=U:
|
||||||
.unit:Dot(R))local T=CFrame.new(D.Start,D.Start+Q)local U,V=T:
|
vectorToWorldSpace(Vector3.new(0,1,0)),U:vectorToWorldSpace(Vector3.new(1,0,0))
|
||||||
vectorToWorldSpace(Vector3.new(0,1,0)),T:vectorToWorldSpace(Vector3.new(1,0,0))
|
local X,Y=W:Dot(S),V:Dot(S)if math.abs(Y)>math.abs(X)then S=S-(W*X)else S=S-(V*Y
|
||||||
local W,X=V:Dot(R),U:Dot(R)if math.abs(X)>math.abs(W)then R=R-(V*W)else R=R-(U*X
|
)end E.InternalLine=S elseif E.Dimensions==3 then R=E.MoreLines[1]S=E.MoreLines[
|
||||||
)end D.InternalLine=R elseif D.Dimensions==3 then Q=D.MoreLines[1]R=D.MoreLines[
|
2]T=E.End-E.MorePoints[2]T=T-(R.unit*R.unit:Dot(T))T=T-(S.unit*S.unit:Dot(T))E.
|
||||||
2]S=D.End-D.MorePoints[2]S=S-(Q.unit*Q.unit:Dot(S))S=S-(R.unit*R.unit:Dot(S))D.
|
InternalLine=T end local U=CFrame.new(E.Start,E.Start+R)if E.Dimensions==1 then
|
||||||
InternalLine=S end local T=CFrame.new(D.Start,D.Start+Q)if D.Dimensions==1 then
|
E.AdornPart.Size=Vector3.new(4,4,R.magnitude+4)E.AdornPart.CFrame=U+U:
|
||||||
D.AdornPart.Size=Vector3.new(4,4,Q.magnitude+4)D.AdornPart.CFrame=T+T:
|
vectorToWorldSpace(Vector3.new(2,2,2)-E.AdornPart.Size/2)else local V=U:
|
||||||
vectorToWorldSpace(Vector3.new(2,2,2)-D.AdornPart.Size/2)else local U=T:
|
vectorToObjectSpace(R+S+T)E.AdornPart.Size=Vector3.new(4,4,4)+Vector3.new(math.
|
||||||
vectorToObjectSpace(Q+R+S)D.AdornPart.Size=Vector3.new(4,4,4)+Vector3.new(math.
|
abs(V.X),math.abs(V.Y),math.abs(V.Z))E.AdornPart.CFrame=U+U:vectorToWorldSpace(V
|
||||||
abs(U.X),math.abs(U.Y),math.abs(U.Z))D.AdornPart.CFrame=T+T:vectorToWorldSpace(U
|
/2)end local V if game.Players['LocalPlayer']then V=game.Players.LocalPlayer:
|
||||||
/2)end local U if game.Players['LocalPlayer']then U=game.Players.LocalPlayer:
|
FindFirstChild'PlayerGui'if V and V:IsA'PlayerGui'then if(E.Dimensions==1 and R.
|
||||||
FindFirstChild'PlayerGui'if U and U:IsA'PlayerGui'then if(D.Dimensions==1 and Q.
|
magnitude>3)or E.Dimensions>1 then E.Adorn.Parent=V end end end if not(V~=nil)
|
||||||
magnitude>3)or D.Dimensions>1 then D.Adorn.Parent=U end end end if not(U~=nil)
|
then V=game:GetService'CoreGui'if(E.Dimensions==1 and R.magnitude>3)or E.
|
||||||
then U=game:GetService'CoreGui'if(D.Dimensions==1 and Q.magnitude>3)or D.
|
Dimensions>1 then E.Adorn.Parent=V end end end local Q Q=function(R)if not R
|
||||||
Dimensions>1 then D.Adorn.Parent=U end end end local P P=function(Q)if not Q
|
|
||||||
then error'Error: RbxStamper.DoStamperMouseMove: Mouse is nil'return end if not
|
then error'Error: RbxStamper.DoStamperMouseMove: Mouse is nil'return end if not
|
||||||
Q:IsA'Mouse'then error('Error: RbxStamper.DoStamperMouseMove: Mouse is of type',
|
R:IsA'Mouse'then error('Error: RbxStamper.DoStamperMouseMove: Mouse is of type',
|
||||||
Q.className,'should be of type Mouse')return end if not Q.Target then local R=c(
|
R.className,'should be of type Mouse')return end if not R.Target then local S=d(
|
||||||
Q)if nil==R then return end end if not y then return end local R,S,T=v(Q,y)if
|
R)if nil==S then return end end if not z then return end local S,T,U=w(R,z)if
|
||||||
not R then error'RbxStamper.DoStamperMouseMove No configFound, returning'return
|
not S then error'RbxStamper.DoStamperMouseMove No configFound, returning'return
|
||||||
end local U=0 if k(y.CurrentParts)and T~=1 and T~=4 then if T==3 then U=0-x+k(y.
|
end local V=0 if l(z.CurrentParts)and U~=1 and U~=4 then if U==3 then V=0-y+l(z.
|
||||||
CurrentParts)elseif T==0 then U=2-x+k(y.CurrentParts)elseif T==5 then U=3-x+k(y.
|
CurrentParts)elseif U==0 then V=2-y+l(z.CurrentParts)elseif U==5 then V=3-y+l(z.
|
||||||
CurrentParts)elseif T==2 then U=1-x+k(y.CurrentParts)end end local V=math.pi/2 x
|
CurrentParts)elseif U==2 then V=1-y+l(z.CurrentParts)end end local W=math.pi/2 y
|
||||||
=x+U if y.CurrentParts:IsA'Model'or y.CurrentParts:IsA'Tool'then f(y.
|
=y+V if z.CurrentParts:IsA'Model'or z.CurrentParts:IsA'Tool'then g(z.
|
||||||
CurrentParts,V*U)else y.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,V*U,0){y
|
CurrentParts,W*V)else z.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,W*V,0,{z
|
||||||
.CurrentParts.CFrame}end local W,X=q(y.CurrentParts)local Y if y.CurrentParts:
|
.CurrentParts.CFrame})end local X,Y=r(z.CurrentParts)local Z if z.CurrentParts:
|
||||||
IsA'Model'then Y=y.CurrentParts:GetModelCFrame()else Y=y.CurrentParts.CFrame end
|
IsA'Model'then Z=z.CurrentParts:GetModelCFrame()else Z=z.CurrentParts.CFrame end
|
||||||
W=W+(S.p-Y.p)X=X+(S.p-Y.p)if h(W+d,X-d)then if L.CFrame then if y.CurrentParts:
|
X=X+(T.p-Z.p)Y=Y+(T.p-Z.p)if i(X+e,Y-e)then if M.CFrame then if z.CurrentParts:
|
||||||
FindFirstChild('ClusterMaterial',true)then local ak=y.CurrentParts:
|
FindFirstChild('ClusterMaterial',true)then local al=z.CurrentParts:
|
||||||
FindFirstChild('ClusterMaterial',true)if ak:IsA'Vector3Value'then local al=y.
|
FindFirstChild('ClusterMaterial',true)if al:IsA'Vector3Value'then local am=z.
|
||||||
CurrentParts:FindFirstChild('ClusterMaterial',true)if al then al=clusterMat end
|
CurrentParts:FindFirstChild('ClusterMaterial',true)if am then am=clusterMat end
|
||||||
end end end return end if N()then local ak=game.Workspace.Terrain:WorldToCell(S.
|
end end end return end if O()then local al=game.Workspace.Terrain:WorldToCell(T.
|
||||||
p)local al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax=game.Workspace.Terrain:
|
p)local am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay=game.Workspace.Terrain:
|
||||||
CellCenterToWorld(ak.X,ak.Y,ak.Z),S:components()S=CFrame.new(al.X,al.Y,al.Z,ap,
|
CellCenterToWorld(al.X,al.Y,al.Z),T:components()T=CFrame.new(am.X,am.Y,am.Z,aq,
|
||||||
aq,ar,as,at,au,av,aw,ax)end m(S,y.CurrentParts)L.CFrame=S if y.CurrentParts:
|
ar,as,at,au,av,aw,ax,ay)end n(T,z.CurrentParts)M.CFrame=T if z.CurrentParts:
|
||||||
FindFirstChild('ClusterMaterial',true)then local ak=y.CurrentParts:
|
FindFirstChild('ClusterMaterial',true)then local al=z.CurrentParts:
|
||||||
FindFirstChild('ClusterMaterial',true)if ak:IsA'Vector3Value'then L.
|
FindFirstChild('ClusterMaterial',true)if al:IsA'Vector3Value'then M.
|
||||||
TerrainOrientation=ak.Value.Z end end if Q and Q.Target and Q.Target.Parent then
|
TerrainOrientation=al.Value.Z end end if R and R.Target and R.Target.Parent then
|
||||||
local ak=Q.Target:FindFirstChild'RobloxModel'if not ak then ak=Q.Target.Parent:
|
local al=R.Target:FindFirstChild'RobloxModel'if not al then al=R.Target.Parent:
|
||||||
FindFirstChild'RobloxModel'end local al=y.CurrentParts:FindFirstChild
|
FindFirstChild'RobloxModel'end local am=z.CurrentParts:FindFirstChild
|
||||||
'UnstampableFaces'do local ao,ap='',''if ak and ak.Parent:FindFirstChild
|
'UnstampableFaces'do local ap,aq='',''if al and al.Parent:FindFirstChild
|
||||||
'UnstampableFaces'then ao=ak.Parent.UnstampableFaces.Value end if al then ap=al.
|
'UnstampableFaces'then ap=al.Parent.UnstampableFaces.Value end if am then aq=am.
|
||||||
Value end local aq=0 if ak then aq=o(ak.Parent,game.Workspace.CurrentCamera.
|
Value end local ar=0 if al then ar=p(al.Parent,game.Workspace.CurrentCamera.
|
||||||
CoordinateFrame.p,Q.Hit.p)end for ar in string.gmatch(ao,'[^,]+')do if aq==
|
CoordinateFrame.p,R.Hit.p)end for as in string.gmatch(ap,'[^,]+')do if ar==
|
||||||
tonumber(ar)then H=true game.JointsService:ClearJoinAfterMoveJoints()return end
|
tonumber(as)then I=true game.JointsService:ClearJoinAfterMoveJoints()return end
|
||||||
end aq=o(y.CurrentParts,Q.Hit.p,game.Workspace.CurrentCamera.CoordinateFrame.p)
|
end ar=p(z.CurrentParts,R.Hit.p,game.Workspace.CurrentCamera.CoordinateFrame.p)
|
||||||
for as in string.gmatch(ap,'[^,]+')do if aq==tonumber(as)then H=true game.
|
for at in string.gmatch(aq,'[^,]+')do if ar==tonumber(at)then I=true game.
|
||||||
JointsService:ClearJoinAfterMoveJoints()return end end end end H=false game.
|
JointsService:ClearJoinAfterMoveJoints()return end end end end I=false game.
|
||||||
JointsService:SetJoinAfterMoveInstance(y.CurrentParts)if(not pcall(function()if
|
JointsService:SetJoinAfterMoveInstance(z.CurrentParts)if(not pcall(function()
|
||||||
Q and Q.Target and not(Q.Target.Parent:FindFirstChild'RobloxModel'~=nil)then
|
return end))then error
|
||||||
return else return end end))then error
|
|
||||||
[[Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check]]game.
|
[[Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check]]game.
|
||||||
JointsService:ClearJoinAfterMoveJoints()Q=nil return end if Q and Q.Target and
|
JointsService:ClearJoinAfterMoveJoints()R=nil return end if R and R.Target and
|
||||||
not(Q.Target.Parent:FindFirstChild'RobloxModel'~=nil)then game.JointsService:
|
not(R.Target.Parent:FindFirstChild'RobloxModel'~=nil)then game.JointsService:
|
||||||
SetJoinAfterMoveTarget(Q.Target)else game.JointsService:SetJoinAfterMoveTarget(
|
SetJoinAfterMoveTarget(R.Target)else game.JointsService:SetJoinAfterMoveTarget(
|
||||||
nil)end game.JointsService:ShowPermissibleJoints()if N()and D and D.Start then
|
nil)end game.JointsService:ShowPermissibleJoints()if O()and E and E.Start then
|
||||||
return O()end end local ak ak=function(al,ao)if E and E['Paused']then return end
|
return P()end end local al al=function(am,ap)if F and F['Paused']then return end
|
||||||
al=string.lower(al)if al=='r'and not k(y.CurrentParts)then x=x+1 local ap=y.
|
am=string.lower(am)if am=='r'and not l(z.CurrentParts)then y=y+1 local aq=z.
|
||||||
CurrentParts:FindFirstChild('ClusterMaterial',true)if ap and ap:IsA
|
CurrentParts:FindFirstChild('ClusterMaterial',true)if aq and aq:IsA
|
||||||
'Vector3Value'then ap.Value=Vector3.new(ap.Value.X,ap.Value.Y,(ap.Value.Z+1)%4)
|
'Vector3Value'then aq.Value=Vector3.new(aq.Value.X,aq.Value.Y,(aq.Value.Z+1)%4)
|
||||||
end local aq=math.pi/2 if y.CurrentParts:IsA'Model'or y.CurrentParts:IsA'Tool'
|
end local ar=math.pi/2 if z.CurrentParts:IsA'Model'or z.CurrentParts:IsA'Tool'
|
||||||
then f(y.CurrentParts,aq)else y.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,
|
then g(z.CurrentParts,ar)else z.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,
|
||||||
aq,0)*y.CurrentParts.CFrame end local as,at=v(ao,y)if as then m(at,y.
|
ar,0)*z.CurrentParts.CFrame end local at,au=w(ap,z)if at then n(au,z.
|
||||||
CurrentParts)return P(ao)end elseif al=='c'then if D.InternalLine and D.
|
CurrentParts)return Q(ap)end elseif am=='c'then if E.InternalLine and E.
|
||||||
InternalLine.magnitude>0 and D.Dimensions<3 then D.MorePoints[D.Dimensions]=D.
|
InternalLine.magnitude>0 and E.Dimensions<3 then E.MorePoints[E.Dimensions]=E.
|
||||||
End D.MoreLines[D.Dimensions]=D.InternalLine D.Dimensions=D.Dimensions+1 D.
|
End E.MoreLines[E.Dimensions]=E.InternalLine E.Dimensions=E.Dimensions+1 E.
|
||||||
NewHint=true end end end J=ae.KeyDown:connect(function(al)return ak(al,ae)end)
|
NewHint=true end return E end end K=af.KeyDown:connect(function(am)return al(am,
|
||||||
local al al=function()if D then D.Start=nil D.End=nil D.InternalLine=nil D.
|
af)end)local am am=function()if E then E.Start=nil E.End=nil E.InternalLine=nil
|
||||||
NewHint=true end end local ao ao=function()local ap=game.CoreGui if game:
|
E.NewHint=true end end local ap ap=function()local aq=game.CoreGui if game:
|
||||||
FindFirstChild'Players'then if game.Players['LocalPlayer']then if game.Players.
|
FindFirstChild'Players'and game.Players['LocalPlayer']and game.Players.
|
||||||
LocalPlayer:FindFirstChild'PlayerGui'then ap=game.Players.LocalPlayer.PlayerGui
|
LocalPlayer:FindFirstChild'PlayerGui'then aq=game.Players.LocalPlayer.PlayerGui
|
||||||
end end end if not y['ErrorBox']then return end y.ErrorBox.Parent=ap if y.
|
end if not z['ErrorBox']then return end z.ErrorBox.Parent=aq if z.CurrentParts:
|
||||||
CurrentParts:IsA'Tool'then y.ErrorBox.Adornee=y.CurrentParts.Handle else y.
|
IsA'Tool'then z.ErrorBox.Adornee=z.CurrentParts.Handle else z.ErrorBox.Adornee=z
|
||||||
ErrorBox.Adornee=y.CurrentParts end return delay(0,function()for aq=1,3 do if y[
|
.CurrentParts end return delay(0,function()for ar=1,3 do if z['ErrorBox']then z.
|
||||||
'ErrorBox']then y.ErrorBox.Visible=true end wait(0.13)if y['ErrorBox']then y.
|
ErrorBox.Visible=true end wait(0.13)if z['ErrorBox']then z.ErrorBox.Visible=
|
||||||
ErrorBox.Visible=false end wait(0.13)end if y['ErrorBox']then y.ErrorBox.Adornee
|
false end wait(0.13)end if z['ErrorBox']then z.ErrorBox.Adornee=nil z.ErrorBox.
|
||||||
=nil y.ErrorBox.Parent=Tool end end)end local ap ap=function(aq)if not aq then
|
Parent=Tool end end)end local aq aq=function(ar)if not ar then error
|
||||||
error'Error: RbxStamper.DoStamperMouseDown: Mouse is nil'return end if not aq:
|
'Error: RbxStamper.DoStamperMouseDown: Mouse is nil'return end if not ar:IsA
|
||||||
IsA'Mouse'then error('Error: RbxStamper.DoStamperMouseDown: Mouse is of type',aq
|
'Mouse'then error('Error: RbxStamper.DoStamperMouseDown: Mouse is of type',ar.
|
||||||
.className,'should be of type Mouse')return end if not y then return end if N()
|
className,'should be of type Mouse')return end if not z then return end if O()
|
||||||
then if aq and D then local as,at=y.CurrentParts:FindFirstChild(
|
then if ar and E then local at,au=z.CurrentParts:FindFirstChild(
|
||||||
'MegaClusterCube',true),game.Workspace.Terrain if as then D.Dimensions=1 local
|
'MegaClusterCube',true),game.Workspace.Terrain if at then E.Dimensions=1 local
|
||||||
au=at:WorldToCell(as.CFrame.p)D.Start=at:CellCenterToWorld(au.X,au.Y,au.Z)return
|
av=au:WorldToCell(at.CFrame.p)E.Start=au:CellCenterToWorld(av.X,av.Y,av.Z)return
|
||||||
else D.Dimensions=1 local au=at:WorldToCell(y.CurrentParts.CFrame.p)D.Start=at:
|
else E.Dimensions=1 local av=au:WorldToCell(z.CurrentParts.CFrame.p)E.Start=au:
|
||||||
CellCenterToWorld(au.X,au.Y,au.Z)return end end end end local aq aq=function(as,
|
CellCenterToWorld(av.X,av.Y,av.Z)return end end end end local ar ar=function(at,
|
||||||
at)as.TopSurface=at[1]as.BottomSurface=at[2]as.LeftSurface=at[3]as.RightSurface=
|
au)at.TopSurface=au[1]at.BottomSurface=au[2]at.LeftSurface=au[3]at.RightSurface=
|
||||||
at[4]as.FrontSurface=at[5]as.BackSurface=at[6]return as end local as as=function
|
au[4]at.FrontSurface=au[5]at.BackSurface=au[6]return at end local at at=function
|
||||||
(at,au)local av={}av[1]=at.TopSurface av[2]=at.BottomSurface av[3]=at.
|
(au,av)local aw={}aw[1]=au.TopSurface aw[2]=au.BottomSurface aw[3]=au.
|
||||||
LeftSurface av[4]=at.RightSurface av[5]=at.FrontSurface av[6]=at.BackSurface au[
|
LeftSurface aw[4]=au.RightSurface aw[5]=au.FrontSurface aw[6]=au.BackSurface av[
|
||||||
at]=av end local at at=function(au)if not au then return nil end local av,aw,ax,
|
au]=aw end local au au=function(av)if not av then return nil end local aw,ax,ay,
|
||||||
Q,R,S=0.7,1,au:Clone(),{},{},{}y={}y.DisabledScripts={}y.TransparencyTable={}y.
|
R,S,T=0.7,1,av:Clone(),{},{},{}z={}z.DisabledScripts={}z.TransparencyTable={}z.
|
||||||
MaterialTable={}y.CanCollideTable={}y.AnchoredTable={}y.ArchivableTable={}y.
|
MaterialTable={}z.CanCollideTable={}z.AnchoredTable={}z.ArchivableTable={}z.
|
||||||
DecalTransparencyTable={}y.SurfaceTypeTable={}g(ax,R,Q,S)if#R<=0 then return nil
|
DecalTransparencyTable={}z.SurfaceTypeTable={}h(ay,S,R,T)if#S<=0 then return nil
|
||||||
,'no parts found in modelToStamp'end for T,U in pairs(Q)do if not U.Disabled
|
,'no parts found in modelToStamp'end for U,V in pairs(R)do if not V.Disabled
|
||||||
then U.Disabled=true y.DisabledScripts[#y.DisabledScripts+1]=U end end for V,W
|
then V.Disabled=true z.DisabledScripts[#z.DisabledScripts+1]=V end end for W,X
|
||||||
in pairs(R)do y.TransparencyTable[W]=W.Transparency W.Transparency=aw+(1-aw)*W.
|
in pairs(S)do z.TransparencyTable[X]=X.Transparency X.Transparency=ax+(1-ax)*X.
|
||||||
Transparency y.MaterialTable[W]=W.Material W.Material=Enum.Material.Plastic y.
|
Transparency z.MaterialTable[X]=X.Material X.Material=Enum.Material.Plastic z.
|
||||||
CanCollideTable[W]=W.CanCollide W.CanCollide=false y.AnchoredTable[W]=W.Anchored
|
CanCollideTable[X]=X.CanCollide X.CanCollide=false z.AnchoredTable[X]=X.Anchored
|
||||||
W.Anchored=true y.ArchivableTable[W]=W.Archivable W.Archivable=false as(W,y.
|
X.Anchored=true z.ArchivableTable[X]=X.Archivable X.Archivable=false at(X,z.
|
||||||
SurfaceTypeTable)local X,Y=0.5,0.5 delay(0,function()wait(X)local ay=tick()local
|
SurfaceTypeTable)local Y,Z=0.5,0.5 delay(0,function()wait(Y)local az=tick()local
|
||||||
az=ay while(az-ay)<Y and W and W:IsA'BasePart'and W.Transparency>av do local aA=
|
aA=az while(aA-az)<Z and X and X:IsA'BasePart'and X.Transparency>aw do local aB=
|
||||||
1-(((az-ay)/Y)*(aw-av))if y['TransparencyTable']and y.TransparencyTable[W]then W
|
1-(((aA-az)/Z)*(ax-aw))if z['TransparencyTable']and z.TransparencyTable[X]then X
|
||||||
.Transparency=aA+(1-aA)*y.TransparencyTable[W]end wait(0.03)az=tick()end if W
|
.Transparency=aB+(1-aB)*z.TransparencyTable[X]end wait(0.03)aA=tick()end if X
|
||||||
and W:IsA'BasePart'then if y['TransparencyTable']and y.TransparencyTable[W]then
|
and X:IsA'BasePart'then if z['TransparencyTable']and z.TransparencyTable[X]then
|
||||||
W.Transparency=av+(1-av)*y.TransparencyTable[W]end end end)end for ay,az in
|
X.Transparency=aw+(1-aw)*z.TransparencyTable[X]end end end)end for az,aA in
|
||||||
pairs(S)do y.DecalTransparencyTable[az]=az.Transparency az.Transparency=av+(1-av
|
pairs(T)do z.DecalTransparencyTable[aA]=aA.Transparency aA.Transparency=aw+(1-aw
|
||||||
)*az.Transparency end j(ax,true)j(ax,false)y.CurrentParts=ax if k(ax)then y.
|
)*aA.Transparency end k(ay,true)k(ay,false)z.CurrentParts=ay if l(ay)then z.
|
||||||
CurrentParts:ResetOrientationToIdentity()x=0 else local aA=x*math.pi/2 if y.
|
CurrentParts:ResetOrientationToIdentity()y=0 else local aB=y*math.pi/2 if z.
|
||||||
CurrentParts:IsA'Model'or y.CurrentParts:IsA'Tool'then f(y.CurrentParts,aA)else
|
CurrentParts:IsA'Model'or z.CurrentParts:IsA'Tool'then g(z.CurrentParts,aB)else
|
||||||
y.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,aA,0)*y.CurrentParts.CFrame
|
z.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,aB,0)*z.CurrentParts.CFrame
|
||||||
end end local aA=y.CurrentParts:FindFirstChild('ClusterMaterial',true)if aA and
|
end end local aB=z.CurrentParts:FindFirstChild('ClusterMaterial',true)if aB and
|
||||||
aA:IsA'Vector3Value'then aA.Value=Vector3.new(aA.Value.X,aA.Value.Y,(aA.Value.Z+
|
aB:IsA'Vector3Value'then aB.Value=Vector3.new(aB.Value.X,aB.Value.Y,(aB.Value.Z+
|
||||||
x)%4)end local X,Y=v(ae,y)if X then y.CurrentParts=m(Y,y.CurrentParts)end game.
|
y)%4)end local Y,Z=w(af,z)if Y then z.CurrentParts=n(Z,z.CurrentParts)end game.
|
||||||
JointsService:SetJoinAfterMoveInstance(y.CurrentParts)return ax,R end local au
|
JointsService:SetJoinAfterMoveInstance(z.CurrentParts)return ay,S end local av
|
||||||
au=function(av,aw)local ax=game.Workspace.Terrain.CellCenterToWorld local ay=ax(
|
av=function(aw,ax)local ay=game.Workspace.Terrain.CellCenterToWorld local az=ay(
|
||||||
game.Workspace.Terrain,av.X,av.Y,av.Z)local az,aA=game.Workspace:
|
game.Workspace.Terrain,aw.X,aw.Y,aw.Z)local aA,aB=game.Workspace:
|
||||||
FindPartsInRegion3(Region3.new(ay-Vector3.new(2,2,2)+d,ay+Vector3.new(2,2,2)-d),
|
FindPartsInRegion3(Region3.new(az-Vector3.new(2,2,2)+e,az+Vector3.new(2,2,2)-e),
|
||||||
y.CurrentParts,100),false for Q=1,#az do if t(az[Q])then aA=true break end end
|
z.CurrentParts,100),false for R=1,#aA do if u(aA[R])then aB=true break end end
|
||||||
if not aA then local Q={}for R=1,#az do if az[R].Parent and not Q[az[R].Parent]
|
if not aB then local R={}for S=1,#aA do if aA[S].Parent and not R[aA[S].Parent]
|
||||||
and az[R].Parent:FindFirstChild(az[R].Parent:FindFirstChild'Humanoid':IsA
|
and aA[S].Parent:FindFirstChild(aA[S].Parent:FindFirstChild'Humanoid':IsA
|
||||||
'Humanoid')then local S=az[R].Parent:FindFirstChild'Torso'Q[az[R].Parent]=true
|
'Humanoid')then local T=aA[S].Parent:FindFirstChild'Torso'R[aA[S].Parent]=true
|
||||||
if S then local U=ay.Y+5 if u(S,U,y)then S.CFrame=S.CFrame+Vector3.new(0,U-S.
|
if T then local V=az.Y+5 if v(T,V,z)then T.CFrame=T.CFrame+Vector3.new(0,V-T.
|
||||||
CFrame.p.Y,0)else aA=true break end end end end end if not aA then local Q=true
|
CFrame.p.Y,0)else aB=true break end end end end end if not aB then local R=true
|
||||||
if aw then if aj then av=ax(game.Workspace.Terrain,av.X,av.Y,av.Z)if(av.X+2>aj.
|
if ax then if ak then aw=ay(game.Workspace.Terrain,aw.X,aw.Y,aw.Z)if(aw.X+2>ak.
|
||||||
CFrame.p.X+aj.Size.X/2)or(av.X-2<aj.CFrame.p.X-aj.Size.X/2)or(av.Y+2>aj.CFrame.p
|
CFrame.p.X+ak.Size.X/2)or(aw.X-2<ak.CFrame.p.X-ak.Size.X/2)or(aw.Y+2>ak.CFrame.p
|
||||||
.Y+aj.Size.Y/2)or(av.Y-2<aj.CFrame.p.Y-aj.Size.Y/2)or(av.Z+2>aj.CFrame.p.Z+aj.
|
.Y+ak.Size.Y/2)or(aw.Y-2<ak.CFrame.p.Y-ak.Size.Y/2)or(aw.Z+2>ak.CFrame.p.Z+ak.
|
||||||
Size.Z/2)or(av.Z-2<aj.CFrame.p.Z-aj.Size.Z/2)then Q=false end end end return Q
|
Size.Z/2)or(aw.Z-2<ak.CFrame.p.Z-ak.Size.Z/2)then R=false end end end return R
|
||||||
end return false end local av av=function(aw)local ax,ay,az,aA,Q,R,S,U,W=false,
|
end return false end local aw aw=function(ax)local ay,az,aA,aB,R,S,T,V,X=false,
|
||||||
game.Workspace.Terrain,D.InternalLine,game.Workspace.Terrain.MaxExtents.Max,game
|
game.Workspace.Terrain,E.InternalLine,game.Workspace.Terrain.MaxExtents.Max,game
|
||||||
.Workspace.Terrain.MaxExtents.Min,1,0,0,false if y.CurrentParts:FindFirstChild
|
.Workspace.Terrain.MaxExtents.Min,1,0,0,false if z.CurrentParts:FindFirstChild
|
||||||
'AutoWedge'then W=true end if y.CurrentParts:FindFirstChild('ClusterMaterial',
|
'AutoWedge'then X=true end if z.CurrentParts:FindFirstChild('ClusterMaterial',
|
||||||
true)then R=y.CurrentParts:FindFirstChild('ClusterMaterial',true)if R:IsA
|
true)then S=z.CurrentParts:FindFirstChild('ClusterMaterial',true)if S:IsA
|
||||||
'Vector3Value'then S=R.Value.Y U=R.Value.Z R=R.Value.X elseif R:IsA'IntValue'
|
'Vector3Value'then T=S.Value.Y V=S.Value.Z S=S.Value.X elseif S:IsA'IntValue'
|
||||||
then R=R.Value end end if D.Adorn.Parent and D.Start and((D.Dimensions>1)or(az
|
then S=S.Value end end if E.Adorn.Parent and E.Start and((E.Dimensions>1)or(aA
|
||||||
and az.magnitude>0))then local X,Y,aB,aC,aD,aE,aF,aG=game.Workspace.Terrain:
|
and aA.magnitude>0))then local Y,Z,aC,aD,aE,aF,aG,aH=game.Workspace.Terrain:
|
||||||
WorldToCell(D.Start),{0,0,0},{0,0,0},{0,0,0},{nil,nil,nil},{Vector3.new(0,0,0),
|
WorldToCell(E.Start),{0,0,0},{0,0,0},{0,0,0},{nil,nil,nil},{Vector3.new(0,0,0),
|
||||||
Vector3.new(0,0,0),Vector3.new(0,0,0)},{Vector3.new(1,0,0),Vector3.new(0,1,0),
|
Vector3.new(0,0,0),Vector3.new(0,0,0)},{Vector3.new(1,0,0),Vector3.new(0,1,0),
|
||||||
Vector3.new(0,0,1)},{}if D.Dimensions>1 then table.insert(aG,D.MoreLines[1])end
|
Vector3.new(0,0,1)},{}if E.Dimensions>1 then table.insert(aH,E.MoreLines[1])end
|
||||||
if az and az.magnitude>0 then table.insert(aG,az)end if D.Dimensions>2 then
|
if aA and aA.magnitude>0 then table.insert(aH,aA)end if E.Dimensions>2 then
|
||||||
table.insert(aG,D.MoreLines[2])end for aH=1,#aG do aG[aH]=Vector3.new(math.
|
table.insert(aH,E.MoreLines[2])end for aI=1,#aH do aH[aI]=Vector3.new(math.
|
||||||
floor(aG[aH].X+0.5),math.floor(aG[aH].Y+0.5),math.floor(aG[aH].Z+0.5))if aG[aH].
|
floor(aH[aI].X+0.5),math.floor(aH[aI].Y+0.5),math.floor(aH[aI].Z+0.5))if aH[aI].
|
||||||
X>0 then Y[aH]=1 elseif aG[aH].X<0 then Y[aH]=-1 end if aG[aH].Y>0 then aB[aH]=1
|
X>0 then Z[aI]=1 elseif aH[aI].X<0 then Z[aI]=-1 end if aH[aI].Y>0 then aC[aI]=1
|
||||||
elseif aG[aH].Y<0 then aB[aH]=-1 end if aG[aH].Z>0 then aC[aH]=1 elseif aG[aH].Z
|
elseif aH[aI].Y<0 then aC[aI]=-1 end if aH[aI].Z>0 then aD[aI]=1 elseif aH[aI].Z
|
||||||
<0 then aC[aH]=-1 end aD[aH]=Vector3.new(Y[aH],aB[aH],aC[aH])if aD[aH].magnitude
|
<0 then aD[aI]=-1 end aE[aI]=Vector3.new(Z[aI],aC[aI],aD[aI])if aE[aI].magnitude
|
||||||
<0.9 then aD[aH]=nil end end if not aG[2]then aG[2]=Vector3.new(0,0,0)end if not
|
<0.9 then aE[aI]=nil end end if not aH[2]then aH[2]=Vector3.new(0,0,0)end if not
|
||||||
aG[3]then aG[3]=Vector3.new(0,0,0)end local aH,aI=y.CurrentParts:FindFirstChild(
|
aH[3]then aH[3]=Vector3.new(0,0,0)end local aI,aJ=z.CurrentParts:FindFirstChild(
|
||||||
'WaterForceTag',true),y.CurrentParts:FindFirstChild('WaterForceDirectionTag',
|
'WaterForceTag',true),z.CurrentParts:FindFirstChild('WaterForceDirectionTag',
|
||||||
true)while aE[3].magnitude*4<=aG[3].magnitude do local aJ=1 while aJ<4 do aE[2]=
|
true)while aF[3].magnitude*4<=aH[3].magnitude do local aK=1 while aK<4 do aF[2]=
|
||||||
Vector3.new(0,0,0)while aE[2].magnitude*4<=aG[2].magnitude do local aK=1 while
|
Vector3.new(0,0,0)while aF[2].magnitude*4<=aH[2].magnitude do local aL=1 while
|
||||||
aK<4 do aE[1]=Vector3.new(0,0,0)while aE[1].magnitude*4<=aG[1].magnitude do
|
aL<4 do aF[1]=Vector3.new(0,0,0)while aF[1].magnitude*4<=aH[1].magnitude do
|
||||||
local aL=aE[1]+aE[2]+aE[3]local aM=Vector3int16.new(X.X+aL.X,X.Y+aL.Y,X.Z+aL.Z)
|
local aM=aF[1]+aF[2]+aF[3]local aN=Vector3int16.new(Y.X+aM.X,Y.Y+aM.Y,Y.Z+aM.Z)
|
||||||
if aM.X>=Q.X and aM.Y>=Q.Y and aM.Z>=Q.Z and aM.X<aA.X and aM.Y<aA.Y and aM.Z<aA
|
if aN.X>=R.X and aN.Y>=R.Y and aN.Z>=R.Z and aN.X<aB.X and aN.Y<aB.Y and aN.Z<aB
|
||||||
.Z then local aN=au(aM,aw)if aN then if aH then ay:SetWaterCell(aM.X,aM.Y,aM.Z,
|
.Z then local aO=av(aN,ax)if aO then if aI then az:SetWaterCell(aN.X,aN.Y,aN.Z,
|
||||||
Enum.WaterForce[aH.Value],Enum.WaterDirection[aI.Value])else ay:SetCell(aM.X,aM.
|
Enum.WaterForce[aI.Value],Enum.WaterDirection[aJ.Value])else az:SetCell(aN.X,aN.
|
||||||
Y,aM.Z,R,S,U)end ax=true if W then game.Workspace.Terrain:AutowedgeCells(
|
Y,aN.Z,S,T,V)end ay=true if X then game.Workspace.Terrain:AutowedgeCells(
|
||||||
Region3int16.new(Vector3int16.new(aM.x-1,aM.y-1,aM.z-1),Vector3int16.new(aM.x+1,
|
Region3int16.new(Vector3int16.new(aN.x-1,aN.y-1,aN.z-1),Vector3int16.new(aN.x+1,
|
||||||
aM.y+1,aM.z+1)))end end end aE[1]=aE[1]+aD[1]end if aD[2]then while aK<4 and aF[
|
aN.y+1,aN.z+1)))end end end aF[1]=aF[1]+aE[1]end if aE[2]then while aL<4 and aG[
|
||||||
aK]:Dot(aD[2])==0 do aK=aK+1 end if aK<4 then aE[2]=aE[2]+aF[aK]*aF[aK]:Dot(aD[2
|
aL]:Dot(aE[2])==0 do aL=aL+1 end if aL<4 then aF[2]=aF[2]+aG[aL]*aG[aL]:Dot(aE[2
|
||||||
])end aK=aK+1 else aE[2]=Vector3.new(1,0,0)aK=4 end if aE[2].magnitude*4>aG[2].
|
])end aL=aL+1 else aF[2]=Vector3.new(1,0,0)aL=4 end if aF[2].magnitude*4>aH[2].
|
||||||
magnitude then aK=4 end end end if aD[3]then while aJ<4 and aF[aJ]:Dot(aD[3])==0
|
magnitude then aL=4 end end end if aE[3]then while aK<4 and aG[aK]:Dot(aE[3])==0
|
||||||
do aJ=aJ+1 end if aJ<4 then aE[3]=aE[3]+aF[aJ]*aF[aJ]:Dot(aD[3])end aJ=aJ+1 else
|
do aK=aK+1 end if aK<4 then aF[3]=aF[3]+aG[aK]*aG[aK]:Dot(aE[3])end aK=aK+1 else
|
||||||
aE[3]=Vector3.new(1,0,0)aJ=4 end if aE[3].magnitude*4>aG[3].magnitude then aJ=4
|
aF[3]=Vector3.new(1,0,0)aK=4 end if aF[3].magnitude*4>aH[3].magnitude then aK=4
|
||||||
end end end end D.Start=nil D.Adorn.Parent=nil if ax then y.CurrentParts.Parent=
|
end end end end E.Start=nil E.Adorn.Parent=nil if ay then z.CurrentParts.Parent=
|
||||||
nil pcall(function()return game:GetService'ChangeHistoryService':SetWaypoint
|
nil pcall(function()return game:GetService'ChangeHistoryService':SetWaypoint
|
||||||
'StamperMulti'end)end return ax end local aw aw=function(ax)if not ax then error
|
'StamperMulti'end)end return ay end local ax ax=function(ay)if not ay then error
|
||||||
'Error: RbxStamper.DoStamperMouseUp: Mouse is nil'return false end if not ax:IsA
|
'Error: RbxStamper.DoStamperMouseUp: Mouse is nil'return false end if not ay:IsA
|
||||||
'Mouse'then error('Error: RbxStamper.DoStamperMouseUp: Mouse is of type',ax.
|
'Mouse'then error('Error: RbxStamper.DoStamperMouseUp: Mouse is of type',ay.
|
||||||
className,'should be of type Mouse')return false end if not y.Dragger then error
|
className,'should be of type Mouse')return false end if not z.Dragger then error
|
||||||
[[Error: RbxStamper.DoStamperMouseUp: stampData.Dragger is nil]]return false end
|
[[Error: RbxStamper.DoStamperMouseUp: stampData.Dragger is nil]]return false end
|
||||||
if not D then return false end local ay if ai then local az,aA=nil,N()if aA and
|
if not E then return false end local az if aj then local aA,aB=nil,O()if aB and
|
||||||
D and D.Start and D.InternalLine and D.InternalLine.magnitude>0 then az=true ay=
|
E and E.Start and E.InternalLine and E.InternalLine.magnitude>0 then aA=true az=
|
||||||
true else az,ay=a.CanEditRegion(y.CurrentParts,aj)end if not az then if w then
|
true else aA,az=b.CanEditRegion(z.CurrentParts,ak)end if not aA then if x~=nil
|
||||||
w()end return false end end if H then ao()return false end local az az,ay=a.
|
then x()end return false end end if I then ap()return false end local aA aA,az=b
|
||||||
CanEditRegion(y.CurrentParts,aj)if not az then if w then w()end return false end
|
.CanEditRegion(z.CurrentParts,ak)if not aA then if x~=nil then x()end return
|
||||||
local aA,aB=q(y.CurrentParts)local aC,aD=v(ax,y)if aC and not D.Adorn.Parent
|
false end local aB,aC=r(z.CurrentParts)local aD,aE=w(ay,z)if aD and not E.Adorn.
|
||||||
then if h(aA+d,aB-d)then ao()return false end local aE=game.Workspace:
|
Parent then if i(aB+e,aC-e)then ap()return false end local aF=game.Workspace:
|
||||||
FindPartsInRegion3(Region3.new(aA+d,aB-d),y.CurrentParts,100)for aF=1,#aE do if
|
FindPartsInRegion3(Region3.new(aB+e,aC-e),z.CurrentParts,100)for aG=1,#aF do if
|
||||||
t(aE[aF])then ao()return false end end local aF={}for aG=1,#aE do if aE[aG].
|
u(aF[aG])then ap()return false end end local aG={}for aH=1,#aF do if aF[aH].
|
||||||
Parent and not aF[aE[aG].Parent]and aE[aG].Parent:FindFirstChild'Humanoid'and aE
|
Parent and not aG[aF[aH].Parent]and aF[aH].Parent:FindFirstChild'Humanoid'and aF
|
||||||
[aG].Parent:FindFirstChild'Humanoid':IsA'Humanoid'then local aH=aE[aG].Parent:
|
[aH].Parent:FindFirstChild'Humanoid':IsA'Humanoid'then local aI=aF[aH].Parent:
|
||||||
FindFirstChild'Torso'aF[aE[aG].Parent]=true if aH then local aI=aB.Y+3 if u(aH,
|
FindFirstChild'Torso'aG[aF[aH].Parent]=true if aI then local aJ=aC.Y+3 if v(aI,
|
||||||
aI,y)then aH.CFrame=aH.CFrame+Vector3.new(0,aI-aH.CFrame.p.Y,0)else ao()return
|
aJ,z)then aI.CFrame=aI.CFrame+Vector3.new(0,aJ-aI.CFrame.p.Y,0)else ap()return
|
||||||
false end end end end elseif(not aC)and not(D.Start and D.Adorn.Parent)then al()
|
false end end end end elseif(not aD)and not(E.Start and E.Adorn.Parent)then am()
|
||||||
return false end if game:FindFirstChild'Players'then if game.Players[
|
return false end if game:FindFirstChild'Players'then if game.Players[
|
||||||
'LocalPlayer']then if game.Players.LocalPlayer['Character']then local aE=game.
|
'LocalPlayer']then if game.Players.LocalPlayer['Character']then local aF=game.
|
||||||
Players.LocalPlayer.Character local aF=aE:FindFirstChild'StampTracker'if aF and
|
Players.LocalPlayer.Character local aG=aF:FindFirstChild'StampTracker'if aG and
|
||||||
not aF.Value then aF.Value=true end end end end if D.Start and D.Adorn.Parent
|
not aG.Value then aG.Value=true end end end end if E.Start and E.Adorn.Parent
|
||||||
and N()then if av(ay)or ay then y.CurrentParts.Parent=nil return true end end D.
|
and O()then if aw(az)or az then z.CurrentParts.Parent=nil return true end end E.
|
||||||
Start=nil D.Adorn.Parent=nil local aE=game.Workspace.Terrain if N()then local aF
|
Start=nil E.Adorn.Parent=nil local aF=game.Workspace.Terrain if O()then local aG
|
||||||
if y.CurrentParts:IsA'Model'then aF=aE:WorldToCell(y.CurrentParts:
|
if z.CurrentParts:IsA'Model'then aG=aF:WorldToCell(z.CurrentParts:
|
||||||
GetModelCFrame().p)else aF=aE:WorldToCell(y.CurrentParts.CFrame.p)end local aG,
|
GetModelCFrame().p)else aG=aF:WorldToCell(z.CurrentParts.CFrame.p)end local aH,
|
||||||
aH=game.Workspace.Terrain.MaxExtents.Max,game.Workspace.Terrain.MaxExtents.Min
|
aI=game.Workspace.Terrain.MaxExtents.Max,game.Workspace.Terrain.MaxExtents.Min
|
||||||
if au(aF,false)then local aI,aJ,aK=y.CurrentParts:FindFirstChild(
|
if av(aG,false)then local aJ,aK,aL=z.CurrentParts:FindFirstChild(
|
||||||
'ClusterMaterial',true),y.CurrentParts:FindFirstChild('WaterForceTag',true),y.
|
'ClusterMaterial',true),z.CurrentParts:FindFirstChild('WaterForceTag',true),z.
|
||||||
CurrentParts:FindFirstChild('WaterForceDirectionTag',true)if aF.X>=aH.X and aF.Y
|
CurrentParts:FindFirstChild('WaterForceDirectionTag',true)if aG.X>=aI.X and aG.Y
|
||||||
>=aH.Y and aF.Z>=aH.Z and aF.X<aG.X and aF.Y<aG.Y and aF.Z<aG.Z then if aJ then
|
>=aI.Y and aG.Z>=aI.Z and aG.X<aH.X and aG.Y<aH.Y and aG.Z<aH.Z then if aK then
|
||||||
aE:SetWaterCell(aF.X,aF.Y,aF.Z,Enum.WaterForce[aJ.Value],Enum.WaterDirection[aK.
|
aF:SetWaterCell(aG.X,aG.Y,aG.Z,Enum.WaterForce[aK.Value],Enum.WaterDirection[aL.
|
||||||
Value])elseif not aI then aE:SetCell(aF.X,aF.Y,aF.Z,M.Material,M.clusterType,x%4
|
Value])elseif not aJ then aF:SetCell(aG.X,aG.Y,aG.Z,N.Material,N.clusterType,y%4
|
||||||
)elseif aI:IsA'Vector3Value'then aE:SetCell(aF.X,aF.Y,aF.Z,aI.Value.X,aI.Value.Y
|
)elseif aJ:IsA'Vector3Value'then aF:SetCell(aG.X,aG.Y,aG.Z,aJ.Value.X,aJ.Value.Y
|
||||||
,aI.Value.Z)else aE:SetCell(aF.X,aF.Y,aF.Z,aI.Value,0,0)end local aL=false if y.
|
,aJ.Value.Z)else aF:SetCell(aG.X,aG.Y,aG.Z,aJ.Value,0,0)end local aM=false if z.
|
||||||
CurrentParts:FindFirstChild'AutoWedge'then aL=true end if aL then game.Workspace
|
CurrentParts:FindFirstChild'AutoWedge'then aM=true end if aM then game.Workspace
|
||||||
.Terrain:AutowedgeCells(Region3int16.new(Vector3int16.new(aF.x-1,aF.y-1,aF.z-1),
|
.Terrain:AutowedgeCells(Region3int16.new(Vector3int16.new(aG.x-1,aG.y-1,aG.z-1),
|
||||||
Vector3int16.new(aF.x+1,aF.y+1,aF.z+1)))end y.CurrentParts.Parent=nil pcall(
|
Vector3int16.new(aG.x+1,aG.y+1,aG.z+1)))end z.CurrentParts.Parent=nil pcall(
|
||||||
function()return game:GetService'ChangeHistoryService':SetWaypoint
|
function()return game:GetService'ChangeHistoryService':SetWaypoint
|
||||||
'StamperSingle'end)return true end else ao()return false end end local aF aF=
|
'StamperSingle'end)return true end else ap()return false end end local aG aG=
|
||||||
function()if game:FindFirstChild'Players'then if game.Players['LocalPlayer']then
|
function()if game:FindFirstChild'Players'and game.Players['LocalPlayer']then
|
||||||
return game.Players.LocalPlayer end end return nil end if y.CurrentParts:IsA
|
return game.Players.LocalPlayer end end if z.CurrentParts:IsA'Model'or z.
|
||||||
'Model'or y.CurrentParts:IsA'Tool'then if y.CurrentParts:IsA'Model'then local aG
|
CurrentParts:IsA'Tool'then if z.CurrentParts:IsA'Model'then local aH,aI={},{}ac(
|
||||||
,aH={},{}ab(y.CurrentParts,aG,aH)y.CurrentParts:BreakJoints()y.CurrentParts:
|
z.CurrentParts,aH,aI)z.CurrentParts:BreakJoints()z.CurrentParts:MakeJoints()ad(
|
||||||
MakeJoints()ac(aG,aH)end local aG,aH=y.CurrentParts:FindFirstChild'PlayerIdTag',
|
aH,aI)end local aH,aI=z.CurrentParts:FindFirstChild'PlayerIdTag',z.CurrentParts:
|
||||||
y.CurrentParts:FindFirstChild'PlayerNameTag'if(aG~=nil)then local aI=aF()if(aI~=
|
FindFirstChild'PlayerNameTag'if(aH~=nil)then local aJ=aG()if(aJ~=nil)then aH.
|
||||||
nil)then aG.Value=aI.userId end end if(aH~=nil)then if game:FindFirstChild(game.
|
Value=aJ.userId end end if(aI~=nil)then if game:FindFirstChild(game.Players[
|
||||||
Players['LocalPlayer'])then local aI=game.Players.LocalPlayer if(aI~=nil)then aH
|
'LocalPlayer'])then local aJ=game.Players.LocalPlayer if(aJ~=nil)then aI.Value=
|
||||||
.Value=aI.Name end end end if not(y.CurrentParts:FindFirstChild'RobloxModel'~=
|
aJ.Name end end end if not(z.CurrentParts:FindFirstChild'RobloxModel'~=nil)then
|
||||||
nil)then local aI=Instance.new'BoolValue'aI.Name='RobloxModel'aI.Parent=y.
|
a('BoolValue','RobloxModel',{Parent=z.CurrentParts})if not(z.CurrentParts:
|
||||||
CurrentParts if not(y.CurrentParts:FindFirstChild'RobloxStamper'~=nil)then local
|
FindFirstChild'RobloxStamper'~=nil)then a('BoolValue','RobloxStamper',{Parent=z.
|
||||||
aJ=Instance.new'BoolValue'aJ.Name='RobloxStamper'aJ.Parent=y.CurrentParts end
|
CurrentParts})end end else z.CurrentParts:BreakJoints()if not(z.CurrentParts:
|
||||||
end else y.CurrentParts:BreakJoints()if not(y.CurrentParts:FindFirstChild
|
FindFirstChild'RobloxStamper'~=nil)then a('BoolValue','RobloxStamper',{Parent=z.
|
||||||
'RobloxStamper'~=nil)then local aG=Instance.new'BoolValue'aG.Name=
|
CurrentParts})end end if not createJoints then game.JointsService:
|
||||||
'RobloxStamper'aG.Parent=y.CurrentParts end end if not createJoints then game.
|
CreateJoinAfterMoveJoints()end for aH,aI in pairs(z.TransparencyTable)do aH.
|
||||||
JointsService:CreateJoinAfterMoveJoints()end for aG,aH in pairs(y.
|
Transparency=aI end for aJ,aK in pairs(z.ArchivableTable)do aJ.Archivable=aK end
|
||||||
TransparencyTable)do aG.Transparency=aH end for aI,aJ in pairs(y.ArchivableTable
|
for aL,aM in pairs(z.MaterialTable)do aL.Material=aM end for aN,aO in pairs(z.
|
||||||
)do aI.Archivable=aJ end for aK,aL in pairs(y.MaterialTable)do aK.Material=aL
|
CanCollideTable)do aN.CanCollide=aO end for R,S in pairs(z.AnchoredTable)do R.
|
||||||
end for aM,aN in pairs(y.CanCollideTable)do aM.CanCollide=aN end for Q,R in
|
Anchored=S end for T,V in pairs(z.DecalTransparencyTable)do T.Transparency=V end
|
||||||
pairs(y.AnchoredTable)do Q.Anchored=R end for S,U in pairs(y.
|
for X,Y in pairs(z.SurfaceTypeTable)do ar(X,Y)end if O()then z.CurrentParts.
|
||||||
DecalTransparencyTable)do S.Transparency=U end for W,X in pairs(y.
|
Transparency=0 end k(z.CurrentParts,true)z.TransparencyTable=nil z.
|
||||||
SurfaceTypeTable)do aq(W,X)end if N()then y.CurrentParts.Transparency=0 end j(y.
|
ArchivableTable=nil z.MaterialTable=nil z.CanCollideTable=nil z.AnchoredTable=
|
||||||
CurrentParts,true)y.TransparencyTable=nil y.ArchivableTable=nil y.MaterialTable=
|
nil z.SurfaceTypeTable=nil if not(z.CurrentParts:FindFirstChild'RobloxModel'~=
|
||||||
nil y.CanCollideTable=nil y.AnchoredTable=nil y.SurfaceTypeTable=nil if not(y.
|
nil)then a('BoolValue','RobloxModel',{Parent=z.CurrentParts})end if
|
||||||
CurrentParts:FindFirstChild'RobloxModel'~=nil)then local Y=Instance.new
|
ghostRemovalScript then ghostRemovalScript.Parent=nil end for Z,aP in pairs(z.
|
||||||
'BoolValue'Y.Name='RobloxModel'Y.Parent=y.CurrentParts end if ghostRemovalScript
|
DisabledScripts)do aP.Disabled=false end for aQ,aR in pairs(z.DisabledScripts)do
|
||||||
then ghostRemovalScript.Parent=nil end for Y,aO in pairs(y.DisabledScripts)do aO
|
local aS=aR.Parent aR.Parent=nil aR:Clone().Parent=aS end z.DisabledScripts=nil
|
||||||
.Disabled=false end for aP,aQ in pairs(y.DisabledScripts)do local aR=aQ.Parent
|
z.Dragger=nil z.CurrentParts=nil pcall(function()return game:GetService
|
||||||
aQ.Parent=nil aQ:Clone().Parent=aR end y.DisabledScripts=nil y.Dragger=nil y.
|
'ChangeHistoryService':SetWaypoint'StampedObject'end)return true end local ay ay
|
||||||
CurrentParts=nil pcall(function()return game:GetService'ChangeHistoryService':
|
=function()for az=1,#J do J[az]:disconnect()J[az]=nil end J={}if z and z.
|
||||||
SetWaypoint'StampedObject'end)return true end local ax ax=function()for ay=1,#I
|
CurrentParts then z.CurrentParts.Parent=nil z.CurrentParts:Remove()end am()
|
||||||
do I[ay]:disconnect()I[ay]=nil end I={}if y and y.CurrentParts then y.
|
return game.JointsService:ClearJoinAfterMoveJoints()end local az az=function(aA,
|
||||||
CurrentParts.Parent=nil y.CurrentParts:Remove()end al()return game.JointsService
|
aB,aC)local aD,aE={Vector3.new(1,0,0),Vector3.new(0,1,0),Vector3.new(0,0,1)},1
|
||||||
:ClearJoinAfterMoveJoints()end local ay ay=function(az,aA,aB)local aC,aD={
|
if aC<0 then aE=aE*(-1)aC=aC*(-1)end local aF=aE*aA:vectorToWorldSpace(aD[aC])
|
||||||
Vector3.new(1,0,0),Vector3.new(0,1,0),Vector3.new(0,0,1)},1 if aB<0 then aD=aD*(
|
for aG=1,#aB do local aK=aB[aG]local aM=aK.CFrame:vectorToObjectSpace(aF)if math
|
||||||
-1)aB=aB*(-1)end local aE=aD*az:vectorToWorldSpace(aC[aB])for aF=1,#aA do local
|
.abs(aM.X)>math.abs(aM.Y)then if math.abs(aM.X)>math.abs(aM.Z)then if aM.X>0
|
||||||
aJ=aA[aF]local aL=aJ.CFrame:vectorToObjectSpace(aE)if math.abs(aL.X)>math.abs(aL
|
then aK.RightSurface='Unjoinable'else aK.LeftSurface='Unjoinable'end else if aM.
|
||||||
.Y)then if math.abs(aL.X)>math.abs(aL.Z)then if aL.X>0 then aJ.RightSurface=
|
Z>0 then aK.BackSurface='Unjoinable'else aK.FrontSurface='Unjoinable'end end
|
||||||
'Unjoinable'else aJ.LeftSurface='Unjoinable'end else if aL.Z>0 then aJ.
|
else if math.abs(aM.Y)>math.abs(aM.Z)then if aM.Y>0 then aK.TopSurface=
|
||||||
BackSurface='Unjoinable'else aJ.FrontSurface='Unjoinable'end end else if math.
|
'Unjoinable'else aK.BottomSurface='Unjoinable'end else if aM.Z>0 then aK.
|
||||||
abs(aL.Y)>math.abs(aL.Z)then if aL.Y>0 then aJ.TopSurface='Unjoinable'else aJ.
|
BackSurface='Unjoinable'else aK.FrontSurface='Unjoinable'end end end end end
|
||||||
BottomSurface='Unjoinable'end else if aL.Z>0 then aJ.BackSurface='Unjoinable'
|
local aA aA=function()local aB,aC=au(ae)if not aB or not aC then return end
|
||||||
else aJ.FrontSurface='Unjoinable'end end end end end local az az=function()local
|
local aD=aB:FindFirstChild('UnjoinableFaces',true)if aD then for aE in string.
|
||||||
aA,aB=at(ad)if not aA or not aB then return end local aC=aA:FindFirstChild(
|
gmatch(aD.Value,'[^,]*')do if tonumber(aE)then if aB:IsA'Model'then az(aB:
|
||||||
'UnjoinableFaces',true)if aC then for aD in string.gmatch(aC.Value,'[^,]*')do if
|
GetModelCFrame(),aC,tonumber(aE))else az(aB.CFrame,aC,tonumber(aE))end end end
|
||||||
tonumber(aD)then if aA:IsA'Model'then ay(aA:GetModelCFrame(),aB,tonumber(aD))
|
end z.ErrorBox=B if aj then aB.Parent=aj else aB.Parent=game.Workspace end if aB
|
||||||
else ay(aA.CFrame,aB,tonumber(aD))end end end end y.ErrorBox=A if ai then aA.
|
:FindFirstChild('ClusterMaterial',true)then local aE=aB:FindFirstChild(
|
||||||
Parent=ai else aA.Parent=game.Workspace end if aA:FindFirstChild(
|
'ClusterMaterial',true)if aE:IsA'Vector3Value'then N.Material=aE.Value.X N.
|
||||||
'ClusterMaterial',true)then local aD=aA:FindFirstChild('ClusterMaterial',true)if
|
clusterType=aE.Value.Y N.clusterOrientation=aE.Value.Z elseif aE:IsA'IntValue'
|
||||||
aD:IsA'Vector3Value'then M.Material=aD.Value.X M.clusterType=aD.Value.Y M.
|
then N.Material=aE.Value end end pcall(function()A=af.Target end)if A and not(A.
|
||||||
clusterOrientation=aD.Value.Z elseif aD:IsA'IntValue'then M.Material=aD.Value
|
Parent:FindFirstChild'RobloxModel'~=nil)then game.JointsService:
|
||||||
end end pcall(function()z=ae.Target end)if z and not(z.Parent:FindFirstChild
|
SetJoinAfterMoveTarget(A)else game.JointsService:SetJoinAfterMoveTarget(nil)end
|
||||||
'RobloxModel'~=nil)then game.JointsService:SetJoinAfterMoveTarget(z)else game.
|
game.JointsService:ShowPermissibleJoints()for aE,aF in pairs(z.DisabledScripts)
|
||||||
JointsService:SetJoinAfterMoveTarget(nil)end game.JointsService:
|
do if aF.Name=='GhostRemovalScript'then aF.Parent=z.CurrentParts end end z.
|
||||||
ShowPermissibleJoints()for aD,aE in pairs(y.DisabledScripts)do if aE.Name==
|
Dragger=Instance.new'Dragger'z.Dragger:MouseDown(aC[1],Vector3.new(0,0,0,aC))z.
|
||||||
'GhostRemovalScript'then aE.Parent=y.CurrentParts end end y.Dragger=Instance.new
|
Dragger:MouseUp()Q(af)table.insert(J,af.Move:connect(function()if G or H then
|
||||||
'Dragger'y.Dragger:MouseDown(aB[1],Vector3.new(0,0,0,aB))y.Dragger:MouseUp()P(ae
|
return end G=true Q(af)G=false end))table.insert(J,af.Button1Down:connect(
|
||||||
)table.insert(I,ae.Move:connect(function()if F or G then return end F=true P(ae)
|
function()return aq(af)end))table.insert(J,af.Button1Up:connect(function()H=true
|
||||||
F=false end))table.insert(I,ae.Button1Down:connect(function()return ap(ae)end))
|
while G do wait()end L.Value=ax(af)am()H=false end))L.Value=false end local aB
|
||||||
table.insert(I,ae.Button1Up:connect(function()G=true while F do wait()end K.
|
aB=function(aC)if aC then if not aC:IsA'Model'and not aC:IsA'BasePart'then error
|
||||||
Value=aw(ae)al()G=false end))K.Value=false end local aA aA=function(aB)if aB
|
|
||||||
then if not aB:IsA'Model'and not aB:IsA'BasePart'then error
|
|
||||||
[[resetStamperState: newModelToStamp (first arg) is not nil, but not a model or part!]]
|
[[resetStamperState: newModelToStamp (first arg) is not nil, but not a model or part!]]
|
||||||
end ad=aB end ax()return az()end aA()E.Stamped=K E.Paused=false E.LoadNewModel=
|
end ae=aC end ay()return aA()end aB()F.Stamped=L F.Paused=false F.LoadNewModel=
|
||||||
function(aB)if aB and not aB:IsA'Model'and not aB:IsA'BasePart'then error
|
function(aC)if aC and not aC:IsA'Model'and not aC:IsA'BasePart'then error
|
||||||
[[Control.LoadNewModel: newStampModel (first arg) is not a Model or Part!]]
|
[[Control.LoadNewModel: newStampModel (first arg) is not a Model or Part!]]
|
||||||
return nil end return aA(aB)end E.ReloadModel=function()return aA()end E.Pause=
|
return nil end return aB(aC)end F.ReloadModel=function()return aB()end F.Pause=
|
||||||
function()if not E.Paused then ax()E.Paused=true else return print
|
function()if not F.Paused then ay()F.Paused=true else return print
|
||||||
[[RbxStamper Warning: Tried to call Control.Pause! when already paused]]end end
|
[[RbxStamper Warning: Tried to call Control.Pause! when already paused]]end end
|
||||||
E.Resume=function()if E.Paused then az()E.Paused=false else return print
|
F.Resume=function()if F.Paused then aA()F.Paused=false else return print
|
||||||
[[RbxStamper Warning: Tried to call Control.Resume! without Pausing First]]end
|
[[RbxStamper Warning: Tried to call Control.Resume! without Pausing First]]end
|
||||||
end E.ResetRotation=function()end E.Destroy=function()for aB=1,#I do I[aB]:
|
end F.ResetRotation=function()end F.Destroy=function()for aC=1,#J do J[aC]:
|
||||||
disconnect()I[aB]=nil end if J~=nil then J:disconnect()end game.JointsService:
|
disconnect()J[aC]=nil end if K~=nil then K:disconnect()end game.JointsService:
|
||||||
ClearJoinAfterMoveJoints()if C~=nil then C:Destroy()end if B~=nil then B:
|
ClearJoinAfterMoveJoints()if D~=nil then D:Destroy()end if C~=nil then C:
|
||||||
Destroy()end if A~=nil then A:Destroy()end if y~=nil then do local aB=y.Dragger
|
Destroy()end if B~=nil then B:Destroy()end if z~=nil then do local aC=z.Dragger
|
||||||
if aB~=nil then aB:Destroy()end end end if y~=nil then do local aB=y.
|
if aC~=nil then aC:Destroy()end end end if z~=nil then do local aC=z.
|
||||||
CurrentParts if aB~=nil then aB:Destroy()end end end if E and E['Stamped']then E
|
CurrentParts if aC~=nil then aC:Destroy()end end end if F and F['Stamped']then F
|
||||||
.Stamped:Destroy()end E=nil end return E end a.Help=function(ad)if
|
.Stamped:Destroy()end F=nil end return F end b.Help=function(ae)if
|
||||||
'GetStampModel'==ad or a.GetStampModel==ad then return
|
'GetStampModel'==ae or b.GetStampModel==ae then return
|
||||||
[[Function GetStampModel. Arguments: assetId, useAssetVersionId. assetId is the asset to load in, define useAssetVersionId as true if assetId is a version id instead of a relative assetId. Side effect: returns a model of the assetId, or a string with error message if something fails]]
|
[[Function GetStampModel. Arguments: assetId, useAssetVersionId. assetId is the asset to load in, define useAssetVersionId as true if assetId is a version id instead of a relative assetId. Side effect: returns a model of the assetId, or a string with error message if something fails]]
|
||||||
elseif'SetupStamperDragger'==ad or a.SetupStamperDragger==ad then return
|
elseif'SetupStamperDragger'==ae or b.SetupStamperDragger==ae then return
|
||||||
[[Function SetupStamperDragger. Side Effect: Creates 4x4 stamping mechanism for building out parts quickly. Arguments: ModelToStamp, Mouse, LegalStampCheckFunction. ModelToStamp should be a Model or Part, preferrably loaded from RbxStamper.GetStampModel and should have extents that are multiples of 4. Mouse should be a mouse object (obtained from things such as Tool.OnEquipped), used to drag parts around 'stamp' them out. LegalStampCheckFunction is optional, used as a callback with a table argument (table is full of instances about to be stamped). Function should return either true or false, false stopping the stamp action.]]
|
[[Function SetupStamperDragger. Side Effect: Creates 4x4 stamping mechanism for building out parts quickly. Arguments: ModelToStamp, Mouse, LegalStampCheckFunction. ModelToStamp should be a Model or Part, preferrably loaded from RbxStamper.GetStampModel and should have extents that are multiples of 4. Mouse should be a mouse object (obtained from things such as Tool.OnEquipped), used to drag parts around 'stamp' them out. LegalStampCheckFunction is optional, used as a callback with a table argument (table is full of instances about to be stamped). Function should return either true or false, false stopping the stamp action.]]
|
||||||
end end return a
|
end end return b
|
||||||
|
|
@ -49,17 +49,17 @@ Selected=false h.Image='http://www.roblox.com/asset/?id=97617958'p.Image=
|
||||||
Size=UDim2.new(1.2,0,1.2,0)M()local P=o:GetChildren()for Q=1,#P do if P[Q]and P[
|
Size=UDim2.new(1.2,0,1.2,0)M()local P=o:GetChildren()for Q=1,#P do if P[Q]and P[
|
||||||
Q]:IsA'Frame'then local R=P[Q]if#R:GetChildren()>0 then h.Position=UDim2.new(0.5
|
Q]:IsA'Frame'then local R=P[Q]if#R:GetChildren()>0 then h.Position=UDim2.new(0.5
|
||||||
,-60,1,-108)h.Visible=true p.Visible=true if R:GetChildren()[1]:IsA'ImageButton'
|
,-60,1,-108)h.Visible=true p.Visible=true if R:GetChildren()[1]:IsA'ImageButton'
|
||||||
then local S=R:GetChildren()[1]S.Active=true S.Draggable=false end end end end
|
then do local S=R:GetChildren()[1]S.Active=true S.Draggable=false end end end
|
||||||
end end local P P=function()L()t=true c.Visible=s if s then return O()end end
|
end end end end local P P=function()L()t=true c.Visible=s if s then return O()
|
||||||
local Q Q=function()if s then return O()end end local R R=function(S)assert(S)
|
end end local Q Q=function()if s then return O()end end local R R=function(S)
|
||||||
assert(S:IsA'TextButton')S.BackgroundColor3=Color3.new(1,1,1)S.TextColor3=Color3
|
assert(S)assert(S:IsA'TextButton')S.BackgroundColor3=Color3.new(1,1,1)S.
|
||||||
.new(0,0,0)S.Selected=true S.ZIndex=3 return S end local S S=function(T)assert(T
|
TextColor3=Color3.new(0,0,0)S.Selected=true S.ZIndex=3 return S end local S S=
|
||||||
)assert(T:IsA'TextButton')T.BackgroundColor3=Color3.new(0,0,0)T.TextColor3=
|
function(T)assert(T)assert(T:IsA'TextButton')T.BackgroundColor3=Color3.new(0,0,0
|
||||||
Color3.new(1,1,1)T.Selected=false T.ZIndex=1 return T end local T T=function(U)
|
)T.TextColor3=Color3.new(1,1,1)T.Selected=false T.ZIndex=1 return T end local T
|
||||||
assert(U)if U=='gear'then R(f)return S(g)elseif U=='wardrobe'then R(g)return S(f
|
T=function(U)assert(U)if U=='gear'then R(f)return S(g)elseif U=='wardrobe'then
|
||||||
)end end local U U=function(V)assert(V)assert(V:IsA'TextButton')if V.Selected
|
R(g)return S(f)end end local U U=function(V)assert(V)assert(V:IsA'TextButton')if
|
||||||
then return end V.BackgroundColor3=Color3.new(0,0,0)end local V V=function(W)
|
V.Selected then return end V.BackgroundColor3=Color3.new(0,0,0)end local V V=
|
||||||
assert(W)assert(W:IsA'TextButton')if W.Selected then return end W.
|
function(W)assert(W)assert(W:IsA'TextButton')if W.Selected then return end W.
|
||||||
BackgroundColor3=Color3.new(0.15294117647058825,0.15294117647058825,
|
BackgroundColor3=Color3.new(0.15294117647058825,0.15294117647058825,
|
||||||
0.15294117647058825)end local W W=function(X)assert(X)X=string.lower(X)i=X T(X)G
|
0.15294117647058825)end local W W=function(X)assert(X)X=string.lower(X)i=X T(X)G
|
||||||
:Fire(X)return J()end local X X=function(Y)return Y:gsub('^%s*(.-)%s*$','%1')end
|
:Fire(X)return J()end local X X=function(Y)return Y:gsub('^%s*(.-)%s*$','%1')end
|
||||||
|
|
|
||||||
|
|
@ -17,11 +17,8 @@ end
|
||||||
local getKillerOfHumanoidIfStillInGame
|
local getKillerOfHumanoidIfStillInGame
|
||||||
getKillerOfHumanoidIfStillInGame=function(humanoid)
|
getKillerOfHumanoidIfStillInGame=function(humanoid)
|
||||||
local tag=humanoid:findFirstChild"creator"
|
local tag=humanoid:findFirstChild"creator"
|
||||||
if tag then
|
if tag and tag.Value.Parent then
|
||||||
local killer=tag.Value
|
return tag.Value
|
||||||
if killer.Parent then
|
|
||||||
return killer
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local onDied
|
local onDied
|
||||||
|
|
|
||||||
|
|
@ -2,4 +2,3 @@ std = "mercury"
|
||||||
|
|
||||||
[lints]
|
[lints]
|
||||||
multiple_statements = "allow"
|
multiple_statements = "allow"
|
||||||
shadowing = "allow"
|
|
||||||
|
|
|
||||||
|
|
@ -313,11 +313,9 @@ getPlayerBalance = ->
|
||||||
print "Get player balance failed because", errorCode
|
print "Get player balance failed because", errorCode
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
|
|
||||||
if playerBalance == ""
|
if playerBalance == ""
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
|
|
||||||
playerBalance = getRbxUtility!.DecodeJSON playerBalance
|
playerBalance = getRbxUtility!.DecodeJSON playerBalance
|
||||||
playerBalance
|
playerBalance
|
||||||
|
|
||||||
|
|
@ -473,7 +471,7 @@ canPurchaseItem = ->
|
||||||
notRightBc = true
|
notRightBc = true
|
||||||
|
|
||||||
|
|
||||||
updatedBalance, insufficientFunds = updateAfterBalanceText(playerBalance, notRightBc)
|
updatedBalance, insufficientFunds = updateAfterBalanceText playerBalance, notRightBc
|
||||||
|
|
||||||
if notRightBc
|
if notRightBc
|
||||||
purchaseDialog.BodyFrame.AfterBalanceButton.Active = true
|
purchaseDialog.BodyFrame.AfterBalanceButton.Active = true
|
||||||
|
|
@ -609,11 +607,9 @@ getToolAssetID = (assetID) ->
|
||||||
if not newTool
|
if not newTool
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
|
|
||||||
if newTool\IsA "Tool"
|
if newTool\IsA "Tool"
|
||||||
return newTool
|
return newTool
|
||||||
|
|
||||||
|
|
||||||
toolChildren = newTool\GetChildren!
|
toolChildren = newTool\GetChildren!
|
||||||
for i = 1, #toolChildren
|
for i = 1, #toolChildren
|
||||||
if toolChildren[i]\IsA "Tool"
|
if toolChildren[i]\IsA "Tool"
|
||||||
|
|
@ -629,14 +625,14 @@ purchaseFailed = (inGamePurchasesDisabled) ->
|
||||||
name = currentProductInfo["Name"]
|
name = currentProductInfo["Name"]
|
||||||
|
|
||||||
|
|
||||||
newPurchasedFailedText = string.gsub(purchaseFailedText, "itemName", "#{name}")
|
newPurchasedFailedText = string.gsub purchaseFailedText, "itemName", "#{name}"
|
||||||
if inGamePurchasesDisabled
|
if inGamePurchasesDisabled
|
||||||
newPurchasedFailedText = string.gsub(
|
newPurchasedFailedText = string.gsub(
|
||||||
newPurchasedFailedText, "errorReason",
|
newPurchasedFailedText, "errorReason",
|
||||||
"#{errorPurchasesDisabledText}"
|
"#{errorPurchasesDisabledText}"
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
newPurchasedFailedText = string.gsub(newPurchasedFailedText, "errorReason", "#{errorPurchasesUnknownText}")
|
newPurchasedFailedText = string.gsub newPurchasedFailedText, "errorReason", "#{errorPurchasesUnknownText}"
|
||||||
|
|
||||||
|
|
||||||
purchaseDialog.BodyFrame.ItemPreview.ItemDescription.Text = newPurchasedFailedText
|
purchaseDialog.BodyFrame.ItemPreview.ItemDescription.Text = newPurchasedFailedText
|
||||||
|
|
@ -827,7 +823,6 @@ createTextObject = (name, text, type, size) ->
|
||||||
createImageButton = (name) ->
|
createImageButton = (name) ->
|
||||||
New "ImageButton", name,
|
New "ImageButton", name,
|
||||||
Size: UDim2.new 0, 153, 0, 46
|
Size: UDim2.new 0, 153, 0, 46
|
||||||
Name: name
|
|
||||||
|
|
||||||
userPurchaseProductActionsEnded = (userIsClosingDialog) ->
|
userPurchaseProductActionsEnded = (userIsClosingDialog) ->
|
||||||
checkingPlayerFunds = false
|
checkingPlayerFunds = false
|
||||||
|
|
@ -1056,21 +1051,21 @@ createPurchasePromptGui = ->
|
||||||
|
|
||||||
cutSizeInHalfRecursive = (_) ->
|
cutSizeInHalfRecursive = (_) ->
|
||||||
-- todo: change the gui size based on how much space we have
|
-- todo: change the gui size based on how much space we have
|
||||||
--[[changeSize(instance,0.5)
|
--[[changeSize instance,0.5
|
||||||
|
|
||||||
children = instance\GetChildren!
|
children = instance\GetChildren!
|
||||||
for i = 1, #children
|
for i = 1, #children
|
||||||
cutSizeInHalfRecursive(children[i])
|
cutSizeInHalfRecursive children[i]
|
||||||
end]]
|
end]]
|
||||||
|
|
||||||
|
|
||||||
doubleSizeRecursive = (_) ->
|
doubleSizeRecursive = (_) ->
|
||||||
-- todo: change the gui size based on how much space we have
|
-- todo: change the gui size based on how much space we have
|
||||||
--[[changeSize(instance,2)
|
--[[changeSize instance,2
|
||||||
|
|
||||||
children = instance\GetChildren!
|
children = instance\GetChildren!
|
||||||
for i = 1, #children
|
for i = 1, #children
|
||||||
doubleSizeRecursive(children[i])
|
doubleSizeRecursive children[i]
|
||||||
end]]
|
end]]
|
||||||
|
|
||||||
-- depending on screen size, we need to change the gui
|
-- depending on screen size, we need to change the gui
|
||||||
|
|
|
||||||
|
|
@ -125,13 +125,13 @@ createNewButton = (actionName, functionInfoTable) ->
|
||||||
|
|
||||||
if inputObject.UserInputState == Enum.UserInputState.Begin and not currentButtonTouch?
|
if inputObject.UserInputState == Enum.UserInputState.Begin and not currentButtonTouch?
|
||||||
currentButtonTouch = inputObject
|
currentButtonTouch = inputObject
|
||||||
contextButtonDown(contextButton, inputObject, actionName)
|
contextButtonDown contextButton, inputObject, actionName
|
||||||
|
|
||||||
contextButton.InputChanged\connect (inputObject) ->
|
contextButton.InputChanged\connect (inputObject) ->
|
||||||
return if oldTouches[inputObject] or
|
return if oldTouches[inputObject] or
|
||||||
currentButtonTouch ~= inputObject
|
currentButtonTouch ~= inputObject
|
||||||
|
|
||||||
contextButtonMoved(contextButton, inputObject, actionName)
|
contextButtonMoved contextButton, inputObject, actionName
|
||||||
|
|
||||||
contextButton.InputEnded\connect (inputObject) ->
|
contextButton.InputEnded\connect (inputObject) ->
|
||||||
return if oldTouches[inputObject] or
|
return if oldTouches[inputObject] or
|
||||||
|
|
@ -139,7 +139,7 @@ createNewButton = (actionName, functionInfoTable) ->
|
||||||
|
|
||||||
currentButtonTouch = nil
|
currentButtonTouch = nil
|
||||||
oldTouches[inputObject] = true
|
oldTouches[inputObject] = true
|
||||||
contextButtonUp(contextButton, inputObject, actionName)
|
contextButtonUp contextButton, inputObject, actionName
|
||||||
|
|
||||||
actionIcon = New "ImageLabel", "ActionIcon"
|
actionIcon = New "ImageLabel", "ActionIcon"
|
||||||
Position: UDim2.new 0.175, 0, 0.175, 0
|
Position: UDim2.new 0.175, 0, 0.175, 0
|
||||||
|
|
@ -169,7 +169,7 @@ createNewButton = (actionName, functionInfoTable) ->
|
||||||
contextButton
|
contextButton
|
||||||
|
|
||||||
createButton = (actionName, functionInfoTable) ->
|
createButton = (actionName, functionInfoTable) ->
|
||||||
button = createNewButton(actionName, functionInfoTable)
|
button = createNewButton actionName, functionInfoTable
|
||||||
|
|
||||||
local position
|
local position
|
||||||
for i = 1, #buttonVector do
|
for i = 1, #buttonVector do
|
||||||
|
|
|
||||||
|
|
@ -180,7 +180,7 @@ followThumbstickTouchMove = (thumbstickFrame, thumbstickOuter, touchLocation) ->
|
||||||
crossOuterToInnerWithMovement = (outerToInnerVectorCurrentUnit.x * movementVectorUnit.y) -
|
crossOuterToInnerWithMovement = (outerToInnerVectorCurrentUnit.x * movementVectorUnit.y) -
|
||||||
(outerToInnerVectorCurrentUnit.y * movementVectorUnit.x)
|
(outerToInnerVectorCurrentUnit.y * movementVectorUnit.x)
|
||||||
angle = math.atan2 crossOuterToInnerWithMovement, dotProduct outerToInnerVectorCurrentUnit, movementVectorUnit
|
angle = math.atan2 crossOuterToInnerWithMovement, dotProduct outerToInnerVectorCurrentUnit, movementVectorUnit
|
||||||
anglePercent = angle * math.min(movementVector.magnitude / outerToInnerVectorCurrent.magnitude, 1.0)
|
anglePercent = angle * math.min movementVector.magnitude / outerToInnerVectorCurrent.magnitude, 1.0
|
||||||
|
|
||||||
-- If angle is significant, rotate about the inner thumbsticks current center
|
-- If angle is significant, rotate about the inner thumbsticks current center
|
||||||
if math.abs(anglePercent) > 0.00001
|
if math.abs(anglePercent) > 0.00001
|
||||||
|
|
@ -267,7 +267,7 @@ constructThumbstick = (defaultThumbstickPos, updateFunction, stationaryThumbstic
|
||||||
thumbstickTouch = inputObject
|
thumbstickTouch = inputObject
|
||||||
table.insert thumbstickTouches, thumbstickTouch
|
table.insert thumbstickTouches, thumbstickTouch
|
||||||
|
|
||||||
thumbstickFrame.Position = transformFromCenterToTopLeft(thumbstickTouch.Position, thumbstickFrame)
|
thumbstickFrame.Position = transformFromCenterToTopLeft thumbstickTouch.Position, thumbstickFrame
|
||||||
outerThumbstick.Position = thumbstickFrame.Position
|
outerThumbstick.Position = thumbstickFrame.Position
|
||||||
|
|
||||||
userInputServiceTouchMovedCon = userInputService.TouchMoved\connect (movedInput) ->
|
userInputServiceTouchMovedCon = userInputService.TouchMoved\connect (movedInput) ->
|
||||||
|
|
@ -453,8 +453,7 @@ setupCameraControl = (parentFrame, refreshCharacterMoveFunc) ->
|
||||||
-- track pinching in new frame
|
-- track pinching in new frame
|
||||||
pinchFrame?\Destroy!
|
pinchFrame?\Destroy!
|
||||||
-- make sure we didn't track in any mud
|
-- make sure we didn't track in any mud
|
||||||
pinchFrame = New "Frame"
|
pinchFrame = New "Frame", "PinchFrame"
|
||||||
Name: "PinchFrame"
|
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
Size: UDim2.new 1, 0, 1, 0
|
Size: UDim2.new 1, 0, 1, 0
|
||||||
Parent: parentFrame
|
Parent: parentFrame
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,36 @@
|
||||||
import "macros" as { $ }
|
import "macros" as { $ }
|
||||||
$load $FILE
|
$load $FILE
|
||||||
|
|
||||||
--Include
|
-- Heliodex's basic New function (basically a simplified version of melt)
|
||||||
Create = assert(LoadLibrary "RbxUtility").Create
|
New = (className, name, props) ->
|
||||||
|
if not props? -- no name was provided
|
||||||
|
props = name
|
||||||
|
name = nil
|
||||||
|
|
||||||
|
obj = Instance.new className
|
||||||
|
obj.Name = name if name
|
||||||
|
local parent
|
||||||
|
|
||||||
|
for k, v in pairs props
|
||||||
|
if type(k) == "string" then
|
||||||
|
if k == "Parent"
|
||||||
|
parent = v
|
||||||
|
else
|
||||||
|
obj[k] = v
|
||||||
|
|
||||||
|
elseif type(k) == "number" and type(v) == "userdata"
|
||||||
|
v.Parent = obj
|
||||||
|
|
||||||
|
obj.Parent = parent
|
||||||
|
obj
|
||||||
|
--
|
||||||
|
|
||||||
-- A Few Script Globals
|
-- A Few Script Globals
|
||||||
gui = script.Parent\FindFirstChild"ControlFrame" or script.Parent
|
gui = script.Parent\FindFirstChild"ControlFrame" or script.Parent
|
||||||
|
|
||||||
-- Dev-Console Root
|
-- Dev-Console Root
|
||||||
|
|
||||||
Dev_Container = Create"Frame"
|
Dev_Container = New "Frame", "DevConsoleContainer"
|
||||||
Name: "DevConsoleContainer"
|
|
||||||
Parent: gui
|
Parent: gui
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
BackgroundTransparency: 0.9
|
BackgroundTransparency: 0.9
|
||||||
|
|
@ -18,8 +38,7 @@ Dev_Container = Create"Frame"
|
||||||
Size: UDim2.new 0.5, 20, 0.5, 20
|
Size: UDim2.new 0.5, 20, 0.5, 20
|
||||||
Visible: false
|
Visible: false
|
||||||
|
|
||||||
ToggleConsole = Create"BindableFunction"
|
ToggleConsole = New "BindableFunction", "ToggleDevConsole"
|
||||||
Name: "ToggleDevConsole"
|
|
||||||
Parent: gui
|
Parent: gui
|
||||||
|
|
||||||
devConsoleInitialized = false
|
devConsoleInitialized = false
|
||||||
|
|
@ -54,16 +73,49 @@ initializeDeveloperConsole = ->
|
||||||
|
|
||||||
--Create Dev-Console
|
--Create Dev-Console
|
||||||
|
|
||||||
Dev_Body = Create"Frame"
|
Dev_Body = New "Frame", "Body"
|
||||||
Name: "Body"
|
|
||||||
Parent: Dev_Container
|
Parent: Dev_Container
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
BackgroundTransparency: 0.5
|
BackgroundTransparency: 0.5
|
||||||
Position: UDim2.new 0, 0, 0, 21
|
Position: UDim2.new 0, 0, 0, 21
|
||||||
Size: UDim2.new 1, 0, 1, -25
|
Size: UDim2.new 1, 0, 1, -25
|
||||||
|
|
||||||
Dev_OptionsHolder = Create"Frame"
|
* New "ImageButton", "ResizeButton"
|
||||||
Name: "OptionsHolder"
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
|
BackgroundTransparency: 0.5
|
||||||
|
Position: UDim2.new 1, -20, 1, -20
|
||||||
|
Size: UDim2.new 0, 20, 0, 20
|
||||||
|
|
||||||
|
* New "ImageLabel", "ImageLabel"
|
||||||
|
BackgroundTransparency: 1
|
||||||
|
Position: UDim2.new 0, 6, 0, 6
|
||||||
|
Size: UDim2.new 0.8, 0, 0.8, 0
|
||||||
|
Rotation: 135
|
||||||
|
Image: "http://www.roblox.com/Asset?id=151205813"
|
||||||
|
|
||||||
|
* New "TextButton", "LocalConsole"
|
||||||
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
|
BackgroundTransparency: 0.6
|
||||||
|
Position: UDim2.new 0, 7, 0, 5
|
||||||
|
Size: UDim2.new 0, 90, 0, 20
|
||||||
|
Font: "SourceSansBold"
|
||||||
|
FontSize: Enum.FontSize.Size14
|
||||||
|
Text: "Local Console"
|
||||||
|
TextColor3: Color3.new 1, 1, 1
|
||||||
|
TextYAlignment: Enum.TextYAlignment.Center
|
||||||
|
|
||||||
|
* New "TextButton", "ServerConsole"
|
||||||
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
|
BackgroundTransparency: 0.8
|
||||||
|
Position: UDim2.new 0, 102, 0, 5
|
||||||
|
Size: UDim2.new 0, 90, 0, 17
|
||||||
|
Font: "SourceSansBold"
|
||||||
|
FontSize: Enum.FontSize.Size14
|
||||||
|
Text: "Server Console"
|
||||||
|
TextColor3: Color3.new 1, 1, 1
|
||||||
|
TextYAlignment: Enum.TextYAlignment.Center
|
||||||
|
|
||||||
|
Dev_OptionsHolder = New "Frame", "OptionsHolder"
|
||||||
Parent: Dev_Body
|
Parent: Dev_Body
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
|
|
@ -71,139 +123,113 @@ initializeDeveloperConsole = ->
|
||||||
Size: UDim2.new 1, -255, 0, 24
|
Size: UDim2.new 1, -255, 0, 24
|
||||||
ClipsDescendants: true
|
ClipsDescendants: true
|
||||||
|
|
||||||
Dev_OptionsBar = Create"Frame"
|
Dev_OptionsBar = New "Frame", "OptionsBar"
|
||||||
Name: "OptionsBar"
|
|
||||||
Parent: Dev_OptionsHolder
|
Parent: Dev_OptionsHolder
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
Position: UDim2.new 0, -250, 0, 4
|
Position: UDim2.new 0, -250, 0, 4
|
||||||
Size: UDim2.new 0, 234, 0, 18
|
Size: UDim2.new 0, 234, 0, 18
|
||||||
|
|
||||||
Dev_ErrorToggleFilter = Create"TextButton"
|
* New "TextButton", "ErrorToggleButton"
|
||||||
Name: "ErrorToggleButton"
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
Parent: Dev_OptionsBar
|
BorderColor3: Color3.new 1, 0, 0
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
Position: UDim2.new 0, 115, 0, 0
|
||||||
BorderColor3: Color3.new 1, 0, 0
|
Size: UDim2.new 0, 18, 0, 18
|
||||||
Position: UDim2.new 0, 115, 0, 0
|
Font: "SourceSansBold"
|
||||||
Size: UDim2.new 0, 18, 0, 18
|
FontSize: Enum.FontSize.Size14
|
||||||
Font: "SourceSansBold"
|
Text: ""
|
||||||
FontSize: Enum.FontSize.Size14
|
TextColor3: Color3.new 1, 0, 0
|
||||||
Text: ""
|
|
||||||
TextColor3: Color3.new 1, 0, 0
|
|
||||||
|
|
||||||
Create"Frame"
|
* New "Frame", "CheckFrame"
|
||||||
Name: "CheckFrame"
|
BackgroundColor3: Color3.new 1, 0, 0
|
||||||
Parent: Dev_ErrorToggleFilter
|
BorderColor3: Color3.new 1, 0, 0
|
||||||
BackgroundColor3: Color3.new 1, 0, 0
|
Position: UDim2.new 0, 4, 0, 4
|
||||||
BorderColor3: Color3.new 1, 0, 0
|
Size: UDim2.new 0, 10, 0, 10
|
||||||
Position: UDim2.new 0, 4, 0, 4
|
|
||||||
Size: UDim2.new 0, 10, 0, 10
|
|
||||||
|
|
||||||
Dev_InfoToggleFilter = Create"TextButton"
|
* New "TextButton", "InfoToggleButton"
|
||||||
Name: "InfoToggleButton"
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
Parent: Dev_OptionsBar
|
BorderColor3: Color3.new 0.4, 0.5, 1.0
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
Position: UDim2.new 0, 65, 0, 0
|
||||||
BorderColor3: Color3.new 0.4, 0.5, 1.0
|
Size: UDim2.new 0, 18, 0, 18
|
||||||
Position: UDim2.new 0, 65, 0, 0
|
Font: "SourceSansBold"
|
||||||
Size: UDim2.new 0, 18, 0, 18
|
FontSize: Enum.FontSize.Size14
|
||||||
Font: "SourceSansBold"
|
Text: ""
|
||||||
FontSize: Enum.FontSize.Size14
|
TextColor3: Color3.new 0.4, 0.5, 1.0
|
||||||
Text: ""
|
|
||||||
TextColor3: Color3.new 0.4, 0.5, 1.0
|
|
||||||
|
|
||||||
Create"Frame"
|
* New "Frame", "CheckFrame"
|
||||||
Name: "CheckFrame"
|
BackgroundColor3: Color3.new 0.4, 0.5, 1.0
|
||||||
Parent: Dev_InfoToggleFilter
|
BorderColor3: Color3.new 0.4, 0.5, 1.0
|
||||||
BackgroundColor3: Color3.new 0.4, 0.5, 1.0
|
Position: UDim2.new 0, 4, 0, 4
|
||||||
BorderColor3: Color3.new 0.4, 0.5, 1.0
|
Size: UDim2.new 0, 10, 0, 10
|
||||||
Position: UDim2.new 0, 4, 0, 4
|
|
||||||
Size: UDim2.new 0, 10, 0, 10
|
|
||||||
|
|
||||||
Dev_OutputToggleFilter = Create"TextButton"
|
* New "TextButton", "OutputToggleButton"
|
||||||
Name: "OutputToggleButton"
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
Parent: Dev_OptionsBar
|
BorderColor3: Color3.new 1, 1, 1.0
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
Position: UDim2.new 0, 40, 0, 0
|
||||||
BorderColor3: Color3.new 1, 1, 1.0
|
Size: UDim2.new 0, 18, 0, 18
|
||||||
Position: UDim2.new 0, 40, 0, 0
|
Font: "SourceSansBold"
|
||||||
Size: UDim2.new 0, 18, 0, 18
|
FontSize: Enum.FontSize.Size14
|
||||||
Font: "SourceSansBold"
|
Text: ""
|
||||||
FontSize: Enum.FontSize.Size14
|
TextColor3: Color3.new 1, 1, 1.0
|
||||||
Text: ""
|
|
||||||
TextColor3: Color3.new 1, 1, 1.0
|
|
||||||
|
|
||||||
Create"Frame"
|
* New "Frame", "CheckFrame"
|
||||||
Name: "CheckFrame"
|
BackgroundColor3: Color3.new 1, 1, 1.0
|
||||||
Parent: Dev_OutputToggleFilter
|
BorderColor3: Color3.new 1, 1, 1.0
|
||||||
BackgroundColor3: Color3.new 1, 1, 1.0
|
Position: UDim2.new 0, 4, 0, 4
|
||||||
BorderColor3: Color3.new 1, 1, 1.0
|
Size: UDim2.new 0, 10, 0, 10
|
||||||
Position: UDim2.new 0, 4, 0, 4
|
|
||||||
Size: UDim2.new 0, 10, 0, 10
|
|
||||||
|
|
||||||
Dev_WarningToggleFilter = Create"TextButton"
|
* New "TextButton", "WarningToggleButton"
|
||||||
Name: "WarningToggleButton"
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
Parent: Dev_OptionsBar
|
BorderColor3: Color3.new 1, 0.6, 0.4
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
Position: UDim2.new 0, 90, 0, 0
|
||||||
BorderColor3: Color3.new 1, 0.6, 0.4
|
Size: UDim2.new 0, 18, 0, 18
|
||||||
Position: UDim2.new 0, 90, 0, 0
|
Font: "SourceSansBold"
|
||||||
Size: UDim2.new 0, 18, 0, 18
|
FontSize: Enum.FontSize.Size14
|
||||||
Font: "SourceSansBold"
|
Text: ""
|
||||||
FontSize: Enum.FontSize.Size14
|
TextColor3: Color3.new 1, 0.6, 0.4
|
||||||
Text: ""
|
|
||||||
TextColor3: Color3.new 1, 0.6, 0.4
|
|
||||||
|
|
||||||
Create"Frame"
|
* New "Frame", "CheckFrame"
|
||||||
Name: "CheckFrame"
|
BackgroundColor3: Color3.new 1, 0.6, 0.4
|
||||||
Parent: Dev_WarningToggleFilter
|
BorderColor3: Color3.new 1, 0.6, 0.4
|
||||||
BackgroundColor3: Color3.new 1, 0.6, 0.4
|
Position: UDim2.new 0, 4, 0, 4
|
||||||
BorderColor3: Color3.new 1, 0.6, 0.4
|
Size: UDim2.new 0, 10, 0, 10
|
||||||
Position: UDim2.new 0, 4, 0, 4
|
|
||||||
Size: UDim2.new 0, 10, 0, 10
|
|
||||||
|
|
||||||
Dev_WordWrapToggle = Create"TextButton"
|
* New "TextButton", "WordWrapToggleButton"
|
||||||
Name: "WordWrapToggleButton"
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
Parent: Dev_OptionsBar
|
BorderColor3: Color3.new 0.8, 0.8, 0.8
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
Position: UDim2.new 0, 215, 0, 0
|
||||||
BorderColor3: Color3.new 0.8, 0.8, 0.8
|
Size: UDim2.new 0, 18, 0, 18
|
||||||
Position: UDim2.new 0, 215, 0, 0
|
Font: "SourceSansBold"
|
||||||
Size: UDim2.new 0, 18, 0, 18
|
FontSize: Enum.FontSize.Size14
|
||||||
Font: "SourceSansBold"
|
Text: ""
|
||||||
FontSize: Enum.FontSize.Size14
|
TextColor3: Color3.new 0.8, 0.8, 0.8
|
||||||
Text: ""
|
|
||||||
TextColor3: Color3.new 0.8, 0.8, 0.8
|
|
||||||
|
|
||||||
Create"Frame"
|
* New "Frame", "CheckFrame"
|
||||||
Name: "CheckFrame"
|
BackgroundColor3: Color3.new 0.8, 0.8, 0.8
|
||||||
Parent: Dev_WordWrapToggle
|
BorderColor3: Color3.new 0.8, 0.8, 0.8
|
||||||
BackgroundColor3: Color3.new 0.8, 0.8, 0.8
|
Position: UDim2.new 0, 4, 0, 4
|
||||||
BorderColor3: Color3.new 0.8, 0.8, 0.8
|
Size: UDim2.new 0, 10, 0, 10
|
||||||
Position: UDim2.new 0, 4, 0, 4
|
Visible: false
|
||||||
Size: UDim2.new 0, 10, 0, 10
|
|
||||||
Visible: false
|
|
||||||
|
|
||||||
Create"TextLabel"
|
* New "TextLabel", "Filter"
|
||||||
Name: "Filter"
|
BackgroundTransparency: 1
|
||||||
Parent: Dev_OptionsBar
|
Position: UDim2.new 0, 0, 0, 0
|
||||||
BackgroundTransparency: 1
|
Size: UDim2.new 0, 40, 0, 18
|
||||||
Position: UDim2.new 0, 0, 0, 0
|
Font: "SourceSansBold"
|
||||||
Size: UDim2.new 0, 40, 0, 18
|
FontSize: Enum.FontSize.Size14
|
||||||
Font: "SourceSansBold"
|
Text: "Filter"
|
||||||
FontSize: Enum.FontSize.Size14
|
TextColor3: Color3.new 1, 1, 1
|
||||||
Text: "Filter"
|
|
||||||
TextColor3: Color3.new 1, 1, 1
|
|
||||||
|
|
||||||
Create"TextLabel"
|
* New "TextLabel", "WordWrap"
|
||||||
Name: "WordWrap"
|
BackgroundTransparency: 1
|
||||||
Parent: Dev_OptionsBar
|
Position: UDim2.new 0, 150, 0, 0
|
||||||
BackgroundTransparency: 1
|
Size: UDim2.new 0, 50, 0, 18
|
||||||
Position: UDim2.new 0, 150, 0, 0
|
Font: "SourceSansBold"
|
||||||
Size: UDim2.new 0, 50, 0, 18
|
FontSize: Enum.FontSize.Size14
|
||||||
Font: "SourceSansBold"
|
Text: "Word Wrap"
|
||||||
FontSize: Enum.FontSize.Size14
|
TextColor3: Color3.new 1, 1, 1,
|
||||||
Text: "Word Wrap"
|
|
||||||
TextColor3: Color3.new 1, 1, 1,
|
|
||||||
|
|
||||||
Dev_ScrollBar = Create"Frame"
|
Dev_ScrollBar = New "Frame", "ScrollBar"
|
||||||
Name: "ScrollBar"
|
|
||||||
Parent: Dev_Body
|
Parent: Dev_Body
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
BackgroundTransparency: 0.9
|
BackgroundTransparency: 0.9
|
||||||
|
|
@ -211,65 +237,52 @@ initializeDeveloperConsole = ->
|
||||||
Size: UDim2.new 0, 20, 1, -50
|
Size: UDim2.new 0, 20, 1, -50
|
||||||
Visible: false
|
Visible: false
|
||||||
|
|
||||||
Dev_ScrollArea = Create"Frame"
|
* New "ImageButton", "Down"
|
||||||
Name: "ScrollArea"
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
|
BackgroundTransparency: 0.5
|
||||||
|
Position: UDim2.new 0, 0, 1, -20
|
||||||
|
Size: UDim2.new 0, 20, 0, 20
|
||||||
|
|
||||||
|
* New "ImageLabel", "ImageLabel"
|
||||||
|
BackgroundTransparency: 1
|
||||||
|
Position: UDim2.new 0, 3, 0, 3
|
||||||
|
Size: UDim2.new 0, 14, 0, 14
|
||||||
|
Rotation: 180
|
||||||
|
Image: "http://www.roblox.com/Asset?id=151205813"
|
||||||
|
|
||||||
|
* New "ImageButton", "Up"
|
||||||
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
|
BackgroundTransparency: 0.5
|
||||||
|
Position: UDim2.new 0, 0, 0, 0
|
||||||
|
Size: UDim2.new 0, 20, 0, 20
|
||||||
|
|
||||||
|
* New "ImageLabel", "ImageLabel"
|
||||||
|
BackgroundTransparency: 1
|
||||||
|
Position: UDim2.new 0, 3, 0, 3
|
||||||
|
Size: UDim2.new 0, 14, 0, 14
|
||||||
|
Image: "http://www.roblox.com/Asset?id=151205813"
|
||||||
|
|
||||||
|
Dev_ScrollArea = New "Frame", "ScrollArea"
|
||||||
Parent: Dev_ScrollBar
|
Parent: Dev_ScrollBar
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
Position: UDim2.new 0, 0, 0, 23
|
Position: UDim2.new 0, 0, 0, 23
|
||||||
Size: UDim2.new 1, 0, 1, -46
|
Size: UDim2.new 1, 0, 1, -46
|
||||||
|
|
||||||
Dev_Handle = Create"ImageButton"
|
* New "ImageButton", "Handle"
|
||||||
Name: "Handle"
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
Parent: Dev_ScrollArea
|
BackgroundTransparency: 0.5
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
Position: UDim2.new 0, 0, 0.2, 0
|
||||||
BackgroundTransparency: 0.5
|
Size: UDim2.new 0, 20, 0, 40
|
||||||
Position: UDim2.new 0, 0, 0.2, 0
|
|
||||||
Size: UDim2.new 0, 20, 0, 40
|
|
||||||
|
|
||||||
Create"ImageLabel"
|
* New "ImageLabel", "ImageLabel"
|
||||||
Name: "ImageLabel"
|
BackgroundTransparency: 1
|
||||||
Parent: Dev_Handle
|
Position: UDim2.new 0, 0, 0.5, -8
|
||||||
BackgroundTransparency: 1
|
Rotation: 180
|
||||||
Position: UDim2.new 0, 0, 0.5, -8
|
Size: UDim2.new 1, 0, 0, 16
|
||||||
Rotation: 180
|
Image: "http://www.roblox.com/Asset?id=151205881"
|
||||||
Size: UDim2.new 1, 0, 0, 16
|
|
||||||
Image: "http://www.roblox.com/Asset?id=151205881"
|
|
||||||
|
|
||||||
Dev_DownButton = Create"ImageButton"
|
|
||||||
Name: "Down"
|
|
||||||
Parent: Dev_ScrollBar
|
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
|
||||||
BackgroundTransparency: 0.5
|
|
||||||
Position: UDim2.new 0, 0, 1, -20
|
|
||||||
Size: UDim2.new 0, 20, 0, 20
|
|
||||||
|
|
||||||
Create"ImageLabel"
|
Dev_TextBox = New "Frame", "TextBox"
|
||||||
Name: "ImageLabel"
|
|
||||||
Parent: Dev_DownButton
|
|
||||||
BackgroundTransparency: 1
|
|
||||||
Position: UDim2.new 0, 3, 0, 3
|
|
||||||
Size: UDim2.new 0, 14, 0, 14
|
|
||||||
Rotation: 180
|
|
||||||
Image: "http://www.roblox.com/Asset?id=151205813"
|
|
||||||
|
|
||||||
Dev_UpButton = Create"ImageButton"
|
|
||||||
Name: "Up"
|
|
||||||
Parent: Dev_ScrollBar
|
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
|
||||||
BackgroundTransparency: 0.5
|
|
||||||
Position: UDim2.new 0, 0, 0, 0
|
|
||||||
Size: UDim2.new 0, 20, 0, 20
|
|
||||||
|
|
||||||
Create"ImageLabel"
|
|
||||||
Name: "ImageLabel"
|
|
||||||
Parent: Dev_UpButton
|
|
||||||
BackgroundTransparency: 1
|
|
||||||
Position: UDim2.new 0, 3, 0, 3
|
|
||||||
Size: UDim2.new 0, 14, 0, 14
|
|
||||||
Image: "http://www.roblox.com/Asset?id=151205813"
|
|
||||||
|
|
||||||
Dev_TextBox = Create"Frame"
|
|
||||||
Name: "TextBox"
|
|
||||||
Parent: Dev_Body
|
Parent: Dev_Body
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
BackgroundTransparency: 0.6
|
BackgroundTransparency: 0.6
|
||||||
|
|
@ -277,118 +290,63 @@ initializeDeveloperConsole = ->
|
||||||
Size: UDim2.new 1, -4, 1, -28
|
Size: UDim2.new 1, -4, 1, -28
|
||||||
ClipsDescendants: true
|
ClipsDescendants: true
|
||||||
|
|
||||||
Dev_TextHolder = Create"Frame"
|
Dev_TextHolder = New "Frame", "TextHolder"
|
||||||
Name: "TextHolder"
|
|
||||||
Parent: Dev_TextBox
|
Parent: Dev_TextBox
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
Position: UDim2.new 0, 0, 0, 0
|
Position: UDim2.new 0, 0, 0, 0
|
||||||
Size: UDim2.new 1, 0, 1, 0
|
Size: UDim2.new 1, 0, 1, 0
|
||||||
|
|
||||||
Dev_OptionsButton = Create"ImageButton"
|
Dev_OptionsButton = New "ImageButton", "OptionsButton"
|
||||||
Name: "OptionsButton"
|
|
||||||
Parent: Dev_Body
|
Parent: Dev_Body
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
Position: UDim2.new 0, 200, 0, 2
|
Position: UDim2.new 0, 200, 0, 2
|
||||||
Size: UDim2.new 0, 20, 0, 20
|
Size: UDim2.new 0, 20, 0, 20
|
||||||
|
|
||||||
Create"ImageLabel"
|
* New "ImageLabel", "ImageLabel"
|
||||||
Name: "ImageLabel"
|
BackgroundTransparency: 1
|
||||||
Parent: Dev_OptionsButton
|
Position: UDim2.new 0, 0, 0, 0
|
||||||
BackgroundTransparency: 1
|
Size: UDim2.new 1, 0, 1, 0
|
||||||
Position: UDim2.new 0, 0, 0, 0
|
Rotation: 0
|
||||||
Size: UDim2.new 1, 0, 1, 0
|
Image: "http://www.roblox.com/Asset?id=152093917"
|
||||||
Rotation: 0
|
|
||||||
Image: "http://www.roblox.com/Asset?id=152093917"
|
|
||||||
|
|
||||||
Dev_ResizeButton = Create"ImageButton"
|
Dev_TitleBar = New "Frame", "TitleBar"
|
||||||
Name: "ResizeButton"
|
|
||||||
Parent: Dev_Body
|
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
|
||||||
BackgroundTransparency: 0.5
|
|
||||||
Position: UDim2.new 1, -20, 1, -20
|
|
||||||
Size: UDim2.new 0, 20, 0, 20
|
|
||||||
|
|
||||||
Create"ImageLabel"
|
|
||||||
Name: "ImageLabel"
|
|
||||||
Parent: Dev_ResizeButton
|
|
||||||
BackgroundTransparency: 1
|
|
||||||
Position: UDim2.new 0, 6, 0, 6
|
|
||||||
Size: UDim2.new 0.8, 0, 0.8, 0
|
|
||||||
Rotation: 135
|
|
||||||
Image: "http://www.roblox.com/Asset?id=151205813"
|
|
||||||
|
|
||||||
Create"TextButton"
|
|
||||||
Name: "LocalConsole"
|
|
||||||
Parent: Dev_Body
|
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
|
||||||
BackgroundTransparency: 0.6
|
|
||||||
Position: UDim2.new 0, 7, 0, 5
|
|
||||||
Size: UDim2.new 0, 90, 0, 20
|
|
||||||
Font: "SourceSansBold"
|
|
||||||
FontSize: Enum.FontSize.Size14
|
|
||||||
Text: "Local Console"
|
|
||||||
TextColor3: Color3.new 1, 1, 1
|
|
||||||
TextYAlignment: Enum.TextYAlignment.Center
|
|
||||||
|
|
||||||
Create"TextButton"
|
|
||||||
Name: "ServerConsole"
|
|
||||||
Parent: Dev_Body
|
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
|
||||||
BackgroundTransparency: 0.8
|
|
||||||
Position: UDim2.new 0, 102, 0, 5
|
|
||||||
Size: UDim2.new 0, 90, 0, 17
|
|
||||||
Font: "SourceSansBold"
|
|
||||||
FontSize: Enum.FontSize.Size14
|
|
||||||
Text: "Server Console"
|
|
||||||
TextColor3: Color3.new 1, 1, 1
|
|
||||||
TextYAlignment: Enum.TextYAlignment.Center
|
|
||||||
|
|
||||||
Dev_TitleBar = Create"Frame"
|
|
||||||
Name: "TitleBar"
|
|
||||||
Parent: Dev_Container
|
Parent: Dev_Container
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
BackgroundTransparency: 0.5
|
BackgroundTransparency: 0.5
|
||||||
Position: UDim2.new 0, 0, 0, 0
|
Position: UDim2.new 0, 0, 0, 0
|
||||||
Size: UDim2.new 1, 0, 0, 20
|
Size: UDim2.new 1, 0, 0, 20
|
||||||
|
|
||||||
Dev_CloseButton = Create"ImageButton"
|
* New "ImageButton", "CloseButton"
|
||||||
Name: "CloseButton"
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
Parent: Dev_TitleBar
|
BackgroundTransparency: 0.5
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
Position: UDim2.new 1, -20, 0, 0
|
||||||
BackgroundTransparency: 0.5
|
Size: UDim2.new 0, 20, 0, 20
|
||||||
Position: UDim2.new 1, -20, 0, 0
|
|
||||||
Size: UDim2.new 0, 20, 0, 20
|
|
||||||
|
|
||||||
Create"ImageLabel"
|
* New "ImageLabel"
|
||||||
Parent: Dev_CloseButton
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
BackgroundTransparency: 1
|
||||||
BackgroundTransparency: 1
|
Position: UDim2.new 0, 3, 0, 3
|
||||||
Position: UDim2.new 0, 3, 0, 3
|
Size: UDim2.new 0, 14, 0, 14
|
||||||
Size: UDim2.new 0, 14, 0, 14
|
Image: "http://www.roblox.com/Asset?id=151205852"
|
||||||
Image: "http://www.roblox.com/Asset?id=151205852"
|
|
||||||
|
|
||||||
Create"TextButton"
|
* New "TextButton", "TextButton"
|
||||||
Name: "TextButton"
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
Parent: Dev_TitleBar
|
BackgroundTransparency: 0.5
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
Position: UDim2.new 0, 0, 0, 0
|
||||||
BackgroundTransparency: 0.5
|
Size: UDim2.new 1, -23, 1, 0
|
||||||
Position: UDim2.new 0, 0, 0, 0
|
Text: ""
|
||||||
Size: UDim2.new 1, -23, 1, 0
|
|
||||||
Text: ""
|
|
||||||
|
|
||||||
Create"TextLabel"
|
* New "TextLabel", "TitleText"
|
||||||
Name: "TitleText"
|
BackgroundTransparency: 1
|
||||||
Parent: Dev_TitleBar
|
Position: UDim2.new 0, 0, 0, 0
|
||||||
BackgroundTransparency: 1
|
Size: UDim2.new 0, 185, 0, 20
|
||||||
Position: UDim2.new 0, 0, 0, 0
|
Font: "SourceSansBold"
|
||||||
Size: UDim2.new 0, 185, 0, 20
|
FontSize: Enum.FontSize.Size18
|
||||||
Font: "SourceSansBold"
|
-- Text: "Server Console"
|
||||||
FontSize: Enum.FontSize.Size18
|
TextColor3: Color3.new 1, 1, 1
|
||||||
-- Text: "Server Console"
|
Text: "Roblox Developer Console"
|
||||||
TextColor3: Color3.new 1, 1, 1
|
TextYAlignment: Enum.TextYAlignment.Top
|
||||||
Text: "Roblox Developer Console"
|
|
||||||
TextYAlignment: Enum.TextYAlignment.Top
|
|
||||||
|
|
||||||
---Saved Mouse Information
|
---Saved Mouse Information
|
||||||
local previousMousePos
|
local previousMousePos
|
||||||
|
|
@ -570,8 +528,7 @@ initializeDeveloperConsole = ->
|
||||||
movePosition = false
|
movePosition = false
|
||||||
|
|
||||||
if i > #childMessages
|
if i > #childMessages
|
||||||
message = Create"TextLabel"
|
message = New "TextLabel", "Message"
|
||||||
Name: "Message"
|
|
||||||
Parent: Dev_TextHolder
|
Parent: Dev_TextHolder
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
TextXAlignment: "Left"
|
TextXAlignment: "Left"
|
||||||
|
|
@ -724,7 +681,7 @@ initializeDeveloperConsole = ->
|
||||||
num
|
num
|
||||||
|
|
||||||
|
|
||||||
str = "%s:%s:%s"
|
timestr = "%s:%s:%s"
|
||||||
|
|
||||||
ConvertTimeStamp = (timeStamp) ->
|
ConvertTimeStamp = (timeStamp) ->
|
||||||
localTime = timeStamp - os.time! + math.floor tick!
|
localTime = timeStamp - os.time! + math.floor tick!
|
||||||
|
|
@ -741,7 +698,7 @@ initializeDeveloperConsole = ->
|
||||||
m = numberWithZero minute
|
m = numberWithZero minute
|
||||||
s = numberWithZero dayTime
|
s = numberWithZero dayTime
|
||||||
|
|
||||||
str\format h, m, s
|
timestr\format h, m, s
|
||||||
|
|
||||||
|
|
||||||
--Filter
|
--Filter
|
||||||
|
|
|
||||||
|
|
@ -45,11 +45,11 @@ Torso = waitForChild Figure, "Torso"
|
||||||
|
|
||||||
config = Figure\FindFirstChild "PlayerStats"
|
config = Figure\FindFirstChild "PlayerStats"
|
||||||
|
|
||||||
inCharTag = Instance.new "BoolValue"
|
inCharTag = New "BoolValue"
|
||||||
inCharTag.Name = "InCharTag"
|
Name: "InCharTag"
|
||||||
|
|
||||||
hider = Instance.new "BoolValue"
|
hider = New "BoolValue"
|
||||||
hider.Name = "RobloxBuildTool"
|
Name: "RobloxBuildTool"
|
||||||
|
|
||||||
if not config?
|
if not config?
|
||||||
config = New "Configuration", "PlayerStats"
|
config = New "Configuration", "PlayerStats"
|
||||||
|
|
@ -87,25 +87,25 @@ if not dotGui?
|
||||||
print "newHealth declarations finished"
|
print "newHealth declarations finished"
|
||||||
|
|
||||||
billboardHealthChange = (dmg) ->
|
billboardHealthChange = (dmg) ->
|
||||||
textLabel = New "TextLabel"
|
with New "TextLabel",
|
||||||
Text: tostring dmg
|
Text: "#{dmg}"
|
||||||
TextColor3: if dmg > 0
|
TextColor3: Color3.new if dmg > 0
|
||||||
Color3.new 0, 1, 0
|
0, 1, 0
|
||||||
else
|
else
|
||||||
Color3.new 1, 0, 1
|
1, 0, 1
|
||||||
size: UDim2.new 1, 0, 1, 0.0
|
size: UDim2.new 1, 0, 1, 0.0
|
||||||
Active: true
|
Active: true
|
||||||
FontSize: 6
|
FontSize: 6
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
Parent: dotGui
|
Parent: dotGui
|
||||||
|
|
||||||
for t = 1, 10
|
for t = 1, 10
|
||||||
wait 0.1
|
wait 0.1
|
||||||
textLabel.TextTransparency = t / 10
|
.TextTransparency = t / 10
|
||||||
textLabel.Position = UDim2.new 0, 0, 0, -t * 5
|
.Position = UDim2.new 0, 0, 0, -t * 5
|
||||||
textLabel.FontSize = 6 - t * 0.6
|
.FontSize = 6 - t * 0.6
|
||||||
|
|
||||||
textLabel\remove!
|
\remove!
|
||||||
|
|
||||||
setMaxHealth = ->
|
setMaxHealth = ->
|
||||||
--print Humanoid.Health
|
--print Humanoid.Health
|
||||||
|
|
|
||||||
|
|
@ -194,10 +194,10 @@ endDialog = ->
|
||||||
dialog = currentConversationDialog
|
dialog = currentConversationDialog
|
||||||
currentConversationDialog = nil
|
currentConversationDialog = nil
|
||||||
if dialog and dialog.InUse
|
if dialog and dialog.InUse
|
||||||
reenableScript = reenableDialogScript\Clone!
|
with reenableDialogScript\Clone!
|
||||||
reenableScript.archivable = false
|
.archivable = false
|
||||||
reenableScript.Disabled = false
|
.Disabled = false
|
||||||
reenableScript.Parent = dialog
|
.Parent = dialog
|
||||||
|
|
||||||
for dialog, gui in pairs dialogMap
|
for dialog, gui in pairs dialogMap
|
||||||
if dialog and gui
|
if dialog and gui
|
||||||
|
|
@ -288,7 +288,7 @@ selectChoice = (choice) ->
|
||||||
--First hide the Gui
|
--First hide the Gui
|
||||||
mainFrame.Visible = false
|
mainFrame.Visible = false
|
||||||
if choice == lastChoice
|
if choice == lastChoice
|
||||||
game.Chat\Chat game.Players.LocalPlayer.Character, "Goodbye!", getChatColor(currentTone!)
|
game.Chat\Chat game.Players.LocalPlayer.Character, "Goodbye!", getChatColor currentTone!
|
||||||
|
|
||||||
normalEndDialog!
|
normalEndDialog!
|
||||||
else
|
else
|
||||||
|
|
|
||||||
163
yue/45284430.yue
163
yue/45284430.yue
|
|
@ -332,9 +332,7 @@ t.CreateDropDownMenu = (items, onSelect, forRoblox) ->
|
||||||
|
|
||||||
|
|
||||||
children = droppedDownMenu\GetChildren!
|
children = droppedDownMenu\GetChildren!
|
||||||
if not children
|
return if not children
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
childNum = 1
|
childNum = 1
|
||||||
for _, obj in ipairs children
|
for _, obj in ipairs children
|
||||||
|
|
@ -405,16 +403,14 @@ t.CreateDropDownMenu = (items, onSelect, forRoblox) ->
|
||||||
scrollBarPosition += 1
|
scrollBarPosition += 1
|
||||||
updateScroll!
|
updateScroll!
|
||||||
return true
|
return true
|
||||||
|
false
|
||||||
return false
|
|
||||||
|
|
||||||
scrollUp = ->
|
scrollUp = ->
|
||||||
if scrollBarPosition > 1
|
if scrollBarPosition > 1
|
||||||
scrollBarPosition -= 1
|
scrollBarPosition -= 1
|
||||||
updateScroll!
|
updateScroll!
|
||||||
return true
|
return true
|
||||||
|
false
|
||||||
return false
|
|
||||||
|
|
||||||
|
|
||||||
if useScrollButtons
|
if useScrollButtons
|
||||||
|
|
@ -529,8 +525,7 @@ t.CreatePropertyDropDownMenu = (instance, property, enum) ->
|
||||||
nameToItem[obj.Name] = obj
|
nameToItem[obj.Name] = obj
|
||||||
|
|
||||||
|
|
||||||
local frame
|
local frame, updateSelection
|
||||||
local updateSelection
|
|
||||||
frame, updateSelection = t.CreateDropDownMenu names, (text) ->
|
frame, updateSelection = t.CreateDropDownMenu names, (text) ->
|
||||||
instance[property] = nameToItem[text]
|
instance[property] = nameToItem[text]
|
||||||
|
|
||||||
|
|
@ -773,7 +768,7 @@ t.CreateSlider = (steps, width, position) ->
|
||||||
|
|
||||||
|
|
||||||
sliderPosition.Changed\connect (_) ->
|
sliderPosition.Changed\connect (_) ->
|
||||||
sliderPosition.Value = math.min steps, math.max(1, sliderPosition.Value)
|
sliderPosition.Value = math.min steps, math.max 1, sliderPosition.Value
|
||||||
relativePosX = (sliderPosition.Value - 1) / (steps - 1)
|
relativePosX = (sliderPosition.Value - 1) / (steps - 1)
|
||||||
slider.Position = UDim2.new relativePosX, -slider.AbsoluteSize.X / 2, slider.Position.Y.Scale, slider.Position.Y.Offset
|
slider.Position = UDim2.new relativePosX, -slider.AbsoluteSize.X / 2, slider.Position.Y.Scale, slider.Position.Y.Offset
|
||||||
|
|
||||||
|
|
@ -1015,9 +1010,7 @@ t.CreateTrueScrollingFrame = ->
|
||||||
|
|
||||||
|
|
||||||
setSliderSizeAndPosition = ->
|
setSliderSizeAndPosition = ->
|
||||||
if not highY or not lowY
|
return if not highY or not lowY
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
totalYSpan = math.abs highY - lowY
|
totalYSpan = math.abs highY - lowY
|
||||||
if totalYSpan == 0
|
if totalYSpan == 0
|
||||||
|
|
@ -1071,9 +1064,7 @@ t.CreateTrueScrollingFrame = ->
|
||||||
buttonScrollAmountPixels = 7
|
buttonScrollAmountPixels = 7
|
||||||
reentrancyGuardScrollUp = false
|
reentrancyGuardScrollUp = false
|
||||||
doScrollUp = ->
|
doScrollUp = ->
|
||||||
if reentrancyGuardScrollUp
|
return if reentrancyGuardScrollUp
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
reentrancyGuardScrollUp = true
|
reentrancyGuardScrollUp = true
|
||||||
if positionScrollBar 0, scrollbar.AbsolutePosition.Y - buttonScrollAmountPixels, 0
|
if positionScrollBar 0, scrollbar.AbsolutePosition.Y - buttonScrollAmountPixels, 0
|
||||||
|
|
@ -1084,9 +1075,7 @@ t.CreateTrueScrollingFrame = ->
|
||||||
|
|
||||||
reentrancyGuardScrollDown = false
|
reentrancyGuardScrollDown = false
|
||||||
doScrollDown = ->
|
doScrollDown = ->
|
||||||
if reentrancyGuardScrollDown
|
return if reentrancyGuardScrollDown
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
reentrancyGuardScrollDown = true
|
reentrancyGuardScrollDown = true
|
||||||
if positionScrollBar 0, scrollbar.AbsolutePosition.Y + buttonScrollAmountPixels, 0
|
if positionScrollBar 0, scrollbar.AbsolutePosition.Y + buttonScrollAmountPixels, 0
|
||||||
|
|
@ -1171,9 +1160,7 @@ t.CreateTrueScrollingFrame = ->
|
||||||
|
|
||||||
reentrancyGuardMouseScroll = false
|
reentrancyGuardMouseScroll = false
|
||||||
dragCon = mouseDrag.MouseMoved\connect (x, y) ->
|
dragCon = mouseDrag.MouseMoved\connect (x, y) ->
|
||||||
if reentrancyGuardMouseScroll
|
return if reentrancyGuardMouseScroll
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
reentrancyGuardMouseScroll = true
|
reentrancyGuardMouseScroll = true
|
||||||
if positionScrollBar x, y, mouseOffset
|
if positionScrollBar x, y, mouseOffset
|
||||||
|
|
@ -1228,11 +1215,8 @@ t.CreateTrueScrollingFrame = ->
|
||||||
|
|
||||||
|
|
||||||
descendantChanged = (this, prop) ->
|
descendantChanged = (this, prop) ->
|
||||||
if internalChange
|
return if internalChange
|
||||||
return
|
return if not this.Visible
|
||||||
|
|
||||||
if not this.Visible
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
if prop == "Size" or prop == "Position"
|
if prop == "Size" or prop == "Position"
|
||||||
|
|
@ -1241,9 +1225,7 @@ t.CreateTrueScrollingFrame = ->
|
||||||
|
|
||||||
|
|
||||||
scrollingFrame.DescendantAdded\connect (instance) ->
|
scrollingFrame.DescendantAdded\connect (instance) ->
|
||||||
if not instance\IsA "GuiObject"
|
return if not instance\IsA "GuiObject"
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
if instance.Visible
|
if instance.Visible
|
||||||
wait! -- wait a heartbeat for sizes to reconfig
|
wait! -- wait a heartbeat for sizes to reconfig
|
||||||
|
|
@ -1255,8 +1237,7 @@ t.CreateTrueScrollingFrame = ->
|
||||||
|
|
||||||
|
|
||||||
scrollingFrame.DescendantRemoving\connect (instance) ->
|
scrollingFrame.DescendantRemoving\connect (instance) ->
|
||||||
if not instance\IsA "GuiObject"
|
return if not instance\IsA "GuiObject"
|
||||||
return
|
|
||||||
|
|
||||||
if descendantsChangeConMap[instance]
|
if descendantsChangeConMap[instance]
|
||||||
descendantsChangeConMap[instance]\disconnect!
|
descendantsChangeConMap[instance]\disconnect!
|
||||||
|
|
@ -1268,15 +1249,13 @@ t.CreateTrueScrollingFrame = ->
|
||||||
|
|
||||||
scrollingFrame.Changed\connect (prop) ->
|
scrollingFrame.Changed\connect (prop) ->
|
||||||
if prop == "AbsoluteSize"
|
if prop == "AbsoluteSize"
|
||||||
if not highY or not lowY
|
return if not highY or not lowY
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
highLowRecheck!
|
highLowRecheck!
|
||||||
setSliderSizeAndPosition!
|
setSliderSizeAndPosition!
|
||||||
|
|
||||||
|
|
||||||
return scrollingFrame, controlFrame
|
scrollingFrame, controlFrame
|
||||||
|
|
||||||
|
|
||||||
t.CreateScrollingFrame = (orderList, scrollStyle) ->
|
t.CreateScrollingFrame = (orderList, scrollStyle) ->
|
||||||
|
|
@ -1581,9 +1560,7 @@ t.CreateScrollingFrame = (orderList, scrollStyle) ->
|
||||||
guiObjects += 1
|
guiObjects += 1
|
||||||
|
|
||||||
|
|
||||||
if not scrollDrag.Parent
|
return if not scrollDrag.Parent
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
dragSizeY = scrollDrag.Parent.AbsoluteSize.y * (1 / (guiObjects - howManyDisplayed + 1))
|
dragSizeY = scrollDrag.Parent.AbsoluteSize.y * (1 / (guiObjects - howManyDisplayed + 1))
|
||||||
if dragSizeY < 16
|
if dragSizeY < 16
|
||||||
|
|
@ -1608,9 +1585,7 @@ t.CreateScrollingFrame = (orderList, scrollStyle) ->
|
||||||
|
|
||||||
reentrancyGuard = false
|
reentrancyGuard = false
|
||||||
recalculate = ->
|
recalculate = ->
|
||||||
if reentrancyGuard
|
return if reentrancyGuard
|
||||||
return
|
|
||||||
|
|
||||||
reentrancyGuard = true
|
reentrancyGuard = true
|
||||||
wait!
|
wait!
|
||||||
local success, err
|
local success, err
|
||||||
|
|
@ -1810,8 +1785,7 @@ binaryGrow = (min, max, fits) ->
|
||||||
--Doesn't fit, shrink
|
--Doesn't fit, shrink
|
||||||
max = mid - 1
|
max = mid - 1
|
||||||
|
|
||||||
|
biggestLegal
|
||||||
return biggestLegal
|
|
||||||
|
|
||||||
|
|
||||||
binaryShrink = (min, max, fits) ->
|
binaryShrink = (min, max, fits) ->
|
||||||
|
|
@ -1831,8 +1805,7 @@ binaryShrink = (min, max, fits) ->
|
||||||
--Doesn't fit, grow
|
--Doesn't fit, grow
|
||||||
min = mid + 1
|
min = mid + 1
|
||||||
|
|
||||||
|
smallestLegal
|
||||||
return smallestLegal
|
|
||||||
|
|
||||||
|
|
||||||
getGuiOwner = (instance) ->
|
getGuiOwner = (instance) ->
|
||||||
|
|
@ -1842,30 +1815,28 @@ getGuiOwner = (instance) ->
|
||||||
|
|
||||||
instance = instance.Parent
|
instance = instance.Parent
|
||||||
|
|
||||||
return nil
|
nil
|
||||||
|
|
||||||
|
|
||||||
t.AutoTruncateTextObject = (textLabel) ->
|
t.AutoTruncateTextObject = (textLabel) ->
|
||||||
text = textLabel.Text
|
text = textLabel.Text
|
||||||
|
|
||||||
fullLabel = textLabel\Clone!
|
fullLabel = textLabel\Clone!
|
||||||
fullLabel.Name = "Full" .. textLabel.Name
|
with fullLabel
|
||||||
fullLabel.BorderSizePixel = 0
|
.Name = "Full" .. textLabel.Name
|
||||||
fullLabel.BackgroundTransparency = 0
|
.BorderSizePixel = 0
|
||||||
fullLabel.Text = text
|
.BackgroundTransparency = 0
|
||||||
fullLabel.TextXAlignment = Enum.TextXAlignment.Center
|
.Text = text
|
||||||
fullLabel.Position = UDim2.new 0, -3, 0, 0
|
.TextXAlignment = Enum.TextXAlignment.Center
|
||||||
fullLabel.Size = UDim2.new 0, 100, 1, 0
|
.Position = UDim2.new 0, -3, 0, 0
|
||||||
fullLabel.Visible = false
|
.Size = UDim2.new 0, 100, 1, 0
|
||||||
fullLabel.Parent = textLabel
|
.Visible = false
|
||||||
|
.Parent = textLabel
|
||||||
|
|
||||||
local shortText
|
local shortText, mouseEnterConnection, mouseLeaveConnection
|
||||||
local mouseEnterConnection
|
|
||||||
local mouseLeaveConnection
|
|
||||||
|
|
||||||
checkForResize = ->
|
checkForResize = ->
|
||||||
if getGuiOwner textLabel == nil
|
return if getGuiOwner(textLabel) == nil
|
||||||
return
|
|
||||||
|
|
||||||
textLabel.Text = text
|
textLabel.Text = text
|
||||||
if textLabel.TextFits
|
if textLabel.TextFits
|
||||||
|
|
@ -2602,14 +2573,14 @@ t.CreateSetPanel = (userIdsForSets, objectSelected, dialogClosed, size, position
|
||||||
ZIndex: 7
|
ZIndex: 7
|
||||||
Parent: button
|
Parent: button
|
||||||
|
|
||||||
configIcon = buttonImage\clone!
|
with buttonImage\clone!
|
||||||
configIcon.Name = "ConfigIcon"
|
.Name = "ConfigIcon"
|
||||||
configIcon.Visible = false
|
.Visible = false
|
||||||
configIcon.Position = UDim2.new 1, -23, 1, -24
|
.Position = UDim2.new 1, -23, 1, -24
|
||||||
configIcon.Size = UDim2.new 0, 16, 0, 16
|
.Size = UDim2.new 0, 16, 0, 16
|
||||||
configIcon.Image = ""
|
.Image = ""
|
||||||
configIcon.ZIndex = 6
|
.ZIndex = 6
|
||||||
configIcon.Parent = insertAssetButtonExample
|
.Parent = insertAssetButtonExample
|
||||||
|
|
||||||
insertAssetButtonExample
|
insertAssetButtonExample
|
||||||
|
|
||||||
|
|
@ -2950,12 +2921,13 @@ t.CreateSetPanel = (userIdsForSets, objectSelected, dialogClosed, size, position
|
||||||
|
|
||||||
|
|
||||||
scrollFrame, controlFrame = t.CreateTrueScrollingFrame!
|
scrollFrame, controlFrame = t.CreateTrueScrollingFrame!
|
||||||
scrollFrame.Size = UDim2.new 0.54, 0, 0.85, 0
|
with scrollFrame
|
||||||
scrollFrame.Position = UDim2.new 0.24, 0, 0.085, 0
|
.Size = UDim2.new 0.54, 0, 0.85, 0
|
||||||
scrollFrame.Name = "ItemsFrame"
|
.Position = UDim2.new 0.24, 0, 0.085, 0
|
||||||
scrollFrame.ZIndex = 6
|
.Name = "ItemsFrame"
|
||||||
scrollFrame.Parent = setGui.SetPanel
|
.ZIndex = 6
|
||||||
scrollFrame.BackgroundTransparency = 1
|
.Parent = setGui.SetPanel
|
||||||
|
.BackgroundTransparency = 1
|
||||||
|
|
||||||
drillDownSetZIndex controlFrame, 7
|
drillDownSetZIndex controlFrame, 7
|
||||||
|
|
||||||
|
|
@ -3186,8 +3158,7 @@ t.CreateTerrainMaterialSelector = (size, position) ->
|
||||||
if selectedButton ~= buttonWrap
|
if selectedButton ~= buttonWrap
|
||||||
goToNewMaterial buttonWrap, "#{name}"
|
goToNewMaterial buttonWrap, "#{name}"
|
||||||
|
|
||||||
|
buttonWrap
|
||||||
return buttonWrap
|
|
||||||
|
|
||||||
|
|
||||||
for i = 1, #materialNames
|
for i = 1, #materialNames
|
||||||
|
|
@ -3202,12 +3173,8 @@ t.CreateTerrainMaterialSelector = (size, position) ->
|
||||||
|
|
||||||
|
|
||||||
forceTerrainMaterialSelection = (newMaterialType) ->
|
forceTerrainMaterialSelection = (newMaterialType) ->
|
||||||
if not newMaterialType
|
return if not newMaterialType
|
||||||
return
|
return if currentMaterial == newMaterialType
|
||||||
|
|
||||||
if currentMaterial == newMaterialType
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
matName = getNameFromEnum newMaterialType
|
matName = getNameFromEnum newMaterialType
|
||||||
buttons = scrollFrame\GetChildren!
|
buttons = scrollFrame\GetChildren!
|
||||||
|
|
@ -3534,20 +3501,22 @@ t.CreatePluginFrame = (name, size, position, scrollable, parent) ->
|
||||||
if scrollable
|
if scrollable
|
||||||
--frame for widgets
|
--frame for widgets
|
||||||
frame, control = t.CreateTrueScrollingFrame!
|
frame, control = t.CreateTrueScrollingFrame!
|
||||||
frame.Size = UDim2.new 1, 0, 1, 0
|
with frame
|
||||||
frame.BackgroundColor3 = Color3.new 72 / 255, 72 / 255, 72 / 255
|
.Size = UDim2.new 1, 0, 1, 0
|
||||||
frame.BorderColor3 = Color3.new 0, 0, 0
|
.BackgroundColor3 = Color3.new 72 / 255, 72 / 255, 72 / 255
|
||||||
frame.Active = true
|
.BorderColor3 = Color3.new 0, 0, 0
|
||||||
frame.Parent = widgetContainer
|
.Active = true
|
||||||
control.Parent = dragBar
|
.Parent = widgetContainer
|
||||||
control.BackgroundColor3 = Color3.new 72 / 255, 72 / 255, 72 / 255
|
with control
|
||||||
control.BorderSizePixel = 0
|
.Parent = dragBar
|
||||||
control.BackgroundTransparency = 0
|
.BackgroundColor3 = Color3.new 72 / 255, 72 / 255, 72 / 255
|
||||||
control.Position = UDim2.new 1, -21, 1, 1
|
.BorderSizePixel = 0
|
||||||
control.Size = if size
|
.BackgroundTransparency = 0
|
||||||
UDim2.new 0, 21, size.Y.Scale, size.Y.Offset
|
.Position = UDim2.new 1, -21, 1, 1
|
||||||
else
|
.Size = UDim2.new 0, 21, if size
|
||||||
UDim2.new 0, 21, 0, 400
|
size.Y.Scale, size.Y.Offset
|
||||||
|
else
|
||||||
|
0, 400
|
||||||
|
|
||||||
control\FindFirstChild"ScrollDownButton".Position = UDim2.new 0, 0, 1, -20
|
control\FindFirstChild"ScrollDownButton".Position = UDim2.new 0, 0, 1, -20
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ resumeGameFunction = (shield) ->
|
||||||
goToMenu = (container, menuName, moveDirection, size, position) ->
|
goToMenu = (container, menuName, moveDirection, size, position) ->
|
||||||
return if type(menuName) ~= "string"
|
return if type(menuName) ~= "string"
|
||||||
|
|
||||||
table.insert(lastMenuSelection, currentMenuSelection)
|
table.insert lastMenuSelection, currentMenuSelection
|
||||||
if menuName == "GameMainMenu"
|
if menuName == "GameMainMenu"
|
||||||
lastMenuSelection = {}
|
lastMenuSelection = {}
|
||||||
|
|
||||||
|
|
@ -191,15 +191,14 @@ resetLocalCharacter = ->
|
||||||
|
|
||||||
|
|
||||||
createTextButton = (text, style, fontSize, buttonSize, buttonPosition) ->
|
createTextButton = (text, style, fontSize, buttonSize, buttonPosition) ->
|
||||||
newTextButton = Instance.new "TextButton"
|
New "TextButton"
|
||||||
newTextButton.Font = Enum.Font.Arial
|
Font: Enum.Font.Arial
|
||||||
newTextButton.FontSize = fontSize
|
FontSize: fontSize
|
||||||
newTextButton.Size = buttonSize
|
Size: buttonSize
|
||||||
newTextButton.Position = buttonPosition
|
Position: buttonPosition
|
||||||
newTextButton.Style = style
|
Style: style
|
||||||
newTextButton.TextColor3 = Color3.new 1, 1, 1
|
TextColor3: Color3.new 1, 1, 1
|
||||||
newTextButton.Text = text
|
Text: text
|
||||||
newTextButton
|
|
||||||
|
|
||||||
|
|
||||||
CreateTextButtons = (frame, buttons, yPos, ySize) ->
|
CreateTextButtons = (frame, buttons, yPos, ySize) ->
|
||||||
|
|
@ -236,7 +235,7 @@ CreateTextButtons = (frame, buttons, yPos, ySize) ->
|
||||||
buttonNum += 1
|
buttonNum += 1
|
||||||
|
|
||||||
|
|
||||||
toggleSelection(buttonObjs[1])
|
toggleSelection buttonObjs[1]
|
||||||
|
|
||||||
numButtons = buttonNum - 1
|
numButtons = buttonNum - 1
|
||||||
|
|
||||||
|
|
@ -299,7 +298,7 @@ setDisabledState = (guiObject) ->
|
||||||
guiObject.Active = false
|
guiObject.Active = false
|
||||||
else
|
else
|
||||||
if guiObject["ClassName"]
|
if guiObject["ClassName"]
|
||||||
print("setDisabledState! got object of unsupported type. object type is ", guiObject.ClassName)
|
print "setDisabledState! got object of unsupported type. object type is ", guiObject.ClassName
|
||||||
|
|
||||||
|
|
||||||
createHelpDialog = (baseZIndex) ->
|
createHelpDialog = (baseZIndex) ->
|
||||||
|
|
@ -728,8 +727,7 @@ createGameMainMenu = (baseZIndex, shield) ->
|
||||||
gameSettingsButton.Parent = gameMainMenuFrame
|
gameSettingsButton.Parent = gameMainMenuFrame
|
||||||
gameSettingsButton.MouseButton1Click\connect ->
|
gameSettingsButton.MouseButton1Click\connect ->
|
||||||
if game\FindFirstChild "Players" and game.Players["LocalPlayer"]
|
if game\FindFirstChild "Players" and game.Players["LocalPlayer"]
|
||||||
loadingGui = game.Players.LocalPlayer\FindFirstChild "PlayerLoadingGui"
|
if loadingGui = game.Players.LocalPlayer\FindFirstChild "PlayerLoadingGui"
|
||||||
if loadingGui
|
|
||||||
loadingGui.Visible = true
|
loadingGui.Visible = true
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -969,7 +967,7 @@ createGameSettingsMenu = (baseZIndex, _) ->
|
||||||
|
|
||||||
|
|
||||||
if explicitLevel == graphicsLevel.Value -- make sure we are actually in right graphics mode
|
if explicitLevel == graphicsLevel.Value -- make sure we are actually in right graphics mode
|
||||||
setGraphicsQualityLevel(graphicsLevel.Value)
|
setGraphicsQualityLevel graphicsLevel.Value
|
||||||
|
|
||||||
|
|
||||||
if not explicitLevel
|
if not explicitLevel
|
||||||
|
|
@ -1444,7 +1442,7 @@ if LoadLibrary
|
||||||
--showFunction
|
--showFunction
|
||||||
->
|
->
|
||||||
settingsButton.Active = false
|
settingsButton.Active = false
|
||||||
updateCameraDropDownSelection(UserSettings!.GameSettings.ControlMode.Name)
|
updateCameraDropDownSelection UserSettings!.GameSettings.ControlMode.Name
|
||||||
|
|
||||||
if syncVideoCaptureSetting
|
if syncVideoCaptureSetting
|
||||||
syncVideoCaptureSetting!
|
syncVideoCaptureSetting!
|
||||||
|
|
@ -1511,7 +1509,7 @@ if LoadLibrary
|
||||||
resumeGameFunction shield
|
resumeGameFunction shield
|
||||||
|
|
||||||
|
|
||||||
gameSettingsMenu = createGameSettingsMenu(baseZIndex, shield)
|
gameSettingsMenu = createGameSettingsMenu baseZIndex, shield
|
||||||
gameSettingsMenu.Visible = false
|
gameSettingsMenu.Visible = false
|
||||||
gameSettingsMenu.Parent = settingsFrame
|
gameSettingsMenu.Parent = settingsFrame
|
||||||
|
|
||||||
|
|
@ -2103,8 +2101,7 @@ if LoadLibrary
|
||||||
-- waitForChild game, "Players"
|
-- waitForChild game, "Players"
|
||||||
-- waitForProperty game.Players, "LocalPlayer"
|
-- waitForProperty game.Players, "LocalPlayer"
|
||||||
|
|
||||||
-- chatBar = New "Frame"
|
-- chatBar = New "Frame", "ChatBar"
|
||||||
-- Name: "ChatBar"
|
|
||||||
-- Size: UDim2.new 1, 0, 0, 22
|
-- Size: UDim2.new 1, 0, 0, 22
|
||||||
-- Position: UDim2.new 0, 0, 1, 0
|
-- Position: UDim2.new 0, 0, 1, 0
|
||||||
-- BackgroundColor3: Color3.new 0, 0, 0
|
-- BackgroundColor3: Color3.new 0, 0, 0
|
||||||
|
|
@ -2150,11 +2147,11 @@ if LoadLibrary
|
||||||
|
|
||||||
-- -- guiService = game\GetService "GuiService"
|
-- -- guiService = game\GetService "GuiService"
|
||||||
-- --[[newChatMode = ]]try
|
-- --[[newChatMode = ]]try
|
||||||
-- --guiService\AddSpecialKey(Enum.SpecialKey.ChatHotkey)
|
-- --guiService\AddSpecialKey Enum.SpecialKey.ChatHotkey
|
||||||
-- --guiService.SpecialKeyPressed\connect (key) -> if key == Enum.SpecialKey.ChatHotkey and hotKeyEnabled then activateChat!
|
-- --guiService.SpecialKeyPressed\connect (key) -> if key == Enum.SpecialKey.ChatHotkey and hotKeyEnabled then activateChat!
|
||||||
|
|
||||||
-- -- if not newChatMode
|
-- -- if not newChatMode
|
||||||
-- --guiService\AddKey("/")
|
-- --guiService\AddKey "/"
|
||||||
-- --guiService.KeyPressed\connect (key) -> if key == "/" and hotKeyEnabled then activateChat!
|
-- --guiService.KeyPressed\connect (key) -> if key == "/" and hotKeyEnabled then activateChat!
|
||||||
|
|
||||||
-- chatBox.FocusLost\connect (enterPressed) ->
|
-- chatBox.FocusLost\connect (enterPressed) ->
|
||||||
|
|
@ -2212,8 +2209,8 @@ if LoadLibrary
|
||||||
-- if success and luaChat
|
-- if success and luaChat
|
||||||
|
|
||||||
--[[delay 0, ->
|
--[[delay 0, ->
|
||||||
waitForChild(game, "Players")
|
waitForChild game, "Players"
|
||||||
waitForProperty(game.Players, "LocalPlayer")
|
waitForProperty game.Players, "LocalPlayer"
|
||||||
|
|
||||||
advancedChatBarSupported = game.Players.LocalPlayer.ChatMode
|
advancedChatBarSupported = game.Players.LocalPlayer.ChatMode
|
||||||
chatBar, toggleHotKey = createChatBar!
|
chatBar, toggleHotKey = createChatBar!
|
||||||
|
|
@ -2222,24 +2219,24 @@ if LoadLibrary
|
||||||
toggleChatBar = (chatMode) ->
|
toggleChatBar = (chatMode) ->
|
||||||
if chatMode == Enum.ChatMode.Menu
|
if chatMode == Enum.ChatMode.Menu
|
||||||
chatBar.Parent = nil
|
chatBar.Parent = nil
|
||||||
game.GuiService\SetGlobalSizeOffsetPixel(0,0)
|
game.GuiService\SetGlobalSizeOffsetPixel 0,0
|
||||||
toggleHotKey false
|
toggleHotKey false
|
||||||
elseif chatMode == Enum.ChatMode.TextAndMenu
|
elseif chatMode == Enum.ChatMode.TextAndMenu
|
||||||
--chatBar.Parent = gui
|
--chatBar.Parent = gui
|
||||||
--game.GuiService\SetGlobalSizeOffsetPixel(0,-22)
|
--game.GuiService\SetGlobalSizeOffsetPixel 0,-22
|
||||||
toggleHotKey true
|
toggleHotKey true
|
||||||
|
|
||||||
|
|
||||||
game.Players.LocalPlayer.Changed\connect(
|
game.Players.LocalPlayer.Changed\connect(
|
||||||
function prop
|
function prop
|
||||||
if prop == "ChatMode"
|
if prop == "ChatMode"
|
||||||
toggleChatBar(game.Players.LocalPlayer.ChatMode)
|
toggleChatBar game.Players.LocalPlayer.ChatMode
|
||||||
|
|
||||||
|
|
||||||
toggleChatBar(game.Players.LocalPlayer.ChatMode)
|
toggleChatBar game.Players.LocalPlayer.ChatMode
|
||||||
else
|
else
|
||||||
--chatBar.Parent = gui
|
--chatBar.Parent = gui
|
||||||
--game.GuiService\SetGlobalSizeOffsetPixel(0,-22)
|
--game.GuiService\SetGlobalSizeOffsetPixel 0,-22
|
||||||
]]
|
]]
|
||||||
|
|
||||||
BurningManPlaceID = 41324860
|
BurningManPlaceID = 41324860
|
||||||
|
|
|
||||||
|
|
@ -305,7 +305,7 @@ WaitForChild = (parent, child) ->
|
||||||
|
|
||||||
-- might want to move all this to an init function, wait for localplayer elsewhere
|
-- might want to move all this to an init function, wait for localplayer elsewhere
|
||||||
Players = game\GetService "Players"
|
Players = game\GetService "Players"
|
||||||
-- make sure this doesn't run on the server(it will if you dont do this)
|
-- make sure this doesn't run on the server (it will if you dont do this)
|
||||||
while not Players.LocalPlayer
|
while not Players.LocalPlayer
|
||||||
Players.Changed\wait!
|
Players.Changed\wait!
|
||||||
|
|
||||||
|
|
@ -471,14 +471,12 @@ IsMaximized = Instance.new "BoolValue"
|
||||||
IsTabified = Instance.new "BoolValue"
|
IsTabified = Instance.new "BoolValue"
|
||||||
AreNamesExpanded = Instance.new "BoolValue"
|
AreNamesExpanded = Instance.new "BoolValue"
|
||||||
|
|
||||||
MiddleTemplate = New "Frame"
|
MiddleTemplate = New "Frame", "MidTemplate"
|
||||||
Name: "MidTemplate"
|
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
Position: UDim2.new 100, 0, 0.07, 0
|
Position: UDim2.new 100, 0, 0.07, 0
|
||||||
Size: UDim2.new 0.5, 0, 0.025, 0 --UDim2.new 1, 0, .03, 0
|
Size: UDim2.new 0.5, 0, 0.025, 0 --UDim2.new 1, 0, .03, 0
|
||||||
|
|
||||||
* New "ImageLabel"
|
* New "ImageLabel", "BCLabel"
|
||||||
Name: "BCLabel"
|
|
||||||
Active: true
|
Active: true
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
Position: UDim2.new 0.005, 5, 0.20, 0
|
Position: UDim2.new 0.005, 5, 0.20, 0
|
||||||
|
|
@ -487,8 +485,7 @@ MiddleTemplate = New "Frame"
|
||||||
Image: ""
|
Image: ""
|
||||||
ZIndex: 3
|
ZIndex: 3
|
||||||
|
|
||||||
* New "ImageLabel"
|
* New "ImageLabel", "FriendLabel"
|
||||||
Name: "FriendLabel"
|
|
||||||
Active: true
|
Active: true
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
Position: UDim2.new 0.005, 5, 0.15, 0
|
Position: UDim2.new 0.005, 5, 0.15, 0
|
||||||
|
|
@ -811,8 +808,8 @@ for _, i in pairs Images
|
||||||
|
|
||||||
|
|
||||||
-- ordered array of 'score data', each entry has:
|
-- ordered array of 'score data', each entry has:
|
||||||
-- Name(String)
|
-- Name String
|
||||||
-- Priority(number)
|
-- Priority number
|
||||||
-- IsPrimary (bool, should it be shown in upper right)
|
-- IsPrimary (bool, should it be shown in upper right)
|
||||||
-- MaxLength (integer, of the length of the longest element for this column)
|
-- MaxLength (integer, of the length of the longest element for this column)
|
||||||
ScoreNames = {}
|
ScoreNames = {}
|
||||||
|
|
@ -916,7 +913,7 @@ game.Workspace.ChildAdded\connect (nchild) ->
|
||||||
-- Static Functions
|
-- Static Functions
|
||||||
-------------------------------
|
-------------------------------
|
||||||
-- GetTotalEntries = ->
|
-- GetTotalEntries = ->
|
||||||
-- return math.min(#MiddleFrameBackgrounds, DefaultEntriesOnScreen)
|
-- return math.min #MiddleFrameBackgrounds, DefaultEntriesOnScreen
|
||||||
|
|
||||||
-- GetEntryListLength = ->
|
-- GetEntryListLength = ->
|
||||||
-- numEnts = #PlayerFrames + #TeamFrames
|
-- numEnts = #PlayerFrames + #TeamFrames
|
||||||
|
|
@ -966,7 +963,7 @@ TweenProperty = (obj, propName, inita, enda, length) ->
|
||||||
--[[
|
--[[
|
||||||
UGLY UGLY HACK FUNCTION
|
UGLY UGLY HACK FUNCTION
|
||||||
replace with some sort of global input catching A.S.A. FREAKING P.
|
replace with some sort of global input catching A.S.A. FREAKING P.
|
||||||
creates a fullsize gui element to catch next mouse up event(completeing a click)
|
creates a fullsize gui element to catch next mouse up event completeing a click
|
||||||
@Args:
|
@Args:
|
||||||
frameParent Object to parent fullscreen gui to
|
frameParent Object to parent fullscreen gui to
|
||||||
polledFunction function to call on mouse moved events in this gui
|
polledFunction function to call on mouse moved events in this gui
|
||||||
|
|
@ -1273,8 +1270,8 @@ local BaseUpdate
|
||||||
property Name of stat changed
|
property Name of stat changed
|
||||||
--]]
|
--]]
|
||||||
StatChanged = (_, _) -> --playerEntry, property)
|
StatChanged = (_, _) -> --playerEntry, property)
|
||||||
-- if(playerEntry['MyTeam'])
|
-- if playerEntry['MyTeam']
|
||||||
-- UpdateSingleTeam(playerEntry['MyTeam'])
|
-- UpdateSingleTeam playerEntry['MyTeam']
|
||||||
-- else
|
-- else
|
||||||
BaseUpdate!
|
BaseUpdate!
|
||||||
-- end
|
-- end
|
||||||
|
|
@ -1367,7 +1364,7 @@ DoesStatExist = (statName, exception) ->
|
||||||
--[[
|
--[[
|
||||||
Called when stat is removed from player
|
Called when stat is removed from player
|
||||||
for all players, destroys the stat frame associated with this value,
|
for all players, destroys the stat frame associated with this value,
|
||||||
then calls statchanged(to resize frame)
|
then calls statchanged to resize frame
|
||||||
if playerEntry==localplayer, will remove from scorenames
|
if playerEntry==localplayer, will remove from scorenames
|
||||||
@Args:
|
@Args:
|
||||||
nchild ___value to be removed
|
nchild ___value to be removed
|
||||||
|
|
@ -1787,7 +1784,7 @@ UpdateMaximize = ->
|
||||||
for j = 1, #ScoreNames, 1
|
for j = 1, #ScoreNames, 1
|
||||||
scoreval = ScoreNames[j]
|
scoreval = ScoreNames[j]
|
||||||
if i\FindFirstChild(scoreval["Name"]) and scoreval["XOffset"]
|
if i\FindFirstChild(scoreval["Name"]) and scoreval["XOffset"]
|
||||||
--print('updateing stat position: ' .. scoreval['Name'])
|
-- print "updateing stat position: #{scoreval["Name"]}"
|
||||||
i[scoreval["Name"]]\TweenPosition(
|
i[scoreval["Name"]]\TweenPosition(
|
||||||
UDim2.new(RightEdgeSpace, -scoreval["XOffset"], 0, 0),
|
UDim2.new(RightEdgeSpace, -scoreval["XOffset"], 0, 0),
|
||||||
"Out",
|
"Out",
|
||||||
|
|
@ -2143,7 +2140,7 @@ AddMiddleBGFrame = ->
|
||||||
table.insert MiddleFrameBackgrounds, nBGFrame
|
table.insert MiddleFrameBackgrounds, nBGFrame
|
||||||
|
|
||||||
if #MiddleFrameBackgrounds < DefaultListSize and not DidMinimizeDrag
|
if #MiddleFrameBackgrounds < DefaultListSize and not DidMinimizeDrag
|
||||||
--print('readjusting bottom clip')
|
--print 'readjusting bottom clip'
|
||||||
DefaultBottomClipPos = -1 + #MiddleFrameBackgrounds * MiddleBGTemplate.Size.Y.Scale
|
DefaultBottomClipPos = -1 + #MiddleFrameBackgrounds * MiddleBGTemplate.Size.Y.Scale
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -2228,7 +2225,7 @@ OnPlayerEntrySelect = (entry, startx, starty) ->
|
||||||
--]]
|
--]]
|
||||||
PlayerListModeUpdate = ->
|
PlayerListModeUpdate = ->
|
||||||
RecreateScoreColumns PlayerFrames
|
RecreateScoreColumns PlayerFrames
|
||||||
table.sort(PlayerFrames, PlayerSortFunction)
|
table.sort PlayerFrames, PlayerSortFunction
|
||||||
for i, val in ipairs PlayerFrames
|
for i, val in ipairs PlayerFrames
|
||||||
MiddleFrames[i] = val["Frame"]
|
MiddleFrames[i] = val["Frame"]
|
||||||
|
|
||||||
|
|
@ -2255,7 +2252,7 @@ RemoveNeutralTeam = ->
|
||||||
index index of player in 'MyPlayers' list to remove
|
index index of player in 'MyPlayers' list to remove
|
||||||
--]]
|
--]]
|
||||||
RemovePlayerFromTeam = (teamEntry, index) ->
|
RemovePlayerFromTeam = (teamEntry, index) ->
|
||||||
table.remove(teamEntry["MyPlayers"], index)
|
table.remove teamEntry["MyPlayers"], index
|
||||||
--if teamEntry['AutoHide'] and #teamEntry['MyPlayers'] == 0
|
--if teamEntry['AutoHide'] and #teamEntry['MyPlayers'] == 0
|
||||||
if teamEntry == NeutralTeam and #teamEntry["MyPlayers"] == 0
|
if teamEntry == NeutralTeam and #teamEntry["MyPlayers"] == 0
|
||||||
RemoveNeutralTeam!
|
RemoveNeutralTeam!
|
||||||
|
|
@ -2440,7 +2437,7 @@ InsertPlayerFrame = (nplayer) ->
|
||||||
|
|
||||||
nfriendstatus = GetFriendStatus nplayer
|
nfriendstatus = GetFriendStatus nplayer
|
||||||
|
|
||||||
nFrame\FindFirstChild"BCLabel".Image = getMembershipTypeIcon(nplayer.MembershipType, nplayer.Name)
|
nFrame\FindFirstChild"BCLabel".Image = getMembershipTypeIcon nplayer.MembershipType, nplayer.Name
|
||||||
nFrame\FindFirstChild"FriendLabel".Image = getFriendStatusIcon nfriendstatus
|
nFrame\FindFirstChild"FriendLabel".Image = getFriendStatusIcon nfriendstatus
|
||||||
nFrame.Name = nplayer.Name
|
nFrame.Name = nplayer.Name
|
||||||
WaitForChild(WaitForChild(nFrame, "TitleFrame"), "Title").Text = nplayer.Name
|
WaitForChild(WaitForChild(nFrame, "TitleFrame"), "Title").Text = nplayer.Name
|
||||||
|
|
@ -2586,7 +2583,7 @@ Players.ChildRemoved\connect RemovePlayerFrame
|
||||||
UnrollTeams = (tframes, outframes) ->
|
UnrollTeams = (tframes, outframes) ->
|
||||||
numEntries = 0
|
numEntries = 0
|
||||||
if NeutralTeam and not NeutralTeam["IsHidden"]
|
if NeutralTeam and not NeutralTeam["IsHidden"]
|
||||||
for _, val in ipairs(NeutralTeam["MyPlayers"])
|
for _, val in ipairs NeutralTeam["MyPlayers"]
|
||||||
numEntries += 1
|
numEntries += 1
|
||||||
outframes[numEntries] = val["Frame"]
|
outframes[numEntries] = val["Frame"]
|
||||||
|
|
||||||
|
|
@ -2595,7 +2592,7 @@ UnrollTeams = (tframes, outframes) ->
|
||||||
|
|
||||||
for _, val in ipairs tframes
|
for _, val in ipairs tframes
|
||||||
if not val["IsHidden"]
|
if not val["IsHidden"]
|
||||||
for _, pval in ipairs(val.MyPlayers)
|
for _, pval in ipairs val.MyPlayers
|
||||||
numEntries += 1
|
numEntries += 1
|
||||||
outframes[numEntries] = pval["Frame"]
|
outframes[numEntries] = pval["Frame"]
|
||||||
|
|
||||||
|
|
@ -2631,7 +2628,7 @@ AddTeamScores = (team) ->
|
||||||
for j = 1, #ScoreNames, 1
|
for j = 1, #ScoreNames, 1
|
||||||
i = ScoreNames[j]
|
i = ScoreNames[j]
|
||||||
tscore = 0
|
tscore = 0
|
||||||
for _, j in ipairs(team["MyPlayers"])
|
for _, j in ipairs team["MyPlayers"]
|
||||||
tval = j["Player"]\FindFirstChild "leaderstats" and j["Player"].leaderstats\FindFirstChild i["Name"]
|
tval = j["Player"]\FindFirstChild "leaderstats" and j["Player"].leaderstats\FindFirstChild i["Name"]
|
||||||
if tval and not tval\IsA "StringValue"
|
if tval and not tval\IsA "StringValue"
|
||||||
tscore += GetScoreValue (j["Player"].leaderstats)[i["Name"]]
|
tscore += GetScoreValue (j["Player"].leaderstats)[i["Name"]]
|
||||||
|
|
@ -2664,7 +2661,7 @@ TeamListModeUpdate = ->
|
||||||
SortTeams TeamFrames
|
SortTeams TeamFrames
|
||||||
if NeutralTeam
|
if NeutralTeam
|
||||||
AddTeamScores NeutralTeam
|
AddTeamScores NeutralTeam
|
||||||
--RecreateScoreColumns(NeutralTeam['MyPlayers'])
|
--RecreateScoreColumns NeutralTeam['MyPlayers']
|
||||||
|
|
||||||
UnrollTeams TeamFrames, MiddleFrames
|
UnrollTeams TeamFrames, MiddleFrames
|
||||||
|
|
||||||
|
|
@ -2890,7 +2887,7 @@ BaseUpdate = ->
|
||||||
UpdateScrollPosition!
|
UpdateScrollPosition!
|
||||||
|
|
||||||
UpdateScrollBarVisibility!
|
UpdateScrollBarVisibility!
|
||||||
--debugprint('EndBaseUpdate')
|
--debugprint 'EndBaseUpdate'
|
||||||
BaseUpdateLock = false
|
BaseUpdateLock = false
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -106,8 +106,7 @@ game.Players.FriendRequestEvent\connect (fromPlayer, toPlayer, event) ->
|
||||||
)
|
)
|
||||||
elseif toPlayer == localPlayer
|
elseif toPlayer == localPlayer
|
||||||
if event == Enum.FriendRequestEvent.Issue
|
if event == Enum.FriendRequestEvent.Issue
|
||||||
if friendRequestBlacklist[fromPlayer]
|
return if friendRequestBlacklist[fromPlayer]
|
||||||
return
|
|
||||||
-- previously cancelled friend request, we don't want it!
|
-- previously cancelled friend request, we don't want it!
|
||||||
game\GetService"GuiService"\SendNotification(
|
game\GetService"GuiService"\SendNotification(
|
||||||
"Friend Request",
|
"Friend Request",
|
||||||
|
|
|
||||||
|
|
@ -99,8 +99,7 @@ if IsPhone!
|
||||||
CurrentLoadout.Position = UDim2.new 0.5, -90, 1, -85
|
CurrentLoadout.Position = UDim2.new 0.5, -90, 1, -85
|
||||||
|
|
||||||
for i = 0, NumSlots
|
for i = 0, NumSlots
|
||||||
slotFrame = New "Frame"
|
slotFrame = New "Frame", "Slot#{i}"
|
||||||
Name: "Slot#{i}"
|
|
||||||
RobloxLocked: true
|
RobloxLocked: true
|
||||||
BackgroundColor3: Color3.new 0, 0, 0
|
BackgroundColor3: Color3.new 0, 0, 0
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
|
|
@ -568,8 +567,7 @@ makeStyledButton = (buttonName, size, position, parent, buttonStyle) ->
|
||||||
button
|
button
|
||||||
|
|
||||||
makeTextLabel = (TextLabelName, text, position, parent) ->
|
makeTextLabel = (TextLabelName, text, position, parent) ->
|
||||||
New "TextLabel"
|
New "TextLabel", TextLabelName,
|
||||||
Name: TextLabelName
|
|
||||||
RobloxLocked: true
|
RobloxLocked: true
|
||||||
BackgroundTransparency: 1
|
BackgroundTransparency: 1
|
||||||
Size: UDim2.new 0, 32, 0, 14
|
Size: UDim2.new 0, 32, 0, 14
|
||||||
|
|
|
||||||
|
|
@ -254,8 +254,7 @@ reorganizeLoadout = (gear, inserting, _, addToSlot) ->
|
||||||
|
|
||||||
|
|
||||||
checkToolAncestry = (child, parent) ->
|
checkToolAncestry = (child, parent) ->
|
||||||
if child\FindFirstChild "RobloxBuildTool"
|
return if child\FindFirstChild "RobloxBuildTool"
|
||||||
return
|
|
||||||
-- don't show roblox build tools
|
-- don't show roblox build tools
|
||||||
if child\IsA"Tool" or child\IsA "HopperBin"
|
if child\IsA"Tool" or child\IsA "HopperBin"
|
||||||
for i = 1, #gearSlots
|
for i = 1, #gearSlots
|
||||||
|
|
|
||||||
|
|
@ -776,7 +776,7 @@ model = Create'Model'{
|
||||||
An example using the event syntax:
|
An example using the event syntax:
|
||||||
|
|
||||||
part = Create'Part'{
|
part = Create'Part'{
|
||||||
[Create.E'Touched'] = function part
|
[Create.E'Touched'] = function(part)
|
||||||
print("I was touched by "..part.Name)
|
print("I was touched by "..part.Name)
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
@ -787,7 +787,7 @@ An example using the general constructor syntax:
|
||||||
model = Create'Part'{
|
model = Create'Part'{
|
||||||
[Create] = function this
|
[Create] = function this
|
||||||
print("Constructor running!")
|
print("Constructor running!")
|
||||||
this.Name = GetGlobalFoosAndBars this
|
this.Name = GetGlobalFoosAndBars(this)
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
473
yue/73157242.yue
473
yue/73157242.yue
|
|
@ -1,6 +1,30 @@
|
||||||
import "macros" as { $ }
|
import "macros" as { $ }
|
||||||
$load $FILE
|
$load $FILE
|
||||||
|
|
||||||
|
-- Heliodex's basic New function (basically a simplified version of melt)
|
||||||
|
New = (className, name, props) ->
|
||||||
|
if not props? -- no name was provided
|
||||||
|
props = name
|
||||||
|
name = nil
|
||||||
|
|
||||||
|
obj = Instance.new className
|
||||||
|
obj.Name = name if name
|
||||||
|
local parent
|
||||||
|
|
||||||
|
for k, v in pairs props
|
||||||
|
if type(k) == "string" then
|
||||||
|
if k == "Parent"
|
||||||
|
parent = v
|
||||||
|
else
|
||||||
|
obj[k] = v
|
||||||
|
|
||||||
|
elseif type(k) == "number" and type(v) == "userdata"
|
||||||
|
v.Parent = obj
|
||||||
|
|
||||||
|
obj.Parent = parent
|
||||||
|
obj
|
||||||
|
--
|
||||||
|
|
||||||
t = {}
|
t = {}
|
||||||
|
|
||||||
-- waitForChild = (instance, name) ->
|
-- waitForChild = (instance, name) ->
|
||||||
|
|
@ -9,7 +33,7 @@ t = {}
|
||||||
-- end
|
-- end
|
||||||
-- end
|
-- end
|
||||||
|
|
||||||
-- Do a line/plane intersection. The line starts at the camera. The plane is at y == 0, normal(0, 1, 0)
|
-- Do a line/plane intersection. The line starts at the camera. The plane is at y == 0, normal 0, 1, 0
|
||||||
--
|
--
|
||||||
-- vectorPos - End point of the line.
|
-- vectorPos - End point of the line.
|
||||||
--
|
--
|
||||||
|
|
@ -24,9 +48,9 @@ PlaneIntersection = (vectorPos) ->
|
||||||
startPos = Vector3.new .X, .Y, .Z
|
startPos = Vector3.new .X, .Y, .Z
|
||||||
|
|
||||||
endPos = Vector3.new vectorPos.X, vectorPos.Y, vectorPos.Z
|
endPos = Vector3.new vectorPos.X, vectorPos.Y, vectorPos.Z
|
||||||
normal = Vector3.new(0, 1, 0)
|
normal = Vector3.new 0, 1, 0
|
||||||
p3 = Vector3.new 0, 0, 0
|
p3 = Vector3.new 0, 0, 0
|
||||||
startEndDot = normal\Dot(endPos - startPos)
|
startEndDot = normal\Dot endPos - startPos
|
||||||
cellPos = vectorPos
|
cellPos = vectorPos
|
||||||
if startEndDot ~= 0
|
if startEndDot ~= 0
|
||||||
t = normal\Dot(p3 - startPos) / startEndDot
|
t = normal\Dot(p3 - startPos) / startEndDot
|
||||||
|
|
@ -158,14 +182,12 @@ setSeatEnabledStatus = (model, isEnabled) ->
|
||||||
-- put a weld called "SeatWeld" in every seat
|
-- put a weld called "SeatWeld" in every seat
|
||||||
-- this tricks it into thinking there's already someone sitting there, and it won't make you sit XD
|
-- this tricks it into thinking there's already someone sitting there, and it won't make you sit XD
|
||||||
for i = 1, #seatList
|
for i = 1, #seatList
|
||||||
fakeWeld = Instance.new "Weld"
|
New "Weld", "SeatWeld"
|
||||||
fakeWeld.Name = "SeatWeld"
|
Parent: seatList[i]
|
||||||
fakeWeld.Parent = seatList[i]
|
|
||||||
|
|
||||||
|
|
||||||
autoAlignToFace = (parts) ->
|
autoAlignToFace = (parts) ->
|
||||||
aatf = parts\FindFirstChild "AutoAlignToFace"
|
if aatf = parts\FindFirstChild "AutoAlignToFace"
|
||||||
if aatf
|
|
||||||
aatf.Value
|
aatf.Value
|
||||||
else
|
else
|
||||||
false
|
false
|
||||||
|
|
@ -257,21 +279,21 @@ modelTargetSurface = (partOrModel, rayStart, rayEnd) ->
|
||||||
hitFace = 0
|
hitFace = 0
|
||||||
|
|
||||||
--if xHitTime >= 0 and yHitTime >= 0 and zHitTime >= 0
|
--if xHitTime >= 0 and yHitTime >= 0 and zHitTime >= 0
|
||||||
if xHitTime > yHitTime
|
hitFace = if xHitTime > yHitTime
|
||||||
if xHitTime > zHitTime
|
if xHitTime > zHitTime
|
||||||
-- xFace is hit
|
-- xFace is hit
|
||||||
hitFace = 1 * xPositive
|
1 * xPositive
|
||||||
else
|
else
|
||||||
-- zFace is hit
|
-- zFace is hit
|
||||||
hitFace = 3 * zPositive
|
3 * zPositive
|
||||||
|
|
||||||
else
|
else
|
||||||
if yHitTime > zHitTime
|
if yHitTime > zHitTime
|
||||||
-- yFace is hit
|
-- yFace is hit
|
||||||
hitFace = 2 * yPositive
|
2 * yPositive
|
||||||
else
|
else
|
||||||
-- zFace is hit
|
-- zFace is hit
|
||||||
hitFace = 3 * zPositive
|
3 * zPositive
|
||||||
|
|
||||||
hitFace
|
hitFace
|
||||||
|
|
||||||
|
|
@ -298,7 +320,7 @@ getBoundingBox2 = (partOrModel) ->
|
||||||
if justifyValue?
|
if justifyValue?
|
||||||
-- find the multiple of 4 that contains the model
|
-- find the multiple of 4 that contains the model
|
||||||
justify = justifyValue.Value
|
justify = justifyValue.Value
|
||||||
two = Vector3.new(2, 2, 2)
|
two = Vector3.new 2, 2, 2
|
||||||
actualBox = maxVec - minVec - Vector3.new 0.01, 0.01, 0.01
|
actualBox = maxVec - minVec - Vector3.new 0.01, 0.01, 0.01
|
||||||
containingGridBox = Vector3.new(
|
containingGridBox = Vector3.new(
|
||||||
4 * math.ceil(actualBox.x / 4),
|
4 * math.ceil(actualBox.x / 4),
|
||||||
|
|
@ -323,8 +345,8 @@ getBoundingBoxInWorldCoordinates = (partOrModel) ->
|
||||||
maxVec = Vector3.new math.max(vec1.X, vec2.X), math.max(vec1.Y, vec2.Y), math.max vec1.Z, vec2.Z
|
maxVec = Vector3.new math.max(vec1.X, vec2.X), math.max(vec1.Y, vec2.Y), math.max vec1.Z, vec2.Z
|
||||||
elseif not partOrModel\IsA "Terrain"
|
elseif not partOrModel\IsA "Terrain"
|
||||||
-- we shouldn't have to deal with this case
|
-- we shouldn't have to deal with this case
|
||||||
--minVec = Vector3.new(-2, -2, -2)
|
--minVec = Vector3.new -2, -2, -2
|
||||||
--maxVec = Vector3.new(2, 2, 2)
|
--maxVec = Vector3.new 2, 2, 2
|
||||||
-- else
|
-- else
|
||||||
vec1 = partOrModel\GetModelCFrame!\pointToWorldSpace -0.5 * partOrModel\GetModelSize!
|
vec1 = partOrModel\GetModelCFrame!\pointToWorldSpace -0.5 * partOrModel\GetModelSize!
|
||||||
vec2 = partOrModel\GetModelCFrame!\pointToWorldSpace 0.5 * partOrModel\GetModelSize!
|
vec2 = partOrModel\GetModelCFrame!\pointToWorldSpace 0.5 * partOrModel\GetModelSize!
|
||||||
|
|
@ -359,7 +381,7 @@ isBlocker = (part) -> -- returns whether or not we want to cancel the stamp beca
|
||||||
if part\FindFirstChild "Humanoid"
|
if part\FindFirstChild "Humanoid"
|
||||||
return false
|
return false
|
||||||
|
|
||||||
if part\FindFirstChild "RobloxStamper" or part\FindFirstChild "RobloxModel"
|
if part\FindFirstChild"RobloxStamper" or part\FindFirstChild "RobloxModel"
|
||||||
return true
|
return true
|
||||||
|
|
||||||
if part\IsA"Part" and not part.CanCollide
|
if part\IsA"Part" and not part.CanCollide
|
||||||
|
|
@ -376,7 +398,7 @@ spaceAboveCharacter = (charTorso, newTorsoY, stampData) ->
|
||||||
partsAboveChar = game.Workspace\FindPartsInRegion3(
|
partsAboveChar = game.Workspace\FindPartsInRegion3(
|
||||||
Region3.new(
|
Region3.new(
|
||||||
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) - Vector3.new(0.75, 2.75, 0.75),
|
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) - Vector3.new(0.75, 2.75, 0.75),
|
||||||
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new(0.75, 1.75, 0.75)
|
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new 0.75, 1.75, 0.75
|
||||||
),
|
),
|
||||||
charTorso.Parent,
|
charTorso.Parent,
|
||||||
100
|
100
|
||||||
|
|
@ -388,7 +410,7 @@ spaceAboveCharacter = (charTorso, newTorsoY, stampData) ->
|
||||||
|
|
||||||
if clusterPartsInRegion(
|
if clusterPartsInRegion(
|
||||||
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) - Vector3.new(0.75, 2.75, 0.75),
|
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) - Vector3.new(0.75, 2.75, 0.75),
|
||||||
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new(0.75, 1.75, 0.75)
|
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new 0.75, 1.75, 0.75
|
||||||
)
|
)
|
||||||
|
|
||||||
return false
|
return false
|
||||||
|
|
@ -406,8 +428,8 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
|
||||||
return if not Mouse
|
return if not Mouse
|
||||||
|
|
||||||
-- This can happen sometimes, return if so
|
-- This can happen sometimes, return if so
|
||||||
return if not stampData
|
if not stampData
|
||||||
error "findConfigAtMouseTarget: stampData is nil"
|
return error "findConfigAtMouseTarget: stampData is nil"
|
||||||
|
|
||||||
return if not stampData["CurrentParts"]
|
return if not stampData["CurrentParts"]
|
||||||
|
|
||||||
|
|
@ -426,10 +448,10 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
|
||||||
|
|
||||||
|
|
||||||
if Mouse
|
if Mouse
|
||||||
if stampData.CurrentParts\IsA "Tool"
|
Mouse.TargetFilter = if stampData.CurrentParts\IsA "Tool"
|
||||||
Mouse.TargetFilter = stampData.CurrentParts.Handle
|
stampData.CurrentParts.Handle
|
||||||
else
|
else
|
||||||
Mouse.TargetFilter = stampData.CurrentParts
|
stampData.CurrentParts
|
||||||
|
|
||||||
hitPlane = false
|
hitPlane = false
|
||||||
local targetPart
|
local targetPart
|
||||||
|
|
@ -445,7 +467,6 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
|
||||||
if Mouse
|
if Mouse
|
||||||
mouseHitInWorld = Vector3.new Mouse.Hit.x, Mouse.Hit.y, Mouse.Hit.z
|
mouseHitInWorld = Vector3.new Mouse.Hit.x, Mouse.Hit.y, Mouse.Hit.z
|
||||||
|
|
||||||
|
|
||||||
local cellPos
|
local cellPos
|
||||||
|
|
||||||
-- Nothing was hit, so check for the default plane.
|
-- Nothing was hit, so check for the default plane.
|
||||||
|
|
@ -458,8 +479,8 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
|
||||||
targetPart = game.Workspace.Terrain
|
targetPart = game.Workspace.Terrain
|
||||||
hitPlane = true
|
hitPlane = true
|
||||||
-- Take into account error that will occur.
|
-- Take into account error that will occur.
|
||||||
cellPos = Vector3.new(cellPos.X - 1, cellPos.Y, cellPos.Z)
|
cellPos = Vector3.new cellPos.X - 1, cellPos.Y, cellPos.Z
|
||||||
mouseHitInWorld = game.Workspace.Terrain\CellCenterToWorld(cellPos.x, cellPos.y, cellPos.z)
|
mouseHitInWorld = game.Workspace.Terrain\CellCenterToWorld cellPos.x, cellPos.y, cellPos.z
|
||||||
|
|
||||||
|
|
||||||
-- test mouse hit location
|
-- test mouse hit location
|
||||||
|
|
@ -486,13 +507,13 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
|
||||||
-- (ideally, we would want to make the Mouse.TargetSurface a model-targetsurface instead, but for testing will be using the converse)
|
-- (ideally, we would want to make the Mouse.TargetSurface a model-targetsurface instead, but for testing will be using the converse)
|
||||||
--targetVectorInWorld = targetCFrame\vectorToWorldSpace(Vector3.FromNormalId(Mouse.TargetSurface))
|
--targetVectorInWorld = targetCFrame\vectorToWorldSpace(Vector3.FromNormalId(Mouse.TargetSurface))
|
||||||
targetVectorInWorld = targetPart.CFrame\vectorToWorldSpace Vector3.FromNormalId Mouse.TargetSurface -- better, but model cframe would be best
|
targetVectorInWorld = targetPart.CFrame\vectorToWorldSpace Vector3.FromNormalId Mouse.TargetSurface -- better, but model cframe would be best
|
||||||
--[[if targetPart.Parent\IsA("Model")
|
--[[if targetPart.Parent\IsA "Model"
|
||||||
hitFace = modelTargetSurface(targetPart.Parent, Mouse.Hit.p, game.Workspace.CurrentCamera.CoordinateFrame.p) -- best, if you get it right
|
hitFace = modelTargetSurface(targetPart.Parent, Mouse.Hit.p, game.Workspace.CurrentCamera.CoordinateFrame.p) -- best, if you get it right
|
||||||
WORLD_AXES = {Vector3.new(1, 0, 0), Vector3.new(0, 1, 0), Vector3.new(0, 0, 1)}
|
WORLD_AXES = { Vector3.new(1, 0, 0), Vector3.new(0, 1, 0), Vector3.new(0, 0, 1) }
|
||||||
if hitFace > 0
|
if hitFace > 0
|
||||||
targetVectorInWorld = targetCFrame\vectorToWorldSpace(WORLD_AXES[hitFace])
|
targetVectorInWorld = targetCFrame\vectorToWorldSpace WORLD_AXES[hitFace]
|
||||||
elseif hitFace < 0
|
elseif hitFace < 0
|
||||||
targetVectorInWorld = targetCFrame\vectorToWorldSpace(-WORLD_AXES[-hitFace])
|
targetVectorInWorld = targetCFrame\vectorToWorldSpace -WORLD_AXES[-hitFace]
|
||||||
|
|
||||||
end]]
|
end]]
|
||||||
|
|
||||||
|
|
@ -580,10 +601,10 @@ truncateToCircleEighth = (bigValue, littleValue) ->
|
||||||
|
|
||||||
if frac > 0.382683432
|
if frac > 0.382683432
|
||||||
-- between 22.5 and 45 degrees, so truncate to 45-degree tilt
|
-- between 22.5 and 45 degrees, so truncate to 45-degree tilt
|
||||||
return 0.707106781 * hypotenuse * bigSign, 0.707106781 * hypotenuse * littleSign
|
0.707106781 * hypotenuse * bigSign, 0.707106781 * hypotenuse * littleSign
|
||||||
else
|
else
|
||||||
-- between 0 and 22.5 degrees, so truncate to 0-degree tilt
|
-- between 0 and 22.5 degrees, so truncate to 0-degree tilt
|
||||||
return hypotenuse * bigSign, 0
|
hypotenuse * bigSign, 0
|
||||||
|
|
||||||
|
|
||||||
saveTheWelds = (object, manualWeldTable, manualWeldParentTable) ->
|
saveTheWelds = (object, manualWeldTable, manualWeldParentTable) ->
|
||||||
|
|
@ -688,24 +709,22 @@ t.GetStampModel = (assetId, terrainShape, useAssetVersionId) ->
|
||||||
newTerrainPiece.CFrame = CFrame.Angles 0, math.pi / 2 * cellOrient + flipped, sideways
|
newTerrainPiece.CFrame = CFrame.Angles 0, math.pi / 2 * cellOrient + flipped, sideways
|
||||||
|
|
||||||
if cellType == 3
|
if cellType == 3
|
||||||
inverseCornerWedgeMesh = Instance.new "SpecialMesh"
|
New "SpecialMesh"
|
||||||
inverseCornerWedgeMesh.MeshType = "FileMesh"
|
MeshType: "FileMesh"
|
||||||
inverseCornerWedgeMesh.MeshId = "http://www.roblox.com/asset?id=66832495"
|
MeshId: "http://www.roblox.com/asset?id=66832495"
|
||||||
inverseCornerWedgeMesh.Scale = Vector3.new 2, 2, 2
|
Scale: Vector3.new 2, 2, 2
|
||||||
inverseCornerWedgeMesh.Parent = newTerrainPiece
|
Parent: newTerrainPiece
|
||||||
|
|
||||||
materialTag = Instance.new "Vector3Value"
|
New "Vector3Value", "ClusterMaterial"
|
||||||
materialTag.Value = Vector3.new cellMat, cellType, cellOrient
|
Value: Vector3.new cellMat, cellType, cellOrient
|
||||||
materialTag.Name = "ClusterMaterial"
|
Parent: newTerrainPiece
|
||||||
materialTag.Parent = newTerrainPiece
|
|
||||||
|
|
||||||
return newTerrainPiece
|
newTerrainPiece
|
||||||
|
|
||||||
|
|
||||||
-- This call will cause a "wait" until the data comes back
|
-- This call will cause a "wait" until the data comes back
|
||||||
-- below we wait a max of 8 seconds before deciding to bail out on loading
|
-- below we wait a max of 8 seconds before deciding to bail out on loading
|
||||||
local root
|
local root, loader
|
||||||
local loader
|
|
||||||
loading = true
|
loading = true
|
||||||
if useAssetVersionId
|
if useAssetVersionId
|
||||||
loader = coroutine.create ->
|
loader = coroutine.create ->
|
||||||
|
|
@ -771,36 +790,33 @@ t.GetStampModel = (assetId, terrainShape, useAssetVersionId) ->
|
||||||
|
|
||||||
-- ...and tag all inserted models for subsequent origin identification
|
-- ...and tag all inserted models for subsequent origin identification
|
||||||
-- if no RobloxModel tag already exists, then add it.
|
-- if no RobloxModel tag already exists, then add it.
|
||||||
if not root\FindFirstChild"RobloxModel"?
|
if root\FindFirstChild"RobloxModel" == nil
|
||||||
stringTag = Instance.new "BoolValue"
|
New "BoolValue", "RobloxModel"
|
||||||
stringTag.Name = "RobloxModel"
|
Parent: root
|
||||||
stringTag.Parent = root
|
|
||||||
|
|
||||||
if not root\FindFirstChild"RobloxStamper"?
|
if root\FindFirstChild"RobloxStamper" == nil
|
||||||
stringTag2 = Instance.new "BoolValue"
|
New "BoolValue", "RobloxStamper"
|
||||||
stringTag2.Name = "RobloxStamper"
|
Parent: root
|
||||||
stringTag2.Parent = root
|
|
||||||
|
|
||||||
|
|
||||||
if terrainShape
|
if terrainShape
|
||||||
if root.Name == "MegaClusterCube"
|
if root.Name == "MegaClusterCube"
|
||||||
if terrainShape == 6 -- insert an autowedging tag
|
if terrainShape == 6 -- insert an autowedging tag
|
||||||
autowedgeTag = Instance.new "BoolValue"
|
New "BoolValue", "AutoWedge"
|
||||||
autowedgeTag.Name = "AutoWedge"
|
Parent: root
|
||||||
autowedgeTag.Parent = root
|
|
||||||
else
|
else
|
||||||
clusterTag = root\FindFirstChild "ClusterMaterial"
|
clusterTag = root\FindFirstChild "ClusterMaterial"
|
||||||
if clusterTag
|
root = if clusterTag
|
||||||
if clusterTag\IsA "Vector3Value"
|
if clusterTag\IsA "Vector3Value"
|
||||||
root = setupFakeTerrainPart(clusterTag.Value.X, terrainShape, clusterTag.Value.Z)
|
setupFakeTerrainPart clusterTag.Value.X, terrainShape, clusterTag.Value.Z
|
||||||
else
|
else
|
||||||
root = setupFakeTerrainPart(clusterTag.Value, terrainShape, 0)
|
setupFakeTerrainPart clusterTag.Value, terrainShape, 0
|
||||||
|
|
||||||
else
|
else
|
||||||
root = setupFakeTerrainPart(1, terrainShape, 0)
|
setupFakeTerrainPart 1, terrainShape, 0
|
||||||
|
|
||||||
|
|
||||||
return root
|
root
|
||||||
|
|
||||||
|
|
||||||
t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion, StampFailedFunc) ->
|
t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion, StampFailedFunc) ->
|
||||||
|
|
@ -843,38 +859,37 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
local stampData
|
local stampData
|
||||||
local mouseTarget
|
local mouseTarget
|
||||||
|
|
||||||
errorBox = Instance.new "SelectionBox"
|
errorBox = New "SelectionBox"
|
||||||
errorBox.Color = BrickColor.new "Bright red"
|
Color: BrickColor.new "Bright red"
|
||||||
errorBox.Transparency = 0
|
Transparency: 0
|
||||||
errorBox.Archivable = false
|
Archivable: false
|
||||||
|
|
||||||
-- for megacluster MEGA STAMPING
|
-- for megacluster MEGA STAMPING
|
||||||
adornPart = Instance.new "Part"
|
adornPart = New "Part"
|
||||||
adornPart.Parent = nil
|
Parent: nil
|
||||||
adornPart.formFactor = "Custom"
|
formFactor: "Custom"
|
||||||
adornPart.Size = Vector3.new(4, 4, 4)
|
Size: Vector3.new 4, 4, 4
|
||||||
adornPart.CFrame = CFrame.new!
|
CFrame: CFrame.new!
|
||||||
adornPart.Archivable = false
|
Archivable: false
|
||||||
|
|
||||||
adorn = Instance.new "SelectionBox"
|
adorn = New "SelectionBox", "HighScalabilityStamperLine"
|
||||||
adorn.Color = BrickColor.new "Toothpaste"
|
Color: BrickColor.new "Toothpaste"
|
||||||
adorn.Adornee = adornPart
|
Adornee: adornPart
|
||||||
adorn.Visible = true
|
Visible: true
|
||||||
adorn.Transparency = 0
|
Transparency: 0
|
||||||
adorn.Name = "HighScalabilityStamperLine"
|
Archivable: false
|
||||||
adorn.Archivable = false
|
|
||||||
|
|
||||||
HighScalabilityLine = {}
|
HighScalabilityLine = {}
|
||||||
HighScalabilityLine.Start = nil
|
with HighScalabilityLine
|
||||||
HighScalabilityLine.End = nil
|
.Start = nil
|
||||||
HighScalabilityLine.Adorn = adorn
|
.End = nil
|
||||||
HighScalabilityLine.AdornPart = adornPart
|
.Adorn = adorn
|
||||||
HighScalabilityLine.InternalLine = nil
|
.AdornPart = adornPart
|
||||||
HighScalabilityLine.NewHint = true
|
.InternalLine = nil
|
||||||
|
.NewHint = true
|
||||||
HighScalabilityLine.MorePoints = { nil, nil }
|
.MorePoints = { nil, nil }
|
||||||
HighScalabilityLine.MoreLines = { nil, nil }
|
.MoreLines = { nil, nil }
|
||||||
HighScalabilityLine.Dimensions = 1
|
.Dimensions = 1
|
||||||
|
|
||||||
control = {}
|
control = {}
|
||||||
movingLock = false
|
movingLock = false
|
||||||
|
|
@ -883,9 +898,9 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
mouseCons = {}
|
mouseCons = {}
|
||||||
local keyCon
|
local keyCon
|
||||||
|
|
||||||
stamped = Instance.new "BoolValue"
|
stamped = New "BoolValue"
|
||||||
stamped.Archivable = false
|
Archivable: false
|
||||||
stamped.Value = false
|
Value: false
|
||||||
|
|
||||||
lastTarget = {}
|
lastTarget = {}
|
||||||
lastTarget.TerrainOrientation = 0
|
lastTarget.TerrainOrientation = 0
|
||||||
|
|
@ -924,37 +939,37 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
-- extract the line from these positions and limit to a 2D plane made from 2 of the world axes
|
-- extract the line from these positions and limit to a 2D plane made from 2 of the world axes
|
||||||
-- then use dominating axis to limit line to be at 45-degree intervals
|
-- then use dominating axis to limit line to be at 45-degree intervals
|
||||||
-- will use this internal representation of the line for the actual stamping
|
-- will use this internal representation of the line for the actual stamping
|
||||||
line = (HighScalabilityLine.End - HighScalabilityLine.Start)
|
line = HighScalabilityLine.End - HighScalabilityLine.Start
|
||||||
|
|
||||||
if math.abs(line.X) < math.abs(line.Y)
|
if math.abs(line.X) < math.abs line.Y
|
||||||
if math.abs(line.X) < math.abs(line.Z)
|
if math.abs(line.X) < math.abs line.Z
|
||||||
-- limit to Y/Z plane, domination unknown
|
-- limit to Y/Z plane, domination unknown
|
||||||
local newY, newZ
|
local newY, newZ
|
||||||
if math.abs(line.Y) > math.abs(line.Z)
|
if math.abs(line.Y) > math.abs line.Z
|
||||||
newY, newZ = truncateToCircleEighth(line.Y, line.Z)
|
newY, newZ = truncateToCircleEighth line.Y, line.Z
|
||||||
else
|
else
|
||||||
newZ, newY = truncateToCircleEighth(line.Z, line.Y)
|
newZ, newY = truncateToCircleEighth line.Z, line.Y
|
||||||
|
|
||||||
line = Vector3.new(0, newY, newZ)
|
line = Vector3.new 0, newY, newZ
|
||||||
else
|
else
|
||||||
-- limit to X/Y plane, with Y dominating
|
-- limit to X/Y plane, with Y dominating
|
||||||
newY, newX = truncateToCircleEighth(line.Y, line.X)
|
newY, newX = truncateToCircleEighth line.Y, line.X
|
||||||
line = Vector3.new(newX, newY, 0)
|
line = Vector3.new newX, newY, 0
|
||||||
|
|
||||||
else
|
else
|
||||||
if math.abs(line.Y) < math.abs(line.Z)
|
if math.abs(line.Y) < math.abs line.Z
|
||||||
-- limit to X/Z plane, domination unknown
|
-- limit to X/Z plane, domination unknown
|
||||||
local newX, newZ
|
local newX, newZ
|
||||||
if math.abs(line.X) > math.abs(line.Z)
|
if math.abs(line.X) > math.abs line.Z
|
||||||
newX, newZ = truncateToCircleEighth(line.X, line.Z)
|
newX, newZ = truncateToCircleEighth line.X, line.Z
|
||||||
else
|
else
|
||||||
newZ, newX = truncateToCircleEighth(line.Z, line.X)
|
newZ, newX = truncateToCircleEighth line.Z, line.X
|
||||||
|
|
||||||
line = Vector3.new(newX, 0, newZ)
|
line = Vector3.new newX, 0, newZ
|
||||||
else
|
else
|
||||||
-- limit to X/Y plane, with X dominating
|
-- limit to X/Y plane, with X dominating
|
||||||
newX, newY = truncateToCircleEighth(line.X, line.Y)
|
newX, newY = truncateToCircleEighth line.X, line.Y
|
||||||
line = Vector3.new(newX, newY, 0)
|
line = Vector3.new newX, newY, 0
|
||||||
|
|
||||||
|
|
||||||
HighScalabilityLine.InternalLine = line
|
HighScalabilityLine.InternalLine = line
|
||||||
|
|
@ -965,7 +980,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
-- take out any component of line2 along line1, so you get perpendicular to line1 component
|
-- take out any component of line2 along line1, so you get perpendicular to line1 component
|
||||||
line2 -= line.unit * line.unit\Dot line2
|
line2 -= line.unit * line.unit\Dot line2
|
||||||
|
|
||||||
tempCFrame = CFrame.new(HighScalabilityLine.Start, HighScalabilityLine.Start + line)
|
tempCFrame = CFrame.new HighScalabilityLine.Start, HighScalabilityLine.Start + line
|
||||||
|
|
||||||
-- then zero out whichever is the smaller component
|
-- then zero out whichever is the smaller component
|
||||||
yAxis = tempCFrame\vectorToWorldSpace(Vector3.new(0, 1, 0))
|
yAxis = tempCFrame\vectorToWorldSpace(Vector3.new(0, 1, 0))
|
||||||
|
|
@ -994,14 +1009,14 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
|
|
||||||
|
|
||||||
-- resize the "line" graphic to be the correct size and orientation
|
-- resize the "line" graphic to be the correct size and orientation
|
||||||
tempCFrame = CFrame.new(HighScalabilityLine.Start, HighScalabilityLine.Start + line)
|
tempCFrame = CFrame.new HighScalabilityLine.Start, HighScalabilityLine.Start + line
|
||||||
|
|
||||||
if HighScalabilityLine.Dimensions == 1 -- faster calculation for line
|
if HighScalabilityLine.Dimensions == 1 -- faster calculation for line
|
||||||
HighScalabilityLine.AdornPart.Size = Vector3.new(4, 4, line.magnitude + 4)
|
HighScalabilityLine.AdornPart.Size = Vector3.new 4, 4, line.magnitude + 4
|
||||||
HighScalabilityLine.AdornPart.CFrame = tempCFrame +
|
HighScalabilityLine.AdornPart.CFrame = tempCFrame +
|
||||||
tempCFrame\vectorToWorldSpace Vector3.new(2, 2, 2) - HighScalabilityLine.AdornPart.Size / 2
|
tempCFrame\vectorToWorldSpace Vector3.new(2, 2, 2) - HighScalabilityLine.AdornPart.Size / 2
|
||||||
else
|
else
|
||||||
boxSize = tempCFrame\vectorToObjectSpace(line + line2 + line3)
|
boxSize = tempCFrame\vectorToObjectSpace line + line2 + line3
|
||||||
HighScalabilityLine.AdornPart.Size = Vector3.new(4, 4, 4) +
|
HighScalabilityLine.AdornPart.Size = Vector3.new(4, 4, 4) +
|
||||||
Vector3.new(math.abs(boxSize.X), math.abs(boxSize.Y), math.abs(boxSize.Z))
|
Vector3.new(math.abs(boxSize.X), math.abs(boxSize.Y), math.abs(boxSize.Z))
|
||||||
HighScalabilityLine.AdornPart.CFrame = tempCFrame + tempCFrame\vectorToWorldSpace boxSize / 2
|
HighScalabilityLine.AdornPart.CFrame = tempCFrame + tempCFrame\vectorToWorldSpace boxSize / 2
|
||||||
|
|
@ -1032,24 +1047,20 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
return
|
return
|
||||||
|
|
||||||
if not Mouse\IsA "Mouse"
|
if not Mouse\IsA "Mouse"
|
||||||
error("Error: RbxStamper.DoStamperMouseMove: Mouse is of type", Mouse.className, "should be of type Mouse")
|
error "Error: RbxStamper.DoStamperMouseMove: Mouse is of type", Mouse.className, "should be of type Mouse"
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
-- There wasn't a target (no part or terrain), so check for plane intersection.
|
-- There wasn't a target (no part or terrain), so check for plane intersection.
|
||||||
if not Mouse.Target
|
if not Mouse.Target
|
||||||
cellPos = GetTerrainForMouse Mouse
|
cellPos = GetTerrainForMouse Mouse
|
||||||
if nil == cellPos
|
return if nil == cellPos
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
if not stampData
|
|
||||||
return
|
|
||||||
|
|
||||||
|
return if not stampData
|
||||||
|
|
||||||
-- don't move with dragger - will move in one step on mouse down
|
-- don't move with dragger - will move in one step on mouse down
|
||||||
-- draw ghost at acceptable positions
|
-- draw ghost at acceptable positions
|
||||||
configFound, targetCFrame, targetSurface = findConfigAtMouseTarget(Mouse, stampData)
|
configFound, targetCFrame, targetSurface = findConfigAtMouseTarget Mouse, stampData
|
||||||
if not configFound
|
if not configFound
|
||||||
error "RbxStamper.DoStamperMouseMove No configFound, returning"
|
error "RbxStamper.DoStamperMouseMove No configFound, returning"
|
||||||
return
|
return
|
||||||
|
|
@ -1057,28 +1068,28 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
|
|
||||||
numRotations = 0 -- update this according to how many rotations you need to get it to target surface
|
numRotations = 0 -- update this according to how many rotations you need to get it to target surface
|
||||||
if autoAlignToFace(stampData.CurrentParts) and targetSurface ~= 1 and targetSurface ~= 4 -- pre-rotate the flag or portrait so it's aligned correctly
|
if autoAlignToFace(stampData.CurrentParts) and targetSurface ~= 1 and targetSurface ~= 4 -- pre-rotate the flag or portrait so it's aligned correctly
|
||||||
if targetSurface == 3
|
numRotations = if targetSurface == 3
|
||||||
numRotations = 0 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts)
|
0 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
|
||||||
elseif targetSurface == 0
|
elseif targetSurface == 0
|
||||||
numRotations = 2 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts)
|
2 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
|
||||||
elseif targetSurface == 5
|
elseif targetSurface == 5
|
||||||
numRotations = 3 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts)
|
3 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
|
||||||
elseif targetSurface == 2
|
elseif targetSurface == 2
|
||||||
numRotations = 1 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts)
|
1 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
|
||||||
|
|
||||||
|
|
||||||
ry = math.pi / 2
|
ry = math.pi / 2
|
||||||
gInitial90DegreeRotations += numRotations
|
gInitial90DegreeRotations += numRotations
|
||||||
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
|
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
|
||||||
--stampData.CurrentParts\Rotate(0, ry*numRotations, 0)
|
--stampData.CurrentParts\Rotate 0, ry*numRotations, 0
|
||||||
modelRotate(stampData.CurrentParts, ry * numRotations)
|
modelRotate stampData.CurrentParts, ry * numRotations
|
||||||
else
|
else
|
||||||
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry * numRotations, 0)
|
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ 0, ry * numRotations, 0
|
||||||
* stampData.CurrentParts.CFrame
|
* stampData.CurrentParts.CFrame
|
||||||
|
|
||||||
|
|
||||||
-- CODE TO CHECK FOR DRAGGING GHOST PART INTO A COLLIDING STATE
|
-- CODE TO CHECK FOR DRAGGING GHOST PART INTO A COLLIDING STATE
|
||||||
minBB, maxBB = getBoundingBoxInWorldCoordinates(stampData.CurrentParts)
|
minBB, maxBB = getBoundingBoxInWorldCoordinates stampData.CurrentParts
|
||||||
|
|
||||||
-- need to offset by distance to be dragged
|
-- need to offset by distance to be dragged
|
||||||
local currModelCFrame
|
local currModelCFrame
|
||||||
|
|
@ -1092,12 +1103,12 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
maxBB += targetCFrame.p - currModelCFrame.p
|
maxBB += targetCFrame.p - currModelCFrame.p
|
||||||
|
|
||||||
-- don't drag into terrain
|
-- don't drag into terrain
|
||||||
if clusterPartsInRegion(minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector)
|
if clusterPartsInRegion minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector
|
||||||
if lastTarget.CFrame
|
if lastTarget.CFrame
|
||||||
if stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
|
if stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
|
||||||
theClusterMaterial = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
|
theClusterMaterial = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
|
||||||
if theClusterMaterial\IsA "Vector3Value"
|
if theClusterMaterial\IsA "Vector3Value"
|
||||||
stampClusterMaterial = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
|
stampClusterMaterial = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
|
||||||
if stampClusterMaterial
|
if stampClusterMaterial
|
||||||
stampClusterMaterial = clusterMat
|
stampClusterMaterial = clusterMat
|
||||||
|
|
||||||
|
|
@ -1193,13 +1204,12 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
|
|
||||||
-- most common mouse inactive error occurs here, so check mouse active one more time in a pcall
|
-- most common mouse inactive error occurs here, so check mouse active one more time in a pcall
|
||||||
if (not try
|
if (not try
|
||||||
if Mouse and Mouse.Target and not Mouse.Target.Parent\FindFirstChild"RobloxModel"?
|
-- if Mouse and Mouse.Target and not Mouse.Target.Parent\FindFirstChild"RobloxModel"?
|
||||||
return
|
-- return
|
||||||
else
|
-- else
|
||||||
return
|
-- return
|
||||||
-- ?
|
return
|
||||||
)
|
)
|
||||||
|
|
||||||
error "Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check"
|
error "Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check"
|
||||||
game.JointsService\ClearJoinAfterMoveJoints!
|
game.JointsService\ClearJoinAfterMoveJoints!
|
||||||
Mouse = nil
|
Mouse = nil
|
||||||
|
|
@ -1239,7 +1249,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
-- Rotate the parts or all the parts in the model
|
-- Rotate the parts or all the parts in the model
|
||||||
ry = math.pi / 2
|
ry = math.pi / 2
|
||||||
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
|
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
|
||||||
--stampData.CurrentParts\Rotate(0, ry, 0)
|
--stampData.CurrentParts\Rotate 0, ry, 0
|
||||||
modelRotate stampData.CurrentParts, ry
|
modelRotate stampData.CurrentParts, ry
|
||||||
else
|
else
|
||||||
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry, 0) * stampData.CurrentParts.CFrame
|
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry, 0) * stampData.CurrentParts.CFrame
|
||||||
|
|
@ -1254,14 +1264,14 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
DoStamperMouseMove Mouse
|
DoStamperMouseMove Mouse
|
||||||
|
|
||||||
elseif key == "c" -- try to expand our high scalability dragger dimension
|
elseif key == "c" -- try to expand our high scalability dragger dimension
|
||||||
if HighScalabilityLine.InternalLine and
|
with HighScalabilityLine
|
||||||
HighScalabilityLine.InternalLine.magnitude > 0 and
|
if .InternalLine and
|
||||||
HighScalabilityLine.Dimensions < 3
|
.InternalLine.magnitude > 0 and
|
||||||
|
.Dimensions < 3
|
||||||
HighScalabilityLine.MorePoints[HighScalabilityLine.Dimensions] = HighScalabilityLine.End
|
.MorePoints[.Dimensions] = .End
|
||||||
HighScalabilityLine.MoreLines[HighScalabilityLine.Dimensions] = HighScalabilityLine.InternalLine
|
.MoreLines[.Dimensions] = .InternalLine
|
||||||
HighScalabilityLine.Dimensions = HighScalabilityLine.Dimensions + 1
|
.Dimensions = .Dimensions + 1
|
||||||
HighScalabilityLine.NewHint = true
|
.NewHint = true
|
||||||
|
|
||||||
keyCon = Mouse.KeyDown\connect (key) -> -- init key connection (keeping code close to func)
|
keyCon = Mouse.KeyDown\connect (key) -> -- init key connection (keeping code close to func)
|
||||||
setupKeyListener key, Mouse
|
setupKeyListener key, Mouse
|
||||||
|
|
@ -1275,10 +1285,11 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
|
|
||||||
flashRedBox = ->
|
flashRedBox = ->
|
||||||
gui = game.CoreGui
|
gui = game.CoreGui
|
||||||
if game\FindFirstChild "Players"
|
if game\FindFirstChild"Players" and
|
||||||
if game.Players["LocalPlayer"]
|
game.Players["LocalPlayer"] and
|
||||||
if game.Players.LocalPlayer\FindFirstChild "PlayerGui"
|
game.Players.LocalPlayer\FindFirstChild "PlayerGui"
|
||||||
gui = game.Players.LocalPlayer.PlayerGui
|
|
||||||
|
gui = game.Players.LocalPlayer.PlayerGui
|
||||||
|
|
||||||
return if not stampData["ErrorBox"]
|
return if not stampData["ErrorBox"]
|
||||||
|
|
||||||
|
|
@ -1312,22 +1323,20 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
error "Error: RbxStamper.DoStamperMouseDown: Mouse is of type", Mouse.className, "should be of type Mouse"
|
error "Error: RbxStamper.DoStamperMouseDown: Mouse is of type", Mouse.className, "should be of type Mouse"
|
||||||
return
|
return
|
||||||
|
|
||||||
if not stampData
|
return if not stampData
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
if isMegaClusterPart!
|
if isMegaClusterPart!
|
||||||
if Mouse and HighScalabilityLine
|
if Mouse and HighScalabilityLine
|
||||||
megaCube = stampData.CurrentParts\FindFirstChild("MegaClusterCube", true)
|
megaCube = stampData.CurrentParts\FindFirstChild "MegaClusterCube", true
|
||||||
terrain = game.Workspace.Terrain
|
terrain = game.Workspace.Terrain
|
||||||
if megaCube
|
if megaCube
|
||||||
HighScalabilityLine.Dimensions = 1
|
HighScalabilityLine.Dimensions = 1
|
||||||
tempCell = terrain\WorldToCell(megaCube.CFrame.p)
|
tempCell = terrain\WorldToCell megaCube.CFrame.p
|
||||||
HighScalabilityLine.Start = terrain\CellCenterToWorld tempCell.X, tempCell.Y, tempCell.Z
|
HighScalabilityLine.Start = terrain\CellCenterToWorld tempCell.X, tempCell.Y, tempCell.Z
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
HighScalabilityLine.Dimensions = 1
|
HighScalabilityLine.Dimensions = 1
|
||||||
tempCell = terrain\WorldToCell(stampData.CurrentParts.CFrame.p)
|
tempCell = terrain\WorldToCell stampData.CurrentParts.CFrame.p
|
||||||
HighScalabilityLine.Start = terrain\CellCenterToWorld tempCell.X, tempCell.Y, tempCell.Z
|
HighScalabilityLine.Start = terrain\CellCenterToWorld tempCell.X, tempCell.Y, tempCell.Z
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
@ -1371,16 +1380,17 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
decals = {}
|
decals = {}
|
||||||
|
|
||||||
stampData = {}
|
stampData = {}
|
||||||
stampData.DisabledScripts = {}
|
with stampData
|
||||||
stampData.TransparencyTable = {}
|
.DisabledScripts = {}
|
||||||
stampData.MaterialTable = {}
|
.TransparencyTable = {}
|
||||||
stampData.CanCollideTable = {}
|
.MaterialTable = {}
|
||||||
stampData.AnchoredTable = {}
|
.CanCollideTable = {}
|
||||||
stampData.ArchivableTable = {}
|
.AnchoredTable = {}
|
||||||
stampData.DecalTransparencyTable = {}
|
.ArchivableTable = {}
|
||||||
stampData.SurfaceTypeTable = {}
|
.DecalTransparencyTable = {}
|
||||||
|
.SurfaceTypeTable = {}
|
||||||
|
|
||||||
collectParts(clone, parts, scripts, decals)
|
collectParts clone, parts, scripts, decals
|
||||||
|
|
||||||
if #parts <= 0
|
if #parts <= 0
|
||||||
return nil, "no parts found in modelToStamp"
|
return nil, "no parts found in modelToStamp"
|
||||||
|
|
@ -1404,7 +1414,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
stampData.ArchivableTable[part] = part.Archivable
|
stampData.ArchivableTable[part] = part.Archivable
|
||||||
part.Archivable = false
|
part.Archivable = false
|
||||||
|
|
||||||
saveSurfaceTypes(part, stampData.SurfaceTypeTable)
|
saveSurfaceTypes part, stampData.SurfaceTypeTable
|
||||||
|
|
||||||
fadeInDelayTime = 0.5
|
fadeInDelayTime = 0.5
|
||||||
transFadeInTime = 0.5
|
transFadeInTime = 0.5
|
||||||
|
|
@ -1447,7 +1457,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
else -- pre-rotate if necessary
|
else -- pre-rotate if necessary
|
||||||
ry = gInitial90DegreeRotations * math.pi / 2
|
ry = gInitial90DegreeRotations * math.pi / 2
|
||||||
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
|
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
|
||||||
--stampData.CurrentParts\Rotate(0, ry, 0)
|
--stampData.CurrentParts\Rotate 0, ry, 0
|
||||||
modelRotate stampData.CurrentParts, ry
|
modelRotate stampData.CurrentParts, ry
|
||||||
else
|
else
|
||||||
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry, 0) * stampData.CurrentParts.CFrame
|
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry, 0) * stampData.CurrentParts.CFrame
|
||||||
|
|
@ -1467,13 +1477,13 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
|
|
||||||
|
|
||||||
-- After rotating, update the position
|
-- After rotating, update the position
|
||||||
configFound, targetCFrame = findConfigAtMouseTarget(Mouse, stampData)
|
configFound, targetCFrame = findConfigAtMouseTarget Mouse, stampData
|
||||||
if configFound
|
if configFound
|
||||||
stampData.CurrentParts = positionPartsAtCFrame3(targetCFrame, stampData.CurrentParts)
|
stampData.CurrentParts = positionPartsAtCFrame3 targetCFrame, stampData.CurrentParts
|
||||||
|
|
||||||
|
|
||||||
-- to show joints during the mouse move
|
-- to show joints during the mouse move
|
||||||
game.JointsService\SetJoinAfterMoveInstance(stampData.CurrentParts)
|
game.JointsService\SetJoinAfterMoveInstance stampData.CurrentParts
|
||||||
|
|
||||||
return clone, parts
|
return clone, parts
|
||||||
|
|
||||||
|
|
@ -1532,7 +1542,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
|
|
||||||
if checkHighScalabilityStamp -- check to see if cell is in region, if not we'll skip set
|
if checkHighScalabilityStamp -- check to see if cell is in region, if not we'll skip set
|
||||||
if allowedStampRegion
|
if allowedStampRegion
|
||||||
cellPos = cellCenterToWorld(game.Workspace.Terrain, cellPos.X, cellPos.Y, cellPos.Z)
|
cellPos = cellCenterToWorld game.Workspace.Terrain, cellPos.X, cellPos.Y, cellPos.Z
|
||||||
if (cellPos.X + 2 > allowedStampRegion.CFrame.p.X + allowedStampRegion.Size.X / 2) or
|
if (cellPos.X + 2 > allowedStampRegion.CFrame.p.X + allowedStampRegion.Size.X / 2) or
|
||||||
(cellPos.X - 2 < allowedStampRegion.CFrame.p.X - allowedStampRegion.Size.X / 2) or
|
(cellPos.X - 2 < allowedStampRegion.CFrame.p.X - allowedStampRegion.Size.X / 2) or
|
||||||
(cellPos.Y + 2 > allowedStampRegion.CFrame.p.Y + allowedStampRegion.Size.Y / 2) or
|
(cellPos.Y + 2 > allowedStampRegion.CFrame.p.Y + allowedStampRegion.Size.Y / 2) or
|
||||||
|
|
@ -1563,8 +1573,8 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
autoWedgeClusterParts = true
|
autoWedgeClusterParts = true
|
||||||
|
|
||||||
|
|
||||||
if stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
|
if stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
|
||||||
clusterMaterial = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
|
clusterMaterial = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
|
||||||
if clusterMaterial\IsA "Vector3Value"
|
if clusterMaterial\IsA "Vector3Value"
|
||||||
clusterType = clusterMaterial.Value.Y
|
clusterType = clusterMaterial.Value.Y
|
||||||
clusterOrientation = clusterMaterial.Value.Z
|
clusterOrientation = clusterMaterial.Value.Z
|
||||||
|
|
@ -1577,7 +1587,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
HighScalabilityLine.Start and
|
HighScalabilityLine.Start and
|
||||||
((HighScalabilityLine.Dimensions > 1) or (line and line.magnitude > 0))
|
((HighScalabilityLine.Dimensions > 1) or (line and line.magnitude > 0))
|
||||||
|
|
||||||
startCell = game.Workspace.Terrain\WorldToCell(HighScalabilityLine.Start)
|
startCell = game.Workspace.Terrain\WorldToCell HighScalabilityLine.Start
|
||||||
xInc = { 0, 0, 0 }
|
xInc = { 0, 0, 0 }
|
||||||
yInc = { 0, 0, 0 }
|
yInc = { 0, 0, 0 }
|
||||||
zInc = { 0, 0, 0 }
|
zInc = { 0, 0, 0 }
|
||||||
|
|
@ -1595,20 +1605,20 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
|
|
||||||
lines = {}
|
lines = {}
|
||||||
if HighScalabilityLine.Dimensions > 1
|
if HighScalabilityLine.Dimensions > 1
|
||||||
table.insert(lines, HighScalabilityLine.MoreLines[1])
|
table.insert lines, HighScalabilityLine.MoreLines[1]
|
||||||
|
|
||||||
if line and line.magnitude > 0
|
if line and line.magnitude > 0
|
||||||
table.insert(lines, line)
|
table.insert lines, line
|
||||||
|
|
||||||
if HighScalabilityLine.Dimensions > 2
|
if HighScalabilityLine.Dimensions > 2
|
||||||
table.insert(lines, HighScalabilityLine.MoreLines[2])
|
table.insert lines, HighScalabilityLine.MoreLines[2]
|
||||||
|
|
||||||
|
|
||||||
for i = 1, #lines
|
for i = 1, #lines
|
||||||
lines[i] = Vector3.new(
|
lines[i] = Vector3.new(
|
||||||
math.floor(lines[i].X + 0.5),
|
math.floor(lines[i].X + 0.5),
|
||||||
math.floor(lines[i].Y + 0.5),
|
math.floor(lines[i].Y + 0.5),
|
||||||
math.floor(lines[i].Z + 0.5)
|
math.floor lines[i].Z + 0.5
|
||||||
) -- round to integers
|
) -- round to integers
|
||||||
|
|
||||||
if lines[i].X > 0
|
if lines[i].X > 0
|
||||||
|
|
@ -1627,7 +1637,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
zInc[i] = -1
|
zInc[i] = -1
|
||||||
|
|
||||||
|
|
||||||
incrementVect[i] = Vector3.new(xInc[i], yInc[i], zInc[i])
|
incrementVect[i] = Vector3.new xInc[i], yInc[i], zInc[i]
|
||||||
if incrementVect[i].magnitude < 0.9
|
if incrementVect[i].magnitude < 0.9
|
||||||
incrementVect[i] = nil
|
incrementVect[i] = nil
|
||||||
|
|
||||||
|
|
@ -1639,8 +1649,8 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
lines[3] = Vector3.new 0, 0, 0
|
lines[3] = Vector3.new 0, 0, 0
|
||||||
|
|
||||||
|
|
||||||
waterForceTag = stampData.CurrentParts\FindFirstChild("WaterForceTag", true)
|
waterForceTag = stampData.CurrentParts\FindFirstChild "WaterForceTag", true
|
||||||
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild("WaterForceDirectionTag", true)
|
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild "WaterForceDirectionTag", true
|
||||||
|
|
||||||
while stepVect[3].magnitude * 4 <= lines[3].magnitude
|
while stepVect[3].magnitude * 4 <= lines[3].magnitude
|
||||||
outerStepVectIndex = 1
|
outerStepVectIndex = 1
|
||||||
|
|
@ -1712,7 +1722,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
|
|
||||||
innerStepVectIndex += 1
|
innerStepVectIndex += 1
|
||||||
else
|
else
|
||||||
stepVect[2] = Vector3.new(1, 0, 0)
|
stepVect[2] = Vector3.new 1, 0, 0
|
||||||
innerStepVectIndex = 4 -- skip all remaining loops
|
innerStepVectIndex = 4 -- skip all remaining loops
|
||||||
|
|
||||||
if stepVect[2].magnitude * 4 > lines[2].magnitude
|
if stepVect[2].magnitude * 4 > lines[2].magnitude
|
||||||
|
|
@ -1754,7 +1764,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
return false
|
return false
|
||||||
|
|
||||||
if not Mouse\IsA "Mouse"
|
if not Mouse\IsA "Mouse"
|
||||||
error("Error: RbxStamper.DoStamperMouseUp: Mouse is of type", Mouse.className, "should be of type Mouse")
|
error "Error: RbxStamper.DoStamperMouseUp: Mouse is of type", Mouse.className, "should be of type Mouse"
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1782,13 +1792,11 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
canStamp = true
|
canStamp = true
|
||||||
checkHighScalabilityStamp = true
|
checkHighScalabilityStamp = true
|
||||||
else
|
else
|
||||||
canStamp, checkHighScalabilityStamp = t.CanEditRegion(stampData.CurrentParts, allowedStampRegion)
|
canStamp, checkHighScalabilityStamp = t.CanEditRegion stampData.CurrentParts, allowedStampRegion
|
||||||
|
|
||||||
|
|
||||||
if not canStamp
|
if not canStamp
|
||||||
if stampFailedFunc
|
stampFailedFunc?!
|
||||||
stampFailedFunc!
|
|
||||||
|
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1799,25 +1807,23 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
|
|
||||||
|
|
||||||
-- recheck if we can stamp, as we just moved part
|
-- recheck if we can stamp, as we just moved part
|
||||||
canStamp, checkHighScalabilityStamp = t.CanEditRegion(stampData.CurrentParts, allowedStampRegion)
|
canStamp, checkHighScalabilityStamp = t.CanEditRegion stampData.CurrentParts, allowedStampRegion
|
||||||
if not canStamp
|
if not canStamp
|
||||||
if stampFailedFunc
|
stampFailedFunc?!
|
||||||
stampFailedFunc!
|
|
||||||
|
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|
||||||
-- Prevent part from being stamped on top of a player
|
-- Prevent part from being stamped on top of a player
|
||||||
|
|
||||||
minBB, maxBB = getBoundingBoxInWorldCoordinates(stampData.CurrentParts)
|
minBB, maxBB = getBoundingBoxInWorldCoordinates stampData.CurrentParts
|
||||||
|
|
||||||
-- HotThoth's note: Now that above CurrentParts positioning has been commented out, to be truly correct, we would need to use the
|
-- HotThoth's note: Now that above CurrentParts positioning has been commented out, to be truly correct, we would need to use the
|
||||||
-- value of configFound from the previous onStamperMouseMove call which moved the CurrentParts
|
-- value of configFound from the previous onStamperMouseMove call which moved the CurrentParts
|
||||||
-- Shouldn't this be true when lastTargetCFrame has been set and false otherwise?
|
-- Shouldn't this be true when lastTargetCFrame has been set and false otherwise?
|
||||||
configFound, targetCFrame = findConfigAtMouseTarget(Mouse, stampData)
|
configFound, targetCFrame = findConfigAtMouseTarget Mouse, stampData
|
||||||
|
|
||||||
if configFound and not HighScalabilityLine.Adorn.Parent
|
if configFound and not HighScalabilityLine.Adorn.Parent
|
||||||
if clusterPartsInRegion(minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector)
|
if clusterPartsInRegion minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector
|
||||||
flashRedBox!
|
flashRedBox!
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|
@ -1829,7 +1835,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
)
|
)
|
||||||
|
|
||||||
for b = 1, #blockingParts
|
for b = 1, #blockingParts
|
||||||
if isBlocker(blockingParts[b])
|
if isBlocker blockingParts[b]
|
||||||
flashRedBox!
|
flashRedBox!
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|
@ -1893,22 +1899,22 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
-- if target point is in cluster, just use cluster\SetCell
|
-- if target point is in cluster, just use cluster\SetCell
|
||||||
if isMegaClusterPart!
|
if isMegaClusterPart!
|
||||||
-- if targetCFrame is inside cluster, just set that cell to 1 and return
|
-- if targetCFrame is inside cluster, just set that cell to 1 and return
|
||||||
--cellPos = cluster\WorldToCell(targetCFrame.p)
|
--cellPos = cluster\WorldToCell targetCFrame.p
|
||||||
|
|
||||||
local cellPos
|
local cellPos
|
||||||
if stampData.CurrentParts\IsA "Model"
|
if stampData.CurrentParts\IsA "Model"
|
||||||
cellPos = cluster\WorldToCell(stampData.CurrentParts\GetModelCFrame!.p)
|
cellPos = cluster\WorldToCell stampData.CurrentParts\GetModelCFrame!.p
|
||||||
else
|
else
|
||||||
cellPos = cluster\WorldToCell(stampData.CurrentParts.CFrame.p)
|
cellPos = cluster\WorldToCell stampData.CurrentParts.CFrame.p
|
||||||
|
|
||||||
|
|
||||||
cMax = game.Workspace.Terrain.MaxExtents.Max
|
cMax = game.Workspace.Terrain.MaxExtents.Max
|
||||||
cMin = game.Workspace.Terrain.MaxExtents.Min
|
cMin = game.Workspace.Terrain.MaxExtents.Min
|
||||||
|
|
||||||
if checkTerrainBlockCollisions(cellPos, false)
|
if checkTerrainBlockCollisions cellPos, false
|
||||||
clusterValues = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
|
clusterValues = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
|
||||||
waterForceTag = stampData.CurrentParts\FindFirstChild("WaterForceTag", true)
|
waterForceTag = stampData.CurrentParts\FindFirstChild "WaterForceTag", true
|
||||||
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild("WaterForceDirectionTag", true)
|
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild "WaterForceDirectionTag", true
|
||||||
|
|
||||||
if cellPos.X >= cMin.X and
|
if cellPos.X >= cMin.X and
|
||||||
cellPos.Y >= cMin.Y and
|
cellPos.Y >= cMin.Y and
|
||||||
|
|
@ -1944,7 +1950,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
clusterValues.Value.Z
|
clusterValues.Value.Z
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
cluster\SetCell(cellPos.X, cellPos.Y, cellPos.Z, clusterValues.Value, 0, 0)
|
cluster\SetCell cellPos.X, cellPos.Y, cellPos.Z, clusterValues.Value, 0, 0
|
||||||
|
|
||||||
|
|
||||||
autoWedgeClusterParts = false
|
autoWedgeClusterParts = false
|
||||||
|
|
@ -1957,7 +1963,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
game.Workspace.Terrain\AutowedgeCells(
|
game.Workspace.Terrain\AutowedgeCells(
|
||||||
Region3int16.new(
|
Region3int16.new(
|
||||||
Vector3int16.new(cellPos.x - 1, cellPos.y - 1, cellPos.z - 1),
|
Vector3int16.new(cellPos.x - 1, cellPos.y - 1, cellPos.z - 1),
|
||||||
Vector3int16.new(cellPos.x + 1, cellPos.y + 1, cellPos.z + 1)
|
Vector3int16.new cellPos.x + 1, cellPos.y + 1, cellPos.z + 1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -1978,12 +1984,10 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
|
|
||||||
|
|
||||||
getPlayer = ->
|
getPlayer = ->
|
||||||
if game\FindFirstChild "Players"
|
if game\FindFirstChild"Players" and
|
||||||
if game.Players["LocalPlayer"]
|
game.Players["LocalPlayer"]
|
||||||
return game.Players.LocalPlayer
|
|
||||||
|
return game.Players.LocalPlayer
|
||||||
|
|
||||||
return nil
|
|
||||||
|
|
||||||
|
|
||||||
-- Post process: after positioning the part or model, restore transparency, material, anchored and collide states and create joints
|
-- Post process: after positioning the part or model, restore transparency, material, anchored and collide states and create joints
|
||||||
|
|
@ -1992,10 +1996,10 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
-- Tyler's magical hack-code for allowing/preserving clones of both Surface and Manual Welds... just don't ask X<
|
-- Tyler's magical hack-code for allowing/preserving clones of both Surface and Manual Welds... just don't ask X<
|
||||||
manualWeldTable = {}
|
manualWeldTable = {}
|
||||||
manualWeldParentTable = {}
|
manualWeldParentTable = {}
|
||||||
saveTheWelds(stampData.CurrentParts, manualWeldTable, manualWeldParentTable)
|
saveTheWelds stampData.CurrentParts, manualWeldTable, manualWeldParentTable
|
||||||
stampData.CurrentParts\BreakJoints!
|
stampData.CurrentParts\BreakJoints!
|
||||||
stampData.CurrentParts\MakeJoints!
|
stampData.CurrentParts\MakeJoints!
|
||||||
restoreTheWelds(manualWeldTable, manualWeldParentTable)
|
restoreTheWelds manualWeldTable, manualWeldParentTable
|
||||||
|
|
||||||
|
|
||||||
-- if it's a model, we also want to fill in the playerID and playerName tags, if it has those (e.g. for the friend-only door)
|
-- if it's a model, we also want to fill in the playerID and playerName tags, if it has those (e.g. for the friend-only door)
|
||||||
|
|
@ -2017,22 +2021,19 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
-- ...and tag all inserted models for subsequent origin identification
|
-- ...and tag all inserted models for subsequent origin identification
|
||||||
-- if no RobloxModel tag already exists, then add it.
|
-- if no RobloxModel tag already exists, then add it.
|
||||||
if not stampData.CurrentParts\FindFirstChild"RobloxModel"?
|
if not stampData.CurrentParts\FindFirstChild"RobloxModel"?
|
||||||
stringTag = Instance.new "BoolValue"
|
New "BoolValue", "RobloxModel"
|
||||||
stringTag.Name = "RobloxModel"
|
Parent: stampData.CurrentParts
|
||||||
stringTag.Parent = stampData.CurrentParts
|
|
||||||
|
|
||||||
if not stampData.CurrentParts\FindFirstChild"RobloxStamper"?
|
if not stampData.CurrentParts\FindFirstChild"RobloxStamper"?
|
||||||
stringTag2 = Instance.new "BoolValue"
|
New "BoolValue", "RobloxStamper"
|
||||||
stringTag2.Name = "RobloxStamper"
|
Parent: stampData.CurrentParts
|
||||||
stringTag2.Parent = stampData.CurrentParts
|
|
||||||
|
|
||||||
|
|
||||||
else
|
else
|
||||||
stampData.CurrentParts\BreakJoints!
|
stampData.CurrentParts\BreakJoints!
|
||||||
if not stampData.CurrentParts\FindFirstChild"RobloxStamper"?
|
if not stampData.CurrentParts\FindFirstChild"RobloxStamper"?
|
||||||
stringTag2 = Instance.new "BoolValue"
|
New "BoolValue", "RobloxStamper"
|
||||||
stringTag2.Name = "RobloxStamper"
|
Parent: stampData.CurrentParts
|
||||||
stringTag2.Parent = stampData.CurrentParts
|
|
||||||
|
|
||||||
|
|
||||||
-- make sure all the joints are activated before restoring anchor states
|
-- make sure all the joints are activated before restoring anchor states
|
||||||
|
|
@ -2061,7 +2062,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
|
|
||||||
|
|
||||||
for part, surfaces in pairs stampData.SurfaceTypeTable
|
for part, surfaces in pairs stampData.SurfaceTypeTable
|
||||||
loadSurfaceTypes(part, surfaces)
|
loadSurfaceTypes part, surfaces
|
||||||
|
|
||||||
|
|
||||||
if isMegaClusterPart!
|
if isMegaClusterPart!
|
||||||
|
|
@ -2069,21 +2070,21 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
|
|
||||||
|
|
||||||
-- re-enable all seats
|
-- re-enable all seats
|
||||||
setSeatEnabledStatus(stampData.CurrentParts, true)
|
setSeatEnabledStatus stampData.CurrentParts, true
|
||||||
|
|
||||||
stampData.TransparencyTable = nil
|
with stampData
|
||||||
stampData.ArchivableTable = nil
|
.TransparencyTable = nil
|
||||||
stampData.MaterialTable = nil
|
.ArchivableTable = nil
|
||||||
stampData.CanCollideTable = nil
|
.MaterialTable = nil
|
||||||
stampData.AnchoredTable = nil
|
.CanCollideTable = nil
|
||||||
stampData.SurfaceTypeTable = nil
|
.AnchoredTable = nil
|
||||||
|
.SurfaceTypeTable = nil
|
||||||
|
|
||||||
-- ...and tag all inserted models for subsequent origin identification
|
-- ...and tag all inserted models for subsequent origin identification
|
||||||
-- if no RobloxModel tag already exists, then add it.
|
-- if no RobloxModel tag already exists, then add it.
|
||||||
if not stampData.CurrentParts\FindFirstChild"RobloxModel"?
|
if not stampData.CurrentParts\FindFirstChild"RobloxModel"?
|
||||||
stringTag = Instance.new "BoolValue"
|
New "BoolValue", "RobloxModel"
|
||||||
stringTag.Name = "RobloxModel"
|
Parent: stampData.CurrentParts
|
||||||
stringTag.Parent = stampData.CurrentParts
|
|
||||||
|
|
||||||
|
|
||||||
-- and make sure we don't delete it, now that it's not a ghost part
|
-- and make sure we don't delete it, now that it's not a ghost part
|
||||||
|
|
@ -2141,7 +2142,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
isPositive *= -1
|
isPositive *= -1
|
||||||
whichSurface *= -1
|
whichSurface *= -1
|
||||||
|
|
||||||
surfaceNormal = isPositive * modelCFrame\vectorToWorldSpace(AXIS_VECTORS[whichSurface])
|
surfaceNormal = isPositive * modelCFrame\vectorToWorldSpace AXIS_VECTORS[whichSurface]
|
||||||
|
|
||||||
for i = 1, #parts
|
for i = 1, #parts
|
||||||
currPart = parts[i]
|
currPart = parts[i]
|
||||||
|
|
@ -2178,9 +2179,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
||||||
resumeStamper = ->
|
resumeStamper = ->
|
||||||
clone, parts = prepareModel modelToStamp
|
clone, parts = prepareModel modelToStamp
|
||||||
|
|
||||||
if not clone or not parts
|
return if not clone or not parts
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
-- if we have unjoinable faces, then we want to change those surfaces to be Unjoinable
|
-- if we have unjoinable faces, then we want to change those surfaces to be Unjoinable
|
||||||
unjoinableTag = clone\FindFirstChild "UnjoinableFaces", true
|
unjoinableTag = clone\FindFirstChild "UnjoinableFaces", true
|
||||||
|
|
|
||||||
|
|
@ -223,9 +223,9 @@ toggleBackpack = ->
|
||||||
backpackButton.Visible = true
|
backpackButton.Visible = true
|
||||||
loadoutBackground.Visible = true
|
loadoutBackground.Visible = true
|
||||||
if frame\GetChildren![1]\IsA "ImageButton"
|
if frame\GetChildren![1]\IsA "ImageButton"
|
||||||
imgButton = frame\GetChildren![1]
|
with frame\GetChildren![1]
|
||||||
imgButton.Active = true
|
.Active = true
|
||||||
imgButton.Draggable = false
|
.Draggable = false
|
||||||
|
|
||||||
|
|
||||||
activateBackpack = ->
|
activateBackpack = ->
|
||||||
|
|
|
||||||
|
|
@ -1021,10 +1021,10 @@ Chat.IsTouchDevice ==>
|
||||||
-- Chat.ScrollQueue = (value) =>
|
-- Chat.ScrollQueue = (value) =>
|
||||||
-- for i = 1, #@MessageQueue
|
-- for i = 1, #@MessageQueue
|
||||||
-- if @MessageQueue[i]
|
-- if @MessageQueue[i]
|
||||||
-- for _, label in pairs(@MessageQueue[i])
|
-- for _, label in pairs @MessageQueue[i]
|
||||||
-- next = @MessageQueue[i].Next
|
-- next = @MessageQueue[i].Next
|
||||||
-- previous = @MessageQueue[i].Previous
|
-- previous = @MessageQueue[i].Previous
|
||||||
-- if label and label\IsA('TextLabel') or label\IsA('TextButton')
|
-- if label and label\IsA('TextLabel') or label\IsA 'TextButton'
|
||||||
-- if value > 0 and previous and previous['Message']
|
-- if value > 0 and previous and previous['Message']
|
||||||
-- label.Position = previous['Message'].Position
|
-- label.Position = previous['Message'].Position
|
||||||
-- elseif value < 1 and next['Message']
|
-- elseif value < 1 and next['Message']
|
||||||
|
|
@ -1039,7 +1039,7 @@ Chat.UpdateQueue = (field, diff) =>
|
||||||
if label and type(label) ~= "table" and type(label) ~= "number"
|
if label and type(label) ~= "table" and type(label) ~= "number"
|
||||||
if label\IsA"TextLabel" or label\IsA "TextButton"
|
if label\IsA"TextLabel" or label\IsA "TextButton"
|
||||||
if diff
|
if diff
|
||||||
label.Position = label.Position - UDim2.new(0, 0, diff, 0)
|
label.Position = label.Position - UDim2.new 0, 0, diff, 0
|
||||||
else
|
else
|
||||||
if field == @MessageQueue[i]
|
if field == @MessageQueue[i]
|
||||||
label.Position = UDim2.new(
|
label.Position = UDim2.new(
|
||||||
|
|
@ -1148,17 +1148,17 @@ Chat.UpdateChat = (cPlayer, message) =>
|
||||||
|
|
||||||
heightField = mLabel.TextBounds.Y
|
heightField = mLabel.TextBounds.Y
|
||||||
|
|
||||||
mLabel.Size = UDim2.new(1, 0, heightField/@RenderFrame.AbsoluteSize.Y, 0)
|
mLabel.Size = UDim2.new 1, 0, heightField/@RenderFrame.AbsoluteSize.Y, 0
|
||||||
pLabel.Size = mLabel.Size
|
pLabel.Size = mLabel.Size
|
||||||
|
|
||||||
diff = mLabel.Size.Y.Scale - prevYScale
|
diff = mLabel.Size.Y.Scale - prevYScale
|
||||||
|
|
||||||
Chat\UpdateQueue(@MessageQueue[i], diff)
|
Chat\UpdateQueue @MessageQueue[i], diff
|
||||||
end ]]
|
end ]]
|
||||||
|
|
||||||
-- Chat.ApplyFilter = (str) =>
|
-- Chat.ApplyFilter = (str) =>
|
||||||
-- --[[for _, word in pair(@Filter_List)
|
-- --[[for _, word in pair @Filter_List
|
||||||
-- if string.find(str, word)
|
-- if string.find str, word
|
||||||
-- str\gsub word, '@#$^'
|
-- str\gsub word, '@#$^'
|
||||||
-- ]]
|
-- ]]
|
||||||
|
|
||||||
|
|
@ -1232,12 +1232,10 @@ Chat.CreateMessage = (cPlayer, message) =>
|
||||||
else
|
else
|
||||||
pLabel.TextColor3 = cPlayer.TeamColor.Color
|
pLabel.TextColor3 = cPlayer.TeamColor.Color
|
||||||
|
|
||||||
local nString
|
nString = if not @CachedSpaceStrings_List[pName]
|
||||||
|
Chat\ComputeSpaceString pLabel
|
||||||
if not @CachedSpaceStrings_List[pName]
|
|
||||||
nString = Chat\ComputeSpaceString pLabel
|
|
||||||
else
|
else
|
||||||
nString = @CachedSpaceStrings_List[pName]
|
@CachedSpaceStrings_List[pName]
|
||||||
|
|
||||||
mLabel = New "TextLabel", "#{pName} - message"
|
mLabel = New "TextLabel", "#{pName} - message"
|
||||||
-- Max is 3 lines
|
-- Max is 3 lines
|
||||||
|
|
@ -1299,7 +1297,7 @@ Chat.FindButtonTree = (scButton, rootList) =>
|
||||||
list = rootList[button]
|
list = rootList[button]
|
||||||
elseif type(rootList[button]) == "table"
|
elseif type(rootList[button]) == "table"
|
||||||
list = Chat\FindButtonTree scButton, rootList[button]
|
list = Chat\FindButtonTree scButton, rootList[button]
|
||||||
return list
|
list
|
||||||
|
|
||||||
Chat.ToggleSafeChatMenu = (scButton) =>
|
Chat.ToggleSafeChatMenu = (scButton) =>
|
||||||
list = Chat\FindButtonTree scButton, @SafeChatTree
|
list = Chat\FindButtonTree scButton, @SafeChatTree
|
||||||
|
|
@ -1308,7 +1306,7 @@ Chat.ToggleSafeChatMenu = (scButton) =>
|
||||||
if button\IsA"TextButton" or button\IsA "ImageButton"
|
if button\IsA"TextButton" or button\IsA "ImageButton"
|
||||||
button.Visible = not button.Visible
|
button.Visible = not button.Visible
|
||||||
return true
|
return true
|
||||||
return false
|
false
|
||||||
|
|
||||||
Chat.CreateSafeChatOptions = (list, rootButton) =>
|
Chat.CreateSafeChatOptions = (list, rootButton) =>
|
||||||
text_List = {}
|
text_List = {}
|
||||||
|
|
@ -1338,7 +1336,7 @@ Chat.CreateSafeChatOptions = (list, rootButton) =>
|
||||||
if type(list[msg]) == "table"
|
if type(list[msg]) == "table"
|
||||||
text_List[rootButton][chatText] = Chat\CreateSafeChatOptions list[msg], chatText
|
text_List[rootButton][chatText] = Chat\CreateSafeChatOptions list[msg], chatText
|
||||||
-- else
|
-- else
|
||||||
-- --table.insert(text_List[chatText], true)
|
-- --table.insert text_List[chatText], true
|
||||||
chatText.MouseEnter\connect ->
|
chatText.MouseEnter\connect ->
|
||||||
Chat\ToggleSafeChatMenu chatText
|
Chat\ToggleSafeChatMenu chatText
|
||||||
|
|
||||||
|
|
@ -1351,7 +1349,7 @@ Chat.CreateSafeChatOptions = (list, rootButton) =>
|
||||||
-- for i, v in pairs lList
|
-- for i, v in pairs lList
|
||||||
try
|
try
|
||||||
PlayersService\Chat lList[1]
|
PlayersService\Chat lList[1]
|
||||||
return text_List
|
text_List
|
||||||
|
|
||||||
Chat.CreateSafeChatGui ==>
|
Chat.CreateSafeChatGui ==>
|
||||||
@SafeChatFrame = New "Frame", "SafeChatFrame"
|
@SafeChatFrame = New "Frame", "SafeChatFrame"
|
||||||
|
|
@ -1455,7 +1453,7 @@ Chat.CreateChatBar ==>
|
||||||
ClearTextOnFocus: false
|
ClearTextOnFocus: false
|
||||||
|
|
||||||
-- Engine has code to offset the entire world, so if we do it by -20 pixels nothing gets in our chat's way
|
-- Engine has code to offset the entire world, so if we do it by -20 pixels nothing gets in our chat's way
|
||||||
--GuiService\SetGlobalSizeOffsetPixel(0, -20)
|
--GuiService\SetGlobalSizeOffsetPixel 0, -20
|
||||||
success, error = try
|
success, error = try
|
||||||
GuiService\SetGlobalGuiInset 0, 0, 0, 20
|
GuiService\SetGlobalGuiInset 0, 0, 0, 20
|
||||||
if not success
|
if not success
|
||||||
|
|
@ -1600,7 +1598,7 @@ Chat.FindMessageInSafeChat = (message, list) =>
|
||||||
-- Just a wrapper around our PlayerChatted event
|
-- Just a wrapper around our PlayerChatted event
|
||||||
Chat.PlayerChatted = (...) =>
|
Chat.PlayerChatted = (...) =>
|
||||||
args = { ... }
|
args = { ... }
|
||||||
-- argCount = select("#", ...)
|
-- argCount = select "#", ...
|
||||||
local player, message
|
local player, message
|
||||||
-- This doesn't look very good, but what else to do?
|
-- This doesn't look very good, but what else to do?
|
||||||
if args[2]
|
if args[2]
|
||||||
|
|
@ -1624,7 +1622,7 @@ Chat.PlayerChatted = (...) =>
|
||||||
Chat.CullThread ==>
|
Chat.CullThread ==>
|
||||||
while true
|
while true
|
||||||
if #@MessageQueue > 0
|
if #@MessageQueue > 0
|
||||||
for _, field in pairs(@MessageQueue)
|
for _, field in pairs @MessageQueue
|
||||||
if field["SpawnTime"] and
|
if field["SpawnTime"] and
|
||||||
field["Player"] and
|
field["Player"] and
|
||||||
field["Message"] and
|
field["Message"] and
|
||||||
|
|
|
||||||
12
yue/host.yue
12
yue/host.yue
|
|
@ -29,10 +29,8 @@ getKillerOfHumanoidIfStillInGame = (humanoid) ->
|
||||||
tag = humanoid\findFirstChild "creator"
|
tag = humanoid\findFirstChild "creator"
|
||||||
|
|
||||||
-- find player with name on tag
|
-- find player with name on tag
|
||||||
if tag
|
if tag and tag.Value.Parent -- killer still in game
|
||||||
killer = tag.Value
|
return tag.Value
|
||||||
if killer.Parent -- killer still in game
|
|
||||||
return killer
|
|
||||||
|
|
||||||
|
|
||||||
-- send kill and death stats when a player dies
|
-- send kill and death stats when a player dies
|
||||||
|
|
@ -82,7 +80,7 @@ try
|
||||||
|
|
||||||
scriptContext.ScriptsDisabled = true
|
scriptContext.ScriptsDisabled = true
|
||||||
|
|
||||||
-- game\SetPlaceID(nil, false)
|
-- game\SetPlaceID nil, false
|
||||||
game\GetService"ChangeHistoryService"\SetEnabled false
|
game\GetService"ChangeHistoryService"\SetEnabled false
|
||||||
|
|
||||||
-- establish this peer as the Server
|
-- establish this peer as the Server
|
||||||
|
|
@ -99,7 +97,7 @@ if url?
|
||||||
game\GetService"ContentProvider"\SetBaseUrl "#{url}/"
|
game\GetService"ContentProvider"\SetBaseUrl "#{url}/"
|
||||||
|
|
||||||
-- try
|
-- try
|
||||||
-- game\GetService"Players"\SetChatFilterUrl(url .. "/Game/ChatFilter.ashx")
|
-- game\GetService"Players"\SetChatFilterUrl url .. "/Game/ChatFilter.ashx"
|
||||||
|
|
||||||
-- game\GetService"BadgeService"\SetPlaceId placeId
|
-- game\GetService"BadgeService"\SetPlaceId placeId
|
||||||
if access?
|
if access?
|
||||||
|
|
@ -134,7 +132,7 @@ try
|
||||||
game\GetService"NetworkServer"\SetIsPlayerAuthenticationRequired true
|
game\GetService"NetworkServer"\SetIsPlayerAuthenticationRequired true
|
||||||
|
|
||||||
settings!.Diagnostics.LuaRamLimit = 0
|
settings!.Diagnostics.LuaRamLimit = 0
|
||||||
--settings!.Network\SetThroughputSensitivity(0.08, 0.01)
|
--settings!.Network\SetThroughputSensitivity 0.08, 0.01
|
||||||
--settings!.Network.SendRate = 35
|
--settings!.Network.SendRate = 35
|
||||||
--settings!.Network.PhysicsSend = 0 -- 1==RoundRobin
|
--settings!.Network.PhysicsSend = 0 -- 1==RoundRobin
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue