Наведи курсор на ServerScriptService, натисни + і додай Script. Назви його Stats.
Видали рядок, який уже є, і встав цей код.
Натисни Play. У списку гравців буде Power 0 і Coins 0.
ServerScriptService > Stats
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local stats = Instance.new("Folder")
stats.Name = "leaderstats"
stats.Parent = player
for _, name in ipairs({"Power", "Coins"}) do
local value = Instance.new("IntValue")
value.Name = name
value.Parent = stats
end
local multiplier = Instance.new("IntValue")
multiplier.Name = "Multiplier"
multiplier.Value = 1
multiplier.Parent = player
end)
Що робить кожна частина
Цикл створює два значення одним шматком коду: Power і Coins.
Multiplier — це скільки сили дає один клік. Спочатку він дорівнює 1.
Multiplier лежить у гравця, а не в leaderstats, тож у списку гравців його не видно.
Докладніше
Коли ти клацаєш +, введи слово Script, щоб швидко його знайти.
Скрипт відкривається в новій вкладці. Клацни всередині коду, натисни Ctrl+A, а потім Ctrl+V, щоб замінити все.
Перейменуй скрипт в Explorer через F2. Ця назва потрібна лише тобі. Вона допоможе потім знайти скрипт.
Список гравців стоїть у правому верхньому куті гри.
Цей крок у мене не виходить
Спершу перевір ці три речі
Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.
Додай Part. Постав Size на 6, 8, 6, увімкни Anchored і назви її Crystal. Вибери яскравий колір і постав Material на Neon.
Наведи курсор на Crystal, натисни + і додай ClickDetector.
Додай Script до Crystal і встав цей код.
Натисни Play і клікни по кристалу. Power збільшується на 1 за кожен клік.
Crystal > Script
local crystal = script.Parent
local clickDetector = crystal.ClickDetector
clickDetector.MouseClick:Connect(function(player)
local power = player.leaderstats.Power
power.Value += player.Multiplier.Value
end)
Що робить кожна частина
ClickDetector робить частину клікабельною. Він працює і з дотиками на телефонах.
MouseClick повідомляє скрипту, який гравець клікнув.
Скрипт додає Multiplier гравця до Power, тож покращення роблять кожен клік сильнішим.
Докладніше
Введи розмір у поле Size в Properties і натисни Enter. Потім підніми кристал інструментом Move, доки він не стане на підлогу.
Коли ти клацаєш +, введи ClickDetector, щоб його знайти. В Explorer він має стояти на один крок правіше, під Crystal.
У грі вказівник миші змінюється на руку, коли він над кристалом.
Ти маєш стояти досить близько. ClickDetector працює з відстані 32 studs або менше.
Часта помилка. Нічого не відбувається при кліку: ClickDetector має лежати прямо всередині Crystal, поруч зі скриптом.
Цей крок у мене не виходить
Спершу перевір ці три речі
Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.
Додай Part на підлогу. Постав Size на 8, 1, 8, увімкни Anchored, зроби її жовтою й назви Sell.
Додай Script до Sell і встав цей код.
Натисни Play, кілька разів клікни по кристалу й ступи на майданчик. Power перетворюється на Coins.
Sell > Script
local Players = game:GetService("Players")
local pad = script.Parent
pad.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player then return end
local stats = player.leaderstats
if stats.Power.Value > 0 then
stats.Coins.Value += stats.Power.Value
stats.Power.Value = 0
end
end)
Що робить кожна частина
GetPlayerFromCharacter знаходить гравця, який ступив на майданчик.
Майданчик додає всю Power гравця до Coins, а потім повертає Power на 0.
Докладніше
Pad є пласкою частиною, на яку заходять гравці.
Поклади pad пласко на підлогу. Якщо він надто високо, гравці не зможуть на нього ступити.
Якщо зайти на pad з 0 сили, нічого не станеться. Це правильно.
Щоб перевірити: клацни кристал 10 разів, зайди на pad, і список гравців покаже Power 0 і Coins 10.
Цей крок у мене не виходить
Спершу перевір ці три речі
Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.
Додай ще одну Part на підлогу. Постав Size на 8, 1, 8, увімкни Anchored, зроби її синьою й назви Upgrade.
Додай Script до Upgrade і встав цей код.
Натисни Play, зароби 25 монет і ступи на майданчик. Тепер кожен клік дає 2 сили.
Upgrade > Script
local Players = game:GetService("Players")
local pad = script.Parent
local waiting = {}
pad.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player or waiting[player] then return end
local price = player.Multiplier.Value * 25
local coins = player.leaderstats.Coins
if coins.Value < price then return end
waiting[player] = true
coins.Value -= price
player.Multiplier.Value += 1
task.wait(1)
waiting[player] = nil
end)
Що робить кожна частина
Ціна дорівнює Multiplier гравця, помноженому на 25, тож кожне покращення коштує дорожче за попереднє.
Таблиця waiting не дає одному довгому стоянню на майданчику купити багато покращень одразу.
Після купівлі Multiplier збільшується на 1.
Докладніше
Постав pad за кілька кроків від pad продажу, щоб гравці не купували випадково.
Перше покращення коштує 25 монет. Після нього Coins зменшується на 25, а один клік дає 2 сили.
Якщо монет менше, ніж ціна, pad нічого не робить. Зійди з нього, зароби більше й повернися.
Пауза в 1 секунду є причиною, чому стояння на pad купує лише одне покращення за раз.
Цей крок у мене не виходить
Спершу перевір ці три речі
Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.