I have a completely simple script without any errors but it doesn’t work properly
function graphicChange()
local graphics = UserSettings():GetService("UserGameSettings").SavedQualityLevel
if graphics == Enum.SavedQualitySetting.QualityLevel1 then
print("qiality 1")
game.Lighting.FogStart = 25
game.Lighting.FogEnd = 35
elseif graphics == Enum.SavedQualitySetting.QualityLevel2 or Enum.SavedQualitySetting.QualityLevel3 or Enum.SavedQualitySetting.QualityLevel4 then
print("qiality 2/3/4")
game.Lighting.FogStart = 400
game.Lighting.FogEnd = 450
elseif graphics == Enum.SavedQualitySetting.QualityLevel5 then
print("qiality 5")
game.Lighting.FogStart = 500
game.Lighting.FogEnd = 800
elseif graphics == Enum.SavedQualitySetting.QualityLevel6 or Enum.SavedQualitySetting.QualityLevel7 or Enum.SavedQualitySetting.QualityLevel8 or Enum.SavedQualitySetting.QualityLevel9 or Enum.SavedQualitySetting.QualityLevel10 then
print("qiality 6/7/8/9/10")
game.Lighting.FogStart = 500
game.Lighting.FogEnd = 850
end
end
UserSettings().GameSettings.Changed:connect(function()
graphicChange()
end)
and here’s the output ingame while changing graphic level
elseif graphics == Enum.SavedQualitySetting.QualityLevel6 or Enum.SavedQualitySetting.QualityLevel6 then
print(graphics)
That’s not how Luau works with elseif.
The way I remember how to use if statements is like this: I need a requirement and then the given condition. (Condition == requirement, or Condition > requirement, or Condition < requirement | That’s what you generally need.)
You will know what I mean if you analyze the code below.
local function ChangedQuality()
local graphics = UserSettings():GetService("UserGameSettings").SavedQualityLevel
if graphics == Enum.SavedQualitySetting.QualityLevel1 then
print("qiality 1")
game.Lighting.FogStart = 25
game.Lighting.FogEnd = 35
elseif graphics == Enum.SavedQualitySetting.QualityLevel2 or graphics == Enum.SavedQualitySetting.QualityLevel3 or graphics == Enum.SavedQualitySetting.QualityLevel4 then
print("qiality 2/3/4")
game.Lighting.FogStart = 400
game.Lighting.FogEnd = 450
elseif graphics == Enum.SavedQualitySetting.QualityLevel5 then
print("qiality 5")
game.Lighting.FogStart = 500
game.Lighting.FogEnd = 800
elseif graphics == Enum.SavedQualitySetting.QualityLevel6 or graphics == Enum.SavedQualitySetting.QualityLevel7 or graphics == Enum.SavedQualitySetting.QualityLevel8 or graphics == Enum.SavedQualitySetting.QualityLevel9 or graphics == Enum.SavedQualitySetting.QualityLevel10 then
print("qiality 6/7/8/9/10")
game.Lighting.FogStart = 500
game.Lighting.FogEnd = 850
end
end
UserSettings().GameSettings.Changed:Connect(ChangedQuality)
local qualitySettings = {Enum.SavedQualitySetting.QualityLevel1, Enum.SavedQualitySetting.QualityLevel2, Enum.SavedQualitySetting.QualityLevel3, Enum.SavedQualitySetting.QualityLevel4, Enum.SavedQualitySetting.QualityLevel5, Enum.SavedQualitySetting.QualityLevel6, Enum.SavedQualitySetting.QualityLevel7, Enum.SavedQualitySetting.QualityLevel8, Enum.SavedQualitySetting.QualityLevel9, Enum.SavedQualitySetting.QualityLevel10}
local lighting = game:GetService("Lighting")
function graphicChange()
local graphics = UserSettings():GetService("UserGameSettings").SavedQualityLevel
local i = table.find(qualitySettings, graphics)
if i then
if i == 1 then
lighting.FogStart = 25
lighting.FogEnd = 35
elseif i >= 2 and i <= 4 then
lighting.FogStart = 25
lighting.FogEnd = 35
elseif i == 5 then
lighting.FogStart = 500
lighting.FogEnd = 800
elseif i >= 6 and i <= 10 then
lighting.FogStart = 500
lighting.FogEnd = 850
end
end
end
UserSettings().GameSettings.Changed:Connect(function()
graphicChange()
end)
While this has been solved this would be a much better way of achieving the same task. Also avoid using the deprecated connection method, you should use “:Connect()” instead.