Найти в Дзене

Исправление бага

Исправленный скрипт для движения поезда: local train = script.Parent local TweenService = game:GetService("TweenService") -- Используем CFrame для движения, а не только Position. local waypoints = {CFrame.new(0, 0, 0), CFrame.new(100, 0, 0), CFrame.new(200, 0, 0)} local tweenInfo = TweenInfo.new(10, Enum.EasingStyle.Linear) while true do for _, waypoint in ipairs(waypoints) do if train.PrimaryPart then local tween = TweenService:Create(train.PrimaryPart, tweenInfo, {CFrame = waypoint}) tween:Play() tween.Completed:Wait() else warn("У поезда отсутствует PrimaryPart!") break end end end Объяснение: Мы изменяем свойство CFrame у PrimaryPart поезда. Если у модели нет PrimaryPart, убедись, что ты установил его (выбери нужную деталь, нажми «Set PrimaryPart» в студии). Исправленный скрипт спавна деревни в левом углу: local ServerStorage = game:GetService("ServerStorage") local workspace = gam

Исправленный скрипт для движения поезда:

local train = script.Parent

local TweenService = game:GetService("TweenService")

-- Используем CFrame для движения, а не только Position.

local waypoints = {CFrame.new(0, 0, 0), CFrame.new(100, 0, 0), CFrame.new(200, 0, 0)}

local tweenInfo = TweenInfo.new(10, Enum.EasingStyle.Linear)

while true do

for _, waypoint in ipairs(waypoints) do

if train.PrimaryPart then

local tween = TweenService:Create(train.PrimaryPart, tweenInfo, {CFrame = waypoint})

tween:Play()

tween.Completed:Wait()

else

warn("У поезда отсутствует PrimaryPart!")

break

end

end

end

Объяснение:

Мы изменяем свойство CFrame у PrimaryPart поезда. Если у модели нет PrimaryPart, убедись, что ты установил его (выбери нужную деталь, нажми «Set PrimaryPart» в студии).

Исправленный скрипт спавна деревни в левом углу:

local ServerStorage = game:GetService("ServerStorage")

local workspace = game:GetService("Workspace")

local villages = {"Village"} -- если больше вариантов, добавь сюда их имена

local spawnRangeX = 1000 -- диапазон для X (левый угол: выбираем отрицательные значения)

local spawnRangeZ = 1000 -- диапазон для Z

function spawnVillage()

local villageName = villages[math.random(1, #villages)]

local villageModel = ServerStorage:FindFirstChild(villageName)

if villageModel then

local clone = villageModel:Clone()

clone.Parent = workspace

-- Спавним в левом углу, то есть x всегда отрицательный:

local x = math.random(-spawnRangeX, -spawnRangeX/2)

local z = math.random(-spawnRangeZ, spawnRangeZ)

if clone.PrimaryPart then

clone:SetPrimaryPartCFrame(CFrame.new(x, 0, z))

else

clone:MoveTo(Vector3.new(x, 0, z))

end

end

end

while true do

spawnVillage()

wait(60) -- каждые 60 секунд

end

Объяснение:

Мы изменили диапазон для оси X так, чтобы x всегда выбиралось в отрицательной части (от –spawnRangeX до –spawnRangeX/2). Это гарантирует, что деревня появится в левом углу (левее центра).