Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему этот скрипт в роблокс студио не хочет работать так как надо

Саня Фэдора Ученик (220), открыт 3 дня назад
Короч работает всё кроме прибавления 1 к значению intvalue energy внутри игрока вот скрипт

 bool = false 
weld = 0
zanato = script.Parent.Parent.Parent.zanato

script.Parent.MouseClick:Connect(function(plr)
if bool == false then
bool = true
zanato = script.Parent.Parent.Parent.zanato
if zanato.Value == true then return end
zanato.Value = true
script.Parent.Parent.Position = plr.Character.zarpt.Position
script.Parent.Parent.Orientation = plr.Character.zarpt.Orientation
weld = Instance.new("WeldConstraint", plr.Character.zarpt)
weld.Part1 = plr.Character.zarpt
weld.Part0 = script.Parent.Parent
local en = script.Parent.Parent.Parent:GetAttribute("en")
while plr.Character.energy.Value ~= 100 and en > 0 and zanato == true do
wait(0.5)
en = script.Parent.Parent.Parent:GetAttribute("en",en - 1)
plr.Character.energy.Value += 1
end
elseif bool == true then
bool = false
weld:Remove()
zanato.Value = false
end

end)
4 ответа
Vadim Sakhnazarov Профи (584) 3 дня назад
я не шарю в Lua
Саня ФэдораУченик (220) 3 дня назад
спасибо помог
Инспектор Жопидý Просветленный (46505) 3 дня назад
В вашем скрипте есть несколько проблем, которые могут препятствовать правильному добавлению 1 к значению intvalue energy:
1. Некорректное использование GetAttribute:
• Вы используете GetAttribute("en"), чтобы получить значение energy. Однако GetAttribute используется для получения строковых значений из Attributes.
• Для получения числовых значений из IntValue объектов, нужно использовать Value property.
2. Неоптимальный цикл while:
• Цикл while продолжает работать, пока plr.Character.energy.Value не станет 100, en не станет 0, и zanato не станет true.
• Это может привести к нежелательному поведению, если energy не может достичь 100, или если zanato становится false до достижения 100.
3. Отсутствие проверки ошибок:
• Скрипт не проверяет ошибки, такие как отсутствие plr.Character.energy или script.Parent.Parent.Parent:GetAttribute("en").
• Это может привести к сбоям в работе скрипта, если эти объекты недоступны.
Исправления:
1. Замените GetAttribute("en") на :FindFirst("en").Value для получения значения IntValue.
2. Добавьте проверку if перед изменением energy, чтобы убедиться, что plr.Character.energy существует.
3. Добавьте проверку if перед доступом к script.Parent.Parent.Parent:GetAttribute("en"), чтобы убедиться, что объект доступен.
4. Перепишите цикл while, чтобы он останавливался, когда energy достигает 100, zanato становится false, или en становится 0.
Пример исправленного скрипта:
Lua
bool = false
weld = 0
zanato = script.Parent.Parent.Parent.zanato

script.Parent.MouseClick:Connect(function(plr)
if bool == false then
bool = true
zanato = script.Parent.Parent.Parent.zanato
if zanato.Value == true then return end
zanato.Value = true
script.Parent.Parent.Position = plr.Character.zarpt.Position
script.Parent.Parent.Orientation = plr.Character.zarpt.Orientation

local energyObj = plr.Character:FindFirst("en")
if energyObj then
local en = energyObj.Value
while energyObj.Value ~= 100 and en > 0 and zanato == true do
wait(0.5)
en = en - 1
energyObj.Value = energyObj.Value + 1
end
end
elseif bool == true then
bool = false
weld:Remove()
zanato.Value = false
end
end)
Дополнительные советы:
• Используйте print statements для отладки скрипта, чтобы отслеживать значения переменных и ход выполнения кода.
• Изучите документацию Roblox по Luau scripting https://create.roblox.com/docs/tutorials/scripting/basic-scripting/intro-to-scripting , чтобы узнать больше о доступных функциях и синтаксисе.
• Используйте Roblox Developer Forum https://devforum.roblox.com/ для поиска помощи и советов от других разработчиков Roblox.
Саня ФэдораУченик (220) 3 дня назад
chat GPT 100% и кстати я реально хотел получить аттрибут а не знаение energy
Анонимыч Кто-то Неизвестнов Ученик (146) 3 дня назад
В вашем скрипте есть несколько проблем, которые могут препятствовать правильному добавлению 1 к значению intvalue energy:
1. Некорректное использование GetAttribute:
• Вы используете GetAttribute("en"), чтобы получить значение energy. Однако GetAttribute используется для получения строковых значений из Attributes.
• Для получения числовых значений из IntValue объектов, нужно использовать Value property.
2. Неоптимальный цикл while:
• Цикл while продолжает работать, пока plr.Character.energy.Value не станет 100, en не станет 0, и zanato не станет true.
• Это может привести к нежелательному поведению, если energy не может достичь 100, или если zanato становится false до достижения 100.
3. Отсутствие проверки ошибок:
• Скрипт не проверяет ошибки, такие как отсутствие plr.Character.energy или script.Parent.Parent.Parent:GetAttribute("en").
• Это может привести к сбоям в работе скрипта, если эти объекты недоступны.
Исправления:
1. Замените GetAttribute("en") на :FindFirst("en").Value для получения значения IntValue.
2. Добавьте проверку if перед изменением energy, чтобы убедиться, что plr.Character.energy существует.
3. Добавьте проверку if перед доступом к script.Parent.Parent.Parent:GetAttribute("en"), чтобы убедиться, что объект доступен.
4. Перепишите цикл while, чтобы он останавливался, когда energy достигает 100, zanato становится false, или en становится 0.
Пример исправленного скрипта:
Lua
bool = false
weld = 0
zanato = script.Parent.Parent.Parent.zanato

script.Parent.MouseClick:Connect(function(plr)
if bool == false then
bool = true
zanato = script.Parent.Parent.Parent.zanato
if zanato.Value == true then return end
zanato.Value = true
script.Parent.Parent.Position = plr.Character.zarpt.Position
script.Parent.Parent.Orientation = plr.Character.zarpt.Orientation

local energyObj = plr.Character:FindFirst("en")
if energyObj then
local en = energyObj.Value
while energyObj.Value ~= 100 and en > 0 and zanato == true do
wait(0.5)
en = en - 1
energyObj.Value = energyObj.Value + 1
end
end
elseif bool == true then
bool = false
weld:Remove()
zanato.Value = false
end
end)
Дополнительные советы:
• Используйте print statements для отладки скрипта, чтобы отслеживать значения переменных и ход выполнения кода.
• Изучите документацию Roblox по Luau scripting https://create.roblox.com/docs/tutorials/scripting/basic-scripting/intro-to-scripting, чтобы узнать больше о доступных функциях и синтаксисе.
• Используйте Roblox Developer Forum https://devforum.roblox.com/ для поиска помощи и советов от других разработчиков Roblox.
- Ученик (128) 3 дня назад
ну, тут я нашёл всего две ошибки...

Во первых: используй local для локальных переменных.
weld должен быть nil, а не 0.

Попробуй перепроверить на ошибки.
Саня ФэдораУченик (220) 3 дня назад
это не ошибки weld не обязательно должен быыть равен nil он может бть хоть строкой всё равно потом это заменяется instance ну а ещё local переменные видны только в одной части скрипта что мне вообще не надо ну и впринипе я же написал то не работает изменение знаения intvalue energy внутри игрока
Похожие вопросы