Загрузка данных
--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)