Загрузка данных
local Players = game:GetService("Players")
local StarterPack = game:GetService("StarterPack")
local TOOL_NAME = "Stunt"
-- создаём инструмент
local template = StarterPack:FindFirstChild(TOOL_NAME)
if not template then
template = Instance.new("Tool")
template.Name = TOOL_NAME
template.RequiresHandle = true
template.CanBeDropped = false
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Size = Vector3.new(0.3, 0.3, 0.3)
handle.Transparency = 1
handle.CanCollide = false
handle.Parent = template
template.Parent = StarterPack
end
local function createScooter(player)
local character = player.Character
if not character then return end
local humanoid = character:FindFirstChildOfClass("Humanoid")
local hrp = character:FindFirstChild("HumanoidRootPart")
if not humanoid or not hrp or humanoid.Health <= 0 then
return
end
-- не создаём несколько самокатов одновременно
local existing = workspace:FindFirstChild("Stunt_" .. player.UserId)
if existing then
existing:Destroy()
end
local model = Instance.new("Model")
model.Name = "Stunt_" .. player.UserId
local function makePart(name, size, offset, color, material, shape)
local part = Instance.new("Part")
part.Name = name
part.Size = size
part.Color = color
part.Material = material or Enum.Material.Metal
part.Shape = shape or Enum.PartType.Block
part.Anchored = false
part.CanCollide = false
part.Position = hrp.Position + offset
part.Parent = model
return part
end
local black = Color3.fromRGB(25, 25, 30)
local cyan = Color3.fromRGB(0, 200, 255)
local deck = makePart(
"Deck",
Vector3.new(3, 0.18, 0.5),
Vector3.new(0, -2, 0),
black
)
model.PrimaryPart = deck
local function weld(part)
local constraint = Instance.new("WeldConstraint")
constraint.Part0 = deck
constraint.Part1 = part
constraint.Parent = deck
end
local frontWheel = makePart(
"FrontWheel",
Vector3.new(0.65, 0.65, 0.25),
Vector3.new(1.15, -2.18, 0),
black,
Enum.Material.Rubber,
Enum.PartType.Cylinder
)
frontWheel.Orientation = Vector3.new(0, 0, 90)
weld(frontWheel)
local rearWheel = makePart(
"RearWheel",
Vector3.new(0.65, 0.65, 0.25),
Vector3.new(-1.15, -2.18, 0),
black,
Enum.Material.Rubber,
Enum.PartType.Cylinder
)
rearWheel.Orientation = Vector3.new(0, 0, 90)
weld(rearWheel)
local fork = makePart(
"Fork",
Vector3.new(0.12, 0.8, 0.12),
Vector3.new(1.15, -1.55, 0),
cyan
)
weld(fork)
local stem = makePart(
"Stem",
Vector3.new(0.13, 1.5, 0.13),
Vector3.new(1.15, -0.75, 0),
black
)
weld(stem)
local bar = makePart(
"Handlebar",
Vector3.new(1.5, 0.12, 0.12),
Vector3.new(1.15, 0, 0),
cyan
)
weld(bar)
local stripe = makePart(
"DeckStripe",
Vector3.new(2.2, 0.025, 0.35),
Vector3.new(0, -1.89, 0),
cyan
)
weld(stripe)
-- сиденье для управления
local seat = Instance.new("VehicleSeat")
seat.Name = "RideSeat"
seat.Size = Vector3.new(1, 0.25, 0.7)
seat.Transparency = 1
seat.CanCollide = false
seat.Anchored = false
seat.CFrame = deck.CFrame * CFrame.new(0, 0.65, 0)
seat.Parent = model
weld(seat)
-- размещаем самокат перед игроком
local spawnCFrame = hrp.CFrame * CFrame.new(0, 0, -4)
model:PivotTo(CFrame.new(
spawnCFrame.Position.X,
math.max(spawnCFrame.Position.Y, 3),
spawnCFrame.Position.Z
))
model.Parent = workspace
-- пытаемся посадить игрока на самокат
task.wait(0.2)
if humanoid.Parent and seat.Parent then
seat:Sit(humanoid)
end
end
local function connectTool(tool)
if not tool:IsA("Tool") or tool.Name ~= TOOL_NAME then
return
end
if tool:GetAttribute("StuntConnected") then
return
end
tool:SetAttribute("StuntConnected", true)
tool.Activated:Connect(function()
local character = tool.Parent
local player = Players:GetPlayerFromCharacter(character)
if player then
createScooter(player)
end
end)
end
local function setupPlayer(player)
local backpack = player:WaitForChild("Backpack")
backpack.ChildAdded:Connect(connectTool)
for _, item in ipairs(backpack:GetChildren()) do
connectTool(item)
end
player.CharacterAdded:Connect(function()
task.wait(1)
for _, item in ipairs(backpack:GetChildren()) do
connectTool(item)
end
end)
end
-- подключаем игроков
Players.PlayerAdded:Connect(setupPlayer)
for _, player in ipairs(Players:GetPlayers()) do
task.spawn(setupPlayer, player)
end