Загрузка данных
### Шаг 1: Подготовка рабочего места
Для начала нам нужно убедиться, что ты видишь два самых важных окна в Roblox Studio.
1. Наверху нажми на вкладку **View** (Вид).
2. Убедись, что кнопки **Explorer** (Проводник) и **Properties** (Свойства) нажаты (они должны быть серыми/активными).
*В окне Explorer мы видим все объекты в игре, а в Properties — настраиваем их цвет, размер и т.д.*
### Шаг 2: Создаем статистику (Деньги и Камни)
Нам нужно, чтобы в правом верхнем углу экрана отображались твои ресурсы.
1. В окне **Explorer** найди папку **ServerScriptService**.
2. Наведи на нее мышку, нажми на появившийся плюсик + и выбери **Script** (Скрипт).
3. Удали весь текст в скрипте и вставь этот:
```lua
game.Players.PlayerAdded:Connect(function(player)
-- Создаем папку leaderstats (это стандартное имя для статистики в Роблокс)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
-- Создаем счетчик Денег
local money = Instance.new("IntValue")
money.Name = "Money" -- Название в игре
money.Value = 0
money.Parent = leaderstats
-- Создаем счетчик Камней
local stone = Instance.new("IntValue")
stone.Name = "Stone"
stone.Value = 0
stone.Parent = leaderstats
-- Скрытый счетчик силы клика (для магазина)
local power = Instance.new("IntValue")
power.Name = "Power"
power.Value = 1 -- Изначально за 1 разрушение дается 1 камень
power.Parent = player
end)
```
4. Закрой вкладку скрипта (он сохранится автоматически).
### Шаг 3: Создаем камень, который можно ломать
Теперь сделаем саму руду, по которой нужно кликать.
1. Наверху во вкладке **Home** нажми кнопку **Part** (Деталь). В мире появится блок.
2. В окне **Explorer** нажми на этот блок (он называется *Part*). Переименуй его в **Rock** (нажми F2 или кликни правой кнопкой мыши -> Rename).
3. В окне **Properties** найди свойство **Anchored** и поставь там галочку (чтобы камень не падал и не улетал).
4. Наведи мышку на твой **Rock** в Explorer, нажми плюсик + и добавь **ClickDetector** (Детектор кликов).
5. Снова нажми + на **Rock** и добавь **Script**. Вставь туда этот код:
```lua
local rock = script.Parent
local clickDetector = rock.ClickDetector
local maxHealth = 5 -- Сколько раз нужно кликнуть, чтобы сломать
local currentHealth = maxHealth
local isBroken = false
clickDetector.MouseClick:Connect(function(player)
if isBroken then return end -- Если сломан, ничего не делаем
currentHealth = currentHealth - 1
rock.Color = Color3.fromRGB(150, 150, 150) -- Камень немного меняет цвет при ударе
wait(0.1)
rock.Color = Color3.fromRGB(100, 100, 100) -- Возвращаем исходный цвет (настрой под себя)
if currentHealth <= 0 then
isBroken = true
rock.Transparency = 1 -- Делаем камень невидимым
clickDetector.MaxActivationDistance = 0 -- Отключаем клики
-- Даем игроку камень с учетом его силы
local playerStone = player.leaderstats.Stone
local playerPower = player.Power
playerStone.Value = playerStone.Value + playerPower.Value
-- Ждем 3 секунды и восстанавливаем камень
wait(3)
currentHealth = maxHealth
rock.Transparency = 0
clickDetector.MaxActivationDistance = 32
isBroken = false
end
end)
```
### Шаг 4: Ларек для продажи камней
Игрок должен подойти к зоне, чтобы продать камни.
1. Создай еще один **Part** (блок) и сделай его плоским, как коврик.
2. Переименуй его в **SellZone**, поставь галочку **Anchored** и поменяй цвет на зеленый.
3. Нажми + на **SellZone** и добавь **Script**. Вставь этот код:
```lua
local sellZone = script.Parent
local pricePerStone = 5 -- Цена за 1 камень
sellZone.Touched:Connect(function(hit)
-- Проверяем, коснулся ли зоны игрок
local character = hit.Parent
local player = game.Players:GetPlayerFromCharacter(character)
if player then
local stone = player.leaderstats.Stone
local money = player.leaderstats.Money
-- Если у игрока есть камни
if stone.Value > 0 then
local earnings = stone.Value * pricePerStone
money.Value = money.Value + earnings -- Даем деньги
stone.Value = 0 -- Забираем камни
end
end
end)
```
Шаг 5: Магазин (Улучшение силы добычи)
Сделаем простую кнопку в виде платформы. Если игрок наступает на нее и у него хватает денег, он получает прокачку.
1. Создай еще один **Part**, назови его **UpgradeZone**, сделай **Anchored** и покрась в синий цвет.
2. Добавь в него **Script**:
```lua
local upgradeZone = script.Parent
local upgradeCost = 100 -- Стоимость улучшения
local debounce = false -- Защита от случайных двойных касаний
upgradeZone.Touched:Connect(function(hit)
if debounce then return end
local character = hit.Parent
local player = game.Players:GetPlayerFromCharacter(character)
if player then
local money = player.leaderstats.Money
local power = player.Power
-- Проверяем, хватает ли денег
if money.Value >= upgradeCost then
debounce = true
money.Value = money.Value - upgradeCost
power.Value = power.Value + 1 -- Увеличиваем количество добываемых камней
print(player.Name .. " купил улучшение! Теперь сила: " .. power.Value)
-- Увеличиваем цену на следующее улучшение (по желанию)
upgradeCost = upgradeCost + 50
wait(1)
debounce = false
end
end
end)
```