В настоящее время пытаюсь написать сценарий игры, и я не понимаю, как отлаживать этот раздел кода. - PullRequest
0 голосов
/ 06 мая 2020

Я следую руководству youtube по написанию сценариев для создания игры на roblox, и пока следую ему, «Status», переменная, которую я использую для определения значения, перестает работать (строка39). В моем окне вывода написано следующее:

21: 16: 36.197 - был создан файл автоматического восстановления sword game.rbxl

21: 16: 36.715 - ServerScriptService.MainScript: 39: Ожидается ']' (чтобы закрыть '[' в строке 37), получил 'Status'

21: 16: 38.617 - ScriptNavigationHandler: в настоящее время скрипт недоступен.

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

-- Define varibles

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ServerStorage = game:GetService("ServerStorage")

local MapsFolder = ServerStorage:WaitForChild("Maps")

local Status = ReplicatedStorage:WaitForChild("Status")

local GameLength = 60

--Game loop

while true do
    
    Status.Value = "Waiting for enoughplayers"
    
    repeat wait(1) until game.Players.NumPlayers >=2
    
    Status.Value = "Intermission"
    
    wait(8)
    
    local plrs = {}
    
    for i, player in pairs(game.Players:GetPlayers()) do
        if player then
            table.insert(plrs,player)  --Add each player into plrs table
        end
    end
    
    wait(2)
    
    local AvaliableMaps =MapsFolder:GetChildren()
    
    local ChosenMap = AvaliableMaps[math.random(1,#AvailableMaps)
    
    Status.Value = ChosenMap.Name "Chosen"
    
    local ClonedMap = ChosenMap:Clone()
    ClonedMap.Parent = workspace
    
    -- Teleport players to the map
    
    local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints")
    
    if not SpawnPoints then
        print("SpawnPoints not found!")
    end
    
    local AvailableSpawnPoints = SpawnPoints:GetChildren()
        
    for i, player in pairs(plrs) do
        if player then
            character = player.Character
            
            if character then
                -- Teleport them
                
                character:FindFirstChild("HumanoidRootPart").CFrame = AvailableSpawnPoints[1].CFrame
                table.remove(AvailableSpawnPoints,1)
                
                -- Give Sword
                
                local Sword = ServerStorage.Sword:Clone()
                Sword.Parent = player.Backpack
                
                
                local GameTag = Instance.new("BoolValue")
                GameTag.Name = "GameTag"
                GameTag.Parent = player.Character
                
            else
                -- There is no character
                if not player then
                    table.remove(plrs,i)
                end
            end
        end
        
    end
    
end

Ответы [ 2 ]

4 голосов
/ 06 мая 2020

В

local ChosenMap = AvaliableMaps[math.random(1,#AvailableMaps)

отсутствует закрывающая квадратная скобка.

1 голос
/ 07 мая 2020

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

21: 16: 36.715 - ServerScriptService.MainScript: 39: Expected ']' (чтобы закрыть '[' в строке 37), получил 'Status'

Давайте разберем это по частям: ServerScriptStorage.MainScript : 39 это сообщает нам, где находится файл и в какой строке появилась ошибка.

Итак, давайте посмотрим на строки с 39 (по 41), вы увидите:

local ChosenMap = AvaliableMaps[math.random(1,#AvailableMaps)

Status.Value = ChosenMap.Name "Chosen"

Далее у нас есть: Expected ']' (чтобы закрыть '[' в строке 37), получил 'Status'

Это означает, что в какой-то момент код ожидал закрытия квадратной скобки тот, который был открыт по адресу 37: AvaliableMaps[, но вместо этого он обнаружил следующую строку кода Status

Итак, с этими частями информации у вас должны быть все элементы, чтобы понять, что пошло не так: A квадратная скобка была открыта, но не закрыта. Он должен go где-то перед следующей строкой кода.

local ChosenMap = AvaliableMaps[math.random(1,#AvailableMaps)]
...