У меня вопрос по игре Roblox. Игра работает нормально, пока персонаж не умрет. Затем случайные части локального скрипта перестают работать. Слишком долго объяснять, поэтому вот ссылка на игру:
https://web.roblox.com/games/4586742374/Times-Tables-Turf-War
Если вам интересно, обойдите доску и посмотрите, как колонны и строки загораются. Все работает Тогда пусть ваш персонаж d ie. Вы можете сделать это либо падая с края доски, либо стоя на платформе противника (если вы играете против кого-то). Более легкий путь - просто падение края. Когда ваш персонаж возрождается, платформы больше не загораются. Это очень странно, так как это буквально кусок кода, который сидит на локальном скрипте, который перестает работать. Может кто-нибудь объяснить, почему это происходит? tx
---- ОБНОВЛЕНИЕ ------
Это, кажется, происходит в высшей степени, когда вы играете против кого-то, а не самостоятельно, поэтому вам придется попробовать это против кого-то или симуляция множества игроков на локальном сервере.
Вот огромная функция, которую я получил, чтобы справиться с тем, что происходит, когда игрок стоит на платформе. Имейте в виду, что это практически первая страница рабочего кода, который я написал в Studio.
----- ОБНОВЛЕНИЕ2 ------------
Я пытался сделать несколько вещей, в том числе переместить скрипт в starterPlayerScripts (не решил проблему). Я думаю, что есть проблема со скриптом, который может загружаться до того, как персонаж будет готов. Кроме того, это не происходит, когда персонаж падает с края, это происходит только тогда, когда персонаж умирает «на земле», то есть со всеми частями тела, распадающимися. Повлияет ли это на способность Roblox правильно читать сценарий?
local hrp = char:WaitForChild("HumanoidRootPart")
game:GetService("RunService").Heartbeat:Connect(function()
local charpos = hrp.Position
for k, v in pairs (allParts) do
if (charpos - v.CFrame.Position).magnitude <= 6 then -- this is what happens if the player is standing on the platform----------------------------------------------------------
if findEnemyPlat(allPlats[k].Number) then -- if it's an enemy platform, deal damage
DealDamage()
end
--first grab information from the platform you are standing on
local column = allPlats[k].Column
local row = allPlats[k].Row
local number = allPlats[k].Number
--this is what happens if plr standing in platfrom which number matches board
if column *row == game.Workspace.TargetNumber.Value then
if findAllPlats(allPlats[k].Number) or allPlats[k].Eliminated == true then -- do nothing if plat is scored, and return immediately if eliminated by you so to not score many points
return
else
allPlats[k].Eliminated = true
points = points + 1
numIfScored:InvokeServer(column, row, teamColorReady, points, team, number)
end
end
--------------------------------------------------------------------------------------------------------------------------------------------------------
--What happens to the rest of the platforms and cubees when you stand on one platform-------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------
for k, v in pairs(allPlats) do
--To platforms and Cubes on same COLUMN-----------------------------------------------------------------------------------------------------------------
if v.Column == column then -- check which platforms are on the same column by comparing the column property of yours with each one
--To The Platforms:
v.Part.Transparency = 0
v.Part.Material = "Neon"
v.Part.BrickColor = BrickColor.new("Medium stone grey")
--To The Cubes one side
allCubesCol[allPlats[k].Column + 1].Size = Vector3.new(9.9,16,9.9)
--and the numbers one side
local model = allCubesCol[allPlats[k].Column + 1]:GetChildren() -- one side
for k, v in pairs (model) do
v.Material = "Neon"
end
local green = allCubesCol[allPlats[k].Column + 1]:GetChildren()
for k, v in pairs (green) do
local X = green[k].Position.X
local Y = green[k].Position.Y
local Z = green[k].Position.Z
green[k].Position = Vector3.new(X, 7, Z)
end
--To The Cubes other side
allCubesCol2[allPlats[k].Column + 1].Size = Vector3.new(9.9,16,9.9)
--and the numbers other side
local model2 = allCubesCol2[allPlats[k].Column + 1]:GetChildren() -- the other side
for k, v in pairs (model2) do
v.Material = "Neon"
end
local yellow = allCubesCol2[allPlats[k].Column + 1]:GetChildren()
for k, v in pairs (yellow) do
local X = yellow[k].Position.X
local Y = yellow[k].Position.Y
local Z = yellow[k].Position.Z
yellow[k].Position = Vector3.new(X, 7, Z)
end
--To platforms and Cubes on same ROW---------------------------------------------------------------------------------------------------------
elseif v.Row == row then -- check which platforms are on the same row by comparing the column property of yours with each one
--To the Platforms
v.Part.BrickColor = BrickColor.new("Medium stone grey")
v.Part.Material = "Neon"
v.Part.Transparency = 0
--To the Cubes one side
allCubesRow[allPlats[k].Row + 1].Transparency = .7
allCubesRow[allPlats[k].Row + 1].Size = Vector3.new(9.9,16,9.9)
-- To the numbers one side
local model = allCubesRow[allPlats[k].Row + 1]:GetChildren()
for k, v in pairs (model) do
v.Material = "Neon"
end
local blue = allCubesRow[allPlats[k].Row + 1]:GetChildren()
for k,v in pairs (blue) do
local X = blue[k].Position.X
local Y = blue[k].Position.Y
local Z = blue[k].Position.Z
blue[k].Position = Vector3.new(X, 7, Z)
end
--To the Cubes other side
allCubesRow2[allPlats[k].Row + 1].Transparency = .7
allCubesRow2[allPlats[k].Row + 1].Size = Vector3.new(9.9,16,9.9)
-- To the numbers other side
local model2 = allCubesRow2[allPlats[k].Row + 1]:GetChildren()
for k, v in pairs (model2) do
v.Material = "Neon"
end
local red = allCubesRow2[allPlats[k].Row + 1]:GetChildren()
for k,v in pairs (red) do
local X = red[k].Position.X
local Y = red[k].Position.Y
local Z = red[k].Position.Z
red[k].Position = Vector3.new(X, 7, Z)
end
end
end
return
else
--------------------------------------------------------------------------
----------------------------------------------------------------------
--
this is what happens to ALL PLATFROMS and CUBES the player is not on a platform ----------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------
--Platforms
v.Material = "Glass" -- restore material
v.BrickColor = BrickColor.new("Black") -- restore color
if allPlats[k].Number == findAllPlats(allPlats[k].Number) then -- except if it belongs to a scored platform
v.BrickColor = findAllPlatsColor(allPlats[k].Number)
v.Material = "Neon"
end
--Cubes
allCubesCol[allPlats[k].Column + 1].Size = Vector3.new(9.9,9.9,9.9) -- restore size
allCubesCol2[allPlats[k].Column + 1].Size = Vector3.new(9.9,9.9,9.9)
allCubesRow[allPlats[k].Row + 1].Size = Vector3.new(9.9,9.9,9.9)
allCubesRow2[allPlats[k].Row + 1].Size = Vector3.new(9.9,9.9,9.9)
--Numbers
--green side
local model = allCubesCol[allPlats[k].Column + 1]:GetChildren() -- restore color and material
for k, v in pairs (model) do
v.BrickColor = BrickColor.new("Ghost grey")
v.Material = "Glass"
end
--blue side
local model2 = allCubesRow[allPlats[k].Row + 1]:GetChildren()
for k, v in pairs (model2) do
v.BrickColor = BrickColor.new("Ghost grey")
v.Material = "Glass"
end
--yellow side
local model3 = allCubesCol2[allPlats[k].Column + 1]:GetChildren()
for k, v in pairs (model3) do
v.BrickColor = BrickColor.new("Ghost grey")
v.Material = "Glass"
end
--red side
local model4 = allCubesRow2[allPlats[k].Row + 1]:GetChildren()
for k, v in pairs (model4) do
v.BrickColor = BrickColor.new("Ghost grey")
v.Material = "Glass"
end
local green = allCubesCol[allPlats[k].Column + 1]:GetChildren() -- restores position
for k, v in pairs (green) do
local X = green[k].Position.X
local Y = green[k].Position.Y
local Z = green[k].Position.Z
green[k].Position = Vector3.new(X, 5, Z)
end
local blue = allCubesRow[allPlats[k].Row + 1]:GetChildren()
for k, v in pairs (blue) do
local X = blue[k].Position.X
local Y = blue[k].Position.Y
local Z = blue[k].Position.Z
blue[k].Position = Vector3.new(X, 5, Z)
end
local yellow = allCubesCol2[allPlats[k].Column + 1]:GetChildren()
for k, v in pairs (yellow) do
local X = yellow[k].Position.X
local Y = yellow[k].Position.Y
local Z = yellow[k].Position.Z
yellow[k].Position = Vector3.new(X, 5, Z)
end
local red = allCubesRow2[allPlats[k].Row + 1]:GetChildren()
for k, v in pairs (red) do
local X = red[k].Position.X
local Y = red[k].Position.Y
local Z = red[k].Position.Z
red[k].Position = Vector3.new(X, 5, Z)
end
end
end
end)