Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
1

Why arent the car respawning?

Asked by 3 years ago
    Cyliner.Size = Vector3.new(.2,Range.Value*2,Range.Value*2) --// Sets the size to the Range
    Cyliner.CFrame = Spawn.CFrame*CFrame.Angles(0,0,math.rad(90)) --// Rotates it and Positions it
    Cyliner.BrickColor = BrickColor.new("Bright blue") --// Makes the collor Bright blue
    Cyliner.CanCollide = false --// Makes that you cant touch the part
    Cyliner.Anchored = true --// Makes so the part doesnt get moved by physics
    Cyliner.Transparency = .5 --// Sets the transparency
    Cyliner.Parent = script.Parent --// sets the parent
end

Spawn.Transparency = 1 --// Makes the spawn invisible

local OldVehicle = VehicleValue.Value:Clone() --// Stores a copy of the vehicle
VehicleValue.Value:Destroy() --// Removes the vehicle

local Vehicle = OldVehicle:Clone() --// makes a copy of the copy
Vehicle.Parent = workspace.Vehicles --// Parents it to the vehicle folder in workspace
Vehicle:MakeJoints() --// makes sure it doesnt fall apart

while true do --// loop for checking if the vehicle is out of range
    wait()
    if Vehicle ~= nil then --// if the vehicle is not nil
        if (Vehicle.PrimaryPart.CFrame.p-Spawn.CFrame.p).magnitude >= Range.Value then --// checks if the vehicle is outside our range
            wait(Delay.Value) --// waits the set delay
            if (Vehicle.PrimaryPart.CFrame.p-Spawn.CFrame.p).magnitude >= Range.Value then --// checks again if the vehicle is gone
                Vehicle = OldVehicle:Clone() --// makes a copy of the copy
                Vehicle.Parent = workspace.Vehicles --// Parents it to the vehicle folder in workspace
                Vehicle:MakeJoints() --// makes sure it doesnt fall apart
            end
        end
    end
end


Car main

Car script

--Scripted by DermonDarble

local car = script.Parent
local stats = car.Configurations
local Raycast = require(script.RaycastModule)
local HasDriver = false
local mass = 0

for i, v in pairs(car:GetChildren()) do
    if v:IsA("BasePart") then
        mass = mass + (v:GetMass() * 196.2)
    end
end

local bodyPosition = car.Chassis.BodyPosition
local bodyGyro = car.Chassis.BodyGyro

--local bodyPosition = Instance.new("BodyPosition", car.Chassis)
--bodyPosition.MaxForce = Vector3.new()
--local bodyGyro = Instance.new("BodyGyro", car.Chassis)
--bodyGyro.MaxTorque = Vector3.new()

local function UpdateThruster(thruster)
    -- Raycasting
    local hit, position = Raycast.new(thruster.Position, thruster.CFrame:vectorToWorldSpace(Vector3.new(0, -1, 0)) * stats.Height.Value) --game.Workspace:FindPartOnRay(ray, car)
    local thrusterHeight = (position - thruster.Position).magnitude

    -- Wheel
    local wheelWeld = thruster:FindFirstChild("WheelWeld")
    wheelWeld.C0 = CFrame.new(0, -math.min(thrusterHeight, stats.Height.Value * 0.8) + (wheelWeld.Part1.Size.Y / 2), 0)
    -- Wheel turning
    local offset = car.Chassis.CFrame:inverse() * thruster.CFrame
    local speed = car.Chassis.CFrame:vectorToObjectSpace(car.Chassis.Velocity)
    if offset.Z < 0 then
        local direction = 1
        if speed.Z > 0 then
            direction = -1
        end
        wheelWeld.C0 = wheelWeld.C0 * CFrame.Angles(0, (car.Chassis.RotVelocity.Y / 2) * direction, 0)
    end

    -- Particles
    if hit and thruster.Velocity.magnitude >= 5 then
        wheelWeld.Part1.ParticleEmitter.Enabled = true
    else
        wheelWeld.Part1.ParticleEmitter.Enabled = false
    end
end

car.Event.OnServerEvent:Connect(function(Player)
    if Player and Player.Character then
        if (Player.Character.HumanoidRootPart.Position-car.DriveSeat.Position).magnitude <= car.Configurations.Range.Value then
            if not HasDriver then
                car.DriveSeat:Sit(Player.Character.Humanoid)
            end
        end
    end
end)

car.DriveSeat.Changed:connect(function(property)
    if property == "Occupant" then
        if car.DriveSeat.Occupant then
            car.EngineBlock.Running.Pitch = 1
            car.EngineBlock.Running:Play()
            local player = game.Players:GetPlayerFromCharacter(car.DriveSeat.Occupant.Parent)
            if player then
                HasDriver = true
                car.DriveSeat:SetNetworkOwner(player)
                local localCarScript = script.LocalCarScript:Clone()
                localCarScript.Parent = player.PlayerGui
                localCarScript.Car.Value = car
                localCarScript.Disabled = false
            end
        else
            HasDriver = false
            car.EngineBlock.Running:Stop()
        end
    end
end)

--spawn(function()
    while true do
        game:GetService("RunService").Stepped:wait()
        for i, part in pairs(car:GetChildren()) do
            if part.Name == "Thruster" then
                UpdateThruster(part)
            end
        end
        if car.DriveSeat.Occupant then
            local ratio = car.DriveSeat.Velocity.magnitude / stats.Speed.Value
            car.EngineBlock.Running.Pitch = 1 + ratio / 4
            bodyPosition.MaxForce = Vector3.new()
            bodyGyro.MaxTorque = Vector3.new()
        else
            local hit, position, normal = Raycast.new(car.Chassis.Position, car.Chassis.CFrame:vectorToWorldSpace(Vector3.new(0, -1, 0)) * stats.Height.Value)
            if hit and hit.CanCollide then
                bodyPosition.MaxForce = Vector3.new(mass / 5, math.huge, mass / 5)
                bodyPosition.Position = (CFrame.new(position, position + normal) * CFrame.new(0, 0, -stats.Height.Value + 0.5)).p
                bodyGyro.MaxTorque = Vector3.new(math.huge, 0, math.huge)
                bodyGyro.CFrame = CFrame.new(position, position + normal) * CFrame.Angles(-math.pi/2, 0, 0)
            else
                bodyPosition.MaxForce = Vector3.new()
                bodyGyro.MaxTorque = Vector3.new()
            end
        end
    end
--end)

1 answer

Log in to vote
0
Answered by 3 years ago

i think you should set the car primary part

Ad

Answer this question