Загрузка данных


--Jump Pack
local HoldToBoost = false --Turn this on at your own risk
local BoosterToggleCooldown = 0
local BoosterTime = 2
local BoosterPush = 3 --Default 2
local BoosterPower = 100000
local BoosterKeybind = "Q"
local BoosterTeams = {
	"Players",
}

local thrusterActivated = {}
local thrusters = {}
local function activateBooster(playername)
	local pack = thrusters[playername]
	if thrusterActivated[playername] then announce(playername, "Cannot use this yet", true) return end
	pack:Fire()
	pack.Parent.Fire.Enabled = true
	pack.Parent.Sound:Play()
	if not HoldToBoost then
		thrusterActivated[playername] = true
		pack.MaxThrust = BoosterPower
		pack.Target = pack.Parent.Parent.Gravity
		task.wait(BoosterTime)
		pack.MaxThrust = BoosterPower/45
		task.wait(2)
		pack:Abort()
		pack.Parent.Fire.Enabled = false
		pack.Parent.Sound:Stop()
		task.wait(BoosterToggleCooldown)
		thrusterActivated[playername] = false
	end
end
local function deactivateBooster(playername)
	if thrusterActivated[playername] then return end
	if HoldToBoost then 
		thrusters[playername]:Abort() 
	thrusters[playername].Parent.Fire.Enabled = false
	thrusters[playername].Parent.Sound:Stop()
	end
end

local folder = f("AttachFolder")
if not folder then
	folder = Instance.new("Folder")
	f(folder)
	folder.Name = "AttachFolder"
end
local function weld(part0, part1) local w = Instance.new("WeldConstraint", folder) w.Part0 = part0 w.Part1 = part1 end
for _, part in ipairs(folder:GetChildren()) do part:Destroy() end
local function attachPart(plr, part)
	local plrpos = getPlayerPosition(plr)
	if not part then
		local part = Instance.new("Part", folder)
		part.Name = plr .. "JumpPack"
		part.Material = "Air"
		part.CFrame = CFrame.new(0,0,0)
		part.Size = Vector3.new(2,0.2,1)
		part.CanCollide = false
		part.Transparency = 0
		part.CanQuery = false
		part.TopSurface = Enum.SurfaceType.Glue
		attachPart(plr, part)
	else
		if #part:GetJoints() >= 1 then
			part.CanCollide = false
			part.CanQuery = true
			local model = Instance.new("Model", folder)
			model.Name = "Jump Pack"
			part.Parent = model
			local mesh = Instance.new("SpecialMesh", part)
			mesh.MeshType = Enum.MeshType.FileMesh
			mesh.MeshId = "rbxassetid://10937187718"
			mesh.TextureId = "rbxassetid://10937188261"
			mesh.Offset = Vector3.new(0, 0.8, 0)
			local thruster = Instance.new("Part", model)
			thruster.CFrame = part.CFrame * CFrame.new(0, 0.5, -1)
			thruster.Material = "Air"
			thruster.CanCollide = false
			thruster.Transparency = 1
			thruster.CanQuery = false
			thruster.Size = Vector3.new(2, 0.1, 1)
			local sound = Instance.new("Sound", thruster)
			sound.Name = "Sound"
			sound.SoundId = "rbxassetid://98911036161094"
			sound.Volume = 2
			sound.Looped = true
			local fire = Instance.new("ParticleEmitter", thruster)
			fire.Name = "Fire"
			fire.Texture = "rbxassetid://6673021984"
  		  fire.Color = ColorSequence.new{
    		    ColorSequenceKeypoint.new(0, Color3.fromRGB(110, 153, 202)),
    	 	   ColorSequenceKeypoint.new(0.4, Color3.fromRGB(255, 170, 60)),
    	   	 ColorSequenceKeypoint.new(1, Color3.fromRGB(120, 40, 10))
   		 }
    		fire.Transparency = NumberSequence.new{
    		    NumberSequenceKeypoint.new(0, 0.1),
  		      NumberSequenceKeypoint.new(0.5, 0.2),
 		       NumberSequenceKeypoint.new(1, 1),
  		  }
		    fire.Size = NumberSequence.new{
 	 	      NumberSequenceKeypoint.new(0, 1),
 	  	     NumberSequenceKeypoint.new(0.5, 5),
  	 	     NumberSequenceKeypoint.new(1, 0),
 		   }
 		   fire.Lifetime = NumberRange.new(0.25)
 		   fire.Rate = 75
 		   fire.Speed = NumberRange.new(50)
 		   fire.SpreadAngle = Vector2.new(10, 10)
 	  	 fire.Acceleration = Vector3.new(0, 2, 0)
 	 	  fire.EmissionDirection = Enum.NormalId.Bottom
  		 fire.Rotation = NumberRange.new(0, 360)
  	 	 fire.LightEmission = 1
	    	fire.Enabled = false
			local gravPart = Instance.new("Part", model)
			gravPart.Name = "Gravity"
			gravPart.CFrame = part.CFrame * CFrame.new(0, 3, BoosterPush - 1)
			gravPart.Size = Vector3.new(1,1,1)
			gravPart.CanCollide = false
			gravPart.Transparency = 1
			gravPart.Material = "Air"
			gravPart.CanQuery = false
			weld(gravPart, part)
			local thrust = Instance.new("RocketPropulsion", thruster)
			thrust.CartoonFactor = 0
			thrust.Target = gravPart
			thrust.MaxThrust = BoosterPower
			thrusters[plr] = thrust
			local prompt = Instance.new("ProximityPrompt", part)
			prompt.AutoLocalize = true
			prompt.ActionText = "Boost"
			prompt.KeyboardKeyCode = BoosterKeybind
			prompt.ClickablePrompt = false
			prompt.RequiresLineOfSight = true
			prompt.UIOffset = Vector2.new(0, -100)
			prompt.Triggered:Connect(activateBooster)
			prompt.TriggerEnded:Connect(deactivateBooster)
			weld(thruster, part)
			return 
		end
		part.CFrame = plrpos * CFrame.new(0, -0.7, 0) * CFrame.Angles(0, math.rad(180), 0)
		part:MakeJoints(); task.wait(); task.spawn(attachPart,plr, part)
	end
end

for _, item in ipairs(folder:GetDescendants()) do item:Destroy() end
for _, player in ipairs(getPlayers()) do
	local team = getTeam(player)
	if table.find(BoosterTeams, team) then
		attachPart(player)
	end
end
event("spawned", function(data)
	local playername = data.Value
	local team = getTeam(playername)
	if table.find(BoosterTeams, team) then
		attachPart(playername)
	end
end)