Невозможно получить значение внутри игрока в lua

Код, который я пробовал

game.Workspace.burgerclick.OnServerEvent:Connect(function()
    local playername = game.Workspace.ClickPlayer.Value
    local player = game.Players:FindFirstChild(playername)
    local playaname = player.Name
    local fpval = game.Players[playaname].FP.Value
    fpval = fpval + 1
end)

Я делаю игру, и я хотел иметь кнопку, которая обновляет значение чего-то, называемого FP, в рабочей области у меня есть строковое значение с именем ClickPLayer, которое обновляется для игрока, нажимающего кнопку. это работает. Я создал переменную, которая является значением stringvalue, но когда я помещаю переменную внутри строки, когда я обновляю значение FP, она говорит, что переменная не является допустимым членом игроков. Я не знаю, что мне делать.


person woop de schwoop    schedule 12.04.2020    source источник
comment
Является ли FP объектом внутри игрока в Players или персонажем игрока в рабочей области?   -  person Kylaaa    schedule 12.04.2020
comment
FP - это числовое значение внутри всех игроков.   -  person woop de schwoop    schedule 12.04.2020
comment
Я пытаюсь обновить игрока, который щелкнул его значение FP   -  person woop de schwoop    schedule 12.04.2020
comment
Как создавалась ФП? Ваше сообщение об ошибке звучит так, как будто его не существует, когда этот код запускается.   -  person Kylaaa    schedule 15.04.2020


Ответы (2)


Я думаю, что правильный код должен быть примерно таким:

game.Players[playaname].FP.Value = game.Players[playaname].FP.Value + 1 

Потому что, когда вы это делаете:

 local fpval = game.Players[playaname].FP.Value
 fpval = fpval + 1

Вы копируете значение game.Players[playaname].FP.Valueto fpval и увеличиваете копию (fpval = fpval + 1), а не значение, удерживаемое game.Players[playaname].FP.

person Yvens Rebouças Serpa    schedule 15.04.2020

Самый правильный и эффективный код будет

local Players = game:GetService("Players")
local fpval
local plr
workspace.burgerclick.Activated:Connect(function()
    plr = workspace.ClickPlayer.Value
    fpval = Players[plr].FP
    fpval.Value = fpval.Value + 1
end)

В документации по TextButtons и ImageButtons, для этого можно использовать Activated событие, вместо того, чтобы запускать сервер из LocalScript, на что сейчас нацелен ваш скрипт. Однако, если кнопка находится в PlayerGui и у вас есть активация LocalScript для нее, вы, вероятно, захотите вместо этого использовать этот код:

local fpval
workspace.burgerclick.OnServerEvent:Connect(function(plr)
    fpval = plr.FP
    fpval.Value = fpval.Value + 1
end)
person d x    schedule 04.05.2020