Roblox Lua: я не могу выполнить арифметику c в середине print () - PullRequest
2 голосов
/ 09 мая 2020

Я пытаюсь поместить Rich в качестве переменной в середину print("You are" + print(Rich + 1) + "Rich"). Это внутри функции, так что всякий раз, когда игрок делает часть, которая в данном случае будет деньгами, их богатство увеличивается на единицу:

    function createPart()
        local Rich = 0 
        local myPart = Instance.new("Part")
        print("You are" + print(Rich + 1) + "Rich")
        myPart.Transparency = 0.5
        myPart. Anchored = true
        myPart.Position = Vector3.new(0,0,0)
        myPart.CanCollide = true
        myPart.Name = "lol" -- how to name a part after instance.new
        myPart.Parent = game.Workspace 
    end
    createPart()

Я застрял на этом. Могу я получить объяснение, как это будет работать?

Ответы [ 2 ]

2 голосов
/ 09 мая 2020

Если вы хотите увеличить переменную, вы должны сохранить ее в более высокой области, иначе она будет собрана в мусор в конце вызова функции.

local Rich = 0
local function createPart()
    Rich = Rich + 1
    -- print out the message
    -- create the part
end

Что касается печати, вы можете выполнить sh это тремя разными способами:

1) разделение запятыми.

Функция print() принимает любое количество аргументов и объединяет их значения.

print("You are", Rich,"Rich")

2) конкатенация строк

В lua для конкатенации строк используется оператор .., а не +.

print("You are" .. tostring(Rich) .. "Rich")

3) строка форматирование

Строковая библиотека lua позволяет форматировать ваши строки, указав, где переменные должны go в строке. % d можно использовать для представления целого числа.

print(string.format("You are %d Rich", Rich))
0 голосов
/ 30 мая 2020

Вы очень близки к своему собственному решению. В вашей попытке допущена всего пара ошибок. Во-первых, вам нужен способ отслеживать «богатство» игрока.

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

-- somewhere in code, connect to the PlayerAdded event.
game.Players.PlayerAdded:Connect(function(player)
    -- in here, add a folder named 'leaderstats' to the Player. 
    -- IMPORTANT: It must be named 'leaderstats' exactly, all lowercase
    local leaderstats = Instance.new('Folder')
    leaderstats.Name = 'leaderstats'

    -- then add the Richness to the added Player. Name if whatever you'd like
    local richness = Instance.new('IntValue')
    richness.Name = 'Richness'
    richness.Value = 0

    -- Parent this Richness value to the leaderstats to make it appear
    -- in the Leaderboard at the top right
    richness.Parent = leaderstats

    -- After you've created this Leaderboard stat, you need to 
    -- parent the leaderstats to the Player
    leaderstats.Parent = player
end)

Теперь все игроки будут отображаться в таблице лидеров со статусом «Богатство». Все они будут равны 0, пока вы не обновите это значение. Вы можете обновить значение, используя RemoteEvent s от клиента к серверу.


Во-вторых, вы неправильно печатаете в окне вывода. Когда вы объединяете строки вместе (это называется конкатенацией), в Lua вы делаете это с помощью '..'. Например:

print('Here is a ' .. 'part of a ' .. 'string')

В окне «Вывод» будет выведено следующее:

Here is a part of a string

Итак, чтобы использовать это в своем коде, вы должны ввести следующее:

print('You are ' .. (Rich + 1) .. ' Rich')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...