Магазин Roblox не удерживает деньги - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть магазин roblox, и когда я что-то покупаю, он вычитает деньги из моих списков лидеров, но когда я go и получаю еще немного денег, он добавляет деньги, которые я только что получил, и деньги, которые я только что потратил. Вот код, который у меня есть

local price = script.Parent.Parent.Price
local tools = game.ReplicatedStorage:WaitForChild("Tools")
local tool = script.Parent.Parent.ItemName
local player = script.Parent.Parent.Parent.Parent.Parent.Parent

script.Parent.MouseButton1Click:Connect(function()
    if player.leaderstats:FindFirstChild("Coins").Value >= price.Value then
        player.leaderstats:FindFirstChild("Coins").Value = player.leaderstats:FindFirstChild("Coins").Value - price.Value 
        game.ReplicatedStorage.ShopBuy:FireServer(tool.Value)
    end
end)

Это один из сценариев, которые дают вам деньги.

db = false
script.Parent.Touched:Connect(function(hit)
    if hit.Parent:FindFirstChild("Humanoid") then
        local player = game.Players:GetPlayerFromCharacter(hit.Parent)
        if db == false then
            db = true
            script.Parent.BrickColor = BrickColor.new("Bright red")
            player.leaderstats.Coins.Value = player.leaderstats.Coins.Value + 100
            wait(10)
            script.Parent.BrickColor = BrickColor.new("Dark green")
            db = false

        end
    end
end)

Это не дает мне ошибку, это просто делает то, что я объяснил , Если вы хотите, чтобы я уточнил c, просто спросите! Я новичок в этом, поэтому я не лучший. :) Любая помощь с благодарностью!

1 Ответ

2 голосов
/ 24 апреля 2020

Я думаю, что ваша проблема может быть в том, что вы изменяете значение лидера на вашем клиенте, а не на сервере в вашем первом скрипте. Сервер не знает об этом изменении и не будет учитывать его при выполнении другого обновления значения Coins.

Вместо этого вам следует изменить значение Coins в обработчике событий ShopBuy, который вы вызываете в своем первом скрипт.

Обновлено:

Я думаю, что ваше решение взято из учебника, в котором есть шаги на YouTube ... Я не прошел через них, но я бы попробовал следующее:

В клиентском скрипте под кнопкой покупки избавьтесь от строки, которая меняет деньги, и вместо этого отправьте значение цены на сервер:

game.ReplicatedStorage.ShopBuy:FireServer(tool.Value,price.Value)

В скрипте сервера ShopBuy измените обратный вызов подпись для включения этого нового параметра, например:

game.ReplicatedStorage.ShopBuy.OnServerEvent:Connect(function(player,tool,price)

, а затем добавьте строку для вычета денег в эту функцию:

player.leaderstats.Money.Value = layer.leaderstats.Money.Value - price

Подумайте об этом. Сервер выполняет команду, чтобы сделать вычет сейчас, так что все клиенты будут знать об этом.

Еще одно замечание: если вы создадите «IntValue» внутри каждого инструмента, который содержит его цену Вам не нужно отправлять цену от клиента на сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...