The first time I found out how to make a tree that gave you an item on click it only worked in test mode,and the flight script I found also only worked in test mode,when I started a server when you used the tool you would just float,does anybody know how to fix this?If you need to look at the scripts they are down below.
Tree Script
function onclicked(playerwhoclicked) -- Create a click detector in the part in order to be able to detect clicks. local click_detector = Instance.new('ClickDetector', script.Parent) -- Give the tool to the player when the button is clicked click_detector.MouseClick:connect(function(player) game.ServerStorage.Weapon1:Clone()game.ServerStorage.Weapon1.Parent = player:FindFirstChild("Backpack") end) end ````
Flight Script
Name = "Fly" pi = 3.141592653589793238462643383279502884197163993751 a = 0 s = 0 ndist = 13 rs = 0.025 siz = Vector3.new(1, 1, 1) form = 0 flow = {} function CFC(P1,P2) local Place0 = CFrame.new(P1.CFrame.x,P1.CFrame.y,P1.CFrame.z) local Place1 = P2.Position P1.Size = Vector3.new(P1.Size.x,P1.Size.y,(Place0.p - Place1).magnitude) P1.CFrame = CFrame.new((Place0.p + Place1)/2,Place0.p) end function checktable(table, parentneeded) local i local t = {} for i = 1, #table do if table[i] ~= nil then if string.lower(type(table[i])) == "userdata" then if parentneeded == true then if table[i].Parent ~= nil then t[#t + 1] = table[i] end else t[#t + 1] = table[i] end end end end return t end if script.Parent.Name ~= Name then User = game:service("Players").Nineza HB = Instance.new("HopperBin") HB.Name = Name HB.Parent = User.StarterGear script.Parent = HB User.Character:BreakJoints() end speed = 100 script.Parent.Selected:connect(function(mar) s = 1 torso = script.Parent.Parent.Parent.Character.Torso LeftShoulder = torso["Left Shoulder"] RightShoulder = torso["Right Shoulder"] LeftHip = torso["Left Hip"] RightHip = torso["Right Hip"] human = script.Parent.Parent.Parent.Character.Humanoid bv = Instance.new("BodyVelocity") bv.maxForce = Vector3.new(0,math.huge,0) bv.velocity = Vector3.new(0,0,0) bv.Parent = torso bg = Instance.new("BodyGyro") bg.maxTorque = Vector3.new(0,0,0) bg.Parent = torso connection = mar.Button1Down:connect(function() a = 1 bv.maxForce = Vector3.new(math.huge,math.huge,math.huge) bg.maxTorque = Vector3.new(900000,900000,900000) bg.cframe = CFrame.new(torso.Position,mar.hit.p) * CFrame.fromEulerAnglesXYZ(math.rad(-90),0,0) bv.velocity = CFrame.new(torso.Position,mar.hit.p).lookVector * speed moveconnect = mar.Move:connect(function() bg.maxTorque = Vector3.new(900000,900000,900000) bg.cframe = CFrame.new(torso.Position,mar.hit.p) * CFrame.fromEulerAnglesXYZ(math.rad(-90),0,0) bv.velocity = CFrame.new(torso.Position,mar.hit.p).lookVector * speed end) upconnect = mar.Button1Up:connect(function() a = 0 moveconnect:disconnect() upconnect:disconnect() bv.velocity = Vector3.new(0,0,0) bv.maxForce = Vector3.new(0,math.huge,0) torso.Velocity = Vector3.new(0,0,0) bg.cframe = CFrame.new(torso.Position,torso.Position + Vector3.new(torso.CFrame.lookVector.x,0,torso.CFrame.lookVector.z)) wait(1) end) end) while s == 1 do wait(0.02) flow = checktable(flow, true) local i for i = 1,#flow do flow[i].Transparency = flow[i].Transparency + rs if flow[i].Transparency >= 1 then flow[i]:remove() end end if a == 1 then flow[#flow + 1] = Instance.new("Part") local p = flow[#flow] p.formFactor = form p.Size = siz p.Anchored = true p.CanCollide = false p.TopSurface = 0 p.BottomSurface = 0 if #flow - 1 > 0 then local pr = flow[#flow - 1] p.Position = torso.Position - torso.Velocity/ndist CFC(p, pr) else p.CFrame = CFrame.new(torso.Position - torso.Velocity/ndist, torso.CFrame.lookVector) end p.BrickColor = BrickColor.new("Cyan") p.Transparency = 0.7 p.Parent = torso local marm = Instance.new("BlockMesh") marm.Scale = Vector3.new(1.9, 0.9, 1.725) marm.Parent = p local amplitude local frequency amplitude = pi desiredAngle = amplitude RightShoulder.MaxVelocity = 0.4 LeftShoulder.MaxVelocity = 0.4 RightHip.MaxVelocity = pi/10 LeftHip.MaxVelocity = pi/10 RightShoulder.DesiredAngle = desiredAngle LeftShoulder.DesiredAngle = -desiredAngle RightHip.DesiredAngle = 0 LeftHip.DesiredAngle = 0 end end end) script.Parent.Deselected:connect(function() a = 0 s = 0 bv:remove() bg:remove() if connection ~= nil then connection:disconnect() end if moveconnect ~= nil then moveconnect:disconnect() end if upconnect ~= nil then upconnect:disconnect() end while s == 0 do wait() if #flow > 0 then flow = checktable(flow, true) local i for i = 1,#flow do flow[i].Transparency = flow[i].Transparency + rs if flow[i].Transparency >= 1 then flow[i]:remove() end end end end end) while true do wait() if s == 1 then return end end script:remove()
I would just insert the ClickDetector
inside of what you want to click, and instead of using a function like so: function blahblah(paramater), do this: (assuming the script/localscript is inside of the model that's being clicked)
script.Parent.ClickDetector.MouseClick:connect(function(pWC) -- do stuff end)
That's to make sure that the ClickDetector
is actually there, and that the function is actually being called. I can't help you with the flying script, as I'm not too experienced with scripting, but I'm getting there.