Ваша проблема связана с тем, что вы пытаетесь использовать LocalPlayer в серверном скрипте, что не работает. Вместо этого нужно передавать игрока в функцию через аргументы. Также вам нужно обновить значение кликов и следить за стоимостью апгрейда. Вот пример, как это можно сделать:
1. Убедитесь, что у вас есть скрипт в `ServerScriptService`.
2. Вам нужно получить игрока из события, переданного в функцию.
Вот исправленный код:
```lua
local Players = game:GetService("Players")
local upgradeButton = game.StarterGui.Coins.Upgrade
upgradeButton.MouseButton1Click:Connect(function()
local player = Players.LocalPlayer -- Это нужно для клиентского скрипта, замените на аргумент в сервере.
local playerCash =
player.CashStats.Cash local playerLeaderStatsCash =
player.leaderstats.Cash if playerCash.Value >= 100 then
playerCash.Value -= 100
playerLeaderStatsCash.Value += 2
end
end)
```
Теперь создайте скрипт в `StarterPlayerScripts` (или в другом клиентском месте), который будет вызывать серверный скрипт для выполнения действий:
```lua
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local upgradeButton = player.PlayerGui.Coins.Upgrade
upgradeButton.MouseButton1Click:Connect(function()
game.ReplicatedStorage.UpgradeRemote:FireServer()
end)
```
3. Создайте RemoteEvent в `ReplicatedStorage`, назовите его `UpgradeRemote`.
4. Теперь обновите серверный скрипт, чтобы он слушал RemoteEvent:
```lua
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local upgradeRemote = ReplicatedStorage:WaitForChild("UpgradeRemote")
upgradeRemote.OnServerEvent:Connect(function(player)
local playerCash =
player.CashStats.Cash local playerLeaderStatsCash =
player.leaderstats.Cash if playerCash.Value >= 100 then
playerCash.Value -= 100
playerLeaderStatsCash.Value += 2
-- Здесь можно добавить логику для увеличения стоимости
-- и изменения количества, например:
-- player.UpgradesClicks.Value = player.UpgradesClicks.Value + 1
-- стоимость = 100 + (200 * player.UpgradesClicks.Value)
end
end)
```
Теперь, когда вы нажимаете кнопку, будет правильно обрабатываться нажатие и обновляться значение кликов и стоимости.
сама стоимость кнопки изначально 100 кликов
в ServerScriptService я создал скрипт
game.StarterGui.Coins.Upgrade.MouseButton1Click:Connect(function(plr)
if plr.CashStats.Cash .Value >= 100 then
plr.CashStats.Cash .Value -= 100
game.Players.LocalPlayer.leaderstats.Cash.Value += 2
end
end)
но клики не списываются и ничего не добавляется, помогите пожалуйста