-- Получаем ссылку на объект, который является кнопкой
local button = script.Parent.hampter -- Убедитесь, что "hampter" - правильное имя кнопки
-- Создаем ClickDetector и присоединяем его к кнопке
local detector = Instance.new("ClickDetector")
detector.Parent = button -- Исправлено: ClickDetector должен быть дочерним элементом кнопки
-- Функция, которая будет вызываться при клике на кнопку
local function onButtonClicked(player)
-- Находим Leaderstats и валюту
local leaderstats = player:FindFirstChild("leaderstats")
if leaderstats then
local cash = leaderstats:FindFirstChild("Cash")
if cash then
cash.Value = cash.Value + 10 -- Добавляем 10 к валюте
print(player.Name .. " получил 10 валюты!") -- Выводим сообщение в консоль (для отладки)
else
warn("У игрока " .. player.Name .. " нет валюты 'Cash'!") -- Предупреждение, если валюта не найдена
end
else
warn("У игрока " .. player.Name .. " нет 'leaderstats'!") -- Предупреждение, если leaderstats не найдены
end
end
-- Подписываемся на событие MouseClick у ClickDetector
detector.MouseClick:Connect(onButtonClicked)
-- Функция для создания leaderstats при появлении игрока
game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local cash = Instance.new("IntValue")
cash.Name = "Cash"
cash.Value = 0
cash.Parent = leaderstats
end)
**Основные исправления и пояснения:**
1. **`detector.Parent = button`**: ClickDetector должен быть *дочерним элементом* кнопки, а не свойством `.hampter` кнопки.
2. **Обработка ошибок**: Добавлены `warn()` сообщения для случаев, когда `leaderstats` или `Cash` не найдены. Это поможет в отладке, если что-то пойдет не так.
3. **Перемещен код создания leaderstats**: Код, создающий `leaderstats`, перемещен в конец скрипта для лучшей читаемости и организации. Он также находится внутри функции `PlayerAdded`, чтобы гарантировать создание `leaderstats` для каждого нового игрока, присоединяющегося к игре.
4. **Убедитесь, что "hampter" - правильное имя**: Проверьте, что `script.Parent.hampter` действительно ссылается на вашу кнопку. Если имя другое, замените `"hampter"` на правильное имя.
**Как использовать:**
1. Создайте кнопку (например, `TextButton` или `ImageButton`) в вашем GUI.
2. Переименуйте эту кнопку в "hampter" (или измените "hampter" в скрипте на имя вашей кнопки).
3. Вставьте этот исправленный скрипт в кнопку.
Теперь, когда игрок кликает на кнопку, его валюта `Cash` должна увеличиваться на 10. Сообщения в консоли помогут вам отслеживать, работает ли скрипт правильно.
**Дополнительные рекомендации:**
* **Debounce**: Если вы не хотите, чтобы игроки могли слишком быстро кликать и получать много валюты, добавьте debounce (задержку) в функцию `onButtonClicked`.
* **Сохранение данных**: Этот скрипт не сохраняет данные о валюте. Вам потребуется использовать DataStores для сохранения прогресса игроков, чтобы они не теряли свою валюту при выходе из игры.
Этот исправленный код должен работать корректно. Если у вас все еще возникают проблемы, пожалуйста, предоставьте больше информации о вашей настройке и ошибках, которые вы видите.
game.Players.PlayerAdded:Connect(function(plr)
local f = Instance.new ("Folder", plr)
f.Name = "leaderstats"
local coins = Instance.new ("IntValue", f)
coins.Name = "Cash"
coins.Value = 0
end)
local button = script.Parent.hampter -- Получаем ссылку на объект, который является кнопкой
-- Обработчик события ClickDetector
local detector = Instance.new ("ClickDetector")
detector.Parent.hampter = button -- Присоединяем ClickDetector к кнопке
local function onButtonClicked(player)
-- Находим Leaderstats и валюту
local leaderstats = player:FindFirstChild("leaderstats") -- Исправлено
if leaderstats then
local coins = leaderstats:FindFirstChild("Cash")
if coins then
coins.Value = coins.Value + 10 -- Добавляем 10 к валюте
print( player.Name .. " получил 10 валюты!") -- Выводим сообщение в консоль (для отладки)
end
end
end
-- Подписываемся на событие ClickDetector
detector.MouseClick:Connect(onButtonClicked)