Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

ПРОГРАМИСТЫ! Помогите с кодом lua (Roblox Studio)

Mr Klizer Ученик (86), на голосовании 2 недели назад
 for i = 1,length do 
while true do
wait()
local randSection = math.random(1,#sections)
local section = sections[randSection]:Clone()

local found = table.find(currentSections,section.Name)

--print(found)

if found then
print("Already exists.")
else
--print(currentSections)

local sectionY = section.Hitbox.Size.Y

section.Parent = game.Workspace.TowerSections

table.insert(currentSections,section.Name)

section.Name = i

if i/2 == math.floor(i/2) then
section:SetPrimaryPartCFrame(CFrame.new(0, currentY+sectionY/2 ,0) * CFrame.Angles(0,math.rad(180),0))
else
section:SetPrimaryPartCFrame(CFrame.new(0,currentY+sectionY/2,0))
end

currentY += sectionY

section.Start.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") then
local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
local lvl = tonumber(section.Name)
if plr.TempStage.Value < lvl then
plr.TempStage.Value = lvl
local coinsCalculation = ((plr.TempStage.Value-1)*3)+5 --ПРИБАВЛЕНИЕ КОИНОВ
local xpCalculation = ((plr.TempStage.Value-1)*2)+5 --ПРИБАВЛЕНИЕ ОПЫТА

plr.mainData.Coins.Value += coinsCalculation
plr.mainData.XP.Value += xpCalculation
end
end
end)

break
end
end
end

hitboxEnd.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") then
local plr = game.Players:GetPlayerFromCharacter(hit.Parent)

if plr.Character.HumanoidRootPart.Position.Y > (currentY-(finish.Hitbox.Size.Y/2)) then
local lvl = tonumber(finish.Name)
if plr.TempStage.Value < lvl then
plr.TempStage.Value = lvl
plr.leaderstats.Wins.Value += 1

local coinsCalculation = ((plr.TempStage.Value-1)*3)+10
local xpCalculation = ((plr.TempStage.Value-1)*2.5)+10

plr.mainData.Coins.Value += coinsCalculation

plr.mainData.XP.Value += xpCalculation
end
end
end
end)

Сверху исходный код. Вобщем, суть игры - башня, на которую нужно забраться(ПО ИСХОДНОМУ КОДУ). Башня состоит из основы, 10 этажей(секций) и крыши. На каждом этаже расположены хитбоксы. Наступая на хитбокс, вы получаете опыт и монеты. Но если вы, например, не наступили на 1 хитбокс, а наступите на второй, первый РАБОТАТЬ ПЕРЕСТАЕТ.
Помогите пожалуйста, нужно сделать игру так, чтобы ты спускался с башни(спавнился на крыше) и собирал хитбоксы задом наперед, тоесть собирать хитбоксы сверху вниз.
Так как наступая на самый верхний хитбокс, остальные все нижние перестают работь. Нужно сделать наоборот.
ПОЖАЛУЙСТА помогите разобраться с этой задачей, буду безумно благодарен!!!!
Для справки:
hitboxEnd - это хитбокс на основании.
section - этаж
Голосование за лучший ответ
Алекс Куха Высший разум (461598) 1 месяц назад
Программисты и Luau сильно не совпадают по целям деятельности. RobloxStudio это хобби
Рустам Абдрашитов Мыслитель (9465) 1 месяц назад
 local collectedStages = {} 

for i = 1, length do
while true do
wait()
local randSection = math.random(1, #sections)
local section = sections[randSection]:Clone()

if not collectedStages[i] then
local sectionY = section.Hitbox.Size.Y

section.Parent = game.Workspace.TowerSections
section.Name = i

if i % 2 == 0 then
section:SetPrimaryPartCFrame(CFrame.new(0, currentY + sectionY/2 , 0) * CFrame.Angles(0, math.rad(180), 0))
else
section:SetPrimaryPartCFrame(CFrame.new(0, currentY + sectionY/2, 0))
end

currentY += sectionY

section.Start.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") then
local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
local lvl = tonumber(section.Name)

if plr.TempStage.Value < lvl then
plr.TempStage.Value = lvl
collectedStages[lvl] = true

local coinsCalculation = ((plr.TempStage.Value - 1) * 3) + 5
local xpCalculation = ((plr.TempStage.Value - 1) * 2) + 5

plr.mainData.Coins.Value += coinsCalculation
plr.mainData.XP.Value += xpCalculation
end
end
end)

break
end
end
end

hitboxEnd.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") then
local plr = game.Players:GetPlayerFromCharacter(hit.Parent)

if plr.Character.HumanoidRootPart.Position.Y > (currentY - (finish.Hitbox.Size.Y / 2)) then
local lvl = tonumber(finish.Name)
if plr.TempStage.Value < lvl then
plr.TempStage.Value = lvl
plr.leaderstats.Wins.Value += 1

local coinsCalculation = ((plr.TempStage.Value - 1) * 3) + 10
local xpCalculation = ((plr.TempStage.Value - 1) * 2.5) + 10

plr.mainData.Coins.Value += coinsCalculation
plr.mainData.XP.Value += xpCalculation
end
end
end
end)
Похожие вопросы