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

Помогите со скриптом в Roblox Studio

Тимофей Строев Ученик (171), на голосовании 2 недели назад
Я сделал кнопку Upgrade и когда на нее нажимаешь то за клик должно даваться + 2, (игрок купил upgrade и в следующий раз стоимость становится все выше, допустим на 200 кликов, и за клик уже должно даваться + 3 , + 4, и так далее)
сама стоимость кнопки изначально 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)

но клики не списываются и ничего не добавляется, помогите пожалуйста
Дополнен 1 месяц назад
Голосование за лучший ответ
Mansyr Hilmi Мастер (2373) 1 месяц назад
Ваша проблема связана с тем, что вы пытаетесь использовать 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)
```

Теперь, когда вы нажимаете кнопку, будет правильно обрабатываться нажатие и обновляться значение кликов и стоимости.
Тимофей СтроевУченик (171) 1 месяц назад
не работает, все сделал как сказал
Похожие вопросы