В чем ошибка код 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