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),
|
||||
TextWrapped=true,Text=aC,BackgroundTransparency=1,BorderSizePixel=0,FontSize=aE}
|
||||
)end local aB aB=function(aC)return a('ImageButton',aC,{Size=UDim2.new(0,153,0,
|
||||
46),Name=aC})end local aC aC=function(aD)k=false if aD then aa()if j then local
|
||||
aE=false if(tostring(j['isValid'])):lower()=='true'then aE=true end Game:
|
||||
GetService'MarketplaceService':SignalPromptProductPurchaseFinished(tonumber(j[
|
||||
'playerId']),tonumber(j['productId']),aE)else print
|
||||
46)})end local aC aC=function(aD)k=false if aD then aa()if j then local aE=false
|
||||
if(tostring(j['isValid'])):lower()=='true'then aE=true end Game:GetService
|
||||
'MarketplaceService':SignalPromptProductPurchaseFinished(tonumber(j['playerId'])
|
||||
,tonumber(j['productId']),aE)else print
|
||||
'Something went wrong, no currentServerResponseTable'end return Z()else local aE
|
||||
=string.gsub(R,'itemName',tostring(d['Name']))q.BodyFrame.ItemPreview.
|
||||
ItemDescription.Text=aE ab(q.BodyFrame.OkPurchasedButton)return _()end end local
|
||||
|
|
|
|||
|
|
@ -80,16 +80,16 @@ if F==H then return true end end return false end local F F=function(G,H)local I
|
|||
,J,K,L,M,N,O,P,Q,R=nil,false,b.RotateCamera,-1,false,nil,b.ZoomCamera,{},nil,nil
|
||||
R=function()s=nil J=false I=nil end local S S=function()P={}N=nil M=false Q:
|
||||
Destroy()Q=nil end local T T=function(U,V)if Q~=nil then Q:Destroy()end Q=a(
|
||||
'Frame',{Name='PinchFrame',BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),
|
||||
Parent=G})Q.InputChanged:connect(function(W)if not M then S()return end R()if
|
||||
not(N~=nil)then if W==U then N=(W.Position-V.Position).magnitude U=W elseif W==V
|
||||
then N=(W.Position-U.Position).magnitude V=W end else local X=0 if W==U then X=(
|
||||
W.Position-V.Position).magnitude U=W elseif W==V then X=(W.Position-U.Position).
|
||||
magnitude V=W end if X~=0 then local Y=X-N if Y~=0 then O(b,(Y*q))end N=X end
|
||||
end end)return Q.InputEnded:connect(function(W)if W==U or W==V then return S()
|
||||
end end)end local U U=function(V)if#P<1 then table.insert(P,V)L=tick()M=false
|
||||
elseif#P==1 then M=((tick()-L)<=r)if M then table.insert(P,V)return T(P[1],P[2])
|
||||
else P={}end end end G.InputBegan:connect(function(V)if V.UserInputType~=Enum.
|
||||
'Frame','PinchFrame',{BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),Parent=G}
|
||||
)Q.InputChanged:connect(function(W)if not M then S()return end R()if not(N~=nil)
|
||||
then if W==U then N=(W.Position-V.Position).magnitude U=W elseif W==V then N=(W.
|
||||
Position-U.Position).magnitude V=W end else local X=0 if W==U then X=(W.Position
|
||||
-V.Position).magnitude U=W elseif W==V then X=(W.Position-U.Position).magnitude
|
||||
V=W end if X~=0 then local Y=X-N if Y~=0 then O(b,(Y*q))end N=X end end end)
|
||||
return Q.InputEnded:connect(function(W)if W==U or W==V then return S()end end)
|
||||
end local U U=function(V)if#P<1 then table.insert(P,V)L=tick()M=false elseif#P==
|
||||
1 then M=((tick()-L)<=r)if M then table.insert(P,V)return T(P[1],P[2])else P={}
|
||||
end end end G.InputBegan:connect(function(V)if V.UserInputType~=Enum.
|
||||
UserInputType.Touch then return end if D(V)then return end local W=E(V)if not W
|
||||
then U(V)end if not(s~=nil)and not W then s=V I=Vector2.new(s.Position.x,s.
|
||||
Position.y)end end)b.InputChanged:connect(function(V)if V.UserInputType~=Enum.
|
||||
|
|
|
|||
|
|
@ -1,202 +1,197 @@
|
|||
print'[Mercury]: Loaded corescript 157877000'local a,b=assert(LoadLibrary
|
||||
'RbxUtility').Create,script.Parent:FindFirstChild'ControlFrame'or script.Parent
|
||||
local c,d,e,f=a'Frame'{Name='DevConsoleContainer',Parent=b,BackgroundColor3=
|
||||
Color3.new(0,0,0),BackgroundTransparency=0.9,Position=UDim2.new(0,100,0,10),Size
|
||||
=UDim2.new(0.5,20,0.5,20),Visible=false},a'BindableFunction'{Name=
|
||||
'ToggleDevConsole',Parent=b},false,nil f=function()if e then return end e=true
|
||||
local g,h,i,j=1,2,1000,Vector2.new(245,180)local k,l,m,n,o,p,q,r,s,t,u,v,w=g,{},
|
||||
{},0,0,true,true,true,true,false,0,0,a'Frame'{Name='Body',Parent=c,
|
||||
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.
|
||||
new(0,0,0,21),Size=UDim2.new(1,0,1,-25)}local x=a'Frame'{Name='OptionsHolder',
|
||||
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=
|
||||
UDim2.new(0,220,0,0),Size=UDim2.new(1,-255,0,24),ClipsDescendants=true}local y=a
|
||||
'Frame'{Name='OptionsBar',Parent=x,BackgroundColor3=Color3.new(0,0,0),
|
||||
BackgroundTransparency=1,Position=UDim2.new(0,-250,0,4),Size=UDim2.new(0,234,0,
|
||||
18)}local z=a'TextButton'{Name='ErrorToggleButton',Parent=y,BackgroundColor3=
|
||||
Color3.new(0,0,0),BorderColor3=Color3.new(1,0,0),Position=UDim2.new(0,115,0,0),
|
||||
Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=Enum.FontSize.Size14,
|
||||
Text='',TextColor3=Color3.new(1,0,0)}a'Frame'{Name='CheckFrame',Parent=z,
|
||||
BackgroundColor3=Color3.new(1,0,0),BorderColor3=Color3.new(1,0,0),Position=UDim2
|
||||
.new(0,4,0,4),Size=UDim2.new(0,10,0,10)}local A=a'TextButton'{Name=
|
||||
'InfoToggleButton',Parent=y,BackgroundColor3=Color3.new(0,0,0),BorderColor3=
|
||||
Color3.new(0.4,0.5,1),Position=UDim2.new(0,65,0,0),Size=UDim2.new(0,18,0,18),
|
||||
Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='',TextColor3=Color3.
|
||||
new(0.4,0.5,1)}a'Frame'{Name='CheckFrame',Parent=A,BackgroundColor3=Color3.new(
|
||||
0.4,0.5,1),BorderColor3=Color3.new(0.4,0.5,1),Position=UDim2.new(0,4,0,4),Size=
|
||||
UDim2.new(0,10,0,10)}local B=a'TextButton'{Name='OutputToggleButton',Parent=y,
|
||||
BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.new(1,1,1),Position=UDim2
|
||||
.new(0,40,0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=Enum.
|
||||
FontSize.Size14,Text='',TextColor3=Color3.new(1,1,1)}a'Frame'{Name='CheckFrame',
|
||||
Parent=B,BackgroundColor3=Color3.new(1,1,1),BorderColor3=Color3.new(1,1,1),
|
||||
Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10)}local C=a'TextButton'{Name
|
||||
='WarningToggleButton',Parent=y,BackgroundColor3=Color3.new(0,0,0),BorderColor3=
|
||||
Color3.new(1,0.6,0.4),Position=UDim2.new(0,90,0,0),Size=UDim2.new(0,18,0,18),
|
||||
Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='',TextColor3=Color3.
|
||||
new(1,0.6,0.4)}a'Frame'{Name='CheckFrame',Parent=C,BackgroundColor3=Color3.new(1
|
||||
,0.6,0.4),BorderColor3=Color3.new(1,0.6,0.4),Position=UDim2.new(0,4,0,4),Size=
|
||||
UDim2.new(0,10,0,10)}local D=a'TextButton'{Name='WordWrapToggleButton',Parent=y,
|
||||
BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.new(0.8,0.8,0.8),Position
|
||||
=UDim2.new(0,215,0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=
|
||||
Enum.FontSize.Size14,Text='',TextColor3=Color3.new(0.8,0.8,0.8)}a'Frame'{Name=
|
||||
'CheckFrame',Parent=D,BackgroundColor3=Color3.new(0.8,0.8,0.8),BorderColor3=
|
||||
Color3.new(0.8,0.8,0.8),Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10),
|
||||
Visible=false}a'TextLabel'{Name='Filter',Parent=y,BackgroundTransparency=1,
|
||||
Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,40,0,18),Font='SourceSansBold',
|
||||
FontSize=Enum.FontSize.Size14,Text='Filter',TextColor3=Color3.new(1,1,1)}a
|
||||
'TextLabel'{Name='WordWrap',Parent=y,BackgroundTransparency=1,Position=UDim2.
|
||||
new(0,150,0,0),Size=UDim2.new(0,50,0,18),Font='SourceSansBold',FontSize=Enum.
|
||||
FontSize.Size14,Text='Word Wrap',TextColor3=Color3.new(1,1,1)}local E=a'Frame'{
|
||||
Name='ScrollBar',Parent=w,BackgroundColor3=Color3.new(0,0,0),
|
||||
BackgroundTransparency=0.9,Position=UDim2.new(1,-20,0,26),Size=UDim2.new(0,20,1,
|
||||
-50),Visible=false}local F=a'Frame'{Name='ScrollArea',Parent=E,
|
||||
BackgroundTransparency=1,Position=UDim2.new(0,0,0,23),Size=UDim2.new(1,0,1,-46)}
|
||||
local G=a'ImageButton'{Name='Handle',Parent=F,BackgroundColor3=Color3.new(0,0,0)
|
||||
,BackgroundTransparency=0.5,Position=UDim2.new(0,0,0.2,0),Size=UDim2.new(0,20,0,
|
||||
40)}a'ImageLabel'{Name='ImageLabel',Parent=G,BackgroundTransparency=1,Position=
|
||||
UDim2.new(0,0,0.5,-8),Rotation=180,Size=UDim2.new(1,0,0,16),Image=
|
||||
'http://www.roblox.com/Asset?id=151205881'}local H=a'ImageButton'{Name='Down',
|
||||
Parent=E,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=
|
||||
UDim2.new(0,0,1,-20),Size=UDim2.new(0,20,0,20)}a'ImageLabel'{Name='ImageLabel',
|
||||
Parent=H,BackgroundTransparency=1,Position=UDim2.new(0,3,0,3),Size=UDim2.new(0,
|
||||
14,0,14),Rotation=180,Image='http://www.roblox.com/Asset?id=151205813'}local I=a
|
||||
'ImageButton'{Name='Up',Parent=E,BackgroundColor3=Color3.new(0,0,0),
|
||||
BackgroundTransparency=0.5,Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,20,0,20)
|
||||
}a'ImageLabel'{Name='ImageLabel',Parent=I,BackgroundTransparency=1,Position=
|
||||
UDim2.new(0,3,0,3),Size=UDim2.new(0,14,0,14),Image=
|
||||
'http://www.roblox.com/Asset?id=151205813'}local J=a'Frame'{Name='TextBox',
|
||||
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.6,Position=
|
||||
UDim2.new(0,2,0,26),Size=UDim2.new(1,-4,1,-28),ClipsDescendants=true}local K,L=a
|
||||
'Frame'{Name='TextHolder',Parent=J,BackgroundTransparency=1,Position=UDim2.new(0
|
||||
,0,0,0),Size=UDim2.new(1,0,1,0)},a'ImageButton'{Name='OptionsButton',Parent=w,
|
||||
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=UDim2.new(0
|
||||
,200,0,2),Size=UDim2.new(0,20,0,20)}a'ImageLabel'{Name='ImageLabel',Parent=L,
|
||||
BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0),
|
||||
Rotation=0,Image='http://www.roblox.com/Asset?id=152093917'}local M=a
|
||||
'ImageButton'{Name='ResizeButton',Parent=w,BackgroundColor3=Color3.new(0,0,0),
|
||||
BackgroundTransparency=0.5,Position=UDim2.new(1,-20,1,-20),Size=UDim2.new(0,20,0
|
||||
,20)}a'ImageLabel'{Name='ImageLabel',Parent=M,BackgroundTransparency=1,Position=
|
||||
UDim2.new(0,6,0,6),Size=UDim2.new(0.8,0,0.8,0),Rotation=135,Image=
|
||||
'http://www.roblox.com/Asset?id=151205813'}a'TextButton'{Name='LocalConsole',
|
||||
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.6,Position=
|
||||
UDim2.new(0,7,0,5),Size=UDim2.new(0,90,0,20),Font='SourceSansBold',FontSize=Enum
|
||||
.FontSize.Size14,Text='Local Console',TextColor3=Color3.new(1,1,1),
|
||||
TextYAlignment=Enum.TextYAlignment.Center}a'TextButton'{Name='ServerConsole',
|
||||
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.8,Position=
|
||||
UDim2.new(0,102,0,5),Size=UDim2.new(0,90,0,17),Font='SourceSansBold',FontSize=
|
||||
Enum.FontSize.Size14,Text='Server Console',TextColor3=Color3.new(1,1,1),
|
||||
TextYAlignment=Enum.TextYAlignment.Center}local N=a'Frame'{Name='TitleBar',
|
||||
print'[Mercury]: Loaded corescript 157877000'local a a=function(b,c,d)if not(d~=
|
||||
nil)then d=c c=nil end local e=Instance.new(b)if c then e.Name=c end local f for
|
||||
g,h in pairs(d)do if type(g)=='string'then if g=='Parent'then f=h else e[g]=h
|
||||
end elseif type(g)=='number'and type(h)=='userdata'then h.Parent=e end end e.
|
||||
Parent=f return e end local b=script.Parent:FindFirstChild'ControlFrame'or
|
||||
script.Parent local c,d,e,f=a('Frame','DevConsoleContainer',{Parent=b,
|
||||
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.9,Position=UDim2.
|
||||
new(0,100,0,10),Size=UDim2.new(0.5,20,0.5,20),Visible=false}),a(
|
||||
'BindableFunction','ToggleDevConsole',{Parent=b}),false,nil f=function()if e
|
||||
then return end e=true local g,h,i,j=1,2,1000,Vector2.new(245,180)local k,l,m,n,
|
||||
o,p,q,r,s,t,u,v,w=g,{},{},0,0,true,true,true,true,false,0,0,a('Frame','Body',{
|
||||
Parent=c,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=
|
||||
UDim2.new(0,0,0,0),Size=UDim2.new(1,0,0,20)}local O=a'ImageButton'{Name=
|
||||
'CloseButton',Parent=N,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency
|
||||
=0.5,Position=UDim2.new(1,-20,0,0),Size=UDim2.new(0,20,0,20)}a'ImageLabel'{
|
||||
Parent=O,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=
|
||||
UDim2.new(0,3,0,3),Size=UDim2.new(0,14,0,14),Image=
|
||||
'http://www.roblox.com/Asset?id=151205852'}a'TextButton'{Name='TextButton',
|
||||
Parent=N,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=
|
||||
UDim2.new(0,0,0,0),Size=UDim2.new(1,-23,1,0),Text=''}a'TextLabel'{Name=
|
||||
'TitleText',Parent=N,BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=
|
||||
UDim2.new(0,185,0,20),Font='SourceSansBold',FontSize=Enum.FontSize.Size18,
|
||||
TextColor3=Color3.new(1,1,1),Text='Roblox Developer Console',TextYAlignment=Enum
|
||||
.TextYAlignment.Top}local P,Q,R,S,T,U,V,W,X=nil,nil,nil,nil,nil,nil,false,false,
|
||||
nil X=function()P=nil Q=nil R=nil S=nil T=nil U=nil V=false W=false end local Y
|
||||
Y=function(Z,_)if not P then return end local aa=Vector2.new(Z,_-P)c.Position=
|
||||
UDim2.new(0,Q.X+aa.X,0,Q.Y+aa.Y)end N.TextButton.MouseButton1Down:connect(
|
||||
function(aa,Z)P=Vector2.new(aa,Z)Q=c.AbsolutePosition end)N.TextButton.
|
||||
MouseButton1Up:connect(X)local aa aa=function(Z,_)if not R then return end local
|
||||
ab=Vector2.new(Z,_-R)c.Size=UDim2.new(0,math.max(S.X+ab.X,j.X),0,math.max(S.Y+ab
|
||||
.Y,j.Y))end c.Body.ResizeButton.MouseButton1Down:connect(function(ab,Z)R=Vector2
|
||||
.new(ab,Z)S=c.AbsoluteSize end)c.Body.ResizeButton.MouseButton1Up:connect(X)N.
|
||||
CloseButton.MouseButton1Down:connect(function()c.Visible=false end)c.TitleBar.
|
||||
CloseButton.MouseButton1Up:connect(X)local ab,Z,_=true,false,nil _=function()if
|
||||
Z then return end Z=true repeat v=v+(function()if ab then return-1 else return 1
|
||||
end end)()local ac=v/5 local ad=ac*ac*(3-(2*ac))L.ImageLabel.Rotation=ad*5*9 y.
|
||||
Position=UDim2.new(0,(ad*5*50)-250,0,4)wait()if(v<=0 and ab)or(v>=5 and not ab)
|
||||
then Z=false end until not Z end L.MouseButton1Down:connect(function()ab=not ab
|
||||
return _()end)local ac ac=function()if k==g then n=math.min(math.max(n,0),u-c.
|
||||
Body.TextBox.AbsoluteSize.Y)K.Size=UDim2.new(1,0,0,u)elseif k==h then o=math.
|
||||
min(math.max(o,0),u-c.Body.TextBox.AbsoluteSize.Y)K.Size=UDim2.new(1,0,0,u)end
|
||||
local ad=c.Body.TextBox.AbsoluteSize.Y/K.AbsoluteSize.Y if ad>=1 then c.Body.
|
||||
ScrollBar.Visible=false c.Body.TextBox.Size=UDim2.new(1,-4,1,-28)if k==g or k==h
|
||||
then K.Position=UDim2.new(0,0,1,0-u)end else c.Body.ScrollBar.Visible=true c.
|
||||
Body.TextBox.Size=UDim2.new(1,-25,1,-28)local ae,af=1-ad,nil if k==g then af=n/K
|
||||
.AbsoluteSize.Y elseif k==h then af=o/K.AbsoluteSize.Y end local ag,ah=math.max(
|
||||
0,ae-af),math.max(F.AbsoluteSize.Y*ad,21)local ai=ah/F.AbsoluteSize.Y local aj=(
|
||||
1-ai)/(1-ad)local ak=ag*aj local al=math.min(F.AbsoluteSize.Y*ak,F.AbsoluteSize.
|
||||
Y-ah)F.Handle.Size=UDim2.new(1,0,0,ah)F.Handle.Position=UDim2.new(0,0,0,al)K.
|
||||
Position=UDim2.new(0,0,1,0-u+(function()if k==g then return n elseif k==h then
|
||||
return o end end)())end end local ad ad=function(ae)if k==g then n=n+ae elseif k
|
||||
==h then o=o+ae end return ac()end local ae ae=function()local af,ag=K:
|
||||
GetChildren(),nil if k==g then ag=l elseif k==h then ag=m end local ah=0 for ai=
|
||||
1,#af do af[ai].Visible=false end for ai=1,#ag do local aj,ak=nil,false if ai>#
|
||||
af then aj=a'TextLabel'{Name='Message',Parent=K,BackgroundTransparency=1,
|
||||
TextXAlignment='Left',Size=UDim2.new(1,0,0,14),FontSize='Size10',ZIndex=1}ak=
|
||||
true else aj=af[ai]end if(s or ag[ai].Type~=Enum.MessageType.MessageOutput)and(r
|
||||
or ag[ai].Type~=Enum.MessageType.MessageInfo)and(q or ag[ai].Type~=Enum.
|
||||
MessageType.MessageWarning)and(p or ag[ai].Type~=Enum.MessageType.MessageError)
|
||||
then do aj.TextWrapped=t aj.Size=UDim2.new(0.98,0,0,2000)aj.Parent=c aj.Text=
|
||||
tostring(ag[ai].Time)..' -- '..tostring(ag[ai].Message)aj.Size=UDim2.new(0.98,0,
|
||||
0,aj.TextBounds.Y)aj.Position=UDim2.new(0,5,0,ah)aj.Parent=K ah=ah+aj.TextBounds
|
||||
.Y end if ak then if(k==g and n>0)or(k==h and o>0)then ad(aj.TextBounds.Y)end
|
||||
end aj.Visible=true aj.TextColor3=Color3.new((function()if ag[ai].Type==Enum.
|
||||
MessageType.MessageError then return 1,0,0 elseif ag[ai].Type==Enum.MessageType.
|
||||
MessageInfo then return 0.4,0.5,1 elseif ag[ai].Type==Enum.MessageType.
|
||||
MessageWarning then return 1,0.6,0.4 else return 1,1,1 end end)())end end u=ah
|
||||
end local af,ag=false,nil ag=function()if af then return end Delay(0.1,function(
|
||||
)af=false return ae()end)af=true end local ah,ai=0,nil ai=function()if V then
|
||||
return end V=true wait(0.6)ah=ah+1 while V and ah<2 do wait()ad(12)end ah=ah-1
|
||||
end local aj aj=function()if W then return end W=true wait(0.6)ah=ah+1 while W
|
||||
and ah<2 do wait()ad(-12)end ah=ah-1 end c.Body.ScrollBar.Up.MouseButton1Click:
|
||||
connect(function()return ad(10)end)c.Body.ScrollBar.Up.MouseButton1Down:connect(
|
||||
function()ad(10)return ai()end)c.Body.ScrollBar.Up.MouseButton1Up:connect(X)c.
|
||||
Body.ScrollBar.Down.MouseButton1Down:connect(function()ad(-10)return aj()end)c.
|
||||
Body.ScrollBar.Down.MouseButton1Up:connect(X)local ak ak=function(al,am)if not T
|
||||
then return end local an,ao,ap=(Vector2.new(al,am-T)).Y,1-(c.Body.TextBox.
|
||||
AbsoluteSize.Y/K.AbsoluteSize.Y),F.AbsoluteSize.Y-F.Handle.AbsoluteSize.Y local
|
||||
aq=math.max(math.min(an,ap),0-ap)local ar,as=aq/ap,(ao*K.AbsoluteSize.Y)local at
|
||||
=as*ar if k==g then n=U-at elseif k==h then o=U-at end end F.Handle.
|
||||
MouseButton1Down:connect(function(al,am)T=Vector2.new(al,am)if k==g then U=n
|
||||
elseif k==h then U=o end end)F.Handle.MouseButton1Up:connect(X)local al al=
|
||||
function(am,an,ao)local ap,aq=am.AbsolutePosition,am.AbsoluteSize if an<ap.X or
|
||||
an>ap.X+aq.X or ao<ap.y or ao>ap.y+aq.y then return false end return true end
|
||||
local am am=function(an)if an<10 then return'0'..tostring(an)else return an end
|
||||
end local an,ao='%s:%s:%s',nil ao=function(ap)local aq=ap-os.time()+math.floor(
|
||||
tick())local ar=aq%86400 local as=math.floor(ar/3600)ar=ar-(as*3600)local at=
|
||||
math.floor(ar/60)ar=ar-(at*60)local au,av,aw=am(as),am(at),am(ar)return an:
|
||||
format(au,av,aw)end y.ErrorToggleButton.MouseButton1Down:connect(function()p=not
|
||||
p y.ErrorToggleButton.CheckFrame.Visible=p ag()return ac()end)y.
|
||||
WarningToggleButton.MouseButton1Down:connect(function()q=not q y.
|
||||
WarningToggleButton.CheckFrame.Visible=q ag()return ac()end)y.InfoToggleButton.
|
||||
MouseButton1Down:connect(function()r=not r y.InfoToggleButton.CheckFrame.Visible
|
||||
=r ag()return ac()end)y.OutputToggleButton.MouseButton1Down:connect(function()s=
|
||||
not s y.OutputToggleButton.CheckFrame.Visible=s ag()return ac()end)y.
|
||||
WordWrapToggleButton.MouseButton1Down:connect(function()t=not t y.
|
||||
WordWrapToggleButton.CheckFrame.Visible=t ag()return ac()end)local ap ap=
|
||||
function(aq,ar,as)l[#l+1]={Message=aq,Time=ao(as),Type=ar}while#l>i do table.
|
||||
remove(l,1)end ag()return ac()end local aq aq=function(ar,as,at)m[#m+1]={Message
|
||||
=ar,Time=ao(at),Type=as}while#m>i do table.remove(m,1)end ag()return ac()end c.
|
||||
Body.LocalConsole.MouseButton1Click:connect(function()if k==h then k=g local ar,
|
||||
as=c.Body.LocalConsole,c.Body.ServerConsole ar.Size=UDim2.new(0,90,0,20)as.Size=
|
||||
UDim2.new(0,90,0,17)ar.BackgroundTransparency=0.6 as.BackgroundTransparency=0.8
|
||||
if game:FindFirstChild'Players'and game.Players['LocalPlayer']then local at=game
|
||||
.Players.LocalPlayer:GetMouse()Y(at.X,at.Y)aa(at.X,at.Y)ak(at.X,at.Y)end ag()
|
||||
return ac()end end)c.Body.LocalConsole.MouseButton1Up:connect(X)local ar=false c
|
||||
.Body.ServerConsole.MouseButton1Click:connect(function()if not ar then ar=true
|
||||
game:GetService'LogService':RequestServerOutput()end if k==g then k=h local as,
|
||||
at=c.Body.LocalConsole,c.Body.ServerConsole at.Size=UDim2.new(0,90,0,20)as.Size=
|
||||
UDim2.new(0,90,0,17)at.BackgroundTransparency=0.6 as.BackgroundTransparency=0.8
|
||||
if game:FindFirstChild'Players'and game.Players['LocalPlayer']then local au=game
|
||||
.Players.LocalPlayer:GetMouse()Y(au.X,au.Y)aa(au.X,au.Y)ak(au.X,au.Y)end ag()
|
||||
return ac()end end)c.Body.ServerConsole.MouseButton1Up:connect(X)if game:
|
||||
FindFirstChild'Players'and game.Players['LocalPlayer']then local as=game.Players
|
||||
.LocalPlayer:GetMouse()as.Move:connect(function()if not c.Visible then return
|
||||
end local at=game.Players.LocalPlayer:GetMouse()Y(at.X,at.Y)aa(at.X,at.Y)ak(at.X
|
||||
,at.Y)ag()return ac()end)as.Button1Up:connect(X)as.WheelForward:connect(function
|
||||
()if not c.Visible then return end if al(c,as.X,as.Y)then return ad(10)end end)
|
||||
as.WheelBackward:connect(function()if not c.Visible then return end if al(c,as.X
|
||||
,as.Y)then return ad(-10)end end)end F.Handle.MouseButton1Down:connect(function(
|
||||
)return ac()end)local as=game:GetService'LogService':GetLogHistory()for at=1,#as
|
||||
do ap(as[at].message,as[at].messageType,as[at].timestamp)end local at=game:
|
||||
GetService'LogService'at.MessageOut:connect(function(au,av)return ap(au,av,os.
|
||||
time())end)at.ServerMessageOut:connect(aq)return at end local aa=false d.
|
||||
OnInvoke=function()if aa then return end aa=true f()c.Visible=not c.Visible aa=
|
||||
false end
|
||||
UDim2.new(0,0,0,21),Size=UDim2.new(1,0,1,-25),a('ImageButton','ResizeButton',{
|
||||
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.
|
||||
new(1,-20,1,-20),Size=UDim2.new(0,20,0,20),a('ImageLabel','ImageLabel',{
|
||||
BackgroundTransparency=1,Position=UDim2.new(0,6,0,6),Size=UDim2.new(0.8,0,0.8,0)
|
||||
,Rotation=135,Image='http://www.roblox.com/Asset?id=151205813'})}),a(
|
||||
'TextButton','LocalConsole',{BackgroundColor3=Color3.new(0,0,0),
|
||||
BackgroundTransparency=0.6,Position=UDim2.new(0,7,0,5),Size=UDim2.new(0,90,0,20)
|
||||
,Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='Local Console',
|
||||
TextColor3=Color3.new(1,1,1),TextYAlignment=Enum.TextYAlignment.Center}),a(
|
||||
'TextButton','ServerConsole',{BackgroundColor3=Color3.new(0,0,0),
|
||||
BackgroundTransparency=0.8,Position=UDim2.new(0,102,0,5),Size=UDim2.new(0,90,0,
|
||||
17),Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='Server Console',
|
||||
TextColor3=Color3.new(1,1,1),TextYAlignment=Enum.TextYAlignment.Center})})local
|
||||
x=a('Frame','OptionsHolder',{Parent=w,BackgroundColor3=Color3.new(0,0,0),
|
||||
BackgroundTransparency=1,Position=UDim2.new(0,220,0,0),Size=UDim2.new(1,-255,0,
|
||||
24),ClipsDescendants=true})local y,z=a('Frame','OptionsBar',{Parent=x,
|
||||
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=UDim2.new(0
|
||||
,-250,0,4),Size=UDim2.new(0,234,0,18),a('TextButton','ErrorToggleButton',{
|
||||
BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.new(1,0,0),Position=UDim2
|
||||
.new(0,115,0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=Enum.
|
||||
FontSize.Size14,Text='',TextColor3=Color3.new(1,0,0),a('Frame','CheckFrame',{
|
||||
BackgroundColor3=Color3.new(1,0,0),BorderColor3=Color3.new(1,0,0),Position=UDim2
|
||||
.new(0,4,0,4),Size=UDim2.new(0,10,0,10)})}),a('TextButton','InfoToggleButton',{
|
||||
BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.new(0.4,0.5,1),Position=
|
||||
UDim2.new(0,65,0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=
|
||||
Enum.FontSize.Size14,Text='',TextColor3=Color3.new(0.4,0.5,1),a('Frame',
|
||||
'CheckFrame',{BackgroundColor3=Color3.new(0.4,0.5,1),BorderColor3=Color3.new(0.4
|
||||
,0.5,1),Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10)})}),a('TextButton'
|
||||
,'OutputToggleButton',{BackgroundColor3=Color3.new(0,0,0),BorderColor3=Color3.
|
||||
new(1,1,1),Position=UDim2.new(0,40,0,0),Size=UDim2.new(0,18,0,18),Font=
|
||||
'SourceSansBold',FontSize=Enum.FontSize.Size14,Text='',TextColor3=Color3.new(1,1
|
||||
,1),a('Frame','CheckFrame',{BackgroundColor3=Color3.new(1,1,1),BorderColor3=
|
||||
Color3.new(1,1,1),Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10)})}),a(
|
||||
'TextButton','WarningToggleButton',{BackgroundColor3=Color3.new(0,0,0),
|
||||
BorderColor3=Color3.new(1,0.6,0.4),Position=UDim2.new(0,90,0,0),Size=UDim2.new(0
|
||||
,18,0,18),Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='',TextColor3
|
||||
=Color3.new(1,0.6,0.4),a('Frame','CheckFrame',{BackgroundColor3=Color3.new(1,0.6
|
||||
,0.4),BorderColor3=Color3.new(1,0.6,0.4),Position=UDim2.new(0,4,0,4),Size=UDim2.
|
||||
new(0,10,0,10)})}),a('TextButton','WordWrapToggleButton',{BackgroundColor3=
|
||||
Color3.new(0,0,0),BorderColor3=Color3.new(0.8,0.8,0.8),Position=UDim2.new(0,215,
|
||||
0,0),Size=UDim2.new(0,18,0,18),Font='SourceSansBold',FontSize=Enum.FontSize.
|
||||
Size14,Text='',TextColor3=Color3.new(0.8,0.8,0.8),a('Frame','CheckFrame',{
|
||||
BackgroundColor3=Color3.new(0.8,0.8,0.8),BorderColor3=Color3.new(0.8,0.8,0.8),
|
||||
Position=UDim2.new(0,4,0,4),Size=UDim2.new(0,10,0,10),Visible=false})}),a(
|
||||
'TextLabel','Filter',{BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=
|
||||
UDim2.new(0,40,0,18),Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text=
|
||||
'Filter',TextColor3=Color3.new(1,1,1)}),a('TextLabel','WordWrap',{
|
||||
BackgroundTransparency=1,Position=UDim2.new(0,150,0,0),Size=UDim2.new(0,50,0,18)
|
||||
,Font='SourceSansBold',FontSize=Enum.FontSize.Size14,Text='Word Wrap',TextColor3
|
||||
=Color3.new(1,1,1)})}),a('Frame','ScrollBar',{Parent=w,BackgroundColor3=Color3.
|
||||
new(0,0,0),BackgroundTransparency=0.9,Position=UDim2.new(1,-20,0,26),Size=UDim2.
|
||||
new(0,20,1,-50),Visible=false,a('ImageButton','Down',{BackgroundColor3=Color3.
|
||||
new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.new(0,0,1,-20),Size=UDim2.
|
||||
new(0,20,0,20),a('ImageLabel','ImageLabel',{BackgroundTransparency=1,Position=
|
||||
UDim2.new(0,3,0,3),Size=UDim2.new(0,14,0,14),Rotation=180,Image=
|
||||
'http://www.roblox.com/Asset?id=151205813'})}),a('ImageButton','Up',{
|
||||
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.
|
||||
new(0,0,0,0),Size=UDim2.new(0,20,0,20),a('ImageLabel','ImageLabel',{
|
||||
BackgroundTransparency=1,Position=UDim2.new(0,3,0,3),Size=UDim2.new(0,14,0,14),
|
||||
Image='http://www.roblox.com/Asset?id=151205813'})})})local A,B=a('Frame',
|
||||
'ScrollArea',{Parent=z,BackgroundTransparency=1,Position=UDim2.new(0,0,0,23),
|
||||
Size=UDim2.new(1,0,1,-46),a('ImageButton','Handle',{BackgroundColor3=Color3.new(
|
||||
0,0,0),BackgroundTransparency=0.5,Position=UDim2.new(0,0,0.2,0),Size=UDim2.new(0
|
||||
,20,0,40),a('ImageLabel','ImageLabel',{BackgroundTransparency=1,Position=UDim2.
|
||||
new(0,0,0.5,-8),Rotation=180,Size=UDim2.new(1,0,0,16),Image=
|
||||
'http://www.roblox.com/Asset?id=151205881'})})}),a('Frame','TextBox',{Parent=w,
|
||||
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.6,Position=UDim2.
|
||||
new(0,2,0,26),Size=UDim2.new(1,-4,1,-28),ClipsDescendants=true})local C,D,E,F,G,
|
||||
H,I,J,K,L,M,N=a('Frame','TextHolder',{Parent=B,BackgroundTransparency=1,Position
|
||||
=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0)}),a('ImageButton','OptionsButton',{
|
||||
Parent=w,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=
|
||||
UDim2.new(0,200,0,2),Size=UDim2.new(0,20,0,20),a('ImageLabel','ImageLabel',{
|
||||
BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0),
|
||||
Rotation=0,Image='http://www.roblox.com/Asset?id=152093917'})}),a('Frame',
|
||||
'TitleBar',{Parent=c,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=
|
||||
0.5,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,0,20),a('ImageButton',
|
||||
'CloseButton',{BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,
|
||||
Position=UDim2.new(1,-20,0,0),Size=UDim2.new(0,20,0,20),a('ImageLabel',{
|
||||
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,Position=UDim2.new(0
|
||||
,3,0,3),Size=UDim2.new(0,14,0,14),Image=
|
||||
'http://www.roblox.com/Asset?id=151205852'})}),a('TextButton','TextButton',{
|
||||
BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.5,Position=UDim2.
|
||||
new(0,0,0,0),Size=UDim2.new(1,-23,1,0),Text=''}),a('TextLabel','TitleText',{
|
||||
BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,185,0,20),
|
||||
Font='SourceSansBold',FontSize=Enum.FontSize.Size18,TextColor3=Color3.new(1,1,1)
|
||||
,Text='Roblox Developer Console',TextYAlignment=Enum.TextYAlignment.Top})}),nil,
|
||||
nil,nil,nil,nil,nil,false,false,nil N=function()F=nil G=nil H=nil I=nil J=nil K=
|
||||
nil L=false M=false end local O O=function(P,Q)if not F then return end local R=
|
||||
Vector2.new(P,Q-F)c.Position=UDim2.new(0,G.X+R.X,0,G.Y+R.Y)end E.TextButton.
|
||||
MouseButton1Down:connect(function(P,Q)F=Vector2.new(P,Q)G=c.AbsolutePosition end
|
||||
)E.TextButton.MouseButton1Up:connect(N)local P P=function(Q,R)if not H then
|
||||
return end local S=Vector2.new(Q,R-H)c.Size=UDim2.new(0,math.max(I.X+S.X,j.X),0,
|
||||
math.max(I.Y+S.Y,j.Y))end c.Body.ResizeButton.MouseButton1Down:connect(function(
|
||||
Q,R)H=Vector2.new(Q,R)I=c.AbsoluteSize end)c.Body.ResizeButton.MouseButton1Up:
|
||||
connect(N)E.CloseButton.MouseButton1Down:connect(function()c.Visible=false end)c
|
||||
.TitleBar.CloseButton.MouseButton1Up:connect(N)local Q,R,S=true,false,nil S=
|
||||
function()if R then return end R=true repeat v=v+(function()if Q then return-1
|
||||
else return 1 end end)()local T=v/5 local U=T*T*(3-(2*T))D.ImageLabel.Rotation=U
|
||||
*5*9 y.Position=UDim2.new(0,(U*5*50)-250,0,4)wait()if(v<=0 and Q)or(v>=5 and not
|
||||
Q)then R=false end until not R end D.MouseButton1Down:connect(function()Q=not Q
|
||||
return S()end)local T T=function()if k==g then n=math.min(math.max(n,0),u-c.Body
|
||||
.TextBox.AbsoluteSize.Y)C.Size=UDim2.new(1,0,0,u)elseif k==h then o=math.min(
|
||||
math.max(o,0),u-c.Body.TextBox.AbsoluteSize.Y)C.Size=UDim2.new(1,0,0,u)end local
|
||||
U=c.Body.TextBox.AbsoluteSize.Y/C.AbsoluteSize.Y if U>=1 then c.Body.ScrollBar.
|
||||
Visible=false c.Body.TextBox.Size=UDim2.new(1,-4,1,-28)if k==g or k==h then C.
|
||||
Position=UDim2.new(0,0,1,0-u)end else c.Body.ScrollBar.Visible=true c.Body.
|
||||
TextBox.Size=UDim2.new(1,-25,1,-28)local V,W=1-U,nil if k==g then W=n/C.
|
||||
AbsoluteSize.Y elseif k==h then W=o/C.AbsoluteSize.Y end local X,Y=math.max(0,V-
|
||||
W),math.max(A.AbsoluteSize.Y*U,21)local Z=Y/A.AbsoluteSize.Y local _=(1-Z)/(1-U)
|
||||
local aa=X*_ local ab=math.min(A.AbsoluteSize.Y*aa,A.AbsoluteSize.Y-Y)A.Handle.
|
||||
Size=UDim2.new(1,0,0,Y)A.Handle.Position=UDim2.new(0,0,0,ab)C.Position=UDim2.
|
||||
new(0,0,1,0-u+(function()if k==g then return n elseif k==h then return o end end
|
||||
)())end end local aa aa=function(ab)if k==g then n=n+ab elseif k==h then o=o+ab
|
||||
end return T()end local ab ab=function()local U,V=C:GetChildren(),nil if k==g
|
||||
then V=l elseif k==h then V=m end local W=0 for X=1,#U do U[X].Visible=false end
|
||||
for X=1,#V do local Y,Z=nil,false if X>#U then Y=a('TextLabel','Message',{Parent
|
||||
=C,BackgroundTransparency=1,TextXAlignment='Left',Size=UDim2.new(1,0,0,14),
|
||||
FontSize='Size10',ZIndex=1})Z=true else Y=U[X]end if(s or V[X].Type~=Enum.
|
||||
MessageType.MessageOutput)and(r or V[X].Type~=Enum.MessageType.MessageInfo)and(q
|
||||
or V[X].Type~=Enum.MessageType.MessageWarning)and(p or V[X].Type~=Enum.
|
||||
MessageType.MessageError)then do Y.TextWrapped=t Y.Size=UDim2.new(0.98,0,0,2000)
|
||||
Y.Parent=c Y.Text=tostring(V[X].Time)..' -- '..tostring(V[X].Message)Y.Size=
|
||||
UDim2.new(0.98,0,0,Y.TextBounds.Y)Y.Position=UDim2.new(0,5,0,W)Y.Parent=C W=W+Y.
|
||||
TextBounds.Y end if Z then if(k==g and n>0)or(k==h and o>0)then aa(Y.TextBounds.
|
||||
Y)end end Y.Visible=true Y.TextColor3=Color3.new((function()if V[X].Type==Enum.
|
||||
MessageType.MessageError then return 1,0,0 elseif V[X].Type==Enum.MessageType.
|
||||
MessageInfo then return 0.4,0.5,1 elseif V[X].Type==Enum.MessageType.
|
||||
MessageWarning then return 1,0.6,0.4 else return 1,1,1 end end)())end end u=W
|
||||
end local U,V=false,nil V=function()if U then return end Delay(0.1,function()U=
|
||||
false return ab()end)U=true end local W,X=0,nil X=function()if L then return end
|
||||
L=true wait(0.6)W=W+1 while L and W<2 do wait()aa(12)end W=W-1 end local Y Y=
|
||||
function()if M then return end M=true wait(0.6)W=W+1 while M and W<2 do wait()
|
||||
aa(-12)end W=W-1 end c.Body.ScrollBar.Up.MouseButton1Click:connect(function()
|
||||
return aa(10)end)c.Body.ScrollBar.Up.MouseButton1Down:connect(function()aa(10)
|
||||
return X()end)c.Body.ScrollBar.Up.MouseButton1Up:connect(N)c.Body.ScrollBar.Down
|
||||
.MouseButton1Down:connect(function()aa(-10)return Y()end)c.Body.ScrollBar.Down.
|
||||
MouseButton1Up:connect(N)local Z Z=function(_,ac)if not J then return end local
|
||||
ad,ae,af=(Vector2.new(_,ac-J)).Y,1-(c.Body.TextBox.AbsoluteSize.Y/C.AbsoluteSize
|
||||
.Y),A.AbsoluteSize.Y-A.Handle.AbsoluteSize.Y local ag=math.max(math.min(ad,af),0
|
||||
-af)local ah,ai=ag/af,(ae*C.AbsoluteSize.Y)local aj=ai*ah if k==g then n=K-aj
|
||||
elseif k==h then o=K-aj end end A.Handle.MouseButton1Down:connect(function(ac,ad
|
||||
)J=Vector2.new(ac,ad)if k==g then K=n elseif k==h then K=o end end)A.Handle.
|
||||
MouseButton1Up:connect(N)local ac ac=function(ad,ae,af)local ag,ah=ad.
|
||||
AbsolutePosition,ad.AbsoluteSize if ae<ag.X or ae>ag.X+ah.X or af<ag.y or af>ag.
|
||||
y+ah.y then return false end return true end local ad ad=function(ae)if ae<10
|
||||
then return'0'..tostring(ae)else return ae end end local ae,af='%s:%s:%s',nil af
|
||||
=function(ag)local ah=ag-os.time()+math.floor(tick())local ai=ah%86400 local aj=
|
||||
math.floor(ai/3600)ai=ai-(aj*3600)local _=math.floor(ai/60)ai=ai-(_*60)local ak,
|
||||
al,am=ad(aj),ad(_),ad(ai)return ae:format(ak,al,am)end y.ErrorToggleButton.
|
||||
MouseButton1Down:connect(function()p=not p y.ErrorToggleButton.CheckFrame.
|
||||
Visible=p V()return T()end)y.WarningToggleButton.MouseButton1Down:connect(
|
||||
function()q=not q y.WarningToggleButton.CheckFrame.Visible=q V()return T()end)y.
|
||||
InfoToggleButton.MouseButton1Down:connect(function()r=not r y.InfoToggleButton.
|
||||
CheckFrame.Visible=r V()return T()end)y.OutputToggleButton.MouseButton1Down:
|
||||
connect(function()s=not s y.OutputToggleButton.CheckFrame.Visible=s V()return T(
|
||||
)end)y.WordWrapToggleButton.MouseButton1Down:connect(function()t=not t y.
|
||||
WordWrapToggleButton.CheckFrame.Visible=t V()return T()end)local ag ag=function(
|
||||
ah,ai,aj)l[#l+1]={Message=ah,Time=af(aj),Type=ai}while#l>i do table.remove(l,1)
|
||||
end V()return T()end local ah ah=function(ai,aj,ak)m[#m+1]={Message=ai,Time=af(
|
||||
ak),Type=aj}while#m>i do table.remove(m,1)end V()return T()end c.Body.
|
||||
LocalConsole.MouseButton1Click:connect(function()if k==h then k=g local ai,aj=c.
|
||||
Body.LocalConsole,c.Body.ServerConsole ai.Size=UDim2.new(0,90,0,20)aj.Size=UDim2
|
||||
.new(0,90,0,17)ai.BackgroundTransparency=0.6 aj.BackgroundTransparency=0.8 if
|
||||
game:FindFirstChild'Players'and game.Players['LocalPlayer']then local ak=game.
|
||||
Players.LocalPlayer:GetMouse()O(ak.X,ak.Y)P(ak.X,ak.Y)Z(ak.X,ak.Y)end V()return
|
||||
T()end end)c.Body.LocalConsole.MouseButton1Up:connect(N)local ai=false c.Body.
|
||||
ServerConsole.MouseButton1Click:connect(function()if not ai then ai=true game:
|
||||
GetService'LogService':RequestServerOutput()end if k==g then k=h local aj,ak=c.
|
||||
Body.LocalConsole,c.Body.ServerConsole ak.Size=UDim2.new(0,90,0,20)aj.Size=UDim2
|
||||
.new(0,90,0,17)ak.BackgroundTransparency=0.6 aj.BackgroundTransparency=0.8 if
|
||||
game:FindFirstChild'Players'and game.Players['LocalPlayer']then local al=game.
|
||||
Players.LocalPlayer:GetMouse()O(al.X,al.Y)P(al.X,al.Y)Z(al.X,al.Y)end V()return
|
||||
T()end end)c.Body.ServerConsole.MouseButton1Up:connect(N)if game:FindFirstChild
|
||||
'Players'and game.Players['LocalPlayer']then local aj=game.Players.LocalPlayer:
|
||||
GetMouse()aj.Move:connect(function()if not c.Visible then return end local ak=
|
||||
game.Players.LocalPlayer:GetMouse()O(ak.X,ak.Y)P(ak.X,ak.Y)Z(ak.X,ak.Y)V()return
|
||||
T()end)aj.Button1Up:connect(N)aj.WheelForward:connect(function()if not c.Visible
|
||||
then return end if ac(c,aj.X,aj.Y)then return aa(10)end end)aj.WheelBackward:
|
||||
connect(function()if not c.Visible then return end if ac(c,aj.X,aj.Y)then return
|
||||
aa(-10)end end)end A.Handle.MouseButton1Down:connect(function()return T()end)
|
||||
local aj=game:GetService'LogService':GetLogHistory()for ak=1,#aj do ag(aj[ak].
|
||||
message,aj[ak].messageType,aj[ak].timestamp)end local ak=game:GetService
|
||||
'LogService'ak.MessageOut:connect(function(al,am)return ag(al,am,os.time())end)
|
||||
ak.ServerMessageOut:connect(ah)return ak end local aa=false d.OnInvoke=function(
|
||||
)if aa then return end aa=true f()c.Visible=not c.Visible aa=false end
|
||||
|
|
@ -4,22 +4,22 @@ g,h in pairs(d)do if type(g)=='string'then if g=='Parent'then f=h else e[g]=h
|
|||
end elseif type(g)=='number'and type(h)=='userdata'then h.Parent=e end end e.
|
||||
Parent=f return e end local b,c,d=5,5,nil d=function(e,f)local g=e:
|
||||
findFirstChild(f)if g then return g end while true do g=e.ChildAdded:wait()if g.
|
||||
Name==f then return g end end end local e=script.Parent local f,g,h,i=d(e,
|
||||
'Humanoid'),d(e,'Torso'),e:FindFirstChild'PlayerStats',Instance.new'BoolValue'i.
|
||||
Name='InCharTag'local j=Instance.new'BoolValue'j.Name='RobloxBuildTool'if not(h
|
||||
~=nil)then h=a('Configuration','PlayerStats',{Parent=e})end local k=h:
|
||||
FindFirstChild'MaxHealth'if not(k~=nil)then k=a('NumberValue','MaxHealth',{Value
|
||||
=100,Parent=h})end f.MaxHealth=k.Value f.Health=k.Value local l l=function()f.
|
||||
MaxHealth=k.Value f.Health=k.Value end k.Changed:connect(l)local m=game.Players:
|
||||
Name==f then return g end end end local e=script.Parent local f,g,h,i,j=d(e,
|
||||
'Humanoid'),d(e,'Torso'),e:FindFirstChild'PlayerStats',a('BoolValue',{Name=
|
||||
'InCharTag'}),a('BoolValue',{Name='RobloxBuildTool'})if not(h~=nil)then h=a(
|
||||
'Configuration','PlayerStats',{Parent=e})end local k=h:FindFirstChild'MaxHealth'
|
||||
if not(k~=nil)then k=a('NumberValue','MaxHealth',{Value=100,Parent=h})end f.
|
||||
MaxHealth=k.Value f.Health=k.Value local l l=function()f.MaxHealth=k.Value f.
|
||||
Health=k.Value end k.Changed:connect(l)local m=game.Players:
|
||||
GetPlayerFromCharacter(script.Parent)local n=m.PlayerGui:FindFirstChild
|
||||
'DamageOverTimeGui'if not(n~=nil)then n=a('BillboardGui','DamageOverTimeGui',{
|
||||
Parent=m.PlayerGui,Adornee=script.Parent:FindFirstChild'Head',Active=true,size=
|
||||
UDim2.new(b,0,c,0),StudsOffset=Vector3.new(0,2,0)})end print
|
||||
'newHealth declarations finished'local o o=function(p)local q=a('TextLabel',{
|
||||
Text=tostring(p),TextColor3=(function()if p>0 then return Color3.new(0,1,0)else
|
||||
return Color3.new(1,0,1)end end)(),size=UDim2.new(1,0,1,0),Active=true,FontSize=
|
||||
6,BackgroundTransparency=1,Parent=n})for r=1,10 do wait(0.1)q.TextTransparency=r
|
||||
/10 q.Position=UDim2.new(0,0,0,-r*5)q.FontSize=6-r*0.6 end return q:remove()end
|
||||
Text=tostring(p),TextColor3=Color3.new((function()if p>0 then return 0,1,0 else
|
||||
return 1,0,1 end end)()),size=UDim2.new(1,0,1,0),Active=true,FontSize=6,
|
||||
BackgroundTransparency=1,Parent=n})for r=1,10 do wait(0.1)q.TextTransparency=r/
|
||||
10 q.Position=UDim2.new(0,0,0,-r*5)q.FontSize=6-r*0.6 end q:remove()return q end
|
||||
local p p=function()if k.Value>=0 then f.MaxHealth=k.Value print(f.MaxHealth)if
|
||||
f.Health>f.MaxHealth then f.Health=f.MaxHealth end end end k.Changed:connect(p)
|
||||
local q=a('Fire','FireEffect',{Heat=0.1,Size=3,Enabled=false})while true do
|
||||
|
|
|
|||
|
|
@ -60,18 +60,18 @@ DialogTone.Friendly then J.BackgroundColor3=Color3.new(0,0.5019607843137255,0)J.
|
|||
Number.TextColor3=Color3.new(1,1,1)elseif K==Enum.DialogTone.Enemy then J.
|
||||
BackgroundColor3=Color3.new(0.8,0,0)J.Number.TextColor3=Color3.new(1,1,1)end end
|
||||
local J J=function()if j then j:Remove()j=nil end local K=h h=nil if K and K.
|
||||
InUse then local L=u:Clone()L.archivable=false L.Disabled=false L.Parent=K end
|
||||
for L,M in pairs(v)do if L and M then M.Enabled=not L.InUse end end i=nil end
|
||||
local L L=function()print'Wander'd.Visible=false J()return G(m,n)end local M M=
|
||||
function()print'Timeout'd.Visible=false J()return G(o,p)end local N N=function()
|
||||
print'Done'return J()end local O O=function(P)if string.len(P)==0 then return
|
||||
'...'else return P end end local P P=function(Q)if j then j:Remove()j=nil end j=
|
||||
t:Clone()j.archivable=false j.Disabled=false j.Parent=Q return j end local Q Q=
|
||||
function(R,S)if not h then return end i=R local T={}for U,V in pairs(S)do if V:
|
||||
IsA'DialogChoice'then table.insert(T,V)end end table.sort(T,function(W,X)return
|
||||
W.Name<X.Name end)if#T==0 then N()return end local W,X=1,0 g={}for Y,Z in pairs(
|
||||
e)do Z.Visible=false end for _,aa in pairs(T)do if W<=#e then e[W].Size=UDim2.
|
||||
new(1,0,0,72)e[W].UserPrompt.Text=aa.UserDialog local ab=math.ceil(e[W].
|
||||
InUse then do local L=u:Clone()L.archivable=false L.Disabled=false L.Parent=K
|
||||
end end for L,M in pairs(v)do if L and M then M.Enabled=not L.InUse end end i=
|
||||
nil end local L L=function()print'Wander'd.Visible=false J()return G(m,n)end
|
||||
local M M=function()print'Timeout'd.Visible=false J()return G(o,p)end local N N=
|
||||
function()print'Done'return J()end local O O=function(P)if string.len(P)==0 then
|
||||
return'...'else return P end end local P P=function(Q)if j then j:Remove()j=nil
|
||||
end j=t:Clone()j.archivable=false j.Disabled=false j.Parent=Q return j end local
|
||||
Q Q=function(R,S)if not h then return end i=R local T={}for U,V in pairs(S)do if
|
||||
V:IsA'DialogChoice'then table.insert(T,V)end end table.sort(T,function(W,X)
|
||||
return W.Name<X.Name end)if#T==0 then N()return end local W,X=1,0 g={}for Y,Z in
|
||||
pairs(e)do Z.Visible=false end for _,aa in pairs(T)do if W<=#e then e[W].Size=
|
||||
UDim2.new(1,0,0,72)e[W].UserPrompt.Text=aa.UserDialog local ab=math.ceil(e[W].
|
||||
UserPrompt.TextBounds.Y/24)*24 e[W].Position=UDim2.new(0,0,0,X)e[W].Size=UDim2.
|
||||
new(1,0,0,ab)e[W].Visible=true g[e[W]]=aa X=X+ab W=W+1 end end f.Position=UDim2.
|
||||
new(0,0,0,X)f.Number.Text=W..')'d.Size=UDim2.new(0,350,0,X+24+32)d.Position=
|
||||
|
|
|
|||
|
|
@ -364,8 +364,8 @@ IsA'ScreenGui'or n:IsA'BillboardGui'then return n end n=n.Parent end return nil
|
|||
end b.AutoTruncateTextObject=function(n)local o,p=n.Text,n:Clone()p.Name='Full'
|
||||
..n.Name p.BorderSizePixel=0 p.BackgroundTransparency=0 p.Text=o p.
|
||||
TextXAlignment=Enum.TextXAlignment.Center p.Position=UDim2.new(0,-3,0,0)p.Size=
|
||||
UDim2.new(0,100,1,0)p.Visible=false p.Parent=n local q,r,s,t t=function()if k(n
|
||||
==nil)then return end n.Text=o if n.TextFits then if r then r:disconnect()r=nil
|
||||
UDim2.new(0,100,1,0)p.Visible=false p.Parent=n local q,r,s,t t=function()if k(n)
|
||||
==nil then return end n.Text=o if n.TextFits then if r then r:disconnect()r=nil
|
||||
end if s then s:disconnect()s=nil end else local u=string.len(o)n.Text=o..'~'
|
||||
local v=i(0,u,function(v)if v==0 then n.Text='~'else n.Text=string.sub(o,1,v)..
|
||||
'~'end return n.TextFits end)q=string.sub(o,1,v)..'~'n.Text=q if not p.TextFits
|
||||
|
|
@ -537,10 +537,10 @@ Value=0}),a('StringValue','AssetName',{Value=''})})local Z=a('TextButton',
|
|||
'Button',{Text='',Style=Enum.ButtonStyle.RobloxButton,Position=UDim2.new(0.025,0
|
||||
,0.025,0),Size=UDim2.new(0.95,0,0.95,0),ZIndex=6,Parent=Y})local _=a(
|
||||
'ImageLabel','ButtonImage',{Image='',Position=UDim2.new(0,-7,0,-7),Size=UDim2.
|
||||
new(1,14,1,14),BackgroundTransparency=1,ZIndex=7,Parent=Z})local ac=_:clone()ac.
|
||||
Name='ConfigIcon'ac.Visible=false ac.Position=UDim2.new(1,-23,1,-24)ac.Size=
|
||||
UDim2.new(0,16,0,16)ac.Image=''ac.ZIndex=6 ac.Parent=Y return Y end local ac ac=
|
||||
function(Y)if Y:FindFirstChild'AssetId'then delay(0,function()game:GetService
|
||||
new(1,14,1,14),BackgroundTransparency=1,ZIndex=7,Parent=Z})do local ac=_:clone()
|
||||
ac.Name='ConfigIcon'ac.Visible=false ac.Position=UDim2.new(1,-23,1,-24)ac.Size=
|
||||
UDim2.new(0,16,0,16)ac.Image=''ac.ZIndex=6 ac.Parent=Y end return Y end local ac
|
||||
ac=function(Y)if Y:FindFirstChild'AssetId'then delay(0,function()game:GetService
|
||||
'ContentProvider':Preload(L..tostring(Y.AssetId.Value))A.SetPanel.ItemPreview.
|
||||
LargePreview.Image='LargeThumbnailUrl'..tostring(Y.AssetId.Value)end)end if Y:
|
||||
FindFirstChild'AssetName'then A.SetPanel.ItemPreview.TextPanel.RolloverText.Text
|
||||
|
|
@ -784,38 +784,38 @@ CreateTrueScrollingFrame()ar.Size=UDim2.new(1,0,1,0)ar.BackgroundColor3=Color3.
|
|||
new(0.2823529411764706,0.2823529411764706,0.2823529411764706)ar.BorderColor3=
|
||||
Color3.new(0,0,0)ar.Active=true ar.Parent=aq as.Parent=ag as.BackgroundColor3=
|
||||
Color3.new(0.2823529411764706,0.2823529411764706,0.2823529411764706)as.
|
||||
BorderSizePixel=0 as.BackgroundTransparency=0 as.Position=UDim2.new(1,-21,1,1)if
|
||||
ab then as.Size=UDim2.new(0,21,ab.Y.Scale,ab.Y.Offset)else as.Size=UDim2.new(0,
|
||||
21,0,400)end as:FindFirstChild'ScrollDownButton'.Position=UDim2.new(0,0,1,-20)a(
|
||||
'Frame','FakeLine',{BorderSizePixel=0,BackgroundColor3=Color3.new(0,0,0),Size=
|
||||
UDim2.new(0,1,1,1),Position=UDim2.new(1,0,0,0),Parent=as})at=a('TextButton',
|
||||
'VerticalDragger',{ZIndex=2,AutoButtonColor=false,BackgroundColor3=Color3.new(
|
||||
0.19607843137254902,0.19607843137254902,0.19607843137254902),BorderColor3=Color3
|
||||
.new(0,0,0),Size=UDim2.new(1,20,0,20),Position=UDim2.new(0,0,1,0),Active=true,
|
||||
Text='',Parent=aq})local au=a('Frame','ScrubFrame',{BackgroundColor3=Color3.new(
|
||||
1,1,1),BorderSizePixel=0,Position=UDim2.new(0.5,-5,0.5,0),Size=UDim2.new(0,10,0,
|
||||
1),ZIndex=5,Parent=at})local p=au:clone()p.Position=UDim2.new(0.5,-5,0.5,-2)p.
|
||||
Parent=at local q=au:clone()q.Position=UDim2.new(0.5,-5,0.5,2)q.Parent=at local
|
||||
r,s,t=a('TextButton','AreaSoak',{Size=UDim2.new(1,0,1,0),BackgroundTransparency=
|
||||
1,BorderSizePixel=0,Text='',ZIndex=10,Visible=false,Active=true,Parent=d(ae)}),
|
||||
false,nil at.MouseEnter:connect(function()at.BackgroundColor3=Color3.new(
|
||||
0.23529411764705882,0.23529411764705882,0.23529411764705882)end)at.MouseLeave:
|
||||
connect(function()at.BackgroundColor3=Color3.new(0.19607843137254902,
|
||||
0.19607843137254902,0.19607843137254902)end)at.MouseButton1Down:connect(function
|
||||
(u,v)s=true r.Visible=true t=v end)r.MouseButton1Up:connect(function()s=false r.
|
||||
Visible=false end)r.MouseMoved:connect(function(u,v)if not s then return end
|
||||
local w=v-t if not as.ScrollDownButton.Visible and w>0 then return end if(aq.
|
||||
Size.Y.Offset+w)<150 then aq.Size=UDim2.new(aq.Size.X.Scale,aq.Size.X.Offset,aq.
|
||||
Size.Y.Scale,150)as.Size=UDim2.new(0,21,0,150)return end t=v if aq.Size.Y.Offset
|
||||
+w>=0 then aq.Size=UDim2.new(aq.Size.X.Scale,aq.Size.X.Offset,aq.Size.Y.Scale,aq
|
||||
.Size.Y.Offset+w)as.Size=UDim2.new(0,21,0,as.Size.Y.Offset+w)end end)end local
|
||||
au au=function()am.Visible=not am.Visible if ad then ar.Visible=not ar.Visible
|
||||
at.Visible=not at.Visible as.Visible=not as.Visible else aq.Visible=not aq.
|
||||
Visible end if am.Visible then al.Text='+'else al.Text='-'end end an.
|
||||
MouseButton1Click:connect(function()return au()end)al.MouseButton1Click:connect(
|
||||
function()return au()end)if ad then return ag,ar,ak,ai else return ag,aq,ak,ai
|
||||
end end b.Help=function(aa)if aa=='CreatePropertyDropDownMenu'or aa==b.
|
||||
CreatePropertyDropDownMenu then return
|
||||
BorderSizePixel=0 as.BackgroundTransparency=0 as.Position=UDim2.new(1,-21,1,1)as
|
||||
.Size=UDim2.new(0,21,(function()if ab then return ab.Y.Scale,ab.Y.Offset else
|
||||
return 0,400 end end)())as:FindFirstChild'ScrollDownButton'.Position=UDim2.new(0
|
||||
,0,1,-20)a('Frame','FakeLine',{BorderSizePixel=0,BackgroundColor3=Color3.new(0,0
|
||||
,0),Size=UDim2.new(0,1,1,1),Position=UDim2.new(1,0,0,0),Parent=as})at=a(
|
||||
'TextButton','VerticalDragger',{ZIndex=2,AutoButtonColor=false,BackgroundColor3=
|
||||
Color3.new(0.19607843137254902,0.19607843137254902,0.19607843137254902),
|
||||
BorderColor3=Color3.new(0,0,0),Size=UDim2.new(1,20,0,20),Position=UDim2.new(0,0,
|
||||
1,0),Active=true,Text='',Parent=aq})local au=a('Frame','ScrubFrame',{
|
||||
BackgroundColor3=Color3.new(1,1,1),BorderSizePixel=0,Position=UDim2.new(0.5,-5,
|
||||
0.5,0),Size=UDim2.new(0,10,0,1),ZIndex=5,Parent=at})local p=au:clone()p.Position
|
||||
=UDim2.new(0.5,-5,0.5,-2)p.Parent=at local q=au:clone()q.Position=UDim2.new(0.5,
|
||||
-5,0.5,2)q.Parent=at local r,s,t=a('TextButton','AreaSoak',{Size=UDim2.new(1,0,1
|
||||
,0),BackgroundTransparency=1,BorderSizePixel=0,Text='',ZIndex=10,Visible=false,
|
||||
Active=true,Parent=d(ae)}),false,nil at.MouseEnter:connect(function()at.
|
||||
BackgroundColor3=Color3.new(0.23529411764705882,0.23529411764705882,
|
||||
0.23529411764705882)end)at.MouseLeave:connect(function()at.BackgroundColor3=
|
||||
Color3.new(0.19607843137254902,0.19607843137254902,0.19607843137254902)end)at.
|
||||
MouseButton1Down:connect(function(u,v)s=true r.Visible=true t=v end)r.
|
||||
MouseButton1Up:connect(function()s=false r.Visible=false end)r.MouseMoved:
|
||||
connect(function(u,v)if not s then return end local w=v-t if not as.
|
||||
ScrollDownButton.Visible and w>0 then return end if(aq.Size.Y.Offset+w)<150 then
|
||||
aq.Size=UDim2.new(aq.Size.X.Scale,aq.Size.X.Offset,aq.Size.Y.Scale,150)as.Size=
|
||||
UDim2.new(0,21,0,150)return end t=v if aq.Size.Y.Offset+w>=0 then aq.Size=UDim2.
|
||||
new(aq.Size.X.Scale,aq.Size.X.Offset,aq.Size.Y.Scale,aq.Size.Y.Offset+w)as.Size=
|
||||
UDim2.new(0,21,0,as.Size.Y.Offset+w)end end)end local au au=function()am.Visible
|
||||
=not am.Visible if ad then ar.Visible=not ar.Visible at.Visible=not at.Visible
|
||||
as.Visible=not as.Visible else aq.Visible=not aq.Visible end if am.Visible then
|
||||
al.Text='+'else al.Text='-'end end an.MouseButton1Click:connect(function()return
|
||||
au()end)al.MouseButton1Click:connect(function()return au()end)if ad then return
|
||||
ag,ar,ak,ai else return ag,aq,ak,ai end end b.Help=function(aa)if aa==
|
||||
'CreatePropertyDropDownMenu'or aa==b.CreatePropertyDropDownMenu then return
|
||||
[[Function CreatePropertyDropDownMenu. Arguments: (instance, propertyName, enumType). Side effect: returns a container with a drop-down-box that is linked to the 'property' field of 'instance' which is of type 'enumType']]
|
||||
elseif aa=='CreateDropDownMenu'or aa==b.CreateDropDownMenu then return
|
||||
[[Function CreateDropDownMenu. Arguments: (items, onItemSelected). Side effect: Returns 2 results, a container to the gui object and a 'updateSelection' function for external updating. The container is a drop-down-box created around a list of items]]
|
||||
|
|
|
|||
|
|
@ -33,30 +33,30 @@ TweenPosition(UDim2.new(0,0,1,400),Enum.EasingDirection.InOut,Enum.EasingStyle.
|
|||
Sine,h,true)end delay(h,function()E[F].Visible=false end)end end end local z z=
|
||||
function()local A=game.Players.LocalPlayer if A and A.Character and A.Character:
|
||||
FindFirstChild'Humanoid'then A.Character.Humanoid.Health=0 end end local A A=
|
||||
function(B,C,D,E,F)local G=Instance.new'TextButton'G.Font=Enum.Font.Arial G.
|
||||
FontSize=D G.Size=E G.Position=F G.Style=C G.TextColor3=Color3.new(1,1,1)G.Text=
|
||||
B return G end local B B=function(C,D,E,F)if#D<1 then error
|
||||
'Must have more than one button'end local G,H,I=1,{},nil I=function(J)for K,L in
|
||||
ipairs(H)do if L==J then L.Style=Enum.ButtonStyle.RobloxButtonDefault else L.
|
||||
Style=Enum.ButtonStyle.RobloxButton end end end for J,K in ipairs(D)do local L=
|
||||
a('TextButton','Button'..tostring(G),{Font=Enum.Font.Arial,FontSize=Enum.
|
||||
FontSize.Size18,AutoButtonColor=true,Style=Enum.ButtonStyle.RobloxButton,Text=K.
|
||||
Text,TextColor3=Color3.new(1,1,1),Parent=C})L.MouseButton1Click:connect(function
|
||||
()I(L)return K.Function()end)H[G]=L G=G+1 end I(H[1])local L=G-1 if L==1 then C.
|
||||
Button1.Position=UDim2.new(0.35,0,E.Scale,E.Offset)C.Button1.Size=UDim2.new(0.4,
|
||||
0,F.Scale,F.Offset)elseif L==2 then C.Button1.Position=UDim2.new(0.1,0,E.Scale,E
|
||||
.Offset)C.Button1.Size=UDim2.new(0.35,0,F.Scale,F.Offset)C.Button2.Position=
|
||||
UDim2.new(0.55,0,E.Scale,E.Offset)C.Button2.Size=UDim2.new(0.35,0,F.Scale,F.
|
||||
Offset)elseif L>=3 then local M,N=0.1/L,0.9/L G=1 while G<=L do H[G].Position=
|
||||
UDim2.new(M*G+(G-1)*N,0,E.Scale,E.Offset)H[G].Size=UDim2.new(N,0,F.Scale,F.
|
||||
Offset)G=G+1 end end end local C C=function(D,E,F)if D then E.Visible=true F.
|
||||
Text='Stop Recording'else E.Visible=false F.Text='Record Video'end end local D D
|
||||
=function(E,F)m=not m return C(m,F,E)end local E E=function(F,G,H)F.Parent.
|
||||
Parent.Parent.Parent.Visible=false G.Visible=false for I=1,#p do game.GuiService
|
||||
:RemoveCenterDialog(p[I])p[I].Visible=false end p={}game.GuiService:
|
||||
RemoveCenterDialog(G)H.Active=true end local F F=function(G)if not G then return
|
||||
end if G:IsA'TextLabel'then G.TextTransparency=0.9 elseif G:IsA'TextButton'then
|
||||
G.TextTransparency=0.9 G.Active=false else if G['ClassName']then return print(
|
||||
function(B,C,D,E,F)return a('TextButton',{Font=Enum.Font.Arial,FontSize=D,Size=E
|
||||
,Position=F,Style=C,TextColor3=Color3.new(1,1,1),Text=B})end local B B=function(
|
||||
C,D,E,F)if#D<1 then error'Must have more than one button'end local G,H,I=1,{},
|
||||
nil I=function(J)for K,L in ipairs(H)do if L==J then L.Style=Enum.ButtonStyle.
|
||||
RobloxButtonDefault else L.Style=Enum.ButtonStyle.RobloxButton end end end for J
|
||||
,K in ipairs(D)do local L=a('TextButton','Button'..tostring(G),{Font=Enum.Font.
|
||||
Arial,FontSize=Enum.FontSize.Size18,AutoButtonColor=true,Style=Enum.ButtonStyle.
|
||||
RobloxButton,Text=K.Text,TextColor3=Color3.new(1,1,1),Parent=C})L.
|
||||
MouseButton1Click:connect(function()I(L)return K.Function()end)H[G]=L G=G+1 end
|
||||
I(H[1])local L=G-1 if L==1 then C.Button1.Position=UDim2.new(0.35,0,E.Scale,E.
|
||||
Offset)C.Button1.Size=UDim2.new(0.4,0,F.Scale,F.Offset)elseif L==2 then C.
|
||||
Button1.Position=UDim2.new(0.1,0,E.Scale,E.Offset)C.Button1.Size=UDim2.new(0.35,
|
||||
0,F.Scale,F.Offset)C.Button2.Position=UDim2.new(0.55,0,E.Scale,E.Offset)C.
|
||||
Button2.Size=UDim2.new(0.35,0,F.Scale,F.Offset)elseif L>=3 then local M,N=0.1/L,
|
||||
0.9/L G=1 while G<=L do H[G].Position=UDim2.new(M*G+(G-1)*N,0,E.Scale,E.Offset)H
|
||||
[G].Size=UDim2.new(N,0,F.Scale,F.Offset)G=G+1 end end end local C C=function(D,E
|
||||
,F)if D then E.Visible=true F.Text='Stop Recording'else E.Visible=false F.Text=
|
||||
'Record Video'end end local D D=function(E,F)m=not m return C(m,F,E)end local E
|
||||
E=function(F,G,H)F.Parent.Parent.Parent.Parent.Visible=false G.Visible=false for
|
||||
I=1,#p do game.GuiService:RemoveCenterDialog(p[I])p[I].Visible=false end p={}
|
||||
game.GuiService:RemoveCenterDialog(G)H.Active=true end local F F=function(G)if
|
||||
not G then return end if G:IsA'TextLabel'then G.TextTransparency=0.9 elseif G:
|
||||
IsA'TextButton'then G.TextTransparency=0.9 G.Active=false else if G['ClassName']
|
||||
then return print(
|
||||
[[setDisabledState! got object of unsupported type. object type is ]],G.
|
||||
ClassName)end end end local G G=function(H)if e==nil then if d:FindFirstChild(d.
|
||||
TopLeftControl:FindFirstChild'Help')then e=d.TopLeftControl.Help elseif d:
|
||||
|
|
@ -167,9 +167,9 @@ Parent=M if game:FindFirstChild'LoadingGuiService'and#game.LoadingGuiService:
|
|||
GetChildren()>0 then W=A('Game Instructions',Enum.ButtonStyle.RobloxButton,Enum.
|
||||
FontSize.Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,207))W.Name=
|
||||
'GameInstructions'W.ZIndex=K+4 W.Parent=M W.MouseButton1Click:connect(function()
|
||||
if game:FindFirstChild(game.Players['LocalPlayer'])then local X=game.Players.
|
||||
if game:FindFirstChild(game.Players['LocalPlayer'])then do local X=game.Players.
|
||||
LocalPlayer:FindFirstChild'PlayerLoadingGui'if X then X.Visible=true end end end
|
||||
)end local X=A('Reset Character',Enum.ButtonStyle.RobloxButton,Enum.FontSize.
|
||||
end)end local X=A('Reset Character',Enum.ButtonStyle.RobloxButton,Enum.FontSize.
|
||||
Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,105))X.Name='ResetButton'X.ZIndex=
|
||||
K+4 X.Parent=M return M end local K K=function(L,M)local N=a('Frame',
|
||||
'GameSettingsMenu',{BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),ZIndex=L+4,
|
||||
|
|
|
|||
|
|
@ -81,12 +81,12 @@ ClipsDescendants=true,ZIndex=7}),nil local K,L,M,N,O,P,Q,R,S=e('Frame','Panel',{
|
|||
BackgroundTransparency=1,Position=UDim2.new(1,0,0,0),Size=UDim2.new(1,0,0.032,0)
|
||||
,Parent=I}),e('Frame','StatTitles',{BackgroundTransparency=1,Position=UDim2.new(
|
||||
0,0,1,-10),Size=UDim2.new(1,0,0,0),Parent=u}),Instance.new'BoolValue',Instance.
|
||||
new'BoolValue',Instance.new'BoolValue',Instance.new'BoolValue',e('Frame',{Name=
|
||||
'MidTemplate',BackgroundTransparency=1,Position=UDim2.new(100,0,0.07,0),Size=
|
||||
UDim2.new(0.5,0,0.025,0),e('ImageLabel',{Name='BCLabel',Active=true,
|
||||
new'BoolValue',Instance.new'BoolValue',Instance.new'BoolValue',e('Frame',
|
||||
'MidTemplate',{BackgroundTransparency=1,Position=UDim2.new(100,0,0.07,0),Size=
|
||||
UDim2.new(0.5,0,0.025,0),e('ImageLabel','BCLabel',{Active=true,
|
||||
BackgroundTransparency=1,Position=UDim2.new(0.005,5,0.2,0),Size=UDim2.new(0,16,0
|
||||
,16),SizeConstraint='RelativeYY',Image='',ZIndex=3}),e('ImageLabel',{Name=
|
||||
'FriendLabel',Active=true,BackgroundTransparency=1,Position=UDim2.new(0.005,5,
|
||||
,16),SizeConstraint='RelativeYY',Image='',ZIndex=3}),e('ImageLabel',
|
||||
'FriendLabel',{Active=true,BackgroundTransparency=1,Position=UDim2.new(0.005,5,
|
||||
0.15,0),Size=UDim2.new(0,16,0,16),SizeConstraint='RelativeYY',Image='',ZIndex=3}
|
||||
),e('ImageButton','ClickListener',{Active=true,BackgroundTransparency=1,Position
|
||||
=UDim2.new(0.005,1,0,0),Size=UDim2.new(0.96,0,1,0),ZIndex=3}),e('Frame',
|
||||
|
|
|
|||
|
|
@ -20,27 +20,26 @@ UDim2.new(-0.1,0,-0.1,0),ZIndex=0,Visible=false,a('ImageLabel',{Size=UDim2.new(1
|
|||
,BackgroundTransparency=1,Image='http://www.roblox.com/asset/?id=97617958',
|
||||
Position=UDim2.new(0.5,-60,1,-108),Size=UDim2.new(0,120,0,18),Parent=b.
|
||||
ControlFrame})local h=9 if f()then h=3 g.Size=UDim2.new(0,180,0,54)g.Position=
|
||||
UDim2.new(0.5,-90,1,-85)end for i=0,h do local j=a('Frame',{Name='Slot'..
|
||||
tostring(i),RobloxLocked=true,BackgroundColor3=Color3.new(0,0,0),
|
||||
BackgroundTransparency=1,BorderColor3=Color3.new(1,1,1),ZIndex=4,Position=UDim2.
|
||||
new((function()if i==0 then return 0.9,0,0,0 else return(i-1)*0.1,(i-1)*6,0,0
|
||||
end end)()),Size=UDim2.new(0,54,1,0),Parent=g})if b.AbsoluteSize.Y<=320 then j.
|
||||
Position=UDim2.new(0,(i-1)*60,0,-50)print('Well got here',j,j.Position.X.Scale,j
|
||||
.Position.X.Offset)if i==0 then j:Destroy()end end end local i=a('ImageButton',
|
||||
'TempSlot',{Active=true,Size=UDim2.new(1,0,1,0),BackgroundTransparency=1,Style=
|
||||
'Custom',Visible=false,RobloxLocked=true,ZIndex=3,Parent=g,a('ImageLabel',
|
||||
'Background',{BackgroundTransparency=1,Image=
|
||||
'http://www.roblox.com/asset/?id=97613075',Size=UDim2.new(1,0,1,0)}),a(
|
||||
'ObjectValue','GearReference',{RobloxLocked=true}),a('TextLabel','ToolTipLabel',
|
||||
{RobloxLocked=true,Text='',BackgroundTransparency=0.5,BorderSizePixel=0,Visible=
|
||||
false,TextColor3=Color3.new(1,1,1),BackgroundColor3=Color3.new(0,0,0),
|
||||
TextStrokeTransparency=0,Font=Enum.Font.ArialBold,FontSize=Enum.FontSize.Size14,
|
||||
Size=UDim2.new(1,60,0,20),Position=UDim2.new(0,-30,0,-30)}),a('BoolValue','Kill'
|
||||
,{RobloxLocked=true}),a('TextLabel','GearText',{RobloxLocked=true,
|
||||
BackgroundTransparency=1,Font=Enum.Font.Arial,FontSize=Enum.FontSize.Size14,
|
||||
Position=UDim2.new(0,-8,0,-8),Size=UDim2.new(1,16,1,16),Text='',TextColor3=
|
||||
Color3.new(1,1,1),TextWrap=true,ZIndex=5}),a('ImageLabel','GearImage',{
|
||||
BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0),
|
||||
UDim2.new(0.5,-90,1,-85)end for i=0,h do local j=a('Frame','Slot'..tostring(i),{
|
||||
RobloxLocked=true,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=1,
|
||||
BorderColor3=Color3.new(1,1,1),ZIndex=4,Position=UDim2.new((function()if i==0
|
||||
then return 0.9,0,0,0 else return(i-1)*0.1,(i-1)*6,0,0 end end)()),Size=UDim2.
|
||||
new(0,54,1,0),Parent=g})if b.AbsoluteSize.Y<=320 then j.Position=UDim2.new(0,(i-
|
||||
1)*60,0,-50)print('Well got here',j,j.Position.X.Scale,j.Position.X.Offset)if i
|
||||
==0 then j:Destroy()end end end local i=a('ImageButton','TempSlot',{Active=true,
|
||||
Size=UDim2.new(1,0,1,0),BackgroundTransparency=1,Style='Custom',Visible=false,
|
||||
RobloxLocked=true,ZIndex=3,Parent=g,a('ImageLabel','Background',{
|
||||
BackgroundTransparency=1,Image='http://www.roblox.com/asset/?id=97613075',Size=
|
||||
UDim2.new(1,0,1,0)}),a('ObjectValue','GearReference',{RobloxLocked=true}),a(
|
||||
'TextLabel','ToolTipLabel',{RobloxLocked=true,Text='',BackgroundTransparency=0.5
|
||||
,BorderSizePixel=0,Visible=false,TextColor3=Color3.new(1,1,1),BackgroundColor3=
|
||||
Color3.new(0,0,0),TextStrokeTransparency=0,Font=Enum.Font.ArialBold,FontSize=
|
||||
Enum.FontSize.Size14,Size=UDim2.new(1,60,0,20),Position=UDim2.new(0,-30,0,-30)})
|
||||
,a('BoolValue','Kill',{RobloxLocked=true}),a('TextLabel','GearText',{
|
||||
RobloxLocked=true,BackgroundTransparency=1,Font=Enum.Font.Arial,FontSize=Enum.
|
||||
FontSize.Size14,Position=UDim2.new(0,-8,0,-8),Size=UDim2.new(1,16,1,16),Text='',
|
||||
TextColor3=Color3.new(1,1,1),TextWrap=true,ZIndex=5}),a('ImageLabel','GearImage'
|
||||
,{BackgroundTransparency=1,Position=UDim2.new(0,0,0,0),Size=UDim2.new(1,0,1,0),
|
||||
ZIndex=5,RobloxLocked=true})})local j=a('TextLabel','SlotNumber',{
|
||||
BackgroundTransparency=1,BorderSizePixel=0,Font=Enum.Font.ArialBold,FontSize=
|
||||
Enum.FontSize.Size18,Position=UDim2.new(0,0,0,0),Size=UDim2.new(0,10,0,15),
|
||||
|
|
@ -146,9 +145,9 @@ BackgroundTransparency=1,Position=y,Parent=z})end local v v=function(w,x,y,z,A)
|
|||
local B=a('ImageButton',tostring(w),{RobloxLocked=true,Size=x,Position=y})if A
|
||||
then B.Style=A else B.BackgroundColor3=Color3.new(0,0,0)B.BorderColor3=Color3.
|
||||
new(1,1,1)end B.Parent=z return B end local w w=function(x,y,z,A)return a(
|
||||
'TextLabel',{Name=x,RobloxLocked=true,BackgroundTransparency=1,Size=UDim2.new(0,
|
||||
32,0,14),Font=Enum.Font.Arial,TextColor3=Color3.new(1,1,1),FontSize=Enum.
|
||||
FontSize.Size14,Text=y,Position=z,Parent=A})end local x=a('Frame','Wardrobe',{
|
||||
'TextLabel',x,{RobloxLocked=true,BackgroundTransparency=1,Size=UDim2.new(0,32,0,
|
||||
14),Font=Enum.Font.Arial,TextColor3=Color3.new(1,1,1),FontSize=Enum.FontSize.
|
||||
Size14,Text=y,Position=z,Parent=A})end local x=a('Frame','Wardrobe',{
|
||||
RobloxLocked=true,BackgroundTransparency=1,Visible=false,Size=UDim2.new(1,0,1,0)
|
||||
,Parent=l,a('Frame','AssetList',{RobloxLocked=true,Position=UDim2.new(0,4,0,5),
|
||||
Size=UDim2.new(0,85,1,-5),BackgroundTransparency=1,Visible=true}),a('TextButton'
|
||||
|
|
|
|||
|
|
@ -1,480 +1,478 @@
|
|||
print'[Mercury]: Loaded corescript 73157242'local a,b={},nil b=function(c)local
|
||||
d,e,f=false,game.Workspace.CurrentCamera,nil do local g=e.CoordinateFrame.p f=
|
||||
Vector3.new(g.X,g.Y,g.Z)end local g,h,i=Vector3.new(c.X,c.Y,c.Z),Vector3.new(0,1
|
||||
,0),Vector3.new(0,0,0)local j,k=h:Dot(g-f),c if j~=0 then a=h:Dot(i-f)/j if a>=0
|
||||
and a<=1 then local l=((g-f)*a)+f k=game.Workspace.Terrain:WorldToCell(l)d=true
|
||||
end end return k,d end local c c=function(d)local e,f=game.Workspace.Terrain:
|
||||
WorldToCellPreferSolid(Vector3.new(d.hit.x,d.hit.y,d.hit.z)),nil if 0==game.
|
||||
Workspace.Terrain:GetCell(e.X,e.Y,e.Z).Value then e=nil local g f,g=b(Vector3.
|
||||
new(d.hit.x,d.hit.y,d.hit.z))if g then e=f end end return e end local d,e=
|
||||
Vector3.new(0.3,0.3,0.3),nil e=function(f,g,h)if f:IsA'BasePart'then f.CFrame=(g
|
||||
*(f.CFrame-h))+h end local i=f:GetChildren()for j=1,#i do e(i[j],g,h)end end
|
||||
local f f=function(g,h)local i,j=CFrame.Angles(0,h,0),g:GetModelCFrame().p
|
||||
return e(g,i,j)end local g g=function(h,i,j,k)if h:IsA'BasePart'then i[#i+1]=h
|
||||
elseif h:IsA'Script'then j[#j+1]=h elseif h:IsA'Decal'then k[#k+1]=h end for l,m
|
||||
in pairs(h:GetChildren())do g(m,i,j,k)end end local h h=function(i,j)local k=
|
||||
game.Workspace:FindFirstChild'Terrain'local l,m=k:WorldToCell(i),k:WorldToCell(j
|
||||
)local n,o,p,q,r,s=l.X,l.Y,l.Z,m.X,m.Y,m.Z if n<k.MaxExtents.Min.X then n=k.
|
||||
MaxExtents.Min.X end if o<k.MaxExtents.Min.Y then o=k.MaxExtents.Min.Y end if p<
|
||||
k.MaxExtents.Min.Z then p=k.MaxExtents.Min.Z end if q>k.MaxExtents.Max.X then q=
|
||||
k.MaxExtents.Max.X end if r>k.MaxExtents.Max.Y then r=k.MaxExtents.Max.Y end if
|
||||
s>k.MaxExtents.Max.Z then s=k.MaxExtents.Max.Z end for t=n,q do for u=o,r do for
|
||||
v=p,s do if k:GetCell(t,u,v).Value>0 then return true end end end end return
|
||||
false end local i i=function(j,k)if not j then return end if j.className=='Seat'
|
||||
or j.className=='VehicleSeat'then table.insert(k,j)end local l=j:GetChildren()
|
||||
for m=1,#l do i(l[m],k)end end local j j=function(k,l)local m={}i(k,m)if l then
|
||||
for n=1,#m do local o=m[n]:FindFirstChild'SeatWeld'while o do o:Remove()o=m[n]:
|
||||
FindFirstChild'SeatWeld'end end else for n=1,#m do local o=Instance.new'Weld'o.
|
||||
Name='SeatWeld'o.Parent=m[n]end end end local k k=function(l)local m=l:
|
||||
FindFirstChild'AutoAlignToFace'if m then return m.Value else return false end
|
||||
end local l l=function(m)local n,o,p=Vector3.new(1,0,0),Vector3.new(0,1,0),
|
||||
Vector3.new(0,0,1)local q,r,s=m.x*n.x+m.y*n.y+m.z*n.z,m.x*o.x+m.y*o.y+m.z*o.z,m.
|
||||
x*p.x+m.y*p.y+m.z*p.z if math.abs(q)>math.abs(r)and math.abs(q)>math.abs(s)then
|
||||
if q>0 then return 0 else return 3 end elseif math.abs(r)>math.abs(q)and math.
|
||||
abs(r)>math.abs(s)then if r>0 then return 1 else return 4 end else if s>0 then
|
||||
return 2 else return 5 end end end local m m=function(n,o)local p if not o then
|
||||
return o end if o and(o:IsA'Model'or o:IsA'Tool')then p=o:GetModelCFrame()o:
|
||||
TranslateBy(n.p-p.p)else o.CFrame=n end return o end local n n=function(o,p,q)if
|
||||
math.abs(p)<0.01 then return 0 end return(q-o)/p end local o o=function(p,q,r)if
|
||||
not p then return 0 end local s,t if p:IsA'Model'then s=p:GetModelCFrame()t=p:
|
||||
GetModelSize()else s=p.CFrame t=p.Size end local u,v=s:pointToObjectSpace(q),s:
|
||||
pointToObjectSpace(r)local w,x,y,z=v-u,1,1,1 if w.X>0 then x=-1 end if w.Y>0
|
||||
then y=-1 end if w.Z>0 then z=-1 end local A,B,C,D=n(u.X,w.X,t.X/2*x),n(u.Y,w.Y,
|
||||
t.Y/2*y),n(u.Z,w.Z,t.Z/2*z),0 if A>B then if A>C then D=1*x else D=3*z end else
|
||||
if B>C then D=2*y else D=3*z end end return D end local p p=function(q)local r,s
|
||||
print'[Mercury]: Loaded corescript 73157242'local a a=function(b,c,d)if not(d~=
|
||||
nil)then d=c c=nil end local e=Instance.new(b)if c then e.Name=c end local f for
|
||||
g,h in pairs(d)do if type(g)=='string'then if g=='Parent'then f=h else e[g]=h
|
||||
end elseif type(g)=='number'and type(h)=='userdata'then h.Parent=e end end e.
|
||||
Parent=f return e end local b,c={},nil c=function(d)local e,f,g=false,game.
|
||||
Workspace.CurrentCamera,nil do local h=f.CoordinateFrame.p g=Vector3.new(h.X,h.Y
|
||||
,h.Z)end local h,i,j=Vector3.new(d.X,d.Y,d.Z),Vector3.new(0,1,0),Vector3.new(0,0
|
||||
,0)local k,l=i:Dot(h-g),d if k~=0 then b=i:Dot(j-g)/k if b>=0 and b<=1 then
|
||||
local m=((h-g)*b)+g l=game.Workspace.Terrain:WorldToCell(m)e=true end end return
|
||||
l,e end local d d=function(e)local f,g=game.Workspace.Terrain:
|
||||
WorldToCellPreferSolid(Vector3.new(e.hit.x,e.hit.y,e.hit.z)),nil if 0==game.
|
||||
Workspace.Terrain:GetCell(f.X,f.Y,f.Z).Value then f=nil local h g,h=c(Vector3.
|
||||
new(e.hit.x,e.hit.y,e.hit.z))if h then f=g end end return f end local e,f=
|
||||
Vector3.new(0.3,0.3,0.3),nil f=function(g,h,i)if g:IsA'BasePart'then g.CFrame=(h
|
||||
*(g.CFrame-i))+i end local j=g:GetChildren()for k=1,#j do f(j[k],h,i)end end
|
||||
local g g=function(h,i)local j,k=CFrame.Angles(0,i,0),h:GetModelCFrame().p
|
||||
return f(h,j,k)end local h h=function(i,j,k,l)if i:IsA'BasePart'then j[#j+1]=i
|
||||
elseif i:IsA'Script'then k[#k+1]=i elseif i:IsA'Decal'then l[#l+1]=i end for m,n
|
||||
in pairs(i:GetChildren())do h(n,j,k,l)end end local i i=function(j,k)local l=
|
||||
game.Workspace:FindFirstChild'Terrain'local m,n=l:WorldToCell(j),l:WorldToCell(k
|
||||
)local o,p,q,r,s,t=m.X,m.Y,m.Z,n.X,n.Y,n.Z if o<l.MaxExtents.Min.X then o=l.
|
||||
MaxExtents.Min.X end if p<l.MaxExtents.Min.Y then p=l.MaxExtents.Min.Y end if q<
|
||||
l.MaxExtents.Min.Z then q=l.MaxExtents.Min.Z end if r>l.MaxExtents.Max.X then r=
|
||||
l.MaxExtents.Max.X end if s>l.MaxExtents.Max.Y then s=l.MaxExtents.Max.Y end if
|
||||
t>l.MaxExtents.Max.Z then t=l.MaxExtents.Max.Z end for u=o,r do for v=p,s do for
|
||||
w=q,t do if l:GetCell(u,v,w).Value>0 then return true end end end end return
|
||||
false end local j j=function(k,l)if not k then return end if k.className=='Seat'
|
||||
or k.className=='VehicleSeat'then table.insert(l,k)end local m=k:GetChildren()
|
||||
for n=1,#m do j(m[n],l)end end local k k=function(l,m)local n={}j(l,n)if m then
|
||||
for o=1,#n do local p=n[o]:FindFirstChild'SeatWeld'while p do p:Remove()p=n[o]:
|
||||
FindFirstChild'SeatWeld'end end else for o=1,#n do a('Weld','SeatWeld',{Parent=n
|
||||
[o]})end end end local l l=function(m)do local n=m:FindFirstChild
|
||||
'AutoAlignToFace'if n then return n.Value else return false end end end local m
|
||||
m=function(n)local o,p,q=Vector3.new(1,0,0),Vector3.new(0,1,0),Vector3.new(0,0,1
|
||||
)local r,s,t=n.x*o.x+n.y*o.y+n.z*o.z,n.x*p.x+n.y*p.y+n.z*p.z,n.x*q.x+n.y*q.y+n.z
|
||||
*q.z if math.abs(r)>math.abs(s)and math.abs(r)>math.abs(t)then if r>0 then
|
||||
return 0 else return 3 end elseif math.abs(s)>math.abs(r)and math.abs(s)>math.
|
||||
abs(t)then if s>0 then return 1 else return 4 end else if t>0 then return 2 else
|
||||
return 5 end end end local n n=function(o,p)local q if not p then return p end
|
||||
if p and(p:IsA'Model'or p:IsA'Tool')then q=p:GetModelCFrame()p:TranslateBy(o.p-q
|
||||
.p)else p.CFrame=o end return p end local o o=function(p,q,r)if math.abs(q)<0.01
|
||||
then return 0 end return(r-p)/q end local p p=function(q,r,s)if not q then
|
||||
return 0 end local t,u if q:IsA'Model'then t=q:GetModelCFrame()u=q:GetModelSize(
|
||||
)else t=q.CFrame u=q.Size end local v,w=t:pointToObjectSpace(r),t:
|
||||
pointToObjectSpace(s)local x,y,z,A=w-v,1,1,1 if x.X>0 then y=-1 end if x.Y>0
|
||||
then z=-1 end if x.Z>0 then A=-1 end local B,C,D,E=o(v.X,x.X,u.X/2*y),o(v.Y,x.Y,
|
||||
u.Y/2*z),o(v.Z,x.Z,u.Z/2*A),0 if B>C then if B>D then E=1*y else E=3*A end else
|
||||
if C>D then E=2*z else E=3*A end end return E end local q q=function(r)local s,t
|
||||
=Vector3.new(math.huge,math.huge,math.huge),Vector3.new(-math.huge,-math.huge,-
|
||||
math.huge)if q:IsA'Terrain'then r=Vector3.new(-2,-2,-2)s=Vector3.new(2,2,2)
|
||||
elseif q:IsA'BasePart'then r=-0.5*q.Size s=-r else s=q:GetModelSize()*0.5 r=-s
|
||||
end local t=q:FindFirstChild'Justification'if(t~=nil)then local u,v,w=t.Value,
|
||||
Vector3.new(2,2,2),s-r-Vector3.new(0.01,0.01,0.01)local x=Vector3.new(4*math.
|
||||
ceil(w.x/4),4*math.ceil(w.y/4),4*math.ceil(w.z/4))local y=x-w r=r-(0.5*y*u)s=s+(
|
||||
0.5*y*(v-u))end return r,s end local q q=function(r)local s,t=Vector3.new(math.
|
||||
huge,math.huge,math.huge),Vector3.new(-math.huge,-math.huge,-math.huge)if r:IsA
|
||||
'BasePart'and not r:IsA'Terrain'then local u,v=r.CFrame:pointToWorldSpace(-0.5*r
|
||||
.Size),r.CFrame:pointToWorldSpace(0.5*r.Size)s=Vector3.new(math.min(u.X,v.X),
|
||||
math.min(u.Y,v.Y),math.min(u.Z,v.Z))t=Vector3.new(math.max(u.X,v.X),math.max(u.Y
|
||||
,v.Y),math.max(u.Z,v.Z))elseif not r:IsA'Terrain'then local u,v=r:
|
||||
GetModelCFrame():pointToWorldSpace(-0.5*r:GetModelSize()),r:GetModelCFrame():
|
||||
pointToWorldSpace(0.5*r:GetModelSize())s=Vector3.new(math.min(u.X,v.X),math.min(
|
||||
u.Y,v.Y),math.min(u.Z,v.Z))t=Vector3.new(math.max(u.X,v.X),math.max(u.Y,v.Y),
|
||||
math.max(u.Z,v.Z))end return s,t end local r r=function(s)return p((function()if
|
||||
(s.Parent:FindFirstChild'RobloxModel'~=nil)then return s.Parent else return s
|
||||
end end)())end local s s=function(t)if(t.Parent:FindFirstChild'RobloxModel'~=nil
|
||||
)then if t.Parent:IsA'Tool'then return t.Parent.Handle.CFrame else return t.
|
||||
Parent:GetModelCFrame()end else return t.CFrame end end local t t=function(u)if
|
||||
not u then return false end if not u.Parent then return false end if u:
|
||||
FindFirstChild'Humanoid'then return false end if u:FindFirstChild'RobloxStamper'
|
||||
then return true end if u:IsA'Part'and not u.CanCollide then return false end if
|
||||
u==game.Lighting then return false end return t(u.Parent)end local u u=function(
|
||||
v,w,x)local y=game.Workspace:FindPartsInRegion3(Region3.new(Vector3.new(v.
|
||||
Position.X,w,v.Position.Z)-Vector3.new(0.75,2.75,0.75),Vector3.new(v.Position.X,
|
||||
w,v.Position.Z)+Vector3.new(0.75,1.75,0.75)),v.Parent,100)for z=1,#y do if y[z].
|
||||
CanCollide and not y[z]:IsDescendantOf(x.CurrentParts)then return false end end
|
||||
if h(Vector3.new(v.Position.X,w,v.Position.Z)-Vector3.new(0.75,2.75,0.75),
|
||||
Vector3.new(v.Position.X,w,v.Position.Z)+Vector3.new(0.75,1.75,0.75))then return
|
||||
false end return true end local v v=function(w,x)if not w then return end if not
|
||||
x then return error'findConfigAtMouseTarget: stampData is nil'end if not x[
|
||||
'CurrentParts']then return end local y,z,A,B,C=4,false,CFrame.new(0,0,0),p(x.
|
||||
CurrentParts)local D,E=C-B,nil if x.CurrentParts:IsA'Model'or x.CurrentParts:IsA
|
||||
'Tool'then E=x.CurrentParts:GetModelCFrame()else E=x.CurrentParts.CFrame end if
|
||||
w then if x.CurrentParts:IsA'Tool'then w.TargetFilter=x.CurrentParts.Handle else
|
||||
w.TargetFilter=x.CurrentParts end end local F,G=false,nil local H=pcall(function
|
||||
()G=w.Target end)if not H then return z,A end local I=Vector3.new(0,0,0)if w
|
||||
then I=Vector3.new(w.Hit.x,w.Hit.y,w.Hit.z)end local J if nil==G then J=c(w)if
|
||||
nil==J then F=false return z,A else G=game.Workspace.Terrain F=true J=Vector3.
|
||||
new(J.X-1,J.Y,J.Z)I=game.Workspace.Terrain:CellCenterToWorld(J.x,J.y,J.z)end end
|
||||
local K,L=r(G)local M,N=L-K,s(G)if G:IsA'Terrain'then if not cluster then
|
||||
cluster=game.Workspace:FindFirstChild'Terrain'end local O=cluster:
|
||||
WorldToCellPreferSolid(I)if F then O=J end N=CFrame.new(game.Workspace.Terrain:
|
||||
CellCenterToWorld(O.x,O.y,O.z))end local O,P=N:pointToObjectSpace(I),Vector3.
|
||||
new(0,0,0)if w then P=G.CFrame:vectorToWorldSpace(Vector3.FromNormalId(w.
|
||||
TargetSurface))end local Q,R,S if l(P)==0 then Q=N:vectorToObjectSpace(Vector3.
|
||||
new(1,-1,1))R=E:vectorToObjectSpace(Vector3.new(-1,-1,1))S=Vector3.new(0,1,1)
|
||||
elseif l(P)==3 then Q=N:vectorToObjectSpace(Vector3.new(-1,-1,-1))R=E:
|
||||
vectorToObjectSpace(Vector3.new(1,-1,-1))S=Vector3.new(0,1,1)elseif l(P)==1 then
|
||||
Q=N:vectorToObjectSpace(Vector3.new(-1,1,1))R=E:vectorToObjectSpace(Vector3.new(
|
||||
-1,-1,1))S=Vector3.new(1,0,1)elseif l(P)==4 then Q=N:vectorToObjectSpace(Vector3
|
||||
.new(-1,-1,1))R=E:vectorToObjectSpace(Vector3.new(-1,1,1))S=Vector3.new(1,0,1)
|
||||
elseif l(P)==2 then Q=N:vectorToObjectSpace(Vector3.new(-1,-1,1))R=E:
|
||||
vectorToObjectSpace(Vector3.new(-1,-1,-1))S=Vector3.new(1,1,0)else Q=N:
|
||||
vectorToObjectSpace(Vector3.new(1,-1,-1))R=E:vectorToObjectSpace(Vector3.new(1,-
|
||||
1,1))S=Vector3.new(1,1,0)end Q=Q*((0.5*M)+0.5*(L+K))R=R*((0.5*D)+0.5*(C+B))local
|
||||
T=O-Q local U=Vector3.new(y*math.modf(T.x/y),y*math.modf(T.y/y),y*math.modf(T.z/
|
||||
y))U=U*S local V=U+Q local W,X=N:pointToWorldSpace(V),E:vectorToWorldSpace(R)
|
||||
local Y,Z,_,aa,ab,ac,ad,ae,af,ag,ah,ai,aj=W-X,E:components()A=CFrame.new(Y.x,Y.y
|
||||
,Y.z,ab,ac,ad,ae,af,ag,ah,ai,aj)z=true return z,A,l(P)end local aa aa=function(
|
||||
ab,ac)local ad,ae=math.abs(ab),math.abs(ac)local af=math.sqrt(ad*ad+ae*ae)local
|
||||
ag,ah,ai=ae/af,1,1 if ab<0 then ah=-1 end if ac<0 then ai=-1 end if ag>
|
||||
0.382683432 then return 0.707106781*af*ah,0.707106781*af*ai else return af*ah,0
|
||||
end end local ab ab=function(ac,ad,ae)if ac:IsA'ManualWeld'or ac:IsA'Rotate'then
|
||||
table.insert(ad,ac)return table.insert(ae,ac.Parent)else local af=ac:
|
||||
GetChildren()for ag=1,#af do ab(af[ag],ad,ae)end end end local ac ac=function(ad
|
||||
,ae)for af=1,#ad do ad[af].Parent=ae[af]end end a.CanEditRegion=function(ad,ae)
|
||||
if not ae then return true,false end local af,ag=q(ad)if af.X<ae.CFrame.p.X-ae.
|
||||
Size.X/2 or af.Y<ae.CFrame.p.Y-ae.Size.Y/2 or af.Z<ae.CFrame.p.Z-ae.Size.Z/2
|
||||
then return false,false end if ag.X>ae.CFrame.p.X+ae.Size.X/2 or ag.Y>ae.CFrame.
|
||||
p.Y+ae.Size.Y/2 or ag.Z>ae.CFrame.p.Z+ae.Size.Z/2 then return false,false end
|
||||
return true,false end a.GetStampModel=function(ad,ae,af)if ad==0 then return nil
|
||||
,'No Asset'end if ad<0 then return nil,'Negative Asset'end local ag ag=function(
|
||||
ah)if ah:IsA'BasePart'then ah.Locked=false end for ai,aj in pairs(ah:
|
||||
GetChildren())do ag(aj)end end local ah ah=function(ai)return BrickColor.new((
|
||||
function()if 1==ai then return'Bright green'elseif 2==ai then return
|
||||
'Bright yellow'elseif 3==ai then return'Bright red'elseif 4==ai then return
|
||||
'Sand red'elseif 5==ai then return'Black'elseif 6==ai then return
|
||||
'Dark stone grey'elseif 7==ai then return'Sand blue'elseif 8==ai then return
|
||||
'Deep orange'elseif 9==ai then return'Dark orange'elseif 10==ai then return
|
||||
'Reddish brown'elseif 11==ai then return'Light orange'elseif 12==ai then return
|
||||
'Light stone grey'elseif 13==ai then return'Sand green'elseif 14==ai then return
|
||||
'Medium stone grey'elseif 15==ai then return'Really red'elseif 16==ai then
|
||||
return'Really blue'elseif 17==ai then return'Bright blue'else return
|
||||
'Bright green'end end)())end local ai ai=function(aj,w,x)local y if w==1 or w==4
|
||||
then y=Instance.new'WedgePart'y.formFactor='Custom'elseif w==2 then y=Instance.
|
||||
new'CornerWedgePart'else y=Instance.new'Part'y.formFactor='Custom'end y.Name=
|
||||
'MegaClusterCube'y.Size=Vector3.new(4,4,4)y.BottomSurface='Smooth'y.TopSurface=
|
||||
'Smooth'y.BrickColor=ah(aj)local z,A=0,math.pi if w==4 then z=-math.pi/2 end if
|
||||
w==2 or w==3 then A=0 end y.CFrame=CFrame.Angles(0,math.pi/2*x+A,z)if w==3 then
|
||||
local B=Instance.new'SpecialMesh'B.MeshType='FileMesh'B.MeshId=
|
||||
'http://www.roblox.com/asset?id=66832495'B.Scale=Vector3.new(2,2,2)B.Parent=y
|
||||
end local B=Instance.new'Vector3Value'B.Value=Vector3.new(aj,w,x)B.Name=
|
||||
'ClusterMaterial'B.Parent=y return y end local aj,w,x=nil,nil,true if af then w=
|
||||
coroutine.create(function()aj=game:GetService'InsertService':LoadAssetVersion(ad
|
||||
)x=false end)coroutine.resume(w)else w=coroutine.create(function()aj=game:
|
||||
GetService'InsertService':LoadAsset(ad)x=false end)coroutine.resume(w)end local
|
||||
y,z,A=0,0,8 while x and z<A do y=tick()wait(1)z=z+(tick()-y)end x=false if z>=A
|
||||
then return nil,'Load Time Fail'end if aj==nil then return nil,'Load Asset Fail'
|
||||
end if not aj:IsA'Model'then return nil,'Load Type Fail'end local B=aj:
|
||||
GetChildren()if#B==0 then return nil,'Empty Model Fail'end ag(aj)aj=aj:
|
||||
GetChildren()[1]for C,D in pairs(B)do if D:IsA'Team'then D.Parent=game:
|
||||
GetService'Teams'elseif D:IsA'Sky'then local E=game:GetService'Lighting'for F,G
|
||||
in pairs(E:GetChildren())do if G:IsA'Sky'then G:Remove()end end D.Parent=E
|
||||
return end end if not(aj:FindFirstChild'RobloxModel'~=nil)then local E=Instance.
|
||||
new'BoolValue'E.Name='RobloxModel'E.Parent=aj if not(aj:FindFirstChild
|
||||
'RobloxStamper'~=nil)then local F=Instance.new'BoolValue'F.Name='RobloxStamper'F
|
||||
.Parent=aj end end if ae then if aj.Name=='MegaClusterCube'then if ae==6 then
|
||||
local E=Instance.new'BoolValue'E.Name='AutoWedge'E.Parent=aj else local E=aj:
|
||||
FindFirstChild'ClusterMaterial'if E then if E:IsA'Vector3Value'then aj=ai(E.
|
||||
Value.X,ae,E.Value.Z)else aj=ai(E.Value,ae,0)end else aj=ai(1,ae,0)end end end
|
||||
end return aj end a.SetupStamperDragger=function(ad,ae,af,ag,ah)if not ad then
|
||||
error
|
||||
math.huge)if r:IsA'Terrain'then s=Vector3.new(-2,-2,-2)t=Vector3.new(2,2,2)
|
||||
elseif r:IsA'BasePart'then s=-0.5*r.Size t=-s else t=r:GetModelSize()*0.5 s=-t
|
||||
end local u=r:FindFirstChild'Justification'if(u~=nil)then local v,w,x=u.Value,
|
||||
Vector3.new(2,2,2),t-s-Vector3.new(0.01,0.01,0.01)local y=Vector3.new(4*math.
|
||||
ceil(x.x/4),4*math.ceil(x.y/4),4*math.ceil(x.z/4))local z=y-x s=s-(0.5*z*v)t=t+(
|
||||
0.5*z*(w-v))end return s,t end local r r=function(s)local t,u=Vector3.new(math.
|
||||
huge,math.huge,math.huge),Vector3.new(-math.huge,-math.huge,-math.huge)if s:IsA
|
||||
'BasePart'and not s:IsA'Terrain'then local v,w=s.CFrame:pointToWorldSpace(-0.5*s
|
||||
.Size),s.CFrame:pointToWorldSpace(0.5*s.Size)t=Vector3.new(math.min(v.X,w.X),
|
||||
math.min(v.Y,w.Y),math.min(v.Z,w.Z))u=Vector3.new(math.max(v.X,w.X),math.max(v.Y
|
||||
,w.Y),math.max(v.Z,w.Z))elseif not s:IsA'Terrain'then local v,w=s:
|
||||
GetModelCFrame():pointToWorldSpace(-0.5*s:GetModelSize()),s:GetModelCFrame():
|
||||
pointToWorldSpace(0.5*s:GetModelSize())t=Vector3.new(math.min(v.X,w.X),math.min(
|
||||
v.Y,w.Y),math.min(v.Z,w.Z))u=Vector3.new(math.max(v.X,w.X),math.max(v.Y,w.Y),
|
||||
math.max(v.Z,w.Z))end return t,u end local s s=function(t)return q((function()if
|
||||
(t.Parent:FindFirstChild'RobloxModel'~=nil)then return t.Parent else return t
|
||||
end end)())end local t t=function(u)if(u.Parent:FindFirstChild'RobloxModel'~=nil
|
||||
)then if u.Parent:IsA'Tool'then return u.Parent.Handle.CFrame else return u.
|
||||
Parent:GetModelCFrame()end else return u.CFrame end end local u u=function(v)if
|
||||
not v then return false end if not v.Parent then return false end if v:
|
||||
FindFirstChild'Humanoid'then return false end if v:FindFirstChild'RobloxStamper'
|
||||
or v:FindFirstChild'RobloxModel'then return true end if v:IsA'Part'and not v.
|
||||
CanCollide then return false end if v==game.Lighting then return false end
|
||||
return u(v.Parent)end local v v=function(w,x,y)local z=game.Workspace:
|
||||
FindPartsInRegion3(Region3.new(Vector3.new(w.Position.X,x,w.Position.Z)-Vector3.
|
||||
new(0.75,2.75,0.75),Vector3.new(w.Position.X,x,w.Position.Z)+Vector3.new(0.75,
|
||||
1.75,0.75)),w.Parent,100)for A=1,#z do if z[A].CanCollide and not z[A]:
|
||||
IsDescendantOf(y.CurrentParts)then return false end end if i(Vector3.new(w.
|
||||
Position.X,x,w.Position.Z)-Vector3.new(0.75,2.75,0.75),Vector3.new(w.Position.X,
|
||||
x,w.Position.Z)+Vector3.new(0.75,1.75,0.75))then return false end return true
|
||||
end local w w=function(x,y)if not x then return end if not y then return error
|
||||
'findConfigAtMouseTarget: stampData is nil'end if not y['CurrentParts']then
|
||||
return end local z,A,B,C,D=4,false,CFrame.new(0,0,0),q(y.CurrentParts)local E,F=
|
||||
D-C,nil if y.CurrentParts:IsA'Model'or y.CurrentParts:IsA'Tool'then F=y.
|
||||
CurrentParts:GetModelCFrame()else F=y.CurrentParts.CFrame end if x then if y.
|
||||
CurrentParts:IsA'Tool'then x.TargetFilter=y.CurrentParts.Handle else x.
|
||||
TargetFilter=y.CurrentParts end end local G,H=false,nil local I=pcall(function()
|
||||
H=x.Target end)if not I then return A,B end local J=Vector3.new(0,0,0)if x then
|
||||
J=Vector3.new(x.Hit.x,x.Hit.y,x.Hit.z)end local K if nil==H then K=d(x)if nil==K
|
||||
then G=false return A,B else H=game.Workspace.Terrain G=true K=Vector3.new(K.X-1
|
||||
,K.Y,K.Z)J=game.Workspace.Terrain:CellCenterToWorld(K.x,K.y,K.z)end end local L,
|
||||
M=s(H)local N,O=M-L,t(H)if H:IsA'Terrain'then if not cluster then cluster=game.
|
||||
Workspace:FindFirstChild'Terrain'end local P=cluster:WorldToCellPreferSolid(J)if
|
||||
G then P=K end O=CFrame.new(game.Workspace.Terrain:CellCenterToWorld(P.x,P.y,P.z
|
||||
))end local P,Q=O:pointToObjectSpace(J),Vector3.new(0,0,0)if x then Q=H.CFrame:
|
||||
vectorToWorldSpace(Vector3.FromNormalId(x.TargetSurface))end local R,S,T if m(Q)
|
||||
==0 then R=O:vectorToObjectSpace(Vector3.new(1,-1,1))S=F:vectorToObjectSpace(
|
||||
Vector3.new(-1,-1,1))T=Vector3.new(0,1,1)elseif m(Q)==3 then R=O:
|
||||
vectorToObjectSpace(Vector3.new(-1,-1,-1))S=F:vectorToObjectSpace(Vector3.new(1,
|
||||
-1,-1))T=Vector3.new(0,1,1)elseif m(Q)==1 then R=O:vectorToObjectSpace(Vector3.
|
||||
new(-1,1,1))S=F:vectorToObjectSpace(Vector3.new(-1,-1,1))T=Vector3.new(1,0,1)
|
||||
elseif m(Q)==4 then R=O:vectorToObjectSpace(Vector3.new(-1,-1,1))S=F:
|
||||
vectorToObjectSpace(Vector3.new(-1,1,1))T=Vector3.new(1,0,1)elseif m(Q)==2 then
|
||||
R=O:vectorToObjectSpace(Vector3.new(-1,-1,1))S=F:vectorToObjectSpace(Vector3.
|
||||
new(-1,-1,-1))T=Vector3.new(1,1,0)else R=O:vectorToObjectSpace(Vector3.new(1,-1,
|
||||
-1))S=F:vectorToObjectSpace(Vector3.new(1,-1,1))T=Vector3.new(1,1,0)end R=R*((
|
||||
0.5*N)+0.5*(M+L))S=S*((0.5*E)+0.5*(D+C))local U=P-R local V=Vector3.new(z*math.
|
||||
modf(U.x/z),z*math.modf(U.y/z),z*math.modf(U.z/z))V=V*T local W=V+R local X,Y=O:
|
||||
pointToWorldSpace(W),F:vectorToWorldSpace(S)local Z,_,aa,ab,ac,ad,ae,af,ag,ah,ai
|
||||
,aj,ak=X-Y,F:components()B=CFrame.new(Z.x,Z.y,Z.z,ac,ad,ae,af,ag,ah,ai,aj,ak)A=
|
||||
true return A,B,m(Q)end local ab ab=function(ac,ad)local ae,af=math.abs(ac),math
|
||||
.abs(ad)local ag=math.sqrt(ae*ae+af*af)local ah,ai,aj=af/ag,1,1 if ac<0 then ai=
|
||||
-1 end if ad<0 then aj=-1 end if ah>0.382683432 then return 0.707106781*ag*ai,
|
||||
0.707106781*ag*aj else return ag*ai,0 end end local ac ac=function(ad,ae,af)if
|
||||
ad:IsA'ManualWeld'or ad:IsA'Rotate'then table.insert(ae,ad)return table.insert(
|
||||
af,ad.Parent)else local ag=ad:GetChildren()for ah=1,#ag do ac(ag[ah],ae,af)end
|
||||
end end local ad ad=function(ae,af)for ag=1,#ae do ae[ag].Parent=af[ag]end end b
|
||||
.CanEditRegion=function(ae,af)if not af then return true,false end local ag,ah=
|
||||
r(ae)if ag.X<af.CFrame.p.X-af.Size.X/2 or ag.Y<af.CFrame.p.Y-af.Size.Y/2 or ag.Z
|
||||
<af.CFrame.p.Z-af.Size.Z/2 then return false,false end if ah.X>af.CFrame.p.X+af.
|
||||
Size.X/2 or ah.Y>af.CFrame.p.Y+af.Size.Y/2 or ah.Z>af.CFrame.p.Z+af.Size.Z/2
|
||||
then return false,false end return true,false end b.GetStampModel=function(ae,af
|
||||
,ag)if ae==0 then return nil,'No Asset'end if ae<0 then return nil,
|
||||
'Negative Asset'end local ah ah=function(ai)if ai:IsA'BasePart'then ai.Locked=
|
||||
false end for aj,ak in pairs(ai:GetChildren())do ah(ak)end end local ai ai=
|
||||
function(aj)return BrickColor.new((function()if 1==aj then return'Bright green'
|
||||
elseif 2==aj then return'Bright yellow'elseif 3==aj then return'Bright red'
|
||||
elseif 4==aj then return'Sand red'elseif 5==aj then return'Black'elseif 6==aj
|
||||
then return'Dark stone grey'elseif 7==aj then return'Sand blue'elseif 8==aj then
|
||||
return'Deep orange'elseif 9==aj then return'Dark orange'elseif 10==aj then
|
||||
return'Reddish brown'elseif 11==aj then return'Light orange'elseif 12==aj then
|
||||
return'Light stone grey'elseif 13==aj then return'Sand green'elseif 14==aj then
|
||||
return'Medium stone grey'elseif 15==aj then return'Really red'elseif 16==aj then
|
||||
return'Really blue'elseif 17==aj then return'Bright blue'else return
|
||||
'Bright green'end end)())end local aj aj=function(ak,x,y)local z if x==1 or x==4
|
||||
then z=Instance.new'WedgePart'z.formFactor='Custom'elseif x==2 then z=Instance.
|
||||
new'CornerWedgePart'else z=Instance.new'Part'z.formFactor='Custom'end z.Name=
|
||||
'MegaClusterCube'z.Size=Vector3.new(4,4,4)z.BottomSurface='Smooth'z.TopSurface=
|
||||
'Smooth'z.BrickColor=ai(ak)local A,B=0,math.pi if x==4 then A=-math.pi/2 end if
|
||||
x==2 or x==3 then B=0 end z.CFrame=CFrame.Angles(0,math.pi/2*y+B,A)if x==3 then
|
||||
a('SpecialMesh',{MeshType='FileMesh',MeshId=
|
||||
'http://www.roblox.com/asset?id=66832495',Scale=Vector3.new(2,2,2),Parent=z})end
|
||||
a('Vector3Value','ClusterMaterial',{Value=Vector3.new(ak,x,y),Parent=z})return z
|
||||
end local ak,x,y=nil,nil,true if ag then x=coroutine.create(function()ak=game:
|
||||
GetService'InsertService':LoadAssetVersion(ae)y=false end)coroutine.resume(x)
|
||||
else x=coroutine.create(function()ak=game:GetService'InsertService':LoadAsset(ae
|
||||
)y=false end)coroutine.resume(x)end local z,A,B=0,0,8 while y and A<B do z=tick(
|
||||
)wait(1)A=A+(tick()-z)end y=false if A>=B then return nil,'Load Time Fail'end if
|
||||
ak==nil then return nil,'Load Asset Fail'end if not ak:IsA'Model'then return nil
|
||||
,'Load Type Fail'end local C=ak:GetChildren()if#C==0 then return nil,
|
||||
'Empty Model Fail'end ah(ak)ak=ak:GetChildren()[1]for D,E in pairs(C)do if E:IsA
|
||||
'Team'then E.Parent=game:GetService'Teams'elseif E:IsA'Sky'then local F=game:
|
||||
GetService'Lighting'for G,H in pairs(F:GetChildren())do if H:IsA'Sky'then H:
|
||||
Remove()end end E.Parent=F return end end if ak:FindFirstChild'RobloxModel'==nil
|
||||
then a('BoolValue','RobloxModel',{Parent=ak})if ak:FindFirstChild'RobloxStamper'
|
||||
==nil then a('BoolValue','RobloxStamper',{Parent=ak})end end if af then if ak.
|
||||
Name=='MegaClusterCube'then if af==6 then a('BoolValue','AutoWedge',{Parent=ak})
|
||||
else local F=ak:FindFirstChild'ClusterMaterial'if F then if F:IsA'Vector3Value'
|
||||
then ak=aj(F.Value.X,af,F.Value.Z)else ak=aj(F.Value,af,0)end else ak=aj(1,af,0)
|
||||
end end end end return ak end b.SetupStamperDragger=function(ae,af,ag,ah,ai)if
|
||||
not ae then error
|
||||
[[SetupStamperDragger: modelToStamp (first arg) is nil! Should be a stamper model]]
|
||||
return nil end if not ad:IsA'Model'and not ad:IsA'BasePart'then error
|
||||
return nil end if not ae:IsA'Model'and not ae:IsA'BasePart'then error
|
||||
[[SetupStamperDragger: modelToStamp (first arg) is neither a Model or Part!]]
|
||||
return nil end if not ae then error
|
||||
return nil end if not af then error
|
||||
[[SetupStamperDragger: Mouse (second arg) is nil! Should be a mouse object]]
|
||||
return nil end if not ae:IsA'Mouse'then error
|
||||
return nil end if not af:IsA'Mouse'then error
|
||||
[[SetupStamperDragger: Mouse (second arg) is not of type Mouse!]]return nil end
|
||||
local ai,aj,w if af then if not af:IsA'Model'then error
|
||||
local aj,ak,x if ag then if not ag:IsA'Model'then error
|
||||
[[SetupStamperDragger: StampInModel (optional third arg) is not of type 'Model']]
|
||||
return nil end if not ag then error
|
||||
return nil end if not ah then error
|
||||
[[SetupStamperDragger: AllowedStampRegion (optional fourth arg) is nil when StampInModel (optional third arg) is defined]]
|
||||
return nil end w=ah ai=af aj=ag end local x,y,z,A=0,nil,nil,Instance.new
|
||||
'SelectionBox'A.Color=BrickColor.new'Bright red'A.Transparency=0 A.Archivable=
|
||||
false local B=Instance.new'Part'B.Parent=nil B.formFactor='Custom'B.Size=Vector3
|
||||
.new(4,4,4)B.CFrame=CFrame.new()B.Archivable=false local C=Instance.new
|
||||
'SelectionBox'C.Color=BrickColor.new'Toothpaste'C.Adornee=B C.Visible=true C.
|
||||
Transparency=0 C.Name='HighScalabilityStamperLine'C.Archivable=false local D={}D
|
||||
.Start=nil D.End=nil D.Adorn=C D.AdornPart=B D.InternalLine=nil D.NewHint=true D
|
||||
.MorePoints={nil,nil}D.MoreLines={nil,nil}D.Dimensions=1 local E,F,G,H,I,J,K={},
|
||||
false,false,false,{},nil,Instance.new'BoolValue'K.Archivable=false K.Value=false
|
||||
local L={}L.TerrainOrientation=0 L.CFrame=0 local M={}M.Material=1 M.clusterType
|
||||
=0 M.clusterOrientation=0 local N N=function()if not y then return false end if
|
||||
not y.CurrentParts then return false end return y.CurrentParts:FindFirstChild(
|
||||
'ClusterMaterial',true)or(y.CurrentParts.Name=='MegaClusterCube')end local O O=
|
||||
function()local P=y.CurrentParts:FindFirstChild'MegaClusterCube'if not P then if
|
||||
not y.CurrentParts.Name=='MegaClusterCube'then return else P=y.CurrentParts end
|
||||
end D.End=P.CFrame.p local Q,R,S=nil,Vector3.new(0,0,0),Vector3.new(0,0,0)if D.
|
||||
Dimensions==1 then Q=(D.End-D.Start)if math.abs(Q.X)<math.abs(Q.Y)then if math.
|
||||
abs(Q.X)<math.abs(Q.Z)then local T,U if math.abs(Q.Y)>math.abs(Q.Z)then T,U=aa(Q
|
||||
.Y,Q.Z)else U,T=aa(Q.Z,Q.Y)end Q=Vector3.new(0,T,U)else local T,U=aa(Q.Y,Q.X)Q=
|
||||
Vector3.new(U,T,0)end else if math.abs(Q.Y)<math.abs(Q.Z)then local T,U if math.
|
||||
abs(Q.X)>math.abs(Q.Z)then T,U=aa(Q.X,Q.Z)else U,T=aa(Q.Z,Q.X)end Q=Vector3.new(
|
||||
T,0,U)else local T,U=aa(Q.X,Q.Y)Q=Vector3.new(T,U,0)end end D.InternalLine=Q
|
||||
elseif D.Dimensions==2 then Q=D.MoreLines[1]R=D.End-D.MorePoints[1]R=R-(Q.unit*Q
|
||||
.unit:Dot(R))local T=CFrame.new(D.Start,D.Start+Q)local U,V=T:
|
||||
vectorToWorldSpace(Vector3.new(0,1,0)),T:vectorToWorldSpace(Vector3.new(1,0,0))
|
||||
local W,X=V:Dot(R),U:Dot(R)if math.abs(X)>math.abs(W)then R=R-(V*W)else R=R-(U*X
|
||||
)end D.InternalLine=R elseif D.Dimensions==3 then Q=D.MoreLines[1]R=D.MoreLines[
|
||||
2]S=D.End-D.MorePoints[2]S=S-(Q.unit*Q.unit:Dot(S))S=S-(R.unit*R.unit:Dot(S))D.
|
||||
InternalLine=S end local T=CFrame.new(D.Start,D.Start+Q)if D.Dimensions==1 then
|
||||
D.AdornPart.Size=Vector3.new(4,4,Q.magnitude+4)D.AdornPart.CFrame=T+T:
|
||||
vectorToWorldSpace(Vector3.new(2,2,2)-D.AdornPart.Size/2)else local U=T:
|
||||
vectorToObjectSpace(Q+R+S)D.AdornPart.Size=Vector3.new(4,4,4)+Vector3.new(math.
|
||||
abs(U.X),math.abs(U.Y),math.abs(U.Z))D.AdornPart.CFrame=T+T:vectorToWorldSpace(U
|
||||
/2)end local U if game.Players['LocalPlayer']then U=game.Players.LocalPlayer:
|
||||
FindFirstChild'PlayerGui'if U and U:IsA'PlayerGui'then if(D.Dimensions==1 and Q.
|
||||
magnitude>3)or D.Dimensions>1 then D.Adorn.Parent=U end end end if not(U~=nil)
|
||||
then U=game:GetService'CoreGui'if(D.Dimensions==1 and Q.magnitude>3)or D.
|
||||
Dimensions>1 then D.Adorn.Parent=U end end end local P P=function(Q)if not Q
|
||||
return nil end x=ai aj=ag ak=ah end local y,z,A,B,C=0,nil,nil,a('SelectionBox',{
|
||||
Color=BrickColor.new'Bright red',Transparency=0,Archivable=false}),a('Part',{
|
||||
Parent=nil,formFactor='Custom',Size=Vector3.new(4,4,4),CFrame=CFrame.new(),
|
||||
Archivable=false})local D,E=a('SelectionBox','HighScalabilityStamperLine',{Color
|
||||
=BrickColor.new'Toothpaste',Adornee=C,Visible=true,Transparency=0,Archivable=
|
||||
false}),{}E.Start=nil E.End=nil E.Adorn=D E.AdornPart=C E.InternalLine=nil E.
|
||||
NewHint=true E.MorePoints={nil,nil}E.MoreLines={nil,nil}E.Dimensions=1 local F,G
|
||||
,H,I,J,K,L,M={},false,false,false,{},nil,a('BoolValue',{Archivable=false,Value=
|
||||
false}),{}M.TerrainOrientation=0 M.CFrame=0 local N={}N.Material=1 N.clusterType
|
||||
=0 N.clusterOrientation=0 local O O=function()if not z then return false end if
|
||||
not z.CurrentParts then return false end return z.CurrentParts:FindFirstChild(
|
||||
'ClusterMaterial',true)or(z.CurrentParts.Name=='MegaClusterCube')end local P P=
|
||||
function()local Q=z.CurrentParts:FindFirstChild'MegaClusterCube'if not Q then if
|
||||
not z.CurrentParts.Name=='MegaClusterCube'then return else Q=z.CurrentParts end
|
||||
end E.End=Q.CFrame.p local R,S,T=nil,Vector3.new(0,0,0),Vector3.new(0,0,0)if E.
|
||||
Dimensions==1 then R=E.End-E.Start if math.abs(R.X)<math.abs(R.Y)then if math.
|
||||
abs(R.X)<math.abs(R.Z)then local U,V if math.abs(R.Y)>math.abs(R.Z)then U,V=ab(R
|
||||
.Y,R.Z)else V,U=ab(R.Z,R.Y)end R=Vector3.new(0,U,V)else local U,V=ab(R.Y,R.X)R=
|
||||
Vector3.new(V,U,0)end else if math.abs(R.Y)<math.abs(R.Z)then local U,V if math.
|
||||
abs(R.X)>math.abs(R.Z)then U,V=ab(R.X,R.Z)else V,U=ab(R.Z,R.X)end R=Vector3.new(
|
||||
U,0,V)else local U,V=ab(R.X,R.Y)R=Vector3.new(U,V,0)end end E.InternalLine=R
|
||||
elseif E.Dimensions==2 then R=E.MoreLines[1]S=E.End-E.MorePoints[1]S=S-(R.unit*R
|
||||
.unit:Dot(S))local U=CFrame.new(E.Start,E.Start+R)local V,W=U:
|
||||
vectorToWorldSpace(Vector3.new(0,1,0)),U:vectorToWorldSpace(Vector3.new(1,0,0))
|
||||
local X,Y=W:Dot(S),V:Dot(S)if math.abs(Y)>math.abs(X)then S=S-(W*X)else S=S-(V*Y
|
||||
)end E.InternalLine=S elseif E.Dimensions==3 then R=E.MoreLines[1]S=E.MoreLines[
|
||||
2]T=E.End-E.MorePoints[2]T=T-(R.unit*R.unit:Dot(T))T=T-(S.unit*S.unit:Dot(T))E.
|
||||
InternalLine=T end local U=CFrame.new(E.Start,E.Start+R)if E.Dimensions==1 then
|
||||
E.AdornPart.Size=Vector3.new(4,4,R.magnitude+4)E.AdornPart.CFrame=U+U:
|
||||
vectorToWorldSpace(Vector3.new(2,2,2)-E.AdornPart.Size/2)else local V=U:
|
||||
vectorToObjectSpace(R+S+T)E.AdornPart.Size=Vector3.new(4,4,4)+Vector3.new(math.
|
||||
abs(V.X),math.abs(V.Y),math.abs(V.Z))E.AdornPart.CFrame=U+U:vectorToWorldSpace(V
|
||||
/2)end local V if game.Players['LocalPlayer']then V=game.Players.LocalPlayer:
|
||||
FindFirstChild'PlayerGui'if V and V:IsA'PlayerGui'then if(E.Dimensions==1 and R.
|
||||
magnitude>3)or E.Dimensions>1 then E.Adorn.Parent=V end end end if not(V~=nil)
|
||||
then V=game:GetService'CoreGui'if(E.Dimensions==1 and R.magnitude>3)or E.
|
||||
Dimensions>1 then E.Adorn.Parent=V end end end local Q Q=function(R)if not R
|
||||
then error'Error: RbxStamper.DoStamperMouseMove: Mouse is nil'return end if not
|
||||
Q:IsA'Mouse'then error('Error: RbxStamper.DoStamperMouseMove: Mouse is of type',
|
||||
Q.className,'should be of type Mouse')return end if not Q.Target then local R=c(
|
||||
Q)if nil==R then return end end if not y then return end local R,S,T=v(Q,y)if
|
||||
not R then error'RbxStamper.DoStamperMouseMove No configFound, returning'return
|
||||
end local U=0 if k(y.CurrentParts)and T~=1 and T~=4 then if T==3 then U=0-x+k(y.
|
||||
CurrentParts)elseif T==0 then U=2-x+k(y.CurrentParts)elseif T==5 then U=3-x+k(y.
|
||||
CurrentParts)elseif T==2 then U=1-x+k(y.CurrentParts)end end local V=math.pi/2 x
|
||||
=x+U if y.CurrentParts:IsA'Model'or y.CurrentParts:IsA'Tool'then f(y.
|
||||
CurrentParts,V*U)else y.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,V*U,0){y
|
||||
.CurrentParts.CFrame}end local W,X=q(y.CurrentParts)local Y if y.CurrentParts:
|
||||
IsA'Model'then Y=y.CurrentParts:GetModelCFrame()else Y=y.CurrentParts.CFrame end
|
||||
W=W+(S.p-Y.p)X=X+(S.p-Y.p)if h(W+d,X-d)then if L.CFrame then if y.CurrentParts:
|
||||
FindFirstChild('ClusterMaterial',true)then local ak=y.CurrentParts:
|
||||
FindFirstChild('ClusterMaterial',true)if ak:IsA'Vector3Value'then local al=y.
|
||||
CurrentParts:FindFirstChild('ClusterMaterial',true)if al then al=clusterMat end
|
||||
end end end return end if N()then local ak=game.Workspace.Terrain:WorldToCell(S.
|
||||
p)local al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax=game.Workspace.Terrain:
|
||||
CellCenterToWorld(ak.X,ak.Y,ak.Z),S:components()S=CFrame.new(al.X,al.Y,al.Z,ap,
|
||||
aq,ar,as,at,au,av,aw,ax)end m(S,y.CurrentParts)L.CFrame=S if y.CurrentParts:
|
||||
FindFirstChild('ClusterMaterial',true)then local ak=y.CurrentParts:
|
||||
FindFirstChild('ClusterMaterial',true)if ak:IsA'Vector3Value'then L.
|
||||
TerrainOrientation=ak.Value.Z end end if Q and Q.Target and Q.Target.Parent then
|
||||
local ak=Q.Target:FindFirstChild'RobloxModel'if not ak then ak=Q.Target.Parent:
|
||||
FindFirstChild'RobloxModel'end local al=y.CurrentParts:FindFirstChild
|
||||
'UnstampableFaces'do local ao,ap='',''if ak and ak.Parent:FindFirstChild
|
||||
'UnstampableFaces'then ao=ak.Parent.UnstampableFaces.Value end if al then ap=al.
|
||||
Value end local aq=0 if ak then aq=o(ak.Parent,game.Workspace.CurrentCamera.
|
||||
CoordinateFrame.p,Q.Hit.p)end for ar in string.gmatch(ao,'[^,]+')do if aq==
|
||||
tonumber(ar)then H=true game.JointsService:ClearJoinAfterMoveJoints()return end
|
||||
end aq=o(y.CurrentParts,Q.Hit.p,game.Workspace.CurrentCamera.CoordinateFrame.p)
|
||||
for as in string.gmatch(ap,'[^,]+')do if aq==tonumber(as)then H=true game.
|
||||
JointsService:ClearJoinAfterMoveJoints()return end end end end H=false game.
|
||||
JointsService:SetJoinAfterMoveInstance(y.CurrentParts)if(not pcall(function()if
|
||||
Q and Q.Target and not(Q.Target.Parent:FindFirstChild'RobloxModel'~=nil)then
|
||||
return else return end end))then error
|
||||
R:IsA'Mouse'then error('Error: RbxStamper.DoStamperMouseMove: Mouse is of type',
|
||||
R.className,'should be of type Mouse')return end if not R.Target then local S=d(
|
||||
R)if nil==S then return end end if not z then return end local S,T,U=w(R,z)if
|
||||
not S then error'RbxStamper.DoStamperMouseMove No configFound, returning'return
|
||||
end local V=0 if l(z.CurrentParts)and U~=1 and U~=4 then if U==3 then V=0-y+l(z.
|
||||
CurrentParts)elseif U==0 then V=2-y+l(z.CurrentParts)elseif U==5 then V=3-y+l(z.
|
||||
CurrentParts)elseif U==2 then V=1-y+l(z.CurrentParts)end end local W=math.pi/2 y
|
||||
=y+V if z.CurrentParts:IsA'Model'or z.CurrentParts:IsA'Tool'then g(z.
|
||||
CurrentParts,W*V)else z.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,W*V,0,{z
|
||||
.CurrentParts.CFrame})end local X,Y=r(z.CurrentParts)local Z if z.CurrentParts:
|
||||
IsA'Model'then Z=z.CurrentParts:GetModelCFrame()else Z=z.CurrentParts.CFrame end
|
||||
X=X+(T.p-Z.p)Y=Y+(T.p-Z.p)if i(X+e,Y-e)then if M.CFrame then if z.CurrentParts:
|
||||
FindFirstChild('ClusterMaterial',true)then local al=z.CurrentParts:
|
||||
FindFirstChild('ClusterMaterial',true)if al:IsA'Vector3Value'then local am=z.
|
||||
CurrentParts:FindFirstChild('ClusterMaterial',true)if am then am=clusterMat end
|
||||
end end end return end if O()then local al=game.Workspace.Terrain:WorldToCell(T.
|
||||
p)local am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay=game.Workspace.Terrain:
|
||||
CellCenterToWorld(al.X,al.Y,al.Z),T:components()T=CFrame.new(am.X,am.Y,am.Z,aq,
|
||||
ar,as,at,au,av,aw,ax,ay)end n(T,z.CurrentParts)M.CFrame=T if z.CurrentParts:
|
||||
FindFirstChild('ClusterMaterial',true)then local al=z.CurrentParts:
|
||||
FindFirstChild('ClusterMaterial',true)if al:IsA'Vector3Value'then M.
|
||||
TerrainOrientation=al.Value.Z end end if R and R.Target and R.Target.Parent then
|
||||
local al=R.Target:FindFirstChild'RobloxModel'if not al then al=R.Target.Parent:
|
||||
FindFirstChild'RobloxModel'end local am=z.CurrentParts:FindFirstChild
|
||||
'UnstampableFaces'do local ap,aq='',''if al and al.Parent:FindFirstChild
|
||||
'UnstampableFaces'then ap=al.Parent.UnstampableFaces.Value end if am then aq=am.
|
||||
Value end local ar=0 if al then ar=p(al.Parent,game.Workspace.CurrentCamera.
|
||||
CoordinateFrame.p,R.Hit.p)end for as in string.gmatch(ap,'[^,]+')do if ar==
|
||||
tonumber(as)then I=true game.JointsService:ClearJoinAfterMoveJoints()return end
|
||||
end ar=p(z.CurrentParts,R.Hit.p,game.Workspace.CurrentCamera.CoordinateFrame.p)
|
||||
for at in string.gmatch(aq,'[^,]+')do if ar==tonumber(at)then I=true game.
|
||||
JointsService:ClearJoinAfterMoveJoints()return end end end end I=false game.
|
||||
JointsService:SetJoinAfterMoveInstance(z.CurrentParts)if(not pcall(function()
|
||||
return end))then error
|
||||
[[Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check]]game.
|
||||
JointsService:ClearJoinAfterMoveJoints()Q=nil return end if Q and Q.Target and
|
||||
not(Q.Target.Parent:FindFirstChild'RobloxModel'~=nil)then game.JointsService:
|
||||
SetJoinAfterMoveTarget(Q.Target)else game.JointsService:SetJoinAfterMoveTarget(
|
||||
nil)end game.JointsService:ShowPermissibleJoints()if N()and D and D.Start then
|
||||
return O()end end local ak ak=function(al,ao)if E and E['Paused']then return end
|
||||
al=string.lower(al)if al=='r'and not k(y.CurrentParts)then x=x+1 local ap=y.
|
||||
CurrentParts:FindFirstChild('ClusterMaterial',true)if ap and ap:IsA
|
||||
'Vector3Value'then ap.Value=Vector3.new(ap.Value.X,ap.Value.Y,(ap.Value.Z+1)%4)
|
||||
end local aq=math.pi/2 if y.CurrentParts:IsA'Model'or y.CurrentParts:IsA'Tool'
|
||||
then f(y.CurrentParts,aq)else y.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,
|
||||
aq,0)*y.CurrentParts.CFrame end local as,at=v(ao,y)if as then m(at,y.
|
||||
CurrentParts)return P(ao)end elseif al=='c'then if D.InternalLine and D.
|
||||
InternalLine.magnitude>0 and D.Dimensions<3 then D.MorePoints[D.Dimensions]=D.
|
||||
End D.MoreLines[D.Dimensions]=D.InternalLine D.Dimensions=D.Dimensions+1 D.
|
||||
NewHint=true end end end J=ae.KeyDown:connect(function(al)return ak(al,ae)end)
|
||||
local al al=function()if D then D.Start=nil D.End=nil D.InternalLine=nil D.
|
||||
NewHint=true end end local ao ao=function()local ap=game.CoreGui if game:
|
||||
FindFirstChild'Players'then if game.Players['LocalPlayer']then if game.Players.
|
||||
LocalPlayer:FindFirstChild'PlayerGui'then ap=game.Players.LocalPlayer.PlayerGui
|
||||
end end end if not y['ErrorBox']then return end y.ErrorBox.Parent=ap if y.
|
||||
CurrentParts:IsA'Tool'then y.ErrorBox.Adornee=y.CurrentParts.Handle else y.
|
||||
ErrorBox.Adornee=y.CurrentParts end return delay(0,function()for aq=1,3 do if y[
|
||||
'ErrorBox']then y.ErrorBox.Visible=true end wait(0.13)if y['ErrorBox']then y.
|
||||
ErrorBox.Visible=false end wait(0.13)end if y['ErrorBox']then y.ErrorBox.Adornee
|
||||
=nil y.ErrorBox.Parent=Tool end end)end local ap ap=function(aq)if not aq then
|
||||
error'Error: RbxStamper.DoStamperMouseDown: Mouse is nil'return end if not aq:
|
||||
IsA'Mouse'then error('Error: RbxStamper.DoStamperMouseDown: Mouse is of type',aq
|
||||
.className,'should be of type Mouse')return end if not y then return end if N()
|
||||
then if aq and D then local as,at=y.CurrentParts:FindFirstChild(
|
||||
'MegaClusterCube',true),game.Workspace.Terrain if as then D.Dimensions=1 local
|
||||
au=at:WorldToCell(as.CFrame.p)D.Start=at:CellCenterToWorld(au.X,au.Y,au.Z)return
|
||||
else D.Dimensions=1 local au=at:WorldToCell(y.CurrentParts.CFrame.p)D.Start=at:
|
||||
CellCenterToWorld(au.X,au.Y,au.Z)return end end end end local aq aq=function(as,
|
||||
at)as.TopSurface=at[1]as.BottomSurface=at[2]as.LeftSurface=at[3]as.RightSurface=
|
||||
at[4]as.FrontSurface=at[5]as.BackSurface=at[6]return as end local as as=function
|
||||
(at,au)local av={}av[1]=at.TopSurface av[2]=at.BottomSurface av[3]=at.
|
||||
LeftSurface av[4]=at.RightSurface av[5]=at.FrontSurface av[6]=at.BackSurface au[
|
||||
at]=av end local at at=function(au)if not au then return nil end local av,aw,ax,
|
||||
Q,R,S=0.7,1,au:Clone(),{},{},{}y={}y.DisabledScripts={}y.TransparencyTable={}y.
|
||||
MaterialTable={}y.CanCollideTable={}y.AnchoredTable={}y.ArchivableTable={}y.
|
||||
DecalTransparencyTable={}y.SurfaceTypeTable={}g(ax,R,Q,S)if#R<=0 then return nil
|
||||
,'no parts found in modelToStamp'end for T,U in pairs(Q)do if not U.Disabled
|
||||
then U.Disabled=true y.DisabledScripts[#y.DisabledScripts+1]=U end end for V,W
|
||||
in pairs(R)do y.TransparencyTable[W]=W.Transparency W.Transparency=aw+(1-aw)*W.
|
||||
Transparency y.MaterialTable[W]=W.Material W.Material=Enum.Material.Plastic y.
|
||||
CanCollideTable[W]=W.CanCollide W.CanCollide=false y.AnchoredTable[W]=W.Anchored
|
||||
W.Anchored=true y.ArchivableTable[W]=W.Archivable W.Archivable=false as(W,y.
|
||||
SurfaceTypeTable)local X,Y=0.5,0.5 delay(0,function()wait(X)local ay=tick()local
|
||||
az=ay while(az-ay)<Y and W and W:IsA'BasePart'and W.Transparency>av do local aA=
|
||||
1-(((az-ay)/Y)*(aw-av))if y['TransparencyTable']and y.TransparencyTable[W]then W
|
||||
.Transparency=aA+(1-aA)*y.TransparencyTable[W]end wait(0.03)az=tick()end if W
|
||||
and W:IsA'BasePart'then if y['TransparencyTable']and y.TransparencyTable[W]then
|
||||
W.Transparency=av+(1-av)*y.TransparencyTable[W]end end end)end for ay,az in
|
||||
pairs(S)do y.DecalTransparencyTable[az]=az.Transparency az.Transparency=av+(1-av
|
||||
)*az.Transparency end j(ax,true)j(ax,false)y.CurrentParts=ax if k(ax)then y.
|
||||
CurrentParts:ResetOrientationToIdentity()x=0 else local aA=x*math.pi/2 if y.
|
||||
CurrentParts:IsA'Model'or y.CurrentParts:IsA'Tool'then f(y.CurrentParts,aA)else
|
||||
y.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,aA,0)*y.CurrentParts.CFrame
|
||||
end end local aA=y.CurrentParts:FindFirstChild('ClusterMaterial',true)if aA and
|
||||
aA:IsA'Vector3Value'then aA.Value=Vector3.new(aA.Value.X,aA.Value.Y,(aA.Value.Z+
|
||||
x)%4)end local X,Y=v(ae,y)if X then y.CurrentParts=m(Y,y.CurrentParts)end game.
|
||||
JointsService:SetJoinAfterMoveInstance(y.CurrentParts)return ax,R end local au
|
||||
au=function(av,aw)local ax=game.Workspace.Terrain.CellCenterToWorld local ay=ax(
|
||||
game.Workspace.Terrain,av.X,av.Y,av.Z)local az,aA=game.Workspace:
|
||||
FindPartsInRegion3(Region3.new(ay-Vector3.new(2,2,2)+d,ay+Vector3.new(2,2,2)-d),
|
||||
y.CurrentParts,100),false for Q=1,#az do if t(az[Q])then aA=true break end end
|
||||
if not aA then local Q={}for R=1,#az do if az[R].Parent and not Q[az[R].Parent]
|
||||
and az[R].Parent:FindFirstChild(az[R].Parent:FindFirstChild'Humanoid':IsA
|
||||
'Humanoid')then local S=az[R].Parent:FindFirstChild'Torso'Q[az[R].Parent]=true
|
||||
if S then local U=ay.Y+5 if u(S,U,y)then S.CFrame=S.CFrame+Vector3.new(0,U-S.
|
||||
CFrame.p.Y,0)else aA=true break end end end end end if not aA then local Q=true
|
||||
if aw then if aj then av=ax(game.Workspace.Terrain,av.X,av.Y,av.Z)if(av.X+2>aj.
|
||||
CFrame.p.X+aj.Size.X/2)or(av.X-2<aj.CFrame.p.X-aj.Size.X/2)or(av.Y+2>aj.CFrame.p
|
||||
.Y+aj.Size.Y/2)or(av.Y-2<aj.CFrame.p.Y-aj.Size.Y/2)or(av.Z+2>aj.CFrame.p.Z+aj.
|
||||
Size.Z/2)or(av.Z-2<aj.CFrame.p.Z-aj.Size.Z/2)then Q=false end end end return Q
|
||||
end return false end local av av=function(aw)local ax,ay,az,aA,Q,R,S,U,W=false,
|
||||
game.Workspace.Terrain,D.InternalLine,game.Workspace.Terrain.MaxExtents.Max,game
|
||||
.Workspace.Terrain.MaxExtents.Min,1,0,0,false if y.CurrentParts:FindFirstChild
|
||||
'AutoWedge'then W=true end if y.CurrentParts:FindFirstChild('ClusterMaterial',
|
||||
true)then R=y.CurrentParts:FindFirstChild('ClusterMaterial',true)if R:IsA
|
||||
'Vector3Value'then S=R.Value.Y U=R.Value.Z R=R.Value.X elseif R:IsA'IntValue'
|
||||
then R=R.Value end end if D.Adorn.Parent and D.Start and((D.Dimensions>1)or(az
|
||||
and az.magnitude>0))then local X,Y,aB,aC,aD,aE,aF,aG=game.Workspace.Terrain:
|
||||
WorldToCell(D.Start),{0,0,0},{0,0,0},{0,0,0},{nil,nil,nil},{Vector3.new(0,0,0),
|
||||
JointsService:ClearJoinAfterMoveJoints()R=nil return end if R and R.Target and
|
||||
not(R.Target.Parent:FindFirstChild'RobloxModel'~=nil)then game.JointsService:
|
||||
SetJoinAfterMoveTarget(R.Target)else game.JointsService:SetJoinAfterMoveTarget(
|
||||
nil)end game.JointsService:ShowPermissibleJoints()if O()and E and E.Start then
|
||||
return P()end end local al al=function(am,ap)if F and F['Paused']then return end
|
||||
am=string.lower(am)if am=='r'and not l(z.CurrentParts)then y=y+1 local aq=z.
|
||||
CurrentParts:FindFirstChild('ClusterMaterial',true)if aq and aq:IsA
|
||||
'Vector3Value'then aq.Value=Vector3.new(aq.Value.X,aq.Value.Y,(aq.Value.Z+1)%4)
|
||||
end local ar=math.pi/2 if z.CurrentParts:IsA'Model'or z.CurrentParts:IsA'Tool'
|
||||
then g(z.CurrentParts,ar)else z.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,
|
||||
ar,0)*z.CurrentParts.CFrame end local at,au=w(ap,z)if at then n(au,z.
|
||||
CurrentParts)return Q(ap)end elseif am=='c'then if E.InternalLine and E.
|
||||
InternalLine.magnitude>0 and E.Dimensions<3 then E.MorePoints[E.Dimensions]=E.
|
||||
End E.MoreLines[E.Dimensions]=E.InternalLine E.Dimensions=E.Dimensions+1 E.
|
||||
NewHint=true end return E end end K=af.KeyDown:connect(function(am)return al(am,
|
||||
af)end)local am am=function()if E then E.Start=nil E.End=nil E.InternalLine=nil
|
||||
E.NewHint=true end end local ap ap=function()local aq=game.CoreGui if game:
|
||||
FindFirstChild'Players'and game.Players['LocalPlayer']and game.Players.
|
||||
LocalPlayer:FindFirstChild'PlayerGui'then aq=game.Players.LocalPlayer.PlayerGui
|
||||
end if not z['ErrorBox']then return end z.ErrorBox.Parent=aq if z.CurrentParts:
|
||||
IsA'Tool'then z.ErrorBox.Adornee=z.CurrentParts.Handle else z.ErrorBox.Adornee=z
|
||||
.CurrentParts end return delay(0,function()for ar=1,3 do if z['ErrorBox']then z.
|
||||
ErrorBox.Visible=true end wait(0.13)if z['ErrorBox']then z.ErrorBox.Visible=
|
||||
false end wait(0.13)end if z['ErrorBox']then z.ErrorBox.Adornee=nil z.ErrorBox.
|
||||
Parent=Tool end end)end local aq aq=function(ar)if not ar then error
|
||||
'Error: RbxStamper.DoStamperMouseDown: Mouse is nil'return end if not ar:IsA
|
||||
'Mouse'then error('Error: RbxStamper.DoStamperMouseDown: Mouse is of type',ar.
|
||||
className,'should be of type Mouse')return end if not z then return end if O()
|
||||
then if ar and E then local at,au=z.CurrentParts:FindFirstChild(
|
||||
'MegaClusterCube',true),game.Workspace.Terrain if at then E.Dimensions=1 local
|
||||
av=au:WorldToCell(at.CFrame.p)E.Start=au:CellCenterToWorld(av.X,av.Y,av.Z)return
|
||||
else E.Dimensions=1 local av=au:WorldToCell(z.CurrentParts.CFrame.p)E.Start=au:
|
||||
CellCenterToWorld(av.X,av.Y,av.Z)return end end end end local ar ar=function(at,
|
||||
au)at.TopSurface=au[1]at.BottomSurface=au[2]at.LeftSurface=au[3]at.RightSurface=
|
||||
au[4]at.FrontSurface=au[5]at.BackSurface=au[6]return at end local at at=function
|
||||
(au,av)local aw={}aw[1]=au.TopSurface aw[2]=au.BottomSurface aw[3]=au.
|
||||
LeftSurface aw[4]=au.RightSurface aw[5]=au.FrontSurface aw[6]=au.BackSurface av[
|
||||
au]=aw end local au au=function(av)if not av then return nil end local aw,ax,ay,
|
||||
R,S,T=0.7,1,av:Clone(),{},{},{}z={}z.DisabledScripts={}z.TransparencyTable={}z.
|
||||
MaterialTable={}z.CanCollideTable={}z.AnchoredTable={}z.ArchivableTable={}z.
|
||||
DecalTransparencyTable={}z.SurfaceTypeTable={}h(ay,S,R,T)if#S<=0 then return nil
|
||||
,'no parts found in modelToStamp'end for U,V in pairs(R)do if not V.Disabled
|
||||
then V.Disabled=true z.DisabledScripts[#z.DisabledScripts+1]=V end end for W,X
|
||||
in pairs(S)do z.TransparencyTable[X]=X.Transparency X.Transparency=ax+(1-ax)*X.
|
||||
Transparency z.MaterialTable[X]=X.Material X.Material=Enum.Material.Plastic z.
|
||||
CanCollideTable[X]=X.CanCollide X.CanCollide=false z.AnchoredTable[X]=X.Anchored
|
||||
X.Anchored=true z.ArchivableTable[X]=X.Archivable X.Archivable=false at(X,z.
|
||||
SurfaceTypeTable)local Y,Z=0.5,0.5 delay(0,function()wait(Y)local az=tick()local
|
||||
aA=az while(aA-az)<Z and X and X:IsA'BasePart'and X.Transparency>aw do local aB=
|
||||
1-(((aA-az)/Z)*(ax-aw))if z['TransparencyTable']and z.TransparencyTable[X]then X
|
||||
.Transparency=aB+(1-aB)*z.TransparencyTable[X]end wait(0.03)aA=tick()end if X
|
||||
and X:IsA'BasePart'then if z['TransparencyTable']and z.TransparencyTable[X]then
|
||||
X.Transparency=aw+(1-aw)*z.TransparencyTable[X]end end end)end for az,aA in
|
||||
pairs(T)do z.DecalTransparencyTable[aA]=aA.Transparency aA.Transparency=aw+(1-aw
|
||||
)*aA.Transparency end k(ay,true)k(ay,false)z.CurrentParts=ay if l(ay)then z.
|
||||
CurrentParts:ResetOrientationToIdentity()y=0 else local aB=y*math.pi/2 if z.
|
||||
CurrentParts:IsA'Model'or z.CurrentParts:IsA'Tool'then g(z.CurrentParts,aB)else
|
||||
z.CurrentParts.CFrame=CFrame.fromEulerAnglesXYZ(0,aB,0)*z.CurrentParts.CFrame
|
||||
end end local aB=z.CurrentParts:FindFirstChild('ClusterMaterial',true)if aB and
|
||||
aB:IsA'Vector3Value'then aB.Value=Vector3.new(aB.Value.X,aB.Value.Y,(aB.Value.Z+
|
||||
y)%4)end local Y,Z=w(af,z)if Y then z.CurrentParts=n(Z,z.CurrentParts)end game.
|
||||
JointsService:SetJoinAfterMoveInstance(z.CurrentParts)return ay,S end local av
|
||||
av=function(aw,ax)local ay=game.Workspace.Terrain.CellCenterToWorld local az=ay(
|
||||
game.Workspace.Terrain,aw.X,aw.Y,aw.Z)local aA,aB=game.Workspace:
|
||||
FindPartsInRegion3(Region3.new(az-Vector3.new(2,2,2)+e,az+Vector3.new(2,2,2)-e),
|
||||
z.CurrentParts,100),false for R=1,#aA do if u(aA[R])then aB=true break end end
|
||||
if not aB then local R={}for S=1,#aA do if aA[S].Parent and not R[aA[S].Parent]
|
||||
and aA[S].Parent:FindFirstChild(aA[S].Parent:FindFirstChild'Humanoid':IsA
|
||||
'Humanoid')then local T=aA[S].Parent:FindFirstChild'Torso'R[aA[S].Parent]=true
|
||||
if T then local V=az.Y+5 if v(T,V,z)then T.CFrame=T.CFrame+Vector3.new(0,V-T.
|
||||
CFrame.p.Y,0)else aB=true break end end end end end if not aB then local R=true
|
||||
if ax then if ak then aw=ay(game.Workspace.Terrain,aw.X,aw.Y,aw.Z)if(aw.X+2>ak.
|
||||
CFrame.p.X+ak.Size.X/2)or(aw.X-2<ak.CFrame.p.X-ak.Size.X/2)or(aw.Y+2>ak.CFrame.p
|
||||
.Y+ak.Size.Y/2)or(aw.Y-2<ak.CFrame.p.Y-ak.Size.Y/2)or(aw.Z+2>ak.CFrame.p.Z+ak.
|
||||
Size.Z/2)or(aw.Z-2<ak.CFrame.p.Z-ak.Size.Z/2)then R=false end end end return R
|
||||
end return false end local aw aw=function(ax)local ay,az,aA,aB,R,S,T,V,X=false,
|
||||
game.Workspace.Terrain,E.InternalLine,game.Workspace.Terrain.MaxExtents.Max,game
|
||||
.Workspace.Terrain.MaxExtents.Min,1,0,0,false if z.CurrentParts:FindFirstChild
|
||||
'AutoWedge'then X=true end if z.CurrentParts:FindFirstChild('ClusterMaterial',
|
||||
true)then S=z.CurrentParts:FindFirstChild('ClusterMaterial',true)if S:IsA
|
||||
'Vector3Value'then T=S.Value.Y V=S.Value.Z S=S.Value.X elseif S:IsA'IntValue'
|
||||
then S=S.Value end end if E.Adorn.Parent and E.Start and((E.Dimensions>1)or(aA
|
||||
and aA.magnitude>0))then local Y,Z,aC,aD,aE,aF,aG,aH=game.Workspace.Terrain:
|
||||
WorldToCell(E.Start),{0,0,0},{0,0,0},{0,0,0},{nil,nil,nil},{Vector3.new(0,0,0),
|
||||
Vector3.new(0,0,0),Vector3.new(0,0,0)},{Vector3.new(1,0,0),Vector3.new(0,1,0),
|
||||
Vector3.new(0,0,1)},{}if D.Dimensions>1 then table.insert(aG,D.MoreLines[1])end
|
||||
if az and az.magnitude>0 then table.insert(aG,az)end if D.Dimensions>2 then
|
||||
table.insert(aG,D.MoreLines[2])end for aH=1,#aG do aG[aH]=Vector3.new(math.
|
||||
floor(aG[aH].X+0.5),math.floor(aG[aH].Y+0.5),math.floor(aG[aH].Z+0.5))if aG[aH].
|
||||
X>0 then Y[aH]=1 elseif aG[aH].X<0 then Y[aH]=-1 end if aG[aH].Y>0 then aB[aH]=1
|
||||
elseif aG[aH].Y<0 then aB[aH]=-1 end if aG[aH].Z>0 then aC[aH]=1 elseif aG[aH].Z
|
||||
<0 then aC[aH]=-1 end aD[aH]=Vector3.new(Y[aH],aB[aH],aC[aH])if aD[aH].magnitude
|
||||
<0.9 then aD[aH]=nil end end if not aG[2]then aG[2]=Vector3.new(0,0,0)end if not
|
||||
aG[3]then aG[3]=Vector3.new(0,0,0)end local aH,aI=y.CurrentParts:FindFirstChild(
|
||||
'WaterForceTag',true),y.CurrentParts:FindFirstChild('WaterForceDirectionTag',
|
||||
true)while aE[3].magnitude*4<=aG[3].magnitude do local aJ=1 while aJ<4 do aE[2]=
|
||||
Vector3.new(0,0,0)while aE[2].magnitude*4<=aG[2].magnitude do local aK=1 while
|
||||
aK<4 do aE[1]=Vector3.new(0,0,0)while aE[1].magnitude*4<=aG[1].magnitude do
|
||||
local aL=aE[1]+aE[2]+aE[3]local aM=Vector3int16.new(X.X+aL.X,X.Y+aL.Y,X.Z+aL.Z)
|
||||
if aM.X>=Q.X and aM.Y>=Q.Y and aM.Z>=Q.Z and aM.X<aA.X and aM.Y<aA.Y and aM.Z<aA
|
||||
.Z then local aN=au(aM,aw)if aN then if aH then ay:SetWaterCell(aM.X,aM.Y,aM.Z,
|
||||
Enum.WaterForce[aH.Value],Enum.WaterDirection[aI.Value])else ay:SetCell(aM.X,aM.
|
||||
Y,aM.Z,R,S,U)end ax=true if W then game.Workspace.Terrain:AutowedgeCells(
|
||||
Region3int16.new(Vector3int16.new(aM.x-1,aM.y-1,aM.z-1),Vector3int16.new(aM.x+1,
|
||||
aM.y+1,aM.z+1)))end end end aE[1]=aE[1]+aD[1]end if aD[2]then while aK<4 and aF[
|
||||
aK]:Dot(aD[2])==0 do aK=aK+1 end if aK<4 then aE[2]=aE[2]+aF[aK]*aF[aK]:Dot(aD[2
|
||||
])end aK=aK+1 else aE[2]=Vector3.new(1,0,0)aK=4 end if aE[2].magnitude*4>aG[2].
|
||||
magnitude then aK=4 end end end if aD[3]then while aJ<4 and aF[aJ]:Dot(aD[3])==0
|
||||
do aJ=aJ+1 end if aJ<4 then aE[3]=aE[3]+aF[aJ]*aF[aJ]:Dot(aD[3])end aJ=aJ+1 else
|
||||
aE[3]=Vector3.new(1,0,0)aJ=4 end if aE[3].magnitude*4>aG[3].magnitude then aJ=4
|
||||
end end end end D.Start=nil D.Adorn.Parent=nil if ax then y.CurrentParts.Parent=
|
||||
Vector3.new(0,0,1)},{}if E.Dimensions>1 then table.insert(aH,E.MoreLines[1])end
|
||||
if aA and aA.magnitude>0 then table.insert(aH,aA)end if E.Dimensions>2 then
|
||||
table.insert(aH,E.MoreLines[2])end for aI=1,#aH do aH[aI]=Vector3.new(math.
|
||||
floor(aH[aI].X+0.5),math.floor(aH[aI].Y+0.5),math.floor(aH[aI].Z+0.5))if aH[aI].
|
||||
X>0 then Z[aI]=1 elseif aH[aI].X<0 then Z[aI]=-1 end if aH[aI].Y>0 then aC[aI]=1
|
||||
elseif aH[aI].Y<0 then aC[aI]=-1 end if aH[aI].Z>0 then aD[aI]=1 elseif aH[aI].Z
|
||||
<0 then aD[aI]=-1 end aE[aI]=Vector3.new(Z[aI],aC[aI],aD[aI])if aE[aI].magnitude
|
||||
<0.9 then aE[aI]=nil end end if not aH[2]then aH[2]=Vector3.new(0,0,0)end if not
|
||||
aH[3]then aH[3]=Vector3.new(0,0,0)end local aI,aJ=z.CurrentParts:FindFirstChild(
|
||||
'WaterForceTag',true),z.CurrentParts:FindFirstChild('WaterForceDirectionTag',
|
||||
true)while aF[3].magnitude*4<=aH[3].magnitude do local aK=1 while aK<4 do aF[2]=
|
||||
Vector3.new(0,0,0)while aF[2].magnitude*4<=aH[2].magnitude do local aL=1 while
|
||||
aL<4 do aF[1]=Vector3.new(0,0,0)while aF[1].magnitude*4<=aH[1].magnitude do
|
||||
local aM=aF[1]+aF[2]+aF[3]local aN=Vector3int16.new(Y.X+aM.X,Y.Y+aM.Y,Y.Z+aM.Z)
|
||||
if aN.X>=R.X and aN.Y>=R.Y and aN.Z>=R.Z and aN.X<aB.X and aN.Y<aB.Y and aN.Z<aB
|
||||
.Z then local aO=av(aN,ax)if aO then if aI then az:SetWaterCell(aN.X,aN.Y,aN.Z,
|
||||
Enum.WaterForce[aI.Value],Enum.WaterDirection[aJ.Value])else az:SetCell(aN.X,aN.
|
||||
Y,aN.Z,S,T,V)end ay=true if X then game.Workspace.Terrain:AutowedgeCells(
|
||||
Region3int16.new(Vector3int16.new(aN.x-1,aN.y-1,aN.z-1),Vector3int16.new(aN.x+1,
|
||||
aN.y+1,aN.z+1)))end end end aF[1]=aF[1]+aE[1]end if aE[2]then while aL<4 and aG[
|
||||
aL]:Dot(aE[2])==0 do aL=aL+1 end if aL<4 then aF[2]=aF[2]+aG[aL]*aG[aL]:Dot(aE[2
|
||||
])end aL=aL+1 else aF[2]=Vector3.new(1,0,0)aL=4 end if aF[2].magnitude*4>aH[2].
|
||||
magnitude then aL=4 end end end if aE[3]then while aK<4 and aG[aK]:Dot(aE[3])==0
|
||||
do aK=aK+1 end if aK<4 then aF[3]=aF[3]+aG[aK]*aG[aK]:Dot(aE[3])end aK=aK+1 else
|
||||
aF[3]=Vector3.new(1,0,0)aK=4 end if aF[3].magnitude*4>aH[3].magnitude then aK=4
|
||||
end end end end E.Start=nil E.Adorn.Parent=nil if ay then z.CurrentParts.Parent=
|
||||
nil pcall(function()return game:GetService'ChangeHistoryService':SetWaypoint
|
||||
'StamperMulti'end)end return ax end local aw aw=function(ax)if not ax then error
|
||||
'Error: RbxStamper.DoStamperMouseUp: Mouse is nil'return false end if not ax:IsA
|
||||
'Mouse'then error('Error: RbxStamper.DoStamperMouseUp: Mouse is of type',ax.
|
||||
className,'should be of type Mouse')return false end if not y.Dragger then error
|
||||
'StamperMulti'end)end return ay end local ax ax=function(ay)if not ay then error
|
||||
'Error: RbxStamper.DoStamperMouseUp: Mouse is nil'return false end if not ay:IsA
|
||||
'Mouse'then error('Error: RbxStamper.DoStamperMouseUp: Mouse is of type',ay.
|
||||
className,'should be of type Mouse')return false end if not z.Dragger then error
|
||||
[[Error: RbxStamper.DoStamperMouseUp: stampData.Dragger is nil]]return false end
|
||||
if not D then return false end local ay if ai then local az,aA=nil,N()if aA and
|
||||
D and D.Start and D.InternalLine and D.InternalLine.magnitude>0 then az=true ay=
|
||||
true else az,ay=a.CanEditRegion(y.CurrentParts,aj)end if not az then if w then
|
||||
w()end return false end end if H then ao()return false end local az az,ay=a.
|
||||
CanEditRegion(y.CurrentParts,aj)if not az then if w then w()end return false end
|
||||
local aA,aB=q(y.CurrentParts)local aC,aD=v(ax,y)if aC and not D.Adorn.Parent
|
||||
then if h(aA+d,aB-d)then ao()return false end local aE=game.Workspace:
|
||||
FindPartsInRegion3(Region3.new(aA+d,aB-d),y.CurrentParts,100)for aF=1,#aE do if
|
||||
t(aE[aF])then ao()return false end end local aF={}for aG=1,#aE do if aE[aG].
|
||||
Parent and not aF[aE[aG].Parent]and aE[aG].Parent:FindFirstChild'Humanoid'and aE
|
||||
[aG].Parent:FindFirstChild'Humanoid':IsA'Humanoid'then local aH=aE[aG].Parent:
|
||||
FindFirstChild'Torso'aF[aE[aG].Parent]=true if aH then local aI=aB.Y+3 if u(aH,
|
||||
aI,y)then aH.CFrame=aH.CFrame+Vector3.new(0,aI-aH.CFrame.p.Y,0)else ao()return
|
||||
false end end end end elseif(not aC)and not(D.Start and D.Adorn.Parent)then al()
|
||||
if not E then return false end local az if aj then local aA,aB=nil,O()if aB and
|
||||
E and E.Start and E.InternalLine and E.InternalLine.magnitude>0 then aA=true az=
|
||||
true else aA,az=b.CanEditRegion(z.CurrentParts,ak)end if not aA then if x~=nil
|
||||
then x()end return false end end if I then ap()return false end local aA aA,az=b
|
||||
.CanEditRegion(z.CurrentParts,ak)if not aA then if x~=nil then x()end return
|
||||
false end local aB,aC=r(z.CurrentParts)local aD,aE=w(ay,z)if aD and not E.Adorn.
|
||||
Parent then if i(aB+e,aC-e)then ap()return false end local aF=game.Workspace:
|
||||
FindPartsInRegion3(Region3.new(aB+e,aC-e),z.CurrentParts,100)for aG=1,#aF do if
|
||||
u(aF[aG])then ap()return false end end local aG={}for aH=1,#aF do if aF[aH].
|
||||
Parent and not aG[aF[aH].Parent]and aF[aH].Parent:FindFirstChild'Humanoid'and aF
|
||||
[aH].Parent:FindFirstChild'Humanoid':IsA'Humanoid'then local aI=aF[aH].Parent:
|
||||
FindFirstChild'Torso'aG[aF[aH].Parent]=true if aI then local aJ=aC.Y+3 if v(aI,
|
||||
aJ,z)then aI.CFrame=aI.CFrame+Vector3.new(0,aJ-aI.CFrame.p.Y,0)else ap()return
|
||||
false end end end end elseif(not aD)and not(E.Start and E.Adorn.Parent)then am()
|
||||
return false end if game:FindFirstChild'Players'then if game.Players[
|
||||
'LocalPlayer']then if game.Players.LocalPlayer['Character']then local aE=game.
|
||||
Players.LocalPlayer.Character local aF=aE:FindFirstChild'StampTracker'if aF and
|
||||
not aF.Value then aF.Value=true end end end end if D.Start and D.Adorn.Parent
|
||||
and N()then if av(ay)or ay then y.CurrentParts.Parent=nil return true end end D.
|
||||
Start=nil D.Adorn.Parent=nil local aE=game.Workspace.Terrain if N()then local aF
|
||||
if y.CurrentParts:IsA'Model'then aF=aE:WorldToCell(y.CurrentParts:
|
||||
GetModelCFrame().p)else aF=aE:WorldToCell(y.CurrentParts.CFrame.p)end local aG,
|
||||
aH=game.Workspace.Terrain.MaxExtents.Max,game.Workspace.Terrain.MaxExtents.Min
|
||||
if au(aF,false)then local aI,aJ,aK=y.CurrentParts:FindFirstChild(
|
||||
'ClusterMaterial',true),y.CurrentParts:FindFirstChild('WaterForceTag',true),y.
|
||||
CurrentParts:FindFirstChild('WaterForceDirectionTag',true)if aF.X>=aH.X and aF.Y
|
||||
>=aH.Y and aF.Z>=aH.Z and aF.X<aG.X and aF.Y<aG.Y and aF.Z<aG.Z then if aJ then
|
||||
aE:SetWaterCell(aF.X,aF.Y,aF.Z,Enum.WaterForce[aJ.Value],Enum.WaterDirection[aK.
|
||||
Value])elseif not aI then aE:SetCell(aF.X,aF.Y,aF.Z,M.Material,M.clusterType,x%4
|
||||
)elseif aI:IsA'Vector3Value'then aE:SetCell(aF.X,aF.Y,aF.Z,aI.Value.X,aI.Value.Y
|
||||
,aI.Value.Z)else aE:SetCell(aF.X,aF.Y,aF.Z,aI.Value,0,0)end local aL=false if y.
|
||||
CurrentParts:FindFirstChild'AutoWedge'then aL=true end if aL then game.Workspace
|
||||
.Terrain:AutowedgeCells(Region3int16.new(Vector3int16.new(aF.x-1,aF.y-1,aF.z-1),
|
||||
Vector3int16.new(aF.x+1,aF.y+1,aF.z+1)))end y.CurrentParts.Parent=nil pcall(
|
||||
'LocalPlayer']then if game.Players.LocalPlayer['Character']then local aF=game.
|
||||
Players.LocalPlayer.Character local aG=aF:FindFirstChild'StampTracker'if aG and
|
||||
not aG.Value then aG.Value=true end end end end if E.Start and E.Adorn.Parent
|
||||
and O()then if aw(az)or az then z.CurrentParts.Parent=nil return true end end E.
|
||||
Start=nil E.Adorn.Parent=nil local aF=game.Workspace.Terrain if O()then local aG
|
||||
if z.CurrentParts:IsA'Model'then aG=aF:WorldToCell(z.CurrentParts:
|
||||
GetModelCFrame().p)else aG=aF:WorldToCell(z.CurrentParts.CFrame.p)end local aH,
|
||||
aI=game.Workspace.Terrain.MaxExtents.Max,game.Workspace.Terrain.MaxExtents.Min
|
||||
if av(aG,false)then local aJ,aK,aL=z.CurrentParts:FindFirstChild(
|
||||
'ClusterMaterial',true),z.CurrentParts:FindFirstChild('WaterForceTag',true),z.
|
||||
CurrentParts:FindFirstChild('WaterForceDirectionTag',true)if aG.X>=aI.X and aG.Y
|
||||
>=aI.Y and aG.Z>=aI.Z and aG.X<aH.X and aG.Y<aH.Y and aG.Z<aH.Z then if aK then
|
||||
aF:SetWaterCell(aG.X,aG.Y,aG.Z,Enum.WaterForce[aK.Value],Enum.WaterDirection[aL.
|
||||
Value])elseif not aJ then aF:SetCell(aG.X,aG.Y,aG.Z,N.Material,N.clusterType,y%4
|
||||
)elseif aJ:IsA'Vector3Value'then aF:SetCell(aG.X,aG.Y,aG.Z,aJ.Value.X,aJ.Value.Y
|
||||
,aJ.Value.Z)else aF:SetCell(aG.X,aG.Y,aG.Z,aJ.Value,0,0)end local aM=false if z.
|
||||
CurrentParts:FindFirstChild'AutoWedge'then aM=true end if aM then game.Workspace
|
||||
.Terrain:AutowedgeCells(Region3int16.new(Vector3int16.new(aG.x-1,aG.y-1,aG.z-1),
|
||||
Vector3int16.new(aG.x+1,aG.y+1,aG.z+1)))end z.CurrentParts.Parent=nil pcall(
|
||||
function()return game:GetService'ChangeHistoryService':SetWaypoint
|
||||
'StamperSingle'end)return true end else ao()return false end end local aF aF=
|
||||
function()if game:FindFirstChild'Players'then if game.Players['LocalPlayer']then
|
||||
return game.Players.LocalPlayer end end return nil end if y.CurrentParts:IsA
|
||||
'Model'or y.CurrentParts:IsA'Tool'then if y.CurrentParts:IsA'Model'then local aG
|
||||
,aH={},{}ab(y.CurrentParts,aG,aH)y.CurrentParts:BreakJoints()y.CurrentParts:
|
||||
MakeJoints()ac(aG,aH)end local aG,aH=y.CurrentParts:FindFirstChild'PlayerIdTag',
|
||||
y.CurrentParts:FindFirstChild'PlayerNameTag'if(aG~=nil)then local aI=aF()if(aI~=
|
||||
nil)then aG.Value=aI.userId end end if(aH~=nil)then if game:FindFirstChild(game.
|
||||
Players['LocalPlayer'])then local aI=game.Players.LocalPlayer if(aI~=nil)then aH
|
||||
.Value=aI.Name end end end if not(y.CurrentParts:FindFirstChild'RobloxModel'~=
|
||||
nil)then local aI=Instance.new'BoolValue'aI.Name='RobloxModel'aI.Parent=y.
|
||||
CurrentParts if not(y.CurrentParts:FindFirstChild'RobloxStamper'~=nil)then local
|
||||
aJ=Instance.new'BoolValue'aJ.Name='RobloxStamper'aJ.Parent=y.CurrentParts end
|
||||
end else y.CurrentParts:BreakJoints()if not(y.CurrentParts:FindFirstChild
|
||||
'RobloxStamper'~=nil)then local aG=Instance.new'BoolValue'aG.Name=
|
||||
'RobloxStamper'aG.Parent=y.CurrentParts end end if not createJoints then game.
|
||||
JointsService:CreateJoinAfterMoveJoints()end for aG,aH in pairs(y.
|
||||
TransparencyTable)do aG.Transparency=aH end for aI,aJ in pairs(y.ArchivableTable
|
||||
)do aI.Archivable=aJ end for aK,aL in pairs(y.MaterialTable)do aK.Material=aL
|
||||
end for aM,aN in pairs(y.CanCollideTable)do aM.CanCollide=aN end for Q,R in
|
||||
pairs(y.AnchoredTable)do Q.Anchored=R end for S,U in pairs(y.
|
||||
DecalTransparencyTable)do S.Transparency=U end for W,X in pairs(y.
|
||||
SurfaceTypeTable)do aq(W,X)end if N()then y.CurrentParts.Transparency=0 end j(y.
|
||||
CurrentParts,true)y.TransparencyTable=nil y.ArchivableTable=nil y.MaterialTable=
|
||||
nil y.CanCollideTable=nil y.AnchoredTable=nil y.SurfaceTypeTable=nil if not(y.
|
||||
CurrentParts:FindFirstChild'RobloxModel'~=nil)then local Y=Instance.new
|
||||
'BoolValue'Y.Name='RobloxModel'Y.Parent=y.CurrentParts end if ghostRemovalScript
|
||||
then ghostRemovalScript.Parent=nil end for Y,aO in pairs(y.DisabledScripts)do aO
|
||||
.Disabled=false end for aP,aQ in pairs(y.DisabledScripts)do local aR=aQ.Parent
|
||||
aQ.Parent=nil aQ:Clone().Parent=aR end y.DisabledScripts=nil y.Dragger=nil y.
|
||||
CurrentParts=nil pcall(function()return game:GetService'ChangeHistoryService':
|
||||
SetWaypoint'StampedObject'end)return true end local ax ax=function()for ay=1,#I
|
||||
do I[ay]:disconnect()I[ay]=nil end I={}if y and y.CurrentParts then y.
|
||||
CurrentParts.Parent=nil y.CurrentParts:Remove()end al()return game.JointsService
|
||||
:ClearJoinAfterMoveJoints()end local ay ay=function(az,aA,aB)local aC,aD={
|
||||
Vector3.new(1,0,0),Vector3.new(0,1,0),Vector3.new(0,0,1)},1 if aB<0 then aD=aD*(
|
||||
-1)aB=aB*(-1)end local aE=aD*az:vectorToWorldSpace(aC[aB])for aF=1,#aA do local
|
||||
aJ=aA[aF]local aL=aJ.CFrame:vectorToObjectSpace(aE)if math.abs(aL.X)>math.abs(aL
|
||||
.Y)then if math.abs(aL.X)>math.abs(aL.Z)then if aL.X>0 then aJ.RightSurface=
|
||||
'Unjoinable'else aJ.LeftSurface='Unjoinable'end else if aL.Z>0 then aJ.
|
||||
BackSurface='Unjoinable'else aJ.FrontSurface='Unjoinable'end end else if math.
|
||||
abs(aL.Y)>math.abs(aL.Z)then if aL.Y>0 then aJ.TopSurface='Unjoinable'else aJ.
|
||||
BottomSurface='Unjoinable'end else if aL.Z>0 then aJ.BackSurface='Unjoinable'
|
||||
else aJ.FrontSurface='Unjoinable'end end end end end local az az=function()local
|
||||
aA,aB=at(ad)if not aA or not aB then return end local aC=aA:FindFirstChild(
|
||||
'UnjoinableFaces',true)if aC then for aD in string.gmatch(aC.Value,'[^,]*')do if
|
||||
tonumber(aD)then if aA:IsA'Model'then ay(aA:GetModelCFrame(),aB,tonumber(aD))
|
||||
else ay(aA.CFrame,aB,tonumber(aD))end end end end y.ErrorBox=A if ai then aA.
|
||||
Parent=ai else aA.Parent=game.Workspace end if aA:FindFirstChild(
|
||||
'ClusterMaterial',true)then local aD=aA:FindFirstChild('ClusterMaterial',true)if
|
||||
aD:IsA'Vector3Value'then M.Material=aD.Value.X M.clusterType=aD.Value.Y M.
|
||||
clusterOrientation=aD.Value.Z elseif aD:IsA'IntValue'then M.Material=aD.Value
|
||||
end end pcall(function()z=ae.Target end)if z and not(z.Parent:FindFirstChild
|
||||
'RobloxModel'~=nil)then game.JointsService:SetJoinAfterMoveTarget(z)else game.
|
||||
JointsService:SetJoinAfterMoveTarget(nil)end game.JointsService:
|
||||
ShowPermissibleJoints()for aD,aE in pairs(y.DisabledScripts)do if aE.Name==
|
||||
'GhostRemovalScript'then aE.Parent=y.CurrentParts end end y.Dragger=Instance.new
|
||||
'Dragger'y.Dragger:MouseDown(aB[1],Vector3.new(0,0,0,aB))y.Dragger:MouseUp()P(ae
|
||||
)table.insert(I,ae.Move:connect(function()if F or G then return end F=true P(ae)
|
||||
F=false end))table.insert(I,ae.Button1Down:connect(function()return ap(ae)end))
|
||||
table.insert(I,ae.Button1Up:connect(function()G=true while F do wait()end K.
|
||||
Value=aw(ae)al()G=false end))K.Value=false end local aA aA=function(aB)if aB
|
||||
then if not aB:IsA'Model'and not aB:IsA'BasePart'then error
|
||||
'StamperSingle'end)return true end else ap()return false end end local aG aG=
|
||||
function()if game:FindFirstChild'Players'and game.Players['LocalPlayer']then
|
||||
return game.Players.LocalPlayer end end if z.CurrentParts:IsA'Model'or z.
|
||||
CurrentParts:IsA'Tool'then if z.CurrentParts:IsA'Model'then local aH,aI={},{}ac(
|
||||
z.CurrentParts,aH,aI)z.CurrentParts:BreakJoints()z.CurrentParts:MakeJoints()ad(
|
||||
aH,aI)end local aH,aI=z.CurrentParts:FindFirstChild'PlayerIdTag',z.CurrentParts:
|
||||
FindFirstChild'PlayerNameTag'if(aH~=nil)then local aJ=aG()if(aJ~=nil)then aH.
|
||||
Value=aJ.userId end end if(aI~=nil)then if game:FindFirstChild(game.Players[
|
||||
'LocalPlayer'])then local aJ=game.Players.LocalPlayer if(aJ~=nil)then aI.Value=
|
||||
aJ.Name end end end if not(z.CurrentParts:FindFirstChild'RobloxModel'~=nil)then
|
||||
a('BoolValue','RobloxModel',{Parent=z.CurrentParts})if not(z.CurrentParts:
|
||||
FindFirstChild'RobloxStamper'~=nil)then a('BoolValue','RobloxStamper',{Parent=z.
|
||||
CurrentParts})end end else z.CurrentParts:BreakJoints()if not(z.CurrentParts:
|
||||
FindFirstChild'RobloxStamper'~=nil)then a('BoolValue','RobloxStamper',{Parent=z.
|
||||
CurrentParts})end end if not createJoints then game.JointsService:
|
||||
CreateJoinAfterMoveJoints()end for aH,aI in pairs(z.TransparencyTable)do aH.
|
||||
Transparency=aI end for aJ,aK in pairs(z.ArchivableTable)do aJ.Archivable=aK end
|
||||
for aL,aM in pairs(z.MaterialTable)do aL.Material=aM end for aN,aO in pairs(z.
|
||||
CanCollideTable)do aN.CanCollide=aO end for R,S in pairs(z.AnchoredTable)do R.
|
||||
Anchored=S end for T,V in pairs(z.DecalTransparencyTable)do T.Transparency=V end
|
||||
for X,Y in pairs(z.SurfaceTypeTable)do ar(X,Y)end if O()then z.CurrentParts.
|
||||
Transparency=0 end k(z.CurrentParts,true)z.TransparencyTable=nil z.
|
||||
ArchivableTable=nil z.MaterialTable=nil z.CanCollideTable=nil z.AnchoredTable=
|
||||
nil z.SurfaceTypeTable=nil if not(z.CurrentParts:FindFirstChild'RobloxModel'~=
|
||||
nil)then a('BoolValue','RobloxModel',{Parent=z.CurrentParts})end if
|
||||
ghostRemovalScript then ghostRemovalScript.Parent=nil end for Z,aP in pairs(z.
|
||||
DisabledScripts)do aP.Disabled=false end for aQ,aR in pairs(z.DisabledScripts)do
|
||||
local aS=aR.Parent aR.Parent=nil aR:Clone().Parent=aS end z.DisabledScripts=nil
|
||||
z.Dragger=nil z.CurrentParts=nil pcall(function()return game:GetService
|
||||
'ChangeHistoryService':SetWaypoint'StampedObject'end)return true end local ay ay
|
||||
=function()for az=1,#J do J[az]:disconnect()J[az]=nil end J={}if z and z.
|
||||
CurrentParts then z.CurrentParts.Parent=nil z.CurrentParts:Remove()end am()
|
||||
return game.JointsService:ClearJoinAfterMoveJoints()end local az az=function(aA,
|
||||
aB,aC)local aD,aE={Vector3.new(1,0,0),Vector3.new(0,1,0),Vector3.new(0,0,1)},1
|
||||
if aC<0 then aE=aE*(-1)aC=aC*(-1)end local aF=aE*aA:vectorToWorldSpace(aD[aC])
|
||||
for aG=1,#aB do local aK=aB[aG]local aM=aK.CFrame:vectorToObjectSpace(aF)if math
|
||||
.abs(aM.X)>math.abs(aM.Y)then if math.abs(aM.X)>math.abs(aM.Z)then if aM.X>0
|
||||
then aK.RightSurface='Unjoinable'else aK.LeftSurface='Unjoinable'end else if aM.
|
||||
Z>0 then aK.BackSurface='Unjoinable'else aK.FrontSurface='Unjoinable'end end
|
||||
else if math.abs(aM.Y)>math.abs(aM.Z)then if aM.Y>0 then aK.TopSurface=
|
||||
'Unjoinable'else aK.BottomSurface='Unjoinable'end else if aM.Z>0 then aK.
|
||||
BackSurface='Unjoinable'else aK.FrontSurface='Unjoinable'end end end end end
|
||||
local aA aA=function()local aB,aC=au(ae)if not aB or not aC then return end
|
||||
local aD=aB:FindFirstChild('UnjoinableFaces',true)if aD then for aE in string.
|
||||
gmatch(aD.Value,'[^,]*')do if tonumber(aE)then if aB:IsA'Model'then az(aB:
|
||||
GetModelCFrame(),aC,tonumber(aE))else az(aB.CFrame,aC,tonumber(aE))end end end
|
||||
end z.ErrorBox=B if aj then aB.Parent=aj else aB.Parent=game.Workspace end if aB
|
||||
:FindFirstChild('ClusterMaterial',true)then local aE=aB:FindFirstChild(
|
||||
'ClusterMaterial',true)if aE:IsA'Vector3Value'then N.Material=aE.Value.X N.
|
||||
clusterType=aE.Value.Y N.clusterOrientation=aE.Value.Z elseif aE:IsA'IntValue'
|
||||
then N.Material=aE.Value end end pcall(function()A=af.Target end)if A and not(A.
|
||||
Parent:FindFirstChild'RobloxModel'~=nil)then game.JointsService:
|
||||
SetJoinAfterMoveTarget(A)else game.JointsService:SetJoinAfterMoveTarget(nil)end
|
||||
game.JointsService:ShowPermissibleJoints()for aE,aF in pairs(z.DisabledScripts)
|
||||
do if aF.Name=='GhostRemovalScript'then aF.Parent=z.CurrentParts end end z.
|
||||
Dragger=Instance.new'Dragger'z.Dragger:MouseDown(aC[1],Vector3.new(0,0,0,aC))z.
|
||||
Dragger:MouseUp()Q(af)table.insert(J,af.Move:connect(function()if G or H then
|
||||
return end G=true Q(af)G=false end))table.insert(J,af.Button1Down:connect(
|
||||
function()return aq(af)end))table.insert(J,af.Button1Up:connect(function()H=true
|
||||
while G do wait()end L.Value=ax(af)am()H=false end))L.Value=false end local aB
|
||||
aB=function(aC)if aC then if not aC:IsA'Model'and not aC:IsA'BasePart'then error
|
||||
[[resetStamperState: newModelToStamp (first arg) is not nil, but not a model or part!]]
|
||||
end ad=aB end ax()return az()end aA()E.Stamped=K E.Paused=false E.LoadNewModel=
|
||||
function(aB)if aB and not aB:IsA'Model'and not aB:IsA'BasePart'then error
|
||||
end ae=aC end ay()return aA()end aB()F.Stamped=L F.Paused=false F.LoadNewModel=
|
||||
function(aC)if aC and not aC:IsA'Model'and not aC:IsA'BasePart'then error
|
||||
[[Control.LoadNewModel: newStampModel (first arg) is not a Model or Part!]]
|
||||
return nil end return aA(aB)end E.ReloadModel=function()return aA()end E.Pause=
|
||||
function()if not E.Paused then ax()E.Paused=true else return print
|
||||
return nil end return aB(aC)end F.ReloadModel=function()return aB()end F.Pause=
|
||||
function()if not F.Paused then ay()F.Paused=true else return print
|
||||
[[RbxStamper Warning: Tried to call Control.Pause! when already paused]]end end
|
||||
E.Resume=function()if E.Paused then az()E.Paused=false else return print
|
||||
F.Resume=function()if F.Paused then aA()F.Paused=false else return print
|
||||
[[RbxStamper Warning: Tried to call Control.Resume! without Pausing First]]end
|
||||
end E.ResetRotation=function()end E.Destroy=function()for aB=1,#I do I[aB]:
|
||||
disconnect()I[aB]=nil end if J~=nil then J:disconnect()end game.JointsService:
|
||||
ClearJoinAfterMoveJoints()if C~=nil then C:Destroy()end if B~=nil then B:
|
||||
Destroy()end if A~=nil then A:Destroy()end if y~=nil then do local aB=y.Dragger
|
||||
if aB~=nil then aB:Destroy()end end end if y~=nil then do local aB=y.
|
||||
CurrentParts if aB~=nil then aB:Destroy()end end end if E and E['Stamped']then E
|
||||
.Stamped:Destroy()end E=nil end return E end a.Help=function(ad)if
|
||||
'GetStampModel'==ad or a.GetStampModel==ad then return
|
||||
end F.ResetRotation=function()end F.Destroy=function()for aC=1,#J do J[aC]:
|
||||
disconnect()J[aC]=nil end if K~=nil then K:disconnect()end game.JointsService:
|
||||
ClearJoinAfterMoveJoints()if D~=nil then D:Destroy()end if C~=nil then C:
|
||||
Destroy()end if B~=nil then B:Destroy()end if z~=nil then do local aC=z.Dragger
|
||||
if aC~=nil then aC:Destroy()end end end if z~=nil then do local aC=z.
|
||||
CurrentParts if aC~=nil then aC:Destroy()end end end if F and F['Stamped']then F
|
||||
.Stamped:Destroy()end F=nil end return F end b.Help=function(ae)if
|
||||
'GetStampModel'==ae or b.GetStampModel==ae then return
|
||||
[[Function GetStampModel. Arguments: assetId, useAssetVersionId. assetId is the asset to load in, define useAssetVersionId as true if assetId is a version id instead of a relative assetId. Side effect: returns a model of the assetId, or a string with error message if something fails]]
|
||||
elseif'SetupStamperDragger'==ad or a.SetupStamperDragger==ad then return
|
||||
elseif'SetupStamperDragger'==ae or b.SetupStamperDragger==ae then return
|
||||
[[Function SetupStamperDragger. Side Effect: Creates 4x4 stamping mechanism for building out parts quickly. Arguments: ModelToStamp, Mouse, LegalStampCheckFunction. ModelToStamp should be a Model or Part, preferrably loaded from RbxStamper.GetStampModel and should have extents that are multiples of 4. Mouse should be a mouse object (obtained from things such as Tool.OnEquipped), used to drag parts around 'stamp' them out. LegalStampCheckFunction is optional, used as a callback with a table argument (table is full of instances about to be stamped). Function should return either true or false, false stopping the stamp action.]]
|
||||
end end return a
|
||||
end end return b
|
||||
|
|
@ -49,17 +49,17 @@ Selected=false h.Image='http://www.roblox.com/asset/?id=97617958'p.Image=
|
|||
Size=UDim2.new(1.2,0,1.2,0)M()local P=o:GetChildren()for Q=1,#P do if P[Q]and P[
|
||||
Q]:IsA'Frame'then local R=P[Q]if#R:GetChildren()>0 then h.Position=UDim2.new(0.5
|
||||
,-60,1,-108)h.Visible=true p.Visible=true if R:GetChildren()[1]:IsA'ImageButton'
|
||||
then local S=R:GetChildren()[1]S.Active=true S.Draggable=false end end end end
|
||||
end end local P P=function()L()t=true c.Visible=s if s then return O()end end
|
||||
local Q Q=function()if s then return O()end end local R R=function(S)assert(S)
|
||||
assert(S:IsA'TextButton')S.BackgroundColor3=Color3.new(1,1,1)S.TextColor3=Color3
|
||||
.new(0,0,0)S.Selected=true S.ZIndex=3 return S end local S S=function(T)assert(T
|
||||
)assert(T:IsA'TextButton')T.BackgroundColor3=Color3.new(0,0,0)T.TextColor3=
|
||||
Color3.new(1,1,1)T.Selected=false T.ZIndex=1 return T end local T T=function(U)
|
||||
assert(U)if U=='gear'then R(f)return S(g)elseif U=='wardrobe'then R(g)return S(f
|
||||
)end end local U U=function(V)assert(V)assert(V:IsA'TextButton')if V.Selected
|
||||
then return end V.BackgroundColor3=Color3.new(0,0,0)end local V V=function(W)
|
||||
assert(W)assert(W:IsA'TextButton')if W.Selected then return end W.
|
||||
then do local S=R:GetChildren()[1]S.Active=true S.Draggable=false end end end
|
||||
end end end end local P P=function()L()t=true c.Visible=s if s then return O()
|
||||
end end local Q Q=function()if s then return O()end end local R R=function(S)
|
||||
assert(S)assert(S:IsA'TextButton')S.BackgroundColor3=Color3.new(1,1,1)S.
|
||||
TextColor3=Color3.new(0,0,0)S.Selected=true S.ZIndex=3 return S end local S S=
|
||||
function(T)assert(T)assert(T:IsA'TextButton')T.BackgroundColor3=Color3.new(0,0,0
|
||||
)T.TextColor3=Color3.new(1,1,1)T.Selected=false T.ZIndex=1 return T end local T
|
||||
T=function(U)assert(U)if U=='gear'then R(f)return S(g)elseif U=='wardrobe'then
|
||||
R(g)return S(f)end end local U U=function(V)assert(V)assert(V:IsA'TextButton')if
|
||||
V.Selected then return end V.BackgroundColor3=Color3.new(0,0,0)end local V V=
|
||||
function(W)assert(W)assert(W:IsA'TextButton')if W.Selected then return end W.
|
||||
BackgroundColor3=Color3.new(0.15294117647058825,0.15294117647058825,
|
||||
0.15294117647058825)end local W W=function(X)assert(X)X=string.lower(X)i=X T(X)G
|
||||
:Fire(X)return J()end local X X=function(Y)return Y:gsub('^%s*(.-)%s*$','%1')end
|
||||
|
|
|
|||
|
|
@ -17,11 +17,8 @@ end
|
|||
local getKillerOfHumanoidIfStillInGame
|
||||
getKillerOfHumanoidIfStillInGame=function(humanoid)
|
||||
local tag=humanoid:findFirstChild"creator"
|
||||
if tag then
|
||||
local killer=tag.Value
|
||||
if killer.Parent then
|
||||
return killer
|
||||
end
|
||||
if tag and tag.Value.Parent then
|
||||
return tag.Value
|
||||
end
|
||||
end
|
||||
local onDied
|
||||
|
|
|
|||
|
|
@ -2,4 +2,3 @@ std = "mercury"
|
|||
|
||||
[lints]
|
||||
multiple_statements = "allow"
|
||||
shadowing = "allow"
|
||||
|
|
|
|||
|
|
@ -313,11 +313,9 @@ getPlayerBalance = ->
|
|||
print "Get player balance failed because", errorCode
|
||||
return nil
|
||||
|
||||
|
||||
if playerBalance == ""
|
||||
return nil
|
||||
|
||||
|
||||
playerBalance = getRbxUtility!.DecodeJSON playerBalance
|
||||
playerBalance
|
||||
|
||||
|
|
@ -473,7 +471,7 @@ canPurchaseItem = ->
|
|||
notRightBc = true
|
||||
|
||||
|
||||
updatedBalance, insufficientFunds = updateAfterBalanceText(playerBalance, notRightBc)
|
||||
updatedBalance, insufficientFunds = updateAfterBalanceText playerBalance, notRightBc
|
||||
|
||||
if notRightBc
|
||||
purchaseDialog.BodyFrame.AfterBalanceButton.Active = true
|
||||
|
|
@ -609,11 +607,9 @@ getToolAssetID = (assetID) ->
|
|||
if not newTool
|
||||
return nil
|
||||
|
||||
|
||||
if newTool\IsA "Tool"
|
||||
return newTool
|
||||
|
||||
|
||||
toolChildren = newTool\GetChildren!
|
||||
for i = 1, #toolChildren
|
||||
if toolChildren[i]\IsA "Tool"
|
||||
|
|
@ -629,14 +625,14 @@ purchaseFailed = (inGamePurchasesDisabled) ->
|
|||
name = currentProductInfo["Name"]
|
||||
|
||||
|
||||
newPurchasedFailedText = string.gsub(purchaseFailedText, "itemName", "#{name}")
|
||||
newPurchasedFailedText = string.gsub purchaseFailedText, "itemName", "#{name}"
|
||||
if inGamePurchasesDisabled
|
||||
newPurchasedFailedText = string.gsub(
|
||||
newPurchasedFailedText, "errorReason",
|
||||
"#{errorPurchasesDisabledText}"
|
||||
)
|
||||
else
|
||||
newPurchasedFailedText = string.gsub(newPurchasedFailedText, "errorReason", "#{errorPurchasesUnknownText}")
|
||||
newPurchasedFailedText = string.gsub newPurchasedFailedText, "errorReason", "#{errorPurchasesUnknownText}"
|
||||
|
||||
|
||||
purchaseDialog.BodyFrame.ItemPreview.ItemDescription.Text = newPurchasedFailedText
|
||||
|
|
@ -827,7 +823,6 @@ createTextObject = (name, text, type, size) ->
|
|||
createImageButton = (name) ->
|
||||
New "ImageButton", name,
|
||||
Size: UDim2.new 0, 153, 0, 46
|
||||
Name: name
|
||||
|
||||
userPurchaseProductActionsEnded = (userIsClosingDialog) ->
|
||||
checkingPlayerFunds = false
|
||||
|
|
@ -1056,21 +1051,21 @@ createPurchasePromptGui = ->
|
|||
|
||||
cutSizeInHalfRecursive = (_) ->
|
||||
-- todo: change the gui size based on how much space we have
|
||||
--[[changeSize(instance,0.5)
|
||||
--[[changeSize instance,0.5
|
||||
|
||||
children = instance\GetChildren!
|
||||
for i = 1, #children
|
||||
cutSizeInHalfRecursive(children[i])
|
||||
cutSizeInHalfRecursive children[i]
|
||||
end]]
|
||||
|
||||
|
||||
doubleSizeRecursive = (_) ->
|
||||
-- todo: change the gui size based on how much space we have
|
||||
--[[changeSize(instance,2)
|
||||
--[[changeSize instance,2
|
||||
|
||||
children = instance\GetChildren!
|
||||
for i = 1, #children
|
||||
doubleSizeRecursive(children[i])
|
||||
doubleSizeRecursive children[i]
|
||||
end]]
|
||||
|
||||
-- depending on screen size, we need to change the gui
|
||||
|
|
|
|||
|
|
@ -125,13 +125,13 @@ createNewButton = (actionName, functionInfoTable) ->
|
|||
|
||||
if inputObject.UserInputState == Enum.UserInputState.Begin and not currentButtonTouch?
|
||||
currentButtonTouch = inputObject
|
||||
contextButtonDown(contextButton, inputObject, actionName)
|
||||
contextButtonDown contextButton, inputObject, actionName
|
||||
|
||||
contextButton.InputChanged\connect (inputObject) ->
|
||||
return if oldTouches[inputObject] or
|
||||
currentButtonTouch ~= inputObject
|
||||
|
||||
contextButtonMoved(contextButton, inputObject, actionName)
|
||||
contextButtonMoved contextButton, inputObject, actionName
|
||||
|
||||
contextButton.InputEnded\connect (inputObject) ->
|
||||
return if oldTouches[inputObject] or
|
||||
|
|
@ -139,7 +139,7 @@ createNewButton = (actionName, functionInfoTable) ->
|
|||
|
||||
currentButtonTouch = nil
|
||||
oldTouches[inputObject] = true
|
||||
contextButtonUp(contextButton, inputObject, actionName)
|
||||
contextButtonUp contextButton, inputObject, actionName
|
||||
|
||||
actionIcon = New "ImageLabel", "ActionIcon"
|
||||
Position: UDim2.new 0.175, 0, 0.175, 0
|
||||
|
|
@ -169,7 +169,7 @@ createNewButton = (actionName, functionInfoTable) ->
|
|||
contextButton
|
||||
|
||||
createButton = (actionName, functionInfoTable) ->
|
||||
button = createNewButton(actionName, functionInfoTable)
|
||||
button = createNewButton actionName, functionInfoTable
|
||||
|
||||
local position
|
||||
for i = 1, #buttonVector do
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@ followThumbstickTouchMove = (thumbstickFrame, thumbstickOuter, touchLocation) ->
|
|||
crossOuterToInnerWithMovement = (outerToInnerVectorCurrentUnit.x * movementVectorUnit.y) -
|
||||
(outerToInnerVectorCurrentUnit.y * movementVectorUnit.x)
|
||||
angle = math.atan2 crossOuterToInnerWithMovement, dotProduct outerToInnerVectorCurrentUnit, movementVectorUnit
|
||||
anglePercent = angle * math.min(movementVector.magnitude / outerToInnerVectorCurrent.magnitude, 1.0)
|
||||
anglePercent = angle * math.min movementVector.magnitude / outerToInnerVectorCurrent.magnitude, 1.0
|
||||
|
||||
-- If angle is significant, rotate about the inner thumbsticks current center
|
||||
if math.abs(anglePercent) > 0.00001
|
||||
|
|
@ -267,7 +267,7 @@ constructThumbstick = (defaultThumbstickPos, updateFunction, stationaryThumbstic
|
|||
thumbstickTouch = inputObject
|
||||
table.insert thumbstickTouches, thumbstickTouch
|
||||
|
||||
thumbstickFrame.Position = transformFromCenterToTopLeft(thumbstickTouch.Position, thumbstickFrame)
|
||||
thumbstickFrame.Position = transformFromCenterToTopLeft thumbstickTouch.Position, thumbstickFrame
|
||||
outerThumbstick.Position = thumbstickFrame.Position
|
||||
|
||||
userInputServiceTouchMovedCon = userInputService.TouchMoved\connect (movedInput) ->
|
||||
|
|
@ -453,8 +453,7 @@ setupCameraControl = (parentFrame, refreshCharacterMoveFunc) ->
|
|||
-- track pinching in new frame
|
||||
pinchFrame?\Destroy!
|
||||
-- make sure we didn't track in any mud
|
||||
pinchFrame = New "Frame"
|
||||
Name: "PinchFrame"
|
||||
pinchFrame = New "Frame", "PinchFrame"
|
||||
BackgroundTransparency: 1
|
||||
Size: UDim2.new 1, 0, 1, 0
|
||||
Parent: parentFrame
|
||||
|
|
|
|||
|
|
@ -1,16 +1,36 @@
|
|||
import "macros" as { $ }
|
||||
$load $FILE
|
||||
|
||||
--Include
|
||||
Create = assert(LoadLibrary "RbxUtility").Create
|
||||
-- Heliodex's basic New function (basically a simplified version of melt)
|
||||
New = (className, name, props) ->
|
||||
if not props? -- no name was provided
|
||||
props = name
|
||||
name = nil
|
||||
|
||||
obj = Instance.new className
|
||||
obj.Name = name if name
|
||||
local parent
|
||||
|
||||
for k, v in pairs props
|
||||
if type(k) == "string" then
|
||||
if k == "Parent"
|
||||
parent = v
|
||||
else
|
||||
obj[k] = v
|
||||
|
||||
elseif type(k) == "number" and type(v) == "userdata"
|
||||
v.Parent = obj
|
||||
|
||||
obj.Parent = parent
|
||||
obj
|
||||
--
|
||||
|
||||
-- A Few Script Globals
|
||||
gui = script.Parent\FindFirstChild"ControlFrame" or script.Parent
|
||||
|
||||
-- Dev-Console Root
|
||||
|
||||
Dev_Container = Create"Frame"
|
||||
Name: "DevConsoleContainer"
|
||||
Dev_Container = New "Frame", "DevConsoleContainer"
|
||||
Parent: gui
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.9
|
||||
|
|
@ -18,8 +38,7 @@ Dev_Container = Create"Frame"
|
|||
Size: UDim2.new 0.5, 20, 0.5, 20
|
||||
Visible: false
|
||||
|
||||
ToggleConsole = Create"BindableFunction"
|
||||
Name: "ToggleDevConsole"
|
||||
ToggleConsole = New "BindableFunction", "ToggleDevConsole"
|
||||
Parent: gui
|
||||
|
||||
devConsoleInitialized = false
|
||||
|
|
@ -54,16 +73,49 @@ initializeDeveloperConsole = ->
|
|||
|
||||
--Create Dev-Console
|
||||
|
||||
Dev_Body = Create"Frame"
|
||||
Name: "Body"
|
||||
Dev_Body = New "Frame", "Body"
|
||||
Parent: Dev_Container
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 0, 0, 0, 21
|
||||
Size: UDim2.new 1, 0, 1, -25
|
||||
|
||||
Dev_OptionsHolder = Create"Frame"
|
||||
Name: "OptionsHolder"
|
||||
* New "ImageButton", "ResizeButton"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 1, -20, 1, -20
|
||||
Size: UDim2.new 0, 20, 0, 20
|
||||
|
||||
* New "ImageLabel", "ImageLabel"
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 6, 0, 6
|
||||
Size: UDim2.new 0.8, 0, 0.8, 0
|
||||
Rotation: 135
|
||||
Image: "http://www.roblox.com/Asset?id=151205813"
|
||||
|
||||
* New "TextButton", "LocalConsole"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.6
|
||||
Position: UDim2.new 0, 7, 0, 5
|
||||
Size: UDim2.new 0, 90, 0, 20
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: "Local Console"
|
||||
TextColor3: Color3.new 1, 1, 1
|
||||
TextYAlignment: Enum.TextYAlignment.Center
|
||||
|
||||
* New "TextButton", "ServerConsole"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.8
|
||||
Position: UDim2.new 0, 102, 0, 5
|
||||
Size: UDim2.new 0, 90, 0, 17
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: "Server Console"
|
||||
TextColor3: Color3.new 1, 1, 1
|
||||
TextYAlignment: Enum.TextYAlignment.Center
|
||||
|
||||
Dev_OptionsHolder = New "Frame", "OptionsHolder"
|
||||
Parent: Dev_Body
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 1
|
||||
|
|
@ -71,139 +123,113 @@ initializeDeveloperConsole = ->
|
|||
Size: UDim2.new 1, -255, 0, 24
|
||||
ClipsDescendants: true
|
||||
|
||||
Dev_OptionsBar = Create"Frame"
|
||||
Name: "OptionsBar"
|
||||
Dev_OptionsBar = New "Frame", "OptionsBar"
|
||||
Parent: Dev_OptionsHolder
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, -250, 0, 4
|
||||
Size: UDim2.new 0, 234, 0, 18
|
||||
|
||||
Dev_ErrorToggleFilter = Create"TextButton"
|
||||
Name: "ErrorToggleButton"
|
||||
Parent: Dev_OptionsBar
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BorderColor3: Color3.new 1, 0, 0
|
||||
Position: UDim2.new 0, 115, 0, 0
|
||||
Size: UDim2.new 0, 18, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: ""
|
||||
TextColor3: Color3.new 1, 0, 0
|
||||
* New "TextButton", "ErrorToggleButton"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BorderColor3: Color3.new 1, 0, 0
|
||||
Position: UDim2.new 0, 115, 0, 0
|
||||
Size: UDim2.new 0, 18, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: ""
|
||||
TextColor3: Color3.new 1, 0, 0
|
||||
|
||||
Create"Frame"
|
||||
Name: "CheckFrame"
|
||||
Parent: Dev_ErrorToggleFilter
|
||||
BackgroundColor3: Color3.new 1, 0, 0
|
||||
BorderColor3: Color3.new 1, 0, 0
|
||||
Position: UDim2.new 0, 4, 0, 4
|
||||
Size: UDim2.new 0, 10, 0, 10
|
||||
* New "Frame", "CheckFrame"
|
||||
BackgroundColor3: Color3.new 1, 0, 0
|
||||
BorderColor3: Color3.new 1, 0, 0
|
||||
Position: UDim2.new 0, 4, 0, 4
|
||||
Size: UDim2.new 0, 10, 0, 10
|
||||
|
||||
Dev_InfoToggleFilter = Create"TextButton"
|
||||
Name: "InfoToggleButton"
|
||||
Parent: Dev_OptionsBar
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BorderColor3: Color3.new 0.4, 0.5, 1.0
|
||||
Position: UDim2.new 0, 65, 0, 0
|
||||
Size: UDim2.new 0, 18, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: ""
|
||||
TextColor3: Color3.new 0.4, 0.5, 1.0
|
||||
* New "TextButton", "InfoToggleButton"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BorderColor3: Color3.new 0.4, 0.5, 1.0
|
||||
Position: UDim2.new 0, 65, 0, 0
|
||||
Size: UDim2.new 0, 18, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: ""
|
||||
TextColor3: Color3.new 0.4, 0.5, 1.0
|
||||
|
||||
Create"Frame"
|
||||
Name: "CheckFrame"
|
||||
Parent: Dev_InfoToggleFilter
|
||||
BackgroundColor3: Color3.new 0.4, 0.5, 1.0
|
||||
BorderColor3: Color3.new 0.4, 0.5, 1.0
|
||||
Position: UDim2.new 0, 4, 0, 4
|
||||
Size: UDim2.new 0, 10, 0, 10
|
||||
* New "Frame", "CheckFrame"
|
||||
BackgroundColor3: Color3.new 0.4, 0.5, 1.0
|
||||
BorderColor3: Color3.new 0.4, 0.5, 1.0
|
||||
Position: UDim2.new 0, 4, 0, 4
|
||||
Size: UDim2.new 0, 10, 0, 10
|
||||
|
||||
Dev_OutputToggleFilter = Create"TextButton"
|
||||
Name: "OutputToggleButton"
|
||||
Parent: Dev_OptionsBar
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BorderColor3: Color3.new 1, 1, 1.0
|
||||
Position: UDim2.new 0, 40, 0, 0
|
||||
Size: UDim2.new 0, 18, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: ""
|
||||
TextColor3: Color3.new 1, 1, 1.0
|
||||
* New "TextButton", "OutputToggleButton"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BorderColor3: Color3.new 1, 1, 1.0
|
||||
Position: UDim2.new 0, 40, 0, 0
|
||||
Size: UDim2.new 0, 18, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: ""
|
||||
TextColor3: Color3.new 1, 1, 1.0
|
||||
|
||||
Create"Frame"
|
||||
Name: "CheckFrame"
|
||||
Parent: Dev_OutputToggleFilter
|
||||
BackgroundColor3: Color3.new 1, 1, 1.0
|
||||
BorderColor3: Color3.new 1, 1, 1.0
|
||||
Position: UDim2.new 0, 4, 0, 4
|
||||
Size: UDim2.new 0, 10, 0, 10
|
||||
* New "Frame", "CheckFrame"
|
||||
BackgroundColor3: Color3.new 1, 1, 1.0
|
||||
BorderColor3: Color3.new 1, 1, 1.0
|
||||
Position: UDim2.new 0, 4, 0, 4
|
||||
Size: UDim2.new 0, 10, 0, 10
|
||||
|
||||
Dev_WarningToggleFilter = Create"TextButton"
|
||||
Name: "WarningToggleButton"
|
||||
Parent: Dev_OptionsBar
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BorderColor3: Color3.new 1, 0.6, 0.4
|
||||
Position: UDim2.new 0, 90, 0, 0
|
||||
Size: UDim2.new 0, 18, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: ""
|
||||
TextColor3: Color3.new 1, 0.6, 0.4
|
||||
* New "TextButton", "WarningToggleButton"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BorderColor3: Color3.new 1, 0.6, 0.4
|
||||
Position: UDim2.new 0, 90, 0, 0
|
||||
Size: UDim2.new 0, 18, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: ""
|
||||
TextColor3: Color3.new 1, 0.6, 0.4
|
||||
|
||||
Create"Frame"
|
||||
Name: "CheckFrame"
|
||||
Parent: Dev_WarningToggleFilter
|
||||
BackgroundColor3: Color3.new 1, 0.6, 0.4
|
||||
BorderColor3: Color3.new 1, 0.6, 0.4
|
||||
Position: UDim2.new 0, 4, 0, 4
|
||||
Size: UDim2.new 0, 10, 0, 10
|
||||
* New "Frame", "CheckFrame"
|
||||
BackgroundColor3: Color3.new 1, 0.6, 0.4
|
||||
BorderColor3: Color3.new 1, 0.6, 0.4
|
||||
Position: UDim2.new 0, 4, 0, 4
|
||||
Size: UDim2.new 0, 10, 0, 10
|
||||
|
||||
Dev_WordWrapToggle = Create"TextButton"
|
||||
Name: "WordWrapToggleButton"
|
||||
Parent: Dev_OptionsBar
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BorderColor3: Color3.new 0.8, 0.8, 0.8
|
||||
Position: UDim2.new 0, 215, 0, 0
|
||||
Size: UDim2.new 0, 18, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: ""
|
||||
TextColor3: Color3.new 0.8, 0.8, 0.8
|
||||
* New "TextButton", "WordWrapToggleButton"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BorderColor3: Color3.new 0.8, 0.8, 0.8
|
||||
Position: UDim2.new 0, 215, 0, 0
|
||||
Size: UDim2.new 0, 18, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: ""
|
||||
TextColor3: Color3.new 0.8, 0.8, 0.8
|
||||
|
||||
Create"Frame"
|
||||
Name: "CheckFrame"
|
||||
Parent: Dev_WordWrapToggle
|
||||
BackgroundColor3: Color3.new 0.8, 0.8, 0.8
|
||||
BorderColor3: Color3.new 0.8, 0.8, 0.8
|
||||
Position: UDim2.new 0, 4, 0, 4
|
||||
Size: UDim2.new 0, 10, 0, 10
|
||||
Visible: false
|
||||
* New "Frame", "CheckFrame"
|
||||
BackgroundColor3: Color3.new 0.8, 0.8, 0.8
|
||||
BorderColor3: Color3.new 0.8, 0.8, 0.8
|
||||
Position: UDim2.new 0, 4, 0, 4
|
||||
Size: UDim2.new 0, 10, 0, 10
|
||||
Visible: false
|
||||
|
||||
Create"TextLabel"
|
||||
Name: "Filter"
|
||||
Parent: Dev_OptionsBar
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 0, 0, 0
|
||||
Size: UDim2.new 0, 40, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: "Filter"
|
||||
TextColor3: Color3.new 1, 1, 1
|
||||
* New "TextLabel", "Filter"
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 0, 0, 0
|
||||
Size: UDim2.new 0, 40, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: "Filter"
|
||||
TextColor3: Color3.new 1, 1, 1
|
||||
|
||||
Create"TextLabel"
|
||||
Name: "WordWrap"
|
||||
Parent: Dev_OptionsBar
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 150, 0, 0
|
||||
Size: UDim2.new 0, 50, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: "Word Wrap"
|
||||
TextColor3: Color3.new 1, 1, 1,
|
||||
* New "TextLabel", "WordWrap"
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 150, 0, 0
|
||||
Size: UDim2.new 0, 50, 0, 18
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: "Word Wrap"
|
||||
TextColor3: Color3.new 1, 1, 1,
|
||||
|
||||
Dev_ScrollBar = Create"Frame"
|
||||
Name: "ScrollBar"
|
||||
Dev_ScrollBar = New "Frame", "ScrollBar"
|
||||
Parent: Dev_Body
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.9
|
||||
|
|
@ -211,65 +237,52 @@ initializeDeveloperConsole = ->
|
|||
Size: UDim2.new 0, 20, 1, -50
|
||||
Visible: false
|
||||
|
||||
Dev_ScrollArea = Create"Frame"
|
||||
Name: "ScrollArea"
|
||||
* New "ImageButton", "Down"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 0, 0, 1, -20
|
||||
Size: UDim2.new 0, 20, 0, 20
|
||||
|
||||
* New "ImageLabel", "ImageLabel"
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 3, 0, 3
|
||||
Size: UDim2.new 0, 14, 0, 14
|
||||
Rotation: 180
|
||||
Image: "http://www.roblox.com/Asset?id=151205813"
|
||||
|
||||
* New "ImageButton", "Up"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 0, 0, 0, 0
|
||||
Size: UDim2.new 0, 20, 0, 20
|
||||
|
||||
* New "ImageLabel", "ImageLabel"
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 3, 0, 3
|
||||
Size: UDim2.new 0, 14, 0, 14
|
||||
Image: "http://www.roblox.com/Asset?id=151205813"
|
||||
|
||||
Dev_ScrollArea = New "Frame", "ScrollArea"
|
||||
Parent: Dev_ScrollBar
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 0, 0, 23
|
||||
Size: UDim2.new 1, 0, 1, -46
|
||||
|
||||
Dev_Handle = Create"ImageButton"
|
||||
Name: "Handle"
|
||||
Parent: Dev_ScrollArea
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 0, 0, 0.2, 0
|
||||
Size: UDim2.new 0, 20, 0, 40
|
||||
* New "ImageButton", "Handle"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 0, 0, 0.2, 0
|
||||
Size: UDim2.new 0, 20, 0, 40
|
||||
|
||||
Create"ImageLabel"
|
||||
Name: "ImageLabel"
|
||||
Parent: Dev_Handle
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 0, 0.5, -8
|
||||
Rotation: 180
|
||||
Size: UDim2.new 1, 0, 0, 16
|
||||
Image: "http://www.roblox.com/Asset?id=151205881"
|
||||
* New "ImageLabel", "ImageLabel"
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 0, 0.5, -8
|
||||
Rotation: 180
|
||||
Size: UDim2.new 1, 0, 0, 16
|
||||
Image: "http://www.roblox.com/Asset?id=151205881"
|
||||
|
||||
Dev_DownButton = Create"ImageButton"
|
||||
Name: "Down"
|
||||
Parent: Dev_ScrollBar
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 0, 0, 1, -20
|
||||
Size: UDim2.new 0, 20, 0, 20
|
||||
|
||||
Create"ImageLabel"
|
||||
Name: "ImageLabel"
|
||||
Parent: Dev_DownButton
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 3, 0, 3
|
||||
Size: UDim2.new 0, 14, 0, 14
|
||||
Rotation: 180
|
||||
Image: "http://www.roblox.com/Asset?id=151205813"
|
||||
|
||||
Dev_UpButton = Create"ImageButton"
|
||||
Name: "Up"
|
||||
Parent: Dev_ScrollBar
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 0, 0, 0, 0
|
||||
Size: UDim2.new 0, 20, 0, 20
|
||||
|
||||
Create"ImageLabel"
|
||||
Name: "ImageLabel"
|
||||
Parent: Dev_UpButton
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 3, 0, 3
|
||||
Size: UDim2.new 0, 14, 0, 14
|
||||
Image: "http://www.roblox.com/Asset?id=151205813"
|
||||
|
||||
Dev_TextBox = Create"Frame"
|
||||
Name: "TextBox"
|
||||
Dev_TextBox = New "Frame", "TextBox"
|
||||
Parent: Dev_Body
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.6
|
||||
|
|
@ -277,118 +290,63 @@ initializeDeveloperConsole = ->
|
|||
Size: UDim2.new 1, -4, 1, -28
|
||||
ClipsDescendants: true
|
||||
|
||||
Dev_TextHolder = Create"Frame"
|
||||
Name: "TextHolder"
|
||||
Dev_TextHolder = New "Frame", "TextHolder"
|
||||
Parent: Dev_TextBox
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 0, 0, 0
|
||||
Size: UDim2.new 1, 0, 1, 0
|
||||
|
||||
Dev_OptionsButton = Create"ImageButton"
|
||||
Name: "OptionsButton"
|
||||
Dev_OptionsButton = New "ImageButton", "OptionsButton"
|
||||
Parent: Dev_Body
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 200, 0, 2
|
||||
Size: UDim2.new 0, 20, 0, 20
|
||||
|
||||
Create"ImageLabel"
|
||||
Name: "ImageLabel"
|
||||
Parent: Dev_OptionsButton
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 0, 0, 0
|
||||
Size: UDim2.new 1, 0, 1, 0
|
||||
Rotation: 0
|
||||
Image: "http://www.roblox.com/Asset?id=152093917"
|
||||
* New "ImageLabel", "ImageLabel"
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 0, 0, 0
|
||||
Size: UDim2.new 1, 0, 1, 0
|
||||
Rotation: 0
|
||||
Image: "http://www.roblox.com/Asset?id=152093917"
|
||||
|
||||
Dev_ResizeButton = Create"ImageButton"
|
||||
Name: "ResizeButton"
|
||||
Parent: Dev_Body
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 1, -20, 1, -20
|
||||
Size: UDim2.new 0, 20, 0, 20
|
||||
|
||||
Create"ImageLabel"
|
||||
Name: "ImageLabel"
|
||||
Parent: Dev_ResizeButton
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 6, 0, 6
|
||||
Size: UDim2.new 0.8, 0, 0.8, 0
|
||||
Rotation: 135
|
||||
Image: "http://www.roblox.com/Asset?id=151205813"
|
||||
|
||||
Create"TextButton"
|
||||
Name: "LocalConsole"
|
||||
Parent: Dev_Body
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.6
|
||||
Position: UDim2.new 0, 7, 0, 5
|
||||
Size: UDim2.new 0, 90, 0, 20
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: "Local Console"
|
||||
TextColor3: Color3.new 1, 1, 1
|
||||
TextYAlignment: Enum.TextYAlignment.Center
|
||||
|
||||
Create"TextButton"
|
||||
Name: "ServerConsole"
|
||||
Parent: Dev_Body
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.8
|
||||
Position: UDim2.new 0, 102, 0, 5
|
||||
Size: UDim2.new 0, 90, 0, 17
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size14
|
||||
Text: "Server Console"
|
||||
TextColor3: Color3.new 1, 1, 1
|
||||
TextYAlignment: Enum.TextYAlignment.Center
|
||||
|
||||
Dev_TitleBar = Create"Frame"
|
||||
Name: "TitleBar"
|
||||
Dev_TitleBar = New "Frame", "TitleBar"
|
||||
Parent: Dev_Container
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 0, 0, 0, 0
|
||||
Size: UDim2.new 1, 0, 0, 20
|
||||
|
||||
Dev_CloseButton = Create"ImageButton"
|
||||
Name: "CloseButton"
|
||||
Parent: Dev_TitleBar
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 1, -20, 0, 0
|
||||
Size: UDim2.new 0, 20, 0, 20
|
||||
* New "ImageButton", "CloseButton"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 1, -20, 0, 0
|
||||
Size: UDim2.new 0, 20, 0, 20
|
||||
|
||||
Create"ImageLabel"
|
||||
Parent: Dev_CloseButton
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 3, 0, 3
|
||||
Size: UDim2.new 0, 14, 0, 14
|
||||
Image: "http://www.roblox.com/Asset?id=151205852"
|
||||
* New "ImageLabel"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 3, 0, 3
|
||||
Size: UDim2.new 0, 14, 0, 14
|
||||
Image: "http://www.roblox.com/Asset?id=151205852"
|
||||
|
||||
Create"TextButton"
|
||||
Name: "TextButton"
|
||||
Parent: Dev_TitleBar
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 0, 0, 0, 0
|
||||
Size: UDim2.new 1, -23, 1, 0
|
||||
Text: ""
|
||||
* New "TextButton", "TextButton"
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 0.5
|
||||
Position: UDim2.new 0, 0, 0, 0
|
||||
Size: UDim2.new 1, -23, 1, 0
|
||||
Text: ""
|
||||
|
||||
Create"TextLabel"
|
||||
Name: "TitleText"
|
||||
Parent: Dev_TitleBar
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 0, 0, 0
|
||||
Size: UDim2.new 0, 185, 0, 20
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size18
|
||||
-- Text: "Server Console"
|
||||
TextColor3: Color3.new 1, 1, 1
|
||||
Text: "Roblox Developer Console"
|
||||
TextYAlignment: Enum.TextYAlignment.Top
|
||||
* New "TextLabel", "TitleText"
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0, 0, 0, 0
|
||||
Size: UDim2.new 0, 185, 0, 20
|
||||
Font: "SourceSansBold"
|
||||
FontSize: Enum.FontSize.Size18
|
||||
-- Text: "Server Console"
|
||||
TextColor3: Color3.new 1, 1, 1
|
||||
Text: "Roblox Developer Console"
|
||||
TextYAlignment: Enum.TextYAlignment.Top
|
||||
|
||||
---Saved Mouse Information
|
||||
local previousMousePos
|
||||
|
|
@ -570,8 +528,7 @@ initializeDeveloperConsole = ->
|
|||
movePosition = false
|
||||
|
||||
if i > #childMessages
|
||||
message = Create"TextLabel"
|
||||
Name: "Message"
|
||||
message = New "TextLabel", "Message"
|
||||
Parent: Dev_TextHolder
|
||||
BackgroundTransparency: 1
|
||||
TextXAlignment: "Left"
|
||||
|
|
@ -724,7 +681,7 @@ initializeDeveloperConsole = ->
|
|||
num
|
||||
|
||||
|
||||
str = "%s:%s:%s"
|
||||
timestr = "%s:%s:%s"
|
||||
|
||||
ConvertTimeStamp = (timeStamp) ->
|
||||
localTime = timeStamp - os.time! + math.floor tick!
|
||||
|
|
@ -741,7 +698,7 @@ initializeDeveloperConsole = ->
|
|||
m = numberWithZero minute
|
||||
s = numberWithZero dayTime
|
||||
|
||||
str\format h, m, s
|
||||
timestr\format h, m, s
|
||||
|
||||
|
||||
--Filter
|
||||
|
|
|
|||
|
|
@ -45,11 +45,11 @@ Torso = waitForChild Figure, "Torso"
|
|||
|
||||
config = Figure\FindFirstChild "PlayerStats"
|
||||
|
||||
inCharTag = Instance.new "BoolValue"
|
||||
inCharTag.Name = "InCharTag"
|
||||
inCharTag = New "BoolValue"
|
||||
Name: "InCharTag"
|
||||
|
||||
hider = Instance.new "BoolValue"
|
||||
hider.Name = "RobloxBuildTool"
|
||||
hider = New "BoolValue"
|
||||
Name: "RobloxBuildTool"
|
||||
|
||||
if not config?
|
||||
config = New "Configuration", "PlayerStats"
|
||||
|
|
@ -87,25 +87,25 @@ if not dotGui?
|
|||
print "newHealth declarations finished"
|
||||
|
||||
billboardHealthChange = (dmg) ->
|
||||
textLabel = New "TextLabel"
|
||||
Text: tostring dmg
|
||||
TextColor3: if dmg > 0
|
||||
Color3.new 0, 1, 0
|
||||
with New "TextLabel",
|
||||
Text: "#{dmg}"
|
||||
TextColor3: Color3.new if dmg > 0
|
||||
0, 1, 0
|
||||
else
|
||||
Color3.new 1, 0, 1
|
||||
1, 0, 1
|
||||
size: UDim2.new 1, 0, 1, 0.0
|
||||
Active: true
|
||||
FontSize: 6
|
||||
BackgroundTransparency: 1
|
||||
Parent: dotGui
|
||||
|
||||
for t = 1, 10
|
||||
wait 0.1
|
||||
textLabel.TextTransparency = t / 10
|
||||
textLabel.Position = UDim2.new 0, 0, 0, -t * 5
|
||||
textLabel.FontSize = 6 - t * 0.6
|
||||
for t = 1, 10
|
||||
wait 0.1
|
||||
.TextTransparency = t / 10
|
||||
.Position = UDim2.new 0, 0, 0, -t * 5
|
||||
.FontSize = 6 - t * 0.6
|
||||
|
||||
textLabel\remove!
|
||||
\remove!
|
||||
|
||||
setMaxHealth = ->
|
||||
--print Humanoid.Health
|
||||
|
|
|
|||
|
|
@ -194,10 +194,10 @@ endDialog = ->
|
|||
dialog = currentConversationDialog
|
||||
currentConversationDialog = nil
|
||||
if dialog and dialog.InUse
|
||||
reenableScript = reenableDialogScript\Clone!
|
||||
reenableScript.archivable = false
|
||||
reenableScript.Disabled = false
|
||||
reenableScript.Parent = dialog
|
||||
with reenableDialogScript\Clone!
|
||||
.archivable = false
|
||||
.Disabled = false
|
||||
.Parent = dialog
|
||||
|
||||
for dialog, gui in pairs dialogMap
|
||||
if dialog and gui
|
||||
|
|
@ -288,7 +288,7 @@ selectChoice = (choice) ->
|
|||
--First hide the Gui
|
||||
mainFrame.Visible = false
|
||||
if choice == lastChoice
|
||||
game.Chat\Chat game.Players.LocalPlayer.Character, "Goodbye!", getChatColor(currentTone!)
|
||||
game.Chat\Chat game.Players.LocalPlayer.Character, "Goodbye!", getChatColor currentTone!
|
||||
|
||||
normalEndDialog!
|
||||
else
|
||||
|
|
|
|||
163
yue/45284430.yue
163
yue/45284430.yue
|
|
@ -332,9 +332,7 @@ t.CreateDropDownMenu = (items, onSelect, forRoblox) ->
|
|||
|
||||
|
||||
children = droppedDownMenu\GetChildren!
|
||||
if not children
|
||||
return
|
||||
|
||||
return if not children
|
||||
|
||||
childNum = 1
|
||||
for _, obj in ipairs children
|
||||
|
|
@ -405,16 +403,14 @@ t.CreateDropDownMenu = (items, onSelect, forRoblox) ->
|
|||
scrollBarPosition += 1
|
||||
updateScroll!
|
||||
return true
|
||||
|
||||
return false
|
||||
false
|
||||
|
||||
scrollUp = ->
|
||||
if scrollBarPosition > 1
|
||||
scrollBarPosition -= 1
|
||||
updateScroll!
|
||||
return true
|
||||
|
||||
return false
|
||||
false
|
||||
|
||||
|
||||
if useScrollButtons
|
||||
|
|
@ -529,8 +525,7 @@ t.CreatePropertyDropDownMenu = (instance, property, enum) ->
|
|||
nameToItem[obj.Name] = obj
|
||||
|
||||
|
||||
local frame
|
||||
local updateSelection
|
||||
local frame, updateSelection
|
||||
frame, updateSelection = t.CreateDropDownMenu names, (text) ->
|
||||
instance[property] = nameToItem[text]
|
||||
|
||||
|
|
@ -773,7 +768,7 @@ t.CreateSlider = (steps, width, position) ->
|
|||
|
||||
|
||||
sliderPosition.Changed\connect (_) ->
|
||||
sliderPosition.Value = math.min steps, math.max(1, sliderPosition.Value)
|
||||
sliderPosition.Value = math.min steps, math.max 1, sliderPosition.Value
|
||||
relativePosX = (sliderPosition.Value - 1) / (steps - 1)
|
||||
slider.Position = UDim2.new relativePosX, -slider.AbsoluteSize.X / 2, slider.Position.Y.Scale, slider.Position.Y.Offset
|
||||
|
||||
|
|
@ -1015,9 +1010,7 @@ t.CreateTrueScrollingFrame = ->
|
|||
|
||||
|
||||
setSliderSizeAndPosition = ->
|
||||
if not highY or not lowY
|
||||
return
|
||||
|
||||
return if not highY or not lowY
|
||||
|
||||
totalYSpan = math.abs highY - lowY
|
||||
if totalYSpan == 0
|
||||
|
|
@ -1071,9 +1064,7 @@ t.CreateTrueScrollingFrame = ->
|
|||
buttonScrollAmountPixels = 7
|
||||
reentrancyGuardScrollUp = false
|
||||
doScrollUp = ->
|
||||
if reentrancyGuardScrollUp
|
||||
return
|
||||
|
||||
return if reentrancyGuardScrollUp
|
||||
|
||||
reentrancyGuardScrollUp = true
|
||||
if positionScrollBar 0, scrollbar.AbsolutePosition.Y - buttonScrollAmountPixels, 0
|
||||
|
|
@ -1084,9 +1075,7 @@ t.CreateTrueScrollingFrame = ->
|
|||
|
||||
reentrancyGuardScrollDown = false
|
||||
doScrollDown = ->
|
||||
if reentrancyGuardScrollDown
|
||||
return
|
||||
|
||||
return if reentrancyGuardScrollDown
|
||||
|
||||
reentrancyGuardScrollDown = true
|
||||
if positionScrollBar 0, scrollbar.AbsolutePosition.Y + buttonScrollAmountPixels, 0
|
||||
|
|
@ -1171,9 +1160,7 @@ t.CreateTrueScrollingFrame = ->
|
|||
|
||||
reentrancyGuardMouseScroll = false
|
||||
dragCon = mouseDrag.MouseMoved\connect (x, y) ->
|
||||
if reentrancyGuardMouseScroll
|
||||
return
|
||||
|
||||
return if reentrancyGuardMouseScroll
|
||||
|
||||
reentrancyGuardMouseScroll = true
|
||||
if positionScrollBar x, y, mouseOffset
|
||||
|
|
@ -1228,11 +1215,8 @@ t.CreateTrueScrollingFrame = ->
|
|||
|
||||
|
||||
descendantChanged = (this, prop) ->
|
||||
if internalChange
|
||||
return
|
||||
|
||||
if not this.Visible
|
||||
return
|
||||
return if internalChange
|
||||
return if not this.Visible
|
||||
|
||||
|
||||
if prop == "Size" or prop == "Position"
|
||||
|
|
@ -1241,9 +1225,7 @@ t.CreateTrueScrollingFrame = ->
|
|||
|
||||
|
||||
scrollingFrame.DescendantAdded\connect (instance) ->
|
||||
if not instance\IsA "GuiObject"
|
||||
return
|
||||
|
||||
return if not instance\IsA "GuiObject"
|
||||
|
||||
if instance.Visible
|
||||
wait! -- wait a heartbeat for sizes to reconfig
|
||||
|
|
@ -1255,8 +1237,7 @@ t.CreateTrueScrollingFrame = ->
|
|||
|
||||
|
||||
scrollingFrame.DescendantRemoving\connect (instance) ->
|
||||
if not instance\IsA "GuiObject"
|
||||
return
|
||||
return if not instance\IsA "GuiObject"
|
||||
|
||||
if descendantsChangeConMap[instance]
|
||||
descendantsChangeConMap[instance]\disconnect!
|
||||
|
|
@ -1268,15 +1249,13 @@ t.CreateTrueScrollingFrame = ->
|
|||
|
||||
scrollingFrame.Changed\connect (prop) ->
|
||||
if prop == "AbsoluteSize"
|
||||
if not highY or not lowY
|
||||
return
|
||||
|
||||
return if not highY or not lowY
|
||||
|
||||
highLowRecheck!
|
||||
setSliderSizeAndPosition!
|
||||
|
||||
|
||||
return scrollingFrame, controlFrame
|
||||
scrollingFrame, controlFrame
|
||||
|
||||
|
||||
t.CreateScrollingFrame = (orderList, scrollStyle) ->
|
||||
|
|
@ -1581,9 +1560,7 @@ t.CreateScrollingFrame = (orderList, scrollStyle) ->
|
|||
guiObjects += 1
|
||||
|
||||
|
||||
if not scrollDrag.Parent
|
||||
return
|
||||
|
||||
return if not scrollDrag.Parent
|
||||
|
||||
dragSizeY = scrollDrag.Parent.AbsoluteSize.y * (1 / (guiObjects - howManyDisplayed + 1))
|
||||
if dragSizeY < 16
|
||||
|
|
@ -1608,9 +1585,7 @@ t.CreateScrollingFrame = (orderList, scrollStyle) ->
|
|||
|
||||
reentrancyGuard = false
|
||||
recalculate = ->
|
||||
if reentrancyGuard
|
||||
return
|
||||
|
||||
return if reentrancyGuard
|
||||
reentrancyGuard = true
|
||||
wait!
|
||||
local success, err
|
||||
|
|
@ -1810,8 +1785,7 @@ binaryGrow = (min, max, fits) ->
|
|||
--Doesn't fit, shrink
|
||||
max = mid - 1
|
||||
|
||||
|
||||
return biggestLegal
|
||||
biggestLegal
|
||||
|
||||
|
||||
binaryShrink = (min, max, fits) ->
|
||||
|
|
@ -1831,8 +1805,7 @@ binaryShrink = (min, max, fits) ->
|
|||
--Doesn't fit, grow
|
||||
min = mid + 1
|
||||
|
||||
|
||||
return smallestLegal
|
||||
smallestLegal
|
||||
|
||||
|
||||
getGuiOwner = (instance) ->
|
||||
|
|
@ -1842,30 +1815,28 @@ getGuiOwner = (instance) ->
|
|||
|
||||
instance = instance.Parent
|
||||
|
||||
return nil
|
||||
nil
|
||||
|
||||
|
||||
t.AutoTruncateTextObject = (textLabel) ->
|
||||
text = textLabel.Text
|
||||
|
||||
fullLabel = textLabel\Clone!
|
||||
fullLabel.Name = "Full" .. textLabel.Name
|
||||
fullLabel.BorderSizePixel = 0
|
||||
fullLabel.BackgroundTransparency = 0
|
||||
fullLabel.Text = text
|
||||
fullLabel.TextXAlignment = Enum.TextXAlignment.Center
|
||||
fullLabel.Position = UDim2.new 0, -3, 0, 0
|
||||
fullLabel.Size = UDim2.new 0, 100, 1, 0
|
||||
fullLabel.Visible = false
|
||||
fullLabel.Parent = textLabel
|
||||
with fullLabel
|
||||
.Name = "Full" .. textLabel.Name
|
||||
.BorderSizePixel = 0
|
||||
.BackgroundTransparency = 0
|
||||
.Text = text
|
||||
.TextXAlignment = Enum.TextXAlignment.Center
|
||||
.Position = UDim2.new 0, -3, 0, 0
|
||||
.Size = UDim2.new 0, 100, 1, 0
|
||||
.Visible = false
|
||||
.Parent = textLabel
|
||||
|
||||
local shortText
|
||||
local mouseEnterConnection
|
||||
local mouseLeaveConnection
|
||||
local shortText, mouseEnterConnection, mouseLeaveConnection
|
||||
|
||||
checkForResize = ->
|
||||
if getGuiOwner textLabel == nil
|
||||
return
|
||||
return if getGuiOwner(textLabel) == nil
|
||||
|
||||
textLabel.Text = text
|
||||
if textLabel.TextFits
|
||||
|
|
@ -2602,14 +2573,14 @@ t.CreateSetPanel = (userIdsForSets, objectSelected, dialogClosed, size, position
|
|||
ZIndex: 7
|
||||
Parent: button
|
||||
|
||||
configIcon = buttonImage\clone!
|
||||
configIcon.Name = "ConfigIcon"
|
||||
configIcon.Visible = false
|
||||
configIcon.Position = UDim2.new 1, -23, 1, -24
|
||||
configIcon.Size = UDim2.new 0, 16, 0, 16
|
||||
configIcon.Image = ""
|
||||
configIcon.ZIndex = 6
|
||||
configIcon.Parent = insertAssetButtonExample
|
||||
with buttonImage\clone!
|
||||
.Name = "ConfigIcon"
|
||||
.Visible = false
|
||||
.Position = UDim2.new 1, -23, 1, -24
|
||||
.Size = UDim2.new 0, 16, 0, 16
|
||||
.Image = ""
|
||||
.ZIndex = 6
|
||||
.Parent = insertAssetButtonExample
|
||||
|
||||
insertAssetButtonExample
|
||||
|
||||
|
|
@ -2950,12 +2921,13 @@ t.CreateSetPanel = (userIdsForSets, objectSelected, dialogClosed, size, position
|
|||
|
||||
|
||||
scrollFrame, controlFrame = t.CreateTrueScrollingFrame!
|
||||
scrollFrame.Size = UDim2.new 0.54, 0, 0.85, 0
|
||||
scrollFrame.Position = UDim2.new 0.24, 0, 0.085, 0
|
||||
scrollFrame.Name = "ItemsFrame"
|
||||
scrollFrame.ZIndex = 6
|
||||
scrollFrame.Parent = setGui.SetPanel
|
||||
scrollFrame.BackgroundTransparency = 1
|
||||
with scrollFrame
|
||||
.Size = UDim2.new 0.54, 0, 0.85, 0
|
||||
.Position = UDim2.new 0.24, 0, 0.085, 0
|
||||
.Name = "ItemsFrame"
|
||||
.ZIndex = 6
|
||||
.Parent = setGui.SetPanel
|
||||
.BackgroundTransparency = 1
|
||||
|
||||
drillDownSetZIndex controlFrame, 7
|
||||
|
||||
|
|
@ -3186,8 +3158,7 @@ t.CreateTerrainMaterialSelector = (size, position) ->
|
|||
if selectedButton ~= buttonWrap
|
||||
goToNewMaterial buttonWrap, "#{name}"
|
||||
|
||||
|
||||
return buttonWrap
|
||||
buttonWrap
|
||||
|
||||
|
||||
for i = 1, #materialNames
|
||||
|
|
@ -3202,12 +3173,8 @@ t.CreateTerrainMaterialSelector = (size, position) ->
|
|||
|
||||
|
||||
forceTerrainMaterialSelection = (newMaterialType) ->
|
||||
if not newMaterialType
|
||||
return
|
||||
|
||||
if currentMaterial == newMaterialType
|
||||
return
|
||||
|
||||
return if not newMaterialType
|
||||
return if currentMaterial == newMaterialType
|
||||
|
||||
matName = getNameFromEnum newMaterialType
|
||||
buttons = scrollFrame\GetChildren!
|
||||
|
|
@ -3534,20 +3501,22 @@ t.CreatePluginFrame = (name, size, position, scrollable, parent) ->
|
|||
if scrollable
|
||||
--frame for widgets
|
||||
frame, control = t.CreateTrueScrollingFrame!
|
||||
frame.Size = UDim2.new 1, 0, 1, 0
|
||||
frame.BackgroundColor3 = Color3.new 72 / 255, 72 / 255, 72 / 255
|
||||
frame.BorderColor3 = Color3.new 0, 0, 0
|
||||
frame.Active = true
|
||||
frame.Parent = widgetContainer
|
||||
control.Parent = dragBar
|
||||
control.BackgroundColor3 = Color3.new 72 / 255, 72 / 255, 72 / 255
|
||||
control.BorderSizePixel = 0
|
||||
control.BackgroundTransparency = 0
|
||||
control.Position = UDim2.new 1, -21, 1, 1
|
||||
control.Size = if size
|
||||
UDim2.new 0, 21, size.Y.Scale, size.Y.Offset
|
||||
else
|
||||
UDim2.new 0, 21, 0, 400
|
||||
with frame
|
||||
.Size = UDim2.new 1, 0, 1, 0
|
||||
.BackgroundColor3 = Color3.new 72 / 255, 72 / 255, 72 / 255
|
||||
.BorderColor3 = Color3.new 0, 0, 0
|
||||
.Active = true
|
||||
.Parent = widgetContainer
|
||||
with control
|
||||
.Parent = dragBar
|
||||
.BackgroundColor3 = Color3.new 72 / 255, 72 / 255, 72 / 255
|
||||
.BorderSizePixel = 0
|
||||
.BackgroundTransparency = 0
|
||||
.Position = UDim2.new 1, -21, 1, 1
|
||||
.Size = UDim2.new 0, 21, if size
|
||||
size.Y.Scale, size.Y.Offset
|
||||
else
|
||||
0, 400
|
||||
|
||||
control\FindFirstChild"ScrollDownButton".Position = UDim2.new 0, 0, 1, -20
|
||||
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ resumeGameFunction = (shield) ->
|
|||
goToMenu = (container, menuName, moveDirection, size, position) ->
|
||||
return if type(menuName) ~= "string"
|
||||
|
||||
table.insert(lastMenuSelection, currentMenuSelection)
|
||||
table.insert lastMenuSelection, currentMenuSelection
|
||||
if menuName == "GameMainMenu"
|
||||
lastMenuSelection = {}
|
||||
|
||||
|
|
@ -191,15 +191,14 @@ resetLocalCharacter = ->
|
|||
|
||||
|
||||
createTextButton = (text, style, fontSize, buttonSize, buttonPosition) ->
|
||||
newTextButton = Instance.new "TextButton"
|
||||
newTextButton.Font = Enum.Font.Arial
|
||||
newTextButton.FontSize = fontSize
|
||||
newTextButton.Size = buttonSize
|
||||
newTextButton.Position = buttonPosition
|
||||
newTextButton.Style = style
|
||||
newTextButton.TextColor3 = Color3.new 1, 1, 1
|
||||
newTextButton.Text = text
|
||||
newTextButton
|
||||
New "TextButton"
|
||||
Font: Enum.Font.Arial
|
||||
FontSize: fontSize
|
||||
Size: buttonSize
|
||||
Position: buttonPosition
|
||||
Style: style
|
||||
TextColor3: Color3.new 1, 1, 1
|
||||
Text: text
|
||||
|
||||
|
||||
CreateTextButtons = (frame, buttons, yPos, ySize) ->
|
||||
|
|
@ -236,7 +235,7 @@ CreateTextButtons = (frame, buttons, yPos, ySize) ->
|
|||
buttonNum += 1
|
||||
|
||||
|
||||
toggleSelection(buttonObjs[1])
|
||||
toggleSelection buttonObjs[1]
|
||||
|
||||
numButtons = buttonNum - 1
|
||||
|
||||
|
|
@ -299,7 +298,7 @@ setDisabledState = (guiObject) ->
|
|||
guiObject.Active = false
|
||||
else
|
||||
if guiObject["ClassName"]
|
||||
print("setDisabledState! got object of unsupported type. object type is ", guiObject.ClassName)
|
||||
print "setDisabledState! got object of unsupported type. object type is ", guiObject.ClassName
|
||||
|
||||
|
||||
createHelpDialog = (baseZIndex) ->
|
||||
|
|
@ -728,8 +727,7 @@ createGameMainMenu = (baseZIndex, shield) ->
|
|||
gameSettingsButton.Parent = gameMainMenuFrame
|
||||
gameSettingsButton.MouseButton1Click\connect ->
|
||||
if game\FindFirstChild "Players" and game.Players["LocalPlayer"]
|
||||
loadingGui = game.Players.LocalPlayer\FindFirstChild "PlayerLoadingGui"
|
||||
if loadingGui
|
||||
if loadingGui = game.Players.LocalPlayer\FindFirstChild "PlayerLoadingGui"
|
||||
loadingGui.Visible = true
|
||||
|
||||
|
||||
|
|
@ -969,7 +967,7 @@ createGameSettingsMenu = (baseZIndex, _) ->
|
|||
|
||||
|
||||
if explicitLevel == graphicsLevel.Value -- make sure we are actually in right graphics mode
|
||||
setGraphicsQualityLevel(graphicsLevel.Value)
|
||||
setGraphicsQualityLevel graphicsLevel.Value
|
||||
|
||||
|
||||
if not explicitLevel
|
||||
|
|
@ -1444,7 +1442,7 @@ if LoadLibrary
|
|||
--showFunction
|
||||
->
|
||||
settingsButton.Active = false
|
||||
updateCameraDropDownSelection(UserSettings!.GameSettings.ControlMode.Name)
|
||||
updateCameraDropDownSelection UserSettings!.GameSettings.ControlMode.Name
|
||||
|
||||
if syncVideoCaptureSetting
|
||||
syncVideoCaptureSetting!
|
||||
|
|
@ -1511,7 +1509,7 @@ if LoadLibrary
|
|||
resumeGameFunction shield
|
||||
|
||||
|
||||
gameSettingsMenu = createGameSettingsMenu(baseZIndex, shield)
|
||||
gameSettingsMenu = createGameSettingsMenu baseZIndex, shield
|
||||
gameSettingsMenu.Visible = false
|
||||
gameSettingsMenu.Parent = settingsFrame
|
||||
|
||||
|
|
@ -2103,8 +2101,7 @@ if LoadLibrary
|
|||
-- waitForChild game, "Players"
|
||||
-- waitForProperty game.Players, "LocalPlayer"
|
||||
|
||||
-- chatBar = New "Frame"
|
||||
-- Name: "ChatBar"
|
||||
-- chatBar = New "Frame", "ChatBar"
|
||||
-- Size: UDim2.new 1, 0, 0, 22
|
||||
-- Position: UDim2.new 0, 0, 1, 0
|
||||
-- BackgroundColor3: Color3.new 0, 0, 0
|
||||
|
|
@ -2150,11 +2147,11 @@ if LoadLibrary
|
|||
|
||||
-- -- guiService = game\GetService "GuiService"
|
||||
-- --[[newChatMode = ]]try
|
||||
-- --guiService\AddSpecialKey(Enum.SpecialKey.ChatHotkey)
|
||||
-- --guiService\AddSpecialKey Enum.SpecialKey.ChatHotkey
|
||||
-- --guiService.SpecialKeyPressed\connect (key) -> if key == Enum.SpecialKey.ChatHotkey and hotKeyEnabled then activateChat!
|
||||
|
||||
-- -- if not newChatMode
|
||||
-- --guiService\AddKey("/")
|
||||
-- --guiService\AddKey "/"
|
||||
-- --guiService.KeyPressed\connect (key) -> if key == "/" and hotKeyEnabled then activateChat!
|
||||
|
||||
-- chatBox.FocusLost\connect (enterPressed) ->
|
||||
|
|
@ -2212,8 +2209,8 @@ if LoadLibrary
|
|||
-- if success and luaChat
|
||||
|
||||
--[[delay 0, ->
|
||||
waitForChild(game, "Players")
|
||||
waitForProperty(game.Players, "LocalPlayer")
|
||||
waitForChild game, "Players"
|
||||
waitForProperty game.Players, "LocalPlayer"
|
||||
|
||||
advancedChatBarSupported = game.Players.LocalPlayer.ChatMode
|
||||
chatBar, toggleHotKey = createChatBar!
|
||||
|
|
@ -2222,24 +2219,24 @@ if LoadLibrary
|
|||
toggleChatBar = (chatMode) ->
|
||||
if chatMode == Enum.ChatMode.Menu
|
||||
chatBar.Parent = nil
|
||||
game.GuiService\SetGlobalSizeOffsetPixel(0,0)
|
||||
game.GuiService\SetGlobalSizeOffsetPixel 0,0
|
||||
toggleHotKey false
|
||||
elseif chatMode == Enum.ChatMode.TextAndMenu
|
||||
--chatBar.Parent = gui
|
||||
--game.GuiService\SetGlobalSizeOffsetPixel(0,-22)
|
||||
--game.GuiService\SetGlobalSizeOffsetPixel 0,-22
|
||||
toggleHotKey true
|
||||
|
||||
|
||||
game.Players.LocalPlayer.Changed\connect(
|
||||
function prop
|
||||
if prop == "ChatMode"
|
||||
toggleChatBar(game.Players.LocalPlayer.ChatMode)
|
||||
toggleChatBar game.Players.LocalPlayer.ChatMode
|
||||
|
||||
|
||||
toggleChatBar(game.Players.LocalPlayer.ChatMode)
|
||||
toggleChatBar game.Players.LocalPlayer.ChatMode
|
||||
else
|
||||
--chatBar.Parent = gui
|
||||
--game.GuiService\SetGlobalSizeOffsetPixel(0,-22)
|
||||
--game.GuiService\SetGlobalSizeOffsetPixel 0,-22
|
||||
]]
|
||||
|
||||
BurningManPlaceID = 41324860
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ WaitForChild = (parent, child) ->
|
|||
|
||||
-- might want to move all this to an init function, wait for localplayer elsewhere
|
||||
Players = game\GetService "Players"
|
||||
-- make sure this doesn't run on the server(it will if you dont do this)
|
||||
-- make sure this doesn't run on the server (it will if you dont do this)
|
||||
while not Players.LocalPlayer
|
||||
Players.Changed\wait!
|
||||
|
||||
|
|
@ -471,14 +471,12 @@ IsMaximized = Instance.new "BoolValue"
|
|||
IsTabified = Instance.new "BoolValue"
|
||||
AreNamesExpanded = Instance.new "BoolValue"
|
||||
|
||||
MiddleTemplate = New "Frame"
|
||||
Name: "MidTemplate"
|
||||
MiddleTemplate = New "Frame", "MidTemplate"
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 100, 0, 0.07, 0
|
||||
Size: UDim2.new 0.5, 0, 0.025, 0 --UDim2.new 1, 0, .03, 0
|
||||
|
||||
* New "ImageLabel"
|
||||
Name: "BCLabel"
|
||||
* New "ImageLabel", "BCLabel"
|
||||
Active: true
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0.005, 5, 0.20, 0
|
||||
|
|
@ -487,8 +485,7 @@ MiddleTemplate = New "Frame"
|
|||
Image: ""
|
||||
ZIndex: 3
|
||||
|
||||
* New "ImageLabel"
|
||||
Name: "FriendLabel"
|
||||
* New "ImageLabel", "FriendLabel"
|
||||
Active: true
|
||||
BackgroundTransparency: 1
|
||||
Position: UDim2.new 0.005, 5, 0.15, 0
|
||||
|
|
@ -811,8 +808,8 @@ for _, i in pairs Images
|
|||
|
||||
|
||||
-- ordered array of 'score data', each entry has:
|
||||
-- Name(String)
|
||||
-- Priority(number)
|
||||
-- Name String
|
||||
-- Priority number
|
||||
-- IsPrimary (bool, should it be shown in upper right)
|
||||
-- MaxLength (integer, of the length of the longest element for this column)
|
||||
ScoreNames = {}
|
||||
|
|
@ -916,7 +913,7 @@ game.Workspace.ChildAdded\connect (nchild) ->
|
|||
-- Static Functions
|
||||
-------------------------------
|
||||
-- GetTotalEntries = ->
|
||||
-- return math.min(#MiddleFrameBackgrounds, DefaultEntriesOnScreen)
|
||||
-- return math.min #MiddleFrameBackgrounds, DefaultEntriesOnScreen
|
||||
|
||||
-- GetEntryListLength = ->
|
||||
-- numEnts = #PlayerFrames + #TeamFrames
|
||||
|
|
@ -966,7 +963,7 @@ TweenProperty = (obj, propName, inita, enda, length) ->
|
|||
--[[
|
||||
UGLY UGLY HACK FUNCTION
|
||||
replace with some sort of global input catching A.S.A. FREAKING P.
|
||||
creates a fullsize gui element to catch next mouse up event(completeing a click)
|
||||
creates a fullsize gui element to catch next mouse up event completeing a click
|
||||
@Args:
|
||||
frameParent Object to parent fullscreen gui to
|
||||
polledFunction function to call on mouse moved events in this gui
|
||||
|
|
@ -1273,8 +1270,8 @@ local BaseUpdate
|
|||
property Name of stat changed
|
||||
--]]
|
||||
StatChanged = (_, _) -> --playerEntry, property)
|
||||
-- if(playerEntry['MyTeam'])
|
||||
-- UpdateSingleTeam(playerEntry['MyTeam'])
|
||||
-- if playerEntry['MyTeam']
|
||||
-- UpdateSingleTeam playerEntry['MyTeam']
|
||||
-- else
|
||||
BaseUpdate!
|
||||
-- end
|
||||
|
|
@ -1367,7 +1364,7 @@ DoesStatExist = (statName, exception) ->
|
|||
--[[
|
||||
Called when stat is removed from player
|
||||
for all players, destroys the stat frame associated with this value,
|
||||
then calls statchanged(to resize frame)
|
||||
then calls statchanged to resize frame
|
||||
if playerEntry==localplayer, will remove from scorenames
|
||||
@Args:
|
||||
nchild ___value to be removed
|
||||
|
|
@ -1787,7 +1784,7 @@ UpdateMaximize = ->
|
|||
for j = 1, #ScoreNames, 1
|
||||
scoreval = ScoreNames[j]
|
||||
if i\FindFirstChild(scoreval["Name"]) and scoreval["XOffset"]
|
||||
--print('updateing stat position: ' .. scoreval['Name'])
|
||||
-- print "updateing stat position: #{scoreval["Name"]}"
|
||||
i[scoreval["Name"]]\TweenPosition(
|
||||
UDim2.new(RightEdgeSpace, -scoreval["XOffset"], 0, 0),
|
||||
"Out",
|
||||
|
|
@ -2143,7 +2140,7 @@ AddMiddleBGFrame = ->
|
|||
table.insert MiddleFrameBackgrounds, nBGFrame
|
||||
|
||||
if #MiddleFrameBackgrounds < DefaultListSize and not DidMinimizeDrag
|
||||
--print('readjusting bottom clip')
|
||||
--print 'readjusting bottom clip'
|
||||
DefaultBottomClipPos = -1 + #MiddleFrameBackgrounds * MiddleBGTemplate.Size.Y.Scale
|
||||
|
||||
|
||||
|
|
@ -2228,7 +2225,7 @@ OnPlayerEntrySelect = (entry, startx, starty) ->
|
|||
--]]
|
||||
PlayerListModeUpdate = ->
|
||||
RecreateScoreColumns PlayerFrames
|
||||
table.sort(PlayerFrames, PlayerSortFunction)
|
||||
table.sort PlayerFrames, PlayerSortFunction
|
||||
for i, val in ipairs PlayerFrames
|
||||
MiddleFrames[i] = val["Frame"]
|
||||
|
||||
|
|
@ -2255,7 +2252,7 @@ RemoveNeutralTeam = ->
|
|||
index index of player in 'MyPlayers' list to remove
|
||||
--]]
|
||||
RemovePlayerFromTeam = (teamEntry, index) ->
|
||||
table.remove(teamEntry["MyPlayers"], index)
|
||||
table.remove teamEntry["MyPlayers"], index
|
||||
--if teamEntry['AutoHide'] and #teamEntry['MyPlayers'] == 0
|
||||
if teamEntry == NeutralTeam and #teamEntry["MyPlayers"] == 0
|
||||
RemoveNeutralTeam!
|
||||
|
|
@ -2440,7 +2437,7 @@ InsertPlayerFrame = (nplayer) ->
|
|||
|
||||
nfriendstatus = GetFriendStatus nplayer
|
||||
|
||||
nFrame\FindFirstChild"BCLabel".Image = getMembershipTypeIcon(nplayer.MembershipType, nplayer.Name)
|
||||
nFrame\FindFirstChild"BCLabel".Image = getMembershipTypeIcon nplayer.MembershipType, nplayer.Name
|
||||
nFrame\FindFirstChild"FriendLabel".Image = getFriendStatusIcon nfriendstatus
|
||||
nFrame.Name = nplayer.Name
|
||||
WaitForChild(WaitForChild(nFrame, "TitleFrame"), "Title").Text = nplayer.Name
|
||||
|
|
@ -2586,7 +2583,7 @@ Players.ChildRemoved\connect RemovePlayerFrame
|
|||
UnrollTeams = (tframes, outframes) ->
|
||||
numEntries = 0
|
||||
if NeutralTeam and not NeutralTeam["IsHidden"]
|
||||
for _, val in ipairs(NeutralTeam["MyPlayers"])
|
||||
for _, val in ipairs NeutralTeam["MyPlayers"]
|
||||
numEntries += 1
|
||||
outframes[numEntries] = val["Frame"]
|
||||
|
||||
|
|
@ -2595,7 +2592,7 @@ UnrollTeams = (tframes, outframes) ->
|
|||
|
||||
for _, val in ipairs tframes
|
||||
if not val["IsHidden"]
|
||||
for _, pval in ipairs(val.MyPlayers)
|
||||
for _, pval in ipairs val.MyPlayers
|
||||
numEntries += 1
|
||||
outframes[numEntries] = pval["Frame"]
|
||||
|
||||
|
|
@ -2631,7 +2628,7 @@ AddTeamScores = (team) ->
|
|||
for j = 1, #ScoreNames, 1
|
||||
i = ScoreNames[j]
|
||||
tscore = 0
|
||||
for _, j in ipairs(team["MyPlayers"])
|
||||
for _, j in ipairs team["MyPlayers"]
|
||||
tval = j["Player"]\FindFirstChild "leaderstats" and j["Player"].leaderstats\FindFirstChild i["Name"]
|
||||
if tval and not tval\IsA "StringValue"
|
||||
tscore += GetScoreValue (j["Player"].leaderstats)[i["Name"]]
|
||||
|
|
@ -2664,7 +2661,7 @@ TeamListModeUpdate = ->
|
|||
SortTeams TeamFrames
|
||||
if NeutralTeam
|
||||
AddTeamScores NeutralTeam
|
||||
--RecreateScoreColumns(NeutralTeam['MyPlayers'])
|
||||
--RecreateScoreColumns NeutralTeam['MyPlayers']
|
||||
|
||||
UnrollTeams TeamFrames, MiddleFrames
|
||||
|
||||
|
|
@ -2890,7 +2887,7 @@ BaseUpdate = ->
|
|||
UpdateScrollPosition!
|
||||
|
||||
UpdateScrollBarVisibility!
|
||||
--debugprint('EndBaseUpdate')
|
||||
--debugprint 'EndBaseUpdate'
|
||||
BaseUpdateLock = false
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -106,8 +106,7 @@ game.Players.FriendRequestEvent\connect (fromPlayer, toPlayer, event) ->
|
|||
)
|
||||
elseif toPlayer == localPlayer
|
||||
if event == Enum.FriendRequestEvent.Issue
|
||||
if friendRequestBlacklist[fromPlayer]
|
||||
return
|
||||
return if friendRequestBlacklist[fromPlayer]
|
||||
-- previously cancelled friend request, we don't want it!
|
||||
game\GetService"GuiService"\SendNotification(
|
||||
"Friend Request",
|
||||
|
|
|
|||
|
|
@ -99,8 +99,7 @@ if IsPhone!
|
|||
CurrentLoadout.Position = UDim2.new 0.5, -90, 1, -85
|
||||
|
||||
for i = 0, NumSlots
|
||||
slotFrame = New "Frame"
|
||||
Name: "Slot#{i}"
|
||||
slotFrame = New "Frame", "Slot#{i}"
|
||||
RobloxLocked: true
|
||||
BackgroundColor3: Color3.new 0, 0, 0
|
||||
BackgroundTransparency: 1
|
||||
|
|
@ -568,8 +567,7 @@ makeStyledButton = (buttonName, size, position, parent, buttonStyle) ->
|
|||
button
|
||||
|
||||
makeTextLabel = (TextLabelName, text, position, parent) ->
|
||||
New "TextLabel"
|
||||
Name: TextLabelName
|
||||
New "TextLabel", TextLabelName,
|
||||
RobloxLocked: true
|
||||
BackgroundTransparency: 1
|
||||
Size: UDim2.new 0, 32, 0, 14
|
||||
|
|
|
|||
|
|
@ -254,8 +254,7 @@ reorganizeLoadout = (gear, inserting, _, addToSlot) ->
|
|||
|
||||
|
||||
checkToolAncestry = (child, parent) ->
|
||||
if child\FindFirstChild "RobloxBuildTool"
|
||||
return
|
||||
return if child\FindFirstChild "RobloxBuildTool"
|
||||
-- don't show roblox build tools
|
||||
if child\IsA"Tool" or child\IsA "HopperBin"
|
||||
for i = 1, #gearSlots
|
||||
|
|
|
|||
|
|
@ -776,7 +776,7 @@ model = Create'Model'{
|
|||
An example using the event syntax:
|
||||
|
||||
part = Create'Part'{
|
||||
[Create.E'Touched'] = function part
|
||||
[Create.E'Touched'] = function(part)
|
||||
print("I was touched by "..part.Name)
|
||||
end,
|
||||
}
|
||||
|
|
@ -787,7 +787,7 @@ An example using the general constructor syntax:
|
|||
model = Create'Part'{
|
||||
[Create] = function this
|
||||
print("Constructor running!")
|
||||
this.Name = GetGlobalFoosAndBars this
|
||||
this.Name = GetGlobalFoosAndBars(this)
|
||||
end,
|
||||
}
|
||||
|
||||
|
|
|
|||
473
yue/73157242.yue
473
yue/73157242.yue
|
|
@ -1,6 +1,30 @@
|
|||
import "macros" as { $ }
|
||||
$load $FILE
|
||||
|
||||
-- Heliodex's basic New function (basically a simplified version of melt)
|
||||
New = (className, name, props) ->
|
||||
if not props? -- no name was provided
|
||||
props = name
|
||||
name = nil
|
||||
|
||||
obj = Instance.new className
|
||||
obj.Name = name if name
|
||||
local parent
|
||||
|
||||
for k, v in pairs props
|
||||
if type(k) == "string" then
|
||||
if k == "Parent"
|
||||
parent = v
|
||||
else
|
||||
obj[k] = v
|
||||
|
||||
elseif type(k) == "number" and type(v) == "userdata"
|
||||
v.Parent = obj
|
||||
|
||||
obj.Parent = parent
|
||||
obj
|
||||
--
|
||||
|
||||
t = {}
|
||||
|
||||
-- waitForChild = (instance, name) ->
|
||||
|
|
@ -9,7 +33,7 @@ t = {}
|
|||
-- end
|
||||
-- end
|
||||
|
||||
-- Do a line/plane intersection. The line starts at the camera. The plane is at y == 0, normal(0, 1, 0)
|
||||
-- Do a line/plane intersection. The line starts at the camera. The plane is at y == 0, normal 0, 1, 0
|
||||
--
|
||||
-- vectorPos - End point of the line.
|
||||
--
|
||||
|
|
@ -24,9 +48,9 @@ PlaneIntersection = (vectorPos) ->
|
|||
startPos = Vector3.new .X, .Y, .Z
|
||||
|
||||
endPos = Vector3.new vectorPos.X, vectorPos.Y, vectorPos.Z
|
||||
normal = Vector3.new(0, 1, 0)
|
||||
normal = Vector3.new 0, 1, 0
|
||||
p3 = Vector3.new 0, 0, 0
|
||||
startEndDot = normal\Dot(endPos - startPos)
|
||||
startEndDot = normal\Dot endPos - startPos
|
||||
cellPos = vectorPos
|
||||
if startEndDot ~= 0
|
||||
t = normal\Dot(p3 - startPos) / startEndDot
|
||||
|
|
@ -158,14 +182,12 @@ setSeatEnabledStatus = (model, isEnabled) ->
|
|||
-- put a weld called "SeatWeld" in every seat
|
||||
-- this tricks it into thinking there's already someone sitting there, and it won't make you sit XD
|
||||
for i = 1, #seatList
|
||||
fakeWeld = Instance.new "Weld"
|
||||
fakeWeld.Name = "SeatWeld"
|
||||
fakeWeld.Parent = seatList[i]
|
||||
New "Weld", "SeatWeld"
|
||||
Parent: seatList[i]
|
||||
|
||||
|
||||
autoAlignToFace = (parts) ->
|
||||
aatf = parts\FindFirstChild "AutoAlignToFace"
|
||||
if aatf
|
||||
if aatf = parts\FindFirstChild "AutoAlignToFace"
|
||||
aatf.Value
|
||||
else
|
||||
false
|
||||
|
|
@ -257,21 +279,21 @@ modelTargetSurface = (partOrModel, rayStart, rayEnd) ->
|
|||
hitFace = 0
|
||||
|
||||
--if xHitTime >= 0 and yHitTime >= 0 and zHitTime >= 0
|
||||
if xHitTime > yHitTime
|
||||
hitFace = if xHitTime > yHitTime
|
||||
if xHitTime > zHitTime
|
||||
-- xFace is hit
|
||||
hitFace = 1 * xPositive
|
||||
1 * xPositive
|
||||
else
|
||||
-- zFace is hit
|
||||
hitFace = 3 * zPositive
|
||||
3 * zPositive
|
||||
|
||||
else
|
||||
if yHitTime > zHitTime
|
||||
-- yFace is hit
|
||||
hitFace = 2 * yPositive
|
||||
2 * yPositive
|
||||
else
|
||||
-- zFace is hit
|
||||
hitFace = 3 * zPositive
|
||||
3 * zPositive
|
||||
|
||||
hitFace
|
||||
|
||||
|
|
@ -298,7 +320,7 @@ getBoundingBox2 = (partOrModel) ->
|
|||
if justifyValue?
|
||||
-- find the multiple of 4 that contains the model
|
||||
justify = justifyValue.Value
|
||||
two = Vector3.new(2, 2, 2)
|
||||
two = Vector3.new 2, 2, 2
|
||||
actualBox = maxVec - minVec - Vector3.new 0.01, 0.01, 0.01
|
||||
containingGridBox = Vector3.new(
|
||||
4 * math.ceil(actualBox.x / 4),
|
||||
|
|
@ -323,8 +345,8 @@ getBoundingBoxInWorldCoordinates = (partOrModel) ->
|
|||
maxVec = Vector3.new math.max(vec1.X, vec2.X), math.max(vec1.Y, vec2.Y), math.max vec1.Z, vec2.Z
|
||||
elseif not partOrModel\IsA "Terrain"
|
||||
-- we shouldn't have to deal with this case
|
||||
--minVec = Vector3.new(-2, -2, -2)
|
||||
--maxVec = Vector3.new(2, 2, 2)
|
||||
--minVec = Vector3.new -2, -2, -2
|
||||
--maxVec = Vector3.new 2, 2, 2
|
||||
-- else
|
||||
vec1 = partOrModel\GetModelCFrame!\pointToWorldSpace -0.5 * partOrModel\GetModelSize!
|
||||
vec2 = partOrModel\GetModelCFrame!\pointToWorldSpace 0.5 * partOrModel\GetModelSize!
|
||||
|
|
@ -359,7 +381,7 @@ isBlocker = (part) -> -- returns whether or not we want to cancel the stamp beca
|
|||
if part\FindFirstChild "Humanoid"
|
||||
return false
|
||||
|
||||
if part\FindFirstChild "RobloxStamper" or part\FindFirstChild "RobloxModel"
|
||||
if part\FindFirstChild"RobloxStamper" or part\FindFirstChild "RobloxModel"
|
||||
return true
|
||||
|
||||
if part\IsA"Part" and not part.CanCollide
|
||||
|
|
@ -376,7 +398,7 @@ spaceAboveCharacter = (charTorso, newTorsoY, stampData) ->
|
|||
partsAboveChar = game.Workspace\FindPartsInRegion3(
|
||||
Region3.new(
|
||||
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) - Vector3.new(0.75, 2.75, 0.75),
|
||||
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new(0.75, 1.75, 0.75)
|
||||
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new 0.75, 1.75, 0.75
|
||||
),
|
||||
charTorso.Parent,
|
||||
100
|
||||
|
|
@ -388,7 +410,7 @@ spaceAboveCharacter = (charTorso, newTorsoY, stampData) ->
|
|||
|
||||
if clusterPartsInRegion(
|
||||
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) - Vector3.new(0.75, 2.75, 0.75),
|
||||
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new(0.75, 1.75, 0.75)
|
||||
Vector3.new(charTorso.Position.X, newTorsoY, charTorso.Position.Z) + Vector3.new 0.75, 1.75, 0.75
|
||||
)
|
||||
|
||||
return false
|
||||
|
|
@ -406,8 +428,8 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
|
|||
return if not Mouse
|
||||
|
||||
-- This can happen sometimes, return if so
|
||||
return if not stampData
|
||||
error "findConfigAtMouseTarget: stampData is nil"
|
||||
if not stampData
|
||||
return error "findConfigAtMouseTarget: stampData is nil"
|
||||
|
||||
return if not stampData["CurrentParts"]
|
||||
|
||||
|
|
@ -426,10 +448,10 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
|
|||
|
||||
|
||||
if Mouse
|
||||
if stampData.CurrentParts\IsA "Tool"
|
||||
Mouse.TargetFilter = stampData.CurrentParts.Handle
|
||||
Mouse.TargetFilter = if stampData.CurrentParts\IsA "Tool"
|
||||
stampData.CurrentParts.Handle
|
||||
else
|
||||
Mouse.TargetFilter = stampData.CurrentParts
|
||||
stampData.CurrentParts
|
||||
|
||||
hitPlane = false
|
||||
local targetPart
|
||||
|
|
@ -445,7 +467,6 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
|
|||
if Mouse
|
||||
mouseHitInWorld = Vector3.new Mouse.Hit.x, Mouse.Hit.y, Mouse.Hit.z
|
||||
|
||||
|
||||
local cellPos
|
||||
|
||||
-- Nothing was hit, so check for the default plane.
|
||||
|
|
@ -458,8 +479,8 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
|
|||
targetPart = game.Workspace.Terrain
|
||||
hitPlane = true
|
||||
-- Take into account error that will occur.
|
||||
cellPos = Vector3.new(cellPos.X - 1, cellPos.Y, cellPos.Z)
|
||||
mouseHitInWorld = game.Workspace.Terrain\CellCenterToWorld(cellPos.x, cellPos.y, cellPos.z)
|
||||
cellPos = Vector3.new cellPos.X - 1, cellPos.Y, cellPos.Z
|
||||
mouseHitInWorld = game.Workspace.Terrain\CellCenterToWorld cellPos.x, cellPos.y, cellPos.z
|
||||
|
||||
|
||||
-- test mouse hit location
|
||||
|
|
@ -486,13 +507,13 @@ findConfigAtMouseTarget = (Mouse, stampData) ->
|
|||
-- (ideally, we would want to make the Mouse.TargetSurface a model-targetsurface instead, but for testing will be using the converse)
|
||||
--targetVectorInWorld = targetCFrame\vectorToWorldSpace(Vector3.FromNormalId(Mouse.TargetSurface))
|
||||
targetVectorInWorld = targetPart.CFrame\vectorToWorldSpace Vector3.FromNormalId Mouse.TargetSurface -- better, but model cframe would be best
|
||||
--[[if targetPart.Parent\IsA("Model")
|
||||
--[[if targetPart.Parent\IsA "Model"
|
||||
hitFace = modelTargetSurface(targetPart.Parent, Mouse.Hit.p, game.Workspace.CurrentCamera.CoordinateFrame.p) -- best, if you get it right
|
||||
WORLD_AXES = {Vector3.new(1, 0, 0), Vector3.new(0, 1, 0), Vector3.new(0, 0, 1)}
|
||||
WORLD_AXES = { Vector3.new(1, 0, 0), Vector3.new(0, 1, 0), Vector3.new(0, 0, 1) }
|
||||
if hitFace > 0
|
||||
targetVectorInWorld = targetCFrame\vectorToWorldSpace(WORLD_AXES[hitFace])
|
||||
targetVectorInWorld = targetCFrame\vectorToWorldSpace WORLD_AXES[hitFace]
|
||||
elseif hitFace < 0
|
||||
targetVectorInWorld = targetCFrame\vectorToWorldSpace(-WORLD_AXES[-hitFace])
|
||||
targetVectorInWorld = targetCFrame\vectorToWorldSpace -WORLD_AXES[-hitFace]
|
||||
|
||||
end]]
|
||||
|
||||
|
|
@ -580,10 +601,10 @@ truncateToCircleEighth = (bigValue, littleValue) ->
|
|||
|
||||
if frac > 0.382683432
|
||||
-- between 22.5 and 45 degrees, so truncate to 45-degree tilt
|
||||
return 0.707106781 * hypotenuse * bigSign, 0.707106781 * hypotenuse * littleSign
|
||||
0.707106781 * hypotenuse * bigSign, 0.707106781 * hypotenuse * littleSign
|
||||
else
|
||||
-- between 0 and 22.5 degrees, so truncate to 0-degree tilt
|
||||
return hypotenuse * bigSign, 0
|
||||
hypotenuse * bigSign, 0
|
||||
|
||||
|
||||
saveTheWelds = (object, manualWeldTable, manualWeldParentTable) ->
|
||||
|
|
@ -688,24 +709,22 @@ t.GetStampModel = (assetId, terrainShape, useAssetVersionId) ->
|
|||
newTerrainPiece.CFrame = CFrame.Angles 0, math.pi / 2 * cellOrient + flipped, sideways
|
||||
|
||||
if cellType == 3
|
||||
inverseCornerWedgeMesh = Instance.new "SpecialMesh"
|
||||
inverseCornerWedgeMesh.MeshType = "FileMesh"
|
||||
inverseCornerWedgeMesh.MeshId = "http://www.roblox.com/asset?id=66832495"
|
||||
inverseCornerWedgeMesh.Scale = Vector3.new 2, 2, 2
|
||||
inverseCornerWedgeMesh.Parent = newTerrainPiece
|
||||
New "SpecialMesh"
|
||||
MeshType: "FileMesh"
|
||||
MeshId: "http://www.roblox.com/asset?id=66832495"
|
||||
Scale: Vector3.new 2, 2, 2
|
||||
Parent: newTerrainPiece
|
||||
|
||||
materialTag = Instance.new "Vector3Value"
|
||||
materialTag.Value = Vector3.new cellMat, cellType, cellOrient
|
||||
materialTag.Name = "ClusterMaterial"
|
||||
materialTag.Parent = newTerrainPiece
|
||||
New "Vector3Value", "ClusterMaterial"
|
||||
Value: Vector3.new cellMat, cellType, cellOrient
|
||||
Parent: newTerrainPiece
|
||||
|
||||
return newTerrainPiece
|
||||
newTerrainPiece
|
||||
|
||||
|
||||
-- This call will cause a "wait" until the data comes back
|
||||
-- below we wait a max of 8 seconds before deciding to bail out on loading
|
||||
local root
|
||||
local loader
|
||||
local root, loader
|
||||
loading = true
|
||||
if useAssetVersionId
|
||||
loader = coroutine.create ->
|
||||
|
|
@ -771,36 +790,33 @@ t.GetStampModel = (assetId, terrainShape, useAssetVersionId) ->
|
|||
|
||||
-- ...and tag all inserted models for subsequent origin identification
|
||||
-- if no RobloxModel tag already exists, then add it.
|
||||
if not root\FindFirstChild"RobloxModel"?
|
||||
stringTag = Instance.new "BoolValue"
|
||||
stringTag.Name = "RobloxModel"
|
||||
stringTag.Parent = root
|
||||
if root\FindFirstChild"RobloxModel" == nil
|
||||
New "BoolValue", "RobloxModel"
|
||||
Parent: root
|
||||
|
||||
if not root\FindFirstChild"RobloxStamper"?
|
||||
stringTag2 = Instance.new "BoolValue"
|
||||
stringTag2.Name = "RobloxStamper"
|
||||
stringTag2.Parent = root
|
||||
if root\FindFirstChild"RobloxStamper" == nil
|
||||
New "BoolValue", "RobloxStamper"
|
||||
Parent: root
|
||||
|
||||
|
||||
if terrainShape
|
||||
if root.Name == "MegaClusterCube"
|
||||
if terrainShape == 6 -- insert an autowedging tag
|
||||
autowedgeTag = Instance.new "BoolValue"
|
||||
autowedgeTag.Name = "AutoWedge"
|
||||
autowedgeTag.Parent = root
|
||||
New "BoolValue", "AutoWedge"
|
||||
Parent: root
|
||||
else
|
||||
clusterTag = root\FindFirstChild "ClusterMaterial"
|
||||
if clusterTag
|
||||
root = if clusterTag
|
||||
if clusterTag\IsA "Vector3Value"
|
||||
root = setupFakeTerrainPart(clusterTag.Value.X, terrainShape, clusterTag.Value.Z)
|
||||
setupFakeTerrainPart clusterTag.Value.X, terrainShape, clusterTag.Value.Z
|
||||
else
|
||||
root = setupFakeTerrainPart(clusterTag.Value, terrainShape, 0)
|
||||
setupFakeTerrainPart clusterTag.Value, terrainShape, 0
|
||||
|
||||
else
|
||||
root = setupFakeTerrainPart(1, terrainShape, 0)
|
||||
setupFakeTerrainPart 1, terrainShape, 0
|
||||
|
||||
|
||||
return root
|
||||
root
|
||||
|
||||
|
||||
t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion, StampFailedFunc) ->
|
||||
|
|
@ -843,38 +859,37 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
local stampData
|
||||
local mouseTarget
|
||||
|
||||
errorBox = Instance.new "SelectionBox"
|
||||
errorBox.Color = BrickColor.new "Bright red"
|
||||
errorBox.Transparency = 0
|
||||
errorBox.Archivable = false
|
||||
errorBox = New "SelectionBox"
|
||||
Color: BrickColor.new "Bright red"
|
||||
Transparency: 0
|
||||
Archivable: false
|
||||
|
||||
-- for megacluster MEGA STAMPING
|
||||
adornPart = Instance.new "Part"
|
||||
adornPart.Parent = nil
|
||||
adornPart.formFactor = "Custom"
|
||||
adornPart.Size = Vector3.new(4, 4, 4)
|
||||
adornPart.CFrame = CFrame.new!
|
||||
adornPart.Archivable = false
|
||||
adornPart = New "Part"
|
||||
Parent: nil
|
||||
formFactor: "Custom"
|
||||
Size: Vector3.new 4, 4, 4
|
||||
CFrame: CFrame.new!
|
||||
Archivable: false
|
||||
|
||||
adorn = Instance.new "SelectionBox"
|
||||
adorn.Color = BrickColor.new "Toothpaste"
|
||||
adorn.Adornee = adornPart
|
||||
adorn.Visible = true
|
||||
adorn.Transparency = 0
|
||||
adorn.Name = "HighScalabilityStamperLine"
|
||||
adorn.Archivable = false
|
||||
adorn = New "SelectionBox", "HighScalabilityStamperLine"
|
||||
Color: BrickColor.new "Toothpaste"
|
||||
Adornee: adornPart
|
||||
Visible: true
|
||||
Transparency: 0
|
||||
Archivable: false
|
||||
|
||||
HighScalabilityLine = {}
|
||||
HighScalabilityLine.Start = nil
|
||||
HighScalabilityLine.End = nil
|
||||
HighScalabilityLine.Adorn = adorn
|
||||
HighScalabilityLine.AdornPart = adornPart
|
||||
HighScalabilityLine.InternalLine = nil
|
||||
HighScalabilityLine.NewHint = true
|
||||
|
||||
HighScalabilityLine.MorePoints = { nil, nil }
|
||||
HighScalabilityLine.MoreLines = { nil, nil }
|
||||
HighScalabilityLine.Dimensions = 1
|
||||
with HighScalabilityLine
|
||||
.Start = nil
|
||||
.End = nil
|
||||
.Adorn = adorn
|
||||
.AdornPart = adornPart
|
||||
.InternalLine = nil
|
||||
.NewHint = true
|
||||
.MorePoints = { nil, nil }
|
||||
.MoreLines = { nil, nil }
|
||||
.Dimensions = 1
|
||||
|
||||
control = {}
|
||||
movingLock = false
|
||||
|
|
@ -883,9 +898,9 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
mouseCons = {}
|
||||
local keyCon
|
||||
|
||||
stamped = Instance.new "BoolValue"
|
||||
stamped.Archivable = false
|
||||
stamped.Value = false
|
||||
stamped = New "BoolValue"
|
||||
Archivable: false
|
||||
Value: false
|
||||
|
||||
lastTarget = {}
|
||||
lastTarget.TerrainOrientation = 0
|
||||
|
|
@ -924,37 +939,37 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
-- extract the line from these positions and limit to a 2D plane made from 2 of the world axes
|
||||
-- then use dominating axis to limit line to be at 45-degree intervals
|
||||
-- will use this internal representation of the line for the actual stamping
|
||||
line = (HighScalabilityLine.End - HighScalabilityLine.Start)
|
||||
line = HighScalabilityLine.End - HighScalabilityLine.Start
|
||||
|
||||
if math.abs(line.X) < math.abs(line.Y)
|
||||
if math.abs(line.X) < math.abs(line.Z)
|
||||
if math.abs(line.X) < math.abs line.Y
|
||||
if math.abs(line.X) < math.abs line.Z
|
||||
-- limit to Y/Z plane, domination unknown
|
||||
local newY, newZ
|
||||
if math.abs(line.Y) > math.abs(line.Z)
|
||||
newY, newZ = truncateToCircleEighth(line.Y, line.Z)
|
||||
if math.abs(line.Y) > math.abs line.Z
|
||||
newY, newZ = truncateToCircleEighth line.Y, line.Z
|
||||
else
|
||||
newZ, newY = truncateToCircleEighth(line.Z, line.Y)
|
||||
newZ, newY = truncateToCircleEighth line.Z, line.Y
|
||||
|
||||
line = Vector3.new(0, newY, newZ)
|
||||
line = Vector3.new 0, newY, newZ
|
||||
else
|
||||
-- limit to X/Y plane, with Y dominating
|
||||
newY, newX = truncateToCircleEighth(line.Y, line.X)
|
||||
line = Vector3.new(newX, newY, 0)
|
||||
newY, newX = truncateToCircleEighth line.Y, line.X
|
||||
line = Vector3.new newX, newY, 0
|
||||
|
||||
else
|
||||
if math.abs(line.Y) < math.abs(line.Z)
|
||||
if math.abs(line.Y) < math.abs line.Z
|
||||
-- limit to X/Z plane, domination unknown
|
||||
local newX, newZ
|
||||
if math.abs(line.X) > math.abs(line.Z)
|
||||
newX, newZ = truncateToCircleEighth(line.X, line.Z)
|
||||
if math.abs(line.X) > math.abs line.Z
|
||||
newX, newZ = truncateToCircleEighth line.X, line.Z
|
||||
else
|
||||
newZ, newX = truncateToCircleEighth(line.Z, line.X)
|
||||
newZ, newX = truncateToCircleEighth line.Z, line.X
|
||||
|
||||
line = Vector3.new(newX, 0, newZ)
|
||||
line = Vector3.new newX, 0, newZ
|
||||
else
|
||||
-- limit to X/Y plane, with X dominating
|
||||
newX, newY = truncateToCircleEighth(line.X, line.Y)
|
||||
line = Vector3.new(newX, newY, 0)
|
||||
newX, newY = truncateToCircleEighth line.X, line.Y
|
||||
line = Vector3.new newX, newY, 0
|
||||
|
||||
|
||||
HighScalabilityLine.InternalLine = line
|
||||
|
|
@ -965,7 +980,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
-- take out any component of line2 along line1, so you get perpendicular to line1 component
|
||||
line2 -= line.unit * line.unit\Dot line2
|
||||
|
||||
tempCFrame = CFrame.new(HighScalabilityLine.Start, HighScalabilityLine.Start + line)
|
||||
tempCFrame = CFrame.new HighScalabilityLine.Start, HighScalabilityLine.Start + line
|
||||
|
||||
-- then zero out whichever is the smaller component
|
||||
yAxis = tempCFrame\vectorToWorldSpace(Vector3.new(0, 1, 0))
|
||||
|
|
@ -994,14 +1009,14 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
|
||||
|
||||
-- resize the "line" graphic to be the correct size and orientation
|
||||
tempCFrame = CFrame.new(HighScalabilityLine.Start, HighScalabilityLine.Start + line)
|
||||
tempCFrame = CFrame.new HighScalabilityLine.Start, HighScalabilityLine.Start + line
|
||||
|
||||
if HighScalabilityLine.Dimensions == 1 -- faster calculation for line
|
||||
HighScalabilityLine.AdornPart.Size = Vector3.new(4, 4, line.magnitude + 4)
|
||||
HighScalabilityLine.AdornPart.Size = Vector3.new 4, 4, line.magnitude + 4
|
||||
HighScalabilityLine.AdornPart.CFrame = tempCFrame +
|
||||
tempCFrame\vectorToWorldSpace Vector3.new(2, 2, 2) - HighScalabilityLine.AdornPart.Size / 2
|
||||
else
|
||||
boxSize = tempCFrame\vectorToObjectSpace(line + line2 + line3)
|
||||
boxSize = tempCFrame\vectorToObjectSpace line + line2 + line3
|
||||
HighScalabilityLine.AdornPart.Size = Vector3.new(4, 4, 4) +
|
||||
Vector3.new(math.abs(boxSize.X), math.abs(boxSize.Y), math.abs(boxSize.Z))
|
||||
HighScalabilityLine.AdornPart.CFrame = tempCFrame + tempCFrame\vectorToWorldSpace boxSize / 2
|
||||
|
|
@ -1032,24 +1047,20 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
return
|
||||
|
||||
if not Mouse\IsA "Mouse"
|
||||
error("Error: RbxStamper.DoStamperMouseMove: Mouse is of type", Mouse.className, "should be of type Mouse")
|
||||
error "Error: RbxStamper.DoStamperMouseMove: Mouse is of type", Mouse.className, "should be of type Mouse"
|
||||
return
|
||||
|
||||
|
||||
-- There wasn't a target (no part or terrain), so check for plane intersection.
|
||||
if not Mouse.Target
|
||||
cellPos = GetTerrainForMouse Mouse
|
||||
if nil == cellPos
|
||||
return
|
||||
|
||||
|
||||
if not stampData
|
||||
return
|
||||
return if nil == cellPos
|
||||
|
||||
return if not stampData
|
||||
|
||||
-- don't move with dragger - will move in one step on mouse down
|
||||
-- draw ghost at acceptable positions
|
||||
configFound, targetCFrame, targetSurface = findConfigAtMouseTarget(Mouse, stampData)
|
||||
configFound, targetCFrame, targetSurface = findConfigAtMouseTarget Mouse, stampData
|
||||
if not configFound
|
||||
error "RbxStamper.DoStamperMouseMove No configFound, returning"
|
||||
return
|
||||
|
|
@ -1057,28 +1068,28 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
|
||||
numRotations = 0 -- update this according to how many rotations you need to get it to target surface
|
||||
if autoAlignToFace(stampData.CurrentParts) and targetSurface ~= 1 and targetSurface ~= 4 -- pre-rotate the flag or portrait so it's aligned correctly
|
||||
if targetSurface == 3
|
||||
numRotations = 0 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts)
|
||||
numRotations = if targetSurface == 3
|
||||
0 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
|
||||
elseif targetSurface == 0
|
||||
numRotations = 2 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts)
|
||||
2 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
|
||||
elseif targetSurface == 5
|
||||
numRotations = 3 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts)
|
||||
3 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
|
||||
elseif targetSurface == 2
|
||||
numRotations = 1 - gInitial90DegreeRotations + autoAlignToFace(stampData.CurrentParts)
|
||||
1 - gInitial90DegreeRotations + autoAlignToFace stampData.CurrentParts
|
||||
|
||||
|
||||
ry = math.pi / 2
|
||||
gInitial90DegreeRotations += numRotations
|
||||
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
|
||||
--stampData.CurrentParts\Rotate(0, ry*numRotations, 0)
|
||||
modelRotate(stampData.CurrentParts, ry * numRotations)
|
||||
--stampData.CurrentParts\Rotate 0, ry*numRotations, 0
|
||||
modelRotate stampData.CurrentParts, ry * numRotations
|
||||
else
|
||||
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry * numRotations, 0)
|
||||
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ 0, ry * numRotations, 0
|
||||
* stampData.CurrentParts.CFrame
|
||||
|
||||
|
||||
-- CODE TO CHECK FOR DRAGGING GHOST PART INTO A COLLIDING STATE
|
||||
minBB, maxBB = getBoundingBoxInWorldCoordinates(stampData.CurrentParts)
|
||||
minBB, maxBB = getBoundingBoxInWorldCoordinates stampData.CurrentParts
|
||||
|
||||
-- need to offset by distance to be dragged
|
||||
local currModelCFrame
|
||||
|
|
@ -1092,12 +1103,12 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
maxBB += targetCFrame.p - currModelCFrame.p
|
||||
|
||||
-- don't drag into terrain
|
||||
if clusterPartsInRegion(minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector)
|
||||
if clusterPartsInRegion minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector
|
||||
if lastTarget.CFrame
|
||||
if stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
|
||||
theClusterMaterial = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
|
||||
if stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
|
||||
theClusterMaterial = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
|
||||
if theClusterMaterial\IsA "Vector3Value"
|
||||
stampClusterMaterial = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
|
||||
stampClusterMaterial = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
|
||||
if stampClusterMaterial
|
||||
stampClusterMaterial = clusterMat
|
||||
|
||||
|
|
@ -1193,13 +1204,12 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
|
||||
-- most common mouse inactive error occurs here, so check mouse active one more time in a pcall
|
||||
if (not try
|
||||
if Mouse and Mouse.Target and not Mouse.Target.Parent\FindFirstChild"RobloxModel"?
|
||||
return
|
||||
else
|
||||
return
|
||||
-- ?
|
||||
-- if Mouse and Mouse.Target and not Mouse.Target.Parent\FindFirstChild"RobloxModel"?
|
||||
-- return
|
||||
-- else
|
||||
-- return
|
||||
return
|
||||
)
|
||||
|
||||
error "Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check"
|
||||
game.JointsService\ClearJoinAfterMoveJoints!
|
||||
Mouse = nil
|
||||
|
|
@ -1239,7 +1249,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
-- Rotate the parts or all the parts in the model
|
||||
ry = math.pi / 2
|
||||
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
|
||||
--stampData.CurrentParts\Rotate(0, ry, 0)
|
||||
--stampData.CurrentParts\Rotate 0, ry, 0
|
||||
modelRotate stampData.CurrentParts, ry
|
||||
else
|
||||
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry, 0) * stampData.CurrentParts.CFrame
|
||||
|
|
@ -1254,14 +1264,14 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
DoStamperMouseMove Mouse
|
||||
|
||||
elseif key == "c" -- try to expand our high scalability dragger dimension
|
||||
if HighScalabilityLine.InternalLine and
|
||||
HighScalabilityLine.InternalLine.magnitude > 0 and
|
||||
HighScalabilityLine.Dimensions < 3
|
||||
|
||||
HighScalabilityLine.MorePoints[HighScalabilityLine.Dimensions] = HighScalabilityLine.End
|
||||
HighScalabilityLine.MoreLines[HighScalabilityLine.Dimensions] = HighScalabilityLine.InternalLine
|
||||
HighScalabilityLine.Dimensions = HighScalabilityLine.Dimensions + 1
|
||||
HighScalabilityLine.NewHint = true
|
||||
with HighScalabilityLine
|
||||
if .InternalLine and
|
||||
.InternalLine.magnitude > 0 and
|
||||
.Dimensions < 3
|
||||
.MorePoints[.Dimensions] = .End
|
||||
.MoreLines[.Dimensions] = .InternalLine
|
||||
.Dimensions = .Dimensions + 1
|
||||
.NewHint = true
|
||||
|
||||
keyCon = Mouse.KeyDown\connect (key) -> -- init key connection (keeping code close to func)
|
||||
setupKeyListener key, Mouse
|
||||
|
|
@ -1275,10 +1285,11 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
|
||||
flashRedBox = ->
|
||||
gui = game.CoreGui
|
||||
if game\FindFirstChild "Players"
|
||||
if game.Players["LocalPlayer"]
|
||||
if game.Players.LocalPlayer\FindFirstChild "PlayerGui"
|
||||
gui = game.Players.LocalPlayer.PlayerGui
|
||||
if game\FindFirstChild"Players" and
|
||||
game.Players["LocalPlayer"] and
|
||||
game.Players.LocalPlayer\FindFirstChild "PlayerGui"
|
||||
|
||||
gui = game.Players.LocalPlayer.PlayerGui
|
||||
|
||||
return if not stampData["ErrorBox"]
|
||||
|
||||
|
|
@ -1312,22 +1323,20 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
error "Error: RbxStamper.DoStamperMouseDown: Mouse is of type", Mouse.className, "should be of type Mouse"
|
||||
return
|
||||
|
||||
if not stampData
|
||||
return
|
||||
|
||||
return if not stampData
|
||||
|
||||
if isMegaClusterPart!
|
||||
if Mouse and HighScalabilityLine
|
||||
megaCube = stampData.CurrentParts\FindFirstChild("MegaClusterCube", true)
|
||||
megaCube = stampData.CurrentParts\FindFirstChild "MegaClusterCube", true
|
||||
terrain = game.Workspace.Terrain
|
||||
if megaCube
|
||||
HighScalabilityLine.Dimensions = 1
|
||||
tempCell = terrain\WorldToCell(megaCube.CFrame.p)
|
||||
tempCell = terrain\WorldToCell megaCube.CFrame.p
|
||||
HighScalabilityLine.Start = terrain\CellCenterToWorld tempCell.X, tempCell.Y, tempCell.Z
|
||||
return
|
||||
else
|
||||
HighScalabilityLine.Dimensions = 1
|
||||
tempCell = terrain\WorldToCell(stampData.CurrentParts.CFrame.p)
|
||||
tempCell = terrain\WorldToCell stampData.CurrentParts.CFrame.p
|
||||
HighScalabilityLine.Start = terrain\CellCenterToWorld tempCell.X, tempCell.Y, tempCell.Z
|
||||
return
|
||||
|
||||
|
|
@ -1371,16 +1380,17 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
decals = {}
|
||||
|
||||
stampData = {}
|
||||
stampData.DisabledScripts = {}
|
||||
stampData.TransparencyTable = {}
|
||||
stampData.MaterialTable = {}
|
||||
stampData.CanCollideTable = {}
|
||||
stampData.AnchoredTable = {}
|
||||
stampData.ArchivableTable = {}
|
||||
stampData.DecalTransparencyTable = {}
|
||||
stampData.SurfaceTypeTable = {}
|
||||
with stampData
|
||||
.DisabledScripts = {}
|
||||
.TransparencyTable = {}
|
||||
.MaterialTable = {}
|
||||
.CanCollideTable = {}
|
||||
.AnchoredTable = {}
|
||||
.ArchivableTable = {}
|
||||
.DecalTransparencyTable = {}
|
||||
.SurfaceTypeTable = {}
|
||||
|
||||
collectParts(clone, parts, scripts, decals)
|
||||
collectParts clone, parts, scripts, decals
|
||||
|
||||
if #parts <= 0
|
||||
return nil, "no parts found in modelToStamp"
|
||||
|
|
@ -1404,7 +1414,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
stampData.ArchivableTable[part] = part.Archivable
|
||||
part.Archivable = false
|
||||
|
||||
saveSurfaceTypes(part, stampData.SurfaceTypeTable)
|
||||
saveSurfaceTypes part, stampData.SurfaceTypeTable
|
||||
|
||||
fadeInDelayTime = 0.5
|
||||
transFadeInTime = 0.5
|
||||
|
|
@ -1447,7 +1457,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
else -- pre-rotate if necessary
|
||||
ry = gInitial90DegreeRotations * math.pi / 2
|
||||
if stampData.CurrentParts\IsA"Model" or stampData.CurrentParts\IsA "Tool"
|
||||
--stampData.CurrentParts\Rotate(0, ry, 0)
|
||||
--stampData.CurrentParts\Rotate 0, ry, 0
|
||||
modelRotate stampData.CurrentParts, ry
|
||||
else
|
||||
stampData.CurrentParts.CFrame = CFrame.fromEulerAnglesXYZ(0, ry, 0) * stampData.CurrentParts.CFrame
|
||||
|
|
@ -1467,13 +1477,13 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
|
||||
|
||||
-- After rotating, update the position
|
||||
configFound, targetCFrame = findConfigAtMouseTarget(Mouse, stampData)
|
||||
configFound, targetCFrame = findConfigAtMouseTarget Mouse, stampData
|
||||
if configFound
|
||||
stampData.CurrentParts = positionPartsAtCFrame3(targetCFrame, stampData.CurrentParts)
|
||||
stampData.CurrentParts = positionPartsAtCFrame3 targetCFrame, stampData.CurrentParts
|
||||
|
||||
|
||||
-- to show joints during the mouse move
|
||||
game.JointsService\SetJoinAfterMoveInstance(stampData.CurrentParts)
|
||||
game.JointsService\SetJoinAfterMoveInstance stampData.CurrentParts
|
||||
|
||||
return clone, parts
|
||||
|
||||
|
|
@ -1532,7 +1542,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
|
||||
if checkHighScalabilityStamp -- check to see if cell is in region, if not we'll skip set
|
||||
if allowedStampRegion
|
||||
cellPos = cellCenterToWorld(game.Workspace.Terrain, cellPos.X, cellPos.Y, cellPos.Z)
|
||||
cellPos = cellCenterToWorld game.Workspace.Terrain, cellPos.X, cellPos.Y, cellPos.Z
|
||||
if (cellPos.X + 2 > allowedStampRegion.CFrame.p.X + allowedStampRegion.Size.X / 2) or
|
||||
(cellPos.X - 2 < allowedStampRegion.CFrame.p.X - allowedStampRegion.Size.X / 2) or
|
||||
(cellPos.Y + 2 > allowedStampRegion.CFrame.p.Y + allowedStampRegion.Size.Y / 2) or
|
||||
|
|
@ -1563,8 +1573,8 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
autoWedgeClusterParts = true
|
||||
|
||||
|
||||
if stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
|
||||
clusterMaterial = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
|
||||
if stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
|
||||
clusterMaterial = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
|
||||
if clusterMaterial\IsA "Vector3Value"
|
||||
clusterType = clusterMaterial.Value.Y
|
||||
clusterOrientation = clusterMaterial.Value.Z
|
||||
|
|
@ -1577,7 +1587,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
HighScalabilityLine.Start and
|
||||
((HighScalabilityLine.Dimensions > 1) or (line and line.magnitude > 0))
|
||||
|
||||
startCell = game.Workspace.Terrain\WorldToCell(HighScalabilityLine.Start)
|
||||
startCell = game.Workspace.Terrain\WorldToCell HighScalabilityLine.Start
|
||||
xInc = { 0, 0, 0 }
|
||||
yInc = { 0, 0, 0 }
|
||||
zInc = { 0, 0, 0 }
|
||||
|
|
@ -1595,20 +1605,20 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
|
||||
lines = {}
|
||||
if HighScalabilityLine.Dimensions > 1
|
||||
table.insert(lines, HighScalabilityLine.MoreLines[1])
|
||||
table.insert lines, HighScalabilityLine.MoreLines[1]
|
||||
|
||||
if line and line.magnitude > 0
|
||||
table.insert(lines, line)
|
||||
table.insert lines, line
|
||||
|
||||
if HighScalabilityLine.Dimensions > 2
|
||||
table.insert(lines, HighScalabilityLine.MoreLines[2])
|
||||
table.insert lines, HighScalabilityLine.MoreLines[2]
|
||||
|
||||
|
||||
for i = 1, #lines
|
||||
lines[i] = Vector3.new(
|
||||
math.floor(lines[i].X + 0.5),
|
||||
math.floor(lines[i].Y + 0.5),
|
||||
math.floor(lines[i].Z + 0.5)
|
||||
math.floor lines[i].Z + 0.5
|
||||
) -- round to integers
|
||||
|
||||
if lines[i].X > 0
|
||||
|
|
@ -1627,7 +1637,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
zInc[i] = -1
|
||||
|
||||
|
||||
incrementVect[i] = Vector3.new(xInc[i], yInc[i], zInc[i])
|
||||
incrementVect[i] = Vector3.new xInc[i], yInc[i], zInc[i]
|
||||
if incrementVect[i].magnitude < 0.9
|
||||
incrementVect[i] = nil
|
||||
|
||||
|
|
@ -1639,8 +1649,8 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
lines[3] = Vector3.new 0, 0, 0
|
||||
|
||||
|
||||
waterForceTag = stampData.CurrentParts\FindFirstChild("WaterForceTag", true)
|
||||
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild("WaterForceDirectionTag", true)
|
||||
waterForceTag = stampData.CurrentParts\FindFirstChild "WaterForceTag", true
|
||||
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild "WaterForceDirectionTag", true
|
||||
|
||||
while stepVect[3].magnitude * 4 <= lines[3].magnitude
|
||||
outerStepVectIndex = 1
|
||||
|
|
@ -1712,7 +1722,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
|
||||
innerStepVectIndex += 1
|
||||
else
|
||||
stepVect[2] = Vector3.new(1, 0, 0)
|
||||
stepVect[2] = Vector3.new 1, 0, 0
|
||||
innerStepVectIndex = 4 -- skip all remaining loops
|
||||
|
||||
if stepVect[2].magnitude * 4 > lines[2].magnitude
|
||||
|
|
@ -1754,7 +1764,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
return false
|
||||
|
||||
if not Mouse\IsA "Mouse"
|
||||
error("Error: RbxStamper.DoStamperMouseUp: Mouse is of type", Mouse.className, "should be of type Mouse")
|
||||
error "Error: RbxStamper.DoStamperMouseUp: Mouse is of type", Mouse.className, "should be of type Mouse"
|
||||
return false
|
||||
|
||||
|
||||
|
|
@ -1782,13 +1792,11 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
canStamp = true
|
||||
checkHighScalabilityStamp = true
|
||||
else
|
||||
canStamp, checkHighScalabilityStamp = t.CanEditRegion(stampData.CurrentParts, allowedStampRegion)
|
||||
canStamp, checkHighScalabilityStamp = t.CanEditRegion stampData.CurrentParts, allowedStampRegion
|
||||
|
||||
|
||||
if not canStamp
|
||||
if stampFailedFunc
|
||||
stampFailedFunc!
|
||||
|
||||
stampFailedFunc?!
|
||||
return false
|
||||
|
||||
|
||||
|
|
@ -1799,25 +1807,23 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
|
||||
|
||||
-- recheck if we can stamp, as we just moved part
|
||||
canStamp, checkHighScalabilityStamp = t.CanEditRegion(stampData.CurrentParts, allowedStampRegion)
|
||||
canStamp, checkHighScalabilityStamp = t.CanEditRegion stampData.CurrentParts, allowedStampRegion
|
||||
if not canStamp
|
||||
if stampFailedFunc
|
||||
stampFailedFunc!
|
||||
|
||||
stampFailedFunc?!
|
||||
return false
|
||||
|
||||
|
||||
-- Prevent part from being stamped on top of a player
|
||||
|
||||
minBB, maxBB = getBoundingBoxInWorldCoordinates(stampData.CurrentParts)
|
||||
minBB, maxBB = getBoundingBoxInWorldCoordinates stampData.CurrentParts
|
||||
|
||||
-- HotThoth's note: Now that above CurrentParts positioning has been commented out, to be truly correct, we would need to use the
|
||||
-- value of configFound from the previous onStamperMouseMove call which moved the CurrentParts
|
||||
-- Shouldn't this be true when lastTargetCFrame has been set and false otherwise?
|
||||
configFound, targetCFrame = findConfigAtMouseTarget(Mouse, stampData)
|
||||
configFound, targetCFrame = findConfigAtMouseTarget Mouse, stampData
|
||||
|
||||
if configFound and not HighScalabilityLine.Adorn.Parent
|
||||
if clusterPartsInRegion(minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector)
|
||||
if clusterPartsInRegion minBB + insertBoundingBoxOverlapVector, maxBB - insertBoundingBoxOverlapVector
|
||||
flashRedBox!
|
||||
return false
|
||||
|
||||
|
|
@ -1829,7 +1835,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
)
|
||||
|
||||
for b = 1, #blockingParts
|
||||
if isBlocker(blockingParts[b])
|
||||
if isBlocker blockingParts[b]
|
||||
flashRedBox!
|
||||
return false
|
||||
|
||||
|
|
@ -1893,22 +1899,22 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
-- if target point is in cluster, just use cluster\SetCell
|
||||
if isMegaClusterPart!
|
||||
-- if targetCFrame is inside cluster, just set that cell to 1 and return
|
||||
--cellPos = cluster\WorldToCell(targetCFrame.p)
|
||||
--cellPos = cluster\WorldToCell targetCFrame.p
|
||||
|
||||
local cellPos
|
||||
if stampData.CurrentParts\IsA "Model"
|
||||
cellPos = cluster\WorldToCell(stampData.CurrentParts\GetModelCFrame!.p)
|
||||
cellPos = cluster\WorldToCell stampData.CurrentParts\GetModelCFrame!.p
|
||||
else
|
||||
cellPos = cluster\WorldToCell(stampData.CurrentParts.CFrame.p)
|
||||
cellPos = cluster\WorldToCell stampData.CurrentParts.CFrame.p
|
||||
|
||||
|
||||
cMax = game.Workspace.Terrain.MaxExtents.Max
|
||||
cMin = game.Workspace.Terrain.MaxExtents.Min
|
||||
|
||||
if checkTerrainBlockCollisions(cellPos, false)
|
||||
clusterValues = stampData.CurrentParts\FindFirstChild("ClusterMaterial", true)
|
||||
waterForceTag = stampData.CurrentParts\FindFirstChild("WaterForceTag", true)
|
||||
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild("WaterForceDirectionTag", true)
|
||||
if checkTerrainBlockCollisions cellPos, false
|
||||
clusterValues = stampData.CurrentParts\FindFirstChild "ClusterMaterial", true
|
||||
waterForceTag = stampData.CurrentParts\FindFirstChild "WaterForceTag", true
|
||||
waterForceDirectionTag = stampData.CurrentParts\FindFirstChild "WaterForceDirectionTag", true
|
||||
|
||||
if cellPos.X >= cMin.X and
|
||||
cellPos.Y >= cMin.Y and
|
||||
|
|
@ -1944,7 +1950,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
clusterValues.Value.Z
|
||||
)
|
||||
else
|
||||
cluster\SetCell(cellPos.X, cellPos.Y, cellPos.Z, clusterValues.Value, 0, 0)
|
||||
cluster\SetCell cellPos.X, cellPos.Y, cellPos.Z, clusterValues.Value, 0, 0
|
||||
|
||||
|
||||
autoWedgeClusterParts = false
|
||||
|
|
@ -1957,7 +1963,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
game.Workspace.Terrain\AutowedgeCells(
|
||||
Region3int16.new(
|
||||
Vector3int16.new(cellPos.x - 1, cellPos.y - 1, cellPos.z - 1),
|
||||
Vector3int16.new(cellPos.x + 1, cellPos.y + 1, cellPos.z + 1)
|
||||
Vector3int16.new cellPos.x + 1, cellPos.y + 1, cellPos.z + 1
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -1978,12 +1984,10 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
|
||||
|
||||
getPlayer = ->
|
||||
if game\FindFirstChild "Players"
|
||||
if game.Players["LocalPlayer"]
|
||||
return game.Players.LocalPlayer
|
||||
|
||||
|
||||
return nil
|
||||
if game\FindFirstChild"Players" and
|
||||
game.Players["LocalPlayer"]
|
||||
|
||||
return game.Players.LocalPlayer
|
||||
|
||||
|
||||
-- Post process: after positioning the part or model, restore transparency, material, anchored and collide states and create joints
|
||||
|
|
@ -1992,10 +1996,10 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
-- Tyler's magical hack-code for allowing/preserving clones of both Surface and Manual Welds... just don't ask X<
|
||||
manualWeldTable = {}
|
||||
manualWeldParentTable = {}
|
||||
saveTheWelds(stampData.CurrentParts, manualWeldTable, manualWeldParentTable)
|
||||
saveTheWelds stampData.CurrentParts, manualWeldTable, manualWeldParentTable
|
||||
stampData.CurrentParts\BreakJoints!
|
||||
stampData.CurrentParts\MakeJoints!
|
||||
restoreTheWelds(manualWeldTable, manualWeldParentTable)
|
||||
restoreTheWelds manualWeldTable, manualWeldParentTable
|
||||
|
||||
|
||||
-- if it's a model, we also want to fill in the playerID and playerName tags, if it has those (e.g. for the friend-only door)
|
||||
|
|
@ -2017,22 +2021,19 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
-- ...and tag all inserted models for subsequent origin identification
|
||||
-- if no RobloxModel tag already exists, then add it.
|
||||
if not stampData.CurrentParts\FindFirstChild"RobloxModel"?
|
||||
stringTag = Instance.new "BoolValue"
|
||||
stringTag.Name = "RobloxModel"
|
||||
stringTag.Parent = stampData.CurrentParts
|
||||
New "BoolValue", "RobloxModel"
|
||||
Parent: stampData.CurrentParts
|
||||
|
||||
if not stampData.CurrentParts\FindFirstChild"RobloxStamper"?
|
||||
stringTag2 = Instance.new "BoolValue"
|
||||
stringTag2.Name = "RobloxStamper"
|
||||
stringTag2.Parent = stampData.CurrentParts
|
||||
New "BoolValue", "RobloxStamper"
|
||||
Parent: stampData.CurrentParts
|
||||
|
||||
|
||||
else
|
||||
stampData.CurrentParts\BreakJoints!
|
||||
if not stampData.CurrentParts\FindFirstChild"RobloxStamper"?
|
||||
stringTag2 = Instance.new "BoolValue"
|
||||
stringTag2.Name = "RobloxStamper"
|
||||
stringTag2.Parent = stampData.CurrentParts
|
||||
New "BoolValue", "RobloxStamper"
|
||||
Parent: stampData.CurrentParts
|
||||
|
||||
|
||||
-- make sure all the joints are activated before restoring anchor states
|
||||
|
|
@ -2061,7 +2062,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
|
||||
|
||||
for part, surfaces in pairs stampData.SurfaceTypeTable
|
||||
loadSurfaceTypes(part, surfaces)
|
||||
loadSurfaceTypes part, surfaces
|
||||
|
||||
|
||||
if isMegaClusterPart!
|
||||
|
|
@ -2069,21 +2070,21 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
|
||||
|
||||
-- re-enable all seats
|
||||
setSeatEnabledStatus(stampData.CurrentParts, true)
|
||||
setSeatEnabledStatus stampData.CurrentParts, true
|
||||
|
||||
stampData.TransparencyTable = nil
|
||||
stampData.ArchivableTable = nil
|
||||
stampData.MaterialTable = nil
|
||||
stampData.CanCollideTable = nil
|
||||
stampData.AnchoredTable = nil
|
||||
stampData.SurfaceTypeTable = nil
|
||||
with stampData
|
||||
.TransparencyTable = nil
|
||||
.ArchivableTable = nil
|
||||
.MaterialTable = nil
|
||||
.CanCollideTable = nil
|
||||
.AnchoredTable = nil
|
||||
.SurfaceTypeTable = nil
|
||||
|
||||
-- ...and tag all inserted models for subsequent origin identification
|
||||
-- if no RobloxModel tag already exists, then add it.
|
||||
if not stampData.CurrentParts\FindFirstChild"RobloxModel"?
|
||||
stringTag = Instance.new "BoolValue"
|
||||
stringTag.Name = "RobloxModel"
|
||||
stringTag.Parent = stampData.CurrentParts
|
||||
New "BoolValue", "RobloxModel"
|
||||
Parent: stampData.CurrentParts
|
||||
|
||||
|
||||
-- and make sure we don't delete it, now that it's not a ghost part
|
||||
|
|
@ -2141,7 +2142,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
isPositive *= -1
|
||||
whichSurface *= -1
|
||||
|
||||
surfaceNormal = isPositive * modelCFrame\vectorToWorldSpace(AXIS_VECTORS[whichSurface])
|
||||
surfaceNormal = isPositive * modelCFrame\vectorToWorldSpace AXIS_VECTORS[whichSurface]
|
||||
|
||||
for i = 1, #parts
|
||||
currPart = parts[i]
|
||||
|
|
@ -2178,9 +2179,7 @@ t.SetupStamperDragger = (modelToStamp, Mouse, StampInModel, AllowedStampRegion,
|
|||
resumeStamper = ->
|
||||
clone, parts = prepareModel modelToStamp
|
||||
|
||||
if not clone or not parts
|
||||
return
|
||||
|
||||
return if not clone or not parts
|
||||
|
||||
-- if we have unjoinable faces, then we want to change those surfaces to be Unjoinable
|
||||
unjoinableTag = clone\FindFirstChild "UnjoinableFaces", true
|
||||
|
|
|
|||
|
|
@ -223,9 +223,9 @@ toggleBackpack = ->
|
|||
backpackButton.Visible = true
|
||||
loadoutBackground.Visible = true
|
||||
if frame\GetChildren![1]\IsA "ImageButton"
|
||||
imgButton = frame\GetChildren![1]
|
||||
imgButton.Active = true
|
||||
imgButton.Draggable = false
|
||||
with frame\GetChildren![1]
|
||||
.Active = true
|
||||
.Draggable = false
|
||||
|
||||
|
||||
activateBackpack = ->
|
||||
|
|
|
|||
|
|
@ -1021,10 +1021,10 @@ Chat.IsTouchDevice ==>
|
|||
-- Chat.ScrollQueue = (value) =>
|
||||
-- for i = 1, #@MessageQueue
|
||||
-- if @MessageQueue[i]
|
||||
-- for _, label in pairs(@MessageQueue[i])
|
||||
-- for _, label in pairs @MessageQueue[i]
|
||||
-- next = @MessageQueue[i].Next
|
||||
-- previous = @MessageQueue[i].Previous
|
||||
-- if label and label\IsA('TextLabel') or label\IsA('TextButton')
|
||||
-- if label and label\IsA('TextLabel') or label\IsA 'TextButton'
|
||||
-- if value > 0 and previous and previous['Message']
|
||||
-- label.Position = previous['Message'].Position
|
||||
-- elseif value < 1 and next['Message']
|
||||
|
|
@ -1039,7 +1039,7 @@ Chat.UpdateQueue = (field, diff) =>
|
|||
if label and type(label) ~= "table" and type(label) ~= "number"
|
||||
if label\IsA"TextLabel" or label\IsA "TextButton"
|
||||
if diff
|
||||
label.Position = label.Position - UDim2.new(0, 0, diff, 0)
|
||||
label.Position = label.Position - UDim2.new 0, 0, diff, 0
|
||||
else
|
||||
if field == @MessageQueue[i]
|
||||
label.Position = UDim2.new(
|
||||
|
|
@ -1148,17 +1148,17 @@ Chat.UpdateChat = (cPlayer, message) =>
|
|||
|
||||
heightField = mLabel.TextBounds.Y
|
||||
|
||||
mLabel.Size = UDim2.new(1, 0, heightField/@RenderFrame.AbsoluteSize.Y, 0)
|
||||
mLabel.Size = UDim2.new 1, 0, heightField/@RenderFrame.AbsoluteSize.Y, 0
|
||||
pLabel.Size = mLabel.Size
|
||||
|
||||
diff = mLabel.Size.Y.Scale - prevYScale
|
||||
|
||||
Chat\UpdateQueue(@MessageQueue[i], diff)
|
||||
Chat\UpdateQueue @MessageQueue[i], diff
|
||||
end ]]
|
||||
|
||||
-- Chat.ApplyFilter = (str) =>
|
||||
-- --[[for _, word in pair(@Filter_List)
|
||||
-- if string.find(str, word)
|
||||
-- --[[for _, word in pair @Filter_List
|
||||
-- if string.find str, word
|
||||
-- str\gsub word, '@#$^'
|
||||
-- ]]
|
||||
|
||||
|
|
@ -1232,12 +1232,10 @@ Chat.CreateMessage = (cPlayer, message) =>
|
|||
else
|
||||
pLabel.TextColor3 = cPlayer.TeamColor.Color
|
||||
|
||||
local nString
|
||||
|
||||
if not @CachedSpaceStrings_List[pName]
|
||||
nString = Chat\ComputeSpaceString pLabel
|
||||
nString = if not @CachedSpaceStrings_List[pName]
|
||||
Chat\ComputeSpaceString pLabel
|
||||
else
|
||||
nString = @CachedSpaceStrings_List[pName]
|
||||
@CachedSpaceStrings_List[pName]
|
||||
|
||||
mLabel = New "TextLabel", "#{pName} - message"
|
||||
-- Max is 3 lines
|
||||
|
|
@ -1299,7 +1297,7 @@ Chat.FindButtonTree = (scButton, rootList) =>
|
|||
list = rootList[button]
|
||||
elseif type(rootList[button]) == "table"
|
||||
list = Chat\FindButtonTree scButton, rootList[button]
|
||||
return list
|
||||
list
|
||||
|
||||
Chat.ToggleSafeChatMenu = (scButton) =>
|
||||
list = Chat\FindButtonTree scButton, @SafeChatTree
|
||||
|
|
@ -1308,7 +1306,7 @@ Chat.ToggleSafeChatMenu = (scButton) =>
|
|||
if button\IsA"TextButton" or button\IsA "ImageButton"
|
||||
button.Visible = not button.Visible
|
||||
return true
|
||||
return false
|
||||
false
|
||||
|
||||
Chat.CreateSafeChatOptions = (list, rootButton) =>
|
||||
text_List = {}
|
||||
|
|
@ -1338,7 +1336,7 @@ Chat.CreateSafeChatOptions = (list, rootButton) =>
|
|||
if type(list[msg]) == "table"
|
||||
text_List[rootButton][chatText] = Chat\CreateSafeChatOptions list[msg], chatText
|
||||
-- else
|
||||
-- --table.insert(text_List[chatText], true)
|
||||
-- --table.insert text_List[chatText], true
|
||||
chatText.MouseEnter\connect ->
|
||||
Chat\ToggleSafeChatMenu chatText
|
||||
|
||||
|
|
@ -1351,7 +1349,7 @@ Chat.CreateSafeChatOptions = (list, rootButton) =>
|
|||
-- for i, v in pairs lList
|
||||
try
|
||||
PlayersService\Chat lList[1]
|
||||
return text_List
|
||||
text_List
|
||||
|
||||
Chat.CreateSafeChatGui ==>
|
||||
@SafeChatFrame = New "Frame", "SafeChatFrame"
|
||||
|
|
@ -1455,7 +1453,7 @@ Chat.CreateChatBar ==>
|
|||
ClearTextOnFocus: false
|
||||
|
||||
-- Engine has code to offset the entire world, so if we do it by -20 pixels nothing gets in our chat's way
|
||||
--GuiService\SetGlobalSizeOffsetPixel(0, -20)
|
||||
--GuiService\SetGlobalSizeOffsetPixel 0, -20
|
||||
success, error = try
|
||||
GuiService\SetGlobalGuiInset 0, 0, 0, 20
|
||||
if not success
|
||||
|
|
@ -1600,7 +1598,7 @@ Chat.FindMessageInSafeChat = (message, list) =>
|
|||
-- Just a wrapper around our PlayerChatted event
|
||||
Chat.PlayerChatted = (...) =>
|
||||
args = { ... }
|
||||
-- argCount = select("#", ...)
|
||||
-- argCount = select "#", ...
|
||||
local player, message
|
||||
-- This doesn't look very good, but what else to do?
|
||||
if args[2]
|
||||
|
|
@ -1624,7 +1622,7 @@ Chat.PlayerChatted = (...) =>
|
|||
Chat.CullThread ==>
|
||||
while true
|
||||
if #@MessageQueue > 0
|
||||
for _, field in pairs(@MessageQueue)
|
||||
for _, field in pairs @MessageQueue
|
||||
if field["SpawnTime"] and
|
||||
field["Player"] and
|
||||
field["Message"] and
|
||||
|
|
|
|||
12
yue/host.yue
12
yue/host.yue
|
|
@ -29,10 +29,8 @@ getKillerOfHumanoidIfStillInGame = (humanoid) ->
|
|||
tag = humanoid\findFirstChild "creator"
|
||||
|
||||
-- find player with name on tag
|
||||
if tag
|
||||
killer = tag.Value
|
||||
if killer.Parent -- killer still in game
|
||||
return killer
|
||||
if tag and tag.Value.Parent -- killer still in game
|
||||
return tag.Value
|
||||
|
||||
|
||||
-- send kill and death stats when a player dies
|
||||
|
|
@ -82,7 +80,7 @@ try
|
|||
|
||||
scriptContext.ScriptsDisabled = true
|
||||
|
||||
-- game\SetPlaceID(nil, false)
|
||||
-- game\SetPlaceID nil, false
|
||||
game\GetService"ChangeHistoryService"\SetEnabled false
|
||||
|
||||
-- establish this peer as the Server
|
||||
|
|
@ -99,7 +97,7 @@ if url?
|
|||
game\GetService"ContentProvider"\SetBaseUrl "#{url}/"
|
||||
|
||||
-- try
|
||||
-- game\GetService"Players"\SetChatFilterUrl(url .. "/Game/ChatFilter.ashx")
|
||||
-- game\GetService"Players"\SetChatFilterUrl url .. "/Game/ChatFilter.ashx"
|
||||
|
||||
-- game\GetService"BadgeService"\SetPlaceId placeId
|
||||
if access?
|
||||
|
|
@ -134,7 +132,7 @@ try
|
|||
game\GetService"NetworkServer"\SetIsPlayerAuthenticationRequired true
|
||||
|
||||
settings!.Diagnostics.LuaRamLimit = 0
|
||||
--settings!.Network\SetThroughputSensitivity(0.08, 0.01)
|
||||
--settings!.Network\SetThroughputSensitivity 0.08, 0.01
|
||||
--settings!.Network.SendRate = 35
|
||||
--settings!.Network.PhysicsSend = 0 -- 1==RoundRobin
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue