В чем ошибка код Lua

local trap = script.Parent -- указываем родителя скрипта
local function Touch(Part) -- объявляем функцию обработки
    if Part.Parent.Name == trap.Parent.Parent.Parent.Owner.Value then -- проверяем что это хозяин tycoon её коснулся
        -- если это условие убрать, то по идее деньги может тырить любой игрок
        trap.BrickColor = BrickColor.new("Bright red") -- меняем цвет плиты
        if trap.Parent.Parent.Parent.Money.Value > 0 then -- проверяем что в коллекторе деньги есть
            local stats = game.Players:GetPlayerFromCharacter(Part.Parent) -- заводим локальную переменную
            local stats2 = stats:FindFirstChild("leaderstats") -- заносим в переменную нас из таблицы лидеров
            local cash = stats2:FindFirstChild("Cash") --заносим в переменную наши деньги в таблице лидеров
            cash.Value = cash.Value + trap.Parent.Parent.Parent.Money.Value -- прибавляем к переменной выше наши деньги
            trap.Parent.Parent.Parent.Money.Value = 0 -- обнуляем текущую сумму собранных коллектором денег
        end -- конец условия проверки денег
        wait(1) -- ждём секунду
        trap.BrickColor = BrickColor.new("Sea green") -- возвращаем плите зелёный цвет
    end -- конец условия проверки на хозяина
end -- конец описания функции
trap.Touched:Connect(Touch) -- задаём обработчик запускающий выполнение функции по касанию плиты

В данном виде не отдает деньги. Если закоментировать 3ю строку и END.

local trap = script.Parent -- указываем родителя скрипта
local function Touch(Part) -- объявляем функцию обработки
    --if Part.Parent.Name == trap.Parent.Parent.Parent.Owner.Value then -- проверяем что это хозяин tycoon её коснулся
        -- если это условие убрать, то по идее деньги может тырить любой игрок
        trap.BrickColor = BrickColor.new("Bright red") -- меняем цвет плиты
        if trap.Parent.Parent.Parent.Money.Value > 0 then -- проверяем что в коллекторе деньги есть
            local stats = game.Players:GetPlayerFromCharacter(Part.Parent) -- заводим локальную переменную
            local stats2 = stats:FindFirstChild("leaderstats") -- заносим в переменную нас из таблицы лидеров
            local cash = stats2:FindFirstChild("Cash") --заносим в переменную наши деньги в таблице лидеров
            cash.Value = cash.Value + trap.Parent.Parent.Parent.Money.Value -- прибавляем к переменной выше наши деньги
            trap.Parent.Parent.Parent.Money.Value = 0 -- обнуляем текущую сумму собранных коллектором денег
        end -- конец условия проверки денег
        wait(1) -- ждём секунду
        trap.BrickColor = BrickColor.new("Sea green") -- возвращаем плите зелёный цвет
    --end -- конец условия проверки на хозяина
end -- конец описания функции
trap.Touched:Connect(Touch) -- задаём обработчик запускающий выполнение функции по касанию плиты

Код отдает деньги любому игроку.

Как правильно прописать проверку владельца?


Ответы (1 шт):

Автор решения: xeL4

Проблема решена. Код верный. Owner оказывается не прописывался в другом скрипте и в итоге получалась ошибка.

game.Workspace.Tycoons.Tycoon1:FindFirstChild("Owner").Value = Part.Parent.Name
-- trap.Parent.Parent.Parent:FindFirstChild("Owner").Value = Part.Parent.Name -- прописываем владельца данного Tycoon

Меняем комментарии на строках, прописывается Owner и всё работает корректно.

Можно так же использовать

trap.Parent.Parent:FindFirstChild("Owner").Value = Part.Parent.Name
→ Ссылка